@cosyte/dicom 0.1.2 → 0.1.4

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/index.mjs CHANGED
@@ -9,7 +9,7 @@ var __export = (target, all) => {
9
9
  };
10
10
 
11
11
  // src/version.ts
12
- var VERSION = "0.1.2";
12
+ var VERSION = "0.1.4";
13
13
 
14
14
  // src/dictionary/index.ts
15
15
  var dictionary_exports = {};
@@ -13221,7 +13221,18 @@ var MULTIBYTE_LABELS = /* @__PURE__ */ new Set([
13221
13221
  ]);
13222
13222
  function parseSpecificCharacterSet(bytes) {
13223
13223
  const raw = bytes.toString("latin1");
13224
- return raw.split("\\").map((t) => t.replace(/[ ]+$/u, "").replace(/^[ ]+/u, "")).map((t) => t === "" || TERM_TO_LABEL.has(t) ? t : WITHHELD);
13224
+ return raw.split("\\").map(trimTermPad).map((t) => t === "" || TERM_TO_LABEL.has(t) ? t : WITHHELD);
13225
+ }
13226
+ function trimTermPad(term) {
13227
+ let end = term.length;
13228
+ while (end > 0) {
13229
+ const code = term.charCodeAt(end - 1);
13230
+ if (code !== 0 && code !== 32) break;
13231
+ end--;
13232
+ }
13233
+ let start = 0;
13234
+ while (start < end && term.charCodeAt(start) === 32) start++;
13235
+ return term.slice(start, end);
13225
13236
  }
13226
13237
  function isKnownCharsetTerm(term) {
13227
13238
  return TERM_TO_LABEL.has(term);
@@ -13788,6 +13799,14 @@ function stripPad(bytes, tag, vr, position, warnings) {
13788
13799
  }
13789
13800
  return bytes.subarray(0, end);
13790
13801
  }
13802
+ function trimSpaces(value) {
13803
+ let start = 0;
13804
+ let end = value.length;
13805
+ while (start < end && value.charCodeAt(start) === SPACE2) start++;
13806
+ while (end > start && value.charCodeAt(end - 1) === SPACE2) end--;
13807
+ return value.slice(start, end);
13808
+ }
13809
+ var DECIMAL_STRING = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/u;
13791
13810
  function attachWarnings(value, warnings) {
13792
13811
  return warnings.length > 0 ? { ...value, warnings } : value;
13793
13812
  }
@@ -13839,7 +13858,7 @@ function decodeElementValue(element) {
13839
13858
  }
13840
13859
  if (vr === "LO" || vr === "SH" || vr === "UC") {
13841
13860
  const text = decodeCharsetString(trimmed, tag, vr, charset, position, warnings);
13842
- const values = text.split("\\").map((v) => v.replace(/^ +| +$/gu, ""));
13861
+ const values = text.split("\\").map(trimSpaces);
13843
13862
  return attachWarnings({ kind: "strings", values }, warnings);
13844
13863
  }
13845
13864
  if (vr === "LT" || vr === "ST" || vr === "UT") {
@@ -13852,7 +13871,7 @@ function decodeElementValue(element) {
13852
13871
  }
13853
13872
  if (vr === "AE" || vr === "CS" || vr === "AS" || vr === "UI") {
13854
13873
  const text = decodeAsciiString(trimmed, tag, vr, position, warnings);
13855
- const values = text.split("\\").map((v) => v.replace(/^ +| +$/gu, ""));
13874
+ const values = text.split("\\").map(trimSpaces);
13856
13875
  return attachWarnings({ kind: "strings", values }, warnings);
13857
13876
  }
13858
13877
  if (vr === "DS") {
@@ -13860,7 +13879,7 @@ function decodeElementValue(element) {
13860
13879
  const values = text.split("\\").map((v) => {
13861
13880
  const t = v.trim();
13862
13881
  if (t.length === 0) return null;
13863
- if (!/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/u.test(t)) return null;
13882
+ if (!DECIMAL_STRING.test(t)) return null;
13864
13883
  const n = Number(t);
13865
13884
  return Number.isFinite(n) ? n : null;
13866
13885
  });
@@ -16693,7 +16712,7 @@ function effectiveCode(action, active) {
16693
16712
  return action.basicProfile;
16694
16713
  }
16695
16714
  function resolveAction(code) {
16696
- const first = code.split("/", 1)[0]?.replace("*", "") ?? "K";
16715
+ const first = code.split("/", 1)[0]?.replaceAll("*", "") ?? "K";
16697
16716
  return first;
16698
16717
  }
16699
16718
  var TEXT_DUMMIES = {