| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | importScripts(  // Batched optimization  "./lightning-fs.min.js",  // Fixed a bug  "./magic_portal.js");const detect = () => {  if (typeof window !== 'undefined' && !self.skipWaiting) {    return 'window'  } else if (typeof self !== 'undefined' && !self.skipWaiting) {    return 'Worker'  } else if (typeof self !== 'undefined' && self.skipWaiting) {    return 'ServiceWorker'  }};const fsName = 'logseq';const createFS = () => new LightningFS(fsName);let fs = createFS();let pfs = fs.promises;if (detect() === 'Worker') {  const portal = new MagicPortal(self);  portal.set('fs', fs);  portal.set('pfs', pfs);  portal.set('workerThread', {    rimraf: async function (path) {      // try {      //   // First assume path is itself a file      //   await pfs.unlink(path)      //   // if that worked we're done      //   return      // } catch (err) {      //   // Otherwise, path must be a directory      //   if (err.code !== 'EISDIR') throw err      // }      // Knowing path is a directory,      // first, assume everything inside path is a file.      let files = await pfs.readdir(path);      for (let file of files) {        let child = path + '/' + file        try {          await pfs.unlink(child)        } catch (err) {          if (err.code !== 'EISDIR') throw err        }      }      // Assume what's left are directories and recurse.      let dirs = await pfs.readdir(path)      for (let dir of dirs) {        let child = path + '/' + dir        await rimraf(child, pfs)      }      // Finally, delete the empty directory      await pfs.rmdir(path)    }  });}
 |