fix(csv-parse): type the delimiter_auto score callback arguments - #499
Open
dylanpulver wants to merge 1 commit into
Open
fix(csv-parse): type the delimiter_auto score callback arguments#499dylanpulver wants to merge 1 commit into
dylanpulver wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
OptionDelimiterAuto.scoreis declared as() => number, so a custom scoring function cannot be given the two arguments the parser passes it.Actual, from
npx tsc --noEmit:Expected: it compiles.
utils/delimiter_discover.js:46callsoptions.score(info, options), and the default atapi/normalize_options.js:237has exactly that shape. The snippet above is a copy of that default, so writing a custom score in TypeScript needs a cast.preferredandsizewent into the interface in the same commit asscore(4f69946) and both match the runtime.scoreis the member that does not.This types the callback with a
ScoringFunctionalias sitting next toCastingFunction, plus anInfoDelimiterAutointerface for the five propertiesdelimiter_discoversets before it callsscore.The test added to
test/option.delimiter_auto.tsfailstsc --noEmit, whichnpm testruns ahead of mocha, when the type change is reverted. It also covers the runtime path: a custom score that ranks:above;flips the discovered delimiter ona:b;c\nd:e;f, and no test passed a custom score before.