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

Type regression between v0.31.2 and v0.40.1 #403

Open
3 tasks done
Bluzzi opened this issue Apr 27, 2024 · 4 comments
Open
3 tasks done

Type regression between v0.31.2 and v0.40.1 #403

Bluzzi opened this issue Apr 27, 2024 · 4 comments

Comments

@Bluzzi
Copy link

Bluzzi commented Apr 27, 2024

Welcome to the issues section if it's your first time!

Before creating an issue, please be sure to:

  • Checkout to the latest version, including submodules
  • Try to find an isolated way to reproduce the behavior
  • Fill in all the blanks in the most specific way you can

Steps to reproduce

import type { Options } from "argon2";

export const options: Options = {
  hashLength: 32,
  saltLength: 16, // <--- Object literal may only specify known properties, and 'saltLength' does not exist in type 'Options'.ts(2353)
  timeCost: 3,
  parallelism: 2
};

Expected behaviour

The “saltLength” field must be present in the Options type, as it was in version 0.31.2 (see the argon2.d.ts file).

Actual behaviour

The “saltLength” field is not present in the Options type, see the argon2.d.cts file in version 0.40.1.

@Bluzzi
Copy link
Author

Bluzzi commented Apr 27, 2024

There are other differences between the two versions:

  • saltLength no longer exists (original issue)
  • the type of salt is any | undefined instead of Buffer | undefined
  • the type of associatedData is any | undefined instead of Buffer | undefined
  • the type of secret is any | undefined instead of Buffer | undefined
  • raw is no longer present - but I see that it is added dynamically when typing the function hash
// v0.40.1
export type Options = {
    hashLength?: number | undefined;
    timeCost?: number | undefined;
    memoryCost?: number | undefined;
    parallelism?: number | undefined;
    type?: 0 | 2 | 1 | undefined;
    version?: number | undefined;
    salt?: any;
    associatedData?: any;
    secret?: any;
};

// v0.31.2
export interface Options {
  hashLength?: number;
  timeCost?: number;
  memoryCost?: number;
  parallelism?: number;
  type?: typeof argon2d | typeof argon2i | typeof argon2id;
  version?: number;
  salt?: Buffer;
  saltLength?: number;
  raw?: boolean;
  secret?: Buffer;
  associatedData?: Buffer;
}

@Jendorski
Copy link

No one has said anything?. They just changed the parameters without changing the doc?

@ranisalt
Copy link
Owner

ranisalt commented May 1, 2024

No one has said anything?. They just changed the parameters without changing the doc?

The parameter was not changed, there is a bug in Typescript when generating object types from JSDoc that I still didn't figure out how to fix, since it works as expected on my machine, in an isolated container

@ranisalt
Copy link
Owner

I just republished and Typescript is still generating incorrect types.

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

3 participants