@filen/sync 0.1.101 → 0.2.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.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type SyncPair, type SyncMessage, type SyncMode } from "./types";
2
2
  import Sync from "./lib/sync";
3
3
  import FilenSDK, { type FilenSDKConfig } from "@filen/sdk";
4
+ import { Semaphore } from "./semaphore";
4
5
  import Logger from "./lib/logger";
5
6
  /**
6
7
  * SyncWorker
@@ -14,7 +15,7 @@ export declare class SyncWorker {
14
15
  readonly syncPairs: SyncPair[];
15
16
  readonly syncs: Record<string, Sync>;
16
17
  readonly dbPath: string;
17
- readonly updateSyncPairsMutex: import("./semaphore").ISemaphore;
18
+ readonly updateSyncPairsMutex: Semaphore;
18
19
  readonly sdk: FilenSDK;
19
20
  readonly logger: Logger;
20
21
  readonly runOnce: boolean;
@@ -2,6 +2,7 @@
2
2
  import fs from "fs-extra";
3
3
  import type Sync from "../sync";
4
4
  import { type CloudItem } from "@filen/sdk";
5
+ import { Semaphore } from "../../semaphore";
5
6
  export type LocalItem = {
6
7
  lastModified: number;
7
8
  type: "file" | "directory";
@@ -51,10 +52,10 @@ export declare class LocalFileSystem {
51
52
  watcherRunning: boolean;
52
53
  private watcherInstanceParcel;
53
54
  private watcherInstanceNode;
54
- readonly itemsMutex: import("../../semaphore").ISemaphore;
55
- readonly mutex: import("../../semaphore").ISemaphore;
56
- readonly mkdirMutex: import("../../semaphore").ISemaphore;
57
- readonly watcherMutex: import("../../semaphore").ISemaphore;
55
+ readonly itemsMutex: Semaphore;
56
+ readonly mutex: Semaphore;
57
+ readonly mkdirMutex: Semaphore;
58
+ readonly watcherMutex: Semaphore;
58
59
  watcherInstanceFallbackInterval: ReturnType<typeof setInterval> | undefined;
59
60
  ignoredCache: Map<string, {
60
61
  ignored: true;
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import type Sync from "../sync";
3
3
  import { type CloudItemTree, type FSItemType } from "@filen/sdk";
4
+ import { Semaphore } from "../../semaphore";
4
5
  import fs from "fs-extra";
5
6
  import { type DistributiveOmit, type Prettify } from "../../types";
6
7
  export type RemoteItemBase = Prettify<DistributiveOmit<CloudItemTree, "parent" | "color" | "favorited" | "timestamp"> & {
@@ -36,8 +37,8 @@ export declare class RemoteFileSystem {
36
37
  };
37
38
  private readonly mutex;
38
39
  private readonly mkdirMutex;
39
- readonly itemsMutex: import("../../semaphore").ISemaphore;
40
- readonly listSemaphore: import("../../semaphore").ISemaphore;
40
+ readonly itemsMutex: Semaphore;
41
+ readonly listSemaphore: Semaphore;
41
42
  private deviceIdCache;
42
43
  ignoredCache: Map<string, {
43
44
  ignored: true;
@@ -1,13 +1,46 @@
1
1
  import type Sync from "./sync";
2
+ /**
3
+ * Lock
4
+ *
5
+ * @export
6
+ * @class Lock
7
+ * @typedef {Lock}
8
+ */
2
9
  export declare class Lock {
3
10
  private readonly sync;
4
11
  private readonly resource;
5
12
  private lockUUID;
6
13
  private lockRefreshInterval;
7
- private lockAcquired;
8
14
  private mutex;
9
- constructor(sync: Sync);
15
+ private acquiredCount;
16
+ /**
17
+ * Creates an instance of Lock.
18
+ *
19
+ * @constructor
20
+ * @public
21
+ * @param {{ sync: Sync; resource: string }} param0
22
+ * @param {Sync} param0.sync
23
+ * @param {string} param0.resource
24
+ */
25
+ constructor({ sync, resource }: {
26
+ sync: Sync;
27
+ resource: string;
28
+ });
29
+ /**
30
+ * Acquire the lock on <resource>.
31
+ *
32
+ * @public
33
+ * @async
34
+ * @returns {Promise<void>}
35
+ */
10
36
  acquire(): Promise<void>;
37
+ /**
38
+ * Release the acquired lock on <resource>.
39
+ *
40
+ * @public
41
+ * @async
42
+ * @returns {Promise<void>}
43
+ */
11
44
  release(): Promise<void>;
12
45
  }
13
46
  export default Lock;
package/dist/lib/lock.js CHANGED
@@ -1,33 +1,72 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.Lock = void 0;
4
7
  const uuid_1 = require("uuid");
5
- const semaphore_1 = require("../semaphore");
8
+ const semaphore_1 = __importDefault(require("../semaphore"));
9
+ /**
10
+ * Lock
11
+ *
12
+ * @export
13
+ * @class Lock
14
+ * @typedef {Lock}
15
+ */
6
16
  class Lock {
7
- constructor(sync) {
8
- this.resource = "filen-sync";
17
+ /**
18
+ * Creates an instance of Lock.
19
+ *
20
+ * @constructor
21
+ * @public
22
+ * @param {{ sync: Sync; resource: string }} param0
23
+ * @param {Sync} param0.sync
24
+ * @param {string} param0.resource
25
+ */
26
+ constructor({ sync, resource }) {
9
27
  this.lockUUID = null;
10
28
  this.lockRefreshInterval = undefined;
11
- this.lockAcquired = false;
12
- this.mutex = new semaphore_1.Semaphore(1);
29
+ this.mutex = new semaphore_1.default(1);
30
+ this.acquiredCount = 0;
13
31
  this.sync = sync;
32
+ this.resource = resource;
14
33
  }
34
+ /**
35
+ * Acquire the lock on <resource>.
36
+ *
37
+ * @public
38
+ * @async
39
+ * @returns {Promise<void>}
40
+ */
15
41
  async acquire() {
16
42
  await this.mutex.acquire();
43
+ let didIncrement = false;
17
44
  try {
45
+ this.acquiredCount++;
46
+ didIncrement = true;
47
+ if (this.acquiredCount > 1) {
48
+ return;
49
+ }
18
50
  clearInterval(this.lockRefreshInterval);
19
51
  if (!this.lockUUID) {
20
52
  this.lockUUID = (0, uuid_1.v4)();
21
53
  }
22
- await this.sync.sdk.user().acquireResourceLock({
23
- resource: this.resource,
24
- lockUUID: this.lockUUID,
25
- maxTries: Infinity,
26
- tryTimeout: 1000
27
- });
28
- this.lockAcquired = true;
54
+ try {
55
+ await this.sync.sdk.user().acquireResourceLock({
56
+ resource: this.resource,
57
+ lockUUID: this.lockUUID,
58
+ maxTries: Infinity,
59
+ tryTimeout: 1000
60
+ });
61
+ }
62
+ catch (err) {
63
+ this.acquiredCount--;
64
+ didIncrement = false;
65
+ throw err;
66
+ }
29
67
  this.lockRefreshInterval = setInterval(async () => {
30
- if (!this.lockAcquired || !this.lockUUID) {
68
+ if (this.acquiredCount === 0 || !this.lockUUID) {
69
+ clearInterval(this.lockRefreshInterval);
31
70
  return;
32
71
  }
33
72
  await this.mutex.acquire();
@@ -37,35 +76,54 @@ class Lock {
37
76
  lockUUID: this.lockUUID
38
77
  });
39
78
  }
40
- catch (e) {
41
- this.sync.worker.logger.log("error", e, "lock.refresh");
42
- this.sync.worker.logger.log("error", e);
79
+ catch (_a) {
80
+ // Noop
43
81
  }
44
82
  finally {
45
83
  this.mutex.release();
46
84
  }
47
85
  }, 5000);
48
86
  }
87
+ catch (err) {
88
+ if (didIncrement) {
89
+ this.acquiredCount--;
90
+ }
91
+ throw err;
92
+ }
49
93
  finally {
50
94
  this.mutex.release();
51
95
  }
52
96
  }
97
+ /**
98
+ * Release the acquired lock on <resource>.
99
+ *
100
+ * @public
101
+ * @async
102
+ * @returns {Promise<void>}
103
+ */
53
104
  async release() {
54
105
  await this.mutex.acquire();
106
+ const previousCount = structuredClone(this.acquiredCount);
55
107
  try {
56
- if (!this.lockAcquired || !this.lockUUID) {
108
+ if (this.acquiredCount === 0 || !this.lockUUID) {
109
+ return;
110
+ }
111
+ this.acquiredCount--;
112
+ if (this.acquiredCount > 0) {
57
113
  return;
58
114
  }
59
115
  clearInterval(this.lockRefreshInterval);
60
- await this.sync.sdk
61
- .user()
62
- .releaseResourceLock({
63
- resource: this.resource,
64
- lockUUID: this.lockUUID
65
- })
66
- .catch(() => { });
67
- this.lockAcquired = false;
68
- this.lockUUID = null;
116
+ try {
117
+ await this.sync.sdk.user().releaseResourceLock({
118
+ resource: this.resource,
119
+ lockUUID: this.lockUUID
120
+ });
121
+ this.lockUUID = null;
122
+ }
123
+ catch (error) {
124
+ this.acquiredCount = previousCount;
125
+ throw error;
126
+ }
69
127
  }
70
128
  finally {
71
129
  this.mutex.release();
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/lib/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/lib/lock.ts"],"names":[],"mappings":"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"}
package/dist/lib/sync.js CHANGED
@@ -72,7 +72,10 @@ class Sync {
72
72
  this.tasks = new tasks_1.default(this);
73
73
  this.state = new state_1.default(this);
74
74
  this.ignorer = new ignorer_1.default(this, "ignorer");
75
- this.lock = new lock_1.default(this);
75
+ this.lock = new lock_1.default({
76
+ sync: this,
77
+ resource: `sync-remoteParentUUID-${this.syncPair.remoteParentUUID}`
78
+ });
76
79
  this.cleanupLocalTrash();
77
80
  }
78
81
  async smokeTest() {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/lib/sync.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,61 @@
1
- export interface ISemaphore {
1
+ /**
2
+ * Semaphore
3
+ *
4
+ * @export
5
+ * @class Semaphore
6
+ * @typedef {Semaphore}
7
+ */
8
+ export declare class Semaphore {
9
+ private counter;
10
+ private waiting;
11
+ private maxCount;
12
+ /**
13
+ * Creates an instance of Semaphore.
14
+ *
15
+ * @constructor
16
+ * @public
17
+ * @param {number} [max=1]
18
+ */
19
+ constructor(max?: number);
20
+ /**
21
+ * Acquire a lock.
22
+ *
23
+ * @public
24
+ * @returns {Promise<void>}
25
+ */
2
26
  acquire(): Promise<void>;
27
+ /**
28
+ * Release a lock.
29
+ *
30
+ * @public
31
+ */
3
32
  release(): void;
33
+ /**
34
+ * Returns the locks in the queue.
35
+ *
36
+ * @public
37
+ * @returns {number}
38
+ */
4
39
  count(): number;
40
+ /**
41
+ * Set max number of concurrent locks.
42
+ *
43
+ * @public
44
+ * @param {number} newMax
45
+ */
5
46
  setMax(newMax: number): void;
47
+ /**
48
+ * Purge all waiting promises.
49
+ *
50
+ * @public
51
+ * @returns {number}
52
+ */
6
53
  purge(): number;
54
+ /**
55
+ * Internal process queue.
56
+ *
57
+ * @private
58
+ */
59
+ private processQueue;
7
60
  }
8
- /**
9
- * Basic Semaphore implementation.
10
- * @date 2/15/2024 - 4:52:51 AM
11
- *
12
- * @type {new (max: number) => ISemaphore}
13
- */
14
- export declare const Semaphore: new (max: number) => ISemaphore;
61
+ export default Semaphore;
package/dist/semaphore.js CHANGED
@@ -2,63 +2,106 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Semaphore = void 0;
4
4
  /**
5
- * Basic Semaphore implementation.
6
- * @date 2/15/2024 - 4:52:51 AM
5
+ * Semaphore
7
6
  *
8
- * @type {new (max: number) => ISemaphore}
7
+ * @export
8
+ * @class Semaphore
9
+ * @typedef {Semaphore}
9
10
  */
10
- exports.Semaphore = function (max) {
11
- let counter = 0;
12
- let waiting = [];
13
- let maxCount = max || 1;
14
- const take = function () {
15
- if (waiting.length > 0 && counter < maxCount) {
16
- counter++;
17
- const promise = waiting.shift();
18
- if (!promise) {
19
- return;
20
- }
21
- promise.resolve();
22
- }
23
- };
24
- this.acquire = function () {
25
- if (counter < maxCount) {
26
- counter++;
27
- return new Promise(resolve => {
28
- resolve();
29
- });
11
+ class Semaphore {
12
+ /**
13
+ * Creates an instance of Semaphore.
14
+ *
15
+ * @constructor
16
+ * @public
17
+ * @param {number} [max=1]
18
+ */
19
+ constructor(max = 1) {
20
+ this.counter = 0;
21
+ this.waiting = [];
22
+ this.maxCount = max;
23
+ }
24
+ /**
25
+ * Acquire a lock.
26
+ *
27
+ * @public
28
+ * @returns {Promise<void>}
29
+ */
30
+ acquire() {
31
+ if (this.counter < this.maxCount) {
32
+ this.counter++;
33
+ return Promise.resolve();
30
34
  }
31
35
  else {
32
- return new Promise((resolve, err) => {
33
- waiting.push({
34
- resolve: resolve,
35
- err: err
36
+ return new Promise((resolve, reject) => {
37
+ this.waiting.push({
38
+ resolve,
39
+ reject
36
40
  });
37
41
  });
38
42
  }
39
- };
40
- this.release = function () {
41
- counter--;
42
- take();
43
- };
44
- this.count = function () {
45
- return counter;
46
- };
47
- this.setMax = function (newMax) {
48
- maxCount = newMax;
49
- };
50
- this.purge = function () {
51
- const unresolved = waiting.length;
52
- for (let i = 0; i < unresolved; i++) {
53
- const w = waiting[i];
54
- if (!w) {
55
- continue;
56
- }
57
- w.err("Task has been purged");
43
+ }
44
+ /**
45
+ * Release a lock.
46
+ *
47
+ * @public
48
+ */
49
+ release() {
50
+ if (this.counter <= 0) {
51
+ return;
58
52
  }
59
- counter = 0;
60
- waiting = [];
53
+ this.counter--;
54
+ this.processQueue();
55
+ }
56
+ /**
57
+ * Returns the locks in the queue.
58
+ *
59
+ * @public
60
+ * @returns {number}
61
+ */
62
+ count() {
63
+ return this.counter;
64
+ }
65
+ /**
66
+ * Set max number of concurrent locks.
67
+ *
68
+ * @public
69
+ * @param {number} newMax
70
+ */
71
+ setMax(newMax) {
72
+ this.maxCount = newMax;
73
+ this.processQueue();
74
+ }
75
+ /**
76
+ * Purge all waiting promises.
77
+ *
78
+ * @public
79
+ * @returns {number}
80
+ */
81
+ purge() {
82
+ const unresolved = this.waiting.length;
83
+ for (const waiter of this.waiting) {
84
+ waiter.reject("Task has been purged");
85
+ }
86
+ this.counter = 0;
87
+ this.waiting = [];
61
88
  return unresolved;
62
- };
63
- };
89
+ }
90
+ /**
91
+ * Internal process queue.
92
+ *
93
+ * @private
94
+ */
95
+ processQueue() {
96
+ if (this.waiting.length > 0 && this.counter < this.maxCount) {
97
+ this.counter++;
98
+ const waiter = this.waiting.shift();
99
+ if (waiter) {
100
+ waiter.resolve();
101
+ }
102
+ }
103
+ }
104
+ }
105
+ exports.Semaphore = Semaphore;
106
+ exports.default = Semaphore;
64
107
  //# sourceMappingURL=semaphore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../src/semaphore.ts"],"names":[],"mappings":";;;AAQA;;;;;GAKG;AACU,QAAA,SAAS,GAAG,UAA4B,GAAW;IAC/D,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,OAAO,GAA8F,EAAE,CAAA;IAC3G,IAAI,QAAQ,GAAG,GAAG,IAAI,CAAC,CAAA;IAEvB,MAAM,IAAI,GAAG;QACZ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAA;YAET,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;YAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAM;YACP,CAAC;YAED,OAAO,CAAC,OAAO,EAAE,CAAA;QAClB,CAAC;IACF,CAAC,CAAA;IAED,IAAI,CAAC,OAAO,GAAG;QACd,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;YACxB,OAAO,EAAE,CAAA;YAET,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAClC,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,OAAO;oBAChB,GAAG,EAAE,GAAG;iBACR,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC,CAAA;IAED,IAAI,CAAC,OAAO,GAAG;QACd,OAAO,EAAE,CAAA;QAET,IAAI,EAAE,CAAA;IACP,CAAC,CAAA;IAED,IAAI,CAAC,KAAK,GAAG;QACZ,OAAO,OAAO,CAAA;IACf,CAAC,CAAA;IAED,IAAI,CAAC,MAAM,GAAG,UAAU,MAAc;QACrC,QAAQ,GAAG,MAAM,CAAA;IAClB,CAAC,CAAA;IAED,IAAI,CAAC,KAAK,GAAG;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAA;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YAEpB,IAAI,CAAC,CAAC,EAAE,CAAC;gBACR,SAAQ;YACT,CAAC;YAED,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO,GAAG,CAAC,CAAA;QACX,OAAO,GAAG,EAAE,CAAA;QAEZ,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;AACF,CAAiD,CAAA"}
1
+ {"version":3,"file":"semaphore.js","sourceRoot":"","sources":["../src/semaphore.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,MAAa,SAAS;IAQrB;;;;;;OAMG;IACH,YAAmB,MAAc,CAAC;QAd1B,YAAO,GAAW,CAAC,CAAA;QACnB,YAAO,GAGV,EAAE,CAAA;QAWN,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjB,OAAO;oBACP,MAAM;iBACN,CAAC,CAAA;YACH,CAAC,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED;;;;OAIG;IACI,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACvB,OAAM;QACP,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;QACX,OAAO,IAAI,CAAC,OAAO,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;QAEtB,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACI,KAAK;QACX,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QAEtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,OAAO,UAAU,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACK,YAAY;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAA;YAEd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;YAEnC,IAAI,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,OAAO,EAAE,CAAA;YACjB,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAhHD,8BAgHC;AAED,kBAAe,SAAS,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@filen/sync",
3
- "version": "0.1.101",
3
+ "version": "0.2.1",
4
4
  "description": "Filen Sync",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -54,7 +54,7 @@
54
54
  "wait-on": "^7.2.0"
55
55
  },
56
56
  "dependencies": {
57
- "@filen/sdk": "^0.1.193",
57
+ "@filen/sdk": "^0.3.7",
58
58
  "@parcel/watcher": "^2.5.1",
59
59
  "fast-glob": "^3.3.3",
60
60
  "fs-extra": "^11.3.0",