@lvce-editor/cache-worker 0.0.2 → 0.1.2
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/cacheWorkerMain.js +58 -32
- package/index.js +4 -1
- package/package.json +1 -1
package/cacheWorkerMain.js
CHANGED
|
@@ -656,45 +656,66 @@ var create5 = async ({ commandMap: commandMap2 }) => {
|
|
|
656
656
|
return rpc;
|
|
657
657
|
};
|
|
658
658
|
|
|
659
|
-
// packages/cache-worker/src/parts/Cache/Cache.
|
|
660
|
-
var
|
|
659
|
+
// packages/cache-worker/src/parts/Cache/Cache.ts
|
|
660
|
+
var getCache = async (cacheName, bucketName, bucketOptions) => {
|
|
661
|
+
if (bucketName) {
|
|
662
|
+
if (typeof navigator === "undefined") {
|
|
663
|
+
throw new Error("Storage Buckets are not available in this context");
|
|
664
|
+
}
|
|
665
|
+
const { storageBuckets } = navigator;
|
|
666
|
+
if (!storageBuckets) {
|
|
667
|
+
throw new Error("Storage Buckets are not available in this context");
|
|
668
|
+
}
|
|
669
|
+
const bucket = await storageBuckets.open(bucketName, bucketOptions);
|
|
670
|
+
return bucket.caches.open(cacheName);
|
|
671
|
+
}
|
|
661
672
|
if (typeof caches === "undefined") {
|
|
662
673
|
throw new Error("Cache Storage is not available in this context");
|
|
663
674
|
}
|
|
664
|
-
return caches;
|
|
675
|
+
return caches.open(cacheName);
|
|
665
676
|
};
|
|
666
|
-
var getCacheStorageItem = async (request, cacheName = "lvce-cache") => {
|
|
667
|
-
const cache = await
|
|
677
|
+
var getCacheStorageItem = async (request, cacheName = "lvce-cache", bucketName = "", bucketOptions = {}) => {
|
|
678
|
+
const cache = await getCache(cacheName, bucketName, bucketOptions);
|
|
668
679
|
const response = await cache.match(request);
|
|
669
680
|
if (!response) {
|
|
670
681
|
return null;
|
|
671
682
|
}
|
|
672
683
|
return {
|
|
673
684
|
body: await response.arrayBuffer(),
|
|
674
|
-
headers:
|
|
685
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
675
686
|
status: response.status,
|
|
676
687
|
statusText: response.statusText
|
|
677
688
|
};
|
|
678
689
|
};
|
|
679
|
-
var setCacheStorageItem = async (request, value, cacheName = "lvce-cache") => {
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
690
|
+
var setCacheStorageItem = async (request, value, cacheName = "lvce-cache", headers = {}, bucketName = "", bucketOptions = {}) => {
|
|
691
|
+
try {
|
|
692
|
+
const cache = await getCache(cacheName, bucketName, bucketOptions);
|
|
693
|
+
const response = new Response(value, { headers: new Headers(headers) });
|
|
694
|
+
await cache.put(request, response);
|
|
695
|
+
return { success: true };
|
|
696
|
+
} catch (error) {
|
|
697
|
+
return {
|
|
698
|
+
errorCode: "CACHE_STORAGE_WRITE_FAILED",
|
|
699
|
+
errorMessage: error instanceof Error ? error.message : String(error),
|
|
700
|
+
success: false
|
|
701
|
+
};
|
|
702
|
+
}
|
|
683
703
|
};
|
|
684
|
-
var removeCacheStorageItem = async (request, cacheName = "lvce-cache") => {
|
|
685
|
-
const cache = await
|
|
704
|
+
var removeCacheStorageItem = async (request, cacheName = "lvce-cache", bucketName = "", bucketOptions = {}) => {
|
|
705
|
+
const cache = await getCache(cacheName, bucketName, bucketOptions);
|
|
686
706
|
return cache.delete(request);
|
|
687
707
|
};
|
|
688
708
|
|
|
689
|
-
// packages/cache-worker/src/parts/IndexedDb/IndexedDb.
|
|
709
|
+
// packages/cache-worker/src/parts/IndexedDb/IndexedDb.ts
|
|
710
|
+
var cloneDatabaseKey = (key) => structuredClone(key);
|
|
690
711
|
var requestResult = (request) => new Promise((resolve2, reject) => {
|
|
691
|
-
request.
|
|
692
|
-
request.
|
|
712
|
+
request.addEventListener("success", () => resolve2(request.result), { once: true });
|
|
713
|
+
request.addEventListener("error", () => reject(request.error ?? new Error("IndexedDB request failed")), { once: true });
|
|
693
714
|
});
|
|
694
715
|
var transactionDone = (transaction) => new Promise((resolve2, reject) => {
|
|
695
|
-
transaction.
|
|
696
|
-
transaction.
|
|
697
|
-
transaction.
|
|
716
|
+
transaction.addEventListener("complete", () => resolve2(void 0), { once: true });
|
|
717
|
+
transaction.addEventListener("abort", () => reject(transaction.error ?? new Error("IndexedDB transaction aborted")), { once: true });
|
|
718
|
+
transaction.addEventListener("error", () => reject(transaction.error ?? new Error("IndexedDB transaction failed")), { once: true });
|
|
698
719
|
});
|
|
699
720
|
var openDatabase = (name) => {
|
|
700
721
|
if (typeof indexedDB === "undefined") {
|
|
@@ -719,7 +740,7 @@ var addIndexedDbFileHandle = async (key, handle, databaseName = "lvce-cache-work
|
|
|
719
740
|
const database = await openDatabase(databaseName);
|
|
720
741
|
const transaction = database.transaction("file-handles", "readwrite");
|
|
721
742
|
const done = transactionDone(transaction);
|
|
722
|
-
const request = transaction.objectStore("file-handles").put(handle, key);
|
|
743
|
+
const request = transaction.objectStore("file-handles").put(handle, cloneDatabaseKey(key));
|
|
723
744
|
try {
|
|
724
745
|
await Promise.all([requestResult(request), done]);
|
|
725
746
|
} finally {
|
|
@@ -731,7 +752,7 @@ var getIndexedDbFileHandle = async (key, databaseName = "lvce-cache-worker") =>
|
|
|
731
752
|
const transaction = database.transaction("file-handles", "readonly");
|
|
732
753
|
const done = transactionDone(transaction);
|
|
733
754
|
try {
|
|
734
|
-
const value = await requestResult(transaction.objectStore("file-handles").get(key));
|
|
755
|
+
const value = await requestResult(transaction.objectStore("file-handles").get(cloneDatabaseKey(key)));
|
|
735
756
|
await done;
|
|
736
757
|
return value;
|
|
737
758
|
} finally {
|
|
@@ -742,7 +763,7 @@ var removeIndexedDbFileHandle = async (key, databaseName = "lvce-cache-worker")
|
|
|
742
763
|
const database = await openDatabase(databaseName);
|
|
743
764
|
const transaction = database.transaction("file-handles", "readwrite");
|
|
744
765
|
const done = transactionDone(transaction);
|
|
745
|
-
const request = transaction.objectStore("file-handles").delete(key);
|
|
766
|
+
const request = transaction.objectStore("file-handles").delete(cloneDatabaseKey(key));
|
|
746
767
|
try {
|
|
747
768
|
await Promise.all([requestResult(request), done]);
|
|
748
769
|
} finally {
|
|
@@ -750,12 +771,16 @@ var removeIndexedDbFileHandle = async (key, databaseName = "lvce-cache-worker")
|
|
|
750
771
|
}
|
|
751
772
|
};
|
|
752
773
|
|
|
753
|
-
// packages/cache-worker/src/parts/Opfs/Opfs.
|
|
774
|
+
// packages/cache-worker/src/parts/Opfs/Opfs.ts
|
|
754
775
|
var getRoot = async () => {
|
|
755
|
-
if (typeof navigator === "undefined"
|
|
756
|
-
throw new
|
|
776
|
+
if (typeof navigator === "undefined") {
|
|
777
|
+
throw new TypeError("Origin Private File System is not available in this context");
|
|
778
|
+
}
|
|
779
|
+
const { storage } = navigator;
|
|
780
|
+
if (typeof storage.getDirectory !== "function") {
|
|
781
|
+
throw new TypeError("Origin Private File System is not available in this context");
|
|
757
782
|
}
|
|
758
|
-
return
|
|
783
|
+
return storage.getDirectory();
|
|
759
784
|
};
|
|
760
785
|
var validateName = (name) => {
|
|
761
786
|
if (typeof name !== "string" || name.length === 0 || name === "." || name === ".." || /[/\\]/.test(name)) {
|
|
@@ -766,7 +791,8 @@ var readFile = async (name) => {
|
|
|
766
791
|
validateName(name);
|
|
767
792
|
const root = await getRoot();
|
|
768
793
|
const handle = await root.getFileHandle(name);
|
|
769
|
-
|
|
794
|
+
const file = await handle.getFile();
|
|
795
|
+
return file.text();
|
|
770
796
|
};
|
|
771
797
|
var writeFile = async (name, content) => {
|
|
772
798
|
validateName(name);
|
|
@@ -787,23 +813,23 @@ var removeFile = async (name) => {
|
|
|
787
813
|
await root.removeEntry(name);
|
|
788
814
|
};
|
|
789
815
|
|
|
790
|
-
// packages/cache-worker/src/parts/CommandMap/CommandMap.
|
|
816
|
+
// packages/cache-worker/src/parts/CommandMap/CommandMap.ts
|
|
791
817
|
var commandMap = {
|
|
792
818
|
"Cache.getCacheStorageItem": getCacheStorageItem,
|
|
793
|
-
"Cache.setCacheStorageItem": setCacheStorageItem,
|
|
794
819
|
"Cache.removeCacheStorageItem": removeCacheStorageItem,
|
|
820
|
+
"Cache.setCacheStorageItem": setCacheStorageItem,
|
|
795
821
|
"IndexedDb.addIndexedDbFileHandle": addIndexedDbFileHandle,
|
|
796
822
|
"IndexedDb.getIndexedDbFileHandle": getIndexedDbFileHandle,
|
|
797
823
|
"IndexedDb.removeIndexedDbFileHandle": removeIndexedDbFileHandle,
|
|
798
824
|
"Opfs.readFile": readFile,
|
|
799
|
-
"Opfs.
|
|
800
|
-
"Opfs.
|
|
825
|
+
"Opfs.removeFile": removeFile,
|
|
826
|
+
"Opfs.writeFile": writeFile
|
|
801
827
|
};
|
|
802
828
|
|
|
803
|
-
// packages/cache-worker/src/parts/Listen/Listen.
|
|
829
|
+
// packages/cache-worker/src/parts/Listen/Listen.ts
|
|
804
830
|
var listen2 = async () => {
|
|
805
831
|
await WebWorkerRpcClient2_exports.create({ commandMap });
|
|
806
832
|
};
|
|
807
833
|
|
|
808
|
-
// packages/cache-worker/src/cacheWorkerMain.
|
|
834
|
+
// packages/cache-worker/src/cacheWorkerMain.ts
|
|
809
835
|
await listen2();
|
package/index.js
CHANGED