diff --git a/package.json b/package.json index b2a56b4..5c2273c 100644 --- a/package.json +++ b/package.json @@ -44,19 +44,19 @@ "lint:fix": "eslint --fix", "test": "npm run test:unit && npm run test:typescript", "test:unit": "c8 --100 node --test", - "test:typescript": "tsd" + "test:typescript": "tstyche" }, "devDependencies": { - "@types/node": "^25.0.3", + "@types/node": "^25.6.0", "beautify-benchmark": "^0.2.4", "benchmark": "^2.1.4", "c8": "^11.0.0", "eslint": "^9.17.0", "neostandard": "^0.13.0", - "tsd": "^0.33.0" + "tstyche": "^7.0.0" }, "keywords": [ "csrf", "tokens" ] -} +} \ No newline at end of file diff --git a/types/index.test-d.ts b/types/index.test-d.ts deleted file mode 100644 index b64f029..0000000 --- a/types/index.test-d.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* eslint-disable no-new -- Testing constructor types, so no need to assign */ -import { expectError, expectType } from 'tsd' -import { Tokens } from '..' - -Tokens() -new Tokens() -Tokens({}) -new Tokens({}) -Tokens({ algorithm: 'sha1' }) -Tokens({ algorithm: 'sha256' }) -Tokens({ saltLength: 10 }) -Tokens({ secretLength: 10 }) -Tokens({ userInfo: true }) -Tokens({ validity: 10000 }) -Tokens({ hmacKey: 'foo' }) -new Tokens({ saltLength: 10 }) -new Tokens({ secretLength: 10 }) -new Tokens({ userInfo: true }) -new Tokens({ validity: 10000 }) - -expectError(Tokens('secret')) -expectError(new Tokens('secret')) - -expectError(new Tokens({}).create('secret', 'userInfo')) -expectError(new Tokens({ userInfo: false }).create('secret', 'userInfo')) -expectError(new Tokens({ userInfo: true }).create('secret')) - -expectError(new Tokens({}).verify('secret', 'token', 'userinfo')) -expectError(new Tokens({ userInfo: false }).verify('secret', 'token', 'userInfo')) -expectError(new Tokens({ userInfo: true }).verify('secret', 'token')) - -expectError(new Tokens({ hmacKey: 123 })) - -expectType>(Tokens().secret()) -expectType>(new Tokens().secret()) - -expectType(Tokens().secret((err, secret) => { - expectType(err) - expectType(secret) -})) -expectType(new Tokens().secret((err, secret) => { - expectType(err) - expectType(secret) -})) - -expectType(Tokens().secretSync()) -expectType(new Tokens().secretSync()) diff --git a/types/index.tst.ts b/types/index.tst.ts new file mode 100644 index 0000000..b942e3b --- /dev/null +++ b/types/index.tst.ts @@ -0,0 +1,53 @@ +/* eslint-disable no-new -- Testing constructor types, so no need to assign */ +/// +import { expect } from 'tstyche' +import { Tokens } from '..' + +Tokens() +new Tokens() +Tokens({}) +new Tokens({}) +Tokens({ algorithm: 'sha1' }) +Tokens({ algorithm: 'sha256' }) +Tokens({ saltLength: 10 }) +Tokens({ secretLength: 10 }) +Tokens({ userInfo: true }) +Tokens({ validity: 10000 }) +Tokens({ hmacKey: 'foo' }) +new Tokens({ saltLength: 10 }) +new Tokens({ secretLength: 10 }) +new Tokens({ userInfo: true }) +new Tokens({ validity: 10000 }) + +expect(Tokens).type.not.toBeCallableWith('secret') +expect(Tokens).type.not.toBeConstructableWith('secret') + +expect(new Tokens({}).create).type.not.toBeCallableWith('secret', 'userInfo') +expect(new Tokens({ userInfo: false }).create).type.not.toBeCallableWith('secret', 'userInfo') +expect(new Tokens({ userInfo: true }).create).type.not.toBeCallableWith('secret') + +expect(new Tokens({}).verify).type.not.toBeCallableWith('secret', 'token', 'userinfo') +expect(new Tokens({ userInfo: false }).verify).type.not.toBeCallableWith('secret', 'token', 'userInfo') +expect(new Tokens({ userInfo: true }).verify).type.not.toBeCallableWith('secret', 'token') + +expect(Tokens).type.not.toBeConstructableWith({ hmacKey: 123 }) + +expect(Tokens().secret()).type.toBe>() +expect(new Tokens().secret()).type.toBe>() + +expect( + Tokens().secret((err, secret) => { + expect(err).type.toBe() + expect(secret).type.toBe() + }) +).type.toBe() + +expect( + new Tokens().secret((err, secret) => { + expect(err).type.toBe() + expect(secret).type.toBe() + }) +).type.toBe() + +expect(Tokens().secretSync()).type.toBe() +expect(new Tokens().secretSync()).type.toBe()