@dsnp/graph-sdk
Advanced tools
Comparing version 0.0.0-c347d7 to 0.0.0-daee06
@@ -1,2 +0,2 @@ | ||
import { Config } from "./models/config"; | ||
import { ImportBundle, Update, DsnpGraphEdge, Action, DsnpPublicKey, DsnpKeys, Config } from "./models"; | ||
import { EnvironmentInterface } from "./models/environment"; | ||
@@ -6,5 +6,21 @@ export declare class Graph { | ||
constructor(environment: EnvironmentInterface, capacity?: number); | ||
getGraphConfig(environment: EnvironmentInterface): Config; | ||
getGraphHandle(): number; | ||
getGraphConfig(environment: EnvironmentInterface): Promise<Config>; | ||
getGraphCapacity(): Promise<number>; | ||
getGraphStatesCount(): Promise<number>; | ||
containsUserGraph(dsnpUserId: number): Promise<boolean>; | ||
getGraphUsersCount(): Promise<number>; | ||
removeUserGraph(dsnpUserId: number): Promise<boolean>; | ||
importUserData(payload: ImportBundle[]): Promise<boolean>; | ||
exportUpdates(): Promise<Update[]>; | ||
getConnectionsForUserGraph(dsnpUserId: number, schemaId: number, includePending: boolean): Promise<DsnpGraphEdge[]>; | ||
applyActions(actions: Action[]): Promise<boolean>; | ||
forceCalculateGraphs(dsnpUserId: number): Promise<Update[]>; | ||
getConnectionsWithoutKeys(): Promise<number[]>; | ||
getOneSidedPrivateFriendshipConnections(dsnpUserId: number): Promise<DsnpGraphEdge[]>; | ||
getPublicKeys(dsnpUserId: number): Promise<DsnpPublicKey[]>; | ||
deserializeDsnpKeys(keys: DsnpKeys): Promise<DsnpPublicKey[]>; | ||
freeGraphState(): Promise<boolean>; | ||
printHelloGraph(): void; | ||
} | ||
//# sourceMappingURL=graph.d.ts.map |
@@ -14,5 +14,53 @@ "use strict"; | ||
} | ||
getGraphHandle() { | ||
return this.handle; | ||
} | ||
getGraphConfig(environment) { | ||
return index_1.graphsdkModule.getGraphConfig(environment); | ||
} | ||
getGraphCapacity() { | ||
return index_1.graphsdkModule.getGraphCapacity(this.handle); | ||
} | ||
getGraphStatesCount() { | ||
return index_1.graphsdkModule.getGraphStatesCount(); | ||
} | ||
containsUserGraph(dsnpUserId) { | ||
return index_1.graphsdkModule.containsUserGraph(this.handle, dsnpUserId); | ||
} | ||
getGraphUsersCount() { | ||
return index_1.graphsdkModule.getGraphUsersCount(this.handle); | ||
} | ||
removeUserGraph(dsnpUserId) { | ||
return index_1.graphsdkModule.removeUserGraph(this.handle, dsnpUserId); | ||
} | ||
importUserData(payload) { | ||
return index_1.graphsdkModule.importUserData(this.handle, payload); | ||
} | ||
exportUpdates() { | ||
return index_1.graphsdkModule.exportUpdates(this.handle); | ||
} | ||
getConnectionsForUserGraph(dsnpUserId, schemaId, includePending) { | ||
return index_1.graphsdkModule.getConnectionsForUserGraph(this.handle, dsnpUserId, schemaId, includePending); | ||
} | ||
applyActions(actions) { | ||
return index_1.graphsdkModule.applyActions(this.handle, actions); | ||
} | ||
forceCalculateGraphs(dsnpUserId) { | ||
return index_1.graphsdkModule.forceCalculateGraphs(this.handle, dsnpUserId); | ||
} | ||
getConnectionsWithoutKeys() { | ||
return index_1.graphsdkModule.getConnectionsWithoutKeys(this.handle); | ||
} | ||
getOneSidedPrivateFriendshipConnections(dsnpUserId) { | ||
return index_1.graphsdkModule.getOneSidedPrivateFriendshipConnections(this.handle, dsnpUserId); | ||
} | ||
getPublicKeys(dsnpUserId) { | ||
return index_1.graphsdkModule.getPublicKeys(this.handle, dsnpUserId); | ||
} | ||
deserializeDsnpKeys(keys) { | ||
return index_1.graphsdkModule.deserializeDsnpKeys(keys); | ||
} | ||
freeGraphState() { | ||
return index_1.graphsdkModule.freeGraphState(this.handle); | ||
} | ||
printHelloGraph() { | ||
@@ -19,0 +67,0 @@ console.log(index_1.graphsdkModule.printHelloGraph()); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const graph_1 = require("./graph"); | ||
const config_1 = require("./models/config"); | ||
const environment_1 = require("./models/environment"); | ||
test('printHelloGraph should print "Hello, Graph!"', () => { | ||
function getTestConfig() { | ||
const config = {}; | ||
config.sdkMaxUsersGraphSize = 100; | ||
config.sdkMaxStaleFriendshipDays = 100; | ||
config.maxPageId = 100; | ||
config.dsnpVersions = [config_1.DsnpVersion.Version1_0]; | ||
config.maxGraphPageSizeBytes = 100; | ||
config.maxKeyPageSizeBytes = 100; | ||
const schemaConfig = {}; | ||
schemaConfig.dsnpVersion = config_1.DsnpVersion.Version1_0; | ||
schemaConfig.connectionType = config_1.ConnectionType.Follow; | ||
schemaConfig.privacyType = config_1.PrivacyType.Public; | ||
config.schemaMap = { 1: schemaConfig }; | ||
return config; | ||
} | ||
test('printHelloGraph should print "Hello, Graph!"', async () => { | ||
// Mock the console.log function | ||
const consoleLogMock = jest.spyOn(console, 'log').mockImplementation(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config: {} }; | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
graph.printHelloGraph(); | ||
await graph.printHelloGraph(); | ||
expect(consoleLogMock).toHaveBeenCalledWith('Hello, Graph!'); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getGraphConfig should return the graph config', () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config: {} }; | ||
test('getGraphConfig should return the graph config', async () => { | ||
const config_input = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config: config_input }; | ||
const graph = new graph_1.Graph(environment); | ||
const config = graph.getGraphConfig(environment); | ||
const config = await graph.getGraphConfig(environment); | ||
expect(config).toBeDefined(); | ||
expect(config.sdkMaxUsersGraphSize).toEqual(100); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getGraphConfig with Mainnet environment should return the graph config', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const config = await graph.getGraphConfig(environment); | ||
expect(config).toBeDefined(); | ||
expect(config.sdkMaxUsersGraphSize).toEqual(1000); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getGraphConfig with Rococo environment should return the graph config', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Rococo }; | ||
const graph = new graph_1.Graph(environment); | ||
const config = await graph.getGraphConfig(environment); | ||
expect(config).toBeDefined(); | ||
expect(config.sdkMaxUsersGraphSize).toEqual(1000); | ||
await graph.freeGraphState(); | ||
}); | ||
test('initialize graph with low capacity of 100 should return the same capacity', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment, 100); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const capacity = await graph.getGraphCapacity(); | ||
expect(capacity).toEqual(100); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getGraphStatesCount should be zero after previous graph is freed', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
await graph.freeGraphState(); | ||
const count = await graph.getGraphStatesCount(); | ||
expect(count).toEqual(0); | ||
}); | ||
test('getGraphStatesCount should be one after graph is initialized', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const count = await graph.getGraphStatesCount(); | ||
expect(count).toEqual(1); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getGraphUsersCount should be zero on initialized graph', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const count = await graph.getGraphUsersCount(); | ||
expect(count).toEqual(0); | ||
await graph.freeGraphState(); | ||
await expect(async () => { | ||
await graph.getGraphUsersCount(); | ||
}).rejects.toThrow('Graph state not found'); | ||
}); | ||
test('containsUserGraph should return false on initialized graph', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const contains = await graph.containsUserGraph(1); | ||
expect(contains).toEqual(false); | ||
await graph.freeGraphState(); | ||
}); | ||
test('removeUserGraph should pass through on initialized graph', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const removed = await graph.removeUserGraph(1); | ||
expect(removed).toEqual(true); | ||
await graph.freeGraphState(); | ||
}); | ||
test('importUserData should pass through on initialized graph', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
// Set up import data | ||
const dsnpUserId1 = 1; | ||
const dsnpUserId2 = 2; | ||
const pageData1 = { | ||
pageId: 1, | ||
content: new Uint8Array([24, 227, 96, 97, 96, 99, 224, 96, 224, 98, 96, 0, 0]), | ||
contentHash: 100, | ||
}; | ||
const keyPairs1 = []; | ||
const keyPairs2 = []; | ||
const dsnpKeys1 = { | ||
dsnpUserId: dsnpUserId1, | ||
keysHash: 100, | ||
keys: [], | ||
}; | ||
const dsnpKeys2 = { | ||
dsnpUserId: dsnpUserId2, | ||
keysHash: 100, | ||
keys: [], | ||
}; | ||
const importBundle1 = { | ||
dsnpUserId: dsnpUserId1, | ||
schemaId: 1, | ||
keyPairs: keyPairs1, | ||
dsnpKeys: dsnpKeys1, | ||
pages: [pageData1], | ||
}; | ||
const importBundle2 = { | ||
dsnpUserId: dsnpUserId2, | ||
schemaId: 1, | ||
keyPairs: keyPairs2, | ||
dsnpKeys: dsnpKeys2, | ||
pages: [pageData1], | ||
}; | ||
// Import user data for each ImportBundle | ||
const imported = await graph.importUserData([importBundle1, importBundle2]); | ||
expect(imported).toEqual(true); | ||
await graph.freeGraphState(); | ||
}); | ||
test('applyActions with empty actions should pass through on initialized graph', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
// Set up actions | ||
const actions = []; | ||
const applied = await graph.applyActions(actions); | ||
expect(applied).toEqual(true); | ||
await graph.freeGraphState(); | ||
}); | ||
test('applyActions with few actions should pass through on initialized graph', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
// Set up actions | ||
const actions = []; | ||
const action_1 = { | ||
type: "Connect", | ||
ownerDsnpUserId: 1, | ||
connection: { | ||
dsnpUserId: 2, | ||
schemaId: 1, | ||
}, | ||
dsnpKeys: { | ||
dsnpUserId: 2, | ||
keysHash: 100, | ||
keys: [], | ||
}, | ||
}; | ||
actions.push(action_1); | ||
const applied = await graph.applyActions(actions); | ||
expect(applied).toEqual(true); | ||
const exported = await graph.exportUpdates(); | ||
expect(exported).toBeDefined(); | ||
expect(exported.length).toEqual(1); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getConnectionsForUserGraph with empty connections should return empty array', async () => { | ||
const config = getTestConfig(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
// Set up actions | ||
const actions = []; | ||
const action_1 = { | ||
type: "Connect", | ||
ownerDsnpUserId: 1, | ||
connection: { | ||
dsnpUserId: 2, | ||
schemaId: 1, | ||
}, | ||
dsnpKeys: { | ||
dsnpUserId: 2, | ||
keysHash: 100, | ||
keys: [], | ||
}, | ||
}; | ||
actions.push(action_1); | ||
const applied = await graph.applyActions(actions); | ||
expect(applied).toEqual(true); | ||
const connections = await graph.getConnectionsForUserGraph(1, 1, true); | ||
expect(connections).toBeDefined(); | ||
expect(connections.length).toEqual(1); | ||
const forceCalculateGraphs = await graph.forceCalculateGraphs(1); | ||
expect(forceCalculateGraphs).toBeDefined(); | ||
expect(forceCalculateGraphs.length).toEqual(0); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getConnectionsWithoutKeys with empty connections should return empty array', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const connections = await graph.getConnectionsWithoutKeys(); | ||
expect(connections).toBeDefined(); | ||
expect(connections.length).toEqual(0); | ||
expect(async () => { | ||
await graph.getOneSidedPrivateFriendshipConnections(1); | ||
}).rejects.toThrow('User graph for 1 is not imported'); | ||
await graph.freeGraphState(); | ||
}); | ||
test('getPublicKeys with empty connections should return empty array', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const connections = await graph.getPublicKeys(1); | ||
expect(connections).toBeDefined(); | ||
expect(connections.length).toEqual(0); | ||
await graph.freeGraphState(); | ||
}); | ||
test('deserializeDsnpKeys with empty keys should return empty array', async () => { | ||
const environment = { environmentType: environment_1.EnvironmentType.Mainnet }; | ||
const graph = new graph_1.Graph(environment); | ||
const handle = graph.getGraphHandle(); | ||
expect(handle).toBeDefined(); | ||
const keys = { | ||
dsnpUserId: 2, | ||
keysHash: 100, | ||
keys: [], | ||
}; | ||
const connections = await graph.deserializeDsnpKeys(keys); | ||
expect(connections).toBeDefined(); | ||
expect(connections.length).toEqual(0); | ||
await graph.freeGraphState(); | ||
}); | ||
//# sourceMappingURL=graph.test.js.map |
@@ -1,23 +0,24 @@ | ||
import { EnvironmentInterface } from "./models/environment"; | ||
import { Config } from "./models/config"; | ||
import { Action, Config, DsnpGraphEdge, DsnpKeys, DsnpPublicKey, EnvironmentInterface, ImportBundle, Update } from "./models"; | ||
export interface Native { | ||
printHelloGraph(): void; | ||
getGraphConfig(environment: EnvironmentInterface): Config; | ||
initializeGraphState(environment: EnvironmentInterface): number; | ||
initializeGraphStateWithCapacity(environment: EnvironmentInterface, capacity: number): number; | ||
containsUserGraph(handle: number, dsnpUserId: number): boolean; | ||
getGraphUsersLength(handle: number): number; | ||
removeUserGraph(handle: number, dsnpUserId: number): void; | ||
importUserData(handle: number, data: any): void; | ||
exportUpdates(handle: number): any; | ||
applyActions(handle: number, actions: any): void; | ||
forceCalculateGraphs(handle: number, dsnpUserId: number): any; | ||
getConnectionsForUserGraph(handle: number, dsnpUserId: number, schemaId: string, includePending: boolean): any; | ||
getUsersWithoutKeys(handle: number): any; | ||
getOneSidedPrivateFriendshipConnections(handle: number, dsnpUserId: number): any; | ||
getPublicKeys(handle: number, dsnpUserId: number): any; | ||
deserializeDsnpKeys(keys: any): any; | ||
freeGraphState(handle: number): void; | ||
getGraphConfig(environment: EnvironmentInterface): Promise<Config>; | ||
getGraphCapacity(handle: number): Promise<number>; | ||
getGraphStatesCount(): Promise<number>; | ||
getGraphUsersCount(handle: number): Promise<number>; | ||
containsUserGraph(handle: number, dsnpUserId: number): Promise<boolean>; | ||
removeUserGraph(handle: number, dsnpUserId: number): Promise<boolean>; | ||
importUserData(handle: number, payload: ImportBundle[]): Promise<boolean>; | ||
applyActions(handle: number, actions: Action[]): Promise<boolean>; | ||
exportUpdates(handle: number): Promise<Update[]>; | ||
getConnectionsForUserGraph(handle: number, dsnpUserId: number, schemaId: number, includePending: boolean): Promise<DsnpGraphEdge[]>; | ||
forceCalculateGraphs(handle: number, dsnpUserId: number): Promise<Update[]>; | ||
getConnectionsWithoutKeys(handle: number): Promise<number[]>; | ||
getOneSidedPrivateFriendshipConnections(handle: number, dsnpUserId: number): Promise<DsnpGraphEdge[]>; | ||
getPublicKeys(handle: number, dsnpUserId: number): Promise<DsnpPublicKey[]>; | ||
deserializeDsnpKeys(keys: DsnpKeys): Promise<DsnpPublicKey[]>; | ||
freeGraphState(handle: number): Promise<boolean>; | ||
} | ||
export declare const graphsdkModule: Native; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -17,6 +17,4 @@ "use strict"; | ||
} | ||
const graphsdk = loadNativeModule(); | ||
console.log("Loaded graphsdk.node bindings"); | ||
// Export the graphsdk module | ||
exports.graphsdkModule = graphsdk; | ||
exports.graphsdkModule = loadNativeModule(); | ||
//# sourceMappingURL=index.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const graph_1 = require("./graph"); | ||
const models_1 = require("./models"); | ||
const environment_1 = require("./models/environment"); | ||
test('printHelloGraph should print "Hello, Graph!"', () => { | ||
function getTestConfig() { | ||
const config = {}; | ||
config.sdkMaxUsersGraphSize = 100; | ||
config.sdkMaxStaleFriendshipDays = 100; | ||
config.maxPageId = 100; | ||
config.dsnpVersions = [models_1.DsnpVersion.Version1_0]; | ||
config.maxGraphPageSizeBytes = 100; | ||
config.maxKeyPageSizeBytes = 100; | ||
const schemaConfig = {}; | ||
schemaConfig.dsnpVersion = models_1.DsnpVersion.Version1_0; | ||
schemaConfig.connectionType = models_1.ConnectionType.Follow; | ||
schemaConfig.privacyType = models_1.PrivacyType.Public; | ||
config.schemaMap = { 1: schemaConfig }; | ||
return config; | ||
} | ||
test('printHelloGraph should print "Hello, Graph!"', async () => { | ||
// Mock the console.log function | ||
const consoleLogMock = jest.spyOn(console, 'log').mockImplementation(); | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config: {} }; | ||
const environment = { environmentType: environment_1.EnvironmentType.Dev, config: getTestConfig() }; | ||
const graph = new graph_1.Graph(environment); | ||
graph.printHelloGraph(); | ||
await graph.printHelloGraph(); | ||
expect(consoleLogMock).toHaveBeenCalledWith('Hello, Graph!'); | ||
await graph.freeGraphState(); | ||
}); | ||
//# sourceMappingURL=index.test.js.map |
@@ -8,18 +8,23 @@ declare enum DsnpVersion { | ||
} | ||
declare enum PrivacyType { | ||
Public = "public", | ||
Private = "private" | ||
} | ||
interface SchemaConfig { | ||
dsnp_version: DsnpVersion; | ||
connection_type: ConnectionType; | ||
dsnpVersion: DsnpVersion; | ||
connectionType: ConnectionType; | ||
privacyType: PrivacyType; | ||
} | ||
interface Config { | ||
sdk_max_users_graph_size: number; | ||
sdk_max_stale_friendship_days: number; | ||
max_graph_page_size_bytes: number; | ||
max_page_id: number; | ||
max_key_page_size_bytes: number; | ||
schema_map: { | ||
[key: string]: SchemaConfig; | ||
sdkMaxUsersGraphSize: number; | ||
sdkMaxStaleFriendshipDays: number; | ||
maxGraphPageSizeBytes: number; | ||
maxPageId: number; | ||
maxKeyPageSizeBytes: number; | ||
schemaMap: { | ||
[key: number]: SchemaConfig; | ||
}; | ||
dsnp_versions: DsnpVersion[]; | ||
dsnpVersions: DsnpVersion[]; | ||
} | ||
export { Config, ConnectionType, DsnpVersion, SchemaConfig }; | ||
export { Config, ConnectionType, DsnpVersion, SchemaConfig, PrivacyType }; | ||
//# sourceMappingURL=config.d.ts.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DsnpVersion = exports.ConnectionType = void 0; | ||
exports.PrivacyType = exports.DsnpVersion = exports.ConnectionType = void 0; | ||
var DsnpVersion; | ||
@@ -13,2 +13,7 @@ (function (DsnpVersion) { | ||
})(ConnectionType || (exports.ConnectionType = ConnectionType = {})); | ||
var PrivacyType; | ||
(function (PrivacyType) { | ||
PrivacyType["Public"] = "public"; | ||
PrivacyType["Private"] = "private"; | ||
})(PrivacyType || (exports.PrivacyType = PrivacyType = {})); | ||
//# sourceMappingURL=config.js.map |
{ | ||
"name": "@dsnp/graph-sdk", | ||
"version": "0.0.0-c347d7", | ||
"version": "0.0.0-daee06", | ||
"author": "Amplica Labs", | ||
@@ -5,0 +5,0 @@ "license": "ISC", |
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
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
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
6334198
55
641
144