diff --git a/.github/workflows/advisory-cron.yaml b/.github/workflows/advisory-cron.yaml
deleted file mode 100644
index 31bac5a3..00000000
--- a/.github/workflows/advisory-cron.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: Advisories
-on:
- schedule:
- - cron: '0 18 * * *'
-jobs:
- cargo-deny:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- checks:
- - advisories
- - bans licenses sources
- steps:
- - uses: actions/checkout@v2
- - uses: EmbarkStudios/cargo-deny-action@v1
- with:
- command: check ${{ matrix.checks }}
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
deleted file mode 100644
index a5d42010..00000000
--- a/.github/workflows/ci.yaml
+++ /dev/null
@@ -1,177 +0,0 @@
-name: CI
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-jobs:
- fmt:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- components: rustfmt
- - uses: Swatinem/rust-cache@v1
- - run: ./scripts/ci/fmt
- shell: bash
-
- lint:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- components: clippy
- - uses: Swatinem/rust-cache@v1
- - run: ./scripts/ci/lint
- shell: bash
-
- docs:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- - uses: Swatinem/rust-cache@v1
- - name: Build rust docs
- run: ./scripts/ci/rust-docs
- shell: bash
- - name: Install doxygen
- run: sudo apt-get install -y doxygen
- shell: bash
-
- cargo-deny:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- checks:
- - advisories
- - bans licenses sources
- continue-on-error: ${{ matrix.checks == 'advisories' }}
- steps:
- - uses: actions/checkout@v2
- - uses: EmbarkStudios/cargo-deny-action@v1
- with:
- arguments: '--manifest-path ./rust/Cargo.toml'
- command: check ${{ matrix.checks }}
-
- wasm_tests:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Install wasm-bindgen-cli
- run: cargo install wasm-bindgen-cli wasm-opt
- - name: Install wasm32 target
- run: rustup target add wasm32-unknown-unknown
- - name: run tests
- run: ./scripts/ci/wasm_tests
- deno_tests:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: denoland/setup-deno@v1
- with:
- deno-version: v1.x
- - name: Install wasm-bindgen-cli
- run: cargo install wasm-bindgen-cli wasm-opt
- - name: Install wasm32 target
- run: rustup target add wasm32-unknown-unknown
- - name: run tests
- run: ./scripts/ci/deno_tests
-
- js_fmt:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: install
- run: yarn global add prettier
- - name: format
- run: prettier -c javascript/.prettierrc javascript
-
- js_tests:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Install wasm-bindgen-cli
- run: cargo install wasm-bindgen-cli wasm-opt
- - name: Install wasm32 target
- run: rustup target add wasm32-unknown-unknown
- - name: run tests
- run: ./scripts/ci/js_tests
-
- cmake_build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- - uses: Swatinem/rust-cache@v1
- - name: Install CMocka
- run: sudo apt-get install -y libcmocka-dev
- - name: Install/update CMake
- uses: jwlawson/actions-setup-cmake@v1.12
- with:
- cmake-version: latest
- - name: Build and test C bindings
- run: ./scripts/ci/cmake-build Release Static
- shell: bash
-
- linux:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- toolchain:
- - 1.60.0
- - nightly
- continue-on-error: ${{ matrix.toolchain == 'nightly' }}
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: ${{ matrix.toolchain }}
- default: true
- - uses: Swatinem/rust-cache@v1
- - run: ./scripts/ci/build-test
- shell: bash
-
- macos:
- runs-on: macos-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- - uses: Swatinem/rust-cache@v1
- - run: ./scripts/ci/build-test
- shell: bash
-
- windows:
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: 1.66.0
- default: true
- - uses: Swatinem/rust-cache@v1
- - run: ./scripts/ci/build-test
- shell: bash
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
deleted file mode 100644
index b501d526..00000000
--- a/.github/workflows/docs.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
-on:
- push:
- branches:
- - main
-
-name: Documentation
-
-jobs:
- deploy-docs:
- concurrency: deploy-docs
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Toolchain
- uses: actions-rs/toolchain@v1
- with:
- profile: minimal
- toolchain: stable
- override: true
-
- - name: Cache
- uses: Swatinem/rust-cache@v1
-
- - name: Clean docs dir
- run: rm -rf docs
- shell: bash
-
- - name: Clean Rust docs dir
- uses: actions-rs/cargo@v1
- with:
- command: clean
- args: --manifest-path ./rust/Cargo.toml --doc
-
- - name: Build Rust docs
- uses: actions-rs/cargo@v1
- with:
- command: doc
- args: --manifest-path ./rust/Cargo.toml --workspace --all-features --no-deps
-
- - name: Move Rust docs
- run: mkdir -p docs && mv rust/target/doc/* docs/.
- shell: bash
-
- - name: Configure root page
- run: echo '' > docs/index.html
-
- - name: Deploy docs
- uses: peaceiris/actions-gh-pages@v3
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./docs
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
deleted file mode 100644
index 530f07c7..00000000
--- a/.github/workflows/release.yaml
+++ /dev/null
@@ -1,100 +0,0 @@
-name: Release
-on:
- push:
- branches:
- - main
-
-jobs:
- check_if_wasm_version_upgraded:
- name: Check if WASM version has been upgraded
- runs-on: ubuntu-latest
- outputs:
- wasm_version: ${{ steps.version-updated.outputs.current-package-version }}
- wasm_has_updated: ${{ steps.version-updated.outputs.has-updated }}
- steps:
- - uses: JiPaix/package-json-updated-action@v1.0.5
- id: version-updated
- with:
- path: rust/automerge-wasm/package.json
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- publish-wasm:
- name: Publish WASM package
- runs-on: ubuntu-latest
- needs:
- - check_if_wasm_version_upgraded
- # We create release only if the version in the package.json has been upgraded
- #if: needs.check_if_wasm_version_upgraded.outputs.wasm_has_updated == 'true'
- steps:
- - uses: actions/setup-node@v3
- with:
- node-version: '16.x'
- registry-url: 'https://registry.npmjs.org'
- - uses: denoland/setup-deno@v1
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
- ref: ${{ github.ref }}
- - name: Get rid of local github workflows
- run: rm -r .github/workflows
- - name: Remove tmp_branch if it exists
- run: git push origin :tmp_branch || true
- - run: git checkout -b tmp_branch
- - name: Install wasm-bindgen-cli
- run: cargo install wasm-bindgen-cli wasm-opt
- - name: Install wasm32 target
- run: rustup target add wasm32-unknown-unknown
- - name: run wasm js tests
- id: wasm_js_tests
- run: ./scripts/ci/wasm_tests
- - name: run wasm deno tests
- id: wasm_deno_tests
- run: ./scripts/ci/deno_tests
- - name: Collate deno release files
- if: steps.wasm_js_tests.outcome == 'success' && steps.wasm_deno_tests.outcome == 'success'
- run: |
- mkdir $GITHUB_WORKSPACE/deno_wasm_dist
- cp $GITHUB_WORKSPACE/rust/automerge-wasm/deno/* $GITHUB_WORKSPACE/deno_wasm_dist
- cp $GITHUB_WORKSPACE/rust/automerge-wasm/index.d.ts $GITHUB_WORKSPACE/deno_wasm_dist
- sed -i '1i /// ' $GITHUB_WORKSPACE/deno_wasm_dist/automerge_wasm.js
- - name: Create npm release
- if: steps.wasm_js_tests.outcome == 'success' && steps.wasm_deno_tests.outcome == 'success'
- run: |
- if [ "$(npm --prefix $GITHUB_WORKSPACE/rust/automerge-wasm show . version)" = "$VERSION" ]; then
- echo "This version is already published"
- exit 0
- fi
- EXTRA_ARGS="--access public"
- if [[ $VERSION == *"alpha."* ]] || [[ $VERSION == *"beta."* ]] || [[ $VERSION == *"rc."* ]]; then
- echo "Is pre-release version"
- EXTRA_ARGS="$EXTRA_ARGS --tag next"
- fi
- if [ "$NODE_AUTH_TOKEN" = "" ]; then
- echo "Can't publish on NPM, You need a NPM_TOKEN secret."
- false
- fi
- npm publish $GITHUB_WORKSPACE/rust/automerge-wasm $EXTRA_ARGS
- env:
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- VERSION: ${{ needs.check_if_wasm_version_upgraded.outputs.wasm_version }}
- - name: Commit wasm deno release files
- run: |
- git config --global user.name "actions"
- git config --global user.email actions@github.com
- git add $GITHUB_WORKSPACE/deno_wasm_dist
- git commit -am "Add deno release files"
- git push origin tmp_branch
- - name: Tag wasm release
- if: steps.wasm_js_tests.outcome == 'success' && steps.wasm_deno_tests.outcome == 'success'
- uses: softprops/action-gh-release@v1
- with:
- name: Automerge Wasm v${{ needs.check_if_wasm_version_upgraded.outputs.wasm_version }}
- tag_name: js/automerge-wasm-${{ needs.check_if_wasm_version_upgraded.outputs.wasm_version }}
- target_commitish: tmp_branch
- generate_release_notes: false
- draft: false
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - name: Remove tmp_branch
- run: git push origin :tmp_branch
-
diff --git a/deno_wasm_dist/automerge_wasm.js b/deno_wasm_dist/automerge_wasm.js
new file mode 100644
index 00000000..c1a71684
--- /dev/null
+++ b/deno_wasm_dist/automerge_wasm.js
@@ -0,0 +1,1663 @@
+///
+
+
+const heap = new Array(32).fill(undefined);
+
+heap.push(undefined, null, true, false);
+
+function getObject(idx) { return heap[idx]; }
+
+function isLikeNone(x) {
+ return x === undefined || x === null;
+}
+
+let cachedFloat64Memory0 = new Float64Array();
+
+function getFloat64Memory0() {
+ if (cachedFloat64Memory0.byteLength === 0) {
+ cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);
+ }
+ return cachedFloat64Memory0;
+}
+
+let cachedInt32Memory0 = new Int32Array();
+
+function getInt32Memory0() {
+ if (cachedInt32Memory0.byteLength === 0) {
+ cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);
+ }
+ return cachedInt32Memory0;
+}
+
+let heap_next = heap.length;
+
+function addHeapObject(obj) {
+ if (heap_next === heap.length) heap.push(heap.length + 1);
+ const idx = heap_next;
+ heap_next = heap[idx];
+
+ heap[idx] = obj;
+ return idx;
+}
+
+const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
+
+cachedTextDecoder.decode();
+
+let cachedUint8Memory0 = new Uint8Array();
+
+function getUint8Memory0() {
+ if (cachedUint8Memory0.byteLength === 0) {
+ cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);
+ }
+ return cachedUint8Memory0;
+}
+
+function getStringFromWasm0(ptr, len) {
+ return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
+}
+
+let WASM_VECTOR_LEN = 0;
+
+const cachedTextEncoder = new TextEncoder('utf-8');
+
+const encodeString = function (arg, view) {
+ return cachedTextEncoder.encodeInto(arg, view);
+};
+
+function passStringToWasm0(arg, malloc, realloc) {
+
+ if (realloc === undefined) {
+ const buf = cachedTextEncoder.encode(arg);
+ const ptr = malloc(buf.length);
+ getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
+ WASM_VECTOR_LEN = buf.length;
+ return ptr;
+ }
+
+ let len = arg.length;
+ let ptr = malloc(len);
+
+ const mem = getUint8Memory0();
+
+ let offset = 0;
+
+ for (; offset < len; offset++) {
+ const code = arg.charCodeAt(offset);
+ if (code > 0x7F) break;
+ mem[ptr + offset] = code;
+ }
+
+ if (offset !== len) {
+ if (offset !== 0) {
+ arg = arg.slice(offset);
+ }
+ ptr = realloc(ptr, len, len = offset + arg.length * 3);
+ const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
+ const ret = encodeString(arg, view);
+
+ offset += ret.written;
+ }
+
+ WASM_VECTOR_LEN = offset;
+ return ptr;
+}
+
+function dropObject(idx) {
+ if (idx < 36) return;
+ heap[idx] = heap_next;
+ heap_next = idx;
+}
+
+function takeObject(idx) {
+ const ret = getObject(idx);
+ dropObject(idx);
+ return ret;
+}
+
+function debugString(val) {
+ // primitive types
+ const type = typeof val;
+ if (type == 'number' || type == 'boolean' || val == null) {
+ return `${val}`;
+ }
+ if (type == 'string') {
+ return `"${val}"`;
+ }
+ if (type == 'symbol') {
+ const description = val.description;
+ if (description == null) {
+ return 'Symbol';
+ } else {
+ return `Symbol(${description})`;
+ }
+ }
+ if (type == 'function') {
+ const name = val.name;
+ if (typeof name == 'string' && name.length > 0) {
+ return `Function(${name})`;
+ } else {
+ return 'Function';
+ }
+ }
+ // objects
+ if (Array.isArray(val)) {
+ const length = val.length;
+ let debug = '[';
+ if (length > 0) {
+ debug += debugString(val[0]);
+ }
+ for(let i = 1; i < length; i++) {
+ debug += ', ' + debugString(val[i]);
+ }
+ debug += ']';
+ return debug;
+ }
+ // Test for built-in
+ const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val));
+ let className;
+ if (builtInMatches.length > 1) {
+ className = builtInMatches[1];
+ } else {
+ // Failed to match the standard '[object ClassName]'
+ return toString.call(val);
+ }
+ if (className == 'Object') {
+ // we're a user defined class or Object
+ // JSON.stringify avoids problems with cycles, and is generally much
+ // easier than looping through ownProperties of `val`.
+ try {
+ return 'Object(' + JSON.stringify(val) + ')';
+ } catch (_) {
+ return 'Object';
+ }
+ }
+ // errors
+ if (val instanceof Error) {
+ return `${val.name}: ${val.message}\n${val.stack}`;
+ }
+ // TODO we could test for more things here, like `Set`s and `Map`s.
+ return className;
+}
+
+function _assertClass(instance, klass) {
+ if (!(instance instanceof klass)) {
+ throw new Error(`expected instance of ${klass.name}`);
+ }
+ return instance.ptr;
+}
+/**
+* @param {boolean} text_v2
+* @param {string | undefined} actor
+* @returns {Automerge}
+*/
+export function create(text_v2, actor) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ var ptr0 = isLikeNone(actor) ? 0 : passStringToWasm0(actor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.create(retptr, text_v2, ptr0, len0);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return Automerge.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {Uint8Array} data
+* @param {boolean} text_v2
+* @param {string | undefined} actor
+* @returns {Automerge}
+*/
+export function load(data, text_v2, actor) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ var ptr0 = isLikeNone(actor) ? 0 : passStringToWasm0(actor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.load(retptr, addHeapObject(data), text_v2, ptr0, len0);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return Automerge.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {any} change
+* @returns {Uint8Array}
+*/
+export function encodeChange(change) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.encodeChange(retptr, addHeapObject(change));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {Uint8Array} change
+* @returns {any}
+*/
+export function decodeChange(change) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.decodeChange(retptr, addHeapObject(change));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @returns {SyncState}
+*/
+export function initSyncState() {
+ const ret = wasm.initSyncState();
+ return SyncState.__wrap(ret);
+}
+
+/**
+* @param {any} state
+* @returns {SyncState}
+*/
+export function importSyncState(state) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.importSyncState(retptr, addHeapObject(state));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return SyncState.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {SyncState} state
+* @returns {any}
+*/
+export function exportSyncState(state) {
+ _assertClass(state, SyncState);
+ const ret = wasm.exportSyncState(state.ptr);
+ return takeObject(ret);
+}
+
+/**
+* @param {any} message
+* @returns {Uint8Array}
+*/
+export function encodeSyncMessage(message) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.encodeSyncMessage(retptr, addHeapObject(message));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {Uint8Array} msg
+* @returns {any}
+*/
+export function decodeSyncMessage(msg) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.decodeSyncMessage(retptr, addHeapObject(msg));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+/**
+* @param {SyncState} state
+* @returns {Uint8Array}
+*/
+export function encodeSyncState(state) {
+ _assertClass(state, SyncState);
+ const ret = wasm.encodeSyncState(state.ptr);
+ return takeObject(ret);
+}
+
+/**
+* @param {Uint8Array} data
+* @returns {SyncState}
+*/
+export function decodeSyncState(data) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.decodeSyncState(retptr, addHeapObject(data));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return SyncState.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+}
+
+function handleError(f, args) {
+ try {
+ return f.apply(this, args);
+ } catch (e) {
+ wasm.__wbindgen_exn_store(addHeapObject(e));
+ }
+}
+
+function getArrayU8FromWasm0(ptr, len) {
+ return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
+}
+/**
+* How text is represented in materialized objects on the JS side
+*/
+export const TextRepresentation = Object.freeze({
+/**
+* As an array of characters and objects
+*/
+Array:0,"0":"Array",
+/**
+* As a single JS string
+*/
+String:1,"1":"String", });
+
+const AutomergeFinalization = new FinalizationRegistry(ptr => wasm.__wbg_automerge_free(ptr));
+/**
+*/
+export class Automerge {
+
+ static __wrap(ptr) {
+ const obj = Object.create(Automerge.prototype);
+ obj.ptr = ptr;
+ AutomergeFinalization.register(obj, obj.ptr, obj);
+ return obj;
+ }
+
+ __destroy_into_raw() {
+ const ptr = this.ptr;
+ this.ptr = 0;
+ AutomergeFinalization.unregister(this);
+ return ptr;
+ }
+
+ free() {
+ const ptr = this.__destroy_into_raw();
+ wasm.__wbg_automerge_free(ptr);
+ }
+ /**
+ * @param {string | undefined} actor
+ * @param {number} text_rep
+ * @returns {Automerge}
+ */
+ static new(actor, text_rep) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ var ptr0 = isLikeNone(actor) ? 0 : passStringToWasm0(actor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.automerge_new(retptr, ptr0, len0, text_rep);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return Automerge.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {string | undefined} actor
+ * @returns {Automerge}
+ */
+ clone(actor) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ var ptr0 = isLikeNone(actor) ? 0 : passStringToWasm0(actor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.automerge_clone(retptr, this.ptr, ptr0, len0);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return Automerge.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {string | undefined} actor
+ * @param {any} heads
+ * @returns {Automerge}
+ */
+ fork(actor, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ var ptr0 = isLikeNone(actor) ? 0 : passStringToWasm0(actor, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.automerge_fork(retptr, this.ptr, ptr0, len0, addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return Automerge.__wrap(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @returns {any}
+ */
+ pendingOps() {
+ const ret = wasm.automerge_pendingOps(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @param {string | undefined} message
+ * @param {number | undefined} time
+ * @returns {any}
+ */
+ commit(message, time) {
+ var ptr0 = isLikeNone(message) ? 0 : passStringToWasm0(message, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ const ret = wasm.automerge_commit(this.ptr, ptr0, len0, !isLikeNone(time), isLikeNone(time) ? 0 : time);
+ return takeObject(ret);
+ }
+ /**
+ * @param {Automerge} other
+ * @returns {Array}
+ */
+ merge(other) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ _assertClass(other, Automerge);
+ wasm.automerge_merge(retptr, this.ptr, other.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @returns {number}
+ */
+ rollback() {
+ const ret = wasm.automerge_rollback(this.ptr);
+ return ret;
+ }
+ /**
+ * @param {any} obj
+ * @param {Array | undefined} heads
+ * @returns {Array}
+ */
+ keys(obj, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_keys(retptr, this.ptr, addHeapObject(obj), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {Array | undefined} heads
+ * @returns {string}
+ */
+ text(obj, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_text(retptr, this.ptr, addHeapObject(obj), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ var r3 = getInt32Memory0()[retptr / 4 + 3];
+ var ptr0 = r0;
+ var len0 = r1;
+ if (r3) {
+ ptr0 = 0; len0 = 0;
+ throw takeObject(r2);
+ }
+ return getStringFromWasm0(ptr0, len0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ wasm.__wbindgen_free(ptr0, len0);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {number} start
+ * @param {number} delete_count
+ * @param {any} text
+ */
+ splice(obj, start, delete_count, text) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_splice(retptr, this.ptr, addHeapObject(obj), start, delete_count, addHeapObject(text));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} value
+ * @param {any} datatype
+ */
+ push(obj, value, datatype) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_push(retptr, this.ptr, addHeapObject(obj), addHeapObject(value), addHeapObject(datatype));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} value
+ * @returns {string | undefined}
+ */
+ pushObject(obj, value) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_pushObject(retptr, this.ptr, addHeapObject(obj), addHeapObject(value));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ var r3 = getInt32Memory0()[retptr / 4 + 3];
+ if (r3) {
+ throw takeObject(r2);
+ }
+ let v0;
+ if (r0 !== 0) {
+ v0 = getStringFromWasm0(r0, r1).slice();
+ wasm.__wbindgen_free(r0, r1 * 1);
+ }
+ return v0;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {number} index
+ * @param {any} value
+ * @param {any} datatype
+ */
+ insert(obj, index, value, datatype) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_insert(retptr, this.ptr, addHeapObject(obj), index, addHeapObject(value), addHeapObject(datatype));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {number} index
+ * @param {any} value
+ * @returns {string | undefined}
+ */
+ insertObject(obj, index, value) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_insertObject(retptr, this.ptr, addHeapObject(obj), index, addHeapObject(value));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ var r3 = getInt32Memory0()[retptr / 4 + 3];
+ if (r3) {
+ throw takeObject(r2);
+ }
+ let v0;
+ if (r0 !== 0) {
+ v0 = getStringFromWasm0(r0, r1).slice();
+ wasm.__wbindgen_free(r0, r1 * 1);
+ }
+ return v0;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ * @param {any} value
+ * @param {any} datatype
+ */
+ put(obj, prop, value, datatype) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_put(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop), addHeapObject(value), addHeapObject(datatype));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ * @param {any} value
+ * @returns {any}
+ */
+ putObject(obj, prop, value) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_putObject(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop), addHeapObject(value));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ * @param {any} value
+ */
+ increment(obj, prop, value) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_increment(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop), addHeapObject(value));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ * @param {Array | undefined} heads
+ * @returns {any}
+ */
+ get(obj, prop, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_get(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ * @param {Array | undefined} heads
+ * @returns {any}
+ */
+ getWithType(obj, prop, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getWithType(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} arg
+ * @param {Array | undefined} heads
+ * @returns {Array}
+ */
+ getAll(obj, arg, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getAll(retptr, this.ptr, addHeapObject(obj), addHeapObject(arg), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} enable
+ * @returns {any}
+ */
+ enableFreeze(enable) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_enableFreeze(retptr, this.ptr, addHeapObject(enable));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} enable
+ * @returns {any}
+ */
+ enablePatches(enable) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_enablePatches(retptr, this.ptr, addHeapObject(enable));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} datatype
+ * @param {any} _function
+ */
+ registerDatatype(datatype, _function) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_registerDatatype(retptr, this.ptr, addHeapObject(datatype), addHeapObject(_function));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} object
+ * @param {any} meta
+ * @param {any} callback
+ * @returns {any}
+ */
+ applyPatches(object, meta, callback) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_applyPatches(retptr, this.ptr, addHeapObject(object), addHeapObject(meta), addHeapObject(callback));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @returns {Array}
+ */
+ popPatches() {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_popPatches(retptr, this.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {Array | undefined} heads
+ * @returns {number}
+ */
+ length(obj, heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_length(retptr, this.ptr, addHeapObject(obj), isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getFloat64Memory0()[retptr / 8 + 0];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ var r3 = getInt32Memory0()[retptr / 4 + 3];
+ if (r3) {
+ throw takeObject(r2);
+ }
+ return r0;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {any} prop
+ */
+ delete(obj, prop) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_delete(retptr, this.ptr, addHeapObject(obj), addHeapObject(prop));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @returns {Uint8Array}
+ */
+ save() {
+ const ret = wasm.automerge_save(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @returns {Uint8Array}
+ */
+ saveIncremental() {
+ const ret = wasm.automerge_saveIncremental(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @param {Uint8Array} data
+ * @returns {number}
+ */
+ loadIncremental(data) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_loadIncremental(retptr, this.ptr, addHeapObject(data));
+ var r0 = getFloat64Memory0()[retptr / 8 + 0];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ var r3 = getInt32Memory0()[retptr / 4 + 3];
+ if (r3) {
+ throw takeObject(r2);
+ }
+ return r0;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} changes
+ */
+ applyChanges(changes) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_applyChanges(retptr, this.ptr, addHeapObject(changes));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} have_deps
+ * @returns {Array}
+ */
+ getChanges(have_deps) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getChanges(retptr, this.ptr, addHeapObject(have_deps));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} hash
+ * @returns {any}
+ */
+ getChangeByHash(hash) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getChangeByHash(retptr, this.ptr, addHeapObject(hash));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {Automerge} other
+ * @returns {Array}
+ */
+ getChangesAdded(other) {
+ _assertClass(other, Automerge);
+ const ret = wasm.automerge_getChangesAdded(this.ptr, other.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @returns {Array}
+ */
+ getHeads() {
+ const ret = wasm.automerge_getHeads(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @returns {string}
+ */
+ getActorId() {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getActorId(retptr, this.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ return getStringFromWasm0(r0, r1);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ wasm.__wbindgen_free(r0, r1);
+ }
+ }
+ /**
+ * @returns {any}
+ */
+ getLastLocalChange() {
+ const ret = wasm.automerge_getLastLocalChange(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ */
+ dump() {
+ wasm.automerge_dump(this.ptr);
+ }
+ /**
+ * @param {Array | undefined} heads
+ * @returns {Array}
+ */
+ getMissingDeps(heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_getMissingDeps(retptr, this.ptr, isLikeNone(heads) ? 0 : addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {SyncState} state
+ * @param {Uint8Array} message
+ */
+ receiveSyncMessage(state, message) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ _assertClass(state, SyncState);
+ wasm.automerge_receiveSyncMessage(retptr, this.ptr, state.ptr, addHeapObject(message));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {SyncState} state
+ * @returns {any}
+ */
+ generateSyncMessage(state) {
+ _assertClass(state, SyncState);
+ const ret = wasm.automerge_generateSyncMessage(this.ptr, state.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @param {any} meta
+ * @returns {any}
+ */
+ toJS(meta) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_toJS(retptr, this.ptr, addHeapObject(meta));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} obj
+ * @param {Array | undefined} heads
+ * @param {any} meta
+ * @returns {any}
+ */
+ materialize(obj, heads, meta) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.automerge_materialize(retptr, this.ptr, addHeapObject(obj), isLikeNone(heads) ? 0 : addHeapObject(heads), addHeapObject(meta));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ var r2 = getInt32Memory0()[retptr / 4 + 2];
+ if (r2) {
+ throw takeObject(r1);
+ }
+ return takeObject(r0);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {string | undefined} message
+ * @param {number | undefined} time
+ * @returns {any}
+ */
+ emptyChange(message, time) {
+ var ptr0 = isLikeNone(message) ? 0 : passStringToWasm0(message, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ const ret = wasm.automerge_emptyChange(this.ptr, ptr0, len0, !isLikeNone(time), isLikeNone(time) ? 0 : time);
+ return takeObject(ret);
+ }
+}
+
+const SyncStateFinalization = new FinalizationRegistry(ptr => wasm.__wbg_syncstate_free(ptr));
+/**
+*/
+export class SyncState {
+
+ static __wrap(ptr) {
+ const obj = Object.create(SyncState.prototype);
+ obj.ptr = ptr;
+ SyncStateFinalization.register(obj, obj.ptr, obj);
+ return obj;
+ }
+
+ __destroy_into_raw() {
+ const ptr = this.ptr;
+ this.ptr = 0;
+ SyncStateFinalization.unregister(this);
+ return ptr;
+ }
+
+ free() {
+ const ptr = this.__destroy_into_raw();
+ wasm.__wbg_syncstate_free(ptr);
+ }
+ /**
+ * @returns {any}
+ */
+ get sharedHeads() {
+ const ret = wasm.syncstate_sharedHeads(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @returns {any}
+ */
+ get lastSentHeads() {
+ const ret = wasm.syncstate_lastSentHeads(this.ptr);
+ return takeObject(ret);
+ }
+ /**
+ * @param {any} heads
+ */
+ set lastSentHeads(heads) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.syncstate_set_lastSentHeads(retptr, this.ptr, addHeapObject(heads));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {any} hashes
+ */
+ set sentHashes(hashes) {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.syncstate_set_sentHashes(retptr, this.ptr, addHeapObject(hashes));
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ if (r1) {
+ throw takeObject(r0);
+ }
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @returns {SyncState}
+ */
+ clone() {
+ const ret = wasm.syncstate_clone(this.ptr);
+ return SyncState.__wrap(ret);
+ }
+}
+
+const imports = {
+ __wbindgen_placeholder__: {
+ __wbindgen_is_undefined: function(arg0) {
+ const ret = getObject(arg0) === undefined;
+ return ret;
+ },
+ __wbindgen_number_get: function(arg0, arg1) {
+ const obj = getObject(arg1);
+ const ret = typeof(obj) === 'number' ? obj : undefined;
+ getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;
+ getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);
+ },
+ __wbindgen_boolean_get: function(arg0) {
+ const v = getObject(arg0);
+ const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;
+ return ret;
+ },
+ __wbindgen_is_null: function(arg0) {
+ const ret = getObject(arg0) === null;
+ return ret;
+ },
+ __wbindgen_number_new: function(arg0) {
+ const ret = arg0;
+ return addHeapObject(ret);
+ },
+ __wbindgen_string_new: function(arg0, arg1) {
+ const ret = getStringFromWasm0(arg0, arg1);
+ return addHeapObject(ret);
+ },
+ __wbindgen_string_get: function(arg0, arg1) {
+ const obj = getObject(arg1);
+ const ret = typeof(obj) === 'string' ? obj : undefined;
+ var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ },
+ __wbindgen_is_string: function(arg0) {
+ const ret = typeof(getObject(arg0)) === 'string';
+ return ret;
+ },
+ __wbindgen_object_clone_ref: function(arg0) {
+ const ret = getObject(arg0);
+ return addHeapObject(ret);
+ },
+ __wbindgen_json_serialize: function(arg0, arg1) {
+ const obj = getObject(arg1);
+ const ret = JSON.stringify(obj === undefined ? null : obj);
+ const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len0 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ },
+ __wbg_error_f851667af71bcfc6: function(arg0, arg1) {
+ try {
+ console.error(getStringFromWasm0(arg0, arg1));
+ } finally {
+ wasm.__wbindgen_free(arg0, arg1);
+ }
+ },
+ __wbg_new_abda76e883ba8a5f: function() {
+ const ret = new Error();
+ return addHeapObject(ret);
+ },
+ __wbg_stack_658279fe44541cf6: function(arg0, arg1) {
+ const ret = getObject(arg1).stack;
+ const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len0 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ },
+ __wbindgen_object_drop_ref: function(arg0) {
+ takeObject(arg0);
+ },
+ __wbindgen_error_new: function(arg0, arg1) {
+ const ret = new Error(getStringFromWasm0(arg0, arg1));
+ return addHeapObject(ret);
+ },
+ __wbindgen_jsval_loose_eq: function(arg0, arg1) {
+ const ret = getObject(arg0) == getObject(arg1);
+ return ret;
+ },
+ __wbindgen_is_object: function(arg0) {
+ const val = getObject(arg0);
+ const ret = typeof(val) === 'object' && val !== null;
+ return ret;
+ },
+ __wbindgen_bigint_from_i64: function(arg0) {
+ const ret = arg0;
+ return addHeapObject(ret);
+ },
+ __wbindgen_bigint_from_u64: function(arg0) {
+ const ret = BigInt.asUintN(64, arg0);
+ return addHeapObject(ret);
+ },
+ __wbg_set_20cbc34131e76824: function(arg0, arg1, arg2) {
+ getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
+ },
+ __wbg_String_91fba7ded13ba54c: function(arg0, arg1) {
+ const ret = String(getObject(arg1));
+ const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len0 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ },
+ __wbg_crypto_e1d53a1d73fb10b8: function(arg0) {
+ const ret = getObject(arg0).crypto;
+ return addHeapObject(ret);
+ },
+ __wbg_msCrypto_6e7d3e1f92610cbb: function(arg0) {
+ const ret = getObject(arg0).msCrypto;
+ return addHeapObject(ret);
+ },
+ __wbg_getRandomValues_805f1c3d65988a5a: function() { return handleError(function (arg0, arg1) {
+ getObject(arg0).getRandomValues(getObject(arg1));
+ }, arguments) },
+ __wbg_randomFillSync_6894564c2c334c42: function() { return handleError(function (arg0, arg1, arg2) {
+ getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));
+ }, arguments) },
+ __wbg_require_78a3dcfbdba9cbce: function() { return handleError(function () {
+ const ret = module.require;
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_process_038c26bf42b093f8: function(arg0) {
+ const ret = getObject(arg0).process;
+ return addHeapObject(ret);
+ },
+ __wbg_versions_ab37218d2f0b24a8: function(arg0) {
+ const ret = getObject(arg0).versions;
+ return addHeapObject(ret);
+ },
+ __wbg_node_080f4b19d15bc1fe: function(arg0) {
+ const ret = getObject(arg0).node;
+ return addHeapObject(ret);
+ },
+ __wbg_log_4b5638ad60bdc54a: function(arg0) {
+ console.log(getObject(arg0));
+ },
+ __wbg_log_89ca282a8a49b121: function(arg0, arg1) {
+ console.log(getObject(arg0), getObject(arg1));
+ },
+ __wbg_new_1d9a920c6bfc44a8: function() {
+ const ret = new Array();
+ return addHeapObject(ret);
+ },
+ __wbg_get_57245cc7d7c7619d: function(arg0, arg1) {
+ const ret = getObject(arg0)[arg1 >>> 0];
+ return addHeapObject(ret);
+ },
+ __wbg_set_a68214f35c417fa9: function(arg0, arg1, arg2) {
+ getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
+ },
+ __wbg_from_7ce3cb27cb258569: function(arg0) {
+ const ret = Array.from(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_isArray_27c46c67f498e15d: function(arg0) {
+ const ret = Array.isArray(getObject(arg0));
+ return ret;
+ },
+ __wbg_length_6e3bbe7c8bd4dbd8: function(arg0) {
+ const ret = getObject(arg0).length;
+ return ret;
+ },
+ __wbg_push_740e4b286702d964: function(arg0, arg1) {
+ const ret = getObject(arg0).push(getObject(arg1));
+ return ret;
+ },
+ __wbg_unshift_1bf718f5eb23ad8a: function(arg0, arg1) {
+ const ret = getObject(arg0).unshift(getObject(arg1));
+ return ret;
+ },
+ __wbg_instanceof_ArrayBuffer_e5e48f4762c5610b: function(arg0) {
+ let result;
+ try {
+ result = getObject(arg0) instanceof ArrayBuffer;
+ } catch {
+ result = false;
+ }
+ const ret = result;
+ return ret;
+ },
+ __wbg_new_8d2af00bc1e329ee: function(arg0, arg1) {
+ const ret = new Error(getStringFromWasm0(arg0, arg1));
+ return addHeapObject(ret);
+ },
+ __wbg_newnoargs_b5b063fc6c2f0376: function(arg0, arg1) {
+ const ret = new Function(getStringFromWasm0(arg0, arg1));
+ return addHeapObject(ret);
+ },
+ __wbg_call_97ae9d8645dc388b: function() { return handleError(function (arg0, arg1) {
+ const ret = getObject(arg0).call(getObject(arg1));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_call_168da88779e35f61: function() { return handleError(function (arg0, arg1, arg2) {
+ const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_call_e1f72c051cdab859: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
+ const ret = getObject(arg0).call(getObject(arg1), getObject(arg2), getObject(arg3), getObject(arg4));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_next_aaef7c8aa5e212ac: function() { return handleError(function (arg0) {
+ const ret = getObject(arg0).next();
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_next_579e583d33566a86: function(arg0) {
+ const ret = getObject(arg0).next;
+ return addHeapObject(ret);
+ },
+ __wbg_done_1b73b0672e15f234: function(arg0) {
+ const ret = getObject(arg0).done;
+ return ret;
+ },
+ __wbg_value_1ccc36bc03462d71: function(arg0) {
+ const ret = getObject(arg0).value;
+ return addHeapObject(ret);
+ },
+ __wbg_instanceof_Date_b979044f17219415: function(arg0) {
+ let result;
+ try {
+ result = getObject(arg0) instanceof Date;
+ } catch {
+ result = false;
+ }
+ const ret = result;
+ return ret;
+ },
+ __wbg_getTime_cb82adb2556ed13e: function(arg0) {
+ const ret = getObject(arg0).getTime();
+ return ret;
+ },
+ __wbg_new_c8631234f931e1c4: function(arg0) {
+ const ret = new Date(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_instanceof_Object_595a1007518cbea3: function(arg0) {
+ let result;
+ try {
+ result = getObject(arg0) instanceof Object;
+ } catch {
+ result = false;
+ }
+ const ret = result;
+ return ret;
+ },
+ __wbg_assign_e3deabdbb7f0913d: function(arg0, arg1) {
+ const ret = Object.assign(getObject(arg0), getObject(arg1));
+ return addHeapObject(ret);
+ },
+ __wbg_defineProperty_e47dcaf04849e02c: function(arg0, arg1, arg2) {
+ const ret = Object.defineProperty(getObject(arg0), getObject(arg1), getObject(arg2));
+ return addHeapObject(ret);
+ },
+ __wbg_entries_65a76a413fc91037: function(arg0) {
+ const ret = Object.entries(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_freeze_863b0fb5229a1aa6: function(arg0) {
+ const ret = Object.freeze(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_keys_0702294afaeb6044: function(arg0) {
+ const ret = Object.keys(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_new_0b9bfdd97583284e: function() {
+ const ret = new Object();
+ return addHeapObject(ret);
+ },
+ __wbg_values_f72d246067c121fe: function(arg0) {
+ const ret = Object.values(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_length_f2ab5db52e68a619: function(arg0) {
+ const ret = getObject(arg0).length;
+ return ret;
+ },
+ __wbg_concat_783dc3b16a989c3a: function(arg0, arg1) {
+ const ret = getObject(arg0).concat(getObject(arg1));
+ return addHeapObject(ret);
+ },
+ __wbg_slice_283900b9d91a5de8: function(arg0, arg1, arg2) {
+ const ret = getObject(arg0).slice(arg1 >>> 0, arg2 >>> 0);
+ return addHeapObject(ret);
+ },
+ __wbg_iterator_6f9d4f28845f426c: function() {
+ const ret = Symbol.iterator;
+ return addHeapObject(ret);
+ },
+ __wbg_for_5dcca67bf52b18ca: function(arg0, arg1) {
+ const ret = Symbol.for(getStringFromWasm0(arg0, arg1));
+ return addHeapObject(ret);
+ },
+ __wbg_toString_1f0448acb8520180: function(arg0) {
+ const ret = getObject(arg0).toString();
+ return addHeapObject(ret);
+ },
+ __wbg_globalThis_7f206bda628d5286: function() { return handleError(function () {
+ const ret = globalThis.globalThis;
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_self_6d479506f72c6a71: function() { return handleError(function () {
+ const ret = self.self;
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_window_f2557cc78490aceb: function() { return handleError(function () {
+ const ret = window.window;
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_global_ba75c50d1cf384f4: function() { return handleError(function () {
+ const ret = global.global;
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_instanceof_Uint8Array_971eeda69eb75003: function(arg0) {
+ let result;
+ try {
+ result = getObject(arg0) instanceof Uint8Array;
+ } catch {
+ result = false;
+ }
+ const ret = result;
+ return ret;
+ },
+ __wbg_new_8c3f0052272a457a: function(arg0) {
+ const ret = new Uint8Array(getObject(arg0));
+ return addHeapObject(ret);
+ },
+ __wbg_newwithlength_f5933855e4f48a19: function(arg0) {
+ const ret = new Uint8Array(arg0 >>> 0);
+ return addHeapObject(ret);
+ },
+ __wbg_newwithbyteoffsetandlength_d9aa266703cb98be: function(arg0, arg1, arg2) {
+ const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
+ return addHeapObject(ret);
+ },
+ __wbg_subarray_58ad4efbb5bcb886: function(arg0, arg1, arg2) {
+ const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
+ return addHeapObject(ret);
+ },
+ __wbg_length_9e1ae1900cb0fbd5: function(arg0) {
+ const ret = getObject(arg0).length;
+ return ret;
+ },
+ __wbg_set_83db9690f9353e79: function(arg0, arg1, arg2) {
+ getObject(arg0).set(getObject(arg1), arg2 >>> 0);
+ },
+ __wbindgen_is_function: function(arg0) {
+ const ret = typeof(getObject(arg0)) === 'function';
+ return ret;
+ },
+ __wbg_buffer_3f3d764d4747d564: function(arg0) {
+ const ret = getObject(arg0).buffer;
+ return addHeapObject(ret);
+ },
+ __wbg_apply_75f7334893eef4ad: function() { return handleError(function (arg0, arg1, arg2) {
+ const ret = Reflect.apply(getObject(arg0), getObject(arg1), getObject(arg2));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_deleteProperty_424563545efc9635: function() { return handleError(function (arg0, arg1) {
+ const ret = Reflect.deleteProperty(getObject(arg0), getObject(arg1));
+ return ret;
+ }, arguments) },
+ __wbg_get_765201544a2b6869: function() { return handleError(function (arg0, arg1) {
+ const ret = Reflect.get(getObject(arg0), getObject(arg1));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_ownKeys_bf24e1178641d9f0: function() { return handleError(function (arg0) {
+ const ret = Reflect.ownKeys(getObject(arg0));
+ return addHeapObject(ret);
+ }, arguments) },
+ __wbg_set_bf3f89b92d5a34bf: function() { return handleError(function (arg0, arg1, arg2) {
+ const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
+ return ret;
+ }, arguments) },
+ __wbindgen_debug_string: function(arg0, arg1) {
+ const ret = debugString(getObject(arg1));
+ const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ const len0 = WASM_VECTOR_LEN;
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
+ },
+ __wbindgen_throw: function(arg0, arg1) {
+ throw new Error(getStringFromWasm0(arg0, arg1));
+ },
+ __wbindgen_memory: function() {
+ const ret = wasm.memory;
+ return addHeapObject(ret);
+ },
+ },
+
+};
+
+const wasm_url = new URL('automerge_wasm_bg.wasm', import.meta.url);
+let wasmCode = '';
+switch (wasm_url.protocol) {
+ case 'file:':
+ wasmCode = await Deno.readFile(wasm_url);
+ break
+ case 'https:':
+ case 'http:':
+ wasmCode = await (await fetch(wasm_url)).arrayBuffer();
+ break
+ default:
+ throw new Error(`Unsupported protocol: ${wasm_url.protocol}`);
+}
+
+const wasmInstance = (await WebAssembly.instantiate(wasmCode, imports)).instance;
+const wasm = wasmInstance.exports;
+
diff --git a/deno_wasm_dist/automerge_wasm_bg.wasm b/deno_wasm_dist/automerge_wasm_bg.wasm
new file mode 100644
index 00000000..8603ac89
Binary files /dev/null and b/deno_wasm_dist/automerge_wasm_bg.wasm differ
diff --git a/deno_wasm_dist/index.d.ts b/deno_wasm_dist/index.d.ts
new file mode 100644
index 00000000..29586b47
--- /dev/null
+++ b/deno_wasm_dist/index.d.ts
@@ -0,0 +1,232 @@
+export type Actor = string;
+export type ObjID = string;
+export type Change = Uint8Array;
+export type SyncMessage = Uint8Array;
+export type Prop = string | number;
+export type Hash = string;
+export type Heads = Hash[];
+export type Value = string | number | boolean | null | Date | Uint8Array
+export type MaterializeValue = { [key:string]: MaterializeValue } | Array | Value
+export type ObjType = string | Array | { [key: string]: ObjType | Value }
+export type FullValue =
+ ["str", string] |
+ ["int", number] |
+ ["uint", number] |
+ ["f64", number] |
+ ["boolean", boolean] |
+ ["timestamp", Date] |
+ ["counter", number] |
+ ["bytes", Uint8Array] |
+ ["null", null] |
+ ["map", ObjID] |
+ ["list", ObjID] |
+ ["text", ObjID] |
+ ["table", ObjID]
+
+export type FullValueWithId =
+ ["str", string, ObjID ] |
+ ["int", number, ObjID ] |
+ ["uint", number, ObjID ] |
+ ["f64", number, ObjID ] |
+ ["boolean", boolean, ObjID ] |
+ ["timestamp", Date, ObjID ] |
+ ["counter", number, ObjID ] |
+ ["bytes", Uint8Array, ObjID ] |
+ ["null", null, ObjID ] |
+ ["map", ObjID ] |
+ ["list", ObjID] |
+ ["text", ObjID] |
+ ["table", ObjID]
+
+export enum ObjTypeName {
+ list = "list",
+ map = "map",
+ table = "table",
+ text = "text",
+}
+
+export type Datatype =
+ "boolean" |
+ "str" |
+ "int" |
+ "uint" |
+ "f64" |
+ "null" |
+ "timestamp" |
+ "counter" |
+ "bytes" |
+ "map" |
+ "text" |
+ "list";
+
+export type SyncHave = {
+ lastSync: Heads,
+ bloom: Uint8Array,
+}
+
+export type DecodedSyncMessage = {
+ heads: Heads,
+ need: Heads,
+ have: SyncHave[]
+ changes: Change[]
+}
+
+export type DecodedChange = {
+ actor: Actor,
+ seq: number
+ startOp: number,
+ time: number,
+ message: string | null,
+ deps: Heads,
+ hash: Hash,
+ ops: Op[]
+}
+
+type PartialBy = Omit & Partial>
+export type ChangeToEncode = PartialBy
+
+export type Op = {
+ action: string,
+ obj: ObjID,
+ key: string,
+ value?: string | number | boolean,
+ datatype?: string,
+ pred: string[],
+}
+
+export type Patch = PutPatch | DelPatch | SplicePatch | IncPatch;
+
+export type PutPatch = {
+ action: 'put'
+ path: Prop[],
+ value: Value
+ conflict: boolean
+}
+
+export type IncPatch = {
+ action: 'inc'
+ path: Prop[],
+ value: number
+}
+
+export type DelPatch = {
+ action: 'del'
+ path: Prop[],
+ length?: number,
+}
+
+export type SplicePatch = {
+ action: 'splice'
+ path: Prop[],
+ values: Value[],
+}
+
+export function encodeChange(change: ChangeToEncode): Change;
+export function create(text_v2: boolean, actor?: Actor): Automerge;
+export function load(data: Uint8Array, text_v2: boolean, actor?: Actor): Automerge;
+export function decodeChange(change: Change): DecodedChange;
+export function initSyncState(): SyncState;
+export function encodeSyncMessage(message: DecodedSyncMessage): SyncMessage;
+export function decodeSyncMessage(msg: SyncMessage): DecodedSyncMessage;
+export function encodeSyncState(state: SyncState): Uint8Array;
+export function decodeSyncState(data: Uint8Array): SyncState;
+export function exportSyncState(state: SyncState): JsSyncState;
+export function importSyncState(state: JsSyncState): SyncState;
+
+export interface API {
+ create(text_v2: boolean, actor?: Actor): Automerge;
+ load(data: Uint8Array, text_v2: boolean, actor?: Actor): Automerge;
+ encodeChange(change: ChangeToEncode): Change;
+ decodeChange(change: Change): DecodedChange;
+ initSyncState(): SyncState;
+ encodeSyncMessage(message: DecodedSyncMessage): SyncMessage;
+ decodeSyncMessage(msg: SyncMessage): DecodedSyncMessage;
+ encodeSyncState(state: SyncState): Uint8Array;
+ decodeSyncState(data: Uint8Array): SyncState;
+ exportSyncState(state: SyncState): JsSyncState;
+ importSyncState(state: JsSyncState): SyncState;
+}
+
+export class Automerge {
+ // change state
+ put(obj: ObjID, prop: Prop, value: Value, datatype?: Datatype): void;
+ putObject(obj: ObjID, prop: Prop, value: ObjType): ObjID;
+ insert(obj: ObjID, index: number, value: Value, datatype?: Datatype): void;
+ insertObject(obj: ObjID, index: number, value: ObjType): ObjID;
+ push(obj: ObjID, value: Value, datatype?: Datatype): void;
+ pushObject(obj: ObjID, value: ObjType): ObjID;
+ splice(obj: ObjID, start: number, delete_count: number, text?: string | Array): ObjID[] | undefined;
+ increment(obj: ObjID, prop: Prop, value: number): void;
+ delete(obj: ObjID, prop: Prop): void;
+
+ // returns a single value - if there is a conflict return the winner
+ get(obj: ObjID, prop: Prop, heads?: Heads): Value | undefined;
+ getWithType(obj: ObjID, prop: Prop, heads?: Heads): FullValue | null;
+ // return all values in case of a conflict
+ getAll(obj: ObjID, arg: Prop, heads?: Heads): FullValueWithId[];
+ keys(obj: ObjID, heads?: Heads): string[];
+ text(obj: ObjID, heads?: Heads): string;
+ length(obj: ObjID, heads?: Heads): number;
+ materialize(obj?: ObjID, heads?: Heads, metadata?: unknown): MaterializeValue;
+ toJS(): MaterializeValue;
+
+ // transactions
+ commit(message?: string, time?: number): Hash | null;
+ emptyChange(message?: string, time?: number): Hash;
+ merge(other: Automerge): Heads;
+ getActorId(): Actor;
+ pendingOps(): number;
+ rollback(): number;
+
+ // patches
+ enablePatches(enable: boolean): boolean;
+ enableFreeze(enable: boolean): boolean;
+ registerDatatype(datatype: string, callback: Function): void;
+ popPatches(): Patch[];
+
+ // save and load to local store
+ save(): Uint8Array;
+ saveIncremental(): Uint8Array;
+ loadIncremental(data: Uint8Array): number;
+
+ // sync over network
+ receiveSyncMessage(state: SyncState, message: SyncMessage): void;
+ generateSyncMessage(state: SyncState): SyncMessage | null;
+
+ // low level change functions
+ applyChanges(changes: Change[]): void;
+ getChanges(have_deps: Heads): Change[];
+ getChangeByHash(hash: Hash): Change | null;
+ getChangesAdded(other: Automerge): Change[];
+ getHeads(): Heads;
+ getLastLocalChange(): Change | null;
+ getMissingDeps(heads?: Heads): Heads;
+
+ // memory management
+ free(): void; // only needed if weak-refs are unsupported
+ clone(actor?: string): Automerge; // TODO - remove, this is dangerous
+ fork(actor?: string, heads?: Heads): Automerge;
+
+ // dump internal state to console.log - for debugging
+ dump(): void;
+
+ // experimental api can go here
+ applyPatches(obj: Doc, meta?: unknown, callback?: (patch: Array, before: Doc, after: Doc) => void): Doc;
+}
+
+export interface JsSyncState {
+ sharedHeads: Heads;
+ lastSentHeads: Heads;
+ theirHeads: Heads | undefined;
+ theirHeed: Heads | undefined;
+ theirHave: SyncHave[] | undefined;
+ sentHashes: Heads;
+}
+
+export class SyncState {
+ free(): void;
+ clone(): SyncState;
+ lastSentHeads: Heads;
+ sentHashes: Heads;
+ readonly sharedHeads: Heads;
+}