Skip to content

Updates to Dependencies, Build Chain, and Examples - #374

Open
cmoesel wants to merge 8 commits into
masterfrom
lint-ts-browser-examples-updates
Open

Updates to Dependencies, Build Chain, and Examples#374
cmoesel wants to merge 8 commits into
masterfrom
lint-ts-browser-examples-updates

Conversation

@cmoesel

@cmoesel cmoesel commented Jul 31, 2026

Copy link
Copy Markdown
Member

This PR makes non-trivial updates to some of our dependencies, our build chain, and our examples. These changes include:

  • Switch from ESLint to Oxlint. ESLint has become more complicated and fragile over the years. Currently, it is keeping us from upgrading to TypeScript 7 and it's not clear if/when that will be unblocked (see typescript-eslint#10940). Oxlint is an extremely fast Rust-based linter built by the same team that built Vite. This change allowed us to replace six ESLint-related packages with a single OxLint package. I also removed a couple of TypeScript rules that I didn't think were necessary.
  • Upgrade TypeScript 6 to TypeScript 7. With ESLint gone, we are also able to upgrade to TypeScript 7. TypeScript 7 is 10x faster than TypeScript 6 because it uses a brand new compiler written in Go. This PR also updates TypeScript to version 7.
  • Replace ts-node with tsx. This was required by the switch to TypeScript 7, but since ts-node is no longer maintained, it makes sense to switch anyway.
  • Replace browserify with esbuild. Browserify was cool in 2015, but many web packing tools have surpassed it in performance and robustness. It was last updated in 2024 (and the last update before that was 2020). It has also caused npm audit issues in the past due to transitive dependencies.
  • Convert examples to full mini-projects. We currently include three simple examples for different technologies: browser, node, and typescript. This PR makes it easier for users to build, run, and adapt them by providing them as small independent node projects.
  • Remove checked in cql4browsers.js. Bonnie used to use cql4browsers.js directly, but nobody does that anymore. Now everyone uses their own web packing library (rollup, esbuild, etc) to integrate cql-execution into their web applications. Now the cql4browsers.js file is part of the build process for the browser example and is git-ignored. No more annoying "dang, I forgot to rebuild cql4browsers" moments!
  • Stop support for Node 18. Somewhere along the line, Mocha stopped working with Node 18. The production cql-execution code technically still works with Node 18, but our build tools don't. Since Node 18 was EOLed more than a year ago, it probably makes sense just to drop it since we can't unit test with it anymore.

Some of these changes might be considered breaking (particularly dropping Node 18 and dropping cql4browsers), so we should consider if this warrants a major version change. In practice, I doubt this will break any existing implementations, but if we follow semver strictly, we probably should bump it.

Submitter:

  • This pull request describes why these changes were made
  • Code diff has been done and been reviewed (it does not contain: additional white space, not applicable code changes, debug statements, etc.)
  • Tests are included and test edge cases
  • Tests have been run locally and pass
  • Code coverage has not gone down and all code touched or added is covered.
  • Code passes lint and prettier (hint: use npm run test:plus to run tests, lint, and prettier)
  • All dependent libraries are appropriately updated or have a corresponding PR related to this change
  • [n/a] cql4browsers.js built with npm run build:browserify if source changed.

Reviewer:

Name:

  • Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
  • The tests appropriately test the new code, including edge cases
  • You have tried to break the code

cmoesel added 8 commits July 31, 2026 13:56
- replace eslint with oxlint
- add vscode suggested extensions and settings
- replace npm test:plus w/ npm check
Node 18 was end-of-lifed in March 2025. Production cql-execution still works with it, but some of our dev/test libraries don't.
@codecov-commenter

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 66.66667% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 88.70%. Comparing base (214a25b) to head (b613d43).

Files with missing lines Patch % Lines
src/elm/type.ts 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #374      +/-   ##
==========================================
- Coverage   89.57%   88.70%   -0.87%     
==========================================
  Files          55       59       +4     
  Lines        4855     4933      +78     
  Branches     1391     1429      +38     
==========================================
+ Hits         4349     4376      +27     
  Misses        322      322              
- Partials      184      235      +51     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cmoesel
cmoesel requested a review from dehall July 31, 2026 20:59
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.

2 participants