mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-03-28 05:11:04 +00:00
Converts this module to typescript. - Ecosystem modules renamed from (e.g.) `libp2p-tcp` to `@libp2p/tcp` - Ecosystem module now have named exports - Configuration has been updated, now pass instances of modules instead of classes: - Some configuration keys have been renamed to make them more descriptive. `transport` -> `transports`, `connEncryption` -> `connectionEncryption`. In general where we pass multiple things, the key is now plural, e.g. `streamMuxer` -> `streamMuxers`, `contentRouting` -> `contentRouters`, etc. Where we are configuring a singleton the config key is singular, e.g. `connProtector` -> `connectionProtector` etc. - Properties of the `modules` config key have been moved to the root - Properties of the `config` config key have been moved to the root ```js // before import Libp2p from 'libp2p' import TCP from 'libp2p-tcp' await Libp2p.create({ modules: { transport: [ TCP ], } config: { transport: { [TCP.tag]: { foo: 'bar' } }, relay: { enabled: true, hop: { enabled: true, active: true } } } }) ``` ```js // after import { createLibp2p } from 'libp2p' import { TCP } from '@libp2p/tcp' await createLibp2p({ transports: [ new TCP({ foo: 'bar' }) ], relay: { enabled: true, hop: { enabled: true, active: true } } }) ``` - Use of `enabled` flag has been reduced - previously you could pass a module but disable it with config. Now if you don't want a feature, just don't pass an implementation. Eg: ```js // before await Libp2p.create({ modules: { transport: [ TCP ], pubsub: Gossipsub }, config: { pubsub: { enabled: false } } }) ``` ```js // after await createLibp2p({ transports: [ new TCP() ] }) ``` - `.multiaddrs` renamed to `.getMultiaddrs()` because it's not a property accessor, work is done by that method to calculate announce addresses, observed addresses, etc - `/p2p/${peerId}` is now appended to all addresses returned by `.getMultiaddrs()` so they can be used opaquely (every consumer has to append the peer ID to the address to actually use it otherwise). If you need low-level unadulterated addresses, call methods on the address manager. BREAKING CHANGE: types are no longer hand crafted, this module is now ESM only
173 lines
5.2 KiB
YAML
173 lines
5.2 KiB
YAML
name: ci
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- '**'
|
|
|
|
jobs:
|
|
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present lint
|
|
- run: npm run --if-present dep-check
|
|
|
|
test-node:
|
|
needs: check
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
node: [16]
|
|
fail-fast: true
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present test:node
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: node
|
|
|
|
test-chrome:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present test:chrome
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: chrome
|
|
|
|
test-chrome-webworker:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present test:chrome-webworker
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: chrome-webworker
|
|
|
|
test-firefox:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present test:firefox
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: firefox
|
|
|
|
test-firefox-webworker:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run --if-present test:firefox-webworker
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: firefox-webworker
|
|
|
|
test-electron-main:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npx xvfb-maybe npm run --if-present test:electron-main
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: electron-main
|
|
|
|
test-electron-renderer:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npx xvfb-maybe npm run --if-present test:electron-renderer
|
|
- uses: codecov/codecov-action@f32b3a3741e1053eb607407145bc9619351dc93b # v2.1.0
|
|
with:
|
|
directory: ./.nyc_output
|
|
flags: electron-renderer
|
|
|
|
test-interop:
|
|
needs: check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- run: npm run test:interop -- --bail
|
|
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-electron-main, test-electron-renderer, test-interop]
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
|
|
steps:
|
|
- uses: GoogleCloudPlatform/release-please-action@v2
|
|
id: release
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
release-type: node
|
|
bump-minor-pre-major: true
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: lts/*
|
|
registry-url: 'https://registry.npmjs.org'
|
|
- uses: ipfs/aegir/actions/cache-node-modules@master
|
|
- if: ${{ steps.release.outputs.release_created }}
|
|
name: Run release version
|
|
run: npm publish
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
- if: ${{ !steps.release.outputs.release_created }}
|
|
name: Run release rc
|
|
run: |
|
|
npm version `node -p -e "require('./package.json').version"`-`git rev-parse --short HEAD` --no-git-tag-version
|
|
npm publish --tag next
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|