@hagicode/hagiscript 0.2.9-dev.131.1.433ddb7 → 0.2.9-dev.132.1.13b97a0

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.
@@ -5,6 +5,7 @@ export interface SevenZipExtractor {
5
5
  }
6
6
  export interface SevenZipExtractorOptions {
7
7
  binaryPath?: string;
8
+ systemFallbackBinaryPath?: string | null;
8
9
  runner?: CommandRunner;
9
10
  }
10
11
  export declare class SevenZipExtractionError extends Error {
@@ -1,6 +1,6 @@
1
1
  import { chmod, mkdir, stat } from "node:fs/promises";
2
2
  import { path7za } from "7zip-bin";
3
- import { CommandExecutionError, runCommand } from "./command-launch.js";
3
+ import { CommandExecutionError, normalizeCommandPath, runCommand } from "./command-launch.js";
4
4
  export class SevenZipExtractionError extends Error {
5
5
  constructor(message, options) {
6
6
  super(message, options);
@@ -17,29 +17,74 @@ export function getBundledSevenZipBinaryPath() {
17
17
  export function createBundledSevenZipExtractor(options = {}) {
18
18
  const binaryPath = options.binaryPath?.trim() || getBundledSevenZipBinaryPath();
19
19
  const runner = options.runner ?? runCommand;
20
+ const systemFallbackBinaryPath = normalizeSystemFallbackBinaryPath(options.systemFallbackBinaryPath, binaryPath);
20
21
  return {
21
22
  binaryPath,
22
23
  async extract(archivePath, destination) {
23
24
  await mkdir(destination, { recursive: true });
24
25
  try {
25
- await ensureBundledSevenZipBinaryExecutable(binaryPath);
26
- await runner(binaryPath, ["x", "-bd", "-y", `-o${destination}`, archivePath], {
27
- maxBuffer: 10 * 1024 * 1024
28
- });
26
+ await extractWithBinary(runner, binaryPath, archivePath, destination);
29
27
  }
30
28
  catch (error) {
31
- const details = error instanceof CommandExecutionError
32
- ? error.context.stderr.trim() ||
33
- error.context.stdout.trim() ||
34
- error.message
35
- : error instanceof Error
36
- ? error.message
37
- : String(error);
38
- throw new SevenZipExtractionError(`Failed to extract 7z archive ${archivePath} with bundled provider ${binaryPath}: ${details}`, error instanceof Error ? { cause: error } : undefined);
29
+ if (systemFallbackBinaryPath &&
30
+ shouldRetryWithSystemFallback(binaryPath, error)) {
31
+ try {
32
+ await extractWithBinary(runner, systemFallbackBinaryPath, archivePath, destination);
33
+ return;
34
+ }
35
+ catch (fallbackError) {
36
+ throw new SevenZipExtractionError(`Failed to extract 7z archive ${archivePath} with bundled provider ${binaryPath}: ${formatExtractionFailureDetails(error)}. Fallback ${systemFallbackBinaryPath} also failed: ${formatExtractionFailureDetails(fallbackError)}`, fallbackError instanceof Error
37
+ ? { cause: fallbackError }
38
+ : error instanceof Error
39
+ ? { cause: error }
40
+ : undefined);
41
+ }
42
+ }
43
+ throw new SevenZipExtractionError(`Failed to extract 7z archive ${archivePath} with bundled provider ${binaryPath}: ${formatExtractionFailureDetails(error)}`, error instanceof Error ? { cause: error } : undefined);
39
44
  }
40
45
  }
41
46
  };
42
47
  }
48
+ async function extractWithBinary(runner, binaryPath, archivePath, destination) {
49
+ await ensureBundledSevenZipBinaryExecutable(binaryPath);
50
+ await runner(binaryPath, ["x", "-bd", "-y", `-o${destination}`, archivePath], {
51
+ maxBuffer: 10 * 1024 * 1024
52
+ });
53
+ }
54
+ function shouldRetryWithSystemFallback(binaryPath, error) {
55
+ const normalizedBinaryPath = normalizeCommandPath(binaryPath).toLowerCase();
56
+ if (normalizedBinaryPath === "7z" ||
57
+ normalizedBinaryPath.endsWith("/7z") ||
58
+ normalizedBinaryPath.endsWith("/7z.exe") ||
59
+ normalizedBinaryPath.endsWith("\\7z") ||
60
+ normalizedBinaryPath.endsWith("\\7z.exe")) {
61
+ return false;
62
+ }
63
+ return formatExtractionFailureDetails(error)
64
+ .toLowerCase()
65
+ .includes("unsupported method");
66
+ }
67
+ function normalizeSystemFallbackBinaryPath(value, primaryBinaryPath) {
68
+ const normalized = value === undefined ? "7z" : value?.trim() || "";
69
+ if (!normalized) {
70
+ return null;
71
+ }
72
+ return normalizeCommandPath(normalized) ===
73
+ normalizeCommandPath(primaryBinaryPath)
74
+ ? null
75
+ : normalized;
76
+ }
77
+ function formatExtractionFailureDetails(error) {
78
+ if (error instanceof CommandExecutionError) {
79
+ return (error.context.stderr.trim() ||
80
+ error.context.stdout.trim() ||
81
+ error.message);
82
+ }
83
+ if (error instanceof Error) {
84
+ return error.message;
85
+ }
86
+ return String(error);
87
+ }
43
88
  async function ensureBundledSevenZipBinaryExecutable(binaryPath) {
44
89
  if (process.platform === "win32") {
45
90
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"seven-zip-extract.js","sourceRoot":"","sources":["../../src/runtime/seven-zip-extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,UAAU,EAEX,MAAM,qBAAqB,CAAC;AAY7B,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B;IAC1C,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,uBAAuB,CAC/B,qHAAqH,CACtH,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,UAAoC,EAAE;IAEtC,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,4BAA4B,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAE5C,OAAO;QACL,UAAU;QACV,KAAK,CAAC,OAAO,CAAC,WAAmB,EAAE,WAAmB;YACpD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9C,IAAI,CAAC;gBACH,MAAM,qCAAqC,CAAC,UAAU,CAAC,CAAC;gBACxD,MAAM,MAAM,CACV,UAAU,EACV,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,EAAE,WAAW,CAAC,EACnD;oBACE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;iBAC5B,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GACX,KAAK,YAAY,qBAAqB;oBACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;wBAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;wBAC3B,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,KAAK,YAAY,KAAK;wBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEtB,MAAM,IAAI,uBAAuB,CAC/B,gCAAgC,WAAW,0BAA0B,UAAU,KAAK,OAAO,EAAE,EAC7F,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qCAAqC,CAClD,UAAkB;IAElB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"seven-zip-extract.js","sourceRoot":"","sources":["../../src/runtime/seven-zip-extract.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hagicode/hagiscript",
3
- "version": "0.2.9-dev.131.1.433ddb7",
3
+ "version": "0.2.9-dev.132.1.13b97a0",
4
4
  "description": "Scoped npm package foundation for Hagiscript language tooling.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/HagiCode-org/hagiscript#readme",