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

@jsplumb/community

Package Overview
Dependencies
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsplumb/community - npm Package Compare versions

Comparing version 4.0.0-RC1 to 4.0.0-RC10

dist/router/default-router.d.ts

6

dist/anchor-manager.d.ts
import { Endpoint } from "./endpoint/endpoint-impl";
import { Dictionary, ExtendedOffset, jsPlumbInstance, Offset } from "./core";
import { Connection } from "./connector/connection-impl";
import { ComputedAnchorPosition, Face, Orientation } from "./factory/anchor-factory";
import { Face, Orientation } from "./factory/anchor-factory";
import { ContinuousAnchor, ContinuousAnchorOptions } from "./anchor/continuous-anchor";
export declare type AnchorPlacement = [number, number, number, number, any?, any?];
export declare type AnchorFace = "top" | "right" | "bottom" | "left";
export declare class ContinuousAnchorFactory {
private continuousAnchorLocations;
clear(endpointId: string): void;
set(endpointId: string, pos: ComputedAnchorPosition): void;
set(endpointId: string, pos: AnchorPlacement): void;
get(instance: jsPlumbInstance, params?: ContinuousAnchorOptions): ContinuousAnchor;

@@ -11,0 +13,0 @@ }

import { jsPlumbInstance, Offset, PointArray } from "../core";
import { EventGenerator } from "../event-generator";
import { Endpoint } from "../endpoint/endpoint-impl";
import { AnchorComputeParams, AnchorId, AnchorOptions, AnchorOrientationHint, ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { AnchorComputeParams, AnchorId, AnchorOptions, AnchorOrientationHint, Orientation } from "../factory/anchor-factory";
import { AnchorPlacement } from "../anchor-manager";
export declare class Anchor extends EventGenerator {

@@ -20,3 +21,3 @@ instance: jsPlumbInstance;

timestamp: string;
lastReturnValue: ComputedAnchorPosition;
lastReturnValue: AnchorPlacement;
positionFinder: (dropPosition: Offset, elPosition: Offset, elSize: PointArray, constructorParams: any) => any;

@@ -27,5 +28,5 @@ clone: () => Anchor;

getOrientation(endpoint?: Endpoint): Orientation;
getCurrentLocation(params: AnchorComputeParams): ComputedAnchorPosition;
getCurrentLocation(params: AnchorComputeParams): AnchorPlacement;
setPosition(x: number, y: number, ox: AnchorOrientationHint, oy: AnchorOrientationHint, overrideLock?: boolean): void;
compute(params: AnchorComputeParams): ComputedAnchorPosition;
compute(params: AnchorComputeParams): AnchorPlacement;
equals(anchor: Anchor): boolean;

@@ -32,0 +33,0 @@ getCssClass(): string;

import { Anchor } from "./anchor";
import { AnchorComputeParams, AnchorOptions, ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { AnchorComputeParams, AnchorOptions, Orientation } from "../factory/anchor-factory";
import { jsPlumbInstance, PointArray } from "../core";
import { Endpoint } from "../endpoint/endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
export interface DynamicAnchorOptions extends AnchorOptions {

@@ -18,4 +19,4 @@ selector?: (xy: PointArray, wh: PointArray, txy: PointArray, twh: PointArray, anchors: Array<Anchor>) => Anchor;

getAnchors(): Array<Anchor>;
compute(params: AnchorComputeParams): ComputedAnchorPosition;
getCurrentLocation(params: AnchorComputeParams): ComputedAnchorPosition;
compute(params: AnchorComputeParams): AnchorPlacement;
getCurrentLocation(params: AnchorComputeParams): AnchorPlacement;
getOrientation(_endpoint?: Endpoint): Orientation;

@@ -22,0 +23,0 @@ over(anchor: Anchor, endpoint: Endpoint): void;

@@ -9,2 +9,3 @@ import { Component, ComponentOptions } from "./component";

}
export declare type ClassAction = "add" | "remove";
export declare abstract class OverlayCapableComponent extends Component {

@@ -11,0 +12,0 @@ instance: jsPlumbInstance;

import { AbstractConnector, ConnectorComputeParams, PaintGeometry } from "./abstract-connector";
import { jsPlumbInstance } from "../core";
import { ComputedAnchorPosition } from "../factory/anchor-factory";
import { Connection } from "./connection-impl";
import { AnchorPlacement } from "../anchor-manager";
export interface AbstractBezierOptions {

@@ -23,5 +23,11 @@ showLoopback?: boolean;

isLoopbackCurrently: boolean;
geometry: {
controlPoints: [any, any];
source: AnchorPlacement;
target: AnchorPlacement;
};
getDefaultStubs(): [number, number];
constructor(instance: jsPlumbInstance, connection: Connection, params: any);
_compute(paintInfo: PaintGeometry, p: ConnectorComputeParams): void;
abstract _computeBezier(paintInfo: PaintGeometry, p: ConnectorComputeParams, sp: ComputedAnchorPosition, tp: ComputedAnchorPosition, _w: number, _h: number): void;
abstract _computeBezier(paintInfo: PaintGeometry, p: ConnectorComputeParams, sp: AnchorPlacement, tp: AnchorPlacement, _w: number, _h: number): void;
}
import { jsPlumbInstance, PointArray, PointXY, TypeDescriptor } from "../core";
import { Segment, SegmentBounds } from "./abstract-segment";
import { Endpoint } from "../endpoint/endpoint-impl";
import { ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { Orientation } from "../factory/anchor-factory";
import { ComponentOptions } from "../component/component";
import { Connection } from "./connection-impl";
import { AnchorPlacement } from "../anchor-manager";
/**

@@ -38,4 +39,4 @@ * Created by simon on 14/05/2019.

export declare type ConnectorComputeParams = {
sourcePos: ComputedAnchorPosition;
targetPos: ComputedAnchorPosition;
sourcePos: AnchorPlacement;
targetPos: AnchorPlacement;
sourceOrientation: Orientation;

@@ -86,2 +87,6 @@ targetOrientation: Orientation;

}
export interface Geometry {
source: any;
target: any;
}
export declare abstract class AbstractConnector implements Connector {

@@ -91,3 +96,3 @@ instance: jsPlumbInstance;

abstract type: string;
stub: number;
stub: number | [number, number];
sourceStub: number;

@@ -100,7 +105,7 @@ targetStub: number;

targetGap: number;
segments: Array<Segment>;
private segments;
totalLength: number;
segmentProportions: Array<[number, number]>;
segmentProportionalLengths: Array<number>;
private paintInfo;
protected paintInfo: PaintGeometry;
strokeWidth: number;

@@ -114,5 +119,16 @@ x: number;

cssClass: string;
abstract getDefaultStubs(): [number, number];
protected geometry: Geometry;
constructor(instance: jsPlumbInstance, connection: Connection, params: ConnectorOptions);
getTypeDescriptor(): string;
getIdPrefix(): string;
setGeometry(g: any, internal: boolean): void;
/**
* Subclasses can override this. By default we just pass back the geometry we are using internally.
*/
exportGeometry(): any;
/**
* Subclasses can override this. By default we just set the given geometry as our internal representation.
*/
importGeometry(g: any): boolean;
abstract _compute(geometry: PaintGeometry, params: ConnectorComputeParams): void;

@@ -119,0 +135,0 @@ resetBounds(): void;

@@ -5,2 +5,3 @@ import { AbstractSegment } from "./abstract-segment";

private instance;
static segmentType: string;
type: string;

@@ -7,0 +8,0 @@ cx: number;

import { AbstractBezierConnector, AbstractBezierOptions } from "./abstract-bezier-connector";
import { PaintGeometry, ConnectorComputeParams } from "./abstract-connector";
import { jsPlumbInstance } from "../core";
import { ComputedAnchorPosition } from "../factory/anchor-factory";
import { Connection } from "./connection-impl";
import { AnchorPlacement } from "../anchor-manager";
export declare class Bezier extends AbstractBezierConnector {

@@ -14,3 +14,3 @@ connection: Connection;

private _findControlPoint;
_computeBezier(paintInfo: PaintGeometry, p: ConnectorComputeParams, sp: ComputedAnchorPosition, tp: ComputedAnchorPosition, _w: number, _h: number): void;
_computeBezier(paintInfo: PaintGeometry, p: ConnectorComputeParams, sp: AnchorPlacement, tp: AnchorPlacement, _w: number, _h: number): void;
}

@@ -17,2 +17,3 @@ import { AbstractSegment, PointNearPath, SegmentBounds } from "./abstract-segment";

constructor(instance: jsPlumbInstance, params: any);
static segmentType: string;
type: string;

@@ -19,0 +20,0 @@ private static _translateLocation;

@@ -24,2 +24,3 @@ import { AbstractConnector, ConnectorOptions, ConnectorComputeParams, PaintGeometry } from "./abstract-connector";

isLoopbackCurrently: boolean;
getDefaultStubs(): [number, number];
constructor(instance: jsPlumbInstance, connection: Connection, params: FlowchartConnectorOptions);

@@ -26,0 +27,0 @@ private addASegment;

import { AbstractBezierConnector, AbstractBezierOptions } from "./abstract-bezier-connector";
import { jsPlumbInstance } from "../core";
import { ConnectorComputeParams, PaintGeometry } from "./abstract-connector";
import { ComputedAnchorPosition } from "../factory/anchor-factory";
import { Connection } from "./connection-impl";
import { AnchorPlacement } from "../anchor-manager";
export interface StateMachineOptions extends AbstractBezierOptions {

@@ -14,3 +14,3 @@ }

constructor(instance: jsPlumbInstance, connection: Connection, params: StateMachineOptions);
_computeBezier(paintInfo: PaintGeometry, params: ConnectorComputeParams, sp: ComputedAnchorPosition, tp: ComputedAnchorPosition, w: number, h: number): void;
_computeBezier(paintInfo: PaintGeometry, params: ConnectorComputeParams, sp: AnchorPlacement, tp: AnchorPlacement, w: number, h: number): void;
}
import { AbstractConnector, ConnectorComputeParams, PaintGeometry } from "./abstract-connector";
export declare class StraightConnector extends AbstractConnector {
type: string;
_compute(paintInfo: PaintGeometry, _: ConnectorComputeParams): void;
getDefaultStubs(): [number, number];
_compute(paintInfo: PaintGeometry, p: ConnectorComputeParams): void;
}

@@ -20,2 +20,3 @@ import { AbstractSegment, PointNearPath, SegmentBounds } from "./abstract-segment";

private _recalc;
static segmentType: string;
type: string;

@@ -22,0 +23,0 @@ getLength(): number;

@@ -33,4 +33,8 @@ export declare function cls(...className: Array<string>): string;

export declare const EVENT_DBL_CLICK = "dblclick";
export declare const EVENT_CONNECTION_MOUSEOVER = "connectionMouseOver";
export declare const EVENT_CONNECTION_MOUSEOUT = "connectionMouseOut";
export declare const EVENT_ENDPOINT_CLICK = "endpointClick";
export declare const EVENT_ENDPOINT_DBL_CLICK = "endpointDblClick";
export declare const EVENT_ENDPOINT_MOUSEOVER = "endpointMouseOver";
export declare const EVENT_ENDPOINT_MOUSEOUT = "endpointMouseOut";
export declare const EVENT_ELEMENT_CLICK = "elementClick";

@@ -37,0 +41,0 @@ export declare const EVENT_ELEMENT_DBL_CLICK = "elementDblClick";

@@ -54,2 +54,21 @@ import { jsPlumbDefaults, jsPlumbHelperFunctions } from "./defaults";

}
export interface BehaviouralTypeDescriptor extends TypeDescriptor {
filter?: string | Function;
filterExclude?: boolean;
extract?: Dictionary<string>;
uniqueEndpoint?: boolean;
onMaxConnections?: Function;
connectionType?: string;
}
interface SourceOrTargetDefinition {
enabled?: boolean;
def: BehaviouralTypeDescriptor;
endpoint?: Endpoint;
maxConnections?: number;
uniqueEndpoint?: boolean;
}
export interface SourceDefinition extends SourceOrTargetDefinition {
}
export interface TargetDefinition extends SourceOrTargetDefinition {
}
export interface DeleteOptions {

@@ -89,2 +108,3 @@ connection?: Connection;

h: number;
center?: PointXY;
};

@@ -398,4 +418,4 @@ export declare type RectangleXY = BoundingBox;

setSourceEnabled(el: ElementSpec, state: boolean, connectionType?: string): any;
findFirstSourceDefinition(el: any, connectionType?: string): any;
findFirstTargetDefinition(el: any, connectionType?: string): any;
findFirstSourceDefinition(el: any, connectionType?: string): SourceDefinition;
findFirstTargetDefinition(el: any, connectionType?: string): TargetDefinition;
private findFirstDefinition;

@@ -416,3 +436,3 @@ isSource(el: any, connectionType?: string): any;

private _writeScopeAttribute;
makeSource(el: ElementSpec, params?: any, referenceParams?: any): jsPlumbInstance;
makeSource(el: ElementSpec, params?: BehaviouralTypeDescriptor, referenceParams?: any): jsPlumbInstance;
private _getScope;

@@ -426,3 +446,3 @@ getSourceScope(el: any | string): string;

setScope(el: any | string, scope: string): void;
makeTarget(el: ElementSpec, params: any, referenceParams?: any): jsPlumbInstance;
makeTarget(el: ElementSpec, params: BehaviouralTypeDescriptor, referenceParams?: any): jsPlumbInstance;
show(el: string | any, changeEndpoints?: boolean): jsPlumbInstance;

@@ -446,3 +466,3 @@ hide(el: string | any, changeEndpoints?: boolean): jsPlumbInstance;

unproxyConnection(connection: Connection, index: number, proxyElId: string): void;
sourceChanged(originalId: string, newId: string, connection: any, newElement: any): void;
sourceOrTargetChanged(originalId: string, newId: string, connection: any, newElement: any, index: number): void;
getGroup(id: string): UIGroup;

@@ -449,0 +469,0 @@ getGroupFor(el: any | string): UIGroup;

import { jsPlumbDefaults, jsPlumbHelperFunctions } from "../defaults";
import { Dictionary, jsPlumbInstance, Offset, PointArray, Size } from "../core";
import { Dictionary, jsPlumbInstance, Offset, PointArray, Size, SourceDefinition, TargetDefinition } from "../core";
import { DragManager } from "./drag-manager";
import { UIGroup } from "../group/group";
import { EventManager } from "./event-manager";
import { AbstractConnector, Endpoint, Overlay } from "..";
import { AbstractConnector, Collicat, CollicatOptions, Drag, ElementAttributes, Endpoint, Overlay } from "..";
import { jsPlumbList, jsPlumbListManager, jsPlumbListOptions } from "./lists";
export interface DragEventCallbackOptions {
drag: {
size: [number, number];
getDragElement: () => HTMLElement;
_size: [number, number];
getDragElement: () => jsPlumbDOMElement;
};
e: MouseEvent;
el: HTMLElement;
el: jsPlumbDOMElement;
pos: [number, number];

@@ -41,6 +41,7 @@ }

jtk: jsPlumbDOMInformation;
_jsPlumbTargetDefinitions: Array<any>;
_jsPlumbSourceDefinitions: Array<any>;
_jsPlumbTargetDefinitions: Array<TargetDefinition>;
_jsPlumbSourceDefinitions: Array<SourceDefinition>;
_jsPlumbList: any;
_jsPlumbScrollHandler?: Function;
_katavorioDrag?: Drag;
}

@@ -147,2 +148,12 @@ export declare type PosseSpec = string | {

removeList(el: jsPlumbDOMElement): void;
/**
* Helper method for other libs/code to get a DragManager.
* @param options
*/
createDragManager(options: CollicatOptions): Collicat;
svg: {
node: (name: string, attributes?: ElementAttributes) => SVGElement;
attr: (node: SVGElement, attributes: ElementAttributes) => void;
pos: (d: [number, number]) => string;
};
}

@@ -7,2 +7,3 @@ /**

import { EventManager } from "./event-manager";
import { DragEventCallbackOptions, jsPlumbDOMElement } from "./browser-jsplumb-instance";
export interface DragSelector {

@@ -14,3 +15,3 @@ filter?: string;

declare abstract class Base {
protected el: HTMLElement;
protected el: jsPlumbDOMElement;
protected k: Collicat;

@@ -21,3 +22,3 @@ abstract _class: string;

scopes: Array<string>;
constructor(el: HTMLElement, k: Collicat);
constructor(el: jsPlumbDOMElement, k: Collicat);
setEnabled(e: boolean): void;

@@ -31,3 +32,23 @@ isEnabled(): boolean;

export declare type GhostProxyGenerator = (el: HTMLElement) => HTMLElement;
export interface DragParams {
export interface DragHandlerOptions {
selector?: string;
start?: (p: DragEventCallbackOptions) => any;
stop?: (p: DragEventCallbackOptions) => any;
drag?: (p: DragEventCallbackOptions) => any;
beforeStart?: (beforeStartParams: any) => void;
dragInit?: (el: jsPlumbDOMElement) => any;
dragAbort?: (el: jsPlumbDOMElement) => any;
ghostProxy?: GhostProxyGenerator | boolean;
makeGhostProxy?: GhostProxyGenerator;
useGhostProxy?: (container: any, dragEl: any) => boolean;
ghostProxyParent?: HTMLElement;
constrain?: ConstrainFunction | boolean;
revert?: RevertFunction;
filter?: string;
filterExclude?: boolean;
snapThreshold?: number;
grid?: PointArray;
allowNegative?: boolean;
}
export interface DragParams extends DragHandlerOptions {
rightButtonCanDrag?: boolean;

@@ -38,11 +59,3 @@ consumeStartEvent?: boolean;

multipleDrop?: boolean;
ghostProxy?: GhostProxyGenerator | boolean;
makeGhostProxy?: GhostProxyGenerator;
selector?: string;
snapThreshold?: number;
grid?: PointArray;
allowNegative?: boolean;
constrain?: ConstrainFunction | boolean;
containment?: boolean;
revert?: RevertFunction;
canDrag?: Function;

@@ -53,5 +66,3 @@ consumeFilteredEvents?: boolean;

ignoreZoom?: boolean;
ghostProxyParent?: HTMLElement;
filter?: string;
filterExclude?: boolean;
scope?: string;
}

@@ -83,3 +94,3 @@ export interface DragSelector {

_useGhostProxy: Function;
_activeSelectorParams: any;
_activeSelectorParams: DragParams;
_availableSelectors: Array<DragParams>;

@@ -108,3 +119,3 @@ _ghostProxyFunction: GhostProxyGenerator;

listeners: Dictionary<Array<Function>>;
constructor(el: HTMLElement, params: DragParams, k: Collicat);
constructor(el: jsPlumbDOMElement, params: DragParams, k: Collicat);
on(evt: string, fn: Function): void;

@@ -147,3 +158,3 @@ off(evt: string, fn: Function): void;

clearAllFilters(): void;
addSelector(params: any): void;
addSelector(params: DragHandlerOptions): void;
destroy(): void;

@@ -160,3 +171,11 @@ }

}
export declare class Collicat {
export interface jsPlumbDragManager {
getZoom(): number;
setZoom(z: number): void;
getInputFilterSelector(): string;
setInputFilterSelector(selector: string): void;
draggable(el: jsPlumbDOMElement, params: DragParams): Drag;
destroyDraggable(el: jsPlumbDOMElement): void;
}
export declare class Collicat implements jsPlumbDragManager {
eventManager: EventManager;

@@ -171,3 +190,3 @@ private zoom;

setZoom(z: number): void;
_prepareParams(p: DragParams): DragParams;
private _prepareParams;
/**

@@ -183,8 +202,8 @@ * Gets the selector identifying which input elements to filter from drag events.

* @param {String} selector Input filter selector to set.
* @return {Katavorio} Current instance; method may be chained.
* @return {Collicat} Current instance; method may be chained.
*/
setInputFilterSelector(selector: string): this;
draggable(el: any, params: DragParams): Drag;
destroyDraggable(el: any): void;
draggable(el: jsPlumbDOMElement, params: DragParams): Drag;
destroyDraggable(el: jsPlumbDOMElement): void;
}
export {};

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

import { BrowserJsPlumbInstance } from "./browser-jsplumb-instance";
import { Dictionary } from "../core";
import { Drag } from "./collicat";
import { BrowserJsPlumbInstance, jsPlumbDOMElement } from "./browser-jsplumb-instance";
import { Dictionary, PointArray } from "../core";
import { Drag, DragHandlerOptions, GhostProxyGenerator } from "./collicat";
export declare const CLASS_DRAG_SELECTED = "jtk-drag-selected";

@@ -16,9 +16,28 @@ export declare const CLASS_DRAG_ACTIVE = "jtk-drag-active";

export declare const EVT_REVERT = "revert";
export declare const EVT_ZOOM = "zoom";
export declare const EVT_CONNECTION_DRAG = "connectionDrag";
export interface DragHandler {
selector: string;
onStart: (params: any) => boolean;
onDrag: (params: any) => void;
onStop: (params: any) => void;
onStart: (params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
drag: Drag;
}) => boolean;
onDrag: (params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}) => void;
onStop: (params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}) => void;
onDragInit: (el: HTMLElement) => HTMLElement;
onDragAbort: (el: HTMLElement) => void;
reset: () => void;

@@ -29,4 +48,4 @@ init: (drag: Drag) => void;

export interface GhostProxyingDragHandler extends DragHandler {
makeGhostProxy: (el: any) => any;
useGhostProxy: (container: any, dragEl: any) => boolean;
makeGhostProxy?: GhostProxyGenerator;
}

@@ -44,3 +63,3 @@ export declare class DragManager {

constructor(instance: BrowserJsPlumbInstance);
addHandler(handler: DragHandler, dragOptions?: any): void;
addHandler(handler: DragHandler, dragOptions?: DragHandlerOptions): void;
addFilter(filter: Function | string, exclude?: boolean): void;

@@ -47,0 +66,0 @@ removeFilter(filter: Function | string): void;

import { DragHandler } from "./drag-manager";
import { BrowserJsPlumbInstance, PosseSpec } from "./browser-jsplumb-instance";
import { BrowserJsPlumbInstance, jsPlumbDOMElement, PosseSpec } from "./browser-jsplumb-instance";
import { UIGroup } from "../group/group";
import { BoundingBox, Dictionary, Offset } from "../core";
import { BoundingBox, Dictionary, Offset, PointArray } from "../core";
import { Drag } from "./collicat";

@@ -42,7 +42,26 @@ declare type IntersectingGroup = {

onDragInit(el: HTMLElement): HTMLElement;
onStop(params: any): void;
onDragAbort(el: HTMLElement): void;
onStop(params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}): void;
private _cleanup;
reset(): void;
init(drag: Drag): void;
onDrag(params: any): void;
onStart(params: any): boolean;
onDrag(params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}): void;
onStart(params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
drag: Drag;
}): boolean;
addToDragSelection(el: string | HTMLElement): void;

@@ -49,0 +68,0 @@ clearDragSelection(): void;

@@ -5,3 +5,3 @@ import { DragHandler } from "./drag-manager";

import { Endpoint } from "../endpoint/endpoint-impl";
import { Dictionary } from "../core";
import { BoundingBox, Dictionary, PointArray } from "../core";
import { EndpointRepresentation } from "../endpoint/endpoints";

@@ -24,3 +24,7 @@ import { Drag } from "./collicat";

inPlaceCopy: any;
endpointDropTargets: Array<any>;
endpointDropTargets: Array<{
el: jsPlumbDOMElement;
endpoint: Endpoint;
r: BoundingBox;
}>;
currentDropTarget: any;

@@ -43,2 +47,3 @@ payload: any;

onDragInit(el: jsPlumbDOMElement): jsPlumbDOMElement;
onDragAbort(el: jsPlumbDOMElement): void;
/**

@@ -55,8 +60,25 @@ * Makes the element that is the placeholder for dragging. this element gets `managed` by the instance, and `unmanaged` when dragging

init(drag: Drag): void;
onStart(p: any): boolean;
onStart(p: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
drag: Drag;
}): boolean;
onBeforeStart(beforeStartParams: any): void;
onDrag(params: any): boolean;
onDrag(params: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}): boolean;
private _maybeCleanup;
private _reattachOrDiscard;
onStop(p: any): void;
onStop(p: {
e: MouseEvent;
el: jsPlumbDOMElement;
finalPos: PointArray;
pos: PointArray;
drag: Drag;
}): void;
/**

@@ -63,0 +85,0 @@ * Lookup a source definition on the given element.

@@ -1,5 +0,6 @@

import { AnchorComputeParams, AnchorOptions, ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { AnchorComputeParams, AnchorOptions, Orientation } from "../factory/anchor-factory";
import { Anchor } from "../anchor/anchor";
import { jsPlumbInstance, Size } from "../core";
import { Endpoint } from "../endpoint/endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
export interface FloatingAnchorOptions extends AnchorOptions {

@@ -16,5 +17,5 @@ reference: Anchor;

yDir: number;
_lastResult: ComputedAnchorPosition;
_lastResult: AnchorPlacement;
constructor(instance: jsPlumbInstance, params: FloatingAnchorOptions);
compute(params: AnchorComputeParams): ComputedAnchorPosition;
compute(params: AnchorComputeParams): AnchorPlacement;
getOrientation(_endpoint: Endpoint): Orientation;

@@ -33,3 +34,3 @@ /**

out(): void;
getCurrentLocation(params: AnchorComputeParams): ComputedAnchorPosition;
getCurrentLocation(params: AnchorComputeParams): AnchorPlacement;
}

@@ -17,2 +17,3 @@ import { ElementDragHandler } from "./element-drag-handler";

onDragInit(el: HTMLElement): HTMLElement;
onDragAbort(el: HTMLElement): void;
onStop(params: any): void;

@@ -19,0 +20,0 @@ private _isInsideParent;

import { EndpointRepresentation } from "./endpoints";
import { ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { Orientation } from "../factory/anchor-factory";
import { Endpoint } from "./endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
export declare type ComputedBlankEndpoint = [number, number, number, number];
export declare class BlankEndpoint<E> extends EndpointRepresentation<ComputedBlankEndpoint> {
constructor(endpoint: Endpoint, params?: any);
_compute(anchorPoint: ComputedAnchorPosition, orientation: Orientation, endpointStyle: any): ComputedBlankEndpoint;
_compute(anchorPoint: AnchorPlacement, orientation: Orientation, endpointStyle: any): ComputedBlankEndpoint;
getType(): string;
}
import { EndpointRepresentation } from "./endpoints";
import { ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { Orientation } from "../factory/anchor-factory";
import { Endpoint } from "./endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
export declare type ComputedDotEndpoint = [number, number, number, number, number];

@@ -10,4 +11,4 @@ export declare class DotEndpoint<E> extends EndpointRepresentation<ComputedDotEndpoint> {

constructor(endpoint: Endpoint, params?: any);
_compute(anchorPoint: ComputedAnchorPosition, orientation: Orientation, endpointStyle: any): ComputedDotEndpoint;
_compute(anchorPoint: AnchorPlacement, orientation: Orientation, endpointStyle: any): ComputedDotEndpoint;
getType(): string;
}
import { EndpointOptions, EndpointSpec } from "../endpoint/endpoint";
import { jsPlumbInstance, OffsetAndSize, Size } from "../core";
import { ComputedAnchorPosition } from "../factory/anchor-factory";
import { Anchor } from "../anchor/anchor";

@@ -10,3 +9,3 @@ import { OverlayCapableComponent } from "../component/overlay-capable-component";

import { EndpointRepresentation } from "./endpoints";
import { OverlaySpec } from "..";
import { AnchorPlacement, OverlaySpec } from "..";
export declare class Endpoint extends OverlayCapableComponent {

@@ -83,3 +82,3 @@ instance: jsPlumbInstance;

getUuid(): string;
computeAnchor(params: any): ComputedAnchorPosition;
computeAnchor(params: any): AnchorPlacement;
setElement(el: any): Endpoint;

@@ -94,3 +93,3 @@ connectorSelector(): Connection;

connectorPaintStyle?: PaintStyle;
anchorLoc?: ComputedAnchorPosition;
anchorLoc?: AnchorPlacement;
}): void;

@@ -97,0 +96,0 @@ prepareEndpoint<C>(ep: EndpointSpec | EndpointRepresentation<C>, typeId?: string): EndpointRepresentation<C>;

import { jsPlumbInstance } from "../core";
import { ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { Orientation } from "../factory/anchor-factory";
import { SegmentBounds } from "../connector/abstract-segment";
import { Endpoint } from "./endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
/**

@@ -21,3 +22,3 @@ * Superclass for all types of Endpoint. This class is renderer

abstract getType(): string;
abstract _compute(anchorPoint: ComputedAnchorPosition, orientation: Orientation, endpointStyle: any): C;
abstract _compute(anchorPoint: AnchorPlacement, orientation: Orientation, endpointStyle: any): C;
constructor(endpoint: Endpoint);

@@ -27,4 +28,4 @@ addClass(c: string): void;

clone(): EndpointRepresentation<C>;
compute(anchorPoint: ComputedAnchorPosition, orientation: Orientation, endpointStyle: any): void;
compute(anchorPoint: AnchorPlacement, orientation: Orientation, endpointStyle: any): void;
setVisible(v: boolean): void;
}
import { EndpointRepresentation } from "./endpoints";
import { ComputedAnchorPosition, Orientation } from "../factory/anchor-factory";
import { Orientation } from "../factory/anchor-factory";
import { Endpoint } from "./endpoint-impl";
import { AnchorPlacement } from "../anchor-manager";
export declare type ComputedRectangleEndpoint = [number, number, number, number];

@@ -9,4 +10,4 @@ export declare class RectangleEndpoint<E> extends EndpointRepresentation<ComputedRectangleEndpoint> {

constructor(endpoint: Endpoint, params?: any);
_compute(anchorPoint: ComputedAnchorPosition, orientation: Orientation, endpointStyle: any): ComputedRectangleEndpoint;
_compute(anchorPoint: AnchorPlacement, orientation: Orientation, endpointStyle: any): ComputedRectangleEndpoint;
getType(): string;
}

@@ -9,3 +9,3 @@ export declare abstract class EventGenerator {

constructor();
fire(event: string, value?: any, originalEvent?: Event): EventGenerator;
fire(event: string, value?: any, originalEvent?: Event): any;
private _drain;

@@ -20,1 +20,4 @@ unbind(eventOrListener?: string | Function, listener?: Function): EventGenerator;

}
export declare class OptimisticEventGenerator extends EventGenerator {
shouldFireEvent(event: string, value: any, originalEvent?: Event): boolean;
}

@@ -5,2 +5,3 @@ import { Connection } from "../connector/connection-impl";

import { Anchor } from "../anchor/anchor";
import { AnchorPlacement } from "../anchor-manager";
export declare type AnchorOrientationHint = -1 | 0 | 1;

@@ -24,3 +25,2 @@ export declare type Orientation = [AnchorOrientationHint, AnchorOrientationHint];

};
export declare type ComputedAnchorPosition = [number, number, number, number];
export interface AnchorOptions {

@@ -30,3 +30,3 @@ cssClass?: string;

export declare type AnchorId = "Assign" | "AutoDefault" | "Bottom" | "BottomCenter" | "BottomLeft" | "BottomRight" | "Center" | "Continuous" | "ContinuousBottom" | "ContinuousLeft" | "ContinuousRight" | "ContinuousTop" | "ContinuousLeftRight" | "ContinuousTopBottom" | "Left" | "LeftMiddle" | "Perimeter" | "Right" | "RightMiddle" | "Top" | "TopCenter" | "TopLeft" | "TopRight";
export declare type AnchorSpec = AnchorId | [AnchorId, AnchorOptions];
export declare type AnchorSpec = AnchorId | [AnchorId, AnchorOptions] | AnchorPlacement;
export declare const Anchors: {

@@ -33,0 +33,0 @@ get: (instance: jsPlumbInstance, name: string, args: any) => Anchor;

@@ -13,2 +13,3 @@ import { Dictionary, jsPlumbInstance, Offset } from "../core";

getGroupFor(el: any | string): UIGroup;
getGroups(): Array<UIGroup>;
removeGroup(group: string | UIGroup, deleteMembers?: boolean, manipulateDOM?: boolean, doNotFireEvent?: boolean): Dictionary<Offset>;

@@ -15,0 +16,0 @@ removeAllGroups(deleteMembers?: boolean, manipulateDOM?: boolean, doNotFireEvent?: boolean): void;

import { BrowserJsPlumbDefaults, BrowserJsPlumbInstance } from "./dom/browser-jsplumb-instance";
import { Constructable } from "./core";
import { jsPlumbHelperFunctions } from "./defaults";
import { Collicat, CollicatOptions } from "./dom";
import { AbstractConnector } from "./connector/abstract-connector";
export * from "./constants";

@@ -57,3 +58,5 @@ export * from "./core";

uuid(): string;
createDragManager(options: CollicatOptions): Collicat;
Connectors: {
register: (name: string, conn: Constructable<AbstractConnector>) => void;
};
}

@@ -12,2 +12,3 @@ import { ArrowOverlayOptions, Overlay } from "./overlay";

paintStyle: PaintStyle;
static arrowType: string;
type: string;

@@ -19,1 +20,2 @@ cachedDimensions: PointArray;

}
export declare function isArrowOverlay(o: Overlay): o is ArrowOverlay;

@@ -9,4 +9,6 @@ import { CustomOverlayOptions, Overlay } from "./overlay";

constructor(instance: jsPlumbInstance, component: Component, p: CustomOverlayOptions);
static customType: string;
type: string;
updateFrom(d: any): void;
}
export declare function isCustomOverlay(o: Overlay): o is CustomOverlay;

@@ -9,2 +9,3 @@ import { LabelOverlayOptions, Overlay } from "./overlay";

labelText: string;
static labelType: string;
type: string;

@@ -18,1 +19,2 @@ cachedDimensions: PointArray;

}
export declare function isLabelOverlay(o: Overlay): o is LabelOverlay;

@@ -48,9 +48,14 @@ import { Dictionary, jsPlumbInstance } from "../core";

* @param clazz
*/
addClass(clazz: string): void;
*
addClass(clazz:string) {
this.instance.renderer.addOverlayClass(this, clazz);
}
/**
* Remove a class from the overlay.
* @param clazz
*/
removeClass(clazz: string): void;
*
removeClass(clazz:string) {
this.instance.renderer.removeOverlayClass(this, clazz);
}*/
abstract updateFrom(d: any): void;

@@ -57,0 +62,0 @@ private _postComponentEvent;

@@ -8,4 +8,4 @@ import { SortFunction } from "./core";

export declare function isObject(o: any): boolean;
export declare function isDate(o: any): boolean;
export declare function isFunction(o: any): boolean;
export declare function isDate(o: any): o is Date;
export declare function isFunction(o: any): o is Function;
export declare function isNamedFunction(o: any): boolean;

@@ -12,0 +12,0 @@ export declare function isEmpty(o: any): boolean;

{
"name": "@jsplumb/community",
"version": "4.0.0-RC1",
"version": "4.0.0-RC10",
"description": "Visual connectivity for webapps",

@@ -5,0 +5,0 @@ "main": "dist/js/jsplumb.js",

@@ -8,57 +8,107 @@ # jsPlumb

```
- The `empty` method was removed.
### Breaking changes
- `connector-pointer-events` not supported on Endpoint definitions.
#### Methods
- The `empty` method was removed from `JsPlumbInstance`.
- The `deleteEveryEndpoint` method was removed from `JsPlumbInstance`. Functionally, it was identical to `reset`. Use `reset`.
- `addEndpoint` does not support a list of elements as the first argument - only a single DOM element is supported.
- `makeSource` does not support a list of elements as the first argument - only a single DOM element is supported.
- `makeTarget` does not support a list of elements as the first argument - only a single DOM element is supported.
- `getWidth` and `getHeight` methods removed from `JsPlumbInstance`. All they did was return the `offsetWidth` and `offsetHeight` of an element.
- `updateClasses` method removed from `JsPlumbInstance`. It was an attempt at keeping reflows to a minimum but was used only in one method internally, which is a method that was very rarely called.
- `setClass` method removed from `JsPlumbInstance`. This brings `JsPlumbInstance` into line with the way the DOM works: `classList` offers methods to add/remove/toggle classes, but not to set one particular class.
- `jsPlumbUtil` is no longer a static member on the window. Some of its more useful methods for users of the library have been exposed elsewhere:
- The `uuid` method, which we use a lot in our demos, and internally, is now exposed on the `JsPlumbInstance` class and on the global `jsPlumb` object
- The `extend` method is now exposed on the `JsPlumbInstance` class and on the global `jsPlumb` object
- The `consume` method is exposed on the `BrowserJsPlumbInstance` class (which is currently the only concrete instance of `JsPlumbInstance` and the class you will get from a `jsPlumb.newInstance(..)` call).
- `setId` no longer supports an array-like argument. You must now pass in a single id, or element.
- `appendToRoot` method removed. If you're using this, use `document.body.appendChild(..)` instead.
- The `droppable` method was removed. It was not used internally by any of the other code in either the Community or Toolkit editions, and had no accompanying tests. A question was raised [on Github](https://github.com/jsplumb/jsplumb/issues/942) about it and the OP ended up saying they'd just used native droppable stuff to achieve what they needed. If you feel `droppable` should be reinstated, we can chat about it [in this issue](https://github.com/jsplumb/jsplumb/issues/943).
#### Configuration
- All defaults converted to camelCase instead of having a leading capital, eg. "Anchors" -> "anchors", "ConnectionsDetachable" -> "connectionsDetachable". This brings the defaults into line with the parameters used in method calls like `connect` and `addEndpoint` etc.
- It is **imperative** that you provide the `container` for an instance of jsPlumb. We no longer infer the container from the `offsetParent` of the first element to which an Endpoint is added. If you do not provide `container` an Error is thrown.
- `connector-pointer-events` not supported on Endpoint definitions. Use `cssClass` and CSS tricks.
- `labelStyle` is no longer supported. Use `cssClass` and CSS tricks.
- By default, every node is draggable. The `.draggable(someElement)` method no longer exists.
- The `LogEnabled` and `DoNotThrowErrors` defaults have been removed.
- It is imperative that you provide the `container` for an instance of jsPlumb. We no longer infer the container from the `offsetParent` of the
first element to which an endpoint is added.
- Paint styles for connectors dont support gradients anymore. You can use CSS for this.
- `manageElement` and `unmanageElement` events no longer fired by jsPlumb class. These were undocumented anyway, but we're calling it out
in case you have code that used them.
- Removed `overlays` default. Use `connectionOverlays` or `endpointOverlays` now: not all overlay types are supported by Endpoints, so having a common set of overlays doesnt make sense.
- The `radius` option is not supported on `PaintStyle` any longer. More generally, type specific values are not supported - `radius` only pertains to `Dot` endpoints, for instance. `width` and `height` from the Rectangle endpoint are also instance of this. Put type specific values on the endpoint spec itself, eg `endpoint:['Dot', { radius:10 }]`.
#### CSS classes
- The `jtk-endpoint-anchor` css class is not added to endpoints when the associated anchor did not declare a class. It is still
used when the anchor has declared a class (eg `jtk-endpoint-anchor-foo`), but otherwise it is not added. Without the anchor's class
suffix `jtk-endpoint-anchor` was just a shadow of `jtk-endpoint` - use `jtk-endpoint` instead.
- Managed elements do not have the `jtk-managed` class applied. They now have a `jtk-managed` attribute set on them. It is unlikely anyone was using this class but we include it here for completeness.
- Elements configured via `makeTarget` do not get assigned a `jtk-droppable` css class now. Instead, they are given a `jtk-target` attribute, as well as a`jtk-scope-**` attribute for every scope that is assigned.
#### Events
- The `manageElement` and `unmanageElement` events are no longer fired by the `JsPlumbInstance` class. These were undocumented anyway, but we're calling it out in case you have code that used them.
- Managed elements do not have the `jtk-managed` class applied. They now have a `jtk-managed` attribute set on them. It is unlikely anyone was using this
class but we include it here for completeness
- Added `drag:start`, `drag:move` and `drag:stop` events. These replace the `start`, `drag` and `stop` event handlers that used to be supported on individual `draggable(..)` method calls.
- All defaults converted to camelCase instead of having a leading capital, eg. "Anchors" -> "anchors", "ConnectionsDetachable" -> "connectionsDetachable". This brings
the defaults into line with the parameters used in method calls like `connect` and `addEndpoint` etc.
- Binding to `mouseover` and `mouseout` on Endpoints and Connections is not supported. You now should bind to these events on a jsplumb instance instead:
- The `LogEnabled` and `DoNotThrowErrors` defaults have been removed.
- endpointMouseOver
- endpointMouseOut
- connectionMouseOver
- connectionMouseOut
- `getWidth` and `getHeight` methods removed from jsPlumb instance.
#### Behaviour
- `updateClasses` method removed from jsPlumb. It was an attempt at keeping reflows to a minimum but was used only in one method, which is a method that was very rarely called.
- By default, every node is draggable. `.draggable(someElement)` no longer exists. You can make an element not draggable by setting a `jtk-not-draggable` attribute on it. It doesn't matter what the value of the attribute is, just its presence is all that is required.
- `setClass` method removed from jsPlumb.
- It is not possible to subclass Connection or Endpoint to provide your own implementations now.
- It is not possible to subclass Connection or Endpoint to provide your own implementations in 4.x.
- Elements configured via `makeTarget` do not get assigned a `jtk-droppable` css class now. Instead, they are given a `jtk-target` attribute, as well as a `jtk-scope-**` attribute
for every scope that is assigned.
- There is no `Image` endpoint in 4.x. You can achieve this via a 'Blank' endpoint with a css class. Or if you find you cannot and you can't think of any alternative, we could possibly add a `Custom` endpoint type, with which you could achieve this.
- jsPlumbUtil is no longer a static member on the window.
```
##### Imports
### New Functionality
Note that currently we are not bundling jsPlumb with its dependencies. You need to include these yourself; this may or may not end up being
a permanent arrangement. `@jsplumb/katavorio` and `@jsplumb/mottle` are the dependencies, and they are declared by jsPlumb's `package.json`, so
they will be installed when jsPlumb is installed.
- `elementsDraggable` added to `Defaults`, with a default value of true.
These are the imports for the demonstration pages:
- Added `drag:start`, `drag:move` and `drag:stop` events to the `JsPlumbInstance` class. These replace the `start`, `drag` and `stop` event handlers that used to be supported on individual `draggable(..)` method calls.
```html
<script src="../../node_modules/@jsplumb/mottle/js/mottle.js"></script>
<script src="../../node_modules/@jsplumb/katavorio/src/katavorio.js"></script>
- The `Mottle` library, which used to be a separate project, has now been incorporated into jsPlumb. For convenience, we have exposed `Mottle` on the browser window, as some people do use standalone instances of Mottle from time to time.
- The `Katavorio` library, which used to be a separate project, has now been incorporated into jsPlumb. At present there is nothing exposed on the window as we did with Mottle, but there could be.
##### Imports
```
<script src="../../dist/js/jsplumb.js"></script>
```
The most likely future development is that these two packages will be pulled in to jsPlumb and rewritten as Typescript.
##### Reporting issues

@@ -84,7 +134,5 @@

[http://jsplumb.github.io/jsplumb/](http://jsplumb.github.io/jsplumb/)
[https://docs.jsplumbtoolkit.com/community/current/index.html](https://docs.jsplumbtoolkit.com/community/current/index.html)
## Changelog
Can be found at [http://jsplumb.github.io/jsplumb/changelog.html](http://jsplumb.github.io/jsplumb/changelog.html)

@@ -94,42 +142,16 @@ ## Installation

```
npm install jsplumb
npm install @jsplumb/community
```
NOTE: jsPlumb does not follow strict semantic versioning. It is not at all recommended that you use wildcards when
specifying a dependency on jsPlumb. The given command will install jsPlumb version using a caret for wildcard, eg `^2.9.0` - you
might want to take off the caret.
NOTE: jsPlumb does not follow strict semantic versioning. It is not at all recommended that you use wildcards when specifying a dependency on jsPlumb. The given command will install jsPlumb version using a caret for wildcard, eg `^2.9.0` - you might want to take off the caret.
jsPlumb does not follow strict semantic versioning largely because of the stipulation that breaking changes must
result in the major version being bumped. A major version implies something fundamental has occurred. The bump from
1.7.10 to 2.0.0 in jsPlumb was caused by the removal of the VML renderer, meaning IE6 and IE8 were no longer supported. You may
say, a-ha! A breaking change! And you would be right; that was a breaking change. But a new major version might also occur
when a new capability is added that doesn't affect existing functionality. And not every breaking change constitutes a fundamental
change in the library itself. This note about semver was added to jsPlumb, for example, due to a discussion about how the `stop`
event behaviour in the underlying drag library - Katavorio - had changed. Semver would say that the major version should have
been bumped. But the change was not something fundamental. No capabilities had been added or removed...just some variables had been
shuffled around.
jsPlumb does not follow strict semantic versioning largely because of the stipulation that breaking changes must result in the major version being bumped. A major version implies something fundamental has occurred. The bump from 1.7.10 to 2.0.0 in jsPlumb was caused by the removal of the VML renderer, meaning IE6 and IE8 were no longer supported. You may say, a-ha! A breaking change! And you would be right; that was a breaking change. But a new major version might also occur when a new capability is added that doesn't affect existing functionality. And not every breaking change constitutes a fundamental change in the library itself. This note about semver was added to jsPlumb, for example, due to a discussion about how the `stop` event behaviour in the underlying drag library - Katavorio - had changed. Semver would say that the major version should have been bumped. But the change was not something fundamental. No capabilities had been added or removed...just some variables had been shuffled around.
Maybe you agree with this viewpoint. Maybe you don't.
We recommend including the `jsplumbtoolkit.css` file to begin with, as it provides some sane default values.
We package the following files:
```javascript
"files": [
"index.d.ts",
"dist/js/jsplumb.js",
"dist/js/jsplumb.min.js",
"css/jsplumbtoolkit-defaults.css"
],
```
We recommend including the `jsplumbtoolkit-defaults.css` file to begin with, as it provides some sane default values.
## Typescript
An `index.d.ts` is included in the npm package.
## Issues
jsPlumb uses GitHub's issue tracker for enhancements and bugs. A losing battle was fought against the usage of Github
for questions; now it seems to be the default, and the Google group is no longer in use.
jsPlumb uses GitHub's issue tracker for enhancements and bugs. A losing battle was fought against the usage of Github for questions; now it seems to be the default, and the Google group is no longer in use.

@@ -142,14 +164,4 @@ ## Requirements

Links to various demonstrations can be found [here](https://jsplumbtoolkit.com).
Links to various Community Edition demonstrations can be found [here](https://community.jsplumbtoolkit.com).
## jsPlumb Helper Projects
- Drag+drop:
[https://github.com/jsplumb/katavorio](https://github.com/jsplumb/katavorio)
- Events:
[https://github.com/jsplumb/mottle](https://github.com/jsplumb/mottle)
## Tests

@@ -166,2 +178,2 @@ There is a full suite of unit tests checked in to the `test` and `dist/test` directories.

## License
All 1.x.x and 2.x.x versions of jsPlumb Community edition are dual-licensed under both MIT and GPLv2.
All 1.x.x, 2.x.x and 4.x.x versions of jsPlumb Community edition are dual-licensed under both MIT and GPLv2.

Sorry, the diff of this file is too big to display

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