Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Commit 939e6d6

Browse files
authored
feat!: upgrade to esm libp2p/ipfs (#462)
Updates all dependencies and adds types to tests. BREAKING CHANGE: needs ESM release of ipfs/libp2p
1 parent 03132ac commit 939e6d6

34 files changed

+28053
-18795
lines changed

.aegir.cjs .aegir.js

+28-16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
1-
'use strict'
1+
import path from 'path'
2+
import { createServer } from 'ipfsd-ctl'
3+
import { sigServer } from '@libp2p/webrtc-star-signalling-server'
4+
import { fileURLToPath } from 'url'
5+
import { resolve } from 'import-meta-resolve'
26

3-
const path = require('path')
4-
const createServer = require('ipfsd-ctl').createServer
5-
const signaller = require('libp2p-webrtc-star-signalling-server')
7+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
8+
const ipfsModule = await resolve(process.env.IPFS_JS_HTTP_MODULE || 'ipfs', import.meta.url)
9+
const ipfsHttpModule = await resolve(process.env.IPFS_JS_HTTP_MODULE || 'ipfs-http-client', import.meta.url)
10+
11+
async function findGoIpfsBin () {
12+
if (process.env.IPFS_GO_EXEC != null) {
13+
return process.env.IPFS_GO_EXEC
14+
}
15+
16+
const modulePath = await resolve(process.env.IPFS_GO_IPFS_MODULE || 'go-ipfs', import.meta.url)
17+
const module = await import(modulePath.replace('file://', ''))
18+
19+
return module.path()
20+
}
621

722
/** @type {import('aegir').Options["build"]["config"]} */
823
const esbuild = {
@@ -11,33 +26,29 @@ const esbuild = {
1126
{
1227
name: 'node built ins',
1328
setup (build) {
14-
build.onResolve({ filter: /^stream$/ }, () => {
15-
return { path: require.resolve('readable-stream') }
16-
})
17-
1829
build.onResolve({ filter: /^ipfs$/ }, () => {
19-
return { path: require.resolve(process.env.IPFS_JS_MODULE || 'ipfs') }
30+
return { path: ipfsModule.replace('file://', '') }
2031
})
2132
build.onResolve({ filter: /^ipfs-http-client$/ }, () => {
22-
return { path: require.resolve(process.env.IPFS_JS_HTTP_MODULE || 'ipfs-http-client') }
33+
return { path: ipfsHttpModule.replace('file://', '') }
2334
})
2435
}
2536
}
2637
]
2738
}
2839

29-
const ipfsHttpModule = require(process.env.IPFS_JS_HTTP_MODULE || 'ipfs-http-client')
30-
const ipfsModule = require(process.env.IPFS_JS_MODULE || 'ipfs')
31-
3240
/** @type {import('aegir').PartialOptions} */
33-
module.exports = {
41+
export default {
3442
test: {
3543
browser: {
3644
config: {
3745
buildConfig: esbuild
3846
}
3947
},
4048
async before (options) {
49+
const ipfsHttpModule = await import(process.env.IPFS_JS_HTTP_MODULE || 'ipfs-http-client')
50+
const ipfsModule = await import(process.env.IPFS_JS_MODULE || 'ipfs')
51+
4152
if (options.runner !== 'node') {
4253
const ipfsdServer = await createServer({
4354
host: '127.0.0.1',
@@ -48,7 +59,7 @@ module.exports = {
4859
ipfsHttpModule
4960
}, {
5061
go: {
51-
ipfsBin: process.env.IPFS_GO_EXEC || require(process.env.IPFS_GO_IPFS_MODULE || 'go-ipfs').path()
62+
ipfsBin: await findGoIpfsBin()
5263
},
5364
js: {
5465
ipfsOptions: {
@@ -65,11 +76,12 @@ module.exports = {
6576
}
6677
}).start()
6778

68-
const signallingServer = await signaller.start({
79+
const signallingServer = await sigServer({
6980
port: 24642,
7081
host: '0.0.0.0',
7182
metrics: false
7283
})
84+
7385
return {
7486
ipfsdServer,
7587
signallingServer

.github/dependabot.yml

+3
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ updates:
66
interval: daily
77
time: "10:00"
88
open-pull-requests-limit: 10
9+
commit-message:
10+
prefix: "deps"
11+
prefix-development: "deps(dev)"

.github/workflows/automerge.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
name: Automerge
2+
on: [ pull_request ]
3+
4+
jobs:
5+
automerge:
6+
uses: protocol/.github/.github/workflows/automerge.yml@master
7+
with:
8+
job: 'automerge'
+145
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
name: test & maybe release
2+
on:
3+
push:
4+
branches:
5+
- master # with #262 - ${{{ github.default_branch }}}
6+
pull_request:
7+
branches:
8+
- master # with #262 - ${{{ github.default_branch }}}
9+
10+
jobs:
11+
12+
check:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v2
16+
- uses: actions/setup-node@v2
17+
with:
18+
node-version: lts/*
19+
- uses: ipfs/aegir/actions/cache-node-modules@master
20+
- run: npm run --if-present lint
21+
- run: npm run --if-present dep-check
22+
23+
test-node:
24+
needs: check
25+
runs-on: ${{ matrix.os }}
26+
strategy:
27+
matrix:
28+
os: [windows-latest, ubuntu-latest, macos-latest]
29+
node: [16]
30+
fail-fast: true
31+
steps:
32+
- uses: actions/checkout@v2
33+
- uses: actions/setup-node@v2
34+
with:
35+
node-version: ${{ matrix.node }}
36+
- uses: ipfs/aegir/actions/cache-node-modules@master
37+
- run: npm run --if-present test:node
38+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
39+
with:
40+
flags: node
41+
42+
test-chrome:
43+
needs: check
44+
runs-on: ubuntu-latest
45+
steps:
46+
- uses: actions/checkout@v2
47+
- uses: actions/setup-node@v2
48+
with:
49+
node-version: lts/*
50+
- uses: ipfs/aegir/actions/cache-node-modules@master
51+
- run: npm run --if-present test:chrome
52+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
53+
with:
54+
flags: chrome
55+
56+
test-chrome-webworker:
57+
needs: check
58+
runs-on: ubuntu-latest
59+
steps:
60+
- uses: actions/checkout@v2
61+
- uses: actions/setup-node@v2
62+
with:
63+
node-version: lts/*
64+
- uses: ipfs/aegir/actions/cache-node-modules@master
65+
- run: npm run --if-present test:chrome-webworker
66+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
67+
with:
68+
flags: chrome-webworker
69+
70+
test-firefox:
71+
needs: check
72+
runs-on: ubuntu-latest
73+
steps:
74+
- uses: actions/checkout@v2
75+
- uses: actions/setup-node@v2
76+
with:
77+
node-version: lts/*
78+
- uses: ipfs/aegir/actions/cache-node-modules@master
79+
- run: npm run --if-present test:firefox
80+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
81+
with:
82+
flags: firefox
83+
84+
test-firefox-webworker:
85+
needs: check
86+
runs-on: ubuntu-latest
87+
steps:
88+
- uses: actions/checkout@v2
89+
- uses: actions/setup-node@v2
90+
with:
91+
node-version: lts/*
92+
- uses: ipfs/aegir/actions/cache-node-modules@master
93+
- run: npm run --if-present test:firefox-webworker
94+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
95+
with:
96+
flags: firefox-webworker
97+
98+
test-electron-main:
99+
needs: check
100+
runs-on: ubuntu-latest
101+
steps:
102+
- uses: actions/checkout@v2
103+
- uses: actions/setup-node@v2
104+
with:
105+
node-version: lts/*
106+
- uses: ipfs/aegir/actions/cache-node-modules@master
107+
- run: npx xvfb-maybe npm run --if-present test:electron-main
108+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
109+
with:
110+
flags: electron-main
111+
112+
test-electron-renderer:
113+
needs: check
114+
runs-on: ubuntu-latest
115+
steps:
116+
- uses: actions/checkout@v2
117+
- uses: actions/setup-node@v2
118+
with:
119+
node-version: lts/*
120+
- uses: ipfs/aegir/actions/cache-node-modules@master
121+
- run: npx xvfb-maybe npm run --if-present test:electron-renderer
122+
- uses: codecov/codecov-action@81cd2dc8148241f03f5839d295e000b8f761e378 # v3.1.0
123+
with:
124+
flags: electron-renderer
125+
126+
release:
127+
needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-electron-main, test-electron-renderer]
128+
runs-on: ubuntu-latest
129+
if: github.event_name == 'push' && github.ref == 'refs/heads/master' # with #262 - 'refs/heads/${{{ github.default_branch }}}'
130+
steps:
131+
- uses: actions/checkout@v2
132+
with:
133+
fetch-depth: 0
134+
- uses: actions/setup-node@v2
135+
with:
136+
node-version: lts/*
137+
- uses: ipfs/aegir/actions/cache-node-modules@master
138+
- uses: ipfs/aegir/actions/docker-login@master
139+
with:
140+
docker-token: ${{ secrets.DOCKER_TOKEN }}
141+
docker-username: ${{ secrets.DOCKER_USERNAME }}
142+
- run: npm run --if-present release
143+
env:
144+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
145+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

0 commit comments

Comments
 (0)