Skip to content

Merge upstream + 2025-update, add PR #280 UV support#4

Open
mj-heaton wants to merge 109 commits into
masterfrom
merge-upstream-and-uv-support
Open

Merge upstream + 2025-update, add PR #280 UV support#4
mj-heaton wants to merge 109 commits into
masterfrom
merge-upstream-and-uv-support

Conversation

@mj-heaton
Copy link
Copy Markdown
Member

Merges upstream cornerstonejs/dicomParser@7d20843, origin/2025-update (source of the currently-published 1.8.14), and incorporates PR cornerstonejs#280 from upstream (VR=UV support). Adds VoxelFlow regression tests and fixes a file-meta tagEndOffset gap. Version bumped to 1.8.15. All 217 tests pass; webpack:prod builds cleanly. See commit messages on ec87bea and f7a5717 for full conflict-resolution detail.

Test plan:

  • npm run test:chrome -> 217/217 pass
  • webpack:prod builds (zero errors)
  • Reviewer: spot-check VF behavior on a known DICOM payload
  • Once merged: tag v1.8.15 and npm publish to @bioxydyn/dicom-parser

yagni and others added 30 commits September 5, 2018 16:47
cornerstonejs#73 (comment) fixed the RangeError I and others seem to have encountered.
[docs] pixelData Uint16Array has 2 bytes/pixel
…nejs#148). Also updated node check to be based off process so it properly detects within web workers. (cornerstonejs#182)
…nary-fixes

Dump with data dictionary updates
Add support for new VRs OD, OL, UC, and UR.
* Guard the use of Buffer since we're no longer polyfilling it.

* fix: Tell bundlers to ignore zlib when building for the browser (cornerstonejs#185)
* v1.8.6

* feat(dicom-parser):Parse non-Part 10 binary DICOM (raw) format

* dropping back to older node to allow webpack build

* Code inspection comments

* Documented the raw dicom reading capability

* Fixing the parser to handle raw dimse and raw  file

* Removed unneeded dimseTransfer syntax setup - was using wrong tsuid
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.4 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](follow-redirects/follow-redirects@v1.14.4...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [karma](https://github.com/karma-runner/karma) from 6.3.4 to 6.3.16.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](karma-runner/karma@v6.3.4...v6.3.16)

---
updated-dependencies:
- dependency-name: karma
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Add syntax highlighting for better readability
…m_and_yarn/follow-redirects-1.14.8

Bump follow-redirects from 1.14.4 to 1.14.8
…m_and_yarn/karma-6.3.16

Bump karma from 6.3.4 to 6.3.16
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/terser-4.8.1

Bump terser from 4.8.0 to 4.8.1
yagni and others added 30 commits December 7, 2022 11:58
…m_and_yarn/qs-6.5.3

chore(deps): bump qs from 6.5.2 to 6.5.3
Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](json5/json5@v1.0.1...v1.0.2)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/json5-1.0.2

chore(deps): bump json5 from 1.0.1 to 1.0.2
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](faisalman/ua-parser-js@0.7.31...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/ua-parser-js-0.7.33

chore(deps): bump ua-parser-js from 0.7.31 to 0.7.33
… Node.js 16, otherwise we trigger a cascade of dependency updates.
…lease

Roll semantic-release down to the most recent version that works with…
Bumps [engine.io](https://github.com/socketio/engine.io) and [socket.io](https://github.com/socketio/socket.io). These dependencies needed to be updated together.

Updates `engine.io` from 6.2.1 to 6.4.2
- [Release notes](https://github.com/socketio/engine.io/releases)
- [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md)
- [Commits](socketio/engine.io@6.2.1...6.4.2)

Updates `socket.io` from 4.5.4 to 4.6.1
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](socketio/socket.io@4.5.4...4.6.1)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-type: indirect
- dependency-name: socket.io
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.3.
- [Release notes](https://github.com/socketio/socket.io-parser/releases)
- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)
- [Commits](socketio/socket.io-parser@4.2.1...4.2.3)

---
updated-dependencies:
- dependency-name: socket.io-parser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/engine.io-and-socket.io-6.4.2

chore(deps): bump engine.io and socket.io
…m_and_yarn/socket.io-parser-4.2.3

chore(deps): bump socket.io-parser from 4.2.1 to 4.2.3
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases)
- [Commits](jonschlinkert/word-wrap@1.2.3...1.2.5)

---
updated-dependencies:
- dependency-name: word-wrap
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/word-wrap-1.2.5

chore(deps-dev): bump word-wrap from 1.2.3 to 1.2.5
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.17.0 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
…m_and_yarn/babel/traverse-7.23.2

chore(deps-dev): bump @babel/traverse from 7.17.0 to 7.23.2
- Parse GE 1.2.840.113619.5.2 transfer syntax
- Fix `broken_ct.dcm` - encapsulated pixel data with undefined length
- Fix US00001 where private tag x8b6ab4cb with VR UN) declared a length which was past the end of hte datasegment. This is now truncated (i.e., reads to the end) and a warning issued. This seems acceptable for our use case but might not be the optimal handling
- Throw Error objects and don't include the full input dataset so as to prevent logging memory issues
…nejs#280 UV support

This brings the fork up to the latest cornerstonejs/dicomParser master while
preserving the fork's tagStartOffset/tagEndOffset additions used by VoxelFlow
for de-identification by tag exsection.

Also incorporates upstream PR cornerstonejs#280 (Support for VR type "UV", Unsigned 64-bit
Very Long, DICOM 2019a) - critical because without UV in the 4-byte-length VR
list, a UV element silently desyncs the parser for the rest of the file.

Changes:
- Merged upstream/master (TypeScript fixes, Buffer-undefined guard, LEE/LEI
  exports, dataSet.Value short-circuit, modernized devDeps, etc.)
- Added VR=UV support: readBigUint64 on both endian parsers, ByteStream.readBigUint64,
  DataSet.uint64, UV in the 4-byte-length list and elementToString, BigInt
  literal syntax avoided so the istanbul-instrumenter-loader's old parser
  doesn't choke
- Fixed: file meta header elements (x0002xxxx) now get tagEndOffset assigned;
  previously they only got tagStartOffset, which would have made VF's
  exsectElement return [start, undefined] for any file meta tag
- Added Element.tagStartOffset/tagEndOffset declarations to index.d.ts
- New test files: test/voxelflowUsage_test.js covers VF's specific access
  patterns (offset invariants, identifier tag round-trips, in-place overwrite);
  test/dataSet_test.js gets a #uint64 block with an end-to-end UV element
  round-trip
- Kept fork identity (@bioxydyn/dicom-parser, fork repo URLs); bumped version

All 217 tests pass; webpack:prod build succeeds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
origin/2025-update was the source of the currently-published
@bioxydyn/dicom-parser@1.8.14 on npm. It branched off master before the
upstream merge in this branch and accumulated substantial Bioxydyn-only
work that never made it back to master. This merge brings that work in
so the next release is a strict superset of 1.8.14, not a regression.

Features picked up from 2025-update (in addition to the upstream merge
and PR cornerstonejs#280 UV support already in this branch):

- parseDicom.js: throws Error objects (with .dataSet/.originalError)
  instead of bare strings; recognises private GE Little Endian Implicit
  with Big Endian Pixel Data transfer syntax (1.2.840.113619.5.2);
  isExplicit/getDataSetByteStream use named constants (LEI/LEE/BEI);
  exports BEI alongside LEI/LEE.
- readDicomElementImplicit.js: takes a transferSyntax argument and
  switches the pixel-data element parser to bigEndianByteArrayParser
  for the GE private syntax above.
- readDicomElementExplicit.js: takes an optional maxPosition; truncates
  oversized element length safely, sets element.truncated, pushes a
  warning. Compatible with calls that don't pass maxPosition.
- readPart10Header.js: falls back to implicit-VR meta header parsing
  when the first element's VR isn't a valid two-uppercase-letter token,
  using getMetaVRLittleEndian to provide VRs for the small standard set
  of File Meta Information tags.
- findEndOfEncapsulatedPixelData.js: bounds checks before reading each
  fragment header; partial-data seek handling at EOF.
- New test fixtures (broken_ct.dcm, undefined_length_un_vr.dcm,
  GE_DLX-8-MONO2-PrivateSyntax.dcm) and loadTestImages.js helper.

Conflict resolutions:
- src/version.js -> 1.8.15 (next after live 1.8.14).
- package.json: kept fork identity, bumped to 1.8.15, kept the @babel/*
  rest-spread plugins from 2025-update, dropped the babel-6-era
  plugins (babel-plugin-transform-object-rest-spread, babel-preset-es2015)
  that 2025-update kept — the project is otherwise fully on babel 7.
- .circleci/config.yml: took 2025-update's active config (production
  source of truth) over master's disabled-with-comments version.
- index.d.ts: kept HEAD's uint64/readBigUint64 type additions and the
  Element.tagStartOffset/tagEndOffset declarations.
- src/index.js / parseDicom.js: collapsed identical LEI/LEE/BEI exports.
- src/readPart10Header.js: rewrote to drop duplicate if(!isPart10)
  block left by the auto-merge; kept 2025-update's implicit-meta-header
  fallback AND HEAD's element.tagEndOffset assignment.
- package-lock.json: took 2025-update's then regenerated via npm install.

All 217 tests pass; webpack:prod build succeeds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants