summaryrefslogtreecommitdiff
path: root/desktop/node_modules/dir-compare/build/src/symlink
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-10-24 17:43:37 +0200
committerRaindropsSys <raindrops@equestria.dev>2023-10-24 17:43:37 +0200
commitae187b6d75c8079da0be1dc288613bad8466fe61 (patch)
tree5ea0d34185a2270f29ffaa65e1f5258028d7d5d0 /desktop/node_modules/dir-compare/build/src/symlink
downloadmist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.gz
mist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.bz2
mist-ae187b6d75c8079da0be1dc288613bad8466fe61.zip
Initial commit
Diffstat (limited to 'desktop/node_modules/dir-compare/build/src/symlink')
-rw-r--r--desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts21
-rw-r--r--desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts.map1
-rw-r--r--desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js46
-rw-r--r--desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js.map1
4 files changed, 69 insertions, 0 deletions
diff --git a/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts
new file mode 100644
index 0000000..162c966
--- /dev/null
+++ b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts
@@ -0,0 +1,21 @@
+export function detectLoop(entry: any, symlinkCache: any): boolean;
+export function detectLoop(entry: any, symlinkCache: any): boolean;
+export function initSymlinkCache(): {
+ dir1: {};
+ dir2: {};
+};
+export function initSymlinkCache(): {
+ dir1: {};
+ dir2: {};
+};
+export function updateSymlinkCache(symlinkCache: any, rootEntry1: any, rootEntry2: any, loopDetected1: any, loopDetected2: any): void;
+export function updateSymlinkCache(symlinkCache: any, rootEntry1: any, rootEntry2: any, loopDetected1: any, loopDetected2: any): void;
+export function cloneSymlinkCache(symlinkCache: any): {
+ dir1: {};
+ dir2: {};
+};
+export function cloneSymlinkCache(symlinkCache: any): {
+ dir1: {};
+ dir2: {};
+};
+//# sourceMappingURL=loopDetector.d.ts.map \ No newline at end of file
diff --git a/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts.map b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts.map
new file mode 100644
index 0000000..8a189b7
--- /dev/null
+++ b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"loopDetector.d.ts","sourceRoot":"","sources":["../../../src/symlink/loopDetector.js"],"names":[],"mappings":"AAMC,mEAQC;AARD,mEAQC;AAED;;;EAKC;AALD;;;EAKC;AAED,sIAUC;AAVD,sIAUC;AAED;;;EAKC;AALD;;;EAKC"} \ No newline at end of file
diff --git a/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js
new file mode 100644
index 0000000..2e1bce7
--- /dev/null
+++ b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js
@@ -0,0 +1,46 @@
+const fs = require('fs');
+/**
+ * Provides symlink loop detection to directory traversal algorithm.
+ */
+module.exports = {
+ detectLoop(entry, symlinkCache) {
+ if (entry && entry.isSymlink) {
+ const realPath = fs.realpathSync(entry.absolutePath);
+ if (symlinkCache[realPath]) {
+ return true;
+ }
+ }
+ return false;
+ },
+ initSymlinkCache() {
+ return {
+ dir1: {},
+ dir2: {}
+ };
+ },
+ updateSymlinkCache(symlinkCache, rootEntry1, rootEntry2, loopDetected1, loopDetected2) {
+ let symlinkCachePath1, symlinkCachePath2;
+ if (rootEntry1 && !loopDetected1) {
+ symlinkCachePath1 = rootEntry1.isSymlink ? fs.realpathSync(rootEntry1.absolutePath) : rootEntry1.absolutePath;
+ symlinkCache.dir1[symlinkCachePath1] = true;
+ }
+ if (rootEntry2 && !loopDetected2) {
+ symlinkCachePath2 = rootEntry2.isSymlink ? fs.realpathSync(rootEntry2.absolutePath) : rootEntry2.absolutePath;
+ symlinkCache.dir2[symlinkCachePath2] = true;
+ }
+ },
+ cloneSymlinkCache(symlinkCache) {
+ return {
+ dir1: shallowClone(symlinkCache.dir1),
+ dir2: shallowClone(symlinkCache.dir2)
+ };
+ },
+};
+function shallowClone(obj) {
+ const cloned = {};
+ Object.keys(obj).forEach(key => {
+ cloned[key] = obj[key];
+ });
+ return cloned;
+}
+//# sourceMappingURL=loopDetector.js.map \ No newline at end of file
diff --git a/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js.map b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js.map
new file mode 100644
index 0000000..3fda382
--- /dev/null
+++ b/desktop/node_modules/dir-compare/build/src/symlink/loopDetector.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"loopDetector.js","sourceRoot":"","sources":["../../../src/symlink/loopDetector.js"],"names":[],"mappings":"AAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB;;GAEG;AACH,MAAM,CAAC,OAAO,GAAG;IAChB,UAAU,CAAC,KAAK,EAAE,YAAY;QAC7B,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE;YAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAA;aACX;SACD;QACD,OAAO,KAAK,CAAA;IACb,CAAC;IAED,gBAAgB;QACf,OAAO;YACN,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE;SACR,CAAA;IACF,CAAC;IAED,kBAAkB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa;QACpF,IAAI,iBAAiB,EAAE,iBAAiB,CAAA;QACxC,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE;YACjC,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAA;YAC7G,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;SAC3C;QACD,IAAI,UAAU,IAAI,CAAC,aAAa,EAAE;YACjC,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAA;YAC7G,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAA;SAC3C;IACF,CAAC;IAED,iBAAiB,CAAC,YAAY;QAC7B,OAAO;YACN,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;YACrC,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;SACrC,CAAA;IACF,CAAC;CACD,CAAA;AAED,SAAS,YAAY,CAAC,GAAG;IACxB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACd,CAAC"} \ No newline at end of file