@nomicfoundation/hardhat-utils 3.0.5 → 4.0.0

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.
Files changed (51) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/src/errors/fs.d.ts +1 -1
  3. package/dist/src/errors/fs.d.ts.map +1 -1
  4. package/dist/src/errors/fs.js.map +1 -1
  5. package/dist/src/errors/synchronization.d.ts +29 -0
  6. package/dist/src/errors/synchronization.d.ts.map +1 -0
  7. package/dist/src/errors/synchronization.js +48 -0
  8. package/dist/src/errors/synchronization.js.map +1 -0
  9. package/dist/src/format.d.ts +7 -41
  10. package/dist/src/format.d.ts.map +1 -1
  11. package/dist/src/format.js +2 -72
  12. package/dist/src/format.js.map +1 -1
  13. package/dist/src/fs.d.ts.map +1 -1
  14. package/dist/src/fs.js +8 -0
  15. package/dist/src/fs.js.map +1 -1
  16. package/dist/src/global-dir.d.ts +16 -0
  17. package/dist/src/global-dir.d.ts.map +1 -1
  18. package/dist/src/global-dir.js +27 -0
  19. package/dist/src/global-dir.js.map +1 -1
  20. package/dist/src/internal/format.d.ts +3 -3
  21. package/dist/src/internal/format.d.ts.map +1 -1
  22. package/dist/src/internal/format.js.map +1 -1
  23. package/dist/src/internal/lang.d.ts +8 -0
  24. package/dist/src/internal/lang.d.ts.map +1 -1
  25. package/dist/src/internal/lang.js +30 -0
  26. package/dist/src/internal/lang.js.map +1 -1
  27. package/dist/src/internal/request.d.ts.map +1 -1
  28. package/dist/src/internal/request.js +2 -1
  29. package/dist/src/internal/request.js.map +1 -1
  30. package/dist/src/lang.d.ts.map +1 -1
  31. package/dist/src/lang.js +2 -3
  32. package/dist/src/lang.js.map +1 -1
  33. package/dist/src/request.d.ts.map +1 -1
  34. package/dist/src/request.js +24 -6
  35. package/dist/src/request.js.map +1 -1
  36. package/dist/src/synchronization.d.ts +99 -1
  37. package/dist/src/synchronization.d.ts.map +1 -1
  38. package/dist/src/synchronization.js +407 -89
  39. package/dist/src/synchronization.js.map +1 -1
  40. package/package.json +3 -3
  41. package/src/errors/fs.ts +1 -1
  42. package/src/errors/synchronization.ts +75 -0
  43. package/src/format.ts +11 -94
  44. package/src/fs.ts +9 -0
  45. package/src/global-dir.ts +31 -0
  46. package/src/internal/format.ts +3 -3
  47. package/src/internal/lang.ts +36 -0
  48. package/src/internal/request.ts +2 -1
  49. package/src/lang.ts +6 -4
  50. package/src/request.ts +29 -6
  51. package/src/synchronization.ts +504 -95
@@ -36,4 +36,34 @@ export function deepMergeImpl(target, source, shouldOverwriteUndefined) {
36
36
  }
37
37
  return result;
38
38
  }
39
+ let cachedCustomEqual;
40
+ /**
41
+ * Performs a custom deep equality check using `fast-equals` with specific overrides.
42
+ *
43
+ * @param x The first value to compare.
44
+ * @param y The second value to compare.
45
+ * @returns A promise that resolves to true if the values are deeply equal, false otherwise.
46
+ */
47
+ export async function customFastEqual(x, y) {
48
+ if (cachedCustomEqual !== undefined) {
49
+ return cachedCustomEqual(x, y);
50
+ }
51
+ const { createCustomEqual } = await import("fast-equals");
52
+ cachedCustomEqual = createCustomEqual({
53
+ createCustomConfig: (defaultConfig) => ({
54
+ areTypedArraysEqual: (a, b, state) => {
55
+ // Node.js uses an internal pool for small Buffers, so multiple Buffers can
56
+ // share the same underlying ArrayBuffer while having different byteOffsets.
57
+ // Structural equality checks (e.g. deep equality) consider offset and length
58
+ // and may fail even if the contents are identical.
59
+ // We use Buffer.equals() to compare content only.
60
+ if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) {
61
+ return a.equals(b);
62
+ }
63
+ return defaultConfig.areTypedArraysEqual(a, b, state);
64
+ },
65
+ }),
66
+ });
67
+ return cachedCustomEqual(x, y);
68
+ }
39
69
  //# sourceMappingURL=lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../../src/internal/lang.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAI,KAAK,GAAoC,IAAI,CAAC;AAClD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAAS,EACT,MAAS,EACT,wBAAiC;IAEjC;kFAC8E;IAC9E,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAW,CAAC;IAEtC;0FACsF;IACtF,MAAM,IAAI,GAAG;QACX,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACtB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC;KACtB,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IACE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,gDAAgD;YAChD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,EACvD,CAAC;YACD;+FACmF;YACnF,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CACzB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB;yEAC6D;YAC7D,MAAM,CAAC,GAAG,CAAM,EAChB,wBAAwB,CACY,CAAC;QACzC,CAAC;aAAM,IAAI,wBAAwB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACjE;+FACmF;YACnF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAsC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../../src/internal/lang.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAI,KAAK,GAAoC,IAAI,CAAC;AAClD,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,KAAK,GAAG,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAAS,EACT,MAAS,EACT,wBAAiC;IAEjC;kFAC8E;IAC9E,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAW,CAAC;IAEtC;0FACsF;IACtF,MAAM,IAAI,GAAG;QACX,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACtB,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC;KACtB,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IACE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrB,gDAAgD;YAChD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,EACvD,CAAC;YACD;+FACmF;YACnF,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CACzB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB;yEAC6D;YAC7D,MAAM,CAAC,GAAG,CAAM,EAChB,wBAAwB,CACY,CAAC;QACzC,CAAC;aAAM,IAAI,wBAAwB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACjE;+FACmF;YACnF,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAsC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,iBAAoE,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,CAAI,EAAE,CAAI;IACjD,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAE1D,iBAAiB,GAAG,iBAAiB,CAAC;QACpC,kBAAkB,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACtC,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;gBACnC,2EAA2E;gBAC3E,4EAA4E;gBAC5E,6EAA6E;gBAC7E,mDAAmD;gBACnD,kDAAkD;gBAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;gBAED,OAAO,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;SACF,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/internal/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAgBlC,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAE,cAAmB,EAC/D,6BAA6B,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,iBAAiB,GACrE,OAAO,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC,CAiBD;AAED,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASpE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAC/C,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAO7B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,GAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAKvB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAC7B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAIxB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,MAAwC,EACjD,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAcxB;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAsB9D"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/internal/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,KAAK,YAAY,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,QAAQ,CAAC;AAiBlC,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GAAE,cAAmB,EAC/D,6BAA6B,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,iBAAiB,GACrE,OAAO,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC,CAiBD;AAED,wBAAgB,UAAU,CACxB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACxC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASpE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAC/C,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAO7B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,GAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAKvB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAC7B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAIxB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,MAAwC,EACjD,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAcxB;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAsB9D"}
@@ -1,3 +1,4 @@
1
+ import crypto from "node:crypto";
1
2
  import path from "node:path";
2
3
  import { mkdir } from "../fs.js";
3
4
  import { isObject } from "../lang.js";
@@ -8,7 +9,7 @@ export async function generateTempFilePath(filePath) {
8
9
  return path.format({
9
10
  dir,
10
11
  ext,
11
- name: `tmp-${name}`,
12
+ name: `tmp-${name}-${crypto.randomBytes(8).toString("hex")}`,
12
13
  });
13
14
  }
14
15
  export async function getBaseRequestOptions(requestUrl, { extraHeaders, abortSignal, queryParams } = {}, dispatcherOrDispatcherOptions) {
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/internal/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/internal/request.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lang.d.ts","sourceRoot":"","sources":["../../src/lang.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAIvD;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAI/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC1D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,wBAAwB,GAAE,OAAc,GACvC,CAAC,GAAG,CAAC,CAEP;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAE3C;AAED;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA4BzE"}
1
+ {"version":3,"file":"lang.d.ts","sourceRoot":"","sources":["../../src/lang.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAIvD;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC1D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,wBAAwB,GAAE,OAAc,GACvC,CAAC,GAAG,CAAC,CAEP;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAE3C;AAED;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA4BzE"}
package/dist/src/lang.js CHANGED
@@ -1,4 +1,4 @@
1
- import { deepMergeImpl, getDeepCloneFunction } from "./internal/lang.js";
1
+ import { customFastEqual, deepMergeImpl, getDeepCloneFunction, } from "./internal/lang.js";
2
2
  /**
3
3
  * Creates a deep clone of the provided value.
4
4
  *
@@ -17,8 +17,7 @@ export async function deepClone(value) {
17
17
  * @returns True if the values are deeply equal, false otherwise.
18
18
  */
19
19
  export async function deepEqual(x, y) {
20
- const { deepEqual: _deepEqual } = await import("fast-equals");
21
- return _deepEqual(x, y);
20
+ return customFastEqual(x, y);
22
21
  }
23
22
  /**
24
23
  * Deeply merges two objects.
@@ -1 +1 @@
1
- {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/lang.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,KAAQ;IACzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEhD,OAAO,UAAU,CAAI,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,CAAI,EAAE,CAAI;IAC3C,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAE9D,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CACvB,MAAS,EACT,MAAS,EACT,2BAAoC,IAAI;IAExC,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe;IACzC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAyB,GAAY;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,aAAa,GACjB,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE;wEACoE;IACpE,MAAM,QAAQ,GAAG,GAAU,CAAC;IAE5B,2FAA2F;IAC3F,MAAM,gBAAgB,GAAG;QACvB,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,sBAAsB;QACtB,gBAAgB;QAChB,UAAU;QACV,SAAS;KACV,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/lang.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,KAAQ;IACzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEhD,OAAO,UAAU,CAAI,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,CAAI,EAAE,CAAI;IAC3C,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CACvB,MAAS,EACT,MAAS,EACT,2BAAoC,IAAI;IAExC,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAe;IACzC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAyB,GAAY;IACjE,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,aAAa,GACjB,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE;wEACoE;IACpE,MAAM,QAAQ,GAAG,GAAU,CAAC;IAE5B,2FAA2F;IAC3F,MAAM,gBAAgB,GAAG;QACvB,aAAa;QACb,gBAAgB;QAChB,eAAe;QACf,sBAAsB;QACtB,gBAAgB;QAChB,UAAU;QACV,SAAS;KACV,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import fs from "node:fs";
1
+ import { open } from "node:fs/promises";
2
2
  import querystring from "node:querystring";
3
3
  import stream from "node:stream/promises";
4
4
  import { ensureError } from "./error.js";
5
5
  import { DownloadError, RequestError, DispatcherError, } from "./errors/request.js";
6
- import { move } from "./fs.js";
6
+ import { move, remove } from "./fs.js";
7
7
  import { generateTempFilePath, getBaseDispatcherOptions, getBaseRequestOptions, getBasicDispatcher, getPoolDispatcher, getProxyDispatcher, handleError, } from "./internal/request.js";
8
8
  export const DEFAULT_TIMEOUT_IN_MILLISECONDS = 300_000; // Aligned with unidici
9
9
  export const DEFAULT_MAX_REDIRECTS = 10;
@@ -116,10 +116,11 @@ export async function postFormRequest(url, body, requestOptions = {}, dispatcher
116
116
  */
117
117
  export async function download(url, destination, requestOptions = {}, dispatcherOrDispatcherOptions) {
118
118
  let statusCode;
119
+ let tempFilePath;
119
120
  try {
120
121
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions
121
122
  -- We need the full Dispatcher.ResponseData here for stream.pipeline,
122
- but HttpResponse doesnt expose the raw ReadableStream.
123
+ but HttpResponse doesn't expose the raw ReadableStream.
123
124
  TODO: wrap undici's request so we can keep the public API
124
125
  strictly typed without falling back to Undici types. */
125
126
  const response = (await getRequest(url, requestOptions, dispatcherOrDispatcherOptions));
@@ -128,13 +129,30 @@ export async function download(url, destination, requestOptions = {}, dispatcher
128
129
  if (statusCode < 200 || statusCode >= 300) {
129
130
  throw new Error(await body.text());
130
131
  }
131
- const tempFilePath = await generateTempFilePath(destination);
132
- const fileStream = fs.createWriteStream(tempFilePath);
133
- await stream.pipeline(body, fileStream);
132
+ tempFilePath = await generateTempFilePath(destination);
133
+ let fileHandle;
134
+ try {
135
+ fileHandle = await open(tempFilePath, "w");
136
+ const fileStream = fileHandle.createWriteStream();
137
+ await stream.pipeline(body, fileStream);
138
+ }
139
+ finally {
140
+ // NOTE: Historically, not closing the file handle caused issues on Windows,
141
+ // for example, when trying to move the file previously written to by this function
142
+ await fileHandle?.close();
143
+ }
134
144
  await move(tempFilePath, destination);
135
145
  }
136
146
  catch (e) {
137
147
  ensureError(e);
148
+ if (tempFilePath !== undefined) {
149
+ try {
150
+ await remove(tempFilePath);
151
+ }
152
+ catch {
153
+ // Best-effort: file may not exist or may have already been moved
154
+ }
155
+ }
138
156
  handleError(e, url);
139
157
  throw new DownloadError(url, e);
140
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,MAAM,+BAA+B,GAAG,OAAO,CAAC,CAAC,uBAAuB;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AA4C5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,iBAAiC,EAAE,EACnC,6BAAsE;IAEtE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,CACpD,GAAG,EACH,cAAc,EACd,6BAA6B,CAC9B,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,KAAK;YACb,GAAG,kBAAkB;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QAEf,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpB,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,IAAa,EACb,iBAAiC,EAAE,EACnC,6BAAsE;IAEtE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,CACpE,GAAG,EACH,cAAc,EACd,6BAA6B,CAC9B,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,MAAM;YACd,GAAG,kBAAkB;YACrB,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QAEf,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpB,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAW,EACX,IAAa,EACb,iBAAiC,EAAE,EACnC,6BAAsE;IAEtE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,CACpE,GAAG,EACH,cAAc,EACd,6BAA6B,CAC9B,CAAC;QACF,OAAO,MAAM,OAAO,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,MAAM;YACd,GAAG,kBAAkB;YACrB,OAAO,EAAE;gBACP,GAAG,OAAO;gBACV,cAAc,EAAE,mCAAmC;aACpD;YACD,sHAAsH;YACtH,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,IAA2B,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QAEf,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpB,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,WAAmB,EACnB,iBAAiC,EAAE,EACnC,6BAAsE;IAEtE,IAAI,UAA8B,CAAC;IAEnC,IAAI,CAAC;QACH;;;;+DAIuD;QACvD,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAChC,GAAG,EACH,cAAc,EACd,6BAA6B,CAC9B,CAAoC,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAC1B,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEjC,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QAEf,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpB,MAAM,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,EACE,OAAO,EACP,KAAK,EACL,IAAI,EACJ,cAAc,EACd,gBAAgB,MACK,EAAE;IAEzB,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAExE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,MAAM,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO,MAAM,iBAAiB,CAAC,GAAG,EAAE;gBAClC,GAAG,WAAW;gBACd,WAAW,EAAE,cAAc,IAAI,4BAA4B;aAC5D,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAEI,EAAE;IAEN,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpE,OAAO,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IAErC,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CACvB,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,UAAU;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU;YACtB,OAAO,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,GAAG,CAAC,WAAW,CACxB,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,105 @@
1
+ export { IncompatibleHostnameMultiProcessMutexError, IncompatibleMultiProcessMutexError, IncompatiblePlatformMultiProcessMutexError, IncompatibleUidMultiProcessMutexError, InvalidMultiProcessMutexPathError, MultiProcessMutexError, MultiProcessMutexTimeoutError, StaleMultiProcessMutexError, } from "./errors/synchronization.js";
2
+ /**
3
+ * A class that implements an inter-process mutex.
4
+ *
5
+ * This Mutex is implemented using hard-link-based atomic file creation. A
6
+ * temporary file containing JSON metadata (PID, hostname, platform, uid,
7
+ * session ID, and creation timestamp) is written first, then hard-linked to
8
+ * the lock path via `fs.linkSync`. `linkSync` fails atomically with `EEXIST`
9
+ * if the lock already exists, ensuring only one process can hold the lock at
10
+ * a time.
11
+ *
12
+ * Staleness is determined by PID liveness only — timestamps are stored for
13
+ * debugging purposes but are never used to determine staleness. This avoids the
14
+ * clock-skew and long-running-task problems that time-based staleness detection
15
+ * has (where a second process can break into a lock that's still legitimately
16
+ * held).
17
+ *
18
+ * Incompatible locks — those created by a different hostname, platform, or
19
+ * uid — are rejected immediately with specific subclasses of
20
+ * `IncompatibleMultiProcessMutexError`
21
+ * (`IncompatibleHostnameMultiProcessMutexError`,
22
+ * `IncompatiblePlatformMultiProcessMutexError`, or
23
+ * `IncompatibleUidMultiProcessMutexError`) because their PID liveness cannot
24
+ * be verified or their lock file cannot be removed. These must be removed
25
+ * manually.
26
+ *
27
+ * When the lock is held by a live process, the caller polls with exponential
28
+ * backoff (default: 5ms → 10ms → ... → 160ms → 200ms cap) until the lock is
29
+ * released or a timeout (default: 60s) is reached.
30
+ *
31
+ * If the filesystem does not support hard links (e.g., certain network
32
+ * filesystems), acquisition fails fast with a `MultiProcessMutexError` rather
33
+ * than degrading into timeout-based retries.
34
+ *
35
+ * ## Performance characteristics
36
+ *
37
+ * - **Uncontended acquisition:** One temp file write + one `linkSync` — takes
38
+ * less than 1ms on most systems.
39
+ * - **Stale lock recovery:** One `readFileSync` to read metadata, one
40
+ * `process.kill(pid, 0)` liveness check, and one `unlinkSync` to remove the
41
+ * stale lock file before retrying acquisition. The retry is immediate (no
42
+ * sleep), so recovery adds sub-millisecond overhead.
43
+ * - **Contended (live holder):** Polls with exponential backoff starting at
44
+ * 5ms and doubling each iteration until capped at 200ms. Worst-case latency
45
+ * after the lock is released is up to `MAX_POLL_INTERVAL_MS` (200ms).
46
+ * - **Release:** A single `unlinkSync` call.
47
+ *
48
+ * ## Limitations
49
+ *
50
+ * - **Polling-based:** There is no filesystem notification; callers discover
51
+ * that the lock is free only on the next poll, so there can be up to 200ms
52
+ * of wasted wait time after the lock is released.
53
+ * - **Not reentrant:** The same process (or even the same `MultiProcessMutex`
54
+ * instance) calling `use()` while already holding the lock will deadlock
55
+ * until the timeout fires.
56
+ * - **Single-host, single-user only:** Encountering a lock from a different
57
+ * hostname throws `IncompatibleHostnameMultiProcessMutexError`, a different
58
+ * platform throws `IncompatiblePlatformMultiProcessMutexError`, and a
59
+ * different uid throws `IncompatibleUidMultiProcessMutexError`. All extend
60
+ * `IncompatibleMultiProcessMutexError`. This means the lock is not safe to
61
+ * use on shared/networked filesystems (e.g., NFS) where multiple hosts or
62
+ * users may access the same path.
63
+ * - **Requires hard-link support:** The underlying filesystem must support
64
+ * `linkSync`. If hard links are unsupported, acquisition fails immediately
65
+ * with `MultiProcessMutexError`.
66
+ * - **PID recycling:** If a process dies and the OS reassigns its PID to a new
67
+ * unrelated process before the stale check runs, the lock is incorrectly
68
+ * considered live. This is extremely unlikely in practice due to the large
69
+ * PID space on modern systems.
70
+ * - **No fairness guarantee:** Multiple waiters polling concurrently have no
71
+ * guaranteed ordering — whichever one succeeds at `linkSync` first after the
72
+ * lock is released wins.
73
+ */
1
74
  export declare class MultiProcessMutex {
2
75
  #private;
3
- constructor(mutexName: string, maxMutexLifespanInMs?: number);
76
+ /**
77
+ * Creates an inter-process mutex given an absolute path.
78
+ *
79
+ * @param absolutePathToLock The absolute path of the mutex.
80
+ * @param timeout The max amount of time to spend trying to acquire the lock
81
+ * in milliseconds. Defaults to 60000.
82
+ * @param initialPollInterval The initial poll interval in milliseconds.
83
+ * Defaults to 5.
84
+ */
85
+ constructor(absolutePathToLock: string, timeout?: number, initialPollInterval?: number);
86
+ /**
87
+ * Runs the function f while holding the mutex, returning its result.
88
+ *
89
+ * @param f The function to run.
90
+ * @returns The result of the function.
91
+ */
4
92
  use<T>(f: () => Promise<T>): Promise<T>;
93
+ /**
94
+ * Acquires the mutex, returning an async function to release it.
95
+ * The function MUST be called after using the mutex.
96
+ *
97
+ * If this function throws, no cleanup is necessary — the lock was never
98
+ * acquired.
99
+ *
100
+ * @returns The mutex's release function.
101
+ */
102
+ acquire(): Promise<() => Promise<void>>;
5
103
  }
6
104
  /**
7
105
  * A class that implements an asynchronous mutex (mutual exclusion) lock.
@@ -1 +1 @@
1
- {"version":3,"file":"synchronization.d.ts","sourceRoot":"","sources":["../../src/synchronization.ts"],"names":[],"mappings":"AAwBA,qBAAa,iBAAiB;;gBAIhB,SAAS,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,MAAM;IAQ/C,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CA8HrD;AAED;;;;;GAKG;AACH,qBAAa,UAAU;;IAIrB;;;;;;OAMG;IACU,YAAY,CAAC,OAAO,EAC/B,CAAC,EAAE,MAAM,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CA+B7B"}
1
+ {"version":3,"file":"synchronization.d.ts","sourceRoot":"","sources":["../../src/synchronization.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,0CAA0C,EAC1C,kCAAkC,EAClC,0CAA0C,EAC1C,qCAAqC,EACrC,iCAAiC,EACjC,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAgCrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,qBAAa,iBAAiB;;IAK5B;;;;;;;;OAQG;gBAED,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,EAChB,mBAAmB,CAAC,EAAE,MAAM;IAY9B;;;;;OAKG;IACU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUpD;;;;;;;;OAQG;IACU,OAAO,IAAI,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CA+XrD;AAED;;;;;GAKG;AACH,qBAAa,UAAU;;IAIrB;;;;;;OAMG;IACU,YAAY,CAAC,OAAO,EAC/B,CAAC,EAAE,MAAM,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;CA+B7B"}