-
Notifications
You must be signed in to change notification settings - Fork 357
Resolve some TODO comments in the Perseus JSON parsing code #2380
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
Conversation
Size Change: -89 B (-0.02%) Total Size: 466 kB
ℹ️ View Unchanged
|
npm Snapshot: PublishedGood news!! We've packaged up the latest commit from this PR (5482421) and published it to npm. You Example: pnpm add @khanacademy/perseus@PR2380 If you are working in Khan Academy's webapp, you can run: ./dev/tools/bump_perseus_version.js -t PR2380 |
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.
packages/perseus-core/src/parse-perseus-json/exhaustive-test-tool/index.ts
Outdated
Show resolved
Hide resolved
packages/perseus-core/src/parse-perseus-json/perseus-parsers/interactive-graph-widget.ts
Show resolved
Hide resolved
@@ -32,7 +32,5 @@ export const parseMeasurerWidget: Parser<MeasurerWidget> = parseWidget( | |||
rulerPixels: number, | |||
rulerLength: number, | |||
box: pair(number, number), | |||
// TODO(benchristel): static is not used. Remove it? | |||
static: defaulted(boolean, () => false), |
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.
Nice! My guess is that this snuck into the object data at some point by accident.
@@ -163,7 +163,7 @@ type RenderProps = { | |||
* Shapes (points, chords, etc) displayed on the graph that cannot be moved | |||
* by the user. | |||
*/ | |||
lockedFigures?: ReadonlyArray<LockedFigure>; | |||
lockedFigures: ReadonlyArray<LockedFigure>; |
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.
Love that these parsers are giving us the ability to make the production code safer/cleaner!
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.
Cool!
@@ -1192,9 +1192,6 @@ export type PerseusMeasurerWidgetOptions = { | |||
rulerLength: number; | |||
// Containing area [width, height] | |||
box: [number, number]; | |||
// TODO(benchristel): static is not used. Remove it? | |||
// Always false. Not used for this widget | |||
static: boolean; |
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.
Nice, static
is so annoying
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.
Wanted to remind you to add back coords
in interactive graph and to point out some checks need to be fixed. Also, since data-schema changed, we might need to inform CP, iirc? Just one NB question, but looks good otherwise :)
{props.lockedFigures && ( | ||
<GraphLockedLabelsLayer | ||
lockedFigures={props.lockedFigures} | ||
/> | ||
)} | ||
<GraphLockedLabelsLayer | ||
lockedFigures={props.lockedFigures} | ||
/> |
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.
So before when lockedFigures
was optional, if it was falsy in some way, then this GraphLockedLabelsLayer
element wouldn't be included. Now it's always included. Could that cause any side effects with interaction or the UI?
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.
I don't think this would render in the DOM if lockedFigures
length is 0, because the outermost layer in packages/perseus/src/widgets/interactive-graphs/graph-locked-labels-layer.tsx
is a React fragment. It only renders the actual labels themselves if there are any.
So I think this is fine.
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.
Nice! Looks good to me.
I added one question for my own understanding, but I don't anticipate it being a problem.
{props.lockedFigures && ( | ||
<GraphLockedLabelsLayer | ||
lockedFigures={props.lockedFigures} | ||
/> | ||
)} | ||
<GraphLockedLabelsLayer | ||
lockedFigures={props.lockedFigures} | ||
/> |
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.
I don't think this would render in the DOM if lockedFigures
length is 0, because the outermost layer in packages/perseus/src/widgets/interactive-graphs/graph-locked-labels-layer.tsx
is a React fragment. It only renders the actual labels themselves if there are any.
So I think this is fine.
@@ -782,7 +782,7 @@ export type PerseusInteractiveGraphWidgetOptions = { | |||
correct: PerseusGraphType; | |||
// Shapes (points, chords, etc) displayed on the graph that cannot | |||
// be moved by the user. | |||
lockedFigures?: ReadonlyArray<LockedFigure>; |
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.
Very exciting! The rest of the code for making lockedFigures
required makes sense to me. Same for labels
.
Only one question for my own understanding: Is there any possibility of this causing issues for old exercise items that saved this as null
or undefined
? Or would that be fixed by the parser?
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.
That will be fixed up by the parser! It will default null and undefined to an empty array.
2577f55
to
09e5097
Compare
bcb6197
to
d36f830
Compare
…s of PerseusInteractiveGraphWidgetOptions.lockedFigures
0ecb683
to
5482421
Compare
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @khanacademy/[email protected] ### Major Changes - [#2402](#2402) [`558cc1cc6`](558cc1c) Thanks [@benchristel](https://github.com/benchristel)! - Add typetests to ensure that the data format accepted by `parseAndMigratePerseusItem` stays in sync with the types in `data-schema.ts`, exported from `@khanacademy/perseus-core`. Breaking change: `PerseusGraphTypeAngle.coords` can no longer be `null`; use `undefined` instead. - [#2436](#2436) [`79a84d31b`](79a84d3) Thanks [@benchristel](https://github.com/benchristel)! - Change the type of `PerseusNumberLineWidgetOptions.correctRel` to `"eq" | "lt" | "gt" | "le" | "ge"`, to better reflect our data and the semantics of this field. - [#2425](#2425) [`4282de2b2`](4282de2) Thanks [@benchristel](https://github.com/benchristel)! - Add `isInequality` to the `PerseusNumberLineWidgetOptions` type. The NumberLine component was using this field, but it wasn't represented in the types. - [#2417](#2417) [`4184314fe`](4184314) Thanks [@handeyeco](https://github.com/handeyeco)! - Enable Group to be rendered/answered with answerless item data - [#2380](#2380) [`1f88cc191`](1f88cc1) Thanks [@benchristel](https://github.com/benchristel)! - Removes `undefined` from the types of `PerseusInteractiveGraphWidgetOptions.lockedFigures` and the `labels` property of locked figures. Removes the `coords` property from interactive graph widget options types, for graphs that do not use it (all but the `point` graph type). This is a breaking change because assigning `undefined` to `lockedFigures` or `labels`, or setting `coord` in an object literal, will now give a type error. Callers should use an empty array instead of `undefined` for `lockedFigures` and `labels`. Avoid setting `coord` for graph types other than `point`. ### Minor Changes - [#2423](#2423) [`22e7de307`](22e7de3) Thanks [@Myranae](https://github.com/Myranae)! - Update Plotter widget to render with answerless data. Adds test and stories for answerless rendering. - [#2448](#2448) [`b7d3b9eaf`](b7d3b9e) Thanks [@tony-dinh](https://github.com/tony-dinh)! - Introduce `itemHasHints` & `itemHasRationales` methods to detect when a parsed PerseusItem contains widgets with hints or rationales, respectively. - [#2441](#2441) [`f1662239e`](f166223) Thanks [@Myranae](https://github.com/Myranae)! - Update Orderer widget to render with answerless data. Adds tests and stories for answerless rendering. - [#2387](#2387) [`aa7b1b621`](aa7b1b6) Thanks [@Myranae](https://github.com/Myranae)! - Update Matrix widget to render with answerless data. Adds tests and stories for answerless rendering. ### Patch Changes - [#2426](#2426) [`a2701f002`](a2701f0) Thanks [@handeyeco](https://github.com/handeyeco)! - Add tests/stories to prove InputNumber is interactive with answerless data - [#2446](#2446) [`ca4df1cf8`](ca4df1c) Thanks [@benchristel](https://github.com/benchristel)! - Internal: suppress immutable-data lint rule in a test - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2459](#2459) [`c27162249`](c271622) Thanks [@benchristel](https://github.com/benchristel)! - Internal: use 'require' instead of 'import' in test script so it will work on more platforms - [#2434](#2434) [`28c395f8e`](28c395f) Thanks [@benchristel](https://github.com/benchristel)! - Internal: add tests verifying that NumberLine widgets work with answerless data - [#2403](#2403) [`bfa5ce68a`](bfa5ce6) Thanks [@benchristel](https://github.com/benchristel)! - Internal: add tests to ensure Perseus JSON parsers are idempotent - [#2439](#2439) [`1b773e2a0`](1b773e2) Thanks [@benchristel](https://github.com/benchristel)! - The Perseus JSON parser now accepts cross-realm objects. - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`e7807485e`](e780748), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Minor Changes - [#2423](#2423) [`22e7de307`](22e7de3) Thanks [@Myranae](https://github.com/Myranae)! - Update Plotter widget to render with answerless data. Adds test and stories for answerless rendering. - [#2449](#2449) [`2243316be`](2243316) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Add option to ButtonGroup component to allow selected button to be styled - [#2441](#2441) [`f1662239e`](f166223) Thanks [@Myranae](https://github.com/Myranae)! - Update Orderer widget to render with answerless data. Adds tests and stories for answerless rendering. - [#2387](#2387) [`aa7b1b621`](aa7b1b6) Thanks [@Myranae](https://github.com/Myranae)! - Update Matrix widget to render with answerless data. Adds tests and stories for answerless rendering. ### Patch Changes - [#2426](#2426) [`a2701f002`](a2701f0) Thanks [@handeyeco](https://github.com/handeyeco)! - Add tests/stories to prove InputNumber is interactive with answerless data - [#2447](#2447) [`39ca81d0f`](39ca81d) Thanks [@handeyeco](https://github.com/handeyeco)! - Clean up a ServerItemRenderer test to make it more focused - [#2436](#2436) [`79a84d31b`](79a84d3) Thanks [@benchristel](https://github.com/benchristel)! - Change the type of `PerseusNumberLineWidgetOptions.correctRel` to `"eq" | "lt" | "gt" | "le" | "ge"`, to better reflect our data and the semantics of this field. - [#2425](#2425) [`4282de2b2`](4282de2) Thanks [@benchristel](https://github.com/benchristel)! - Add `isInequality` to the `PerseusNumberLineWidgetOptions` type. The NumberLine component was using this field, but it wasn't represented in the types. - [#2452](#2452) [`4b25852db`](4b25852) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix types used for forwardref in `expression` widget - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2417](#2417) [`4184314fe`](4184314) Thanks [@handeyeco](https://github.com/handeyeco)! - Enable Group to be rendered/answered with answerless item data - [#2380](#2380) [`1f88cc191`](1f88cc1) Thanks [@benchristel](https://github.com/benchristel)! - Removes `undefined` from the types of `PerseusInteractiveGraphWidgetOptions.lockedFigures` and the `labels` property of locked figures. Removes the `coords` property from interactive graph widget options types, for graphs that do not use it (all but the `point` graph type). This is a breaking change because assigning `undefined` to `lockedFigures` or `labels`, or setting `coord` in an object literal, will now give a type error. Callers should use an empty array instead of `undefined` for `lockedFigures` and `labels`. Avoid setting `coord` for graph types other than `point`. - [#2416](#2416) [`a90ebca08`](a90ebca) Thanks [@ivyolamit](https://github.com/ivyolamit)! - Update Radio Widget docs to include rationales in the test data - [#2434](#2434) [`28c395f8e`](28c395f) Thanks [@benchristel](https://github.com/benchristel)! - Internal: add tests verifying that NumberLine widgets work with answerless data - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Minor Changes - [#2449](#2449) [`2243316be`](2243316) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - UI updates to Expression editor ### Patch Changes - [#2402](#2402) [`558cc1cc6`](558cc1c) Thanks [@benchristel](https://github.com/benchristel)! - Add typetests to ensure that the data format accepted by `parseAndMigratePerseusItem` stays in sync with the types in `data-schema.ts`, exported from `@khanacademy/perseus-core`. Breaking change: `PerseusGraphTypeAngle.coords` can no longer be `null`; use `undefined` instead. - [#2421](#2421) [`bedcfc6f2`](bedcfc6) Thanks [@mahtabsabet](https://github.com/mahtabsabet)! - Allow widgets within hints to be collapsed/expanded through editor controls - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2430](#2430) [`312166b0b`](312166b) Thanks [@jandrade](https://github.com/jandrade)! - Updates the `ExpressionEditor` widget to use a WB `Button` instance that resembles the previously supported `light` variant (now deprecated). - [#2417](#2417) [`4184314fe`](4184314) Thanks [@handeyeco](https://github.com/handeyeco)! - Enable Group to be rendered/answered with answerless item data - [#2380](#2380) [`1f88cc191`](1f88cc1) Thanks [@benchristel](https://github.com/benchristel)! - Removes `undefined` from the types of `PerseusInteractiveGraphWidgetOptions.lockedFigures` and the `labels` property of locked figures. Removes the `coords` property from interactive graph widget options types, for graphs that do not use it (all but the `point` graph type). This is a breaking change because assigning `undefined` to `lockedFigures` or `labels`, or setting `coord` in an object literal, will now give a type error. Callers should use an empty array instead of `undefined` for `lockedFigures` and `labels`. Avoid setting `coord` for graph types other than `point`. - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`39ca81d0f`](39ca81d), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`4b25852db`](4b25852), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`a90ebca08`](a90ebca), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`2243316be`](2243316), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`e7807485e`](e780748), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2417](#2417) [`4184314fe`](4184314) Thanks [@handeyeco](https://github.com/handeyeco)! - Enable Group to be rendered/answered with answerless item data - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - Updated dependencies \[[`e7807485e`](e780748), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`e7807485e`](e780748), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses - [#2438](#2438) [`3f32593c9`](3f32593) Thanks [@benchristel](https://github.com/benchristel)! - Internal: Add a linter to prevent accidental mutation of object and array values - Updated dependencies \[[`a2701f002`](a2701f0), [`558cc1cc6`](558cc1c), [`79a84d31b`](79a84d3), [`ca4df1cf8`](ca4df1c), [`4282de2b2`](4282de2), [`e7807485e`](e780748), [`4184314fe`](4184314), [`1f88cc191`](1f88cc1), [`22e7de307`](22e7de3), [`c27162249`](c271622), [`28c395f8e`](28c395f), [`bfa5ce68a`](bfa5ce6), [`b7d3b9eaf`](b7d3b9e), [`f1662239e`](f166223), [`aa7b1b621`](aa7b1b6), [`1b773e2a0`](1b773e2), [`3f32593c9`](3f32593)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## [email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses ## [email protected] ### Patch Changes - [#2414](#2414) [`e7807485e`](e780748) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Fix dependencies so that the package correctly depends on all of the packages it uses Author: khan-actions-bot Reviewers: benchristel Required Reviewers: Approved By: benchristel Checks: ⏭️ 1 check has been skipped, ✅ 4 checks were successful Pull Request URL: #2412
Issue: none
Test plan:
pnpm test