Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix schema with “properties” and “additionalProperties” #80

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

cwalther
Copy link
Contributor

Rendering a schema containing both “properties” and “additionalProperties” currently fails with oops – TypeError: Attempted to assign to readonly property. printed to the console.

The source of the TypeError is that the “name” helper is invoked with Handlebars’ nullContext as the first argument, a read-only empty object, coming from {{schema ../additionalProperties}} in box.html. This strikes me as making no sense – why get the property from the parent context after checking for it on the current context using {{#if additionalProperties}}?

This used to work, but I’m not even sure why – apparently the parent context was the same as the current context at that invocation, at some point. I could’t quite figure out what broke it – bisection indicates it seems to have happened in 7d17a0d, where not much happened in the Docson code, but many dependencies, including Handlebars, were updated over several major versions in the switch from bundled libraries to ones installed by npm. I didn’t dig any deeper than that.

The attached commits add a test that currently fails, using a schema from tests/additionalProperties.json (if those manual tests were still working, maybe the bug would have been noticed earlier), as well as a fix.

(We are getting closer to the bug I actually wanted to fix, but this is not it yet. 🙂)

Currently fails with "oops – TypeError: Attempted to assign to readonly property.".
The error is encountered when rendering a schema containing both "properties" and "additionalProperties" and occurs because the "name" helper is invoked with Handlebars' nullContext, a read-only empty object.

Checking for "additionalProperties" and then rendering "../additionalProperties" makes no sense. I'm not sure why this worked previously (apparently the parent context was the same as the current context at some point), it seems to have been broken in 7d17a0d where many dependencies were updated over several major versions.
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