From 2cbbbf3690c8984b73a235891bcfe11535157732 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Fri, 23 Sep 2022 21:35:17 -0400 Subject: [PATCH] chore: tests setup (#13) --- .cspell.json | 5 +-- README.md | 6 ++-- example/index.js | 4 +-- example/package-lock.json | 4 ++- example/webpack.config.js | 1 - karma.conf.cjs | 64 +++++++++++++++++++++++---------------- package-lock.json | 64 +++++++++++++++++++++++++++++++++++++-- package.json | 6 ++-- src/index.spec.ts | 9 ++++++ src/index.ts | 1 - src/rln.ts | 2 +- 11 files changed, 124 insertions(+), 42 deletions(-) create mode 100644 src/index.spec.ts diff --git a/.cspell.json b/.cspell.json index 8e0e3f9..11756ed 100644 --- a/.cspell.json +++ b/.cspell.json @@ -2,7 +2,7 @@ "version": "0.1", "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json", "language": "en", - "words": ["Waku"], + "words": ["Waku", "keypair", "merkle", "zkey", "circom", "zerokit"], "flagWords": [], "ignorePaths": [ "package.json", @@ -13,7 +13,8 @@ "build", "gen", "proto", - "*.spec.ts" + "*.spec.ts", + "src/resources.ts" ], "patterns": [ { diff --git a/README.md b/README.md index c6ded57..54dff3c 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ let memKeys = rlnInstance.generateMembershipKey(); #### Adding membership keys into merkle tree ```js -rlnInstance.inserMember(memKeys.IDCommitment); +rlnInstance.insertMember(memKeys.IDCommitment); ``` #### Generating a proof @@ -63,8 +63,8 @@ const proof = await rlnInstance.generateProof(uint8Msg, index, epoch, memKeys.ID ```js try { // verify the proof - const verifResult = rlnInstance.verifyProof(proof); - console.log("Is proof verified?", verifResult ? "yes" : "no"); + const verificationResult = rlnInstance.verifyProof(proof); + console.log("Is proof verified?", verificationResult ? "yes" : "no"); } catch (err) { console.log("Invalid proof") } diff --git a/example/index.js b/example/index.js index de3bc12..5643dee 100644 --- a/example/index.js +++ b/example/index.js @@ -10,11 +10,11 @@ rln.create().then(async rlnInstance => { for (let i = 0; i < 10; i++) { if (i == index) { // insert the current peer's pk - rlnInstance.inserMember(memKeys.IDCommitment); + rlnInstance.insertMember(memKeys.IDCommitment); } else { // create a new key pair let memKeys = rlnInstance.generateMembershipKey(); // TODO: handle error - rlnInstance.inserMember(memKeys.IDCommitment); + rlnInstance.insertMember(memKeys.IDCommitment); } } diff --git a/example/package-lock.json b/example/package-lock.json index e3a23c6..72925d8 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -19,7 +19,7 @@ }, "..": { "name": "@waku/rln", - "version": "0.0.4", + "version": "0.0.5", "license": "MIT OR Apache-2.0", "dependencies": { "@waku/zerokit-rln-wasm": "^0.0.1" @@ -49,6 +49,7 @@ "eslint-plugin-import": "^2.25.3", "eslint-plugin-prettier": "^4.0.0", "fast-check": "^2.14.0", + "file-loader": "^6.2.0", "gh-pages": "^3.2.3", "husky": "^7.0.4", "ignore-loader": "^0.1.2", @@ -70,6 +71,7 @@ "rollup-plugin-copy": "^3.4.0", "size-limit": "^8.0.0", "tail": "^2.2.0", + "ts-jest": "^29.0.1", "ts-loader": "^9.3.1", "ts-node": "^10.9.1", "typedoc": "^0.23.10", diff --git a/example/webpack.config.js b/example/webpack.config.js index a048f17..dbdf7bd 100644 --- a/example/webpack.config.js +++ b/example/webpack.config.js @@ -9,7 +9,6 @@ module.exports = { }, experiments: { asyncWebAssembly: true, - syncWebAssembly: true }, mode: "development", plugins: [ diff --git a/karma.conf.cjs b/karma.conf.cjs index 62bd148..893bfde 100644 --- a/karma.conf.cjs +++ b/karma.conf.cjs @@ -1,13 +1,32 @@ process.env.CHROME_BIN = require("puppeteer").executablePath(); -const webpack = require("webpack"); + +const os = require("os"); +const path = require("path"); +const ResolveTypeScriptPlugin = require("resolve-typescript-plugin"); + +const output = { + path: + path.join(os.tmpdir(), "_karma_webpack_") + + Math.floor(Math.random() * 1000000), +}; module.exports = function (config) { config.set({ frameworks: ["webpack", "mocha"], - files: ["src/**/!(node).spec.ts"], preprocessors: { - "src/**/!(node).spec.ts": ["webpack"], + "**/*.ts": ["webpack"], }, + + files: [ + "src/**/*.spec.ts", + "src/**/*.ts", + { + pattern: `${output.path}/**/*`, + watched: false, + included: false, + served: true, + }, + ], envPreprocessor: ["CI"], reporters: ["progress"], browsers: ["ChromeHeadless"], @@ -19,37 +38,30 @@ module.exports = function (config) { }, webpack: { mode: "production", + resolve: { + // Add `.ts` and `.tsx` as a resolvable extension. + extensions: [".ts", ".tsx", ".js"], + plugins: [new ResolveTypeScriptPlugin()], + }, module: { rules: [ { - test: /\.(js|tsx?)$/, - use: [ - { - loader: "ts-loader", - options: { configFile: "tsconfig.karma.json" }, - }, - ], - exclude: /(node_modules)|(node\.spec\.ts)/, + test: /\.wasm$/, + type: "asset/resource", }, { - test: /node\.spec\.ts$/, - use: "ignore-loader", + test: /\.(js|tsx?)$/, + loader: "ts-loader", + exclude: /node_modules|\.d\.ts$/, + options: { configFile: "tsconfig.karma.json" }, + }, + { + test: /\.d\.ts$/, + loader: "ignore-loader", }, ], }, - plugins: [ - new webpack.DefinePlugin({ - "process.env.CI": process.env.CI || false, - }), - new webpack.ProvidePlugin({ - process: "process/browser.js", - }), - ], - resolve: { - extensions: [".ts", ".js"], - }, - stats: { warnings: false }, - devtool: "inline-source-map", + output, }, }); }; diff --git a/package-lock.json b/package-lock.json index 0951fe1..a796756 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@waku/rln", - "version": "0.0.4", + "version": "0.0.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@waku/rln", - "version": "0.0.4", + "version": "0.0.5", "license": "MIT OR Apache-2.0", "dependencies": { "@waku/zerokit-rln-wasm": "^0.0.1" @@ -53,6 +53,7 @@ "prettier": "^2.1.1", "process": "^0.11.10", "puppeteer": "^13.0.1", + "resolve-typescript-plugin": "^1.2.0", "rollup": "^2.75.0", "rollup-plugin-copy": "^3.4.0", "size-limit": "^8.0.0", @@ -3621,6 +3622,20 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "dev": true, @@ -6492,6 +6507,27 @@ "node": ">=8" } }, + "node_modules/resolve-typescript-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/resolve-typescript-plugin/-/resolve-typescript-plugin-1.2.0.tgz", + "integrity": "sha512-f0tu3fDdKcSmbgpLDNBKiMYPPG7D19tYCnph9B7GIlMMIWnbiLjAqqPXZVeO3POQSNF7ZYK4Ox+Gmvo116ERWQ==", + "dev": true, + "dependencies": { + "tslib": "2.3.1" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/resolve-typescript-plugin/node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "node_modules/restore-cursor": { "version": "3.1.0", "dev": true, @@ -10630,6 +10666,13 @@ "version": "1.0.0", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "dev": true @@ -12438,6 +12481,23 @@ "global-dirs": "^0.1.1" } }, + "resolve-typescript-plugin": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/resolve-typescript-plugin/-/resolve-typescript-plugin-1.2.0.tgz", + "integrity": "sha512-f0tu3fDdKcSmbgpLDNBKiMYPPG7D19tYCnph9B7GIlMMIWnbiLjAqqPXZVeO3POQSNF7ZYK4Ox+Gmvo116ERWQ==", + "dev": true, + "requires": { + "tslib": "2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + } + } + }, "restore-cursor": { "version": "3.1.0", "dev": true, diff --git a/package.json b/package.json index b2ef488..8076818 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@waku/rln", - "version": "0.0.5", + "version": "0.0.6", "description": "Rate Limit Nullifier for js-waku", "types": "./dist/index.d.ts", "module": "./dist/index.js", @@ -34,8 +34,7 @@ "test:lint": "eslint src --ext .ts", "test:prettier": "prettier \"src/**/*.ts\" \"./*.json\" \"*.*js\" \".github/**/*.yml\" --list-different", "test:spelling": "cspell \"{*.md,.github/*.md,src/**/*.ts}\"", - "test:tsc": "tsc -p tsconfig.dev.json", - "test:node": "TS_NODE_PROJECT=./tsconfig.dev.json mocha", + "test:tsc": "tsc", "test:browser": "karma start karma.conf.cjs", "watch:build": "tsc -p tsconfig.json -w", "watch:test": "mocha --watch", @@ -94,6 +93,7 @@ "prettier": "^2.1.1", "process": "^0.11.10", "puppeteer": "^13.0.1", + "resolve-typescript-plugin": "^1.2.0", "rollup": "^2.75.0", "rollup-plugin-copy": "^3.4.0", "size-limit": "^8.0.0", diff --git a/src/index.spec.ts b/src/index.spec.ts new file mode 100644 index 0000000..ef4efd0 --- /dev/null +++ b/src/index.spec.ts @@ -0,0 +1,9 @@ +import * as rln from "./index"; + +describe("Waku Filter", () => { + it("test", async function () { + const rlnInstance = await rln.create(); + console.log(rlnInstance.generateMembershipKey()); + // TODO: write test + }); +}); diff --git a/src/index.ts b/src/index.ts index 4b8b1ea..3954160 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,6 @@ export async function create(): Promise { // asynchronously. This file does the single async import, so // that no one else needs to worry about it again. const rlnModule = await import("./rln.js"); - return await rlnModule.create(); } diff --git a/src/rln.ts b/src/rln.ts index b6893c1..fb73bf1 100644 --- a/src/rln.ts +++ b/src/rln.ts @@ -168,7 +168,7 @@ export class RLNInstance { return new MembershipKey(memKeys); } - inserMember(idCommitment: Uint8Array): void { + insertMember(idCommitment: Uint8Array): void { zerokitRLN.insertMember(this.zkRLN, idCommitment); }