@peerbit/any-store-opfs 1.1.4 → 1.1.5
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/dist/assets/opfs/opfs.worker.min.js +166 -13
- package/dist/assets/opfs/opfs.worker.min.js.map +3 -3
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/opfs-store.d.ts +7 -3
- package/dist/src/opfs-store.d.ts.map +1 -1
- package/dist/src/opfs-store.js +104 -21
- package/dist/src/opfs-store.js.map +1 -1
- package/dist/src/protocol.d.ts +62 -0
- package/dist/src/protocol.d.ts.map +1 -0
- package/dist/src/protocol.js +45 -0
- package/dist/src/protocol.js.map +1 -0
- package/dist/src/worker.d.ts +3 -1
- package/dist/src/worker.d.ts.map +1 -1
- package/dist/src/worker.js +144 -8
- package/dist/src/worker.js.map +1 -1
- package/package.json +4 -4
- package/src/opfs-store.ts +147 -47
- package/src/protocol.ts +128 -0
- package/src/worker.ts +151 -15
|
@@ -8099,6 +8099,35 @@
|
|
|
8099
8099
|
throw lastError ?? createTimeoutError(options);
|
|
8100
8100
|
};
|
|
8101
8101
|
|
|
8102
|
+
// src/protocol.ts
|
|
8103
|
+
var REQUEST_TYPES = /* @__PURE__ */ new Set([
|
|
8104
|
+
"open",
|
|
8105
|
+
"close",
|
|
8106
|
+
"clear",
|
|
8107
|
+
"size",
|
|
8108
|
+
"status",
|
|
8109
|
+
"get",
|
|
8110
|
+
"del",
|
|
8111
|
+
"put",
|
|
8112
|
+
"sublevel",
|
|
8113
|
+
"iterator-next",
|
|
8114
|
+
"iterator-stop"
|
|
8115
|
+
]);
|
|
8116
|
+
var isOPFSRequest = (value) => {
|
|
8117
|
+
return typeof value === "object" && value !== null && typeof value.messageId === "string" && Array.isArray(value.level) && REQUEST_TYPES.has(value.type);
|
|
8118
|
+
};
|
|
8119
|
+
var getTransferables = (message) => {
|
|
8120
|
+
if (message.type === "get" && "bytes" in message && message.bytes) {
|
|
8121
|
+
return [message.bytes.buffer];
|
|
8122
|
+
}
|
|
8123
|
+
if (message.type === "iterator-next" && "values" in message) {
|
|
8124
|
+
return message.values.map(
|
|
8125
|
+
(value) => value.buffer
|
|
8126
|
+
);
|
|
8127
|
+
}
|
|
8128
|
+
return [];
|
|
8129
|
+
};
|
|
8130
|
+
|
|
8102
8131
|
// src/worker.ts
|
|
8103
8132
|
var directory = location.hash.split("#")?.[1];
|
|
8104
8133
|
var encodeName = (name) => {
|
|
@@ -8215,7 +8244,8 @@
|
|
|
8215
8244
|
create: true
|
|
8216
8245
|
});
|
|
8217
8246
|
const writeFileHandle = await createWriteHandle(fileHandle);
|
|
8218
|
-
writeFileHandle.write(value);
|
|
8247
|
+
writeFileHandle.write(value, { at: 0 });
|
|
8248
|
+
writeFileHandle.truncate(value.byteLength);
|
|
8219
8249
|
writeFileHandle.flush();
|
|
8220
8250
|
writeFileHandle.close();
|
|
8221
8251
|
const prevSize = sizeMap.get(encodedKey);
|
|
@@ -8261,7 +8291,7 @@
|
|
|
8261
8291
|
};
|
|
8262
8292
|
this._rootStore = createMemory();
|
|
8263
8293
|
self.addEventListener("message", async (ev) => {
|
|
8264
|
-
const message =
|
|
8294
|
+
const message = this.parseMessage(ev.data);
|
|
8265
8295
|
try {
|
|
8266
8296
|
if (message instanceof MemoryMessage) {
|
|
8267
8297
|
if (message instanceof REQ_Open) {
|
|
@@ -8369,22 +8399,145 @@
|
|
|
8369
8399
|
);
|
|
8370
8400
|
}
|
|
8371
8401
|
}
|
|
8402
|
+
if (isOPFSRequest(message)) {
|
|
8403
|
+
if (message.type === "open") {
|
|
8404
|
+
if (await this._rootStore.status() === "closed") {
|
|
8405
|
+
await this._rootStore.open();
|
|
8406
|
+
}
|
|
8407
|
+
await this.respond(message, {
|
|
8408
|
+
type: "ack",
|
|
8409
|
+
level: message.level,
|
|
8410
|
+
messageId: message.messageId
|
|
8411
|
+
});
|
|
8412
|
+
return;
|
|
8413
|
+
}
|
|
8414
|
+
const m = message.level.length === 0 ? this._rootStore : this._levels.get(levelKey(message.level));
|
|
8415
|
+
if (!m) {
|
|
8416
|
+
throw new Error("Recieved memory message for an undefined level");
|
|
8417
|
+
}
|
|
8418
|
+
if (message.type === "clear") {
|
|
8419
|
+
await m.clear();
|
|
8420
|
+
await this.respond(message, {
|
|
8421
|
+
type: "ack",
|
|
8422
|
+
level: message.level,
|
|
8423
|
+
messageId: message.messageId
|
|
8424
|
+
});
|
|
8425
|
+
} else if (message.type === "close") {
|
|
8426
|
+
await m.close();
|
|
8427
|
+
await this.respond(message, {
|
|
8428
|
+
type: "ack",
|
|
8429
|
+
level: message.level,
|
|
8430
|
+
messageId: message.messageId
|
|
8431
|
+
});
|
|
8432
|
+
} else if (message.type === "del") {
|
|
8433
|
+
await m.del(message.key);
|
|
8434
|
+
await this.respond(message, {
|
|
8435
|
+
type: "ack",
|
|
8436
|
+
level: message.level,
|
|
8437
|
+
messageId: message.messageId
|
|
8438
|
+
});
|
|
8439
|
+
} else if (message.type === "iterator-next") {
|
|
8440
|
+
let iterator = this._memoryIterator.get(message.id);
|
|
8441
|
+
if (!iterator) {
|
|
8442
|
+
iterator = m.iterator()[Symbol.asyncIterator]();
|
|
8443
|
+
this._memoryIterator.set(message.id, iterator);
|
|
8444
|
+
}
|
|
8445
|
+
const next = await iterator.next();
|
|
8446
|
+
const nextValue = next.done ? void 0 : next.value;
|
|
8447
|
+
const response = {
|
|
8448
|
+
type: "iterator-next",
|
|
8449
|
+
keys: nextValue ? [nextValue[0]] : [],
|
|
8450
|
+
values: nextValue ? [nextValue[1]] : [],
|
|
8451
|
+
level: message.level,
|
|
8452
|
+
messageId: message.messageId
|
|
8453
|
+
};
|
|
8454
|
+
await this.respond(message, response);
|
|
8455
|
+
if (next.done) {
|
|
8456
|
+
this._memoryIterator.delete(message.id);
|
|
8457
|
+
}
|
|
8458
|
+
} else if (message.type === "iterator-stop") {
|
|
8459
|
+
this._memoryIterator.delete(message.id);
|
|
8460
|
+
await this.respond(message, {
|
|
8461
|
+
type: "ack",
|
|
8462
|
+
level: message.level,
|
|
8463
|
+
messageId: message.messageId
|
|
8464
|
+
});
|
|
8465
|
+
} else if (message.type === "get") {
|
|
8466
|
+
await this.respond(message, {
|
|
8467
|
+
type: "get",
|
|
8468
|
+
bytes: await m.get(message.key),
|
|
8469
|
+
level: message.level,
|
|
8470
|
+
messageId: message.messageId
|
|
8471
|
+
});
|
|
8472
|
+
} else if (message.type === "put") {
|
|
8473
|
+
await m.put(message.key, message.bytes);
|
|
8474
|
+
await this.respond(message, {
|
|
8475
|
+
type: "ack",
|
|
8476
|
+
level: message.level,
|
|
8477
|
+
messageId: message.messageId
|
|
8478
|
+
});
|
|
8479
|
+
} else if (message.type === "size") {
|
|
8480
|
+
await this.respond(message, {
|
|
8481
|
+
type: "size",
|
|
8482
|
+
size: await m.size(),
|
|
8483
|
+
level: message.level,
|
|
8484
|
+
messageId: message.messageId
|
|
8485
|
+
});
|
|
8486
|
+
} else if (message.type === "status") {
|
|
8487
|
+
await this.respond(message, {
|
|
8488
|
+
type: "status",
|
|
8489
|
+
status: await m.status(),
|
|
8490
|
+
level: message.level,
|
|
8491
|
+
messageId: message.messageId
|
|
8492
|
+
});
|
|
8493
|
+
} else if (message.type === "sublevel") {
|
|
8494
|
+
await m.sublevel(message.name);
|
|
8495
|
+
await this.respond(message, {
|
|
8496
|
+
type: "ack",
|
|
8497
|
+
level: message.level,
|
|
8498
|
+
messageId: message.messageId
|
|
8499
|
+
});
|
|
8500
|
+
}
|
|
8501
|
+
}
|
|
8372
8502
|
} catch (error) {
|
|
8373
|
-
|
|
8374
|
-
|
|
8375
|
-
|
|
8376
|
-
|
|
8377
|
-
|
|
8378
|
-
|
|
8379
|
-
|
|
8380
|
-
|
|
8503
|
+
if (message instanceof MemoryRequest) {
|
|
8504
|
+
await this.respond(
|
|
8505
|
+
message,
|
|
8506
|
+
new RESP_Error({
|
|
8507
|
+
error: error?.["message"] || error?.constructor.name,
|
|
8508
|
+
level: message["level"] || []
|
|
8509
|
+
}),
|
|
8510
|
+
postMessageFn
|
|
8511
|
+
);
|
|
8512
|
+
return;
|
|
8513
|
+
}
|
|
8514
|
+
await this.respond(message, {
|
|
8515
|
+
type: "error",
|
|
8516
|
+
error: error?.["message"] || error?.constructor.name,
|
|
8517
|
+
level: message?.level || [],
|
|
8518
|
+
messageId: message?.messageId || ""
|
|
8519
|
+
});
|
|
8381
8520
|
}
|
|
8382
8521
|
});
|
|
8383
8522
|
}
|
|
8523
|
+
parseMessage(data) {
|
|
8524
|
+
if (isOPFSRequest(data)) {
|
|
8525
|
+
return data;
|
|
8526
|
+
}
|
|
8527
|
+
const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
8528
|
+
return deserialize(bytes, MemoryRequest);
|
|
8529
|
+
}
|
|
8384
8530
|
async respond(request, response, postMessageFn = postMessage) {
|
|
8385
|
-
|
|
8386
|
-
|
|
8387
|
-
|
|
8531
|
+
if (request instanceof MemoryRequest) {
|
|
8532
|
+
const legacyResponse = response;
|
|
8533
|
+
legacyResponse.messageId = request.messageId;
|
|
8534
|
+
const bytes = serialize(legacyResponse);
|
|
8535
|
+
postMessageFn(bytes, { transfer: [bytes.buffer] });
|
|
8536
|
+
return;
|
|
8537
|
+
}
|
|
8538
|
+
const cloneResponse = response;
|
|
8539
|
+
cloneResponse.messageId = request.messageId;
|
|
8540
|
+
postMessageFn(cloneResponse, { transfer: getTransferables(cloneResponse) });
|
|
8388
8541
|
}
|
|
8389
8542
|
};
|
|
8390
8543
|
new OPFSStoreWorker();
|