braid-text 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.js +24 -11
  2. package/package.json +1 -1
  3. package/test.html +5 -18
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- let { Doc } = require("diamond-types-node")
2
+ let { Doc, OpLog, Branch } = require("diamond-types-node")
3
3
  let braidify = require("braid-http").http_server
4
4
  let fs = require("fs")
5
5
 
@@ -207,8 +207,7 @@ braid_text.serve = async (req, res, options = {}) => {
207
207
  }
208
208
 
209
209
  braid_text.delete = async (key) => {
210
- let resource = (typeof key == 'string') ? await get_resource(key) : key
211
- await resource.delete_me()
210
+ await braid_text.put(key, {body: ''})
212
211
  }
213
212
 
214
213
  braid_text.get = async (key, options) => {
@@ -349,15 +348,8 @@ braid_text.put = async (key, options) => {
349
348
  let parents = resource.doc.getRemoteVersion().map((x) => x.join("-")).sort()
350
349
  let og_parents = options_parents || parents
351
350
 
352
- function get_len() {
353
- let d = dt_get(resource.doc, og_parents)
354
- let len = d.len()
355
- d.free()
356
- return len
357
- }
358
-
359
351
  let max_pos = resource.length_cache.get('' + og_parents) ??
360
- (v_eq(parents, og_parents) ? resource.doc.len() : get_len())
352
+ (v_eq(parents, og_parents) ? resource.doc.len() : dt_len(resource.doc, og_parents))
361
353
 
362
354
  if (body != null) {
363
355
  patches = [{
@@ -825,6 +817,27 @@ async function file_sync(key, process_delta, get_init) {
825
817
  //////////////////////////////////////////////////////////////////
826
818
  //////////////////////////////////////////////////////////////////
827
819
 
820
+ function dt_len(doc, version) {
821
+ let bytes = doc.toBytes()
822
+ let oplog = OpLog.fromBytes(bytes)
823
+ let [_agents, versions, _parentss] = dt_parse([...bytes])
824
+
825
+ let frontier = {}
826
+ version.forEach((x) => frontier[x] = true)
827
+
828
+ let local_version = []
829
+ for (let i = 0; i < versions.length; i++)
830
+ if (frontier[versions[i].join("-")]) local_version.push(i)
831
+
832
+ let b = new Branch()
833
+ b.merge(oplog, new Uint32Array(local_version))
834
+ let len = count_code_points(b.get())
835
+ b.free()
836
+
837
+ oplog.free()
838
+ return len
839
+ }
840
+
828
841
  function dt_get(doc, version, agent = null) {
829
842
  if (dt_get.last_doc) dt_get.last_doc.free()
830
843
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-text",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "Library for collaborative text over http using braid.",
5
5
  "author": "Braid Working Group",
6
6
  "repository": "braid-org/braidjs",
package/test.html CHANGED
@@ -110,31 +110,18 @@ runTest(
110
110
  async () => {
111
111
  let key = 'test-' + Math.random().toString(36).slice(2)
112
112
 
113
- let r0 = (await (await fetch(`/test.html?check=/${key}`)).json()).result
114
-
115
113
  await fetch(`/${key}`, {
116
114
  method: 'PUT',
117
- body: JSON.stringify({a: 5, b: 6}, null, 4)
118
- })
119
-
120
- let r1 = (await (await fetch(`/test.html?check=/${key}`)).json()).result
121
-
122
- await fetch(`/${key}`, {
123
- method: 'DELETE'
115
+ body: 'hi'
124
116
  })
125
117
 
126
- let r2 = (await (await fetch(`/test.html?check=/${key}`)).json()).result
118
+ await fetch(`/${key}`, {method: 'DELETE'})
127
119
 
128
- await fetch(`/${key}`, {
129
- method: 'PUT',
130
- body: JSON.stringify({a: 5, b: 7}, null, 4)
131
- })
132
-
133
- let r3 = (await (await fetch(`/test.html?check=/${key}`)).json()).result
120
+ let r = await fetch(`/${key}`)
134
121
 
135
- return JSON.stringify([r0, r1, r2, r3])
122
+ return await r.text()
136
123
  },
137
- JSON.stringify([false, true, false, true])
124
+ ''
138
125
  )
139
126
 
140
127
  runTest(