verkle-cryptography-wasm
Advanced tools
Comparing version 0.3.0 to 0.3.1
@@ -1,3 +0,3 @@ | ||
import { Commitment, Scalar } from './verkleFFIBindings'; | ||
export declare const loadVerkleCrypto: () => Promise<{ | ||
export declare const loadVerkleCrypto: () => Promise<VerkleCrypto>; | ||
export interface VerkleCrypto { | ||
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array; | ||
@@ -7,4 +7,5 @@ getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array; | ||
zeroCommitment: Uint8Array; | ||
}>; | ||
export { Commitment, Scalar }; | ||
} | ||
export type Scalar = Uint8Array; | ||
export type Commitment = Uint8Array; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -8,3 +8,3 @@ "use strict"; | ||
exports.loadVerkleCrypto = void 0; | ||
var _verkleFFIBindings = require("./verkleFFIBindings"); | ||
var _index = require("./verkleFFIBindings/index.js"); | ||
var _rust_verkle_wasm = require("./wasm/rust_verkle_wasm.js"); | ||
@@ -21,15 +21,15 @@ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } | ||
_context.next = 2; | ||
return (0, _verkleFFIBindings.initVerkleWasm)(); | ||
return (0, _index.initVerkleWasm)(); | ||
case 2: | ||
verkleFFI = new _rust_verkle_wasm.Context(); | ||
getTreeKey = function getTreeKey(address, treeIndex, subIndex) { | ||
return (0, _verkleFFIBindings.getTreeKey)(verkleFFI, address, treeIndex, subIndex); | ||
return (0, _index.getTreeKey)(verkleFFI, address, treeIndex, subIndex); | ||
}; | ||
getTreeKeyHash = function getTreeKeyHash(address, treeIndexLE) { | ||
return (0, _verkleFFIBindings.getTreeKeyHash)(verkleFFI, address, treeIndexLE); | ||
return (0, _index.getTreeKeyHash)(verkleFFI, address, treeIndexLE); | ||
}; | ||
updateCommitment = function updateCommitment(commitment, commitmentIndex, oldScalarValue, newScalarValue) { | ||
return (0, _verkleFFIBindings.updateCommitment)(verkleFFI, commitment, commitmentIndex, oldScalarValue, newScalarValue); | ||
return (0, _index.updateCommitment)(verkleFFI, commitment, commitmentIndex, oldScalarValue, newScalarValue); | ||
}; | ||
zeroCommitment = (0, _verkleFFIBindings.zeroCommitment)(); | ||
zeroCommitment = (0, _index.zeroCommitment)(); | ||
return _context.abrupt("return", { | ||
@@ -36,0 +36,0 @@ getTreeKey: getTreeKey, |
import { initVerkleWasm, zeroCommitment } from '../wasm/rust_verkle_wasm.js'; | ||
import { getTreeKey, getTreeKeyHash, updateCommitment } from './verkleFFI.js'; | ||
type Scalar = Uint8Array; | ||
type Commitment = Uint8Array; | ||
export { Scalar, Commitment, initVerkleWasm, getTreeKey, getTreeKeyHash, updateCommitment, zeroCommitment, }; | ||
export { initVerkleWasm, getTreeKey, getTreeKeyHash, updateCommitment, zeroCommitment, }; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -550,3 +550,3 @@ "use strict"; | ||
instance = _context.sent; | ||
__wbg_finalize_init(instance, module); | ||
__wbg_finalize_init(instance); | ||
case 11: | ||
@@ -553,0 +553,0 @@ case "end": |
@@ -1,3 +0,3 @@ | ||
import { Commitment, Scalar } from './verkleFFIBindings'; | ||
export declare const loadVerkleCrypto: () => Promise<{ | ||
export declare const loadVerkleCrypto: () => Promise<VerkleCrypto>; | ||
export interface VerkleCrypto { | ||
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array; | ||
@@ -7,4 +7,5 @@ getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array; | ||
zeroCommitment: Uint8Array; | ||
}>; | ||
export { Commitment, Scalar }; | ||
} | ||
export type Scalar = Uint8Array; | ||
export type Commitment = Uint8Array; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -1,2 +0,2 @@ | ||
import { initVerkleWasm, getTreeKey as getTreeKeyBase, getTreeKeyHash as getTreeKeyHashBase, updateCommitment as updateCommitmentBase, zeroCommitment as zeroCommitmentBase, } from './verkleFFIBindings'; | ||
import { initVerkleWasm, getTreeKey as getTreeKeyBase, getTreeKeyHash as getTreeKeyHashBase, updateCommitment as updateCommitmentBase, zeroCommitment as zeroCommitmentBase, } from './verkleFFIBindings/index.js'; | ||
import { Context as VerkleFFI } from './wasm/rust_verkle_wasm.js'; | ||
@@ -3,0 +3,0 @@ export const loadVerkleCrypto = async () => { |
import { initVerkleWasm, zeroCommitment } from '../wasm/rust_verkle_wasm.js'; | ||
import { getTreeKey, getTreeKeyHash, updateCommitment } from './verkleFFI.js'; | ||
type Scalar = Uint8Array; | ||
type Commitment = Uint8Array; | ||
export { Scalar, Commitment, initVerkleWasm, getTreeKey, getTreeKeyHash, updateCommitment, zeroCommitment, }; | ||
export { initVerkleWasm, getTreeKey, getTreeKeyHash, updateCommitment, zeroCommitment, }; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -467,3 +467,3 @@ let wasm; | ||
) | ||
__wbg_finalize_init(instance, module); | ||
__wbg_finalize_init(instance); | ||
} |
{ | ||
"name": "verkle-cryptography-wasm", | ||
"version": "0.3.0", | ||
"version": "0.3.1", | ||
"description": "Verkle Trie Crytography WASM/TypeScript Bindings", | ||
@@ -42,3 +42,5 @@ "keywords": [ | ||
"lint:fix": "eslint --fix --config ./.eslintrc.js . --ext .js,.jsx,.ts,.tsx", | ||
"prepare": "npm run build", | ||
"test": "npx vitest run", | ||
"test:browser": "npx vitest run --config=vitest.config.browser.ts --browser.name=webkit --browser.provider=playwright --browser.headless", | ||
"wasmToB64": "node ./scripts/wasmToB64.js" | ||
@@ -53,2 +55,3 @@ }, | ||
"@typescript-eslint/parser": "^6.7.3", | ||
"@vitest/browser": "^1.4.0", | ||
"babel-plugin-transform-import-meta": "^2.2.1", | ||
@@ -60,5 +63,8 @@ "eslint": "^8.50.0", | ||
"eslint-plugin-simple-import-sort": "7.0.0", | ||
"eventemitter3": "^5.0.1", | ||
"playwright": "^1.42.1", | ||
"prettier": "3.0.3", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^5.0.4", | ||
"vite-plugin-wasm": "^3.3.0", | ||
"vitest": "^1.2.2" | ||
@@ -65,0 +71,0 @@ }, |
@@ -13,4 +13,2 @@ # Verkle Cryptography (WASM/TypeScript) | ||
[ Not yet available ] | ||
``` | ||
@@ -17,0 +15,0 @@ npm i verkle-cryptography-wasm |
import { | ||
Commitment, | ||
Scalar, | ||
initVerkleWasm, | ||
@@ -9,6 +7,6 @@ getTreeKey as getTreeKeyBase, | ||
zeroCommitment as zeroCommitmentBase, | ||
} from './verkleFFIBindings' | ||
} from './verkleFFIBindings/index.js' | ||
import { Context as VerkleFFI } from './wasm/rust_verkle_wasm.js' | ||
export const loadVerkleCrypto = async () => { | ||
export const loadVerkleCrypto = async (): Promise<VerkleCrypto> => { | ||
await initVerkleWasm() | ||
@@ -42,2 +40,19 @@ | ||
export { Commitment, Scalar } | ||
export interface VerkleCrypto { | ||
getTreeKey: (address: Uint8Array, treeIndex: Uint8Array, subIndex: number) => Uint8Array | ||
getTreeKeyHash: (address: Uint8Array, treeIndexLE: Uint8Array) => Uint8Array | ||
updateCommitment: ( | ||
commitment: Uint8Array, | ||
commitmentIndex: number, | ||
oldScalarValue: Uint8Array, | ||
newScalarValue: Uint8Array | ||
) => Commitment | ||
zeroCommitment: Uint8Array | ||
} | ||
// This is a 32 byte serialized field element | ||
export type Scalar = Uint8Array | ||
// This is a 64 byte serialized point. | ||
// It is 64 bytes because the point is serialized in uncompressed format. | ||
export type Commitment = Uint8Array |
import { bytesToHex } from '@ethereumjs/util' | ||
import { beforeAll, describe, expect, test } from 'vitest' | ||
import { loadVerkleCrypto } from '../index.js' | ||
import { VerkleCrypto, loadVerkleCrypto } from '../index.js' | ||
import { Context as VerkleFFI } from '../wasm/rust_verkle_wasm.js' | ||
@@ -9,3 +9,3 @@ | ||
let ffi: VerkleFFI | ||
let verkleCrypto: Awaited<ReturnType<typeof loadVerkleCrypto>> | ||
let verkleCrypto: VerkleCrypto | ||
beforeAll(async () => { | ||
@@ -12,0 +12,0 @@ verkleCrypto = await loadVerkleCrypto() |
@@ -5,12 +5,3 @@ import { initVerkleWasm, zeroCommitment } from '../wasm/rust_verkle_wasm.js' | ||
// This is a 32 byte serialized field element | ||
type Scalar = Uint8Array | ||
// This is a 64 byte serialized point. | ||
// It is 64 bytes because the point is serialized in uncompressed format. | ||
type Commitment = Uint8Array | ||
export { | ||
Scalar, | ||
Commitment, | ||
initVerkleWasm, | ||
@@ -17,0 +8,0 @@ getTreeKey, |
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 too big to display
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 too big to display
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
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
849051
20
3533
55