Socket
Socket
Sign inDemoInstall

multiformats

Package Overview
Dependencies
Maintainers
3
Versions
153
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

multiformats - npm Package Compare versions

Comparing version 9.7.1 to 9.8.0

LICENSE

341

package.json
{
"name": "multiformats",
"version": "9.7.1",
"version": "9.8.0",
"description": "Interface for multihash, multicodec, multibase and CID",
"main": "./cjs/src/index.js",
"types": "./types/src/index.d.ts",
"scripts": {
"build": "npm run build:js && npm run build:types",
"build:js": "ipjs build --tests --main && npm run build:copy",
"build:copy": "cp -a tsconfig.json src vendor test dist/ && rm -rf dist/test/ts-use",
"build:types": "npm run build:copy && cd dist && tsc --build",
"build:vendor": "npm run build:vendor:varint && npm run build:vendor:base-x",
"build:vendor:varint": "npm_config_yes=true npx brrp -x varint > vendor/varint.js",
"build:vendor:base-x": "npm_config_yes=true npx brrp -x @multiformats/base-x > vendor/base-x.js",
"lint": "standard",
"test:cjs": "npm run build:js && mocha dist/cjs/node-test/test-*.js && npm run test:cjs:browser",
"test:esm": "npm run build:js && mocha dist/esm/node-test/test-*.js && npm run test:esm:browser",
"test:node": "c8 --check-coverage --branches 100 --functions 100 --lines 100 mocha test/test-*.js",
"test:cjs:browser": "polendina --page --worker --serviceworker --cleanup dist/cjs/browser-test/test-*.js",
"test:esm:browser": "polendina --page --worker --serviceworker --cleanup dist/esm/browser-test/test-*.js",
"test:ts": "npm run build:types && npm run test --prefix test/ts-use",
"test": "npm run lint && npm run test:node && npm run test:esm && npm run test:ts",
"test:ci": "npm run lint && npm run test:node && npm run test:esm && npm run test:cjs && npm run test:ts",
"coverage": "c8 --reporter=html mocha test/test-*.js && npm_config_yes=true npx st -d coverage -p 8080"
"author": "Mikeal Rogers <mikeal.rogers@gmail.com> (https://www.mikealrogers.com/)",
"license": "Apache-2.0 OR MIT",
"homepage": "https://github.com/multiformats/js-multiformats#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/multiformats/js-multiformats.git"
},
"c8": {
"exclude": [
"test/**",
"vendor/**"
]
"bugs": {
"url": "https://github.com/multiformats/js-multiformats/issues"
},

@@ -37,157 +20,121 @@ "keywords": [

],
"author": "Mikeal Rogers <mikeal.rogers@gmail.com> (https://www.mikealrogers.com/)",
"license": "(Apache-2.0 AND MIT)",
"engines": {
"node": ">=16.0.0",
"npm": ">=7.0.0"
},
"type": "module",
"types": "./dist/src/index.d.ts",
"typesVersions": {
"*": {
"*": [
"*",
"dist/*",
"dist/src/*",
"dist/src/*/index"
],
"src/*": [
"*",
"dist/*",
"dist/src/*",
"dist/src/*/index"
]
}
},
"files": [
"src",
"dist",
"!dist/test",
"!**/*.tsbuildinfo"
],
"exports": {
".": {
"browser": "./esm/src/index.js",
"require": "./cjs/src/index.js",
"import": "./esm/src/index.js"
"types": "./dist/src/index.d.ts",
"import": "./src/index.js"
},
"./cid": {
"browser": "./esm/src/cid.js",
"require": "./cjs/src/cid.js",
"import": "./esm/src/cid.js"
"./bases/base10": {
"types": "./src/bases/base10.d.ts",
"import": "./src/bases/base10.js"
},
"./basics": {
"browser": "./esm/src/basics.js",
"require": "./cjs/src/basics.js",
"import": "./esm/src/basics.js"
"./bases/base16": {
"types": "./src/bases/base16.d.ts",
"import": "./src/bases/base16.js"
},
"./block": {
"browser": "./esm/src/block.js",
"require": "./cjs/src/block.js",
"import": "./esm/src/block.js"
},
"./traversal": {
"browser": "./esm/src/traversal.js",
"require": "./cjs/src/traversal.js",
"import": "./esm/src/traversal.js"
},
"./bases/identity": {
"browser": "./esm/src/bases/identity.js",
"require": "./cjs/src/bases/identity.js",
"import": "./esm/src/bases/identity.js"
},
"./bases/base2": {
"browser": "./esm/src/bases/base2.js",
"require": "./cjs/src/bases/base2.js",
"import": "./esm/src/bases/base2.js"
"types": "./src/bases/base2.d.ts",
"import": "./src/bases/base2.js"
},
"./bases/base8": {
"browser": "./esm/src/bases/base8.js",
"require": "./cjs/src/bases/base8.js",
"import": "./esm/src/bases/base8.js"
"./bases/base256emoji": {
"types": "./src/bases/base256emoji.d.ts",
"import": "./src/bases/base256emoji.js"
},
"./bases/base10": {
"browser": "./esm/src/bases/base10.js",
"require": "./cjs/src/bases/base10.js",
"import": "./esm/src/bases/base10.js"
},
"./bases/base16": {
"browser": "./esm/src/bases/base16.js",
"require": "./cjs/src/bases/base16.js",
"import": "./esm/src/bases/base16.js"
},
"./bases/base32": {
"browser": "./esm/src/bases/base32.js",
"require": "./cjs/src/bases/base32.js",
"import": "./esm/src/bases/base32.js"
"types": "./src/bases/base32.d.ts",
"import": "./src/bases/base32.js"
},
"./bases/base36": {
"browser": "./esm/src/bases/base36.js",
"require": "./cjs/src/bases/base36.js",
"import": "./esm/src/bases/base36.js"
"types": "./src/bases/base36.d.ts",
"import": "./src/bases/base36.js"
},
"./bases/base58": {
"browser": "./esm/src/bases/base58.js",
"require": "./cjs/src/bases/base58.js",
"import": "./esm/src/bases/base58.js"
"types": "./src/bases/base58.d.ts",
"import": "./src/bases/base58.js"
},
"./bases/base64": {
"browser": "./esm/src/bases/base64.js",
"require": "./cjs/src/bases/base64.js",
"import": "./esm/src/bases/base64.js"
"types": "./src/bases/base64.d.ts",
"import": "./src/bases/base64.js"
},
"./bases/base256emoji": {
"browser": "./esm/src/bases/base256emoji.js",
"require": "./cjs/src/bases/base256emoji.js",
"import": "./esm/src/bases/base256emoji.js"
"./bases/base8": {
"types": "./src/bases/base8.d.ts",
"import": "./src/bases/base8.js"
},
"./hashes/hasher": {
"browser": "./esm/src/hashes/hasher.js",
"require": "./cjs/src/hashes/hasher.js",
"import": "./esm/src/hashes/hasher.js"
"./bases/identity": {
"types": "./src/bases/identity.d.ts",
"import": "./src/bases/identity.js"
},
"./basics": {
"types": "./src/basics.d.ts",
"import": "./src/basics.js"
},
"./block": {
"types": "./src/block.d.ts",
"import": "./src/block.js"
},
"./cid": {
"types": "./src/cid.d.ts",
"import": "./src/cid.js"
},
"./codecs/json": {
"types": "./src/codecs/json.d.ts",
"import": "./src/codecs/json.js"
},
"./codecs/raw": {
"types": "./src/codecs/raw.d.ts",
"import": "./src/codecs/raw.js"
},
"./hashes/digest": {
"browser": "./esm/src/hashes/digest.js",
"require": "./cjs/src/hashes/digest.js",
"import": "./esm/src/hashes/digest.js"
"types": "./src/hashes/digest.d.ts",
"import": "./src/hashes/digest.js"
},
"./hashes/sha2": {
"browser": "./esm/src/hashes/sha2-browser.js",
"require": "./cjs/src/hashes/sha2.js",
"import": "./esm/src/hashes/sha2.js"
"./hashes/hasher": {
"types": "./src/hashes/hasher.d.ts",
"import": "./src/hashes/hasher.js"
},
"./hashes/identity": {
"browser": "./esm/src/hashes/identity.js",
"require": "./cjs/src/hashes/identity.js",
"import": "./esm/src/hashes/identity.js"
"types": "./src/hashes/identity.d.ts",
"import": "./src/hashes/identity.js"
},
"./codecs/json": {
"browser": "./esm/src/codecs/json.js",
"require": "./cjs/src/codecs/json.js",
"import": "./esm/src/codecs/json.js"
"./hashes/sha2": {
"types": "./src/hashes/sha2.d.ts",
"browser": "./src/hashes/sha2-browser.js",
"import": "./src/hashes/sha2.js"
},
"./codecs/raw": {
"browser": "./esm/src/codecs/raw.js",
"require": "./cjs/src/codecs/raw.js",
"import": "./esm/src/codecs/raw.js"
"./traversal": {
"types": "./src/traversal.d.ts",
"import": "./src/traversal.js"
}
},
"devDependencies": {
"@ipld/dag-pb": "^2.1.14",
"@stablelib/sha256": "^1.0.1",
"@stablelib/sha512": "^1.0.1",
"@types/chai": "^4.3.0",
"@types/chai-as-promised": "^7.1.4",
"@types/mocha": "^9.0.0",
"@types/node": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^5.6.0",
"@typescript-eslint/parser": "^5.6.0",
"buffer": "^6.0.3",
"c8": "^7.10.0",
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"cids": "^1.1.9",
"ipjs": "^5.2.0",
"mocha": "^10.0.0",
"polendina": "^3.0.0",
"standard": "^17.0.0",
"typescript": "^4.5.4"
},
"standard": {
"ignore": [
"dist",
"vendor"
]
},
"directories": {
"test": "test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/multiformats/js-multiformats.git"
},
"bugs": {
"url": "https://github.com/multiformats/js-multiformats/issues"
},
"homepage": "https://github.com/multiformats/js-multiformats#readme",
"typesVersions": {
"*": {
"*": [
"types/src/*"
],
"types/*": [
"types/*"
]
"eslintConfig": {
"extends": "ipfs",
"parserOptions": {
"sourceType": "module"
}

@@ -197,3 +144,3 @@ },

"branches": [
"master"
"esm-migration"
],

@@ -223,11 +170,11 @@ "plugins": [

{
"type": "chore",
"type": "docs",
"release": "patch"
},
{
"type": "docs",
"type": "test",
"release": "patch"
},
{
"type": "test",
"type": "deps",
"release": "patch"

@@ -262,5 +209,9 @@ },

"type": "docs",
"section": "Trivial Changes"
"section": "Documentation"
},
{
"type": "deps",
"section": "Dependencies"
},
{
"type": "test",

@@ -274,8 +225,3 @@ "section": "Tests"

"@semantic-release/changelog",
[
"@semantic-release/npm",
{
"pkgRoot": "dist"
}
],
"@semantic-release/npm",
"@semantic-release/github",

@@ -285,27 +231,40 @@ "@semantic-release/git"

},
"browser": {
".": "./cjs/src/index.js",
"./cid": "./cjs/src/cid.js",
"./basics": "./cjs/src/basics.js",
"./block": "./cjs/src/block.js",
"./traversal": "./cjs/src/traversal.js",
"./bases/identity": "./cjs/src/bases/identity.js",
"./bases/base2": "./cjs/src/bases/base2.js",
"./bases/base8": "./cjs/src/bases/base8.js",
"./bases/base10": "./cjs/src/bases/base10.js",
"./bases/base16": "./cjs/src/bases/base16.js",
"./bases/base32": "./cjs/src/bases/base32.js",
"./bases/base36": "./cjs/src/bases/base36.js",
"./bases/base58": "./cjs/src/bases/base58.js",
"./bases/base64": "./cjs/src/bases/base64.js",
"./bases/base256emoji": "./cjs/src/bases/base256emoji.js",
"./hashes/hasher": "./cjs/src/hashes/hasher.js",
"./hashes/digest": "./cjs/src/hashes/digest.js",
"./hashes/sha2": "./cjs/src/hashes/sha2-browser.js",
"./esm/src/hashes/sha2.js": "./esm/src/hashes/sha2-browser.js",
"./cjs/src/hashes/sha2.js": "./cjs/src/hashes/sha2-browser.js",
"./hashes/identity": "./cjs/src/hashes/identity.js",
"./codecs/json": "./cjs/src/codecs/json.js",
"./codecs/raw": "./cjs/src/codecs/raw.js"
}
"scripts": {
"lint": "aegir lint",
"release": "aegir release",
"build": "aegir build",
"test": "aegir test",
"test:node": "aegir test --target node",
"test:browser": "aegir test --target browser"
},
"devDependencies": {
"@ipld/dag-pb": "^2.1.14",
"@stablelib/sha256": "^1.0.1",
"@stablelib/sha512": "^1.0.1",
"@types/chai": "^4.3.0",
"@types/chai-as-promised": "^7.1.4",
"@types/mocha": "^9.0.0",
"@types/node": "^18.0.0",
"aegir": "^37.5.1",
"buffer": "^6.0.3",
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"cids": "^1.1.9"
},
"aegir": {
"build": {
"bundle": false
},
"test": {
"cov": true,
"target": [
"node",
"browser"
]
}
},
"directories": {
"test": "test"
},
"main": "./src/index.js"
}

@@ -1,17 +0,34 @@

# multiformats
# multiformats <!-- omit in toc -->
* [Interfaces](#interfaces)
* [Creating Blocks](#creating-blocks)
* [Multibase Encoders / Decoders / Codecs](#multibase-encoders--decoders--codecs)
* [Multicodec Encoders / Decoders / Codecs](#multicodec-encoders--decoders--codecs)
* [Multihash Hashers](#multihash-hashers)
* [Traversal](#traversal)
* [Legacy interface](#legacy-interface)
* [Implementations](#implementations)
* [Multibase codecs](#multibase-codecs)
* [Multihash hashers](#multihash-hashers-1)
* [IPLD codecs (multicodec)](#ipld-codecs-multicodec)
* [License](#license)
* [Contribution](#contribution)
[![multiformats.io](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](http://multiformats.io)
[![codecov](https://img.shields.io/codecov/c/github/multiformats/js-multiformats.svg?style=flat-square)](https://codecov.io/gh/multiformats/js-multiformats)
[![CI](https://img.shields.io/github/workflow/status/multiformats/js-multiformats/test%20&%20maybe%20release/esm-migration?style=flat-square)](https://github.com/multiformats/js-multiformats/actions/workflows/js-test-and-release.yml)
> Interface for multihash, multicodec, multibase and CID
## Table of contents <!-- omit in toc -->
- [Install](#install)
- [Interfaces](#interfaces)
- [Creating Blocks](#creating-blocks)
- [Multibase Encoders / Decoders / Codecs](#multibase-encoders--decoders--codecs)
- [Multicodec Encoders / Decoders / Codecs](#multicodec-encoders--decoders--codecs)
- [Multihash Hashers](#multihash-hashers)
- [Traversal](#traversal)
- [Legacy interface](#legacy-interface)
- [Implementations](#implementations)
- [Multibase codecs](#multibase-codecs)
- [Multihash hashers](#multihash-hashers-1)
- [IPLD codecs (multicodec)](#ipld-codecs-multicodec)
- [License](#license)
- [Contribution](#contribution)
## Install
```console
$ npm i multiformats
```
## Interfaces
This library defines common interfaces and low level building blocks for various interrelated multiformat technologies (multicodec, multihash, multibase, and CID). They can be used to implement custom base encoders / decoders / codecs, codec encoders /decoders and multihash hashers that comply to the interface that layers above assume.

@@ -21,4 +38,2 @@

## Interfaces
```js

@@ -81,3 +96,2 @@ import { CID } from 'multiformats/cid'

```js

@@ -194,8 +208,8 @@ cid.toString(base64)

| bases | import | repo |
--- | --- | --- |
`base16` | `multiformats/bases/base16` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
`base32`, `base32pad`, `base32hex`, `base32hexpad`, `base32z` | `multiformats/bases/base32` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
`base64`, `base64pad`, `base64url`, `base64urlpad` | `multiformats/bases/base64` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
`base58btc`, `base58flick4` | `multiformats/bases/base58` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
| bases | import | repo |
| ------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------- |
| `base16` | `multiformats/bases/base16` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
| `base32`, `base32pad`, `base32hex`, `base32hexpad`, `base32z` | `multiformats/bases/base32` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
| `base64`, `base64pad`, `base64url`, `base64urlpad` | `multiformats/bases/base64` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |
| `base58btc`, `base58flick4` | `multiformats/bases/base58` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) |

@@ -206,20 +220,20 @@ Other (less useful) bases implemented in [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/bases) include: `base2`, `base8`, `base10`, `base36` and `base256emoji`.

| hashes | import | repo |
| --- | --- | --- |
| `sha2-256`, `sha2-512` | `multiformats/hashes/sha2` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/hashes) |
| `sha3-224`, `sha3-256`, `sha3-384`,`sha3-512`, `shake-128`, `shake-256`, `keccak-224`, `keccak-256`, `keccak-384`, `keccak-512` | `@multiformats/sha3` | [multiformats/js-sha3](https://github.com/multiformats/js-sha3) |
| `identity` | `multiformats/hashes/identity` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/hashes/identity.js) |
| `murmur3-128`, `murmur3-32` | `@multiformats/murmur3` | [multiformats/js-murmur3](https://github.com/multiformats/js-murmur3) |
| `blake2b-*`, `blake2s-*` | `@multiformats/blake2` | [multiformats/js-blake2](https://github.com/multiformats/js-blake2) |
| hashes | import | repo |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
| `sha2-256`, `sha2-512` | `multiformats/hashes/sha2` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/hashes) |
| `sha3-224`, `sha3-256`, `sha3-384`,`sha3-512`, `shake-128`, `shake-256`, `keccak-224`, `keccak-256`, `keccak-384`, `keccak-512` | `@multiformats/sha3` | [multiformats/js-sha3](https://github.com/multiformats/js-sha3) |
| `identity` | `multiformats/hashes/identity` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/hashes/identity.js) |
| `murmur3-128`, `murmur3-32` | `@multiformats/murmur3` | [multiformats/js-murmur3](https://github.com/multiformats/js-murmur3) |
| `blake2b-*`, `blake2s-*` | `@multiformats/blake2` | [multiformats/js-blake2](https://github.com/multiformats/js-blake2) |
### IPLD codecs (multicodec)
| codec | import | repo |
| --- | --- | --- |
| `raw` | `multiformats/codecs/raw` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/codecs) |
| `json` | `multiformats/codecs/json` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/codecs) |
| `dag-cbor` | `@ipld/dag-cbor` | [ipld/js-dag-cbor](https://github.com/ipld/js-dag-cbor) |
| `dag-json` | `@ipld/dag-json` | [ipld/js-dag-json](https://github.com/ipld/js-dag-json) |
| `dag-pb` | `@ipld/dag-pb` | [ipld/js-dag-pb](https://github.com/ipld/js-dag-pb) |
| `dag-jose` | `dag-jose`| [ceramicnetwork/js-dag-jose](https://github.com/ceramicnetwork/js-dag-jose) |
| codec | import | repo |
| ---------- | -------------------------- | ------------------------------------------------------------------------------------------------------ |
| `raw` | `multiformats/codecs/raw` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/codecs) |
| `json` | `multiformats/codecs/json` | [multiformats/js-multiformats](https://github.com/multiformats/js-multiformats/tree/master/src/codecs) |
| `dag-cbor` | `@ipld/dag-cbor` | [ipld/js-dag-cbor](https://github.com/ipld/js-dag-cbor) |
| `dag-json` | `@ipld/dag-json` | [ipld/js-dag-json](https://github.com/ipld/js-dag-json) |
| `dag-pb` | `@ipld/dag-pb` | [ipld/js-dag-pb](https://github.com/ipld/js-dag-pb) |
| `dag-jose` | `dag-jose` | [ceramicnetwork/js-dag-jose](https://github.com/ceramicnetwork/js-dag-jose) |

@@ -230,7 +244,7 @@ ## License

* Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / http://www.apache.org/licenses/LICENSE-2.0)
* MIT ([LICENSE-MIT](LICENSE-MIT) / http://opensource.org/licenses/MIT)
- Apache 2.0, ([LICENSE-APACHE](LICENSE-APACHE) / <http://www.apache.org/licenses/LICENSE-2.0>)
- MIT ([LICENSE-MIT](LICENSE-MIT) / <http://opensource.org/licenses/MIT>)
### Contribution
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

@@ -23,2 +23,3 @@ import basex from '../../vendor/base-x.js'

* prefix.
*
* @class

@@ -72,2 +73,3 @@ * @template {string} Base

* with corresponding base encoding.
*
* @class

@@ -231,3 +233,3 @@ * @template {string} Base

* @template {string} Prefix
* @param {Object} options
* @param {object} options
* @param {Base} options.name

@@ -245,3 +247,3 @@ * @param {Prefix} options.prefix

* @template {string} Prefix
* @param {Object} options
* @param {object} options
* @param {Base} options.name

@@ -364,3 +366,3 @@ * @param {Prefix} options.prefix

* @template {string} Prefix
* @param {Object} options
* @param {object} options
* @param {Base} options.name

@@ -367,0 +369,0 @@ * @param {Prefix} options.prefix

@@ -11,5 +11,6 @@ // Base encoders / decoders just base encode / decode between binary and

* `encode` no multibase prefix is added.
*
* @param bytes
*/
baseEncode(bytes: Uint8Array): string
baseEncode: (bytes: Uint8Array) => string
}

@@ -24,5 +25,6 @@

* decode
*
* @param text
*/
baseDecode(text: string): Uint8Array
baseDecode: (text: string) => Uint8Array
}

@@ -63,3 +65,3 @@

*/
encode(bytes: Uint8Array): Multibase<Prefix>
encode: (bytes: Uint8Array) => Multibase<Prefix>
}

@@ -77,5 +79,6 @@

* If prefix does not match
*
* @param multibase
*/
decode(multibase: Multibase<Prefix>): Uint8Array
decode: (multibase: Multibase<Prefix>) => Uint8Array
}

@@ -93,3 +96,2 @@

export interface UnibaseDecoder<Prefix extends string> extends MultibaseDecoder<Prefix> {

@@ -96,0 +98,0 @@ // Reserve this property so it can be used to derive type.

import { bytes as binary, CID } from './index.js'
const readonly = ({ enumerable = true, configurable = false } = {}) => ({
enumerable,
configurable,
writable: false
})
function readonly ({ enumerable = true, configurable = false } = {}) {
return { enumerable, configurable, writable: false }
}
/**
* @param {[string|number, string]} path
* @param {any} value
* @returns {Iterable<[string, CID]>}
*/
function * linksWithin (path, value) {
if (value != null && typeof value === 'object') {
if (Array.isArray(value)) {
for (const [index, element] of value.entries()) {
const elementPath = [...path, index]
const cid = CID.asCID(element)
if (cid) {
yield [elementPath.join('/'), cid]
} else if (typeof element === 'object') {
yield * links(element, elementPath)
}
}
} else {
const cid = CID.asCID(value)
if (cid) {
yield [path.join('/'), cid]
} else {
yield * links(value, path)
}
}
}
}
/**
* @template T

@@ -15,27 +41,28 @@ * @param {T} source

*/
const links = function * (source, base) {
if (source == null) return
if (source instanceof Uint8Array) return
function * links (source, base) {
if (source == null || source instanceof Uint8Array) {
return
}
for (const [key, value] of Object.entries(source)) {
const path = [...base, key]
if (value != null && typeof value === 'object') {
if (Array.isArray(value)) {
for (const [index, element] of value.entries()) {
const elementPath = [...path, index]
const cid = CID.asCID(element)
if (cid) {
yield [elementPath.join('/'), cid]
} else if (typeof element === 'object') {
yield * links(element, elementPath)
}
}
} else {
const cid = CID.asCID(value)
if (cid) {
yield [path.join('/'), cid]
} else {
yield * links(value, path)
}
const path = /** @type {[string|number, string]} */ ([...base, key])
yield * linksWithin(path, value)
}
}
/**
* @param {[string|number, string]} path
* @param {any} value
* @returns {Iterable<string>}
*/
function * treeWithin (path, value) {
if (Array.isArray(value)) {
for (const [index, element] of value.entries()) {
const elementPath = [...path, index]
yield elementPath.join('/')
if (typeof element === 'object' && !CID.asCID(element)) {
yield * tree(element, elementPath)
}
}
} else {
yield * tree(value, path)
}

@@ -50,19 +77,11 @@ }

*/
const tree = function * (source, base) {
if (source == null) return
function * tree (source, base) {
if (source == null || typeof source !== 'object') {
return
}
for (const [key, value] of Object.entries(source)) {
const path = [...base, key]
const path = /** @type {[string|number, string]} */ ([...base, key])
yield path.join('/')
if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {
if (Array.isArray(value)) {
for (const [index, element] of value.entries()) {
const elementPath = [...path, index]
yield elementPath.join('/')
if (typeof element === 'object' && !CID.asCID(element)) {
yield * tree(element, elementPath)
}
}
} else {
yield * tree(value, path)
}
yield * treeWithin(path, value)
}

@@ -77,5 +96,4 @@ }

*/
const get = (source, path) => {
/** @type {Record<string, any>} */
let node = source
function get (source, path) {
let node = /** @type {Record<string, any>} */ (source)
for (const [index, key] of path.entries()) {

@@ -99,3 +117,3 @@ node = node[key]

/**
* @param {Object} options
* @param {object} options
* @param {CID} options.cid

@@ -131,4 +149,4 @@ * @param {ByteView<T>} options.bytes

/**
* @param {string} [path]
*/
* @param {string} [path]
*/
get (path = '/') {

@@ -143,3 +161,3 @@ return get(this.value, path.split('/').filter(Boolean))

* @template {number} Algorithm
* @param {Object} options
* @param {object} options
* @param {T} options.value

@@ -150,3 +168,3 @@ * @param {BlockEncoder<Code, T>} options.codec

*/
const encode = async ({ value, codec, hasher }) => {
async function encode ({ value, codec, hasher }) {
if (typeof value === 'undefined') throw new Error('Missing required argument "value"')

@@ -166,3 +184,3 @@ if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')

* @template {number} Algorithm
* @param {Object} options
* @param {object} options
* @param {ByteView<T>} options.bytes

@@ -173,3 +191,3 @@ * @param {BlockDecoder<Code, T>} options.codec

*/
const decode = async ({ bytes, codec, hasher }) => {
async function decode ({ bytes, codec, hasher }) {
if (!bytes) throw new Error('Missing required argument "bytes"')

@@ -186,3 +204,3 @@ if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')

/**
* @typedef {Object} RequiredCreateOptions
* @typedef {object} RequiredCreateOptions
* @property {CID} options.cid

@@ -197,3 +215,3 @@ */

*/
const createUnsafe = ({ bytes, cid, value: maybeValue, codec }) => {
function createUnsafe ({ bytes, cid, value: maybeValue, codec }) {
const value = maybeValue !== undefined

@@ -212,3 +230,3 @@ ? maybeValue

* @template {number} Algorithm
* @param {Object} options
* @param {object} options
* @param {CID} options.cid

@@ -220,3 +238,3 @@ * @param {ByteView<T>} options.bytes

*/
const create = async ({ bytes, cid, hasher, codec }) => {
async function create ({ bytes, cid, hasher, codec }) {
if (!bytes) throw new Error('Missing required argument "bytes"')

@@ -223,0 +241,0 @@ if (!hasher) throw new Error('Missing required argument "hasher"')

@@ -159,3 +159,3 @@ import * as varint from './varint.js'

deprecate(/^0\.0/, IS_CID_DEPRECATION)
return !!(value && (value[cidSymbol] || value.asCID === value))
return Boolean(value && (value[cidSymbol] || value.asCID === value))
}

@@ -192,2 +192,3 @@

* co-exist and interop as long as binary interface is compatible.
*
* @param {any} value

@@ -223,8 +224,8 @@ * @returns {CID|null}

/**
*
* @param {CIDVersion} version - Version of the CID
* @param {number} code - Code of the codec content is encoded in.
* @param {MultihashDigest} digest - (Multi)hash of the of the content.
* @returns {CID}
*/
*
* @param {CIDVersion} version - Version of the CID
* @param {number} code - Code of the codec content is encoded in.
* @param {MultihashDigest} digest - (Multi)hash of the of the content.
* @returns {CID}
*/
static create (version, code, digest) {

@@ -255,2 +256,3 @@ if (typeof code !== 'number') {

* Simplified version of `create` for CIDv0.
*
* @param {MultihashDigest} digest - Multihash.

@@ -263,8 +265,9 @@ */

/**
* Simplified version of `create` for CIDv1.
* @template {number} Code
* @param {Code} code - Content encoding format code.
* @param {MultihashDigest} digest - Miltihash of the content.
* @returns {CID}
*/
* Simplified version of `create` for CIDv1.
*
* @template {number} Code
* @param {Code} code - Content encoding format code.
* @param {MultihashDigest} digest - Miltihash of the content.
* @returns {CID}
*/
static createV1 (code, digest) {

@@ -484,2 +487,3 @@ return CID.create(1, code, digest)

const deprecate = (range, message) => {
/* eslint-disable no-console */
if (range.test(version)) {

@@ -486,0 +490,0 @@ console.warn(message)

@@ -7,3 +7,3 @@ /**

code: Code
encode(data: T): ByteView<T>
encode: (data: T) => ByteView<T>
}

@@ -16,3 +16,3 @@

code: Code
decode(bytes: ByteView<T>): T
decode: (bytes: ByteView<T>) => T
}

@@ -19,0 +19,0 @@

@@ -6,2 +6,3 @@ import { coerce, equals as equalBytes } from '../bytes.js'

* Creates a multihash digest.
*
* @template {number} Code

@@ -26,2 +27,3 @@ * @param {Code} code

* Turns bytes representation of multihash digest into an instance.
*
* @param {Uint8Array} multihash

@@ -63,2 +65,3 @@ * @returns {MultihashDigest}

* hashing alogrithm and an actual hash digest.
*
* @template {number} Code

@@ -72,2 +75,3 @@ * @template {number} Size

* Creates a multihash digest.
*
* @param {Code} code

@@ -74,0 +78,0 @@ * @param {Size} size

@@ -6,3 +6,3 @@ import * as Digest from './digest.js'

* @template {number} Code
* @param {Object} options
* @param {object} options
* @param {Name} options.name

@@ -9,0 +9,0 @@ * @param {Code} options.code

@@ -47,3 +47,3 @@ // # Multihash

*/
digest(input: Uint8Array): Promise<MultihashDigest> | MultihashDigest
digest: (input: Uint8Array) => Promise<MultihashDigest> | MultihashDigest

@@ -72,3 +72,3 @@ /**

export interface SyncMultihashHasher<Code extends number = number> extends MultihashHasher<Code> {
digest(input: Uint8Array): MultihashDigest
digest: (input: Uint8Array) => MultihashDigest
}

@@ -14,3 +14,3 @@ import { base58btc } from './bases/base58.js'

* @template T
* @param {Object} options
* @param {object} options
* @param {CID} options.cid

@@ -17,0 +17,0 @@ * @param {(cid: CID) => Promise<Block<T>|null>} options.load

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc