1e7dcdedec
It's christmas, everyone is on holiday, it's time to change every single file in the repository!
39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
## Architecture
|
|
|
|
The `@automerge/automerge` package is a set of
|
|
[`Proxy`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy)
|
|
objects which provide an idiomatic javascript interface built on top of the
|
|
lower level `@automerge/automerge-wasm` package (which is in turn built from the
|
|
Rust codebase and can be found in `~/automerge-wasm`). I.e. the responsibility
|
|
of this codebase is
|
|
|
|
- To map from the javascript data model to the underlying `set`, `make`,
|
|
`insert`, and `delete` operations of Automerge.
|
|
- To expose a more convenient interface to functions in `automerge-wasm` which
|
|
generate messages to send over the network or compressed file formats to store
|
|
on disk
|
|
|
|
## Building and testing
|
|
|
|
Much of the functionality of this package depends on the
|
|
`@automerge/automerge-wasm` package and frequently you will be working on both
|
|
of them at the same time. It would be frustrating to have to push
|
|
`automerge-wasm` to NPM every time you want to test a change but I (Alex) also
|
|
don't trust `yarn link` to do the right thing here. Therefore, the `./e2e`
|
|
folder contains a little yarn package which spins up a local NPM registry. See
|
|
`./e2e/README` for details. In brief though:
|
|
|
|
To build `automerge-wasm` and install it in the local `node_modules`
|
|
|
|
```bash
|
|
cd e2e && yarn install && yarn run e2e buildjs
|
|
```
|
|
|
|
NOw that you've done this you can run the tests
|
|
|
|
```bash
|
|
yarn test
|
|
```
|
|
|
|
If you make changes to the `automerge-wasm` package you will need to re-run
|
|
`yarn e2e buildjs`
|