Browse Source

refac: pyodide

Timothy Jaeryang Baek 3 months ago
parent
commit
9c0a783991
1 changed files with 30 additions and 0 deletions
  1. 30 0
      src/lib/workers/pyodide.worker.ts

+ 30 - 0
src/lib/workers/pyodide.worker.ts

@@ -40,6 +40,23 @@ async function loadPyodideAndPackages(packages: string[] = []) {
 		packages: ['micropip']
 	});
 
+	let mountDir = '/mnt';
+	self.pyodide.FS.mkdirTree(mountDir);
+	// self.pyodide.FS.mount(self.pyodide.FS.filesystems.IDBFS, {}, mountDir);
+
+	// // Load persisted files from IndexedDB (Initial Sync)
+	// await new Promise<void>((resolve, reject) => {
+	// 	self.pyodide.FS.syncfs(true, (err) => {
+	// 		if (err) {
+	// 			console.error('Error syncing from IndexedDB:', err);
+	// 			reject(err);
+	// 		} else {
+	// 			console.log('Successfully loaded from IndexedDB.');
+	// 			resolve();
+	// 		}
+	// 	});
+	// });
+
 	const micropip = self.pyodide.pyimport('micropip');
 
 	// await micropip.set_index_urls('https://pypi.org/pypi/{package_name}/json');
@@ -66,6 +83,19 @@ self.onmessage = async (event) => {
 		self.result = processResult(self.result);
 
 		console.log('Python result:', self.result);
+
+		// Persist any changes to IndexedDB
+		// await new Promise<void>((resolve, reject) => {
+		// 	self.pyodide.FS.syncfs(false, (err) => {
+		// 		if (err) {
+		// 			console.error('Error syncing to IndexedDB:', err);
+		// 			reject(err);
+		// 		} else {
+		// 			console.log('Successfully synced to IndexedDB.');
+		// 			resolve();
+		// 		}
+		// 	});
+		// });
 	} catch (error) {
 		self.stderr = error.toString();
 	}