Socket
Socket
Sign inDemoInstall

@drauu/core

Package Overview
Dependencies
1
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.0 to 0.3.1

245

dist/index.global.js

@@ -0,36 +1,25 @@

"use strict";
(() => {
var __defProp = Object.defineProperty;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a2, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a2, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a2, prop, b[prop]);
}
return a2;
};
// ../../node_modules/.pnpm/nanoevents@6.0.1/node_modules/nanoevents/index.js
// ../../node_modules/.pnpm/nanoevents@7.0.1/node_modules/nanoevents/index.js
var createNanoEvents = () => ({
events: {},
emit(event, ...args) {
;
(this.events[event] || []).forEach((i) => i(...args));
let callbacks = this.events[event] || [];
for (let i = 0, length = callbacks.length; i < length; i++) {
callbacks[i](...args);
}
},
on(event, cb) {
;
(this.events[event] = this.events[event] || []).push(cb);
return () => this.events[event] = (this.events[event] || []).filter((i) => i !== cb);
var _a;
((_a = this.events[event]) == null ? void 0 : _a.push(cb)) || (this.events[event] = [cb]);
return () => {
var _a2;
this.events[event] = (_a2 = this.events[event]) == null ? void 0 : _a2.filter((i) => cb !== i);
};
}
});
// ../../node_modules/.pnpm/perfect-freehand@1.0.16/node_modules/perfect-freehand/dist/esm/index.js
function W(e, t, s, h = (b) => b) {
return e * h(0.5 - t * (0.5 - s));
// ../../node_modules/.pnpm/perfect-freehand@1.1.0/node_modules/perfect-freehand/dist/esm/index.js
function W(e, t, u, x = (g) => g) {
return e * x(0.5 - t * (0.5 - u));
}

@@ -46,3 +35,3 @@ function re(e) {

}
function f(e, t) {
function b(e, t) {
return [e[0] * t, e[1] * t];

@@ -53,3 +42,3 @@ }

}
function L(e) {
function R(e) {
return [e[1], -e[0]];

@@ -72,3 +61,3 @@ }

}
function G(e) {
function H(e) {
return le(e, fe(e));

@@ -79,124 +68,123 @@ }

}
function T(e, t, s) {
let h = Math.sin(s), b = Math.cos(s), v = e[0] - t[0], n = e[1] - t[1], g = v * b - n * h, E = v * h + n * b;
return [g + t[0], E + t[1]];
function L(e, t, u) {
let x = Math.sin(u), g = Math.cos(u), y = e[0] - t[0], n = e[1] - t[1], f = y * g - n * x, d = y * x + n * g;
return [f + t[0], d + t[1]];
}
function V(e, t, s) {
return l(e, f(a(t, e), s));
function V(e, t, u) {
return l(e, b(a(t, e), u));
}
function Z(e, t, s) {
return l(e, f(t, s));
function Z(e, t, u) {
return l(e, b(t, u));
}
var { min: _, PI: ge } = Math;
var { min: T, PI: ge } = Math;
var se = 0.275;
var j = ge + 1e-4;
function ie(e, t = {}) {
let { size: s = 16, smoothing: h = 0.5, thinning: b = 0.5, simulatePressure: v = true, easing: n = (r) => r, start: g = {}, end: E = {}, last: z = false } = t, { cap: d = true, taper: x = 0, easing: q = (r) => r * (2 - r) } = g, { cap: m = true, taper: c = 0, easing: M = (r) => --r * r * r + 1 } = E;
if (e.length === 0 || s <= 0)
let { size: u = 16, smoothing: x = 0.5, thinning: g = 0.5, simulatePressure: y = true, easing: n = (r) => r, start: f = {}, end: d = {}, last: _ = false } = t, { cap: S = true, easing: q = (r) => r * (2 - r) } = f, { cap: C = true, easing: p = (r) => --r * r * r + 1 } = d;
if (e.length === 0 || u <= 0)
return [];
let H = e[e.length - 1].runningLength, $ = Math.pow(s * h, 2), D2 = [], R = [], N = e.slice(0, 10).reduce((r, i) => {
let m = e[e.length - 1].runningLength, h = f.taper === false ? 0 : f.taper === true ? Math.max(u, m) : f.taper, z = d.taper === false ? 0 : d.taper === true ? Math.max(u, m) : d.taper, $ = Math.pow(u * x, 2), D2 = [], M = [], N = e.slice(0, 10).reduce((r, i) => {
let o = i.pressure;
if (v) {
let u = _(1, i.distance / s), J = _(1, 1 - u);
o = _(1, r + (J - r) * (u * se));
if (y) {
let s = T(1, i.distance / u), J = T(1, 1 - s);
o = T(1, r + (J - r) * (s * se));
}
return (r + o) / 2;
}, e[0].pressure), p = W(s, b, e[e.length - 1].pressure, n), U, B = e[0].vector, I = e[0].point, C = I, y = I, O = C;
}, e[0].pressure), c = W(u, g, e[e.length - 1].pressure, n), U, B = e[0].vector, I = e[0].point, F = I, O = I, E = F;
for (let r = 0; r < e.length; r++) {
let { pressure: i } = e[r], { point: o, vector: u, distance: J, runningLength: K } = e[r];
if (r < e.length - 1 && H - K < 3)
let { pressure: i } = e[r], { point: o, vector: s, distance: J, runningLength: K } = e[r];
if (r < e.length - 1 && m - K < 3)
continue;
if (b) {
if (v) {
let P = _(1, J / s), Q = _(1, 1 - P);
i = _(1, N + (Q - N) * (P * se));
if (g) {
if (y) {
let v = T(1, J / u), Q = T(1, 1 - v);
i = T(1, N + (Q - N) * (v * se));
}
p = W(s, b, i, n);
c = W(u, g, i, n);
} else
p = s / 2;
U === void 0 && (U = p);
let pe = K < x ? q(K / x) : 1, ae = H - K < c ? M((H - K) / c) : 1;
if (p = Math.max(0.01, p * Math.min(pe, ae)), r === e.length - 1) {
let P = f(L(u), p);
D2.push(a(o, P)), R.push(l(o, P));
c = u / 2;
U === void 0 && (U = c);
let ce = K < h ? q(K / h) : 1, ae = m - K < z ? p((m - K) / z) : 1;
if (c = Math.max(0.01, c * Math.min(ce, ae)), r === e.length - 1) {
let v = b(R(s), c);
D2.push(a(o, v)), M.push(l(o, v));
continue;
}
let A = e[r + 1].vector, ee = ne(u, A);
let A = e[r + 1].vector, ee = ne(s, A);
if (ee < 0) {
let P = f(L(B), p);
for (let Q = 1 / 13, w = 0; w <= 1; w += Q)
y = T(a(o, P), o, j * w), D2.push(y), O = T(l(o, P), o, j * -w), R.push(O);
I = y, C = O;
let v = b(R(B), c);
for (let Q = 1 / 13, G = 0; G <= 1; G += Q)
O = L(a(o, v), o, j * G), D2.push(O), E = L(l(o, v), o, j * -G), M.push(E);
I = O, F = E;
continue;
}
let te = f(L(V(A, u, ee)), p);
y = a(o, te), (r <= 1 || Y(I, y) > $) && (D2.push(y), I = y), O = l(o, te), (r <= 1 || Y(C, O) > $) && (R.push(O), C = O), N = i, B = u;
let te = b(R(V(A, s, ee)), c);
O = a(o, te), (r <= 1 || Y(I, O) > $) && (D2.push(O), I = O), E = l(o, te), (r <= 1 || Y(F, E) > $) && (M.push(E), F = E), N = i, B = s;
}
let S = e[0].point.slice(0, 2), k = e.length > 1 ? e[e.length - 1].point.slice(0, 2) : l(e[0].point, [1, 1]), X = [], F = [];
let k = e[0].point.slice(0, 2), P = e.length > 1 ? e[e.length - 1].point.slice(0, 2) : l(e[0].point, [1, 1]), X = [], w = [];
if (e.length === 1) {
if (!(x || c) || z) {
let r = Z(S, G(L(a(S, k))), -(U || p)), i = [];
for (let o = 1 / 13, u = o; u <= 1; u += o)
i.push(T(r, S, j * 2 * u));
if (!(h || z) || _) {
let r = Z(k, H(R(a(k, P))), -(U || c)), i = [];
for (let o = 1 / 13, s = o; s <= 1; s += o)
i.push(L(r, k, j * 2 * s));
return i;
}
} else {
if (!(x || c && e.length === 1))
if (d)
if (!(h || z && e.length === 1))
if (S)
for (let i = 1 / 13, o = i; o <= 1; o += i) {
let u = T(R[0], S, j * o);
X.push(u);
let s = L(M[0], k, j * o);
X.push(s);
}
else {
let i = a(D2[0], R[0]), o = f(i, 0.5), u = f(i, 0.51);
X.push(a(S, o), a(S, u), l(S, u), l(S, o));
let i = a(D2[0], M[0]), o = b(i, 0.5), s = b(i, 0.51);
X.push(a(k, o), a(k, s), l(k, s), l(k, o));
}
let r = L(re(e[e.length - 1].vector));
if (c || x && e.length === 1)
F.push(k);
else if (m) {
let i = Z(k, r, p);
for (let o = 1 / 29, u = o; u < 1; u += o)
F.push(T(i, k, j * 3 * u));
let r = R(re(e[e.length - 1].vector));
if (z || h && e.length === 1)
w.push(P);
else if (C) {
let i = Z(P, r, c);
for (let o = 1 / 29, s = o; s < 1; s += o)
w.push(L(i, P, j * 3 * s));
} else
F.push(l(k, f(r, p)), l(k, f(r, p * 0.99)), a(k, f(r, p * 0.99)), a(k, f(r, p)));
w.push(l(P, b(r, c)), l(P, b(r, c * 0.99)), a(P, b(r, c * 0.99)), a(P, b(r, c)));
}
return D2.concat(F, R.reverse(), X);
return D2.concat(w, M.reverse(), X);
}
function ce(e, t = {}) {
var q;
let { streamline: s = 0.5, size: h = 16, last: b = false } = t;
function me(e, t = {}) {
var C;
let { streamline: u = 0.5, size: x = 16, last: g = false } = t;
if (e.length === 0)
return [];
let v = 0.15 + (1 - s) * 0.85, n = Array.isArray(e[0]) ? e : e.map(({ x: m, y: c, pressure: M = 0.5 }) => [m, c, M]);
let y = 0.15 + (1 - u) * 0.85, n = Array.isArray(e[0]) ? e : e.map(({ x: p, y: m, pressure: h = 0.5 }) => [p, m, h]);
if (n.length === 2) {
let m = n[1];
let p = n[1];
n = n.slice(0, -1);
for (let c = 1; c < 5; c++)
n.push(V(n[0], m, c / 4));
for (let m = 1; m < 5; m++)
n.push(V(n[0], p, m / 4));
}
n.length === 1 && (n = [...n, [...l(n[0], [1, 1]), ...n[0].slice(2)]]);
let g = [{ point: [n[0][0], n[0][1]], pressure: n[0][2] >= 0 ? n[0][2] : 0.25, vector: [1, 1], distance: 0, runningLength: 0 }], E = false, z = 0, d = g[0], x = n.length - 1;
for (let m = 1; m < n.length; m++) {
let c = b && m === x ? n[m].slice(0, 2) : V(d.point, n[m], v);
if (oe(d.point, c))
let f = [{ point: [n[0][0], n[0][1]], pressure: n[0][2] >= 0 ? n[0][2] : 0.25, vector: [1, 1], distance: 0, runningLength: 0 }], d = false, _ = 0, S = f[0], q = n.length - 1;
for (let p = 1; p < n.length; p++) {
let m = g && p === q ? n[p].slice(0, 2) : V(S.point, n[p], y);
if (oe(S.point, m))
continue;
let M = ue(c, d.point);
if (z += M, m < x && !E) {
if (z < h)
let h = ue(m, S.point);
if (_ += h, p < q && !d) {
if (_ < x)
continue;
E = true;
d = true;
}
d = { point: c, pressure: n[m][2] >= 0 ? n[m][2] : 0.5, vector: G(a(d.point, c)), distance: M, runningLength: z }, g.push(d);
S = { point: m, pressure: n[p][2] >= 0 ? n[p][2] : 0.5, vector: H(a(S.point, m)), distance: h, runningLength: _ }, f.push(S);
}
return g[0].vector = ((q = g[1]) == null ? void 0 : q.vector) || [0, 0], g;
return f[0].vector = ((C = f[1]) == null ? void 0 : C.vector) || [0, 0], f;
}
function me(e, t = {}) {
return ie(ce(e, t), t);
function pe(e, t = {}) {
return ie(me(e, t), t);
}
var Te = me;
// src/utils/index.ts
function numSort(a2, b) {
return a2 - b;
function numSort(a2, b2) {
return a2 - b2;
}

@@ -253,5 +241,5 @@ function getSymbol(a2) {

getMousePosition(event) {
var _a, _b;
var _a;
const el = this.drauu.el;
const scale = (_a = this.drauu.options.coordinateScale) != null ? _a : 1;
const scale = this.drauu.options.coordinateScale ?? 1;
if (this.drauu.options.coordinateTransform === false) {

@@ -268,3 +256,3 @@ const rect = this.drauu.el.getBoundingClientRect();

point.y = event.clientY;
const loc = point.matrixTransform((_b = el.getScreenCTM()) == null ? void 0 : _b.inverse());
const loc = point.matrixTransform((_a = el.getScreenCTM()) == null ? void 0 : _a.inverse());
return {

@@ -278,6 +266,8 @@ x: loc.x * scale,

createElement(name, overrides) {
var _a;
const el = document.createElementNS("http://www.w3.org/2000/svg", name);
const brush = overrides ? __spreadValues(__spreadValues({}, this.brush), overrides) : this.brush;
el.setAttribute("fill", (_a = brush.fill) != null ? _a : "transparent");
const brush = overrides ? {
...this.brush,
...overrides
} : this.brush;
el.setAttribute("fill", brush.fill ?? "transparent");
el.setAttribute("stroke", brush.color);

@@ -341,3 +331,3 @@ el.setAttribute("stroke-width", brush.size.toString());

getSvgData(points) {
const stroke = Te(points, __spreadValues({
const stroke = pe(points, {
size: this.brush.size * 2,

@@ -351,11 +341,15 @@ thinning: 0.9,

taper: 5
}
}, this.brush.stylusOptions));
},
...this.brush.stylusOptions
});
if (!stroke.length)
return "";
const d = stroke.reduce((acc, [x0, y0], i, arr) => {
const [x1, y1] = arr[(i + 1) % arr.length];
acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2);
return acc;
}, ["M", ...stroke[0], "Q"]);
const d = stroke.reduce(
(acc, [x0, y0], i, arr) => {
const [x1, y1] = arr[(i + 1) % arr.length];
acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2);
return acc;
},
["M", ...stroke[0], "Q"]
);
d.push("Z");

@@ -654,5 +648,5 @@ return d.map((i) => typeof i === "number" ? i.toFixed(2) : i).join(" ");

};
function line(a2, b) {
const lengthX = b.x - a2.x;
const lengthY = b.y - a2.y;
function line(a2, b2) {
const lengthX = b2.x - a2.x;
const lengthY = b2.y - a2.y;
return {

@@ -680,3 +674,6 @@ length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),

function toSvgData(points) {
return points.reduce((acc, point, i, a2) => i === 0 ? `M ${point.x.toFixed(D)},${point.y.toFixed(D)}` : `${acc} ${bezierCommand(point, i, a2)}`, "");
return points.reduce(
(acc, point, i, a2) => i === 0 ? `M ${point.x.toFixed(D)},${point.y.toFixed(D)}` : `${acc} ${bezierCommand(point, i, a2)}`,
""
);
}

@@ -683,0 +680,0 @@

@@ -1,22 +0,6 @@

var __create = Object.create;
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {

@@ -26,18 +10,11 @@ for (var name in all)

};
var __reExport = (target, module2, copyDefault, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return target;
return to;
};
var __toESM = (module2, isNodeMode) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __toCommonJS = /* @__PURE__ */ ((cache) => {
return (module2, temp) => {
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
};
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

@@ -50,14 +27,20 @@ // src/index.ts

});
module.exports = __toCommonJS(src_exports);
// ../../node_modules/.pnpm/nanoevents@6.0.1/node_modules/nanoevents/index.js
// ../../node_modules/.pnpm/nanoevents@7.0.1/node_modules/nanoevents/index.js
var createNanoEvents = () => ({
events: {},
emit(event, ...args) {
;
(this.events[event] || []).forEach((i) => i(...args));
let callbacks = this.events[event] || [];
for (let i = 0, length = callbacks.length; i < length; i++) {
callbacks[i](...args);
}
},
on(event, cb) {
;
(this.events[event] = this.events[event] || []).push(cb);
return () => this.events[event] = (this.events[event] || []).filter((i) => i !== cb);
var _a;
((_a = this.events[event]) == null ? void 0 : _a.push(cb)) || (this.events[event] = [cb]);
return () => {
var _a2;
this.events[event] = (_a2 = this.events[event]) == null ? void 0 : _a2.filter((i) => cb !== i);
};
}

@@ -67,3 +50,3 @@ });

// src/models/stylus.ts
var import_perfect_freehand = __toESM(require("perfect-freehand"));
var import_perfect_freehand = require("perfect-freehand");

@@ -124,5 +107,5 @@ // src/utils/index.ts

getMousePosition(event) {
var _a, _b;
var _a;
const el = this.drauu.el;
const scale = (_a = this.drauu.options.coordinateScale) != null ? _a : 1;
const scale = this.drauu.options.coordinateScale ?? 1;
if (this.drauu.options.coordinateTransform === false) {

@@ -139,3 +122,3 @@ const rect = this.drauu.el.getBoundingClientRect();

point.y = event.clientY;
const loc = point.matrixTransform((_b = el.getScreenCTM()) == null ? void 0 : _b.inverse());
const loc = point.matrixTransform((_a = el.getScreenCTM()) == null ? void 0 : _a.inverse());
return {

@@ -149,6 +132,8 @@ x: loc.x * scale,

createElement(name, overrides) {
var _a;
const el = document.createElementNS("http://www.w3.org/2000/svg", name);
const brush = overrides ? __spreadValues(__spreadValues({}, this.brush), overrides) : this.brush;
el.setAttribute("fill", (_a = brush.fill) != null ? _a : "transparent");
const brush = overrides ? {
...this.brush,
...overrides
} : this.brush;
el.setAttribute("fill", brush.fill ?? "transparent");
el.setAttribute("stroke", brush.color);

@@ -212,3 +197,3 @@ el.setAttribute("stroke-width", brush.size.toString());

getSvgData(points) {
const stroke = (0, import_perfect_freehand.default)(points, __spreadValues({
const stroke = (0, import_perfect_freehand.getStroke)(points, {
size: this.brush.size * 2,

@@ -222,11 +207,15 @@ thinning: 0.9,

taper: 5
}
}, this.brush.stylusOptions));
},
...this.brush.stylusOptions
});
if (!stroke.length)
return "";
const d = stroke.reduce((acc, [x0, y0], i, arr) => {
const [x1, y1] = arr[(i + 1) % arr.length];
acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2);
return acc;
}, ["M", ...stroke[0], "Q"]);
const d = stroke.reduce(
(acc, [x0, y0], i, arr) => {
const [x1, y1] = arr[(i + 1) % arr.length];
acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2);
return acc;
},
["M", ...stroke[0], "Q"]
);
d.push("Z");

@@ -550,3 +539,6 @@ return d.map((i) => typeof i === "number" ? i.toFixed(2) : i).join(" ");

function toSvgData(points) {
return points.reduce((acc, point, i, a) => i === 0 ? `M ${point.x.toFixed(D)},${point.y.toFixed(D)}` : `${acc} ${bezierCommand(point, i, a)}`, "");
return points.reduce(
(acc, point, i, a) => i === 0 ? `M ${point.x.toFixed(D)},${point.y.toFixed(D)}` : `${acc} ${bezierCommand(point, i, a)}`,
""
);
}

@@ -865,3 +857,2 @@

}
module.exports = __toCommonJS(src_exports);
// Annotate the CommonJS export names for ESM import in node:

@@ -868,0 +859,0 @@ 0 && (module.exports = {

{
"name": "@drauu/core",
"version": "0.3.0",
"version": "0.3.1",
"keywords": [],
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/antfu/drauu.git"
},
"funding": "https://github.com/sponsors/antfu",
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
"files": [
"dist"
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"require": "./dist/index.js",
"import": "./dist/index.mjs"
}
},
"main": "dist/index.js",

@@ -9,5 +27,2 @@ "module": "dist/index.mjs",

"jsdelivr": "dist/index.global.js",
"funding": "https://github.com/sponsors/antfu",
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
"license": "MIT",
"bugs": {

@@ -17,12 +32,4 @@ "url": "https://github.com/antfu/drauu/issues"

"homepage": "https://github.com/antfu/drauu#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/antfu/drauu.git"
},
"keywords": [],
"files": [
"dist"
],
"dependencies": {
"perfect-freehand": "^1.0.16"
"perfect-freehand": "^1.1.0"
},

@@ -29,0 +36,0 @@ "scripts": {

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc