braid-text 0.2.45 → 0.2.46

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.
package/index.js CHANGED
@@ -426,7 +426,7 @@ braid_text.put = async (key, options) => {
426
426
  // validate version: make sure we haven't seen it already
427
427
  if (resource.actor_seqs[v[0]]?.has(v[1])) {
428
428
 
429
- if (!options.validate_already_seen_versions) return
429
+ if (!options.validate_already_seen_versions) return { change_count }
430
430
 
431
431
  // if we have seen it already, make sure it's the same as before
432
432
  let updates = dt_get_patches(resource.doc, og_parents)
@@ -483,7 +483,7 @@ braid_text.put = async (key, options) => {
483
483
  }
484
484
 
485
485
  // we already have this version, so nothing left to do
486
- return
486
+ return { change_count: change_count }
487
487
  }
488
488
  if (!resource.actor_seqs[v[0]]) resource.actor_seqs[v[0]] = new RangeSet()
489
489
  resource.actor_seqs[v[0]].add_range(v[1] + 1 - change_count, v[1])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "braid-text",
3
- "version": "0.2.45",
3
+ "version": "0.2.46",
4
4
  "description": "Library for collaborative text over http using braid.",
5
5
  "author": "Braid Working Group",
6
6
  "repository": "braid-org/braid-text",
package/test/test.html CHANGED
@@ -96,6 +96,98 @@ async function runTest(testName, testFunction, expectedResult) {
96
96
  }
97
97
  }
98
98
 
99
+ runTest(
100
+ "test PUTing a version that the server already has",
101
+ async () => {
102
+ var key = 'test-' + Math.random().toString(36).slice(2)
103
+
104
+ var r1 = await braid_fetch(`/${key}`, {
105
+ method: 'PUT',
106
+ version: ['hi-0'],
107
+ parents: [],
108
+ body: 'x'
109
+ })
110
+
111
+ var r2 = await braid_fetch(`/${key}`, {
112
+ method: 'PUT',
113
+ version: ['hi-0'],
114
+ parents: [],
115
+ body: 'x'
116
+ })
117
+
118
+ return r1.status + " " + r2.status
119
+ },
120
+ '200 200'
121
+ )
122
+
123
+ runTest(
124
+ "test validate_already_seen_versions with same version",
125
+ async () => {
126
+ var key = 'test-' + Math.random().toString(36).slice(2)
127
+
128
+ var r1 = await braid_fetch(`/eval`, {
129
+ method: 'PUT',
130
+ body: `void (async () => {
131
+ var resource = await braid_text.get_resource('/${key}')
132
+
133
+ var {change_count} = await braid_text.put(resource, { peer: "abc", version: ["hi-2"], parents: [], patches: [{unit: "text", range: "[0:0]", content: "XYZ"}], merge_type: "dt" })
134
+
135
+ res.end('' + change_count)
136
+ })()`
137
+ })
138
+
139
+ var r2 = await braid_fetch(`/eval`, {
140
+ method: 'PUT',
141
+ body: `void (async () => {
142
+ var resource = await braid_text.get_resource('/${key}')
143
+
144
+ var {change_count} = await braid_text.put(resource, { peer: "abc", version: ["hi-2"], parents: [], patches: [{unit: "text", range: "[0:0]", content: "XYZ"}], merge_type: "dt", validate_already_seen_versions: true })
145
+
146
+ res.end('' + change_count)
147
+ })()`
148
+ })
149
+
150
+ return (await r1.text()) + " " + (await r2.text())
151
+ },
152
+ '3 3'
153
+ )
154
+
155
+ runTest(
156
+ "test validate_already_seen_versions with modified version",
157
+ async () => {
158
+ var key = 'test-' + Math.random().toString(36).slice(2)
159
+
160
+ var r1 = await braid_fetch(`/eval`, {
161
+ method: 'PUT',
162
+ body: `void (async () => {
163
+ var resource = await braid_text.get_resource('/${key}')
164
+
165
+ var {change_count} = await braid_text.put(resource, { peer: "abc", version: ["hi-2"], parents: [], patches: [{unit: "text", range: "[0:0]", content: "XYZ"}], merge_type: "dt" })
166
+
167
+ res.end('' + change_count)
168
+ })()`
169
+ })
170
+
171
+ var r2 = await braid_fetch(`/eval`, {
172
+ method: 'PUT',
173
+ body: `void (async () => {
174
+ var resource = await braid_text.get_resource('/${key}')
175
+
176
+ try {
177
+ var {change_count} = await braid_text.put(resource, { peer: "abc", version: ["hi-2"], parents: [], patches: [{unit: "text", range: "[0:0]", content: "ABC"}], merge_type: "dt", validate_already_seen_versions: true })
178
+
179
+ res.end('' + change_count)
180
+ } catch (e) {
181
+ res.end(e.message)
182
+ }
183
+ })()`
184
+ })
185
+
186
+ return await r2.text()
187
+ },
188
+ 'invalid update: different from previous update with same version'
189
+ )
190
+
99
191
  runTest(
100
192
  "test loading a previously saved resource",
101
193
  async () => {