Skip to content

fix(formatters): markdown formatter with invalid-ref crashes spectral#2905

Merged
tomek-tursa-sb merged 2 commits into
stoplightio:developfrom
egrimstad:fix/markdown-invalid-ref-crash
Mar 10, 2026
Merged

fix(formatters): markdown formatter with invalid-ref crashes spectral#2905
tomek-tursa-sb merged 2 commits into
stoplightio:developfrom
egrimstad:fix/markdown-invalid-ref-crash

Conversation

@egrimstad

Copy link
Copy Markdown
Contributor

If there is an "invalid-ref" error, spectral crashes when using the markdown formatter, with error:


Error #1: Cannot read properties of undefined (reading 'documentationUrl')
          at getRuleDocumentatio…  …umentationUrl.ts:11  if (rule.documentat…
          at markdown              …/src/markdown.ts:19  const ruleDocumenta…
          at formatOutput          …rvices/output.ts:42  return formatters[f…
          at                       …ommands/lint.ts:215  linterResult.result…
          at map

This happens because Spectral tries to load the documentationUrl from the rule related to the error, but "invalid-ref" is not an actual rule, so rule is null, causing "cannot read properties of undefined". Fix bug by using optional chaining.
Checklist

  • Tests added / updated
  • Docs added / updated

Does this PR introduce a breaking change?

  • Yes
  • No

If there is an "invalid-ref" error, spectral crashes when using the
markdown formatter, with error:

```

Error stoplightio#1: Cannot read properties of undefined (reading 'documentationUrl')
          at getRuleDocumentatio…  …umentationUrl.ts:11  if (rule.documentat…
          at markdown              …/src/markdown.ts:19  const ruleDocumenta…
          at formatOutput          …rvices/output.ts:42  return formatters[f…
          at                       …ommands/lint.ts:215  linterResult.result…
          at map
```

This happens because Spectral tries to load the documentationUrl from
the rule related to the error, but "invalid-ref" is not an actual rule,
so rule is null, causing "cannot read properties of undefined". Fix bug
by using optional chaining.
@egrimstad egrimstad requested a review from a team as a code owner March 3, 2026 13:16
@tomek-tursa-sb tomek-tursa-sb merged commit 59728e4 into stoplightio:develop Mar 10, 2026
8 checks passed
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [6.15.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-cli-6.15.0...@stoplight/spectral-cli-6.15.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
# [1.22.0](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-core-1.21.0...@stoplight/spectral-core-1.22.0) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [1.5.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-formatters-1.5.0...@stoplight/spectral-formatters-1.5.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
# [1.12.0](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-ruleset-migrator-1.11.3...@stoplight/spectral-ruleset-migrator-1.12.0) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
stoplight-bot pushed a commit that referenced this pull request Apr 13, 2026
## [1.22.1](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-rulesets-1.22.0...@stoplight/spectral-rulesets-1.22.1) (2026-04-13)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
@stoplight-bot

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 1.5.1 🎉

The release is available on @stoplight/spectral-formatters-1.5.1

Your semantic-release bot 📦🚀

stoplight-bot pushed a commit that referenced this pull request Apr 14, 2026
## [1.1.5](https://github.com/stoplightio/spectral/compare/@stoplight/spectral-runtime-1.1.4...@stoplight/spectral-runtime-1.1.5) (2026-04-14)

### Bug Fixes

* **cli:** fix bug where output gets truncated when too long ([#2862](#2862)) ([0e6fd33](0e6fd33))
* **cli:** throw error if no file found to lint ([#2778](#2778)) ([3e20072](3e20072))
* **core:** fix security issue of simple-eval package  ([#2886](#2886)) ([8120a76](8120a76))
* **core:** respect off severity in intermediate rulesets ([#2890](#2890)) ([5b99b99](5b99b99))
* **deps:** bump elliptic from 6.6.0 to 6.6.1 ([#2782](#2782)) ([5ff9602](5ff9602))
* **deps:** fix yarn lockfile ([e6c3b9d](e6c3b9d))
* **deps:** post lodash update changes for semantic release ([#2942](#2942)) ([bf530dd](bf530dd))
* **deps:** update spectral-core in cli ([35687cd](35687cd))
* **formatters:** Fix rendering of github actions documentationUrl ([#2895](#2895)) ([df27b06](df27b06))
* **formatters:** markdown formatter with invalid-ref crashes spectral ([#2905](#2905)) ([59728e4](59728e4))
* **functions:** export or function ([#2812](#2812)) ([03532a5](03532a5))
* **repo:** release step marking repo as save for git ([#2884](#2884)) ([87147a6](87147a6))
* **repo:** remove acceptance step on release ([#2882](#2882)) ([73496c6](73496c6))
* **repo:** replace discord link with forum link ([#2793](#2793)) ([6229442](6229442))
* **ruleset-migrator:** fix ruleset migrator output when a rule name contains '/' ([#2859](#2859)) ([115d1d0](115d1d0))
* **rulesets:** use uri-reference for openIdConnectUrl ([#2796](#2796)) ([c57eb59](c57eb59))

### Features

* **core:** add documentUrl to JS api and cli formatters ([#2443](#2443)) ([e787728](e787728))
* **core:** allow extending rulesets with aliases ([#2870](#2870)) ([8db9718](8db9718))
* **core:** further adjustments for extending rulesets with aliases ([#2939](#2939)) ([26144bc](26144bc))
* **functions:** add or function ([#2798](#2798)) ([d9ef27f](d9ef27f))
* **repo:** circleci migration to GHA (OP-35885) ([#2867](#2867)) ([884f079](884f079))
* **repo:** npm release workflow as gha ([#2880](#2880)) ([0147d6e](0147d6e))
* **repo:** post develop merge workflow ([#2877](#2877)) ([9420713](9420713))
* **repo:** replace skypack usage with esm cdn ([#2940](#2940)) ([0d6a910](0d6a910))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants