123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- importScripts(
- // Batched optimization
- "./lightning-fs.min.js?v=0.0.2.3",
- // 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)
- }
- });
- }
|