feat: complete Ancestor quote bot with production-ready Docker support
This commit is contained in:
80
node_modules/@matrix-org/matrix-sdk-crypto-wasm/README.md
generated
vendored
80
node_modules/@matrix-org/matrix-sdk-crypto-wasm/README.md
generated
vendored
@@ -22,102 +22,66 @@ Encryption](https://en.wikipedia.org/wiki/End-to-end_encryption)) for
|
||||
or:
|
||||
|
||||
```
|
||||
pnpm add @matrix-org/matrix-sdk-crypto-wasm
|
||||
yarn add @matrix-org/matrix-sdk-crypto-wasm
|
||||
```
|
||||
|
||||
2. Import the library into your project and initialise it.
|
||||
|
||||
On Web platforms, the library must be initialised by calling `initAsync`
|
||||
before it can be used, else it will throw an error. This is also recommended
|
||||
on other platforms, as it allows the WebAssembly module to be loaded
|
||||
asynchronously.
|
||||
It is recommended that you use a dynamic import, particularly in a Web
|
||||
environment, because the WASM artifiact is large:
|
||||
|
||||
```javascript
|
||||
import { initAsync, Tracing, LoggerLevel, OlmMachine, UserId, DeviceId } from "@matrix-org/matrix-sdk-crypto-wasm";
|
||||
|
||||
async function loadCrypto(userId, deviceId) {
|
||||
// Do this before any other calls to the library
|
||||
await initAsync();
|
||||
const matrixSdkCrypto = await import("@matrix-org/matrix-sdk-crypto-wasm");
|
||||
await matrixSdkCrypto.initAsync();
|
||||
|
||||
// Optional: enable tracing in the rust-sdk
|
||||
new Tracing(LoggerLevel.Trace).turnOn();
|
||||
new matrixSdkCrypto.Tracing(matrixSdkCrypto.LoggerLevel.Trace).turnOn();
|
||||
|
||||
// Create a new OlmMachine
|
||||
//
|
||||
// The following will use an in-memory store. It is recommended to use
|
||||
// indexedDB where that is available.
|
||||
// See https://matrix-org.github.io/matrix-sdk-crypto-wasm/classes/OlmMachine.html#initialize
|
||||
const olmMachine = await OlmMachine.initialize(new UserId(userId), new DeviceId(deviceId));
|
||||
// See https://matrix-org.github.io/matrix-rust-sdk-crypto-wasm/classes/OlmMachine.html#initialize
|
||||
const olmMachine = await matrixSdkCrypto.OlmMachine.initialize(
|
||||
new RustSdkCryptoJs.UserId(userId),
|
||||
new RustSdkCryptoJs.DeviceId(deviceId),
|
||||
);
|
||||
|
||||
return olmMachine;
|
||||
}
|
||||
```
|
||||
|
||||
See the [API documentation](https://matrix-org.github.io/matrix-sdk-crypto-wasm/) for more information.
|
||||
|
||||
3. Build your project.
|
||||
|
||||
The packaging of this library aims to "just work" the same as any plain-javascript project would: it includes
|
||||
separate entry points for Node.js-like environments (which read the WASM file via
|
||||
[`fs.readFile()`](https://nodejs.org/api/fs.html#fsreadfilepath-options-callback)) and web-like environments (which
|
||||
download the WASM file with [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch)). There are
|
||||
both CommonJS and ES Module entry points for each environment; an appropriate entrypoint should be selected
|
||||
automatically.
|
||||
|
||||
If your environment supports the experimental [ES Module Integration Proposal for WebAssembly](https://github.com/WebAssembly/esm-integration),
|
||||
you can instead use that, by setting the `matrix-org:wasm-esm` custom [export condition](https://nodejs.org/api/packages.html#conditional-exports).
|
||||
This is only supported when the library is imported as an ES Module. For example:
|
||||
|
||||
- In Webpack, set [`experiments.asyncWebAssembly`](https://webpack.js.org/configuration/experiments/#experiments)
|
||||
to `true` and [`resolve.conditionNames`](https://webpack.js.org/configuration/resolve/#resolveconditionnames)
|
||||
to `["matrix-org:wasm-esm", "..."]` (the `"..."` preserves default condition names).
|
||||
- In Node.js, invoke with commandline arguments [`--experimental-wasm-modules`](https://nodejs.org/api/esm.html#wasm-modules)
|
||||
[`--conditions=wasm-esm`](https://nodejs.org/api/cli.html#-c-condition---conditionscondition).
|
||||
|
||||
## Building matrix-sdk-crypto-wasm
|
||||
## Building
|
||||
|
||||
These WebAssembly bindings are written in [Rust]. To build them, you
|
||||
need to install the Rust compiler, see [the Install Rust
|
||||
Page](https://www.rust-lang.org/tools/install). Then, the workflow is
|
||||
pretty classical by using [pnpm](https://pnpm.io), see [the Downloading and installing
|
||||
pretty classical by using [yarn](https://yarnpkg.com/), see [the Downloading and installing
|
||||
Node.js and npm
|
||||
Page](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and [installing pnpm](https://pnpm.io/installation).
|
||||
Page](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and [installing yarn](https://classic.yarnpkg.com/lang/en/docs/install).
|
||||
|
||||
Once the Rust compiler, Node.js and pnpm are installed, you can run the
|
||||
Once the Rust compiler, Node.js and yarn are installed, you can run the
|
||||
following commands:
|
||||
|
||||
```sh
|
||||
$ pnpm install
|
||||
$ pnpm build # or 'pnpm build:dev' to make an unoptimised build
|
||||
$ pnpm test
|
||||
$ yarn install
|
||||
$ yarn build # or 'yarn build:dev' to make an unoptimised build
|
||||
$ yarn test
|
||||
```
|
||||
|
||||
The compiled output should be generated in the `pkg/` directory.
|
||||
|
||||
## Local development with matrix-rust-sdk
|
||||
|
||||
To build based on a local `matrix-rust-sdk`, add something like this to your
|
||||
`.cargo/config` file:
|
||||
|
||||
```
|
||||
[patch.'https://github.com/matrix-org/matrix-rust-sdk']
|
||||
matrix-sdk-base = { path = "../matrix-rust-sdk/crates/matrix-sdk-base" }
|
||||
matrix-sdk-common = { path = "../matrix-rust-sdk/crates/matrix-sdk-common" }
|
||||
matrix-sdk-crypto = { path = "../matrix-rust-sdk/crates/matrix-sdk-crypto" }
|
||||
matrix-sdk-indexeddb = { path = "../matrix-rust-sdk/crates/matrix-sdk-indexeddb" }
|
||||
matrix-sdk-qrcode = { path = "../matrix-rust-sdk/crates/matrix-sdk-qrcode" }
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
[The documentation can be found
|
||||
online](https://matrix-org.github.io/matrix-sdk-crypto-wasm/).
|
||||
online](https://matrix-org.github.io/matrix-rust-sdk-crypto-wasm/).
|
||||
|
||||
To generate the documentation locally, please run the following
|
||||
command:
|
||||
|
||||
```sh
|
||||
$ pnpm doc
|
||||
$ yarn doc
|
||||
```
|
||||
|
||||
The documentation is generated in the `./docs` directory.
|
||||
@@ -128,7 +92,3 @@ The documentation is generated in the `./docs` directory.
|
||||
[Matrix]: https://matrix.org/
|
||||
[Rust]: https://www.rust-lang.org/
|
||||
[npm]: https://www.npmjs.com/
|
||||
|
||||
## Contributing
|
||||
|
||||
Thank you! See the [contributing](CONTRIBUTING.md) doc for more info.
|
||||
|
||||
Reference in New Issue
Block a user