Skip to content

Releases: CLDMV/jsonv-eslint-plugin-jsonv

v1.0.15

Choose a tag to compare

@cldmv-bot cldmv-bot released this 03 Oct 04:39
v1.0.15
f883d44

release: v1.0.15 - update expectations for @cldmv/jsonv 1.1.1 behavior…

🚀 What's Changed

💥 Breaking Changes

No breaking changes

✨ Features

No new features

🐛 Bug Fixes

No bug fixes

📦 Dependencies

  • #51
    • deps: bump the minor group across 1 directory with 2 updates (e3a7e2a)

🔧 Other Changes

  • #52
    • ci: run the in-repo PR mirror job instead of skipping it (ce6fe35)

coverage

Metric Coverage
Statements 100.0%
Branches 100.0%
Functions 100.0%
Lines 100.0%

Avg: 100.0% · 813a790 · Node lts/*

👥 Contributors

v1.0.14

Choose a tag to compare

@cldmv-bot cldmv-bot released this 02 Oct 21:49
v1.0.14
8ec2524

release: v1.0.14 - adopt the shared CLDMV fix-headers config and stamp…

🚀 What's Changed

💥 Breaking Changes

No breaking changes

✨ Features

No new features

🐛 Bug Fixes

No bug fixes

📦 Dependencies

No dependency updates

🔧 Other Changes

  • #48
    • ci: stop the skipped PR-run mirror from satisfying Required PR Check (72f0ca7)

coverage

Metric Coverage
Statements 100.0%
Branches 100.0%
Functions 100.0%
Lines 100.0%

Avg: 100.0% · ef49187 · Node lts/*

👥 Contributors

v1.0.14

Choose a tag to compare

@github-actions github-actions released this 02 Oct 21:49
v1.0.14
8ec2524
v1.0.14

v1.0.13

Choose a tag to compare

@cldmv-bot cldmv-bot released this 28 Sep 20:03
v1.0.13
2ce4e13

release: v1.0.13 - publish real types for the plugin, language and AST

@cldmv/eslint-plugin-jsonv v1.0.13 Changelog

Release Date: September 2026
Release Type: Patch
Branch: release/1.0.13


Overview

Version 1.0.13 makes the plugin's published types real. dist/index.d.mts used to declare the default export as a bare Object; it now types the plugin, the jsonv/jsonv language, JsonvSourceCode, and every AST node against @eslint/core's generics, and the JSDoc that generates those declarations is now type-checked in CI. The release also closes a gap the new types surfaced: engines.node and a missing eslint peer range now match what the plugin's runtime dependencies actually require. Alongside that, the plugin accepts three more @cldmv/jsonv language options, and the repository adopts the CLDMV lint/format tooling.

No configuration changes are required to pick this up — existing eslint.config.mjs files, rules, and languageOptions keep working unchanged.


🐛 Bug Fixes

Published types describe a real ESLint plugin (#30, fixes #28)

dist/index.d.mts declared const plugin: Object, so a TypeScript (or // @ts-check) config got no type for plugin.configs.recommended, plugin.languages.jsonv, or languageOptions, and nothing for a rule author to use for the AST node types the language exposes. The JSDoc in index.mjs is now typed against @eslint/core's Language, TextSourceCode, OkParseResult, and Plugin generics, the way @eslint/json types its JSON language, and tsconfig.types.json now type-checks it (checkJs: true) instead of only emitting from it. The package exports typedefs for every AST node (JsonvProgram, JsonvObjectExpression, JsonvProperty, JsonvLiteral, JsonvIdentifier, JsonvMemberExpression, JsonvTemplateLiteral, JsonvTemplateElement), for JsonvLanguageOptions, and for a rule's visitor (JsonvRuleDefinition, JsonvRuleVisitor), plus the JsonvSourceCode class itself, and JsonvSourceCode is now a named export alongside the default plugin. A new test:types script compiles a type-level consumer test against the built declarations the way an eslint.config.mts would, and build:ci runs it.

The declared Node floor and ESLint range match what the plugin needs (#37, fixes #32)

engines.node still said >=18.0.0, but the runtime dependencies added for real types — @eslint/core and @eslint/plugin-kit — both require ^20.19.0 || ^22.13.0 || >=24, and so does ESLint 10 itself. Installing on Node 18 could fail or warn while engines claimed support. engines.node now states that real floor, and a new eslint peer dependency (^9.13.0 || ^10.0.0) tells consumers which ESLint versions the plugin's languages API needs — ^9.13.0 is the first release with defaultLanguageOptions support for plugin languages.

mode, strictOctal, and allowInternalReferences language options (#39, fixes #34)

The README documented a mode option, and the plugin rejected it (Unknown language option "mode") because it was never actually forwarded to the parser. mode ("jsonv", "json5", or "json", default "jsonv"), strictOctal (boolean, default false), and allowInternalReferences (boolean, default true) are now accepted, validated, and passed through to both parseWithOptions() and parseToAst(), matching @cldmv/jsonv's own ParseOptions. reviver, preserveComments, and tolerant stay unsupported, and validateLanguageOptions now names the reason when one of those three is set instead of reporting it as merely unknown. The README's Configuration Options table documents all five options with their defaults, and a new test extracts the README's own languageOptions examples and runs them through validateLanguageOptions and a live Linter, so the docs and the code can't drift apart again.

🔧 CI & tooling

  • The CLDMV eslint + prettier config, lint / lint:fix / format / format:check scripts, and the .githooks pre-commit hook are added, and the existing sources and README are reformatted repo-wide (#38, fixes #33).
  • release-merge is re-armed on every check-producing workflow, instead of only the ones that existed when it was first wired (#40).
  • The v4 workflows are synced with the CLDMV/.github v4.29.2 templates (#42).
  • The bundle-size workflow is added, and the release-merge required-workflow list is restored to the full set (#43).

📚 Documentation

  • NEW: docs/changelog/v1/v1.0.13.md — this changelog.
  • README Installation now states the Node and ESLint requirements (#37).
  • README Configuration Options documents mode, strictOctal, and allowInternalReferences alongside year and strictBigInt (#39).

🔧 Dependencies

  • NEW runtime dependency: @eslint/core ^1.2.1, which provides the Language, TextSourceCode, and Plugin types the published declarations are built against (#30).
  • NEW dev dependency: @types/node ^26.6.3, needed by the type-checked JSDoc (#30).
  • NEW peer dependency: eslint ^9.13.0 || ^10.0.0 (#37).
  • NEW dev dependencies for lint/format: @cldmv/prettier-plugin-jsonv ^1.0.6, @eslint/css ^2.0.0, @eslint/js ^10.0.1, @eslint/json ^2.1.0, @eslint/markdown ^8.0.3, globals ^17.12.0, prettier ^3.9.9 (#38).

Upgrade notes

  • No breaking changes — this is a drop-in upgrade for existing configs.
  • If you're on Node below ^20.19.0/^22.13.0/24, or ESLint below 9.13.0, upgrade both: the new engines and eslint peer ranges now state a requirement the plugin's dependencies already carried since v1.0.12.
  • mode, strictOctal, and allowInternalReferences are opt-in language options with backward-compatible defaults — no existing languageOptions need to change.
  • If you consume the published types, the default export and its language are now real ESLint/@eslint/core types instead of Object; a config that previously cast around the missing types can drop the cast.

coverage

Metric Coverage
Statements 100.0%
Branches 100.0%
Functions 100.0%
Lines 100.0%

Avg: 100.0% · 43b8980 · Node lts/*

👥 Contributors

v1.0.12

Choose a tag to compare

@cldmv-bot cldmv-bot released this 28 Sep 04:40
v1.0.12
2686e4f

release: v1.0.12 - build a real ESLint AST from the jsonv parser

@cldmv/eslint-plugin-jsonv v1.0.12 Changelog

Release Date: September 2026
Release Type: Patch
Branch: release/1.0.12


Overview

Version 1.0.12 makes the jsonv/jsonv language a real ESLint language. Until now parse() ran the jsonv parser but handed ESLint a hard-coded empty Program, so the plugin could only say whether a file parsed: rules had no nodes to visit, a report on a node landed at 1:0, and inline eslint-disable comments were ignored. The language now builds a positioned AST from @cldmv/jsonv's parseToAst(), exposes comments and tokens, and supports ESLint's inline configuration comments.

Parse-error reporting is unchanged, except that unresolved and circular references now report at the reference itself instead of 1:1. The release raises the @cldmv/jsonv peer range to ^1.1.0 (the first version with parseToAst()) and adds @eslint/plugin-kit as a runtime dependency — see the upgrade notes.


🐛 Bug Fixes

The language returns a real AST (#26, fixes #19)

languages.jsonv.parse() now returns an ESTree-style AST whose Program.body is the document's root value, built from @cldmv/jsonv's parseToAst(). Node types: Program, ObjectExpression, Property, ArrayExpression, Literal, Identifier, MemberExpression, TemplateLiteral and TemplateElement. Every node carries a loc with 1-based lines and columns (matching the language's declared columnStart: 1) and a range, Program carries the document's Line/Block comments and its tokens, and the language declares visitorKeys so selectors such as "Property > Literal.value" work.

createSourceCode() returns a JsonvSourceCode built on TextSourceCodeBase from @eslint/plugin-kit, the same foundation @eslint/json uses. It provides traversal, getParent() / getAncestors(), and inline configuration: // eslint-disable, /* eslint-disable <rule> */, /* eslint-enable */, // eslint-disable-line, // eslint-disable-next-line and /* eslint <rule>: "off" */ now work inside .jsonv files, and malformed directives are reported. Line handling matches jsonv's own (CRLF, CR, LF, U+2028, U+2029), so range and loc agree on every line-break style.

Parse errors are still produced by parseWithOptions() at their real position. Unresolved and circular references, which @cldmv/jsonv 1.1.0 now throws as a positioned JsonvReferenceError, report at the reference: { a: missing } reports at 1:6 rather than 1:1.

The README gains Inline Configuration and Writing Rules sections with the node-type table and a selector example. Test coverage went from 114 to 167 tests, with index.mjs at 100% statements, branches, functions and lines.

🔧 Dependencies

  • @cldmv/jsonv ^1.0.10 → ^1.1.0, as both the peer dependency and the dev dependency; 1.1.0 is the first release with parseToAst() (#26).
  • NEW runtime dependency: @eslint/plugin-kit ^0.7.3, which provides TextSourceCodeBase and the inline-config directive types (#26).
  • typescript 5.9.3 → 7.0.2 (dev only; builds the published type declarations, which are unchanged apart from keeping the file's header doc comment) (#25).

📚 Documentation


Upgrade notes

  • Upgrade @cldmv/jsonv to 1.1.0 or later alongside this release. The peer range is now ^1.1.0; with @cldmv/jsonv 1.0.x installed, npm reports a peer-dependency conflict.
  • Rules that report on nodes now land on the node's real position instead of 1:0, and inline eslint-disable comments now take effect — findings that were previously suppressed by nothing, or mis-positioned, will move or disappear accordingly.
  • JsonvSourceCode#getLoc() / getRange() now throw for an object with no position rather than returning a 1:0 fallback. This only affects custom code that passes hand-built objects to those methods.
  • No configuration changes are required: the jsonv/jsonv language id, the language options and configs.recommended are unchanged.

coverage

Metric Coverage
Statements 100.0%
Branches 100.0%
Functions 100.0%
Lines 100.0%

Avg: 100.0% · a85c2f5 · Node lts/*

👥 Contributors

v1.0.11

Choose a tag to compare

@cldmv-bot cldmv-bot released this 28 Sep 03:34
v1.0.11
55c0ec8

release: v1.0.11 - validate language options and clean up the language…

🚀 What's Changed

💥 Breaking Changes

No breaking changes

✨ Features

No new features

🐛 Bug Fixes

  • #24

    • fix: report parse errors at their real position (b58568b)
  • #23

    • fix: validate language options and clean up the language object (b89f044)

📦 Dependencies

No dependency updates

🔧 Other Changes

  • #18

    • ci: run the vitest suite and coverage badge in CI (3d67736)
    • test: cover the jsonv language, configs and ESLint integration (0f69f94)
    • test: add the @cldmv/vitest-runner harness and coverage config (ca0696e)
  • #17

    • ci: correct workflow header metadata (1003005)
    • ci: sync v4 workflows with CLDMV/.github v4.29.0 templates (e8fd21f)
  • #16

    • chore: restore the verbatim Apache-2.0 license text (fbcd397)

coverage

Metric Coverage
Statements 100.0%
Branches 100.0%
Functions 100.0%
Lines 100.0%

Avg: 100.0% · 2d59de5 · Node lts/*

👥 Contributors

v1.0.10

Choose a tag to compare

@cldmv-bot cldmv-bot released this 14 Sep 02:34
v1.0.10
d542f41

release: v1.0.10 - link back to the jsonv repo (#15)

👥 Contributors

v1.0.9

Choose a tag to compare

@cldmv-bot cldmv-bot released this 14 Sep 01:59
v1.0.9
bc9ccf2

release: v1.0.9 - correct package name, add badge row and license badges (#12)

👥 Contributors

v1.0.8

Choose a tag to compare

@cldmv-bot cldmv-bot released this 13 Sep 22:38
v1.0.8
906b987

release: v1.0.8 - bump Node CI matrix for vitest 5 (max→26, min→22.12.0) (#10)

👥 Contributors

v1.0.7

Choose a tag to compare

@cldmv-bot cldmv-bot released this 03 Sep 12:01
v1.0.7
238a225

release: v1.0.7 - adopt the v4 reusable + sign the security cherry-pick… (#8)

👥 Contributors