@ubercode/dcmtk 0.13.2 → 0.15.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.
package/dist/tools.cjs CHANGED
@@ -14,7 +14,54 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
14
 
15
15
  var kill__default = /*#__PURE__*/_interopDefault(kill);
16
16
 
17
- // src/tools/dcm2xml.ts
17
+ var __defProp = Object.defineProperty;
18
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
19
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
20
+
21
+ // src/tools/_toolError.ts
22
+ var MAX_ARGS_LENGTH = 200;
23
+ var MAX_STDERR_LENGTH = 500;
24
+ function truncate(value, maxLength) {
25
+ if (value.length <= maxLength) {
26
+ return value;
27
+ }
28
+ return `${value.substring(0, maxLength)}...`;
29
+ }
30
+ var ToolExecutionError = class extends Error {
31
+ constructor(message, details) {
32
+ super(message);
33
+ __publicField(this, "stdout");
34
+ __publicField(this, "stderr");
35
+ __publicField(this, "exitCode");
36
+ this.name = "ToolExecutionError";
37
+ this.stdout = details.stdout;
38
+ this.stderr = details.stderr;
39
+ this.exitCode = details.exitCode;
40
+ }
41
+ };
42
+ function createToolError(toolName, args, exitCode, stderr3, stdout = "") {
43
+ const argsStr = truncate(args.join(" "), MAX_ARGS_LENGTH);
44
+ const stderrStr = truncate(stderr3.trim(), MAX_STDERR_LENGTH);
45
+ const parts = [`${toolName} failed (exit code ${String(exitCode)})`];
46
+ if (argsStr.length > 0) {
47
+ parts.push(`args: ${argsStr}`);
48
+ }
49
+ if (stderrStr.length > 0) {
50
+ parts.push(`stderr: ${stderrStr}`);
51
+ }
52
+ return new ToolExecutionError(parts.join(" | "), { stdout, stderr: stderr3, exitCode });
53
+ }
54
+ function createValidationError(toolName, zodError) {
55
+ const parts = [];
56
+ for (let i = 0; i < zodError.issues.length; i++) {
57
+ const issue = zodError.issues[i];
58
+ if (issue === void 0) continue;
59
+ const path = issue.path.length > 0 ? issue.path.map(String).join(".") : "(root)";
60
+ parts.push(`${path}: ${issue.message}`);
61
+ }
62
+ const detail = parts.length > 0 ? parts.join("; ") : "unknown validation error";
63
+ return new Error(`${toolName}: invalid options \u2014 ${detail}`);
64
+ }
18
65
 
19
66
  // src/types.ts
20
67
  function ok(value) {
@@ -210,39 +257,6 @@ function resolveBinary(toolName) {
210
257
  return ok(path.join(pathResult.value, binaryName2));
211
258
  }
212
259
 
213
- // src/tools/_toolError.ts
214
- var MAX_ARGS_LENGTH = 200;
215
- var MAX_STDERR_LENGTH = 500;
216
- function truncate(value, maxLength) {
217
- if (value.length <= maxLength) {
218
- return value;
219
- }
220
- return `${value.substring(0, maxLength)}...`;
221
- }
222
- function createToolError(toolName, args, exitCode, stderr3) {
223
- const argsStr = truncate(args.join(" "), MAX_ARGS_LENGTH);
224
- const stderrStr = truncate(stderr3.trim(), MAX_STDERR_LENGTH);
225
- const parts = [`${toolName} failed (exit code ${String(exitCode)})`];
226
- if (argsStr.length > 0) {
227
- parts.push(`args: ${argsStr}`);
228
- }
229
- if (stderrStr.length > 0) {
230
- parts.push(`stderr: ${stderrStr}`);
231
- }
232
- return new Error(parts.join(" | "));
233
- }
234
- function createValidationError(toolName, zodError) {
235
- const parts = [];
236
- for (let i = 0; i < zodError.issues.length; i++) {
237
- const issue = zodError.issues[i];
238
- if (issue === void 0) continue;
239
- const path = issue.path.length > 0 ? issue.path.map(String).join(".") : "(root)";
240
- parts.push(`${path}: ${issue.message}`);
241
- }
242
- const detail = parts.length > 0 ? parts.join("; ") : "unknown validation error";
243
- return new Error(`${toolName}: invalid options \u2014 ${detail}`);
244
- }
245
-
246
260
  // src/tools/dcm2xml.ts
247
261
  var Dcm2xmlCharset = {
248
262
  /** Use UTF-8 encoding (default). */
@@ -626,15 +640,17 @@ async function dcm2json(inputPath, options) {
626
640
  }
627
641
  const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
628
642
  const signal = options?.signal;
643
+ const startTime = Date.now();
644
+ const remaining = () => Math.max(1e3, timeoutMs - (Date.now() - startTime));
629
645
  const verbosity = options?.verbosity;
630
646
  if (options?.directOnly === true) {
631
- return tryDirectPath(inputPath, timeoutMs, signal, verbosity);
647
+ return tryDirectPath(inputPath, remaining(), signal, verbosity);
632
648
  }
633
- const xmlResult = await tryXmlPath(inputPath, timeoutMs, signal, buildXmlOpts(options));
649
+ const xmlResult = await tryXmlPath(inputPath, remaining(), signal, buildXmlOpts(options));
634
650
  if (xmlResult.ok) {
635
651
  return xmlResult;
636
652
  }
637
- return tryDirectPath(inputPath, timeoutMs, signal, verbosity);
653
+ return tryDirectPath(inputPath, remaining(), signal, verbosity);
638
654
  }
639
655
  var DcmdumpFormat = {
640
656
  /** Print standard DCMTK format. */
@@ -2362,7 +2378,7 @@ async function dcmsend(options) {
2362
2378
  return err(result.error);
2363
2379
  }
2364
2380
  if (result.value.exitCode !== 0) {
2365
- return err(createToolError("dcmsend", args, result.value.exitCode, result.value.stderr));
2381
+ return err(createToolError("dcmsend", args, result.value.exitCode, result.value.stderr, result.value.stdout));
2366
2382
  }
2367
2383
  return ok({ success: true, stdout: result.value.stdout, stderr: result.value.stderr });
2368
2384
  }
@@ -2517,10 +2533,10 @@ async function storescu(options) {
2517
2533
  return err(result.error);
2518
2534
  }
2519
2535
  if (result.value.exitCode !== 0) {
2520
- return err(createToolError("storescu", args, result.value.exitCode, result.value.stderr));
2536
+ return err(createToolError("storescu", args, result.value.exitCode, result.value.stderr, result.value.stdout));
2521
2537
  }
2522
2538
  if (DIMSE_ERROR_PATTERN.test(result.value.stderr)) {
2523
- return err(createToolError("storescu", args, 0, result.value.stderr));
2539
+ return err(createToolError("storescu", args, 0, result.value.stderr, result.value.stdout));
2524
2540
  }
2525
2541
  return ok({ success: true, stdout: result.value.stdout, stderr: result.value.stderr });
2526
2542
  }
@@ -3424,6 +3440,7 @@ exports.LutType = LutType;
3424
3440
  exports.MoveQueryModel = MoveQueryModel;
3425
3441
  exports.ProposedTransferSyntax = ProposedTransferSyntax;
3426
3442
  exports.QueryModel = QueryModel;
3443
+ exports.ToolExecutionError = ToolExecutionError;
3427
3444
  exports.TransferSyntax = TransferSyntax;
3428
3445
  exports.cda2dcm = cda2dcm;
3429
3446
  exports.dcm2cda = dcm2cda;