mirror of
https://github.com/tutao/tutanota.git
synced 2025-10-19 07:53:47 +00:00
Add emscripten to tests pipeline
This commit is contained in:
parent
4dd743dfa0
commit
2734a794e0
10 changed files with 102 additions and 391 deletions
26
.github/workflows/test.yml
vendored
26
.github/workflows/test.yml
vendored
|
@ -23,13 +23,16 @@ jobs:
|
|||
repository-projects: none
|
||||
security-events: none
|
||||
statuses: none
|
||||
|
||||
env:
|
||||
emscripten_version: 3.1.59
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [ 20.11.1 ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 #v4.1.1
|
||||
with:
|
||||
submodules: 'true'
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 #v4.0.2
|
||||
with:
|
||||
|
@ -49,6 +52,27 @@ jobs:
|
|||
- name: lint, formatting
|
||||
run: |
|
||||
npm run check
|
||||
- name: get emscripten cached location
|
||||
run: |
|
||||
echo "emscripten_path=$(pwd)/emsdk" >> $GITHUB_ENV
|
||||
- name: cache emscripten
|
||||
id: cache-emscripten
|
||||
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
|
||||
with:
|
||||
path: ${{ env.emscripten_path }}
|
||||
key: emscripten-${{ env.emscripten_version }}
|
||||
- name: install emscripten
|
||||
if: steps.cache-emscripten.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
git clone --branch ${{ env.emscripten_version }} https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
source ./emsdk_env.sh
|
||||
- name: add emscripten to path
|
||||
run: |
|
||||
echo ${{ env.emscripten_path }}/upstream/bin >> $GITHUB_PATH
|
||||
echo ${{ env.emscripten_path }}/upstream/emscripten >> $GITHUB_PATH
|
||||
- name: run test in node
|
||||
run: |
|
||||
npm run build-packages
|
||||
|
|
|
@ -3,18 +3,26 @@
|
|||
# If you run out of memory (ARGON2_MEMORY_ALLOCATION_ERROR) and it's not being caused by a memory leak, try increasing this.
|
||||
TOTAL_MEMORY=48MB
|
||||
|
||||
.PHONY: build clean
|
||||
|
||||
CC=emcc
|
||||
WASM2JS=wasm2js
|
||||
ARGON2_DIR=phc-winner-argon2
|
||||
|
||||
SRC_FILES = \
|
||||
"${ARGON2_DIR}/src/argon2.c" \
|
||||
"${ARGON2_DIR}/src/core.c" \
|
||||
"${ARGON2_DIR}/src/ref.c" \
|
||||
"${ARGON2_DIR}/src/blake2/blake2b.c"
|
||||
|
||||
clean:
|
||||
rm -f $(WASM)
|
||||
build:
|
||||
|
||||
build: $(WASM)
|
||||
|
||||
$(WASM):
|
||||
${CC} \
|
||||
"${ARGON2_DIR}/src/argon2.c" \
|
||||
"${ARGON2_DIR}/src/core.c" \
|
||||
"${ARGON2_DIR}/src/ref.c" \
|
||||
"${ARGON2_DIR}/src/blake2/blake2b.c" \
|
||||
$(SRC_FILES) \
|
||||
-I "${ARGON2_DIR}/include" \
|
||||
-DARGON2_NO_THREADS \
|
||||
-flto \
|
||||
|
|
|
@ -3,10 +3,31 @@
|
|||
# If you run out of memory and it's not being caused by a memory leak, try increasing this.
|
||||
TOTAL_MEMORY=48MB
|
||||
|
||||
.PHONY: build include clean
|
||||
|
||||
CC=emcc
|
||||
WASM2JS=wasm2js
|
||||
TUTA_CRYPTO_LIB=../../packages/tutanota-crypto/lib/encryption/Liboqs
|
||||
|
||||
SRC_FILES = \
|
||||
"${LIBOQS_DIR}/src/kem/kem.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/kem.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/verify.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/indcpa.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/symmetric-shake.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/poly.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/polyvec.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/cbd.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/ntt.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/reduce.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/kem_kyber_1024.c" \
|
||||
"${LIBOQS_DIR}/src/common/pqclean_shims/fips202.c" \
|
||||
"${LIBOQS_DIR}/src/common/sha3/xkcp_sha3.c" \
|
||||
"${LIBOQS_DIR}/src/common/sha3/xkcp_low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c" \
|
||||
"${LIBOQS_DIR}/src/common/common.c" \
|
||||
"${TUTA_CRYPTO_LIB}/rand.c" \
|
||||
"${TUTA_CRYPTO_LIB}/exit.c"
|
||||
|
||||
LIBOQS_DIR=liboqs
|
||||
|
||||
clean:
|
||||
|
@ -25,25 +46,12 @@ include:
|
|||
cp "${LIBOQS_DIR}/src/kem/kem.h" include/oqs
|
||||
cp "${LIBOQS_DIR}/src/sig/sig.h" include/oqs
|
||||
touch include/oqs/oqsconfig.h
|
||||
build: include
|
||||
|
||||
build: $(WASM)
|
||||
|
||||
$(WASM): include
|
||||
${CC} \
|
||||
"${LIBOQS_DIR}/src/kem/kem.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/kem.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/verify.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/indcpa.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/symmetric-shake.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/poly.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/polyvec.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/cbd.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/ntt.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref/reduce.c" \
|
||||
"${LIBOQS_DIR}/src/kem/kyber/kem_kyber_1024.c" \
|
||||
"${LIBOQS_DIR}/src/common/pqclean_shims/fips202.c" \
|
||||
"${LIBOQS_DIR}/src/common/sha3/xkcp_sha3.c" \
|
||||
"${LIBOQS_DIR}/src/common/sha3/xkcp_low/KeccakP-1600/plain-64bits/KeccakP-1600-opt64.c" \
|
||||
"${LIBOQS_DIR}/src/common/common.c" \
|
||||
"${TUTA_CRYPTO_LIB}/rand.c" \
|
||||
"${TUTA_CRYPTO_LIB}/exit.c" \
|
||||
$(SRC_FILES) \
|
||||
-I "include" \
|
||||
-I "${LIBOQS_DIR}/src/kem/kyber/pqcrystals-kyber_kyber1024_ref" \
|
||||
-I "${LIBOQS_DIR}/src/common/pqclean_shims" \
|
||||
|
|
346
package-lock.json
generated
346
package-lock.json
generated
|
@ -65,7 +65,6 @@
|
|||
"electron-packager": "17.1.2",
|
||||
"esbuild": "0.17.15",
|
||||
"esbuild-plugin-alias-path": "2.0.2",
|
||||
"esbuild-plugin-wat": "^0.2.7",
|
||||
"eslint": "8.44.0",
|
||||
"eslint-config-prettier": "8.8.0",
|
||||
"eslint-plugin-unicorn": "47.0.0",
|
||||
|
@ -2587,6 +2586,10 @@
|
|||
"uuid": "^8.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@tutao/tuta-wasm-loader": {
|
||||
"resolved": "packages/tuta-wasm-loader",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@tutao/tutanota-crypto": {
|
||||
"resolved": "packages/tutanota-crypto",
|
||||
"link": true
|
||||
|
@ -3284,135 +3287,6 @@
|
|||
"url": "https://opencollective.com/typescript-eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-ast.tgz",
|
||||
"integrity": "sha512-cY3aYc1FhZdiE9wUn474Kw+l288fmWZsrfLv8fR8/5q3rcUlYO+YoHewwPDV3L0sJBh48qCKORA/+PqQG7rDYA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/helper-numbers": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-numbers.tgz",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-wasm-bytecode.tgz"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/floating-point-hex-parser": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-floating-point-hex-parser.tgz",
|
||||
"integrity": "sha512-z+6ExkIgehxOYG/AgXzBrkCJXAA9FmylpeE/85lYPounBo/eylW6NsvOkVcvzL5KETdKdxSbP0dCwxzAA5TFYA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-api-error": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-api-error.tgz",
|
||||
"integrity": "sha512-s47oO2lTrZ4YetGYyu7P4ueUZ3Zl+UfzGySLUFkPlxrV8amp4ySeiG0cS4zE54WYJ5ajG8x+kPcj+wmJmqjc8A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-code-frame": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-code-frame.tgz",
|
||||
"integrity": "sha512-aF2xsJ/LYz6ld4+zNDJ8AsynC3g0UiP1/u+HExz6bPFq55VP7RL0/v22tixuzlfpVkOOrtapt9DL+uFJYSZoZQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/wast-printer": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-wast-printer.tgz"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-fsm": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-fsm.tgz",
|
||||
"integrity": "sha512-7GIVVj64wX4PZxQ89p/GjcMgMQW68DikfzSg18neCJvHa6d8+M0G1oUeeu2L+VfKf3DH9qfGwDjjwHiyMeATAg==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-numbers": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-numbers.tgz",
|
||||
"integrity": "sha512-G9XJ1H90Po0cIEUgi3JlEg5x35k1WTjIhT1OSa6dWjP6Gu4H3unqUkdbnBHmgrdBx/TKuhm0fHarsIyGsneMSA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/floating-point-hex-parser": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-floating-point-hex-parser.tgz",
|
||||
"@webassemblyjs/helper-api-error": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-api-error.tgz",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-wasm-bytecode.tgz",
|
||||
"integrity": "sha512-XPAPtrVginHTCjk4taKHVZq7A1mC8zcLrNS3PTWzR84IX1RUdVI7XpAulr6F6bzBHrpRfm8JDq9PhLxCqEjgvA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/ieee754": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ieee754.tgz",
|
||||
"integrity": "sha512-xhKvCB2yysf6hg7LE52/0Q4DK9ydWkZIPwhQuGBtatSjwxU1oFd7JxQe+oqd8bmrYEd/W86Cq1FfA81IOpKTqA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@xtuc/ieee754": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/leb128": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-leb128.tgz",
|
||||
"integrity": "sha512-eXvoK2Q3MG9IXIRmVncysJDk2y7ImoztWbbRE/UytbBAFkw/c2qxTVty3gX2YhoRjAvv9/ifBqVkBZ8uh4/KSg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/utf8": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-utf8.tgz",
|
||||
"integrity": "sha512-K0M8V6g1+k4hSoP/XdPvAN2y7A2FYP5IThWUTRSif1KhbiggxF1jbiVoq7YLCucWA8MZs/f5p257KKqtSKXP1A==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-parser": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wasm-parser.tgz",
|
||||
"integrity": "sha512-/jo3/7k69tIuWln/HaHKhTfm3f3zISDmCXKVFeGPc3XMPLr11EY0p3zPyHG1SKHkWETdG5LJIhMaD+CAlfk6qg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ast.tgz",
|
||||
"@webassemblyjs/helper-api-error": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-api-error.tgz",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-wasm-bytecode.tgz",
|
||||
"@webassemblyjs/ieee754": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ieee754.tgz",
|
||||
"@webassemblyjs/leb128": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-leb128.tgz",
|
||||
"@webassemblyjs/utf8": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-utf8.tgz"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wast-parser": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wast-parser.tgz",
|
||||
"integrity": "sha512-DVGZfBnzYbqyHuvAKGiDc8gw0s0MITY2zrsPGvtx2XpaNJ1tHaeNpyOHs+GvN6/k7VsuEmNqrIzTpl6apw1oSQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ast.tgz",
|
||||
"@webassemblyjs/floating-point-hex-parser": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-floating-point-hex-parser.tgz",
|
||||
"@webassemblyjs/helper-api-error": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-api-error.tgz",
|
||||
"@webassemblyjs/helper-code-frame": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-code-frame.tgz",
|
||||
"@webassemblyjs/helper-fsm": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-helper-fsm.tgz",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wast-printer": {
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wast-printer.tgz",
|
||||
"integrity": "sha512-WFuDIpmoSfU0Du2GA/UGluMJLgKWALsGPcvkDFg3GDgxdDyva1hIW+8K6frSbv/YTwo50gBhW5dw4OB7cr6T5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "https://github.com/mitschabaude/webassemblyjs/releases/download/v1.11.1-3/webassemblyjs-ast.tgz",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@xmldom/xmldom": {
|
||||
"version": "0.8.10",
|
||||
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
|
||||
|
@ -3422,18 +3296,6 @@
|
|||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@xtuc/ieee754": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@xtuc/long": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
|
||||
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/7zip-bin": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz",
|
||||
|
@ -3934,23 +3796,6 @@
|
|||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/binaryen": {
|
||||
"version": "117.0.0",
|
||||
"resolved": "https://registry.npmjs.org/binaryen/-/binaryen-117.0.0.tgz",
|
||||
"integrity": "sha512-1D+O881OXxY737WPKfIgEscCn3vWGqTsd0m5nGKzvbtadVYw5pZ3eebineH/oV5c/rAW80Bojrsa6firSSIsUw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"wasm-as": "bin/wasm-as",
|
||||
"wasm-ctor-eval": "bin/wasm-ctor-eval",
|
||||
"wasm-dis": "bin/wasm-dis",
|
||||
"wasm-merge": "bin/wasm-merge",
|
||||
"wasm-metadce": "bin/wasm-metadce",
|
||||
"wasm-opt": "bin/wasm-opt",
|
||||
"wasm-reduce": "bin/wasm-reduce",
|
||||
"wasm-shell": "bin/wasm-shell",
|
||||
"wasm2js": "bin/wasm2js"
|
||||
}
|
||||
},
|
||||
"node_modules/bindings": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||
|
@ -5445,12 +5290,6 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-module-lexer": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz",
|
||||
"integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/es6-error": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
|
||||
|
@ -5522,26 +5361,6 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild-plugin-wat": {
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npmjs.org/esbuild-plugin-wat/-/esbuild-plugin-wat-0.2.7.tgz",
|
||||
"integrity": "sha512-Hb2BJHezVrKDu3zY/gAKdLa5j3l8ybgi7UDgxFHwpxjMRqmMgceBa1FIQLZovfh5bhbl1u0n4MMnhRS0yM1BNg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-ast.tgz",
|
||||
"@webassemblyjs/wasm-parser": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wasm-parser.tgz",
|
||||
"@webassemblyjs/wast-parser": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wast-parser.tgz",
|
||||
"@webassemblyjs/wast-printer": "https://github.com/mitschabaude/webassemblyjs/releases/latest/download/webassemblyjs-wast-printer.tgz",
|
||||
"binaryen": "latest",
|
||||
"find-cache-dir": "^3.3.1",
|
||||
"minimist": "^1.2.5",
|
||||
"parse-imports": "^1.1.0",
|
||||
"wabt": "latest"
|
||||
},
|
||||
"bin": {
|
||||
"watbundle": "bin/watbundle.js"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
|
||||
|
@ -6177,23 +5996,6 @@
|
|||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/find-cache-dir": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
|
||||
"integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"commondir": "^1.0.1",
|
||||
"make-dir": "^3.0.2",
|
||||
"pkg-dir": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/avajs/find-cache-dir?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/find-up": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
||||
|
@ -7776,30 +7578,6 @@
|
|||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"semver": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/make-dir/node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
},
|
||||
"node_modules/make-fetch-happen": {
|
||||
"version": "13.0.1",
|
||||
"resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz",
|
||||
|
@ -8866,19 +8644,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-imports": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-1.1.2.tgz",
|
||||
"integrity": "sha512-UgTSNWlBvx+f4nxVSH3fOyJPJKol8GkFuG8mN8q9FqtmJgwaEx0azPRlXXX0klNlRxoP2gwme00TPDSm6rm/IA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"es-module-lexer": "^1.3.0",
|
||||
"slashes": "^3.0.12"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12.17"
|
||||
}
|
||||
},
|
||||
"node_modules/parse-json": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
|
||||
|
@ -9027,79 +8792,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
|
||||
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"find-up": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir/node_modules/find-up": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
|
||||
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"locate-path": "^5.0.0",
|
||||
"path-exists": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir/node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"p-locate": "^4.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir/node_modules/p-limit": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
|
||||
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"p-try": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir/node_modules/p-locate": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
|
||||
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"p-limit": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/pkg-dir/node_modules/p-try": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
|
||||
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/plist": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz",
|
||||
|
@ -10162,12 +9854,6 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/slashes": {
|
||||
"version": "3.0.12",
|
||||
"resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz",
|
||||
"integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/slice-ansi": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
|
||||
|
@ -11025,23 +10711,6 @@
|
|||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/wabt": {
|
||||
"version": "1.0.32",
|
||||
"resolved": "https://registry.npmjs.org/wabt/-/wabt-1.0.32.tgz",
|
||||
"integrity": "sha512-1aHvkKaSrrl7qFtAbQ1RWVHLuJApRh7PtUdYvRtiUEKEhk0MOV0sTuz5cLF6jL5jPLRyifLbZcR65AEga/xBhQ==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"wasm-decompile": "bin/wasm-decompile",
|
||||
"wasm-interp": "bin/wasm-interp",
|
||||
"wasm-objdump": "bin/wasm-objdump",
|
||||
"wasm-opcodecnt": "bin/wasm-opcodecnt",
|
||||
"wasm-strip": "bin/wasm-strip",
|
||||
"wasm-validate": "bin/wasm-validate",
|
||||
"wasm2c": "bin/wasm2c",
|
||||
"wasm2wat": "bin/wasm2wat",
|
||||
"wat2wasm": "bin/wat2wasm"
|
||||
}
|
||||
},
|
||||
"node_modules/web-streams-polyfill": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
|
||||
|
@ -11605,6 +11274,13 @@
|
|||
"typescript": "5.3.3"
|
||||
}
|
||||
},
|
||||
"packages/tuta-wasm-loader": {
|
||||
"version": "227.240429.0",
|
||||
"license": "GPL-3.0",
|
||||
"devDependencies": {
|
||||
"typescript": "5.3.3"
|
||||
}
|
||||
},
|
||||
"packages/tutanota-crypto": {
|
||||
"name": "@tutao/tutanota-crypto",
|
||||
"version": "229.240521.0",
|
||||
|
|
|
@ -8,7 +8,9 @@ export interface WasmGeneratorOptions {
|
|||
}
|
||||
|
||||
export interface FallbackGeneratorOptions extends WasmGeneratorOptions {
|
||||
/** Optimization level for the JavaScript fallback */
|
||||
optimizationLevel: string
|
||||
/** Tool needed to transpile the wasm file to a JavaScript file */
|
||||
wasm2jsPath?: string
|
||||
}
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@ export interface Library {
|
|||
}
|
||||
|
||||
export interface LoadOptions {
|
||||
// Tool needed to transpile the wasm file to a JavaScript file
|
||||
/** Tool needed to transpile the wasm file to a JavaScript file */
|
||||
wasm2jsPath?: string
|
||||
// Output path for the webassembly files
|
||||
/** Output path for the webassembly files */
|
||||
output: string
|
||||
// List of webassembly files to be compiled and get fallback generated
|
||||
/** List of webassembly files to be compiled and get fallback generated */
|
||||
webassemblyLibraries: Library[]
|
||||
}
|
||||
|
||||
|
@ -126,13 +126,6 @@ function rollupWasmLoader(options: LoadOptions & { output: string }) {
|
|||
})
|
||||
}
|
||||
},
|
||||
async transform(source: string, id: string) {
|
||||
if (id.includes(".wasm")) {
|
||||
return source
|
||||
}
|
||||
|
||||
return null
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,30 +1,29 @@
|
|||
{
|
||||
"name" : "@tutao/tuta-wasm-loader",
|
||||
"version" : "227.240426.1",
|
||||
"license" : "GPL-3.0",
|
||||
"main" : "./dist/index.js",
|
||||
"types" : "./dist/index.d.ts",
|
||||
"keywords" : [
|
||||
"name": "@tutao/tuta-wasm-loader",
|
||||
"version": "227.240429.0",
|
||||
"license": "GPL-3.0",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"keywords": [
|
||||
"rollup-plugin"
|
||||
],
|
||||
"repository" : {
|
||||
"type" : "git",
|
||||
"url" : "https://github.com/tutao/tutanota.git",
|
||||
"directory" : "packages/tuta-wasm-loader"
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tutao/tutanota.git",
|
||||
"directory": "packages/tuta-wasm-loader"
|
||||
},
|
||||
"scripts" : {
|
||||
"prepublishOnly" : "npm run build",
|
||||
"build" : "tsc -b"
|
||||
"scripts": {
|
||||
"prepublishOnly": "npm run build",
|
||||
"build": "tsc -b"
|
||||
},
|
||||
"type" : "module",
|
||||
"files" : [
|
||||
"type": "module",
|
||||
"files": [
|
||||
"dist/*",
|
||||
"README.md",
|
||||
"LICENSE.txt",
|
||||
"tsconfig.json"
|
||||
],
|
||||
"devDependencies" : {
|
||||
"typescript" : "5.3.3",
|
||||
"@tutao/otest": "225.240417.0"
|
||||
"devDependencies": {
|
||||
"typescript": "5.3.3"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import fs from "node:fs"
|
|||
o.spec("Kyber", function () {
|
||||
// We need to generate the webassembly stuff during tests
|
||||
// since they're generated by esbuild during app build process
|
||||
// and packages tests run before the app build.
|
||||
o.before(async () => {
|
||||
const currentPath = process.cwd()
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ import { libDeps, preludeEnvPlugin, sqliteNativePlugin } from "../buildSrc/esbui
|
|||
import { buildPackages } from "../buildSrc/packageBuilderFunctions.js"
|
||||
import { domainConfigs } from "../buildSrc/DomainConfigs.js"
|
||||
import { sh } from "../buildSrc/sh.js"
|
||||
import { esbuildWasmLoader } from "@tutao/tuta-wasm-loader"
|
||||
|
||||
export async function runTestBuild({ clean, fast = false }) {
|
||||
if (clean) {
|
||||
|
@ -38,6 +37,7 @@ export async function runTestBuild({ clean, fast = false }) {
|
|||
await createUnitTestHtml(localEnv)
|
||||
})
|
||||
await runStep("Esbuild", async () => {
|
||||
const { esbuildWasmLoader } = await import("@tutao/tuta-wasm-loader")
|
||||
await esbuild({
|
||||
// this is here because the test build targets esm and esbuild
|
||||
// does not support dynamic requires, which better-sqlite3 uses
|
||||
|
@ -130,7 +130,7 @@ export async function runTestBuild({ clean, fast = false }) {
|
|||
env: {
|
||||
WASM: `${process.cwd()}/build/wasm/liboqs.wasm`,
|
||||
},
|
||||
optimizationLevel: "O3",
|
||||
optimizationLevel: "O1",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -141,7 +141,7 @@ export async function runTestBuild({ clean, fast = false }) {
|
|||
env: {
|
||||
WASM: `${process.cwd()}/build/wasm/argon2.wasm`,
|
||||
},
|
||||
optimizationLevel: "O3",
|
||||
optimizationLevel: "O1",
|
||||
},
|
||||
},
|
||||
],
|
||||
|
|
2
types/globals.d.ts
vendored
2
types/globals.d.ts
vendored
|
@ -22,7 +22,7 @@ declare type Writeable<T> = { -readonly [P in keyof T]: T[P] }
|
|||
declare type None = null | undefined
|
||||
|
||||
declare module "*.wasm" {
|
||||
const loadWasm: (options?: { forceFallback?: boolean }) => Promise<Argon2IDExports | LibOQSExports>
|
||||
const loadWasm: (options?: { forceFallback?: boolean }) => Promise<WASMExports>
|
||||
|
||||
export { loadWasm }
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue