Skip to content

Added features, build process, fixed bugs, security hardened, performance tests#2

Open
mountaindude wants to merge 126 commits intoMuellerConstantin:mainfrom
ptarmiganlabs:main
Open

Added features, build process, fixed bugs, security hardened, performance tests#2
mountaindude wants to merge 126 commits intoMuellerConstantin:mainfrom
ptarmiganlabs:main

Conversation

@mountaindude
Copy link
Copy Markdown

I ended up hanging out with Copilot for some hours today, working on this.
It's a significant change, but commit messages should be pretty informative/relevant.

Things look good based on the test cases both in the lib and in a couple of other projects where I have used the lib, but it's still too early to call the PR a success. I will keep using my new lib version during coming days and update the lib as/if needed.
Still, I wanted to share this with you to give you a chance to decide if you want to walk down the path of including this in your qvd4js project. If not I might publish my own npm lib as I really need a way of sharing this code across several projects/environments/developers.

  • Added features, for example exposing all XML header metadata and lazy loading of data rows (only load n rows, never bringing the entire QVD into memory unless really needed)
  • Fixed a few bugs (like incorrect parsing of int32s when creating QVD symbols)
  • Various security hardening and checking function parameters
  • Path traversal protection
  • GitHub Actions build process (see below) using GH runner for Linux, self-hosted runners for Windows and macOS (Arm and Amd)
  • Lots of more test cases
  • Test matrix of 4 OSs and 3 Node versions (20, 22, 24) = 12 combinations
  • Tracking performance of the library as part of each build, for all OS/Node variants, available via GitHub Pages (see below)

Here is the GitHub workflow:
image

GitHub Pages page showing which performance tracking subpages there are:
image

A specific perf tracking subpage:
image

mountaindude and others added 30 commits October 21, 2025 16:19
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…adata

Expose all file and field metadata on QVD data frames
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…aller-files

Split qvd.js into smaller, more manageable files
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…sses

Add custom error classes for better error handling
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…ctions

docs: Configure Copilot instructions with Conventional Commits standard
- Add validation to head(n): reject negative, non-integer, NaN, and Infinity values
- Add validation to tail(n): reject negative, non-integer, NaN, and Infinity values
- Add validation to rows(...args): reject non-integer and out-of-bounds indices
- Add validation to at(row, column): reject invalid rows and non-existent columns
- Add validation to select(...args): reject non-existent column names
- Fix tail(0) edge case to return empty array instead of all rows
- Use existing QvdValidationError class for consistent error handling
- Add @throws JSDoc annotations to document error conditions
- Include helpful context in error messages (provided value, valid ranges, available columns)
- Add 39 comprehensive test cases in input-validation.test.js covering all edge cases
- All 82 tests passing with improved coverage

Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…-to-qvddataframe

feat: add comprehensive input validation to QvdDataFrame methods
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
mountaindude and others added 29 commits October 22, 2025 13:27
… for multiple platforms and Node.js versions
…ity and organization

- Renamed "Multi-Platform Test Solution Design" to "Testing Documentation" in README.md
- Revised purpose and audience descriptions for better understanding
- Enhanced key highlights and quick links in README.md
- Updated test architecture and execution flow diagrams in TESTING.md
- Improved test organization section with clearer categorization
- Expanded platform coverage details and Node.js version strategy
- Added security testing strategies and detailed test coverage examples
- Streamlined self-hosted runner setup instructions for all platforms
- Clarified development workflow and FAQ sections
…onverting raw values to symbols, plus associated test
…VD writes

- Add optional onProgress callback to toQvd() for real-time progress tracking
- Optimize symbol table building with single-pass data iteration
- Optimize index table building with Map-based O(1) lookups instead of O(n) findIndex
- Reduce algorithmic complexity from O(n×m×s) to O(n×m)
- Add comprehensive tests for progress callbacks and performance
- Add progress demo example
- Update documentation with progress tracking and performance optimization details

Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
Co-authored-by: mountaindude <1029262+mountaindude@users.noreply.github.com>
…cks-performance-improvements

feat: add progress callbacks and performance improvements for large QVD file writes
@MuellerConstantin
Copy link
Copy Markdown
Owner

Wow, just wow! Thanks a lot for your effort. I'm definitely ready to commit the code to the library, but I'll need some time to review the changes. I'll especially need to check the CI/CD configuration and the GitHub Pages settings when I get home.

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.

3 participants