@nomicfoundation/hardhat-utils 3.0.0 → 3.0.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @nomicfoundation/hardhat-utils
2
2
 
3
+ ## 3.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 8c1cb1e: Fixed peer dependencies for Hardhat so `rpc` utils can be loaded ([#7415](https://github.com/NomicFoundation/hardhat/issues/7415))
8
+
9
+ ## 3.0.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 49cc9ba: Load resolved global options into environment variables during tests ([#7305](https://github.com/NomicFoundation/hardhat/pull/7305))
14
+ - 8d3b16c: Support for custom compilers ([#7130](https://github.com/NomicFoundation/hardhat/issues/7130))
15
+ - a475780: Added automatic proxy detection for `hardhat-verify` and fixed case-insensitive proxy environment variables for network requests ([#7407](https://github.com/NomicFoundation/hardhat/pull/7407))
16
+
3
17
  ## 3.0.0
4
18
 
5
19
  ### Major Changes
package/dist/src/ci.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * IMPORTANT: A copy of this function exists in `v-next/hardhat-node-test-reporter/src/ci.ts`.
3
+ * If you change this function, you must also change the copy.
4
+ */
1
5
  /**
2
6
  * Checks whether the current process is running in a CI environment.
3
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAa9B"}
1
+ {"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,OAAO,CAa9B"}
package/dist/src/ci.js CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * IMPORTANT: A copy of this function exists in `v-next/hardhat-node-test-reporter/src/ci.ts`.
3
+ * If you change this function, you must also change the copy.
4
+ */
1
5
  /**
2
6
  * Checks whether the current process is running in a CI environment.
3
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,OAAO,CACL,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,iBAAiB;QACrD,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,aAAa;QACtC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa;QAChD,GAAG,CAAC,sBAAsB,KAAK,SAAS,IAAI,gBAAgB;QAC5D,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,uEAAuE;QAC/F,GAAG,CAAC,sBAAsB,KAAK,SAAS,IAAI,uBAAuB;QACnE,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,oBAAoB;QACtD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,qBAAqB;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/ci.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,UAAU,IAAI;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,OAAO,CACL,GAAG,CAAC,cAAc,KAAK,SAAS,IAAI,iBAAiB;QACrD,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,aAAa;QACtC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa;QAChD,GAAG,CAAC,sBAAsB,KAAK,SAAS,IAAI,gBAAgB;QAC5D,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,uEAAuE;QAC/F,GAAG,CAAC,sBAAsB,KAAK,SAAS,IAAI,uBAAuB;QACnE,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,oBAAoB;QACtD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,qBAAqB;KAC/C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Sets the resolved global options as environment variables.
3
+ *
4
+ * @param globalOptions An object containing the resolved global options,
5
+ * with each option adhering to its definition in the globalOptionDefinitions.
6
+ */
7
+ export declare function setGlobalOptionsAsEnvVariables<T extends Record<keyof T, string | boolean>>(globalOptions: T): void;
8
+ /**
9
+ * Converts a global option name to its corresponding environment variable name.
10
+ * The conversion involves transforming the option name from camelCase to
11
+ * SNAKE_CASE and prefixing it with "HARDHAT_".
12
+ *
13
+ * @param globalOptionName The name of the global option in camelCase.
14
+ *
15
+ * @returns The corresponding environment variable name in the format
16
+ * "HARDHAT_<OPTION_NAME_IN_SNAKE_CASE>".
17
+ */
18
+ export declare function getEnvVariableNameFromGlobalOption(globalOptionName: string): string;
19
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EAC3C,aAAa,EAAE,CAAC,GAAG,IAAI,CAQxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,UAE1E"}
@@ -0,0 +1,29 @@
1
+ import { camelToSnakeCase } from "./string.js";
2
+ /**
3
+ * Sets the resolved global options as environment variables.
4
+ *
5
+ * @param globalOptions An object containing the resolved global options,
6
+ * with each option adhering to its definition in the globalOptionDefinitions.
7
+ */
8
+ export function setGlobalOptionsAsEnvVariables(globalOptions) {
9
+ for (const [name, value] of Object.entries(globalOptions)) {
10
+ const envName = getEnvVariableNameFromGlobalOption(name);
11
+ if (value !== undefined) {
12
+ process.env[envName] = String(value);
13
+ }
14
+ }
15
+ }
16
+ /**
17
+ * Converts a global option name to its corresponding environment variable name.
18
+ * The conversion involves transforming the option name from camelCase to
19
+ * SNAKE_CASE and prefixing it with "HARDHAT_".
20
+ *
21
+ * @param globalOptionName The name of the global option in camelCase.
22
+ *
23
+ * @returns The corresponding environment variable name in the format
24
+ * "HARDHAT_<OPTION_NAME_IN_SNAKE_CASE>".
25
+ */
26
+ export function getEnvVariableNameFromGlobalOption(globalOptionName) {
27
+ return `HARDHAT_${camelToSnakeCase(globalOptionName).toUpperCase()}`;
28
+ }
29
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAE5C,aAAgB;IAChB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,kCAAkC,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CAAC,gBAAwB;IACzE,OAAO,WAAW,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AACvE,CAAC"}
package/dist/src/fs.d.ts CHANGED
@@ -269,5 +269,9 @@ export declare function emptyDir(absolutePath: string): Promise<void>;
269
269
  * @returns The absolute path to the file, or `undefined` if it wasn't found.
270
270
  */
271
271
  export declare function findUp(fileName: string, from?: string): Promise<string | undefined>;
272
+ /**
273
+ * This function uses some heuristics to check if a file is binary by reading the first bytesToCheck bytes from the file.
274
+ */
275
+ export declare function isBinaryFile(filePath: string, bytesToCheck?: number): Promise<boolean>;
272
276
  export { FileNotFoundError, FileSystemAccessError, InvalidFileFormatError, JsonSerializationError, FileAlreadyExistsError, NotADirectoryError, IsDirectoryError, DirectoryNotEmptyError, } from "./errors/fs.js";
273
277
  //# sourceMappingURL=fs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"}
package/dist/src/fs.js CHANGED
@@ -707,5 +707,28 @@ export async function findUp(fileName, from) {
707
707
  currentDir = parentDir;
708
708
  }
709
709
  }
710
+ /**
711
+ * This function uses some heuristics to check if a file is binary by reading the first bytesToCheck bytes from the file.
712
+ */
713
+ export async function isBinaryFile(filePath, bytesToCheck = 8000) {
714
+ const fd = await fsPromises.open(filePath, "r");
715
+ const buffer = Buffer.alloc(bytesToCheck);
716
+ const { bytesRead } = await fd.read(buffer, 0, bytesToCheck, 0);
717
+ await fd.close();
718
+ let nonPrintable = 0;
719
+ for (let i = 0; i < bytesRead; i++) {
720
+ const byte = buffer[i];
721
+ // Allow common text ranges: tab, newline, carriage return, and printable ASCII
722
+ if (byte === 9 || // tab
723
+ byte === 10 || // newline
724
+ byte === 13 || // carriage return
725
+ (byte >= 32 && byte <= 126)) {
726
+ continue;
727
+ }
728
+ nonPrintable++;
729
+ }
730
+ // Heuristic: if more than ~30% of bytes are non-printable, assume binary
731
+ return nonPrintable / bytesRead > 0.3;
732
+ }
710
733
  export { FileNotFoundError, FileSystemAccessError, InvalidFileFormatError, JsonSerializationError, FileAlreadyExistsError, NotADirectoryError, IsDirectoryError, DirectoryNotEmptyError, } from "./errors/fs.js";
711
734
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAoB;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,OAAoE,EACpE,eAA2E;IAE3E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,MAAM,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,IACE,eAAe,KAAK,SAAS;gBAC7B,CAAC,MAAM,eAAe,CAAC,kBAAkB,CAAC,CAAC,EAC3C,CAAC;gBACD,OAAO,mBAAmB,CACxB,kBAAkB,EAClB,OAAO,EACP,eAAe,CAChB,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,kBAAkB,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,OAAmE;IAEnE,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,OAAO,yBAAyB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,YAAoB;IAEpB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAE/C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,gBAAgB,EAAE,CAAC;YAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,CACd,QAAQ,EACR,MAAM,eAAe,CACnB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CACrC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAoB;IACpD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,kBAA0B;IAC9D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,kBAA0B;IAE1B,IAAI,UAAkC,CAAC;IAEvC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAErD,gFAAgF;QAChF,gGAAgG;QAChG,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;YAChC,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,MAAM,MAAM,GAAkB,MAAM,QAAQ,CAC1C,cAAc,EACd,UAAU,EACV,KAAK,EACH,QAA4D,EAClC,EAAE;YAC5B,IAAI,KAAiE,CAAC;YACtE,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBACrC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CAAC;QAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QAEf,+EAA+E;QAC/E,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC;YAED,+EAA+E;YAC/E,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,qBAAqB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,+EAA+E;QAC/E,MAAM,UAAU,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,kBAA0B,EAC1B,MAAS;IAET,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,aAAa,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,kBAA0B,EAC1B,MAAS;IAET,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,UAAkC,CAAC;IAEvC,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAE5D,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAEvD,MAAM,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,oDAAoD;QACpD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtB,+CAA+C;YACjD,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;QACrB,CAAC;QAED,+EAA+E;QAC/E,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,sEAAsE;QACtE,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,4EAA4E;QAC5E,mFAAmF;QACnF,MAAM,UAAU,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,kBAA0B;IAE1B,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,kBAA0B,EAC1B,IAAY,EACZ,IAAa;IAEb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE;YACnD,QAAQ,EAAE,MAAM;YAChB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,oDAAoD;QACpD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtB,+CAA+C;YACjD,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC,CAAA,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,kBAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC7D,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,iBAAyB;IACrD,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,YAAoB;IAC9C,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAiB,KAAK,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,WAAW,CACtB,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB;IACtD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,YAAoB;IACtD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,YAAoB;IACpD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,YAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,WAAmB;IAC5D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,sEAAsE;QACtE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtE,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,MAAc,EAAE,WAAmB;IAC5D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,wCAAwC;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjD,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,sBAAsB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,YAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE;YAChC,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,YAAoB,EACpB,IAAqB;IAErB,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,YAAoB;IACnD,MAAM,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,YAAoB;IACjD,IAAI,KAAK,CAAC;IACV,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC5B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,YAAY,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;IAC1B,6EAA6E;IAC7E,MAAM,KAAK,CAAC,YAAY,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,IAAa;IAEb,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function panicErrorCodeToMessage(errorCode: bigint): string;
2
+ //# sourceMappingURL=panic-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panic-errors.d.ts","sourceRoot":"","sources":["../../src/panic-errors.ts"],"names":[],"mappings":"AAEA,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQjE"}
@@ -0,0 +1,32 @@
1
+ import { numberToHexString } from "./hex.js";
2
+ export function panicErrorCodeToMessage(errorCode) {
3
+ const reason = panicErrorCodeToReason(errorCode);
4
+ if (reason !== undefined) {
5
+ return `reverted with panic code ${numberToHexString(errorCode)} (${reason})`;
6
+ }
7
+ return `reverted with unknown panic code ${numberToHexString(errorCode)}`;
8
+ }
9
+ function panicErrorCodeToReason(errorCode) {
10
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- we are only covering some of the integer range
11
+ switch (errorCode) {
12
+ case 0x1n:
13
+ return "Assertion error";
14
+ case 0x11n:
15
+ return "Arithmetic operation overflowed outside of an unchecked block";
16
+ case 0x12n:
17
+ return "Division or modulo division by zero";
18
+ case 0x21n:
19
+ return "Tried to convert a value into an enum, but the value was too big or negative";
20
+ case 0x22n:
21
+ return "Incorrectly encoded storage byte array";
22
+ case 0x31n:
23
+ return ".pop() was called on an empty array";
24
+ case 0x32n:
25
+ return "Array accessed at an out-of-bounds or negative index";
26
+ case 0x41n:
27
+ return "Too much memory was allocated, or an array was created that is too large";
28
+ case 0x51n:
29
+ return "Called a zero-initialized variable of internal function type";
30
+ }
31
+ }
32
+ //# sourceMappingURL=panic-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panic-errors.js","sourceRoot":"","sources":["../../src/panic-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,4BAA4B,iBAAiB,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG,CAAC;IAChF,CAAC;IAED,OAAO,oCAAoC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,sBAAsB,CAAC,SAAiB;IAC/C,4HAA4H;IAC5H,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,IAAI;YACP,OAAO,iBAAiB,CAAC;QAC3B,KAAK,KAAK;YACR,OAAO,+DAA+D,CAAC;QACzE,KAAK,KAAK;YACR,OAAO,qCAAqC,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,8EAA8E,CAAC;QACxF,KAAK,KAAK;YACR,OAAO,wCAAwC,CAAC;QAClD,KAAK,KAAK;YACR,OAAO,qCAAqC,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,sDAAsD,CAAC;QAChE,KAAK,KAAK;YACR,OAAO,0EAA0E,CAAC;QACpF,KAAK,KAAK;YACR,OAAO,8DAA8D,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -124,5 +124,15 @@ export declare function shouldUseProxy(url: string): boolean;
124
124
  * @returns `true` if the url is valid, `false` otherwise.
125
125
  */
126
126
  export declare function isValidUrl(url: string): boolean;
127
+ /**
128
+ * Returns the proxy URL from environment variables based on the target URL.
129
+ * For HTTPS URLs, checks `https_proxy` then `HTTPS_PROXY`.
130
+ * For HTTP URLs, checks `http_proxy` then `HTTP_PROXY`.
131
+ * Falls back to the other protocol's proxy if none found.
132
+ *
133
+ * @param url The target URL to determine proxy for.
134
+ * @returns The proxy URL, or `undefined` if none are set.
135
+ */
136
+ export declare function getProxyUrl(url: string): string | undefined;
127
137
  export { ConnectionRefusedError, DispatcherError, DownloadError, RequestError, RequestTimeoutError, ResponseStatusCodeError, } from "./errors/request.js";
128
138
  //# sourceMappingURL=request.d.ts.map
@@ -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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"}
@@ -212,5 +212,30 @@ export function isValidUrl(url) {
212
212
  return false;
213
213
  }
214
214
  }
215
+ /**
216
+ * Returns the proxy URL from environment variables based on the target URL.
217
+ * For HTTPS URLs, checks `https_proxy` then `HTTPS_PROXY`.
218
+ * For HTTP URLs, checks `http_proxy` then `HTTP_PROXY`.
219
+ * Falls back to the other protocol's proxy if none found.
220
+ *
221
+ * @param url The target URL to determine proxy for.
222
+ * @returns The proxy URL, or `undefined` if none are set.
223
+ */
224
+ export function getProxyUrl(url) {
225
+ const { protocol } = new URL(url);
226
+ if (protocol === "https:") {
227
+ return (process.env.https_proxy ??
228
+ process.env.HTTPS_PROXY ??
229
+ process.env.http_proxy ??
230
+ process.env.HTTP_PROXY);
231
+ }
232
+ else if (protocol === "http:") {
233
+ return (process.env.http_proxy ??
234
+ process.env.HTTP_PROXY ??
235
+ process.env.https_proxy ??
236
+ process.env.HTTPS_PROXY);
237
+ }
238
+ return undefined;
239
+ }
215
240
  export { ConnectionRefusedError, DispatcherError, DownloadError, RequestError, RequestTimeoutError, ResponseStatusCodeError, } from "./errors/request.js";
216
241
  //# sourceMappingURL=request.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/request.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,21 @@ export declare class MultiProcessMutex {
3
3
  constructor(mutexName: string, maxMutexLifespanInMs?: number);
4
4
  use<T>(f: () => Promise<T>): Promise<T>;
5
5
  }
6
+ /**
7
+ * A class that implements an asynchronous mutex (mutual exclusion) lock.
8
+ *
9
+ * The mutex ensures that only one asynchronous operation can be executed at a time,
10
+ * providing exclusive access to a shared resource.
11
+ */
12
+ export declare class AsyncMutex {
13
+ #private;
14
+ /**
15
+ * Acquires the mutex, running the provided function exclusively,
16
+ * and releasing it afterwards.
17
+ *
18
+ * @param f The function to run.
19
+ * @returns The result of the function.
20
+ */
21
+ exclusiveRun<ReturnT>(f: () => ReturnT): Promise<Awaited<ReturnT>>;
22
+ }
6
23
  //# sourceMappingURL=synchronization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"synchronization.d.ts","sourceRoot":"","sources":["../../src/synchronization.ts"],"names":[],"mappings":"AAuBA,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;CA0FrD"}
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"}
@@ -12,6 +12,7 @@ import path from "node:path";
12
12
  import debug from "debug";
13
13
  import { ensureNodeErrnoExceptionError } from "./error.js";
14
14
  import { FileSystemAccessError } from "./errors/fs.js";
15
+ import { readUtf8File } from "./fs.js";
15
16
  import { sleep } from "./lang.js";
16
17
  const log = debug("hardhat:util:multi-process-mutex");
17
18
  const DEFAULT_MAX_MUTEX_LIFESPAN_IN_MS = 60000;
@@ -38,6 +39,10 @@ export class MultiProcessMutex {
38
39
  log(`Current mutex file is too old, removing it at path '${this.#mutexFilePath}'`);
39
40
  this.#deleteMutexFile();
40
41
  }
42
+ else if (await this.#isMutexProcessOwnerDead()) {
43
+ log(`The process owning the mutex file no longer exists. Removing mutex file at '${this.#mutexFilePath}'.`);
44
+ this.#deleteMutexFile();
45
+ }
41
46
  else {
42
47
  // wait
43
48
  await sleep(MUTEX_LOOP_WAITING_TIME_IN_MS / 1000);
@@ -47,7 +52,9 @@ export class MultiProcessMutex {
47
52
  async #tryToAcquireMutex() {
48
53
  try {
49
54
  // Create a file only if it does not exist
50
- fs.writeFileSync(this.#mutexFilePath, "", { flag: "wx+" });
55
+ fs.writeFileSync(this.#mutexFilePath, process.pid.toString(), {
56
+ flag: "wx+",
57
+ });
51
58
  return true;
52
59
  }
53
60
  catch (e) {
@@ -66,6 +73,8 @@ export class MultiProcessMutex {
66
73
  }
67
74
  finally {
68
75
  // Release the mutex
76
+ // Note: if a process dies, its `finally` block never executes, and the process hangs indefinitely since no response is received.
77
+ // To handle this, we use the function `isMutexProcessOwnerDead`.
69
78
  log(`Mutex released at path '${this.#mutexFilePath}'`);
70
79
  this.#deleteMutexFile();
71
80
  log(`Mutex released at path '${this.#mutexFilePath}'`);
@@ -103,5 +112,72 @@ export class MultiProcessMutex {
103
112
  throw new FileSystemAccessError(e.message, e);
104
113
  }
105
114
  }
115
+ async #isMutexProcessOwnerDead() {
116
+ let mutexPid;
117
+ try {
118
+ // If the file doesn't exist, it means the owning process deleted it
119
+ mutexPid = await readUtf8File(this.#mutexFilePath);
120
+ }
121
+ catch (_e) {
122
+ return false;
123
+ }
124
+ try {
125
+ process.kill(parseInt(mutexPid, 10), 0);
126
+ }
127
+ catch (e) {
128
+ ensureNodeErrnoExceptionError(e);
129
+ if (e.code === "ESRCH") {
130
+ // The process owning the mutex no longer exists
131
+ return true;
132
+ }
133
+ }
134
+ return false;
135
+ }
136
+ }
137
+ /**
138
+ * A class that implements an asynchronous mutex (mutual exclusion) lock.
139
+ *
140
+ * The mutex ensures that only one asynchronous operation can be executed at a time,
141
+ * providing exclusive access to a shared resource.
142
+ */
143
+ export class AsyncMutex {
144
+ #acquired = false;
145
+ #queue = [];
146
+ /**
147
+ * Acquires the mutex, running the provided function exclusively,
148
+ * and releasing it afterwards.
149
+ *
150
+ * @param f The function to run.
151
+ * @returns The result of the function.
152
+ */
153
+ async exclusiveRun(f) {
154
+ const release = await this.#acquire();
155
+ try {
156
+ return await f();
157
+ }
158
+ finally {
159
+ await release();
160
+ }
161
+ }
162
+ /**
163
+ * Acquires the mutex, returning a function that releases it.
164
+ */
165
+ async #acquire() {
166
+ if (!this.#acquired) {
167
+ this.#acquired = true;
168
+ return async () => {
169
+ this.#acquired = false;
170
+ const next = this.#queue.shift();
171
+ if (next !== undefined) {
172
+ next();
173
+ }
174
+ };
175
+ }
176
+ return new Promise((resolve) => {
177
+ this.#queue.push(() => {
178
+ resolve(this.#acquire());
179
+ });
180
+ });
181
+ }
106
182
  }
107
183
  //# sourceMappingURL=synchronization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"synchronization.js","sourceRoot":"","sources":["../../src/synchronization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synchronization.js","sourceRoot":"","sources":["../../src/synchronization.ts"],"names":[],"mappings":"AAAA,4HAA4H;AAC5H,2FAA2F;AAC3F,mDAAmD;AACnD,0GAA0G;AAC1G,oFAAoF;AACpF,yGAAyG;AACzG,oJAAoJ;AACpJ,6GAA6G;AAE7G,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,GAAG,GAAG,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,MAAM,gCAAgC,GAAG,KAAK,CAAC;AAC/C,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAE1C,MAAM,OAAO,iBAAiB;IACnB,cAAc,CAAS;IACvB,kBAAkB,CAAS;IAEpC,YAAY,SAAiB,EAAE,oBAA6B;QAC1D,GAAG,CAAC,6BAA6B,SAAS,GAAG,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB;YACrB,oBAAoB,IAAI,gCAAgC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,GAAG,CAAI,CAAmB;QACrC,GAAG,CAAC,2CAA2C,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAEvE,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACpC,0BAA0B;gBAC1B,OAAO,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC9B,gGAAgG;gBAChG,GAAG,CACD,uDAAuD,IAAI,CAAC,cAAc,GAAG,CAC9E,CAAC;gBAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,MAAM,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;gBACjD,GAAG,CACD,+EAA+E,IAAI,CAAC,cAAc,IAAI,CACvG,CAAC;gBAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO;gBACP,MAAM,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,0CAA0C;YAC1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC5D,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,wDAAwD;gBACxD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAI,CAAmB;QAC1D,GAAG,CAAC,2BAA2B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,oBAAoB;YACpB,iIAAiI;YACjI,iEAAiE;YACjE,GAAG,CAAC,2BAA2B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,GAAG,CAAC,2BAA2B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,mGAAmG;gBACnG,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEhD,OAAO,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;IACxC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC;YACH,GAAG,CAAC,gCAAgC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YAC5D,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxB,mGAAmG;gBACnG,OAAO;YACT,CAAC;YAED,MAAM,IAAI,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,IAAI,QAAgB,CAAC;QAErB,IAAI,CAAC;YACH,oEAAoE;YACpE,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,6BAA6B,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACvB,gDAAgD;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IACrB,SAAS,GAAG,KAAK,CAAC;IACT,MAAM,GAAsB,EAAE,CAAC;IAExC;;;;;;OAMG;IACI,KAAK,CAAC,YAAY,CACvB,CAAgB;QAEhB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO,KAAK,IAAI,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,EAAE,CAAC;gBACT,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nomicfoundation/hardhat-utils",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "Utilities for Hardhat and its plugins",
5
5
  "homepage": "https://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat-utils",
6
6
  "repository": {
@@ -20,6 +20,7 @@
20
20
  "./crypto": "./dist/src/crypto.js",
21
21
  "./date": "./dist/src/date.js",
22
22
  "./debug": "./dist/src/debug.js",
23
+ "./env": "./dist/src/env.js",
23
24
  "./error": "./dist/src/error.js",
24
25
  "./eth": "./dist/src/eth.js",
25
26
  "./fs": "./dist/src/fs.js",
@@ -28,6 +29,7 @@
28
29
  "./lang": "./dist/src/lang.js",
29
30
  "./number": "./dist/src/number.js",
30
31
  "./package": "./dist/src/package.js",
32
+ "./panic-errors": "./dist/src/panic-errors.js",
31
33
  "./path": "./dist/src/path.js",
32
34
  "./request": "./dist/src/request.js",
33
35
  "./string": "./dist/src/string.js",
package/src/ci.ts CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * IMPORTANT: A copy of this function exists in `v-next/hardhat-node-test-reporter/src/ci.ts`.
3
+ * If you change this function, you must also change the copy.
4
+ */
5
+
1
6
  /**
2
7
  * Checks whether the current process is running in a CI environment.
3
8
  *
package/src/env.ts ADDED
@@ -0,0 +1,33 @@
1
+ import { camelToSnakeCase } from "./string.js";
2
+
3
+ /**
4
+ * Sets the resolved global options as environment variables.
5
+ *
6
+ * @param globalOptions An object containing the resolved global options,
7
+ * with each option adhering to its definition in the globalOptionDefinitions.
8
+ */
9
+ export function setGlobalOptionsAsEnvVariables<
10
+ T extends Record<keyof T, string | boolean>,
11
+ >(globalOptions: T): void {
12
+ for (const [name, value] of Object.entries(globalOptions)) {
13
+ const envName = getEnvVariableNameFromGlobalOption(name);
14
+
15
+ if (value !== undefined) {
16
+ process.env[envName] = String(value);
17
+ }
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Converts a global option name to its corresponding environment variable name.
23
+ * The conversion involves transforming the option name from camelCase to
24
+ * SNAKE_CASE and prefixing it with "HARDHAT_".
25
+ *
26
+ * @param globalOptionName The name of the global option in camelCase.
27
+ *
28
+ * @returns The corresponding environment variable name in the format
29
+ * "HARDHAT_<OPTION_NAME_IN_SNAKE_CASE>".
30
+ */
31
+ export function getEnvVariableNameFromGlobalOption(globalOptionName: string) {
32
+ return `HARDHAT_${camelToSnakeCase(globalOptionName).toUpperCase()}`;
33
+ }
package/src/fs.ts CHANGED
@@ -834,6 +834,39 @@ export async function findUp(
834
834
  }
835
835
  }
836
836
 
837
+ /**
838
+ * This function uses some heuristics to check if a file is binary by reading the first bytesToCheck bytes from the file.
839
+ */
840
+ export async function isBinaryFile(
841
+ filePath: string,
842
+ bytesToCheck = 8000,
843
+ ): Promise<boolean> {
844
+ const fd = await fsPromises.open(filePath, "r");
845
+
846
+ const buffer = Buffer.alloc(bytesToCheck);
847
+ const { bytesRead } = await fd.read(buffer, 0, bytesToCheck, 0);
848
+ await fd.close();
849
+
850
+ let nonPrintable = 0;
851
+ for (let i = 0; i < bytesRead; i++) {
852
+ const byte = buffer[i];
853
+
854
+ // Allow common text ranges: tab, newline, carriage return, and printable ASCII
855
+ if (
856
+ byte === 9 || // tab
857
+ byte === 10 || // newline
858
+ byte === 13 || // carriage return
859
+ (byte >= 32 && byte <= 126)
860
+ ) {
861
+ continue;
862
+ }
863
+ nonPrintable++;
864
+ }
865
+
866
+ // Heuristic: if more than ~30% of bytes are non-printable, assume binary
867
+ return nonPrintable / bytesRead > 0.3;
868
+ }
869
+
837
870
  export {
838
871
  FileNotFoundError,
839
872
  FileSystemAccessError,
@@ -0,0 +1,35 @@
1
+ import { numberToHexString } from "./hex.js";
2
+
3
+ export function panicErrorCodeToMessage(errorCode: bigint): string {
4
+ const reason = panicErrorCodeToReason(errorCode);
5
+
6
+ if (reason !== undefined) {
7
+ return `reverted with panic code ${numberToHexString(errorCode)} (${reason})`;
8
+ }
9
+
10
+ return `reverted with unknown panic code ${numberToHexString(errorCode)}`;
11
+ }
12
+
13
+ function panicErrorCodeToReason(errorCode: bigint): string | undefined {
14
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- we are only covering some of the integer range
15
+ switch (errorCode) {
16
+ case 0x1n:
17
+ return "Assertion error";
18
+ case 0x11n:
19
+ return "Arithmetic operation overflowed outside of an unchecked block";
20
+ case 0x12n:
21
+ return "Division or modulo division by zero";
22
+ case 0x21n:
23
+ return "Tried to convert a value into an enum, but the value was too big or negative";
24
+ case 0x22n:
25
+ return "Incorrectly encoded storage byte array";
26
+ case 0x31n:
27
+ return ".pop() was called on an empty array";
28
+ case 0x32n:
29
+ return "Array accessed at an out-of-bounds or negative index";
30
+ case 0x41n:
31
+ return "Too much memory was allocated, or an array was created that is too large";
32
+ case 0x51n:
33
+ return "Called a zero-initialized variable of internal function type";
34
+ }
35
+ }
package/src/request.ts CHANGED
@@ -347,6 +347,37 @@ export function isValidUrl(url: string): boolean {
347
347
  }
348
348
  }
349
349
 
350
+ /**
351
+ * Returns the proxy URL from environment variables based on the target URL.
352
+ * For HTTPS URLs, checks `https_proxy` then `HTTPS_PROXY`.
353
+ * For HTTP URLs, checks `http_proxy` then `HTTP_PROXY`.
354
+ * Falls back to the other protocol's proxy if none found.
355
+ *
356
+ * @param url The target URL to determine proxy for.
357
+ * @returns The proxy URL, or `undefined` if none are set.
358
+ */
359
+ export function getProxyUrl(url: string): string | undefined {
360
+ const { protocol } = new URL(url);
361
+
362
+ if (protocol === "https:") {
363
+ return (
364
+ process.env.https_proxy ??
365
+ process.env.HTTPS_PROXY ??
366
+ process.env.http_proxy ??
367
+ process.env.HTTP_PROXY
368
+ );
369
+ } else if (protocol === "http:") {
370
+ return (
371
+ process.env.http_proxy ??
372
+ process.env.HTTP_PROXY ??
373
+ process.env.https_proxy ??
374
+ process.env.HTTPS_PROXY
375
+ );
376
+ }
377
+
378
+ return undefined;
379
+ }
380
+
350
381
  export {
351
382
  ConnectionRefusedError,
352
383
  DispatcherError,
@@ -15,6 +15,7 @@ import debug from "debug";
15
15
 
16
16
  import { ensureNodeErrnoExceptionError } from "./error.js";
17
17
  import { FileSystemAccessError } from "./errors/fs.js";
18
+ import { readUtf8File } from "./fs.js";
18
19
  import { sleep } from "./lang.js";
19
20
 
20
21
  const log = debug("hardhat:util:multi-process-mutex");
@@ -48,6 +49,13 @@ export class MultiProcessMutex {
48
49
  log(
49
50
  `Current mutex file is too old, removing it at path '${this.#mutexFilePath}'`,
50
51
  );
52
+
53
+ this.#deleteMutexFile();
54
+ } else if (await this.#isMutexProcessOwnerDead()) {
55
+ log(
56
+ `The process owning the mutex file no longer exists. Removing mutex file at '${this.#mutexFilePath}'.`,
57
+ );
58
+
51
59
  this.#deleteMutexFile();
52
60
  } else {
53
61
  // wait
@@ -59,7 +67,10 @@ export class MultiProcessMutex {
59
67
  async #tryToAcquireMutex() {
60
68
  try {
61
69
  // Create a file only if it does not exist
62
- fs.writeFileSync(this.#mutexFilePath, "", { flag: "wx+" });
70
+ fs.writeFileSync(this.#mutexFilePath, process.pid.toString(), {
71
+ flag: "wx+",
72
+ });
73
+
63
74
  return true;
64
75
  } catch (e) {
65
76
  ensureNodeErrnoExceptionError(e);
@@ -80,6 +91,8 @@ export class MultiProcessMutex {
80
91
  return await f();
81
92
  } finally {
82
93
  // Release the mutex
94
+ // Note: if a process dies, its `finally` block never executes, and the process hangs indefinitely since no response is received.
95
+ // To handle this, we use the function `isMutexProcessOwnerDead`.
83
96
  log(`Mutex released at path '${this.#mutexFilePath}'`);
84
97
  this.#deleteMutexFile();
85
98
  log(`Mutex released at path '${this.#mutexFilePath}'`);
@@ -123,4 +136,80 @@ export class MultiProcessMutex {
123
136
  throw new FileSystemAccessError(e.message, e);
124
137
  }
125
138
  }
139
+
140
+ async #isMutexProcessOwnerDead(): Promise<boolean> {
141
+ let mutexPid: string;
142
+
143
+ try {
144
+ // If the file doesn't exist, it means the owning process deleted it
145
+ mutexPid = await readUtf8File(this.#mutexFilePath);
146
+ } catch (_e) {
147
+ return false;
148
+ }
149
+
150
+ try {
151
+ process.kill(parseInt(mutexPid, 10), 0);
152
+ } catch (e) {
153
+ ensureNodeErrnoExceptionError(e);
154
+
155
+ if (e.code === "ESRCH") {
156
+ // The process owning the mutex no longer exists
157
+ return true;
158
+ }
159
+ }
160
+
161
+ return false;
162
+ }
163
+ }
164
+
165
+ /**
166
+ * A class that implements an asynchronous mutex (mutual exclusion) lock.
167
+ *
168
+ * The mutex ensures that only one asynchronous operation can be executed at a time,
169
+ * providing exclusive access to a shared resource.
170
+ */
171
+ export class AsyncMutex {
172
+ #acquired = false;
173
+ readonly #queue: Array<() => void> = [];
174
+
175
+ /**
176
+ * Acquires the mutex, running the provided function exclusively,
177
+ * and releasing it afterwards.
178
+ *
179
+ * @param f The function to run.
180
+ * @returns The result of the function.
181
+ */
182
+ public async exclusiveRun<ReturnT>(
183
+ f: () => ReturnT,
184
+ ): Promise<Awaited<ReturnT>> {
185
+ const release = await this.#acquire();
186
+
187
+ try {
188
+ return await f();
189
+ } finally {
190
+ await release();
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Acquires the mutex, returning a function that releases it.
196
+ */
197
+ async #acquire(): Promise<() => Promise<void>> {
198
+ if (!this.#acquired) {
199
+ this.#acquired = true;
200
+ return async () => {
201
+ this.#acquired = false;
202
+ const next = this.#queue.shift();
203
+ if (next !== undefined) {
204
+ next();
205
+ }
206
+ };
207
+ }
208
+
209
+ return new Promise<() => Promise<void>>((resolve) => {
210
+ this.#queue.push(() => {
211
+ resolve(this.#acquire());
212
+ });
213
+ });
214
+ }
126
215
  }