braid-text 0.2.66 → 0.2.67
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 +43 -5
- package/package.json +1 -1
- package/test/test.html +222 -0
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
let { Doc, OpLog, Branch } = require("@braid.org/diamond-types-node")
|
|
3
|
-
let braidify = require("braid-http")
|
|
3
|
+
let {http_server: braidify, fetch: braid_fetch} = require("braid-http")
|
|
4
4
|
let fs = require("fs")
|
|
5
5
|
|
|
6
6
|
function create_braid_text() {
|
|
@@ -291,6 +291,28 @@ function create_braid_text() {
|
|
|
291
291
|
}
|
|
292
292
|
|
|
293
293
|
braid_text.get = async (key, options) => {
|
|
294
|
+
if (key instanceof URL) {
|
|
295
|
+
if (!options) options = {}
|
|
296
|
+
|
|
297
|
+
options.my_abort = new AbortController()
|
|
298
|
+
|
|
299
|
+
var params = {
|
|
300
|
+
signal: options.my_abort.signal,
|
|
301
|
+
retry: () => true,
|
|
302
|
+
subscribe: !!options.subscribe,
|
|
303
|
+
heartbeats: 120,
|
|
304
|
+
}
|
|
305
|
+
for (var x of ['headers', 'parents', 'version', 'peer'])
|
|
306
|
+
if (options[x] != null) params[x] = options[x]
|
|
307
|
+
|
|
308
|
+
var res = await braid_fetch(key.href, params)
|
|
309
|
+
|
|
310
|
+
if (options.subscribe) {
|
|
311
|
+
res.subscribe(options.subscribe)
|
|
312
|
+
return res
|
|
313
|
+
} else return await res.text()
|
|
314
|
+
}
|
|
315
|
+
|
|
294
316
|
if (!options) {
|
|
295
317
|
// if it doesn't exist already, don't create it in this case
|
|
296
318
|
if (!braid_text.cache[key]) return
|
|
@@ -412,6 +434,8 @@ function create_braid_text() {
|
|
|
412
434
|
braid_text.forget = async (key, options) => {
|
|
413
435
|
if (!options) throw new Error('options is required')
|
|
414
436
|
|
|
437
|
+
if (key instanceof URL) return options.my_abort.abort()
|
|
438
|
+
|
|
415
439
|
let resource = (typeof key == 'string') ? await get_resource(key) : key
|
|
416
440
|
|
|
417
441
|
if (options.merge_type != "dt")
|
|
@@ -420,6 +444,20 @@ function create_braid_text() {
|
|
|
420
444
|
}
|
|
421
445
|
|
|
422
446
|
braid_text.put = async (key, options) => {
|
|
447
|
+
if (key instanceof URL) {
|
|
448
|
+
options.my_abort = new AbortController()
|
|
449
|
+
|
|
450
|
+
var params = {
|
|
451
|
+
method: 'PUT',
|
|
452
|
+
signal: options.my_abort.signal,
|
|
453
|
+
retry: () => true,
|
|
454
|
+
}
|
|
455
|
+
for (var x of ['headers', 'parents', 'version', 'peer', 'body'])
|
|
456
|
+
if (options[x] != null) params[x] = options[x]
|
|
457
|
+
|
|
458
|
+
return await braid_fetch(key.href, params)
|
|
459
|
+
}
|
|
460
|
+
|
|
423
461
|
let { version, patches, body, peer } = options
|
|
424
462
|
|
|
425
463
|
// support for json patch puts..
|
|
@@ -894,11 +932,11 @@ function create_braid_text() {
|
|
|
894
932
|
var meta_filename = `${braid_text.db_folder}/.meta/${encoded}`
|
|
895
933
|
var meta_dirty = null
|
|
896
934
|
var meta_saving = null
|
|
935
|
+
var meta_file_content = '{}'
|
|
897
936
|
try {
|
|
898
|
-
|
|
899
|
-
} catch (e) {
|
|
900
|
-
|
|
901
|
-
}
|
|
937
|
+
var meta_file_content = await fs.promises.readFile(meta_filename)
|
|
938
|
+
} catch (e) {}
|
|
939
|
+
set_meta(JSON.parse(meta_file_content))
|
|
902
940
|
|
|
903
941
|
let chain = Promise.resolve()
|
|
904
942
|
return {
|
package/package.json
CHANGED
package/test/test.html
CHANGED
|
@@ -96,6 +96,228 @@ async function runTest(testName, testFunction, expectedResult) {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
// runTest(
|
|
100
|
+
// "test braid_text.get(url), with no options",
|
|
101
|
+
// async () => {
|
|
102
|
+
// var key = 'test-' + Math.random().toString(36).slice(2)
|
|
103
|
+
// let r = await braid_fetch(`/${key}`, {
|
|
104
|
+
// method: 'PUT',
|
|
105
|
+
// body: 'hi'
|
|
106
|
+
// })
|
|
107
|
+
// if (!r.ok) return 'got: ' + r.status
|
|
108
|
+
|
|
109
|
+
// var r1 = await braid_fetch(`/eval`, {
|
|
110
|
+
// method: 'PUT',
|
|
111
|
+
// body: `void (async () => {
|
|
112
|
+
// res.end(await braid_text.get(new URL('http://localhost:8889/${key}')))
|
|
113
|
+
// })()`
|
|
114
|
+
// })
|
|
115
|
+
|
|
116
|
+
// return 'got: ' + (await r1.text())
|
|
117
|
+
// },
|
|
118
|
+
// 'got: hi'
|
|
119
|
+
// )
|
|
120
|
+
|
|
121
|
+
// runTest(
|
|
122
|
+
// "test braid_text.get(url), with headers",
|
|
123
|
+
// async () => {
|
|
124
|
+
// var key = 'test-' + Math.random().toString(36).slice(2)
|
|
125
|
+
// let r = await braid_fetch(`/${key}`, {
|
|
126
|
+
// method: 'PUT',
|
|
127
|
+
// version: ['xyz-1'],
|
|
128
|
+
// body: 'hi'
|
|
129
|
+
// })
|
|
130
|
+
// if (!r.ok) return 'got: ' + r.status
|
|
131
|
+
|
|
132
|
+
// var r1 = await braid_fetch(`/eval`, {
|
|
133
|
+
// method: 'PUT',
|
|
134
|
+
// body: `void (async () => {
|
|
135
|
+
// res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
|
|
136
|
+
// headers: {
|
|
137
|
+
// version: '"xyz-0"'
|
|
138
|
+
// }
|
|
139
|
+
// }))
|
|
140
|
+
// })()`
|
|
141
|
+
// })
|
|
142
|
+
|
|
143
|
+
// return 'got: ' + (await r1.text())
|
|
144
|
+
// },
|
|
145
|
+
// 'got: h'
|
|
146
|
+
// )
|
|
147
|
+
|
|
148
|
+
// runTest(
|
|
149
|
+
// "test braid_text.get(url), with parents",
|
|
150
|
+
// async () => {
|
|
151
|
+
// var key = 'test-' + Math.random().toString(36).slice(2)
|
|
152
|
+
// let r = await braid_fetch(`/${key}`, {
|
|
153
|
+
// method: 'PUT',
|
|
154
|
+
// version: ['xyz-1'],
|
|
155
|
+
// body: 'hi'
|
|
156
|
+
// })
|
|
157
|
+
// if (!r.ok) return 'got: ' + r.status
|
|
158
|
+
|
|
159
|
+
// var r1 = await braid_fetch(`/eval`, {
|
|
160
|
+
// method: 'PUT',
|
|
161
|
+
// body: `void (async () => {
|
|
162
|
+
// res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
|
|
163
|
+
// parents: ['xyz-0']
|
|
164
|
+
// }))
|
|
165
|
+
// })()`
|
|
166
|
+
// })
|
|
167
|
+
|
|
168
|
+
// return 'got: ' + (await r1.text())
|
|
169
|
+
// },
|
|
170
|
+
// 'got: h'
|
|
171
|
+
// )
|
|
172
|
+
|
|
173
|
+
// runTest(
|
|
174
|
+
// "test braid_text.get(url), with version and peer",
|
|
175
|
+
// async () => {
|
|
176
|
+
// var key = 'test-' + Math.random().toString(36).slice(2)
|
|
177
|
+
// let r = await braid_fetch(`/${key}`, {
|
|
178
|
+
// method: 'PUT',
|
|
179
|
+
// version: ['xyz-1'],
|
|
180
|
+
// body: 'hi'
|
|
181
|
+
// })
|
|
182
|
+
// if (!r.ok) return 'got: ' + r.status
|
|
183
|
+
|
|
184
|
+
// var r1 = await braid_fetch(`/eval`, {
|
|
185
|
+
// method: 'PUT',
|
|
186
|
+
// body: `void (async () => {
|
|
187
|
+
// res.end(await braid_text.get(new URL('http://localhost:8889/${key}'), {
|
|
188
|
+
// version: ['xyz-0'],
|
|
189
|
+
// peer: 'xyz'
|
|
190
|
+
// }))
|
|
191
|
+
// })()`
|
|
192
|
+
// })
|
|
193
|
+
|
|
194
|
+
// return 'got: ' + (await r1.text())
|
|
195
|
+
// },
|
|
196
|
+
// 'got: h'
|
|
197
|
+
// )
|
|
198
|
+
|
|
199
|
+
runTest(
|
|
200
|
+
"test braid_text.get(url) with subscription",
|
|
201
|
+
async () => {
|
|
202
|
+
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
203
|
+
let r = await braid_fetch(`/${key}`, {
|
|
204
|
+
method: 'PUT',
|
|
205
|
+
version: ['xyz-1'],
|
|
206
|
+
body: 'hi'
|
|
207
|
+
})
|
|
208
|
+
if (!r.ok) return 'got: ' + r.status
|
|
209
|
+
|
|
210
|
+
var r1 = await braid_fetch(`/eval`, {
|
|
211
|
+
method: 'PUT',
|
|
212
|
+
body: `void (async () => {
|
|
213
|
+
var url = new URL('http://localhost:8889/${key}')
|
|
214
|
+
var update = await new Promise(done => {
|
|
215
|
+
var o = {
|
|
216
|
+
subscribe: update => {
|
|
217
|
+
braid_text.forget(url, o)
|
|
218
|
+
done(update)
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
braid_text.get(url, o)
|
|
222
|
+
})
|
|
223
|
+
res.end(update.body_text)
|
|
224
|
+
})()`
|
|
225
|
+
})
|
|
226
|
+
|
|
227
|
+
return 'got: ' + (await r1.text())
|
|
228
|
+
},
|
|
229
|
+
'got: hi'
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
runTest(
|
|
233
|
+
"test braid_text.put(url), with body",
|
|
234
|
+
async () => {
|
|
235
|
+
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
236
|
+
|
|
237
|
+
var r = await braid_fetch(`/eval`, {
|
|
238
|
+
method: 'PUT',
|
|
239
|
+
body: `void (async () => {
|
|
240
|
+
var r = await braid_text.put(new URL('http://localhost:8889/${key}'),
|
|
241
|
+
{body: 'yo'})
|
|
242
|
+
res.end('')
|
|
243
|
+
})()`
|
|
244
|
+
})
|
|
245
|
+
if (!r.ok) return 'got: ' + r.status
|
|
246
|
+
|
|
247
|
+
let r1 = await braid_fetch(`/${key}`)
|
|
248
|
+
return 'got: ' + (await r1.text())
|
|
249
|
+
},
|
|
250
|
+
'got: yo'
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
runTest(
|
|
254
|
+
"test braid_text.put(url), with body and headers",
|
|
255
|
+
async () => {
|
|
256
|
+
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
257
|
+
|
|
258
|
+
var r = await braid_fetch(`/eval`, {
|
|
259
|
+
method: 'PUT',
|
|
260
|
+
body: `void (async () => {
|
|
261
|
+
var r = await braid_text.put(new URL('http://localhost:8889/${key}'),
|
|
262
|
+
{body: 'yo', headers: {version: '"abc123-1"'}})
|
|
263
|
+
res.end('')
|
|
264
|
+
})()`
|
|
265
|
+
})
|
|
266
|
+
if (!r.ok) return 'got: ' + r.status
|
|
267
|
+
|
|
268
|
+
let r2 = await braid_fetch(`/${key}`)
|
|
269
|
+
return 'got: ' + (await r2.text()) + ' -- version: ' + r2.headers.get('version')
|
|
270
|
+
},
|
|
271
|
+
'got: yo -- version: "abc123-1"'
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
runTest(
|
|
275
|
+
"test braid_text.put(url), with body and version and parents",
|
|
276
|
+
async () => {
|
|
277
|
+
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
278
|
+
let r = await braid_fetch(`/${key}`, {
|
|
279
|
+
method: 'PUT',
|
|
280
|
+
body: 'hi',
|
|
281
|
+
version: ['abc-1']
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
var r1 = await braid_fetch(`/eval`, {
|
|
285
|
+
method: 'PUT',
|
|
286
|
+
body: `void (async () => {
|
|
287
|
+
var r = await braid_text.put(new URL('http://localhost:8889/${key}'),
|
|
288
|
+
{body: 'yo', version: ['xyz-3'], parents: ['abc-1']})
|
|
289
|
+
res.end('')
|
|
290
|
+
})()`
|
|
291
|
+
})
|
|
292
|
+
if (!r1.ok) return 'got: ' + r1.status
|
|
293
|
+
|
|
294
|
+
let r2 = await braid_fetch(`/${key}`)
|
|
295
|
+
return 'got: ' + (await r2.text()) + ' -- version: ' + r2.headers.get('version')
|
|
296
|
+
},
|
|
297
|
+
'got: yo -- version: "xyz-3"'
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
runTest(
|
|
301
|
+
"test braid_text.put(url), with peer",
|
|
302
|
+
async () => {
|
|
303
|
+
var key = 'test-' + Math.random().toString(36).slice(2)
|
|
304
|
+
|
|
305
|
+
var r1 = await braid_fetch(`/eval`, {
|
|
306
|
+
method: 'PUT',
|
|
307
|
+
body: `void (async () => {
|
|
308
|
+
var r = await braid_text.put(new URL('http://localhost:8889/${key}'),
|
|
309
|
+
{body: 'yo', peer: 'xyz', parents: []})
|
|
310
|
+
res.end('')
|
|
311
|
+
})()`
|
|
312
|
+
})
|
|
313
|
+
if (!r1.ok) return 'got: ' + r1.status
|
|
314
|
+
|
|
315
|
+
let r2 = await braid_fetch(`/${key}`)
|
|
316
|
+
return 'got: ' + (await r2.text()) + ' -- version: ' + r2.headers.get('version')
|
|
317
|
+
},
|
|
318
|
+
'got: yo -- version: "xyz-1"'
|
|
319
|
+
)
|
|
320
|
+
|
|
99
321
|
runTest(
|
|
100
322
|
"test updating meta data",
|
|
101
323
|
async () => {
|