diff --git a/package.json b/package.json index 5d6ee5c..79f82ae 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "main": "src/index.js", "repository": "github:multiformats/js-multibase", "scripts": { - "prepare": "aegir build", + "prepare": "aegir build --no-bundle", "lint": "aegir lint", "test": "aegir test", "test:node": "aegir test -t node", @@ -35,10 +35,10 @@ }, "dependencies": { "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.4" + "web-encoding": "^1.0.6" }, "devDependencies": { - "aegir": "^29.0.1", + "aegir": "^30.3.0", "benchmark": "^2.1.4" }, "engines": { diff --git a/src/index.js b/src/index.js index 310e597..df66bad 100644 --- a/src/index.js +++ b/src/index.js @@ -10,6 +10,7 @@ const { encodeText, decodeText, concat } = require('./util') /** @typedef {import('./base')} Base */ /** @typedef {import("./types").BaseNameOrCode} BaseNameOrCode */ /** @typedef {import("./types").BaseCode} BaseCode */ +/** @typedef {import("./types").BaseName} BaseName */ /** * Create a new Uint8Array with the multibase varint+code. @@ -113,10 +114,10 @@ function validEncode (name, buf) { * @throws {Error} Will throw if the encoding is not supported */ function encoding (nameOrCode) { - if (constants.names[nameOrCode]) { - return constants.names[nameOrCode] - } else if (constants.codes[nameOrCode]) { - return constants.codes[nameOrCode] + if (constants.names[/** @type {BaseName} */(nameOrCode)]) { + return constants.names[/** @type {BaseName} */(nameOrCode)] + } else if (constants.codes[/** @type {BaseCode} */(nameOrCode)]) { + return constants.codes[/** @type {BaseCode} */(nameOrCode)] } else { throw new Error(`Unsupported encoding: ${nameOrCode}`) } diff --git a/src/rfc4648.js b/src/rfc4648.js index 89a1aa2..c911cc1 100644 --- a/src/rfc4648.js +++ b/src/rfc4648.js @@ -10,6 +10,7 @@ */ const decode = (string, alphabet, bitsPerChar) => { // Build the character lookup table: + /** @type {Record} */ const codes = {} for (let i = 0; i < alphabet.length; ++i) { codes[alphabet[i]] = i diff --git a/src/types.ts b/src/types.ts index 84438f8..e85a720 100644 --- a/src/types.ts +++ b/src/types.ts @@ -24,7 +24,7 @@ export type BaseCode = | 'm' | 'M' | 'u' - | 'U'; + | 'U' /** * - Names of the supported encodings @@ -52,11 +52,11 @@ export type BaseName = | 'base64' | 'base64pad' | 'base64url' - | 'base64urlpad'; + | 'base64urlpad' -export type BaseNameOrCode = BaseCode | BaseName; -export type Codec = { - encode: (buffer: Uint8Array) => string; - decode: (hash: string) => Uint8Array; -}; -export type CodecFactory = (input: string) => Codec; +export type BaseNameOrCode = BaseCode | BaseName +export interface Codec { + encode: (buffer: Uint8Array) => string + decode: (hash: string) => Uint8Array +} +export interface CodecFactory { (input: string): Codec } diff --git a/test/multibase.spec.js b/test/multibase.spec.js index 9d80cd9..31257f9 100644 --- a/test/multibase.spec.js +++ b/test/multibase.spec.js @@ -6,6 +6,7 @@ const { encodeText, decodeText } = require('../src/util') const multibase = require('../src') const constants = require('../src/constants.js') +/** @type {Array<[BaseName, string, string]>} */ const unsupportedBases = [] /** @@ -88,6 +89,10 @@ const supportedBases = [ ['base64urlpad', '÷ïÿ🥰÷ïÿ😎🥶🤯', 'Uw7fDr8O_8J-lsMO3w6_Dv_CfmI7wn6W28J-krw=='] ] +/** + * @param {string} label + * @param {(encodeText:(text: string) => Uint8Array) => void} def + */ const they = (label, def) => { it(`${label} (Uint8Array)`, def.bind(null, encodeText)) }