diff --git a/.ignore b/.ignore deleted file mode 100644 index d263d2fa8297..000000000000 --- a/.ignore +++ /dev/null @@ -1,2 +0,0 @@ -/barretenberg/ts -/barretenberg/foundation \ No newline at end of file diff --git a/barretenberg/cpp/.rebuild_patterns b/barretenberg/cpp/.rebuild_patterns index 24dc32bd6de9..c5fea1fede51 100644 --- a/barretenberg/cpp/.rebuild_patterns +++ b/barretenberg/cpp/.rebuild_patterns @@ -1,4 +1,4 @@ -^barretenberg/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$ -^barretenberg/.*CMakeLists\\.txt$ -^barretenberg/.*Dockerfile.*$ +^barretenberg/cpp/.*\\.(cpp|cc|cxx|c\\+\\+|h|hpp|hxx|h\\+\\+|c|h|inl|inc|ipp|tpp|cmake)$ +^barretenberg/cpp/.*CMakeLists\\.txt$ +^barretenberg/cpp/.*Dockerfile.*$ ^barretenberg/cpp/scripts/ diff --git a/barretenberg/ts/.dockerignore b/barretenberg/ts/.dockerignore index 6a3231fc51c1..ab18ce85c3d0 100644 --- a/barretenberg/ts/.dockerignore +++ b/barretenberg/ts/.dockerignore @@ -4,4 +4,4 @@ node_modules Dockerfile .yarn !.yarn/releases -.tsbuildinfo \ No newline at end of file +.tsbuildinfo* \ No newline at end of file diff --git a/barretenberg/ts/Dockerfile b/barretenberg/ts/Dockerfile index 619a377532f2..faa17cca9070 100644 --- a/barretenberg/ts/Dockerfile +++ b/barretenberg/ts/Dockerfile @@ -10,5 +10,5 @@ COPY yarn.lock yarn.lock COPY .yarnrc.yml .yarnrc.yml RUN yarn --immutable COPY . . -RUN yarn formatting && yarn build:ts +RUN yarn formatting && SKIP_CPP_BUILD=1 yarn build CMD ["yarn", "test"] diff --git a/barretenberg/ts/README.md b/barretenberg/ts/README.md index ae92a04e90d3..2993b8c91322 100644 --- a/barretenberg/ts/README.md +++ b/barretenberg/ts/README.md @@ -104,15 +104,6 @@ in size) is loaded and keeps page load times responsive. const { Barretenberg, RawBuffer, Crs } = await import('@aztec/bb.js'); ``` -### CommonJS Usage - -The import syntax is slightly different in a CommonJS environment. - -```typescript -const { loadModule } = await import('@aztec/bb.js'); -const { Barretenberg, RawBuffer, Crs } = await loadModule(); -``` - ## Development Create a symlink to the root script `bb.js-dev` in your path. You can now run the current state of the code from diff --git a/barretenberg/ts/cjs-entry/index.cjs b/barretenberg/ts/cjs-entry/index.cjs deleted file mode 100644 index 1e87567d254c..000000000000 --- a/barretenberg/ts/cjs-entry/index.cjs +++ /dev/null @@ -1,10 +0,0 @@ -let loadedModule; - -async function loadModule() { - if (!loadedModule) { - loadedModule = await import('../dest/node/index.js'); - } - return loadedModule; -} - -module.exports = { loadModule }; diff --git a/barretenberg/ts/cjs-entry/index.d.ts b/barretenberg/ts/cjs-entry/index.d.ts deleted file mode 100644 index 405d72d5650b..000000000000 --- a/barretenberg/ts/cjs-entry/index.d.ts +++ /dev/null @@ -1 +0,0 @@ -export function loadModule(): Promise; diff --git a/barretenberg/ts/package.json b/barretenberg/ts/package.json index 97ac8ae39807..f00226ec369e 100644 --- a/barretenberg/ts/package.json +++ b/barretenberg/ts/package.json @@ -4,10 +4,10 @@ "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts", "license": "MIT", "type": "module", - "types": "./cjs-entry/index.d.ts", + "types": "./dest/node-cjs/index.d.ts", "exports": { ".": { - "require": "./cjs-entry/index.cjs", + "require": "./dest/node-cjs/index.js", "browser": "./dest/browser/index.js", "default": "./dest/node/index.js" } @@ -22,11 +22,12 @@ "README.md" ], "scripts": { - "clean": "rm -rf ./dest .tsbuildinfo", - "build": "yarn clean && yarn build:wasm && yarn build:ts", - "build:dev": "tsc -b --watch", - "build:wasm": "cd ../cpp && cmake --preset wasm-threads && cmake --build --preset wasm-threads && cmake --preset wasm && cmake --build --preset wasm && ./scripts/strip-wasm.sh", - "build:ts": "tsc -b && cp ./src/barretenberg-threads.wasm ./dest/node && webpack && chmod +x ./dest/node/main.js", + "clean": "rm -rf ./dest .tsbuildinfo .tsbuildinfo.cjs", + "build": "yarn clean && yarn build:wasm && yarn build:esm && yarn build:cjs && yarn build:browser", + "build:wasm": "./scripts/build_wasm.sh", + "build:esm": "tsc -b && chmod +x ./dest/node/main.js", + "build:cjs": "tsc -b tsconfig.cjs.json && ./scripts/cjs_postprocess.sh", + "build:browser": "webpack", "build:bindings": "cd .. && ./scripts/bindgen.sh", "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src", "formatting:fix": "prettier -w ./src", diff --git a/barretenberg/ts/scripts/build_wasm.sh b/barretenberg/ts/scripts/build_wasm.sh new file mode 100755 index 000000000000..340bbf99c7b3 --- /dev/null +++ b/barretenberg/ts/scripts/build_wasm.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -eu + +if [ -z "$SKIP_CPP_BUILD" ]; then + # Build the wasms and strip debug symbols. + cd ../cpp + cmake --preset wasm-threads && cmake --build --preset wasm-threads + cmake --preset wasm && cmake --build --preset wasm + ./scripts/strip-wasm.sh + cd ../ts +fi + +# Copy the wasm to its home in the bb.js dest folder. +# We only need the threads wasm, as node always uses threads. +# We need to take two copies for both esm and cjs builds. You can't use symlinks when publishing. +# This probably isn't a big deal however due to compression. +# When building the the browser bundle, both wasms are inlined directly. +mkdir -p ./dest/node/barretenberg_wasm +mkdir -p ./dest/node-cjs/barretenberg_wasm +cp ../cpp/build-wasm-threads/bin/barretenberg.wasm ./dest/node/barretenberg_wasm/barretenberg-threads.wasm +cp ../cpp/build-wasm-threads/bin/barretenberg.wasm ./dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm \ No newline at end of file diff --git a/barretenberg/ts/scripts/cjs_postprocess.sh b/barretenberg/ts/scripts/cjs_postprocess.sh new file mode 100755 index 000000000000..0c2d37565bfd --- /dev/null +++ b/barretenberg/ts/scripts/cjs_postprocess.sh @@ -0,0 +1,14 @@ +#!/bin/sh +cat >dest/node-cjs/package.json <