@dxos/client-services 0.1.51 → 0.1.52-main.0e90c21

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.
@@ -3,11 +3,11 @@ export declare class Lock implements ResourceLock {
3
3
  private readonly _lockPath;
4
4
  private readonly _onAcquire;
5
5
  private readonly _onRelease;
6
- private _releaseTrigger;
6
+ private _fileHandle?;
7
7
  constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions);
8
8
  get lockKey(): string;
9
9
  acquire(): Promise<void>;
10
10
  release(): Promise<void>;
11
11
  }
12
- export declare const isLocked: (lockPath: string) => boolean;
12
+ export declare const isLocked: (lockPath: string) => Promise<boolean>;
13
13
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/locks/node.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGpE,qBAAa,IAAK,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,eAAe,CAAiB;gBAE5B,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAM5E,IACI,OAAO,WAEV;IAEK,OAAO;IAYP,OAAO;CAQd;AAED,eAAO,MAAM,QAAQ,aAAc,MAAM,YAAiC,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/locks/node.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGpE,qBAAa,IAAK,YAAW,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,WAAW,CAAC,CAAa;gBAErB,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,mBAAmB;IAM5E,IACI,OAAO,WAEV;IAEK,OAAO;IASP,OAAO;CAKd;AAED,eAAO,MAAM,QAAQ,aAAc,MAAM,qBAAgC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.1.51",
3
+ "version": "0.1.52-main.0e90c21",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -21,41 +21,40 @@
21
21
  "src"
22
22
  ],
23
23
  "dependencies": {
24
- "@types/lockfile": "^1.0.2",
25
- "lockfile": "^1.0.4",
26
- "@dxos/async": "0.1.51",
27
- "@dxos/client-protocol": "0.1.51",
28
- "@dxos/codec-protobuf": "0.1.51",
29
- "@dxos/config": "0.1.51",
30
- "@dxos/context": "0.1.51",
31
- "@dxos/credentials": "0.1.51",
32
- "@dxos/crypto": "0.1.51",
33
- "@dxos/debug": "0.1.51",
34
- "@dxos/document-model": "0.1.51",
35
- "@dxos/echo-db": "0.1.51",
36
- "@dxos/echo-pipeline": "0.1.51",
37
- "@dxos/errors": "0.1.51",
38
- "@dxos/feed-store": "0.1.51",
39
- "@dxos/keyring": "0.1.51",
40
- "@dxos/keys": "0.1.51",
41
- "@dxos/log": "0.1.51",
42
- "@dxos/messaging": "0.1.51",
43
- "@dxos/model-factory": "0.1.51",
44
- "@dxos/network-manager": "0.1.51",
45
- "@dxos/node-std": "0.1.51",
46
- "@dxos/protocols": "0.1.51",
47
- "@dxos/random-access-storage": "0.1.51",
48
- "@dxos/rpc": "0.1.51",
49
- "@dxos/teleport": "0.1.51",
50
- "@dxos/teleport-extension-gossip": "0.1.51",
51
- "@dxos/teleport-extension-object-sync": "0.1.51",
52
- "@dxos/text-model": "0.1.51",
53
- "@dxos/timeframe": "0.1.51",
54
- "@dxos/util": "0.1.51"
24
+ "@dxos/async": "0.1.52-main.0e90c21",
25
+ "@dxos/client-protocol": "0.1.52-main.0e90c21",
26
+ "@dxos/codec-protobuf": "0.1.52-main.0e90c21",
27
+ "@dxos/config": "0.1.52-main.0e90c21",
28
+ "@dxos/context": "0.1.52-main.0e90c21",
29
+ "@dxos/credentials": "0.1.52-main.0e90c21",
30
+ "@dxos/crypto": "0.1.52-main.0e90c21",
31
+ "@dxos/debug": "0.1.52-main.0e90c21",
32
+ "@dxos/document-model": "0.1.52-main.0e90c21",
33
+ "@dxos/echo-db": "0.1.52-main.0e90c21",
34
+ "@dxos/echo-pipeline": "0.1.52-main.0e90c21",
35
+ "@dxos/errors": "0.1.52-main.0e90c21",
36
+ "@dxos/feed-store": "0.1.52-main.0e90c21",
37
+ "@dxos/keyring": "0.1.52-main.0e90c21",
38
+ "@dxos/keys": "0.1.52-main.0e90c21",
39
+ "@dxos/lock-file": "0.1.52-main.0e90c21",
40
+ "@dxos/log": "0.1.52-main.0e90c21",
41
+ "@dxos/messaging": "0.1.52-main.0e90c21",
42
+ "@dxos/model-factory": "0.1.52-main.0e90c21",
43
+ "@dxos/network-manager": "0.1.52-main.0e90c21",
44
+ "@dxos/node-std": "0.1.52-main.0e90c21",
45
+ "@dxos/protocols": "0.1.52-main.0e90c21",
46
+ "@dxos/random-access-storage": "0.1.52-main.0e90c21",
47
+ "@dxos/rpc": "0.1.52-main.0e90c21",
48
+ "@dxos/teleport": "0.1.52-main.0e90c21",
49
+ "@dxos/teleport-extension-gossip": "0.1.52-main.0e90c21",
50
+ "@dxos/teleport-extension-object-sync": "0.1.52-main.0e90c21",
51
+ "@dxos/text-model": "0.1.52-main.0e90c21",
52
+ "@dxos/timeframe": "0.1.52-main.0e90c21",
53
+ "@dxos/util": "0.1.52-main.0e90c21"
55
54
  },
56
55
  "devDependencies": {
57
56
  "@types/readable-stream": "^2.3.9",
58
- "@dxos/signal": "0.1.51"
57
+ "@dxos/signal": "0.1.52-main.0e90c21"
59
58
  },
60
59
  "publishConfig": {
61
60
  "access": "public"
@@ -2,9 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import lockfile from 'lockfile';
5
+ import assert from 'node:assert';
6
+ import { FileHandle } from 'node:fs/promises';
6
7
 
7
- import { Trigger } from '@dxos/async';
8
+ import { LockFile } from '@dxos/lock-file';
8
9
  import { log, logInfo } from '@dxos/log';
9
10
 
10
11
  import { ResourceLock, ResourceLockOptions } from './resource-lock';
@@ -14,7 +15,7 @@ export class Lock implements ResourceLock {
14
15
  private readonly _lockPath: string;
15
16
  private readonly _onAcquire: ResourceLockOptions['onAcquire'];
16
17
  private readonly _onRelease: ResourceLockOptions['onRelease'];
17
- private _releaseTrigger = new Trigger();
18
+ private _fileHandle?: FileHandle;
18
19
 
19
20
  constructor({ lockKey: lockPath, onAcquire, onRelease }: ResourceLockOptions) {
20
21
  this._lockPath = lockPath;
@@ -29,24 +30,18 @@ export class Lock implements ResourceLock {
29
30
 
30
31
  async acquire() {
31
32
  log('acquiring lock...');
32
- if (lockfile.checkSync(this.lockKey)) {
33
- throw new Error(`Lock already acquired: ${this._lockPath}`);
34
- }
33
+ this._fileHandle = await LockFile.acquire(this._lockPath);
35
34
 
36
- lockfile.lockSync(this._lockPath);
37
35
  await this._onAcquire?.();
38
36
 
39
37
  log('acquired lock');
40
38
  }
41
39
 
42
40
  async release() {
43
- if (!lockfile.checkSync(this._lockPath)) {
44
- throw new Error(`Lock already acquired: ${this._lockPath}`);
45
- }
46
-
47
41
  await this._onRelease?.();
48
- lockfile.unlockSync(this._lockPath);
42
+ assert(this._fileHandle, 'Lock is not acquired');
43
+ await LockFile.release(this._fileHandle);
49
44
  }
50
45
  }
51
46
 
52
- export const isLocked = (lockPath: string) => lockfile.checkSync(lockPath);
47
+ export const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);