diff --git a/src/DicomMetaDictionary.js b/src/DicomMetaDictionary.js index 03913c87..9fec3fb1 100644 --- a/src/DicomMetaDictionary.js +++ b/src/DicomMetaDictionary.js @@ -1,7 +1,9 @@ import log from "./log.js"; import { ValueRepresentation } from "./ValueRepresentation"; import dictionary from "./dictionary"; -import addAccessors from "./utilities/addAccessors"; +import utilities from "./utilities/index.js"; + +const { addAccessors, isArrayBuffer, isTypedArray } = utilities; class DicomMetaDictionary { // intakes a custom dictionary that will be used to parse/denaturalize the dataset @@ -149,7 +151,9 @@ class DicomMetaDictionary { if ( sqZero && typeof sqZero === "object" && - !sqZero.length + !sqZero.length && + !isArrayBuffer(sqZero) && + !isTypedArray(sqZero) ) { naturalDataset[naturalName] = [ ...naturalDataset[naturalName] diff --git a/src/utilities/index.js b/src/utilities/index.js index 8730f7ff..faa019a1 100644 --- a/src/utilities/index.js +++ b/src/utilities/index.js @@ -2,12 +2,16 @@ import TID1500 from "./TID1500/index.js"; import TID300 from "./TID300/index.js"; import message from "./Message.js"; import addAccessors from "./addAccessors.js"; +import isArrayBuffer from "./isArrayBuffer.js"; +import isTypedArray from "./isTypedArray.js"; const utilities = { TID1500, TID300, message, - addAccessors + addAccessors, + isArrayBuffer, + isTypedArray }; export default utilities; diff --git a/src/utilities/isArrayBuffer.js b/src/utilities/isArrayBuffer.js new file mode 100644 index 00000000..12e00b08 --- /dev/null +++ b/src/utilities/isArrayBuffer.js @@ -0,0 +1,9 @@ +/** + * Tell whether an obj is an instance of ArrayBuffer or not. + * + * @param {*} obj to be checked. + * @returns boolean whether obj is ArrayBuffer or not. + */ +const isArrayBuffer = obj => obj instanceof ArrayBuffer; + +export default isArrayBuffer; diff --git a/src/utilities/isTypedArray.js b/src/utilities/isTypedArray.js new file mode 100644 index 00000000..d1be765f --- /dev/null +++ b/src/utilities/isTypedArray.js @@ -0,0 +1,12 @@ +import isArrayBuffer from "./isArrayBuffer"; + +/** + * Tell whether an obj is a TypedArray or not. + * + * @param {*} obj to be checked. + * @returns boolean whether obj is TypedArray or not. + */ +const isTypedArray = obj => + obj && !!(isArrayBuffer(obj.buffer) && obj.BYTES_PER_ELEMENT); + +export default isTypedArray;