ranisalt / node-argon2

Node.js bindings for Argon2 hashing algorithm
https://www.npmjs.com/package/argon2
MIT License
1.89k stars 94 forks source link

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

Closed Bluzzi closed 3 months ago

Bluzzi commented 7 months ago

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

Before creating an issue, please be sure to:

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 commented 7 months ago

There are other differences between the two versions:

// 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 commented 7 months ago

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

ranisalt commented 7 months ago

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 commented 6 months ago

I just republished and Typescript is still generating incorrect types.

erichkuba commented 5 months ago

This remains an issue and is blocking us from upgrading from 0.31.2 to the latest version.

Tested with 0.40.3

Is there anything we can do to help with this?

ranisalt commented 3 months ago

v0.41.1 was published with proper types! The culprit was missing install before generating the types, which was causing @types/node to be missing - Typescript does not know what a Buffer is without it, so it output any

image