Sha256: 959be30edc3aacc114240d9e4729d63ea1898bc421c9b029c8eee3cde0794f0f

Contents?: true

Size: 716 Bytes

Versions: 1

Compression:

Stored size: 716 Bytes

Contents

import { Repo, type RepoConfig } from "@automerge/automerge-repo";
import ActionCableNetworkAdapter from "./network-adapter.js"
import { IndexedDBStorageAdapter } from "@automerge/automerge-repo-storage-indexeddb"

declare global {
	interface Window { Syncable?: any }
}

type Syncable = { 
	new (klass: string, id: any, channel?: string, obj?: RepoConfig): Repo 
}

const Syncable: Syncable = new Proxy(Repo, {
	construct: (target, args) => {
		const [ klass, id, channel = "ActionMerge::SyncChannel", obj = {} ] = args
		return new target({
		  network: [new ActionCableNetworkAdapter(channel, klass, id)],
		  storage: new IndexedDBStorageAdapter(),
		  ...obj
		});
	}
}) as Syncable

window.Syncable = Syncable

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
action_merge-0.1.0 app/javascript/action_merge/syncable.ts