@dxos/lock-file 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/lock-file",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fd6878d",
4
4
  "description": "Lock file .",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,6 +10,7 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "node": "./dist/lib/node-esm/index.mjs"
15
16
  }
@@ -23,12 +24,12 @@
23
24
  "src"
24
25
  ],
25
26
  "dependencies": {
26
- "fs-ext": "^2.0.0",
27
- "@dxos/async": "0.8.4-main.f9ba587",
28
- "@dxos/node-std": "0.8.4-main.f9ba587"
27
+ "fs-ext": "2.0.0",
28
+ "@dxos/async": "0.8.4-main.fd6878d",
29
+ "@dxos/node-std": "0.8.4-main.fd6878d"
29
30
  },
30
31
  "devDependencies": {
31
- "@types/fs-ext": "^2.0.0"
32
+ "@types/fs-ext": "2.0.0"
32
33
  },
33
34
  "publishConfig": {
34
35
  "access": "public"
@@ -5,6 +5,7 @@
5
5
  import { spawn } from 'node:child_process';
6
6
  import { existsSync, mkdirSync, unlinkSync } from 'node:fs';
7
7
  import { join } from 'node:path';
8
+
8
9
  import { beforeAll, describe, expect, onTestFinished, test } from 'vitest';
9
10
 
10
11
  import { Trigger } from '@dxos/async';
@@ -29,7 +30,7 @@ describe('LockFile', () => {
29
30
  await LockFile.release(handle2);
30
31
  });
31
32
 
32
- test('released when process exits', async () => {
33
+ test('released when process exits', { timeout: 10_000 }, async () => {
33
34
  const filename = join(TEST_DIR, `lock-${Math.random()}.lock`);
34
35
  onTestFinished(() => {
35
36
  if (existsSync(filename)) {
@@ -51,7 +52,7 @@ describe('LockFile', () => {
51
52
  });
52
53
  }
53
54
 
54
- await trigger.wait({ timeout: 1_000 });
55
+ await trigger.wait({ timeout: 5_000 });
55
56
 
56
57
  await expect(LockFile.acquire(filename)).rejects.toBeInstanceOf(Error);
57
58
 
@@ -84,11 +85,11 @@ describe('LockFile', () => {
84
85
 
85
86
  // NOTE: Self-contained so when function.toString is called the code runs.
86
87
  const lockInProcess = (filename: string) => {
87
- // eslint-disable-next-line @typescript-eslint/no-var-requires
88
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
88
89
  const { open } = require('node:fs/promises');
89
- // eslint-disable-next-line @typescript-eslint/no-var-requires
90
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
90
91
  const { constants } = require('node:fs');
91
- // eslint-disable-next-line @typescript-eslint/no-var-requires
92
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
92
93
  const { flock } = require('fs-ext');
93
94
 
94
95
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
package/src/lock-file.ts CHANGED
@@ -2,9 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { flock } from 'fs-ext';
6
5
  import { existsSync } from 'node:fs';
7
- import { open, type FileHandle, constants } from 'node:fs/promises';
6
+ import { type FileHandle, constants, open } from 'node:fs/promises';
7
+
8
+ import { flock } from 'fs-ext';
8
9
 
9
10
  export class LockFile {
10
11
  static async acquire(filename: string): Promise<FileHandle> {
@@ -1,50 +0,0 @@
1
- import "@dxos/node-std/globals";
2
-
3
- // src/lock-file.ts
4
- import { flock } from "fs-ext";
5
- import { existsSync } from "@dxos/node-std/fs";
6
- import { open, constants } from "@dxos/node-std/fs/promises";
7
- var LockFile = class _LockFile {
8
- static async acquire(filename) {
9
- const handle = await open(filename, constants.O_CREAT);
10
- await new Promise((resolve, reject) => {
11
- flock(handle.fd, "exnb", async (err) => {
12
- if (err) {
13
- reject(err);
14
- await handle.close();
15
- return;
16
- }
17
- resolve();
18
- });
19
- });
20
- return handle;
21
- }
22
- static async release(handle) {
23
- await new Promise((resolve, reject) => {
24
- flock(handle.fd, "un", (err) => {
25
- if (err) {
26
- reject(err);
27
- return;
28
- }
29
- resolve();
30
- });
31
- });
32
- await handle.close();
33
- }
34
- static async isLocked(filename) {
35
- if (!existsSync(filename)) {
36
- return false;
37
- }
38
- try {
39
- const handle = await _LockFile.acquire(filename);
40
- await _LockFile.release(handle);
41
- return false;
42
- } catch (e) {
43
- return true;
44
- }
45
- }
46
- };
47
- export {
48
- LockFile
49
- };
50
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lock-file.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { flock } from 'fs-ext';\nimport { existsSync } from 'node:fs';\nimport { open, type FileHandle, constants } from 'node:fs/promises';\n\nexport class LockFile {\n static async acquire(filename: string): Promise<FileHandle> {\n const handle = await open(filename, constants.O_CREAT);\n await new Promise<void>((resolve, reject) => {\n flock(handle.fd, 'exnb', async (err) => {\n if (err) {\n reject(err);\n await handle.close();\n return;\n }\n resolve();\n });\n });\n return handle;\n }\n\n static async release(handle: FileHandle): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n flock(handle.fd, 'un', (err) => {\n if (err) {\n reject(err);\n return;\n }\n resolve();\n });\n });\n await handle.close();\n }\n\n static async isLocked(filename: string): Promise<boolean> {\n if (!existsSync(filename)) {\n return false;\n }\n try {\n const handle = await LockFile.acquire(filename);\n await LockFile.release(handle);\n\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n"],
5
- "mappings": ";;;AAIA,SAASA,aAAa;AACtB,SAASC,kBAAkB;AAC3B,SAASC,MAAuBC,iBAAiB;AAE1C,IAAMC,WAAN,MAAMA,UAAAA;EACX,aAAaC,QAAQC,UAAuC;AAC1D,UAAMC,SAAS,MAAMC,KAAKF,UAAUG,UAAUC,OAAO;AACrD,UAAM,IAAIC,QAAc,CAACC,SAASC,WAAAA;AAChCC,YAAMP,OAAOQ,IAAI,QAAQ,OAAOC,QAAAA;AAC9B,YAAIA,KAAK;AACPH,iBAAOG,GAAAA;AACP,gBAAMT,OAAOU,MAAK;AAClB;QACF;AACAL,gBAAAA;MACF,CAAA;IACF,CAAA;AACA,WAAOL;EACT;EAEA,aAAaW,QAAQX,QAAmC;AACtD,UAAM,IAAII,QAAc,CAACC,SAASC,WAAAA;AAChCC,YAAMP,OAAOQ,IAAI,MAAM,CAACC,QAAAA;AACtB,YAAIA,KAAK;AACPH,iBAAOG,GAAAA;AACP;QACF;AACAJ,gBAAAA;MACF,CAAA;IACF,CAAA;AACA,UAAML,OAAOU,MAAK;EACpB;EAEA,aAAaE,SAASb,UAAoC;AACxD,QAAI,CAACc,WAAWd,QAAAA,GAAW;AACzB,aAAO;IACT;AACA,QAAI;AACF,YAAMC,SAAS,MAAMH,UAASC,QAAQC,QAAAA;AACtC,YAAMF,UAASc,QAAQX,MAAAA;AAEvB,aAAO;IACT,SAASc,GAAG;AACV,aAAO;IACT;EACF;AACF;",
6
- "names": ["flock", "existsSync", "open", "constants", "LockFile", "acquire", "filename", "handle", "open", "constants", "O_CREAT", "Promise", "resolve", "reject", "flock", "fd", "err", "close", "release", "isLocked", "existsSync", "e"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"src/lock-file.ts":{"bytes":4402,"imports":[{"path":"fs-ext","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":457,"imports":[{"path":"src/lock-file.ts","kind":"import-statement","original":"./lock-file"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2342},"dist/lib/browser/index.mjs":{"imports":[{"path":"fs-ext","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs","kind":"import-statement","external":true},{"path":"@dxos/node-std/fs/promises","kind":"import-statement","external":true}],"exports":["LockFile"],"entryPoint":"src/index.ts","inputs":{"src/lock-file.ts":{"bytesInOutput":1050},"src/index.ts":{"bytesInOutput":0}},"bytes":1162}}}