Skip to content

Commit 585ce07

Browse files
authored
Stub out the rust crypto implementation for browserify (#3187)
Fixes #3182.
1 parent 8cbbdaa commit 585ce07

File tree

3 files changed

+164
-1
lines changed

3 files changed

+164
-1
lines changed

package.json

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"build:dev": "yarn clean && git rev-parse HEAD > git-revision.txt && yarn build:compile && yarn build:types",
1515
"build:types": "tsc -p tsconfig-build.json --emitDeclarationOnly",
1616
"build:compile": "babel -d lib --verbose --extensions \".ts,.js\" src",
17-
"build:compile-browser": "mkdir dist && browserify -d src/browser-index.ts -p [ tsify -p ./tsconfig-build.json ] -t [ babelify --sourceMaps=inline --presets [ @babel/preset-env @babel/preset-typescript ] ] | exorcist dist/browser-matrix.js.map > dist/browser-matrix.js",
17+
"build:compile-browser": "mkdir dist && BROWSERIFYSWAP_ENV='no-rust-crypto' browserify -d src/browser-index.ts -p [ tsify -p ./tsconfig-build.json ] | exorcist dist/browser-matrix.js.map > dist/browser-matrix.js",
1818
"build:minify-browser": "terser dist/browser-matrix.js --compress --mangle --source-map --output dist/browser-matrix.min.js",
1919
"gendoc": "typedoc",
2020
"lint": "yarn lint:types && yarn lint:js",
@@ -97,6 +97,7 @@
9797
"babelify": "^10.0.0",
9898
"better-docs": "^2.4.0-beta.9",
9999
"browserify": "^17.0.0",
100+
"browserify-swap": "^0.2.2",
100101
"debug": "^4.3.4",
101102
"docdash": "^2.0.0",
102103
"domexception": "^4.0.0",
@@ -147,5 +148,25 @@
147148
"outputDirectory": "coverage",
148149
"outputName": "jest-sonar-report.xml",
149150
"relativePaths": true
151+
},
152+
"browserify": {
153+
"transform": [
154+
"browserify-swap",
155+
[
156+
"babelify",
157+
{
158+
"sourceMaps": "inline",
159+
"presets": [
160+
"@babel/preset-env",
161+
"@babel/preset-typescript"
162+
]
163+
}
164+
]
165+
]
166+
},
167+
"browserify-swap": {
168+
"no-rust-crypto": {
169+
"src/rust-crypto/index.ts$": "./src/rust-crypto/browserify-index.ts"
170+
}
150171
}
151172
}

src/rust-crypto/browserify-index.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
Copyright 2023 The Matrix.org Foundation C.I.C.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
/* This file replaces rust-crypto/index.ts when the js-sdk is being built for browserify.
18+
*
19+
* It is a stub, so that we do not import the whole of the base64'ed wasm artifact into the browserify bundle.
20+
* It deliberately does nothing except raise an exception.
21+
*/
22+
23+
import { IHttpOpts, MatrixHttpApi } from "../http-api";
24+
25+
export async function initRustCrypto(
26+
_http: MatrixHttpApi<IHttpOpts & { onlyData: true }>,
27+
_userId: string,
28+
_deviceId: string,
29+
): Promise<Crypto> {
30+
throw new Error("Rust crypto is not supported under browserify.");
31+
}

yarn.lock

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2184,6 +2184,11 @@ ansi-styles@^5.0.0:
21842184
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
21852185
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
21862186

2187+
ansicolors@~0.3.2:
2188+
version "0.3.2"
2189+
resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
2190+
integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
2191+
21872192
any-promise@^1.3.0:
21882193
version "1.3.0"
21892194
resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
@@ -2568,6 +2573,16 @@ browserify-sign@^4.0.0:
25682573
readable-stream "^3.6.0"
25692574
safe-buffer "^5.2.0"
25702575

2576+
browserify-swap@^0.2.2:
2577+
version "0.2.2"
2578+
resolved "https://registry.yarnpkg.com/browserify-swap/-/browserify-swap-0.2.2.tgz#a982541fde5f9bfaa3519c9582ccc48d6c1e33b6"
2579+
integrity sha512-3Gu8HcfzBscN9Z/87pVamlvoVL1SobstVovHQLTzqQrX8NpeoPJPOXSUZqDCChxgTdlWZnbARx/J/pd7ArIOdw==
2580+
dependencies:
2581+
find-parent-dir "~0.1.0"
2582+
resolve "~0.6.1"
2583+
through2 "~0.2.3"
2584+
viralify "~0.4.1"
2585+
25712586
browserify-zlib@~0.2.0:
25722587
version "0.2.0"
25732588
resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
@@ -3923,6 +3938,11 @@ find-cache-dir@^2.0.0:
39233938
make-dir "^2.0.0"
39243939
pkg-dir "^3.0.0"
39253940

3941+
find-parent-dir@~0.1.0:
3942+
version "0.1.0"
3943+
resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.1.0.tgz#101b8eca4fb27b94263187a2fadc56b95caa87d4"
3944+
integrity sha512-EFR3+F3hYBSGnZZuC7dQIlkIbPXdsFz1+dRMjNRrabkEK5WCZbbNFFuh/pbHKDnSc/THW98LU+kSTRIbvUecYw==
3945+
39263946
find-up@^3.0.0:
39273947
version "3.0.0"
39283948
resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
@@ -4096,6 +4116,14 @@ glob@^7.1.0, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
40964116
once "^1.3.0"
40974117
path-is-absolute "^1.0.0"
40984118

4119+
glob@~3.2.7:
4120+
version "3.2.11"
4121+
resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d"
4122+
integrity sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==
4123+
dependencies:
4124+
inherits "2"
4125+
minimatch "0.3"
4126+
40994127
globals@^11.1.0:
41004128
version "11.12.0"
41014129
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -4619,6 +4647,11 @@ is-wsl@^2.2.0:
46194647
dependencies:
46204648
is-docker "^2.0.0"
46214649

4650+
4651+
version "0.0.1"
4652+
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
4653+
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
4654+
46224655
isarray@~1.0.0:
46234656
version "1.0.0"
46244657
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -5422,6 +5455,11 @@ loose-envify@^1.4.0:
54225455
dependencies:
54235456
js-tokens "^3.0.0 || ^4.0.0"
54245457

5458+
lru-cache@2:
5459+
version "2.7.3"
5460+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
5461+
integrity sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==
5462+
54255463
lru-cache@^4.1.5:
54265464
version "4.1.5"
54275465
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -5584,6 +5622,14 @@ minimalistic-crypto-utils@^1.0.1:
55845622
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
55855623
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
55865624

5625+
5626+
version "0.3.0"
5627+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd"
5628+
integrity sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==
5629+
dependencies:
5630+
lru-cache "2"
5631+
sigmund "~1.0.0"
5632+
55875633
minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
55885634
version "3.1.2"
55895635
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -5598,6 +5644,11 @@ minimatch@^6.1.6:
55985644
dependencies:
55995645
brace-expansion "^2.0.1"
56005646

5647+
5648+
version "0.0.5"
5649+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.5.tgz#d7aa327bcecf518f9106ac6b8f003fa3bcea8566"
5650+
integrity sha512-rSJ0cdmCj3qmKdObcnMcWgPVOyaOWlazLhZAJW0s6G6lx1ZEuFkraWmEH5LTvX90btkfHPclQBjvjU7A/kYRFg==
5651+
56015652
minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
56025653
version "1.2.7"
56035654
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
@@ -5738,6 +5789,11 @@ object-keys@^1.1.1:
57385789
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
57395790
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
57405791

5792+
object-keys@~0.4.0:
5793+
version "0.4.0"
5794+
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
5795+
integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==
5796+
57415797
object.assign@^4.1.4:
57425798
version "4.1.4"
57435799
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
@@ -6374,6 +6430,16 @@ readable-stream@^3.5.0, readable-stream@^3.6.0:
63746430
string_decoder "^1.1.1"
63756431
util-deprecate "^1.0.1"
63766432

6433+
readable-stream@~1.1.9:
6434+
version "1.1.14"
6435+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
6436+
integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==
6437+
dependencies:
6438+
core-util-is "~1.0.0"
6439+
inherits "~2.0.1"
6440+
isarray "0.0.1"
6441+
string_decoder "~0.10.x"
6442+
63776443
readdirp@~3.6.0:
63786444
version "3.6.0"
63796445
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -6518,6 +6584,11 @@ resolve@^1.1.4, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.
65186584
path-parse "^1.0.7"
65196585
supports-preserve-symlinks-flag "^1.0.0"
65206586

6587+
resolve@~0.6.1:
6588+
version "0.6.3"
6589+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46"
6590+
integrity sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==
6591+
65216592
resolve@~1.19.0:
65226593
version "1.19.0"
65236594
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
@@ -6570,6 +6641,11 @@ run-parallel@^1.1.9:
65706641
dependencies:
65716642
queue-microtask "^1.2.2"
65726643

6644+
runnel@~0.5.1:
6645+
version "0.5.3"
6646+
resolved "https://registry.yarnpkg.com/runnel/-/runnel-0.5.3.tgz#f9362b165a05fc6f5e46e458f77a1f7ecdc0daec"
6647+
integrity sha512-XAVCMr+hCRGKA4AJdNit1aQC0EKCuCZnlxqfeh9u2CbSPSPyLSI/BfavMfoC/WUd6HyaRBWW1usNsVAqWN9hgw==
6648+
65736649
safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
65746650
version "5.2.1"
65756651
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
@@ -6688,6 +6764,11 @@ side-channel@^1.0.4:
66886764
get-intrinsic "^1.0.2"
66896765
object-inspect "^1.9.0"
66906766

6767+
sigmund@~1.0.0:
6768+
version "1.0.1"
6769+
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
6770+
integrity sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==
6771+
66916772
signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
66926773
version "3.0.7"
66936774
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
@@ -6858,6 +6939,11 @@ string_decoder@^1.1.1:
68586939
dependencies:
68596940
safe-buffer "~5.2.0"
68606941

6942+
string_decoder@~0.10.x:
6943+
version "0.10.31"
6944+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
6945+
integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
6946+
68616947
string_decoder@~1.1.1:
68626948
version "1.1.1"
68636949
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -7001,6 +7087,14 @@ through2@^2.0.0:
70017087
readable-stream "~2.3.6"
70027088
xtend "~4.0.1"
70037089

7090+
through2@~0.2.3:
7091+
version "0.2.3"
7092+
resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
7093+
integrity sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==
7094+
dependencies:
7095+
readable-stream "~1.1.9"
7096+
xtend "~2.1.1"
7097+
70047098
"through@>=2.2.7 <3":
70057099
version "2.3.8"
70067100
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
@@ -7437,6 +7531,16 @@ validate-npm-package-license@^3.0.1:
74377531
spdx-correct "^3.0.0"
74387532
spdx-expression-parse "^3.0.0"
74397533

7534+
viralify@~0.4.1:
7535+
version "0.4.2"
7536+
resolved "https://registry.yarnpkg.com/viralify/-/viralify-0.4.2.tgz#e50e2ab8c7b445389c1d99d754e4436234992070"
7537+
integrity sha512-GRQFXKRDvFukIS96xQqJKuzhMSa320DK3VGf4gvCJh10tEv0aWGlo7GABq6euPpXVS0NBghiIRXwk8mc3LRipg==
7538+
dependencies:
7539+
ansicolors "~0.3.2"
7540+
glob "~3.2.7"
7541+
minimist "0.0.5"
7542+
runnel "~0.5.1"
7543+
74407544
vm-browserify@^1.0.0:
74417545
version "1.1.2"
74427546
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
@@ -7668,6 +7772,13 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1:
76687772
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
76697773
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
76707774

7775+
xtend@~2.1.1:
7776+
version "2.1.2"
7777+
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
7778+
integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==
7779+
dependencies:
7780+
object-keys "~0.4.0"
7781+
76717782
y18n@^5.0.5:
76727783
version "5.0.8"
76737784
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"

0 commit comments

Comments
 (0)