@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.
- package/dist/lib/node/index.cjs +78 -84
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/packlets/testing/index.cjs +64 -70
- package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
- package/dist/types/src/packlets/locks/node.d.ts +2 -2
- package/dist/types/src/packlets/locks/node.d.ts.map +1 -1
- package/package.json +32 -33
- package/src/packlets/locks/node.ts +8 -13
|
@@ -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
|
|
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":"
|
|
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.
|
|
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
|
-
"@
|
|
25
|
-
"
|
|
26
|
-
"@dxos/
|
|
27
|
-
"@dxos/
|
|
28
|
-
"@dxos/
|
|
29
|
-
"@dxos/
|
|
30
|
-
"@dxos/
|
|
31
|
-
"@dxos/
|
|
32
|
-
"@dxos/
|
|
33
|
-
"@dxos/
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/teleport": "0.1.
|
|
50
|
-
"@dxos/teleport-extension-
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
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.
|
|
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
|
|
5
|
+
import assert from 'node:assert';
|
|
6
|
+
import { FileHandle } from 'node:fs/promises';
|
|
6
7
|
|
|
7
|
-
import {
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
47
|
+
export const isLocked = (lockPath: string) => LockFile.isLocked(lockPath);
|