Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ node_modules
package-lock.json
yarn.lock
.vscode
.tmp-compiled-docs
tsconfig-doc-check.aegir.json
108 changes: 61 additions & 47 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,132 +48,155 @@
"exports": {
".": {
"types": "./dist/src/index.d.ts",
"import": "./dist/src/index.js"
"import": "./dist/src/index.js",
"module-sync": "./dist/src/index.js"
},
"./bases/base10": {
"types": "./dist/src/bases/base10.d.ts",
"import": "./dist/src/bases/base10.js"
"import": "./dist/src/bases/base10.js",
"module-sync": "./dist/src/bases/base10.js"
},
"./bases/base16": {
"types": "./dist/src/bases/base16.d.ts",
"import": "./dist/src/bases/base16.js"
"import": "./dist/src/bases/base16.js",
"module-sync": "./dist/src/bases/base16.js"
},
"./bases/base2": {
"types": "./dist/src/bases/base2.d.ts",
"import": "./dist/src/bases/base2.js"
"import": "./dist/src/bases/base2.js",
"module-sync": "./dist/src/bases/base2.js"
},
"./bases/base256emoji": {
"types": "./dist/src/bases/base256emoji.d.ts",
"import": "./dist/src/bases/base256emoji.js"
"import": "./dist/src/bases/base256emoji.js",
"module-sync": "./dist/src/bases/base256emoji.js"
},
"./bases/base32": {
"types": "./dist/src/bases/base32.d.ts",
"import": "./dist/src/bases/base32.js"
"import": "./dist/src/bases/base32.js",
"module-sync": "./dist/src/bases/base32.js"
},
"./bases/base36": {
"types": "./dist/src/bases/base36.d.ts",
"import": "./dist/src/bases/base36.js"
"import": "./dist/src/bases/base36.js",
"module-sync": "./dist/src/bases/base36.js"
},
"./bases/base58": {
"types": "./dist/src/bases/base58.d.ts",
"import": "./dist/src/bases/base58.js"
"import": "./dist/src/bases/base58.js",
"module-sync": "./dist/src/bases/base58.js"
},
"./bases/base64": {
"types": "./dist/src/bases/base64.d.ts",
"import": "./dist/src/bases/base64.js"
"import": "./dist/src/bases/base64.js",
"module-sync": "./dist/src/bases/base64.js"
},
"./bases/base8": {
"types": "./dist/src/bases/base8.d.ts",
"import": "./dist/src/bases/base8.js"
"import": "./dist/src/bases/base8.js",
"module-sync": "./dist/src/bases/base8.js"
},
"./bases/identity": {
"types": "./dist/src/bases/identity.d.ts",
"import": "./dist/src/bases/identity.js"
"import": "./dist/src/bases/identity.js",
"module-sync": "./dist/src/bases/identity.js"
},
"./bases/interface": {
"types": "./dist/src/bases/interface.d.ts",
"import": "./dist/src/bases/interface.js"
"import": "./dist/src/bases/interface.js",
"module-sync": "./dist/src/bases/interface.js"
},
"./basics": {
"types": "./dist/src/basics.d.ts",
"import": "./dist/src/basics.js"
"import": "./dist/src/basics.js",
"module-sync": "./dist/src/basics.js"
},
"./block": {
"types": "./dist/src/block.d.ts",
"import": "./dist/src/block.js"
"import": "./dist/src/block.js",
"module-sync": "./dist/src/block.js"
},
"./block/interface": {
"types": "./dist/src/block/interface.d.ts",
"import": "./dist/src/block/interface.js"
"import": "./dist/src/block/interface.js",
"module-sync": "./dist/src/block/interface.js"
},
"./bytes": {
"types": "./dist/src/bytes.d.ts",
"import": "./dist/src/bytes.js"
"import": "./dist/src/bytes.js",
"module-sync": "./dist/src/bytes.js"
},
"./cid": {
"types": "./dist/src/cid.d.ts",
"import": "./dist/src/cid.js"
"import": "./dist/src/cid.js",
"module-sync": "./dist/src/cid.js"
},
"./codecs/interface": {
"types": "./dist/src/codecs/interface.d.ts",
"import": "./dist/src/codecs/interface.js"
"import": "./dist/src/codecs/interface.js",
"module-sync": "./dist/src/codecs/interface.js"
},
"./codecs/json": {
"types": "./dist/src/codecs/json.d.ts",
"import": "./dist/src/codecs/json.js"
"import": "./dist/src/codecs/json.js",
"module-sync": "./dist/src/codecs/json.js"
},
"./codecs/raw": {
"types": "./dist/src/codecs/raw.d.ts",
"import": "./dist/src/codecs/raw.js"
"import": "./dist/src/codecs/raw.js",
"module-sync": "./dist/src/codecs/raw.js"
},
"./hashes/digest": {
"types": "./dist/src/hashes/digest.d.ts",
"import": "./dist/src/hashes/digest.js"
"import": "./dist/src/hashes/digest.js",
"module-sync": "./dist/src/hashes/digest.js"
},
"./hashes/hasher": {
"types": "./dist/src/hashes/hasher.d.ts",
"import": "./dist/src/hashes/hasher.js"
"import": "./dist/src/hashes/hasher.js",
"module-sync": "./dist/src/hashes/hasher.js"
},
"./hashes/identity": {
"types": "./dist/src/hashes/identity.d.ts",
"import": "./dist/src/hashes/identity.js"
"import": "./dist/src/hashes/identity.js",
"module-sync": "./dist/src/hashes/identity.js"
},
"./hashes/interface": {
"types": "./dist/src/hashes/interface.d.ts",
"import": "./dist/src/hashes/interface.js"
"import": "./dist/src/hashes/interface.js",
"module-sync": "./dist/src/hashes/interface.js"
},
"./hashes/sha1": {
"types": "./dist/types/src/hashes/sha1.d.ts",
"browser": "./dist/src/hashes/sha1-browser.js",
"import": "./dist/src/hashes/sha1.js"
"import": "./dist/src/hashes/sha1.js",
"module-sync": "./dist/src/hashes/sha1.js"
},
"./hashes/sha2": {
"types": "./dist/src/hashes/sha2.d.ts",
"browser": "./dist/src/hashes/sha2-browser.js",
"import": "./dist/src/hashes/sha2.js"
"import": "./dist/src/hashes/sha2.js",
"module-sync": "./dist/src/hashes/sha2.js"
},
"./interface": {
"types": "./dist/src/interface.d.ts",
"import": "./dist/src/interface.js"
"import": "./dist/src/interface.js",
"module-sync": "./dist/src/interface.js"
},
"./link": {
"types": "./dist/src/link.d.ts",
"import": "./dist/src/link.js"
"import": "./dist/src/link.js",
"module-sync": "./dist/src/link.js"
},
"./link/interface": {
"types": "./dist/src/link/interface.d.ts",
"import": "./dist/src/link/interface.js"
"import": "./dist/src/link/interface.js",
"module-sync": "./dist/src/link/interface.js"
},
"./traversal": {
"types": "./dist/src/traversal.d.ts",
"import": "./dist/src/traversal.js"
}
},
"eslintConfig": {
"extends": "ipfs",
"parserOptions": {
"project": true,
"sourceType": "module"
"import": "./dist/src/traversal.js",
"module-sync": "./dist/src/traversal.js"
}
},
"release": {
Expand Down Expand Up @@ -286,20 +309,11 @@
"devDependencies": {
"@stablelib/sha256": "^2.0.0",
"@stablelib/sha512": "^2.0.0",
"@types/node": "^25.0.0",
"aegir": "^47.0.7",
"aegir": "^48.0.1",
"buffer": "^6.0.3",
"cids": "^1.1.9",
"crypto-hash": "^4.0.0"
},
"aegir": {
"test": {
"target": [
"node",
"browser"
]
}
},
"browser": {
"./hashes/sha1": "./dist/src/hashes/sha1-browser.js",
"./dist/src/hashes/sha1.js": "./dist/src/hashes/sha1-browser.js",
Expand Down
18 changes: 9 additions & 9 deletions src/bases/base.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { coerce } from '../bytes.js'
import { coerce } from '../bytes.ts'
import basex from '../vendor/base-x.js'
import type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.js'
import type { BaseCodec, BaseDecoder, BaseEncoder, CombobaseDecoder, Multibase, MultibaseCodec, MultibaseDecoder, MultibaseEncoder, UnibaseDecoder } from './interface.ts'

interface EncodeFn { (bytes: Uint8Array): string }
interface DecodeFn { (text: string): Uint8Array }
interface DecodeFn { (text: string): Uint8Array<ArrayBuffer> }

/**
* Class represents both BaseEncoder and MultibaseEncoder meaning it
Expand Down Expand Up @@ -53,7 +53,7 @@ class Decoder<Base extends string, Prefix extends string> implements MultibaseDe
this.baseDecode = baseDecode
}

decode (text: string): Uint8Array {
decode (text: string): Uint8Array<ArrayBuffer> {
if (typeof text === 'string') {
if (text.codePointAt(0) !== this.prefixCodePoint) {
throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)
Expand Down Expand Up @@ -82,7 +82,7 @@ class ComposedDecoder<Prefix extends string> implements MultibaseDecoder<Prefix>
return or(this, decoder)
}

decode (input: string): Uint8Array {
decode (input: string): Uint8Array<ArrayBuffer> {
const prefix = input[0] as Prefix
const decoder = this.decoders[prefix]
if (decoder != null) {
Expand Down Expand Up @@ -121,7 +121,7 @@ export class Codec<Base extends string, Prefix extends string> implements Multib
return this.encoder.encode(input)
}

decode (input: string): Uint8Array {
decode (input: string): Uint8Array<ArrayBuffer> {
return this.decoder.decode(input)
}
}
Expand All @@ -136,11 +136,11 @@ export function baseX <Base extends string, Prefix extends string> ({ name, pref
prefix,
name,
encode,
decode: (text: string): Uint8Array => coerce(decode(text))
decode: (text: string): Uint8Array<ArrayBuffer> => coerce(decode(text))
})
}

function decode (string: string, alphabetIdx: Record<string, number>, bitsPerChar: number, name: string): Uint8Array {
function decode (string: string, alphabetIdx: Record<string, number>, bitsPerChar: number, name: string): Uint8Array<ArrayBuffer> {
// Count the padding bytes:
let end = string.length
while (string[end - 1] === '=') {
Expand Down Expand Up @@ -234,7 +234,7 @@ export function rfc4648 <Base extends string, Prefix extends string> ({ name, pr
encode (input: Uint8Array): string {
return encode(input, alphabet, bitsPerChar)
},
decode (input: string): Uint8Array {
decode (input: string): Uint8Array<ArrayBuffer> {
return decode(input, alphabetIdx, bitsPerChar, name)
}
})
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base10.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { baseX } from './base.js'
import { baseX } from './base.ts'

export const base10 = baseX({
prefix: '9',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base16.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { rfc4648 } from './base.js'
import { rfc4648 } from './base.ts'

export const base16 = rfc4648({
prefix: 'f',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base2.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { rfc4648 } from './base.js'
import { rfc4648 } from './base.ts'

export const base2 = rfc4648({
prefix: '0',
Expand Down
4 changes: 2 additions & 2 deletions src/bases/base256emoji.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { from } from './base.js'
import { from } from './base.ts'

const alphabet = Array.from('🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂')
const alphabetBytesToChars: string[] = (alphabet.reduce<string[]>((p, c, i) => { p[i] = c; return p }, ([])))
Expand All @@ -18,7 +18,7 @@ function encode (data: Uint8Array): string {
}, '')
}

function decode (str: string): Uint8Array {
function decode (str: string): Uint8Array<ArrayBuffer> {
const byts = []
for (const char of str) {
const codePoint = char.codePointAt(0)
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base32.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { rfc4648 } from './base.js'
import { rfc4648 } from './base.ts'

export const base32 = rfc4648({
prefix: 'b',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base36.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { baseX } from './base.js'
import { baseX } from './base.ts'

export const base36 = baseX({
prefix: 'k',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base58.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { baseX } from './base.js'
import { baseX } from './base.ts'

export const base58btc = baseX({
name: 'base58btc',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base64.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { rfc4648 } from './base.js'
import { rfc4648 } from './base.ts'

export const base64 = rfc4648({
prefix: 'm',
Expand Down
2 changes: 1 addition & 1 deletion src/bases/base8.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { rfc4648 } from './base.js'
import { rfc4648 } from './base.ts'

export const base8 = rfc4648({
prefix: '7',
Expand Down
4 changes: 2 additions & 2 deletions src/bases/identity.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { fromString, toString } from '../bytes.js'
import { from } from './base.js'
import { fromString, toString } from '../bytes.ts'
import { from } from './base.ts'

export const identity = from({
prefix: '\x00',
Expand Down
4 changes: 2 additions & 2 deletions src/bases/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export interface BaseDecoder {
* Decodes **plain** (and not a multibase) string. Unlike
* decode
*/
baseDecode(text: string): Uint8Array
baseDecode(text: string): Uint8Array<ArrayBuffer>
}

/**
Expand Down Expand Up @@ -70,7 +70,7 @@ export interface MultibaseDecoder<Prefix extends string> {
* Decodes **multibase** string (which must have a multibase prefix added).
* If prefix does not match
*/
decode(multibase: Multibase<Prefix>): Uint8Array
decode(multibase: Multibase<Prefix>): Uint8Array<ArrayBuffer>
}

/**
Expand Down
Loading
Loading