@ubercode/dcmtk 0.12.0 → 0.13.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/{DicomInstance-CxLKC-oM.d.cts → DicomInstance-BGXtON9T.d.cts} +2 -0
- package/dist/{DicomInstance-BKUiir0G.d.ts → DicomInstance-DGWB2mfD.d.ts} +2 -0
- package/dist/dicom.cjs +30 -16
- package/dist/dicom.cjs.map +1 -1
- package/dist/dicom.d.cts +2 -2
- package/dist/dicom.d.ts +2 -2
- package/dist/dicom.js +30 -16
- package/dist/dicom.js.map +1 -1
- package/dist/{index-DV8HaHEX.d.cts → index-B1eynCVv.d.cts} +4 -1
- package/dist/{index-B5FQoIqM.d.ts → index-DM0yFtPO.d.ts} +4 -1
- package/dist/index.cjs +39 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +39 -17
- package/dist/index.js.map +1 -1
- package/dist/servers.cjs +39 -17
- package/dist/servers.cjs.map +1 -1
- package/dist/servers.d.cts +2 -2
- package/dist/servers.d.ts +2 -2
- package/dist/servers.js +39 -17
- package/dist/servers.js.map +1 -1
- package/dist/tools.cjs +28 -15
- package/dist/tools.cjs.map +1 -1
- package/dist/tools.d.cts +2 -0
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +28 -15
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/dist/servers.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-
|
|
1
|
+
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-B1eynCVv.cjs';
|
|
2
2
|
import './types-Cgumy1N4.cjs';
|
|
3
3
|
import 'node:events';
|
|
4
4
|
import 'node:net';
|
|
5
|
-
import './DicomInstance-
|
|
5
|
+
import './DicomInstance-BGXtON9T.cjs';
|
|
6
6
|
import './dcmodify-Cf-RPHF3.cjs';
|
package/dist/servers.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-
|
|
1
|
+
export { A as AssociationAcknowledgedData, a as AssociationCompleteData, b as AssociationContext, c as AssociationReceivedData, d as AssociationSummary, e as AssociationTracker, C as CStoreRequestData, f as CannotStartListenerData, g as ConfigErrorData, D as DCMPRSCP_FATAL_EVENTS, h as DCMPRSCP_PATTERNS, i as DCMPSRCV_FATAL_EVENTS, j as DCMPSRCV_PATTERNS, k as DCMQRSCP_FATAL_EVENTS, l as DCMQRSCP_PATTERNS, m as DCMRECV_FATAL_EVENTS, n as DCMRECV_PATTERNS, o as DatabaseReadyData, p as DcmQRSCP, q as DcmQRSCPEventMap, r as DcmQRSCPOptions, s as DcmprsCP, t as DcmprsCPEventMap, u as DcmprsCPOptions, v as DcmprscpEvent, w as DcmprscpEventValue, x as Dcmpsrcv, y as DcmpsrcvEvent, z as DcmpsrcvEventMap, B as DcmpsrcvEventValue, E as DcmpsrcvOptions, F as DcmqrscpEvent, G as DcmqrscpEventValue, H as Dcmrecv, I as DcmrecvEvent, J as DcmrecvEventMap, K as DcmrecvEventValue, L as DcmrecvOptions, M as DcmtkProcess, N as DcmtkProcessConfig, O as DcmtkProcessEventMap, P as DicomReceiver, Q as DicomReceiverEventMap, R as DicomReceiverOptions, S as EventPattern, T as FileDeletedData, U as FileReceivedData, V as FilenameMode, W as FilenameModeValue, X as LineParser, Y as LineParserEventMap, Z as MultiLineConfig, a2 as PoolStatus, a3 as PreferredTransferSyntax, a4 as PreferredTransferSyntaxValue, a5 as PrintAssociationAcknowledgedData, a6 as PrintAssociationReceivedData, a7 as PrintCannotStartListenerData, a8 as ProcessState, a9 as ProcessStateValue, aa as QRAssociationAcknowledgedData, ab as QRAssociationReceivedData, ac as QRCFindRequestData, ad as QRCGetRequestData, ae as QRCMoveRequestData, af as QRCStoreRequestData, ag as QRCannotStartListenerData, ah as QRListeningData, ai as ReceiverAssociationAcknowledgedData, aj as ReceiverAssociationData, ak as ReceiverAssociationFinalizedData, al as ReceiverAssociationReceivedData, am as ReceiverCStoreRequestData, an as ReceiverCannotStartListenerData, ao as ReceiverConfigErrorData, ap as ReceiverDatabaseReadyData, aq as ReceiverEchoRequestData, ar as ReceiverErrorData, as as ReceiverFileData, at as ReceiverFileReceivedData, au as ReceiverFileStoredData, av as ReceiverInstanceData, aw as ReceiverInstanceErrorData, ax as ReceiverListeningData, ay as RefusingAssociationData, az as STORESCP_FATAL_EVENTS, aA as STORESCP_PATTERNS, aB as StorageMode, aC as StorageModeValue, aD as StoreSCP, aE as StoreSCPEventMap, aF as StoreSCPOptions, aG as StoreSCPPreset, aH as StoreSCPPresetName, aI as StoredFileData, aJ as StorescpEvent, aK as StorescpEventValue, aL as StoringFileData, aM as SubdirectoryCreatedData, aN as SubdirectoryMode, aO as SubdirectoryModeValue, aP as TrackedFile, aQ as WLMSCPFS_FATAL_EVENTS, aR as WLMSCPFS_PATTERNS, aS as WlmAssociationAcknowledgedData, aT as WlmAssociationReceivedData, aU as WlmCFindRequestData, aV as WlmCannotStartListenerData, aW as WlmListeningData, aX as Wlmscpfs, aY as WlmscpfsEvent, aZ as WlmscpfsEventMap, a_ as WlmscpfsEventValue, a$ as WlmscpfsOptions } from './index-DM0yFtPO.js';
|
|
2
2
|
import './types-Cgumy1N4.js';
|
|
3
3
|
import 'node:events';
|
|
4
4
|
import 'node:net';
|
|
5
|
-
import './DicomInstance-
|
|
5
|
+
import './DicomInstance-DGWB2mfD.js';
|
|
6
6
|
import './dcmodify-CHvwChFu.js';
|
package/dist/servers.js
CHANGED
|
@@ -2221,7 +2221,12 @@ var parser = new XMLParser({
|
|
|
2221
2221
|
ignoreAttributes: false,
|
|
2222
2222
|
attributeNamePrefix: "@_",
|
|
2223
2223
|
parseTagValue: false,
|
|
2224
|
-
isArray: (name) => ARRAY_TAG_NAMES.has(name)
|
|
2224
|
+
isArray: (name) => ARRAY_TAG_NAMES.has(name),
|
|
2225
|
+
// DICOM XML does not use XML entities. Disable entity processing to avoid
|
|
2226
|
+
// the default expansion limit (1000) which rejects files with >1000 tags.
|
|
2227
|
+
// Without this, large studies fall through to dcm2json which hangs on
|
|
2228
|
+
// compressed pixel data (DCMTK bug).
|
|
2229
|
+
processEntities: false
|
|
2225
2230
|
});
|
|
2226
2231
|
function xmlToJson(xml) {
|
|
2227
2232
|
try {
|
|
@@ -2282,6 +2287,7 @@ var Dcm2jsonOptionsSchema = z.object({
|
|
|
2282
2287
|
signal: z.instanceof(AbortSignal).optional(),
|
|
2283
2288
|
directOnly: z.boolean().optional(),
|
|
2284
2289
|
charsetAssume: z.string().min(1).optional(),
|
|
2290
|
+
charsetFallback: z.string().min(1).optional(),
|
|
2285
2291
|
verbosity: z.enum(["verbose", "debug"]).optional()
|
|
2286
2292
|
}).strict().optional();
|
|
2287
2293
|
var VERBOSITY_FLAGS = { verbose: "-v", debug: "-d" };
|
|
@@ -2295,27 +2301,34 @@ function buildXmlOpts(options) {
|
|
|
2295
2301
|
const result = {};
|
|
2296
2302
|
if (options?.verbosity !== void 0) result["verbosity"] = options.verbosity;
|
|
2297
2303
|
if (options?.charsetAssume !== void 0) result["charsetAssume"] = options.charsetAssume;
|
|
2304
|
+
if (options?.charsetFallback !== void 0) result["charsetFallback"] = options.charsetFallback;
|
|
2298
2305
|
return result;
|
|
2299
2306
|
}
|
|
2307
|
+
function isCharsetError(stderrOutput) {
|
|
2308
|
+
return stderrOutput.includes("convert character encoding") || stderrOutput.includes("Illegal byte sequence");
|
|
2309
|
+
}
|
|
2310
|
+
async function runXmlAndParse(binary, args, execOpts) {
|
|
2311
|
+
const xmlResult = await execCommand(binary, args, execOpts);
|
|
2312
|
+
if (!xmlResult.ok) return err(xmlResult.error);
|
|
2313
|
+
if (xmlResult.value.exitCode !== 0) {
|
|
2314
|
+
return err(createToolError("dcm2xml", args, xmlResult.value.exitCode, xmlResult.value.stderr));
|
|
2315
|
+
}
|
|
2316
|
+
const jsonResult = xmlToJson(xmlResult.value.stdout);
|
|
2317
|
+
if (!jsonResult.ok) return err(jsonResult.error);
|
|
2318
|
+
return ok({ data: jsonResult.value, source: "xml" });
|
|
2319
|
+
}
|
|
2300
2320
|
async function tryXmlPath(inputPath, timeoutMs, signal, opts) {
|
|
2301
2321
|
const xmlBinary = resolveBinary("dcm2xml");
|
|
2302
|
-
if (!xmlBinary.ok)
|
|
2303
|
-
return err(xmlBinary.error);
|
|
2304
|
-
}
|
|
2322
|
+
if (!xmlBinary.ok) return err(xmlBinary.error);
|
|
2305
2323
|
const charsetArgs = opts?.charsetAssume !== void 0 ? ["+Ca", opts.charsetAssume] : [];
|
|
2306
2324
|
const xmlArgs = [...buildVerbosityArgs(opts?.verbosity), ...charsetArgs, "-nat", inputPath];
|
|
2307
|
-
const
|
|
2308
|
-
|
|
2309
|
-
|
|
2325
|
+
const execOpts = signal !== void 0 ? { timeoutMs, signal } : { timeoutMs };
|
|
2326
|
+
const result = await runXmlAndParse(xmlBinary.value, xmlArgs, execOpts);
|
|
2327
|
+
if (!result.ok && opts?.charsetFallback !== void 0 && isCharsetError(result.error.message)) {
|
|
2328
|
+
const fallbackArgs = [...buildVerbosityArgs(opts.verbosity), "+Ca", opts.charsetFallback, "-nat", inputPath];
|
|
2329
|
+
return runXmlAndParse(xmlBinary.value, fallbackArgs, execOpts);
|
|
2310
2330
|
}
|
|
2311
|
-
|
|
2312
|
-
return err(createToolError("dcm2xml", xmlArgs, xmlResult.value.exitCode, xmlResult.value.stderr));
|
|
2313
|
-
}
|
|
2314
|
-
const jsonResult = xmlToJson(xmlResult.value.stdout);
|
|
2315
|
-
if (!jsonResult.ok) {
|
|
2316
|
-
return err(jsonResult.error);
|
|
2317
|
-
}
|
|
2318
|
-
return ok({ data: jsonResult.value, source: "xml" });
|
|
2331
|
+
return result;
|
|
2319
2332
|
}
|
|
2320
2333
|
async function tryDirectPath(inputPath, timeoutMs, signal, verbosity) {
|
|
2321
2334
|
const jsonBinary = resolveBinary("dcm2json");
|
|
@@ -2500,7 +2513,8 @@ var DicomInstance = class _DicomInstance {
|
|
|
2500
2513
|
const jsonResult = await dcm2json(path2, {
|
|
2501
2514
|
timeoutMs: options?.timeoutMs ?? DEFAULT_TIMEOUT_MS,
|
|
2502
2515
|
signal: options?.signal,
|
|
2503
|
-
charsetAssume: options?.charsetAssume
|
|
2516
|
+
charsetAssume: options?.charsetAssume,
|
|
2517
|
+
charsetFallback: options?.charsetFallback
|
|
2504
2518
|
});
|
|
2505
2519
|
if (!jsonResult.ok) return err(jsonResult.error);
|
|
2506
2520
|
const datasetResult = DicomDataset.fromJson(jsonResult.value.data);
|
|
@@ -2818,6 +2832,12 @@ var DicomReceiverOptionsSchema = z.object({
|
|
|
2818
2832
|
filenameMode: z.enum(["default", "unique", "short-unique", "system-time"]).optional(),
|
|
2819
2833
|
filenameExtension: z.string().min(1).optional(),
|
|
2820
2834
|
storageMode: z.enum(["normal", "bit-preserving", "ignore"]).optional(),
|
|
2835
|
+
instanceOpenOptions: z.object({
|
|
2836
|
+
timeoutMs: z.number().int().positive().optional(),
|
|
2837
|
+
signal: z.instanceof(AbortSignal).optional(),
|
|
2838
|
+
charsetAssume: z.string().min(1).optional(),
|
|
2839
|
+
charsetFallback: z.string().min(1).optional()
|
|
2840
|
+
}).strict().optional(),
|
|
2821
2841
|
signal: z.instanceof(AbortSignal).optional()
|
|
2822
2842
|
}).strict().refine((data) => (data.minPoolSize ?? DEFAULT_MIN_POOL_SIZE) <= (data.maxPoolSize ?? DEFAULT_MAX_POOL_SIZE), {
|
|
2823
2843
|
message: "minPoolSize must be <= maxPoolSize"
|
|
@@ -2987,6 +3007,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
2987
3007
|
__publicField(this, "minPoolSize");
|
|
2988
3008
|
__publicField(this, "maxPoolSize");
|
|
2989
3009
|
__publicField(this, "connectionTimeoutMs");
|
|
3010
|
+
__publicField(this, "resolvedInstanceOpenOptions");
|
|
2990
3011
|
__publicField(this, "workers", /* @__PURE__ */ new Map());
|
|
2991
3012
|
__publicField(this, "tcpServer");
|
|
2992
3013
|
__publicField(this, "associationCounter", 0);
|
|
@@ -2998,6 +3019,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
2998
3019
|
this.minPoolSize = options.minPoolSize ?? DEFAULT_MIN_POOL_SIZE;
|
|
2999
3020
|
this.maxPoolSize = options.maxPoolSize ?? DEFAULT_MAX_POOL_SIZE;
|
|
3000
3021
|
this.connectionTimeoutMs = options.connectionTimeoutMs ?? DEFAULT_CONNECTION_TIMEOUT_MS;
|
|
3022
|
+
this.resolvedInstanceOpenOptions = { charsetFallback: "Latin1", ...options.instanceOpenOptions };
|
|
3001
3023
|
}
|
|
3002
3024
|
// -----------------------------------------------------------------------
|
|
3003
3025
|
// Public API
|
|
@@ -3464,7 +3486,7 @@ var DicomReceiver = class _DicomReceiver extends EventEmitter {
|
|
|
3464
3486
|
/** Parses a DICOM file and emits INSTANCE_RECEIVED or INSTANCE_ERROR. */
|
|
3465
3487
|
async parseAndEmitInstance(worker, ctx) {
|
|
3466
3488
|
try {
|
|
3467
|
-
const openResult = await DicomInstance.open(ctx.filePath);
|
|
3489
|
+
const openResult = await DicomInstance.open(ctx.filePath, this.resolvedInstanceOpenOptions);
|
|
3468
3490
|
if (!openResult.ok) {
|
|
3469
3491
|
worker.recordInstanceError();
|
|
3470
3492
|
this.emit("INSTANCE_ERROR", { error: openResult.error, thrown: false, ...ctx });
|