Skip to content

Port remaining parser code to TypeScript#7

Open
happy5214 wants to merge 32 commits intomainfrom
port-parsed-substrings
Open

Port remaining parser code to TypeScript#7
happy5214 wants to merge 32 commits intomainfrom
port-parsed-substrings

Conversation

@happy5214
Copy link
Member

This PR ports the remaining parser code to TypeScript, completing phase 1 of the TypeScript port (primary validation code). Upcoming phases include the browser code, tests, and general refactoring.

happy5214 and others added 30 commits December 17, 2025 17:22
Also make duplicate filter a generic function.
Also rewrite recursiveMap to finally deal with typing issue. The
renamed RecursiveArray type has been moved to the util types module
for future use.
Also create utility type for values returned with separate error and
warning Issue arrays.
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.28.5 to 7.29.0.
- [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.29.0/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.29.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [globals](https://github.com/sindresorhus/globals) from 17.0.0 to 17.3.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](sindresorhus/globals@v17.0.0...v17.3.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…/globals-17.3.0

Bump globals from 17.0.0 to 17.3.0
…/babel/core-7.29.0

Bump @babel/core from 7.28.5 to 7.29.0
This effectively finishes part 1 of the TypeScript port (the primary
validator code base). Next will be the tests and browser code, as well as
general refactoring.
@happy5214 happy5214 self-assigned this Mar 18, 2026
@qltysh
Copy link

qltysh bot commented Mar 18, 2026

Qlty

Coverage Impact

⬇️ Merging this pull request will decrease total coverage on main by 0.17%.

Modified Files with Diff Coverage (43)

RatingFile% DiffUncovered Line #s
Coverage rating: A Coverage rating: A
src/utils/xml.ts100.0%
Coverage rating: A Coverage rating: A
src/utils/hedStrings.ts100.0%
Coverage rating: A Coverage rating: A
src/issues/issues.ts73.6%74-87
Coverage rating: A Coverage rating: A
src/schema/specs.ts96.3%187
Coverage rating: A Coverage rating: A
src/utils/paths.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/types/json.ts100.0%
Coverage rating: B Coverage rating: B
src/bids/types/file.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/schema.ts100.0%
Coverage rating: A Coverage rating: A
src/schema/config.ts83.3%37
Coverage rating: B Coverage rating: C
src/utils/files.ts37.5%22-26
Coverage rating: A Coverage rating: A
src/utils/string.ts91.7%44-45
Coverage rating: A Coverage rating: A
src/schema/parser.ts100.0%
Coverage rating: A Coverage rating: A
src/schema/containers.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/tsvParser.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/types/issues.ts97.5%210
Coverage rating: A Coverage rating: A
src/schema/entries.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/types/tsv.ts100.0%
Coverage rating: A Coverage rating: A
src/schema/init.ts100.0%
Coverage rating: A Coverage rating: A
src/issues/data.ts100.0%
Coverage rating: A Coverage rating: A
src/utils/array.ts100.0%
Coverage rating: A Coverage rating: B
src/schema/loader.ts52.4%86-90, 112-116
Coverage rating: A Coverage rating: A
src/bids/index.ts100.0%
Coverage rating: A Coverage rating: A
src/schema/schemaMerger.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/validator/validator.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/validator/tsvValidator.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/datasetParser.ts100.0%
Coverage rating: A Coverage rating: A
src/bids/validator/sidecarValidator.ts100.0%
Coverage rating: B Coverage rating: B
src/bids/types/dataset.ts78.3%154, 205, 235-244
New file Coverage rating: A
src/utils/types.ts97.6%55-56
New file Coverage rating: A
src/parser/parsedHedGroup.ts98.8%172
New file Coverage rating: A
src/parser/reservedChecker.ts99.1%44
New file Coverage rating: A
src/parser/tagConverter.ts100.0%
New file Coverage rating: A
src/parser/parseUtils.ts92.7%39-49
New file Coverage rating: A
src/parser/parsedHedColumnSplice.ts100.0%
New file Coverage rating: A
src/parser/definitionManager.ts100.0%
New file Coverage rating: A
src/parser/parsedHedSubstring.ts96.7%58-59
New file Coverage rating: A
src/parser/definitionChecker.ts100.0%
New file Coverage rating: A
src/parser/parser.ts98.9%209
New file Coverage rating: A
src/parser/tokenizer.ts100.0%
New file Coverage rating: A
src/parser/parsedHedTag.ts100.0%
New file Coverage rating: A
src/parser/parsedHedString.ts100.0%
New file Coverage rating: A
src/parser/eventManager.ts100.0%
New file Coverage rating: A
src/parser/splitter.ts95.2%71-74, 134-137
Total96.1%
🤖 Increase coverage with AI coding...

In the `port-parsed-substrings` branch, add test coverage for this new code:

- `src/bids/types/dataset.ts` -- Lines 154, 205, and 235-244
- `src/bids/types/issues.ts` -- Line 210
- `src/issues/issues.ts` -- Line 74-87
- `src/parser/parseUtils.ts` -- Line 39-49
- `src/parser/parsedHedGroup.ts` -- Line 172
- `src/parser/parsedHedSubstring.ts` -- Line 58-59
- `src/parser/parser.ts` -- Line 209
- `src/parser/reservedChecker.ts` -- Line 44
- `src/parser/splitter.ts` -- Lines 71-74 and 134-137
- `src/schema/config.ts` -- Line 37
- `src/schema/loader.ts` -- Lines 86-90 and 112-116
- `src/schema/specs.ts` -- Line 187
- `src/utils/files.ts` -- Line 22-26
- `src/utils/string.ts` -- Line 44-45
- `src/utils/types.ts` -- Line 55-56

🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

@qltysh
Copy link

qltysh bot commented Mar 18, 2026

❌ 10 blocking issues (10 total)

Tool Category Rule Count
eslint Lint Unsafe call of a type that could not be resolved. 6
eslint Lint Unsafe assignment of an error typed value. 2
eslint Lint Unsafe member access .length on a type that cannot be resolved. 2

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.

1 participant