After some discussion with PVH I realise that the repo structure in the last reorg was very rust-centric. In an attempt to put each language on a level footing move the rust code and project files into ./rust
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1,019 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			1,019 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
 | |
| // this assumes that the automerge-rs folder is checked out along side this repo
 | |
| // and someone has run
 | |
| 
 | |
| // # cd automerge-rs/automerge-backend-wasm
 | |
| // # yarn release
 | |
| 
 | |
| const { edits, finalText } = require('./editing-trace')
 | |
| const Automerge = require('../../automerge')
 | |
| const path = require('path')
 | |
| const wasmBackend = require(path.resolve("../../automerge-rs/automerge-backend-wasm"))
 | |
| Automerge.setDefaultBackend(wasmBackend)
 | |
| 
 | |
| const start = new Date()
 | |
| let state = Automerge.from({text: new Automerge.Text()})
 | |
| 
 | |
| state = Automerge.change(state, doc => {
 | |
|   for (let i = 0; i < edits.length; i++) {
 | |
|     if (i % 10000 === 0) {
 | |
|       console.log(`Processed ${i} edits in ${new Date() - start} ms`)
 | |
|     }
 | |
|     if (edits[i][1] > 0) doc.text.deleteAt(edits[i][0], edits[i][1])
 | |
|     if (edits[i].length > 2) doc.text.insertAt(edits[i][0], ...edits[i].slice(2))
 | |
|   }
 | |
| })
 | |
| 
 | |
| console.log(`Done in ${new Date() - start} ms`)
 | |
| 
 | |
| if (state.text.join('') !== finalText) {
 | |
|   throw new RangeError('ERROR: final text did not match expectation')
 | |
| }
 |