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

Migrate expression widget to latest version in PerseusItem parser #1908

Merged
merged 5 commits into from
Nov 26, 2024

Conversation

benchristel
Copy link
Member

This demonstrates how we can upgrade/migrate widget options in the parsing
code, obviating the need for propUpgrades.

The fact that version is an object makes this really annoying because
TypeScript can't discriminate unions based on nested properties like
version.major. Given that constraint, I think the approach I came up with is
reasonable, but I'm certainly open to feedback on how to improve it.

Issue: LEMS-2582

Test plan:

yarn test

@khan-actions-bot
Copy link
Contributor

khan-actions-bot commented Nov 23, 2024

Gerald

Required Reviewers
  • @Khan/perseus for changes to .changeset/yellow-ducks-march.md, packages/perseus/src/util/parse-perseus-json/perseus-parsers/expression-widget.test.ts, packages/perseus/src/util/parse-perseus-json/perseus-parsers/expression-widget.ts, packages/perseus/src/util/parse-perseus-json/perseus-parsers/widget.ts, packages/perseus/src/util/parse-perseus-json/perseus-parsers/widgets-map.test.ts

Don't want to be involved in this pull request? Comment #removeme and we won't notify you of further changes.

Copy link
Contributor

github-actions bot commented Nov 23, 2024

npm Snapshot: Published

Good news!! We've packaged up the latest commit from this PR (44fc32c) and published it to npm. You
can install it using the tag PR1908.

Example:

yarn add @khanacademy/perseus@PR1908

If you are working in Khan Academy's webapp, you can run:

./dev/tools/bump_perseus_version.sh -t PR1908

Copy link
Contributor

github-actions bot commented Nov 23, 2024

Size Change: +261 B (+0.02%)

Total Size: 1.29 MB

Filename Size Change
packages/perseus/dist/es/index.js 422 kB +261 B (+0.06%)
ℹ️ View Unchanged
Filename Size
packages/kas/dist/es/index.js 39 kB
packages/keypad-context/dist/es/index.js 760 B
packages/kmath/dist/es/index.js 4.27 kB
packages/math-input/dist/es/index.js 77.9 kB
packages/math-input/dist/es/strings.js 1.79 kB
packages/perseus-core/dist/es/index.js 1.48 kB
packages/perseus-editor/dist/es/index.js 698 kB
packages/perseus-linter/dist/es/index.js 22.2 kB
packages/perseus/dist/es/strings.js 3.68 kB
packages/pure-markdown/dist/es/index.js 3.66 kB
packages/simple-markdown/dist/es/index.js 12.5 kB

compressed-size-action

Copy link
Collaborator

@jeremywiebe jeremywiebe left a comment

Choose a reason for hiding this comment

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

Nice. I like how this PR is starting to work out the upgrade/migration ideas.

}

export const parseExpressionWidget: Parser<ExpressionWidget> =
union(pipeParsers(parseExpressionWidgetV0).then(migrateV0ToLatest).parser)
Copy link
Collaborator

Choose a reason for hiding this comment

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

So this will attempt to parse using the v0 and migration parsers and fall back to the parseExpressionWidgetLatest if that fails, right?

This might be extremely over-the-top optimization, but I wonder if we should order these in the opposite order given we'll more likely get a latest version set of options rather than v0 options? 🤔

@benchristel benchristel changed the title POC: migrate expression widget to latest version in PerseusItem parser Migrate expression widget to latest version in PerseusItem parser Nov 25, 2024
@benchristel benchristel changed the base branch from benc/parser-regression-tests-1 to main November 26, 2024 21:16
@benchristel benchristel force-pushed the benc/expression-widget-migration branch from f85fe16 to 0e29951 Compare November 26, 2024 21:42
@benchristel benchristel merged commit 7f2866c into main Nov 26, 2024
9 checks passed
@benchristel benchristel deleted the benc/expression-widget-migration branch November 26, 2024 21:59
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.

3 participants