These 8 commits are when the Protocol Buffers files have changed:
| Commit: | 2ab3bfc | |
|---|---|---|
| Author: | tabcat | |
| Committer: | GitHub | |
feat: republish third-party ipns record (#891) Adds the ability to keep alive an IPNS record this node did not originally publish, plus the upkeep-policy machinery around it. New methods on the IPNS interface: - `import(key, record)`: validate a record and store it locally without touching the network. No metadata is written, so the record is served on a GET but dormant until `republish` gives it an upkeep policy. - `republish(key, options)`: republish the record held locally for a key. It compares the local record against the network with `ipnsSelector`, throws `RecordObsoleteError` if a newer record is already published, otherwise persists the chosen upkeep policy and publishes. Best-effort on the network (a failing network router does not throw; use onProgress and the logs), but a local-store persist failure throws, since that write saves the upkeep policy. - `unpublish(key, options)`: stop republishing. By default it removes only the metadata (the record stays served until it expires); `removeRecord: true` also deletes the record. Upkeep policy (stored per key in the metadata, default `reissue`): - `reissue`: re-sign the record with a new sequence and validity. Needs the signing key, so only `publish` can select it. - `rebroadcast`: re-put the existing record as-is. The background loop resolves the network's latest record first and adopts a newer one instead of pushing a stale copy. - `none`: no upkeep. Other changes: - `resolve` skips the local store when `nocache` is set, and honors `validate: false` on the network path. - The validator rejects a record whose embedded (non-identity) public key does not hash to its routing key. The metadata `Upkeep` enum replaces the earlier `refresh` bool; its values are `reissue` / `rebroadcast` / `none`. Closes #877 --------- Co-authored-by: Alex Potsides <alex@achingbrain.net>
| Commit: | 883ff05 | |
|---|---|---|
| Author: | Alex Potsides | |
| Committer: | GitHub | |
fix: add value to ipns result and export util to create records (#1065) Exports low level record creation method to allow removal of `ipns` module. Adds `validate` option to resolve to skip validation for learining purposes. Adds `data` option to publish to add arbitrary data. Returns raw pb record to remove need for extra marshall/unmarshall functions. Performs all validation in ipnsValidator instead of half there and half during unmarshalling.
| Commit: | 73a28ed | |
|---|---|---|
| Author: | Alex Potsides | |
| Committer: | GitHub | |
feat!: keychain and configurable crypto (#1041) Adds a configuration option to allow dynamically loading crypto implementations on-demand. Ships with only webcrypto-supported crypto implementations (e.g. `Ed25519`, `RSA`, `ECDSA`), anything else (e.g. `secp256k1`) must be configured separately. Imports [ipns](https://www.npmjs.com/package/ipns) code into `@helia/ipns` for ease of maintenance. Removes `@libp2p/keychain` dep and adds a `.keychain` property to Helia for securely storing private keys. BREAKING CHANGE: `secp256k1` support has been removed from the default config, it must now be configured separately
| Commit: | 008747b | |
|---|---|---|
| Author: | Daniel Norman | |
| Committer: | GitHub | |
feat!: add ipns reproviding/republishing (#764) This PR adds the functionality necessary for a Helia node to reprovide records it created before expiry. Fixes #367 #750 Related: https://github.com/ipshipyard/roadmaps/issues/1 ## Breaking changes BREAKING CHANGE: `ipns.publish` now accepts key name strings rather than private keys BREAKING CHANGE: Names previously publishing using an user controlled private key, will need to be explicitly published again by first importing the key into the keychain (`await libp2p.keychain.importKey('my-key', key)` and then published with `ipns.publish('my-key', ...)`. --------- Co-authored-by: Daniel N <2color@users.noreply.github.com> Co-authored-by: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com> Co-authored-by: Alex Potsides <alex@achingbrain.net>
The documentation is generated from this commit.
| Commit: | b8eb0af | |
|---|---|---|
| Author: | Daniel N | |
chore: rename to publish metadata for clarity
The documentation is generated from this commit.
| Commit: | 62214df | |
|---|---|---|
| Author: | Daniel N | |
feat: use protons to encode ipn metadata for store
| Commit: | 45ca6bc | |
|---|---|---|
| Author: | Alex Potsides | |
| Committer: | GitHub | |
docs: add spell checker to ci (#743) Adds cspell to CI to catch typos in code and docs.
| Commit: | e582c63 | |
|---|---|---|
| Author: | Alex Potsides | |
| Committer: | GitHub | |
feat: add @helia/bitswap with sessions (#409) Adds a `@helia/bitswap` module with code ported from `ipfs-bitswap` and greatly simplified. - Supports sessions - Only supports bitswap 1.2.0 - Uses libp2p's metrics system instead of a custom version - Uses Helia's routing instead of libp2p to take advantage of http delegated routers that return bitswap providers --------- Co-authored-by: Russell Dempsey <1173416+SgtPooki@users.noreply.github.com>