From e4a8b90a5e7c57dad153ab105c2cdd4ca6e84f2f Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:27:25 +0000 Subject: [PATCH 01/19] move index.ts into a src directory --- tooling/noir_js/{ => src}/index.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tooling/noir_js/{ => src}/index.ts (100%) diff --git a/tooling/noir_js/index.ts b/tooling/noir_js/src/index.ts similarity index 100% rename from tooling/noir_js/index.ts rename to tooling/noir_js/src/index.ts From fd38aee0cefcd61f2084b21fffc9ea9ddbdd22aa Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:30:20 +0000 Subject: [PATCH 02/19] build noirc_abi before building noir_js (seems yarn install does not build these automatically) --- .github/workflows/noir-js.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index accdc720942..c3c50e021f9 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -14,6 +14,9 @@ jobs: - name: Install dependencies run: yarn install --immutable + - name: Build noirc_abi + run: yarn workspace @noir-lang/noirc_abi build + - name: Build noir_js run: yarn workspace @noir-lang/noir_js build From de53257d89d45637b1b460aa21de2ee694b62b57 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:31:09 +0000 Subject: [PATCH 03/19] add typescript to devDep and add a build script --- tooling/noir_js/package.json | 12 ++++++++++++ yarn.lock | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tooling/noir_js/package.json b/tooling/noir_js/package.json index 5303b0aacbd..e418b62b67c 100644 --- a/tooling/noir_js/package.json +++ b/tooling/noir_js/package.json @@ -9,5 +9,17 @@ "dependencies": { "@noir-lang/acvm_js": "0.26.1", "@noir-lang/noirc_abi": "workspace:*" + }, + "files": [ + "lib", + "package.json" + ], + "main" : "lib/index.js", + "types": "lib/index.d.ts", + "scripts": { + "build": "tsc" + }, + "devDependencies": { + "typescript": "^5.2.2" } } diff --git a/yarn.lock b/yarn.lock index abc84a8a5a7..29a07f2d1e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -415,6 +415,7 @@ __metadata: dependencies: "@noir-lang/acvm_js": 0.26.1 "@noir-lang/noirc_abi": "workspace:*" + typescript: ^5.2.2 languageName: unknown linkType: soft @@ -7085,7 +7086,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.0.4": +"typescript@npm:^5.0.4, typescript@npm:^5.2.2": version: 5.2.2 resolution: "typescript@npm:5.2.2" bin: @@ -7105,7 +7106,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5.0.4#~builtin": +"typescript@patch:typescript@^5.0.4#~builtin, typescript@patch:typescript@^5.2.2#~builtin": version: 5.2.2 resolution: "typescript@patch:typescript@npm%3A5.2.2#~builtin::version=5.2.2&hash=f3b441" bin: From 2e71188c861c3e3417659e50b9a00043ccefdb23 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:31:19 +0000 Subject: [PATCH 04/19] update gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index a4111fad7c0..e57f9bcb253 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,10 @@ compiler/source-resolver/node_modules compiler/source-resolver/lib compiler/source-resolver/lib-node +# Noir.js +tooling/noir_js/lib + + # Nix stuff **/outputs result From cef1e2c843ecc63650f9806fedf59a6c5c245bb4 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:31:27 +0000 Subject: [PATCH 05/19] add tsconfig --- tooling/noir_js/tsconfig.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tooling/noir_js/tsconfig.json diff --git a/tooling/noir_js/tsconfig.json b/tooling/noir_js/tsconfig.json new file mode 100644 index 00000000000..45c1f060a57 --- /dev/null +++ b/tooling/noir_js/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "esnext", + "declaration": true, + "emitDeclarationOnly": false, + "module": "ESNext", + "moduleResolution": "node", + "outDir": "./lib", + "esModuleInterop": true, + "strict": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} From 5c7f2ec3ef92da84b57d0aaa122b22cbda70c128 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 20:34:33 +0000 Subject: [PATCH 06/19] format --- tooling/noir_js/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/noir_js/package.json b/tooling/noir_js/package.json index e418b62b67c..5eeccc3c790 100644 --- a/tooling/noir_js/package.json +++ b/tooling/noir_js/package.json @@ -14,7 +14,7 @@ "lib", "package.json" ], - "main" : "lib/index.js", + "main": "lib/index.js", "types": "lib/index.d.ts", "scripts": { "build": "tsc" From 6f752389aacf77f1b2f36766cc964136ace9cdfc Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 22:41:17 +0000 Subject: [PATCH 07/19] try-extra dependencies --- .github/workflows/noir-js.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index c3c50e021f9..71312051fe3 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -14,6 +14,28 @@ jobs: - name: Install dependencies run: yarn install --immutable + - name: Install jq + run: sudo apt-get install jq + + - name: Install cargo and wasm-bindgen + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source $HOME/.cargo/env + cargo install wasm-bindgen-cli + + - name: Install toml2json + run: | + source $HOME/.cargo/env + cargo install toml2json + + - name: Install wasm-opt (from binaryen) + run: | + sudo apt-get install -y cmake + git clone https://github.com/WebAssembly/binaryen.git + cd binaryen + cmake . && make + sudo make install + - name: Build noirc_abi run: yarn workspace @noir-lang/noirc_abi build From bc7580037b1f3dc88c4aba7bdf8c1ced6c52a964 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 22:49:55 +0000 Subject: [PATCH 08/19] try npm for wasm-opt --- .github/workflows/noir-js.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index 71312051fe3..03b6f5fd33d 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -30,11 +30,7 @@ jobs: - name: Install wasm-opt (from binaryen) run: | - sudo apt-get install -y cmake - git clone https://github.com/WebAssembly/binaryen.git - cd binaryen - cmake . && make - sudo make install + npm i wasm-opt -g - name: Build noirc_abi run: yarn workspace @noir-lang/noirc_abi build From 8cd8a54fb807aa13469599b8e5f4b3eaece7b328 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 22:57:05 +0000 Subject: [PATCH 09/19] add wasm32 target to CI --- .github/workflows/noir-js.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index 03b6f5fd33d..9a01ed3089f 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -32,6 +32,10 @@ jobs: run: | npm i wasm-opt -g + - name: Install wasm32-unknown-unknwown target + run: | + rustup target add wasm32-unknown-unknown + - name: Build noirc_abi run: yarn workspace @noir-lang/noirc_abi build From 465bcec2b8eb8016d368001c53076f9ec5c94f9b Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 23:16:12 +0000 Subject: [PATCH 10/19] use specific version of wasm-bindgen-cli --- .github/workflows/noir-js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index 9a01ed3089f..380bb030c3b 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -21,7 +21,7 @@ jobs: run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source $HOME/.cargo/env - cargo install wasm-bindgen-cli + cargo install -f wasm-bindgen-cli --version 0.2.86 - name: Install toml2json run: | From d2f038c5cdbc2a2209f8eec7978cd29e81ff5511 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Thu, 14 Sep 2023 23:45:04 +0000 Subject: [PATCH 11/19] -x bash debug --- tooling/noirc_abi_wasm/installPhase.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tooling/noirc_abi_wasm/installPhase.sh b/tooling/noirc_abi_wasm/installPhase.sh index 17c86dac4d8..2ac0697a46e 100755 --- a/tooling/noirc_abi_wasm/installPhase.sh +++ b/tooling/noirc_abi_wasm/installPhase.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash + +set -x + export self_path=$(dirname "$(readlink -f "$0")") mkdir -p $out From c021211e69f859d3a1185921267cf76eec65f8ca Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 00:07:34 +0000 Subject: [PATCH 12/19] export out variable since it is being used in installPhase. Not sure why this works in nix --- tooling/noirc_abi_wasm/build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/noirc_abi_wasm/build.sh b/tooling/noirc_abi_wasm/build.sh index 22acdd06cba..8157e42c6de 100755 --- a/tooling/noirc_abi_wasm/build.sh +++ b/tooling/noirc_abi_wasm/build.sh @@ -38,7 +38,7 @@ rm -rf $self_path/result >/dev/null 2>&1 if [ -v out ]; then echo "Will install package to $out (defined outside installPhase.sh script)" else - out="$self_path/outputs/out" + export out="$self_path/outputs/out" echo "Will install package to $out" fi From afd082086121c29d3c56b7bd710237aa4852e4a5 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 00:32:17 +0000 Subject: [PATCH 13/19] set access to public --- .github/workflows/noir-js.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index 380bb030c3b..b6008ef69a0 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -44,6 +44,6 @@ jobs: - name: Publish to NPM working-directory: ./tooling/noir_js - run: npm publish + run: npm publish --access public env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }} \ No newline at end of file + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file From 4d77abc3531885e93952a6c7ad189ed13e838475 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 00:46:53 +0000 Subject: [PATCH 14/19] add authentication step --- .github/workflows/noir-js.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index b6008ef69a0..81f17c03074 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -42,6 +42,9 @@ jobs: - name: Build noir_js run: yarn workspace @noir-lang/noir_js build + - name: Authenticate with npm + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + - name: Publish to NPM working-directory: ./tooling/noir_js run: npm publish --access public From 2add9bc86741be8bd6133f808bc25283a84e492f Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 01:57:12 +0100 Subject: [PATCH 15/19] Update .github/workflows/noir-js.yml --- .github/workflows/noir-js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/noir-js.yml b/.github/workflows/noir-js.yml index 81f17c03074..e8b210feb06 100644 --- a/.github/workflows/noir-js.yml +++ b/.github/workflows/noir-js.yml @@ -28,7 +28,7 @@ jobs: source $HOME/.cargo/env cargo install toml2json - - name: Install wasm-opt (from binaryen) + - name: Install wasm-opt run: | npm i wasm-opt -g From 16ab8cd622b72edf885bae18606a37195fc79375 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 01:57:40 +0100 Subject: [PATCH 16/19] Update tooling/noirc_abi_wasm/installPhase.sh --- tooling/noirc_abi_wasm/installPhase.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/tooling/noirc_abi_wasm/installPhase.sh b/tooling/noirc_abi_wasm/installPhase.sh index 2ac0697a46e..17c86dac4d8 100755 --- a/tooling/noirc_abi_wasm/installPhase.sh +++ b/tooling/noirc_abi_wasm/installPhase.sh @@ -1,7 +1,4 @@ #!/usr/bin/env bash - -set -x - export self_path=$(dirname "$(readlink -f "$0")") mkdir -p $out From fb28ea26b746a6e3261e7b761cefd41a83b62479 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 01:58:00 +0100 Subject: [PATCH 17/19] Update .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index e57f9bcb253..e36a7458e7b 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,6 @@ compiler/source-resolver/lib-node # Noir.js tooling/noir_js/lib - # Nix stuff **/outputs result From be7628769e950004c0756673ef8f1ec078521e92 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 01:09:18 +0000 Subject: [PATCH 18/19] add noir-js to release-please config --- release-please-config.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release-please-config.json b/release-please-config.json index e06379f5ae7..01df7d1a7a5 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -22,6 +22,11 @@ "type": "json", "path": "tooling/noirc_abi_wasm/package.json", "jsonpath": "$.version" + }, + { + "type": "json", + "path": "tooling/noir_js/package.json", + "jsonpath": "$.version" } ] } From b5c2c724ed5393ca4fb7d09a230bcf9af9b495d4 Mon Sep 17 00:00:00 2001 From: kevaundray Date: Fri, 15 Sep 2023 01:15:02 +0000 Subject: [PATCH 19/19] publish noir.js --- .github/workflows/release.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3cecf25144..1be360068da 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -80,6 +80,19 @@ jobs: token: ${{ secrets.NOIR_REPO_TOKEN }} inputs: '{ "noir-ref": "${{ needs.release-please.outputs.tag-name }}" }' + publish-noir-js: + name: Publish noir_js package + needs: [release-please] + if: ${{ needs.release-please.outputs.tag-name }} + runs-on: ubuntu-latest + steps: + - name: Dispatch to noir_wasm + uses: benc-uk/workflow-dispatch@v1 + with: + workflow: noir-js.yml + ref: master + token: ${{ secrets.NOIR_REPO_TOKEN }} + dispatch-publish-abi-wasm: name: Dispatch to publish-abi_wasm workflow needs: [release-please]