diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b96c257..ee40065 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,6 +47,12 @@ jobs: with: useLockFile: false + - name: 💪 Generate Types + run: + npx -p typescript tsc --declaration --emitDeclarationOnly --allowJs + --checkJs --downlevelIteration --moduleResolution nodenext --target + es2022 --outDir . index.js + - name: 🚀 Release uses: cycjimmy/semantic-release-action@v3.2.0 with: diff --git a/.gitignore b/.gitignore index 3c3629e..8936838 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ node_modules +# This is generated during release +index.d.ts diff --git a/index.js b/index.js index b5cff91..dde3722 100644 --- a/index.js +++ b/index.js @@ -2,6 +2,13 @@ * This was copy/paste/modified/tested from https://npm.im/notp (MIT) */ import * as crypto from 'crypto' +/** + * @typedef {import('buffer').Buffer} Buffer + */ + +/** + * @type {{ encode: (data: string | Buffer) => string, decode: (data: string) => Buffer }} + */ import * as base32 from 'thirty-two' // SHA1 is not secure, but in the context of TOTPs, it's unrealistic to expect diff --git a/package-lock.json b/package-lock.json index 75590fa..abffdb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,29 @@ { "name": "@epic-web/totp", - "version": "1.0.0", + "version": "0.0.0-semantically-released", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@epic-web/totp", - "version": "1.0.0", + "version": "0.0.0-semantically-released", "license": "MIT", "dependencies": { "thirty-two": "^1.0.2" }, + "devDependencies": { + "@types/node": "^20.4.5" + }, "engines": { - "node": "20" + "node": ">=18" } }, + "node_modules/@types/node": { + "version": "20.4.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", + "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", + "dev": true + }, "node_modules/thirty-two": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", @@ -25,6 +34,12 @@ } }, "dependencies": { + "@types/node": { + "version": "20.4.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", + "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==", + "dev": true + }, "thirty-two": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", diff --git a/package.json b/package.json index b9bf0b7..b669dbe 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,10 @@ "exports": { ".": "./index.js" }, + "files": [ + "index.js", + "index.d.ts" + ], "publishConfig": { "access": "public" }, @@ -14,7 +18,18 @@ "test": "node --test --test-reporter spec --experimental-test-coverage *.test.js", "test:watch": "node --test --test-reporter spec --watch *.test.js" }, - "keywords": [], + "keywords": [ + "totp", + "2fa", + "two-factor", + "authentication", + "google authenticator", + "1password", + "authy", + "otp", + "time-based one time password", + "one time password" + ], "author": "Kent C. Dodds (https://kentcdodds.com/)", "license": "MIT", "dependencies": { @@ -38,5 +53,8 @@ } } ] + }, + "devDependencies": { + "@types/node": "^20.4.5" } }