braid-text 0.2.98 → 0.2.100
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/.claude/settings.local.json +9 -0
- package/index.js +17 -4
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1296,6 +1296,12 @@ function create_braid_text() {
|
|
|
1296
1296
|
if (!db_folder_init.p) db_folder_init.p = new Promise(async done => {
|
|
1297
1297
|
await fs.promises.mkdir(braid_text.db_folder, { recursive: true });
|
|
1298
1298
|
await fs.promises.mkdir(`${braid_text.db_folder}/.meta`, { recursive: true })
|
|
1299
|
+
await fs.promises.mkdir(`${braid_text.db_folder}/.temp`, { recursive: true })
|
|
1300
|
+
|
|
1301
|
+
// Clean out .temp directory on startup
|
|
1302
|
+
var temp_files = await fs.promises.readdir(`${braid_text.db_folder}/.temp`)
|
|
1303
|
+
for (var f of temp_files)
|
|
1304
|
+
await fs.promises.unlink(`${braid_text.db_folder}/.temp/${f}`)
|
|
1299
1305
|
|
|
1300
1306
|
// Populate key_to_filename mapping from existing files
|
|
1301
1307
|
var files = (await fs.promises.readdir(braid_text.db_folder))
|
|
@@ -1401,8 +1407,8 @@ function create_braid_text() {
|
|
|
1401
1407
|
buffer.writeUInt32LE(init.length, 0)
|
|
1402
1408
|
|
|
1403
1409
|
const newFilename = `${braid_text.db_folder}/${encoded}.${currentNumber}`
|
|
1404
|
-
await
|
|
1405
|
-
|
|
1410
|
+
await atomic_write(newFilename, Buffer.concat([buffer, init]),
|
|
1411
|
+
`${braid_text.db_folder}/.temp`)
|
|
1406
1412
|
|
|
1407
1413
|
if (braid_text.verbose) console.log("wrote to : " + newFilename)
|
|
1408
1414
|
|
|
@@ -1423,8 +1429,8 @@ function create_braid_text() {
|
|
|
1423
1429
|
|
|
1424
1430
|
while (meta_dirty) {
|
|
1425
1431
|
meta_dirty = false
|
|
1426
|
-
await
|
|
1427
|
-
|
|
1432
|
+
await atomic_write(meta_filename, JSON.stringify(get_meta()),
|
|
1433
|
+
`${braid_text.db_folder}/.temp`)
|
|
1428
1434
|
await new Promise(done => setTimeout(done,
|
|
1429
1435
|
braid_text.meta_file_save_period_ms))
|
|
1430
1436
|
}
|
|
@@ -2727,6 +2733,12 @@ function create_braid_text() {
|
|
|
2727
2733
|
return `sha-256=:${require('crypto').createHash('sha256').update(s).digest('base64')}:`
|
|
2728
2734
|
}
|
|
2729
2735
|
|
|
2736
|
+
async function atomic_write(final_destination, data, temp_folder) {
|
|
2737
|
+
var temp = `${temp_folder}/${Math.random().toString(36).slice(2)}`
|
|
2738
|
+
await fs.promises.writeFile(temp, data)
|
|
2739
|
+
await fs.promises.rename(temp, final_destination)
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2730
2742
|
function within_fiber(id, func) {
|
|
2731
2743
|
if (!within_fiber.chains) within_fiber.chains = {}
|
|
2732
2744
|
var prev = within_fiber.chains[id] || Promise.resolve()
|
|
@@ -2755,6 +2767,7 @@ function create_braid_text() {
|
|
|
2755
2767
|
|
|
2756
2768
|
braid_text.decode_version = decode_version
|
|
2757
2769
|
braid_text.RangeSet = RangeSet
|
|
2770
|
+
braid_text.braid_fetch = braid_fetch
|
|
2758
2771
|
|
|
2759
2772
|
braid_text.create_braid_text = create_braid_text
|
|
2760
2773
|
|