@lvce-editor/cache-worker 0.0.2 → 0.1.1

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.
@@ -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.js
660
- var getCacheStorage = () => {
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 getCacheStorage().open(cacheName);
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
- body: await response.arrayBuffer(),
674
- headers: [...response.headers.entries()],
684
+ body: await response.text(),
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
- const cache = await getCacheStorage().open(cacheName);
681
- const response = new Response(value);
682
- await cache.put(request, response);
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 getCacheStorage().open(cacheName);
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.js
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.onsuccess = () => resolve2(request.result);
692
- request.onerror = () => reject(request.error ?? new Error("IndexedDB request failed"));
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.oncomplete = () => resolve2();
696
- transaction.onabort = () => reject(transaction.error ?? new Error("IndexedDB transaction aborted"));
697
- transaction.onerror = () => reject(transaction.error ?? new Error("IndexedDB transaction failed"));
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.js
774
+ // packages/cache-worker/src/parts/Opfs/Opfs.ts
754
775
  var getRoot = async () => {
755
- if (typeof navigator === "undefined" || typeof navigator.storage?.getDirectory !== "function") {
756
- throw new Error("Origin Private File System is not available in this context");
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 navigator.storage.getDirectory();
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
- return (await handle.getFile()).text();
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.js
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.writeFile": writeFile,
800
- "Opfs.removeFile": removeFile
825
+ "Opfs.removeFile": removeFile,
826
+ "Opfs.writeFile": writeFile
801
827
  };
802
828
 
803
- // packages/cache-worker/src/parts/Listen/Listen.js
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.js
834
+ // packages/cache-worker/src/cacheWorkerMain.ts
809
835
  await listen2();
package/index.js CHANGED
@@ -1 +1,4 @@
1
- export const getCacheWorkerUrl = () => new URL('./cacheWorkerMain.js', import.meta.url)
1
+ const getCacheWorkerUrl = () => new URL("cacheWorkerMain.js", import.meta.url);
2
+ export {
3
+ getCacheWorkerUrl
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/cache-worker",
3
- "version": "0.0.2",
3
+ "version": "0.1.1",
4
4
  "description": "Worker APIs for Cache Storage, IndexedDB, and OPFS",
5
5
  "license": "MIT",
6
6
  "author": "Lvce Editor",