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

stringify header and cast options: "no overload matches this call" #391

Closed
theetrain opened this issue Jun 15, 2023 · 2 comments
Closed

Comments

@theetrain
Copy link

Describe the bug

csv-stringify@6.4.0

I'm using stringify to cast output values within a file stream, but I see a type warning:

No overload matches this call.
The last overload gave the following error.
Argument of type { header: boolean; cast: { boolean: (value: boolean, ctx: CastingContext) => string | boolean; }; } is not assignable to parameter of type Input.
Object literal may only specify known properties, and header does not exist in type any[].

My code runs fine. This warning gives the impression that header and cast are mutually exclusive.

When I remove header, I see a different warning:

No overload matches this call.
The last overload gave the following error.
Argument of type { cast: { boolean: (value: boolean, ctx: CastingContext) => string | boolean; }; } is not assignable to parameter of type Input.
Object literal may only specify known properties, and cast does not exist in type any[].

To Reproduce

Here's my code:

fs.createReadStream(inFile)
  // ...
  .pipe(stringify({
    header: isOutFileNew,
//  ^^^^^ warning
    cast: {
      boolean: (value, ctx) => {
        if (ctx.header) return value
        if (ctx.column === 'Removed' && value === false) {
          return '0'
        }
        return String(value)
      }
    }
  }))

Additional context

My guess is the overloaded functions aren't being determined in the correct oder, where Input is being inferred instead of Options:

declare function stringify(options: Options, callback?: Callback): Stringifier
declare function stringify(input: Input, callback?: Callback): Stringifier

@wdavidw
Copy link
Member

wdavidw commented Jun 15, 2023

Thank you for reporting your issue. TS is not my thing, if anyone interested into fixing this issue, please reproduce first the warning in a test before fixing.

@wdavidw
Copy link
Member

wdavidw commented Aug 25, 2023

I reproduce your issue. It was related to an invalid return type, if (ctx.header) return value shall be if (ctx.header) return String(value).

@wdavidw wdavidw closed this as completed Aug 25, 2023
salceson added a commit to evidenceprime/node-csv that referenced this issue Sep 22, 2023
* chore: latest dependencies

* fix: uncaught errors with large stream chunks (fix adaltas#386)

* chore(release): publish

 - csv-demo-browser@0.1.6
 - csv-demo-cjs@0.2.4
 - csv-demo-eslint@0.1.10
 - csv-demo-esm@0.0.18
 - csv-issues-cjs@0.1.5
 - csv-issues-esm@0.0.9
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.4
 - csv-demo-ts-module-node16@0.2.4
 - csv-demo-webpack-ts@0.1.6
 - csv-demo-webpack@0.1.8
 - csv-generate@4.2.3
 - csv-parse@5.3.7
 - csv-stringify@6.3.1
 - csv@6.2.9
 - stream-transform@3.2.3

* test(csv-stringify): fix legacy

* chore(release): publish

 - csv-demo-browser@0.1.7
 - csv-demo-cjs@0.2.5
 - csv-demo-eslint@0.1.11
 - csv-demo-esm@0.0.19
 - csv-issues-cjs@0.1.6
 - csv-issues-esm@0.0.10
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.5
 - csv-demo-ts-module-node16@0.2.5
 - csv-demo-webpack-ts@0.1.7
 - csv-demo-webpack@0.1.9
 - csv-generate@4.2.4
 - csv-parse@5.3.8
 - csv-stringify@6.3.2
 - csv@6.2.10
 - stream-transform@3.2.4

* build: remove trailing slash in home url

* chore: latest dependencies

* fix(csv): fixed CJS types under modern `modernResolution` options (adaltas#388)

* fix(csv): remove ts files in cjs dist

* chore(release): publish

 - csv-demo-browser@0.1.8
 - csv-demo-cjs@0.2.6
 - csv-demo-eslint@0.1.12
 - csv-demo-esm@0.0.20
 - csv-issues-cjs@0.1.7
 - csv-issues-esm@0.0.11
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.6
 - csv-demo-ts-module-node16@0.2.6
 - csv-demo-webpack-ts@0.1.8
 - csv-demo-webpack@0.1.10
 - csv-generate@4.2.5
 - csv-parse@5.3.9
 - csv-stringify@6.3.3
 - csv@6.2.11
 - stream-transform@3.2.5

* docs: minor upercase modification

* chore: latest dependencies

* chore(release): publish

 - csv-demo-browser@0.1.9
 - csv-demo-cjs@0.2.7
 - csv-demo-eslint@0.1.13
 - csv-demo-esm@0.0.21
 - csv-issues-cjs@0.1.8
 - csv-issues-esm@0.0.12
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.7
 - csv-demo-ts-module-node16@0.2.7
 - csv-demo-webpack-ts@0.1.9
 - csv-demo-webpack@0.1.11
 - csv-generate@4.2.6
 - csv-parse@5.3.10
 - csv-stringify@6.3.4
 - csv@6.2.12
 - stream-transform@3.2.6

* feat: add unicode chars to formula escape (adaltas#387)

* fix(csv-stringify): use switch in formula escaping

* fix(csv-stringify): add unicode character equivalents in formula sanitization

* chore: update tests

* docs(csv-stringify): escape formulas references

* chore(release): publish

 - csv-demo-browser@0.1.10
 - csv-demo-cjs@0.2.8
 - csv-demo-eslint@0.1.14
 - csv-demo-esm@0.0.22
 - csv-issues-cjs@0.1.9
 - csv-issues-esm@0.0.13
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.8
 - csv-demo-ts-module-node16@0.2.8
 - csv-demo-webpack-ts@0.1.10
 - csv-demo-webpack@0.1.12
 - csv-stringify@6.4.0
 - csv@6.3.0

* feat(csv-parse): add `columns` property in `Info` object type (adaltas#390)

* fix(ts): Add `columns` property in `Info` object type

* Add disabled options to columns type

* build(csv-parse): build and write test after info ts definition

* chore(release): publish

 - csv-demo-browser@0.1.11
 - csv-demo-cjs@0.2.9
 - csv-demo-esm@0.0.23
 - csv-issues-cjs@0.1.10
 - csv-issues-esm@0.0.14
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.9
 - csv-demo-ts-module-node16@0.2.9
 - csv-demo-webpack-ts@0.1.11
 - csv-demo-webpack@0.1.13
 - csv-parse@5.4.0
 - csv@6.3.1

* docs: update build badge urls

* docs(csv-generate): comment indentation in samples

* refactor(csv-issues-cjs): code format

* refactor(csv-issues-cjs): remove unused arguments

* test(csv-issues-cjs): fix stdout maxBuffer length exceeded

* test(csv-issues-esm): use spawn instead of exec

* fix: commonjs types, run tsc and lint to validate changes (adaltas#397)

* fix: types weren't working for commonjs. Run tsc and lint to validate changes

* chore: needs to work on linux and BSD

* chore: latest dependencies

* chore(release): publish

 - csv-demo-browser@0.1.12
 - csv-demo-cjs@0.2.10
 - csv-demo-eslint@0.1.15
 - csv-demo-esm@0.0.24
 - csv-issues-cjs@0.1.11
 - csv-issues-esm@0.0.15
 - csv-demo-ts-moduleresolution-node16-cjs@0.2.10
 - csv-demo-ts-module-node16@0.2.10
 - csv-demo-webpack-ts@0.1.12
 - csv-demo-webpack@0.1.14
 - csv-generate@4.2.7
 - csv-parse@5.4.1
 - csv-stringify@6.4.1
 - csv@6.3.2
 - stream-transform@3.2.7

* feat(csv-issues-cjs): 399 issue

* fix(csv-demo-ts-cjs-node16): upgrade module definition after latest typescript

* feat(csv-parse): new comment_no_infix option (fix adaltas#325)

* test(csv-issues-esm): reproduce issue adaltas#391

* refactor(csv-stringify): rename variable in sample

* test(csv-issues-cjs): reproduce issue 327

* chore(release): publish

 - csv-demo-browser@0.1.13
 - csv-demo-cjs@0.2.11
 - csv-demo-eslint@0.1.16
 - csv-demo-esm@0.0.25
 - csv-issues-cjs@0.2.0
 - csv-issues-esm@0.0.16
 - csv-demo-ts-cjs-node16@0.2.11
 - csv-demo-ts-module-node16@0.2.11
 - csv-demo-webpack-ts@0.1.13
 - csv-demo-webpack@0.1.15
 - csv-generate@4.2.8
 - csv-parse@5.5.0
 - csv-stringify@6.4.2
 - csv@6.3.3
 - stream-transform@3.2.8

* docs(csv-parse): comment_no_infix sample

---------

Co-authored-by: David Worms <david@adaltas.com>
Co-authored-by: Petter <petter@petterhaggholm.net>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Tom Emelko <tom.emelko@gmail.com>
Co-authored-by: Elia Maino <eliamaino@gmail.com>
Co-authored-by: David Tanner <darthtanner@gmail.com>
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

No branches or pull requests

2 participants