GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Support `undefined`, `number` in JSON module by mario-campos · Pull Request #3980 · github/codeql-action

Conversation

@mario-campos

@mario-campos mario-campos commented Jun 30, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Summary

This pull request introduces several additions to the JSON schema-validation utilities:

  • Renamed the optional validator to optionalOrNull to clarify that schema fields may be optional and accept null as a valid value, in addition to undefined.
  • Redefined the optional validator so that it only accepts undefined (not null), making its behavior more precise and distinct from optionalOrNull.
  • Added new built-in validators for number.
  • Added an isNumber type guard function for type checking.

This PR is a prerequisite for #3950.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • Advanced setup - Impacts users who have custom CodeQL workflows.
  • Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...).

Products:

  • Code Scanning - The changes impact analyses when analysis-kinds: code-scanning.
  • Code Quality - The changes impact analyses when analysis-kinds: code-quality.

Environments:

  • Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency.
  • GHES - Impacts CodeQL workflows on GitHub Enterprise Server.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).
  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mario-campos
Add isNumber/number validator
ffb3423
@mario-campos
mario-campos requested a review from a team as a code owner June 30, 2026 21:54
Copilot AI review requested due to automatic review settings June 30, 2026 21:54
@github-actions github-actions Bot added the size/S Should be easy to review label Jun 30, 2026
Copilot started reviewing on behalf of mario-campos June 30, 2026 21:54
View session
Copilot AI reviewed Jun 30, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

  • Copilot's review of this pull request may be incomplete because some of the changed files are excluded by your Copilot content exclusion settings. See Excluding content from Copilot for details.

Pull request overview

This PR extends the internal JSON schema-validation helpers to better distinguish “optional” vs “optional-or-null” fields, and to add first-class validators for number and object. It also updates start-proxy configuration schemas to use the new optionalOrNull semantics and adjusts unit tests accordingly.

Changes:

  • Introduces isNumber, plus json.number and json.object validators.
  • Renames the old “optional (undefined or null)” behavior to optionalOrNull and redefines optional to mean “undefined-only”.
  • Updates start-proxy schemas and unit tests to reflect the new optional semantics.
Show a summary per file
File Description
src/start-proxy/types.ts Switches relevant schema fields from optional to optionalOrNull for backwards-compatible null acceptance.
src/json/index.ts Adds number/object validators and splits optional handling into optionalOrNull vs optional.
src/json/index.test.ts Updates/expands tests to cover the new optional semantics (optionalOrNull vs optional).
lib/entry-points.js Generated output (content excluded from review per policy).

Review details

Files excluded by content exclusion policy (1)
  • lib/entry-points.js
  • Files reviewed: 3/4 changed files
  • Comments generated: 3
  • Review effort level: Low

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/json/index.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/json/index.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/json/index.ts
Comment on lines +63 to +67
/** A validator for number fields in schemas. */
export const number = {
validate: isNumber,
required: true,
} as const satisfies Validator<number>;
mario-campos added a commit that referenced this pull request Jul 1, 2026
@mario-campos
Revert JSON module changes
bba0d6c
These have been spun off into #3980.
mbg
mbg reviewed Jul 1, 2026
View reviewed changes
Comment thread src/json/index.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/json/index.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/json/index.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/json/index.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@mario-campos
mario-campos force-pushed the mario-campos/add-optional-to-json branch from 46563f5 to 2a939e7 Compare July 1, 2026 15:27
mario-campos and others added 2 commits July 1, 2026 15:46
@mario-campos
Change optional to include undefined
4c18ab0
The previous implementation of `optional` is now `optionalOrNull`.
@mario-campos @mbg
Adjust test name
cbf67da
By @mbg

Co-authored-by: Michael B. Gale <[email protected]>
@mario-campos
mario-campos force-pushed the mario-campos/add-optional-to-json branch from 5d92713 to cbf67da Compare July 1, 2026 20:46
@mario-campos mario-campos changed the title Support undefined, number, and object in JSON module Support undefined, number in JSON module Jul 1, 2026
@mario-campos
mario-campos requested a review from mbg July 7, 2026 15:37
mbg
mbg approved these changes Jul 8, 2026
View reviewed changes
@mario-campos
mario-campos added this pull request to the merge queue Jul 8, 2026
Merged via the queue into main with commit 0e974e6 Jul 8, 2026
227 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mario-campos
mario-campos deleted the mario-campos/add-optional-to-json branch July 8, 2026 13:20
This was referenced Jul 16, 2026
Merge main into releases/v4 #4020
Merged
Merge releases/v4 into releases/v3 #4022
Merged
@mario-campos mario-campos mentioned this pull request Aug 19, 2026
Cache CLI extractor paths across Actions steps #3950
Closed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@mbg mbg mbg approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

size/S Should be easy to review

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@mario-campos @mbg
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.