Skip to content

Commit 52d2043

Browse files
ci: update Unified CI configuration (libp2p#29)
Co-authored-by: web3-bot <[email protected]> Co-authored-by: Alex Potsides <[email protected]>
1 parent 7dbd895 commit 52d2043

16 files changed

+62
-58
lines changed

.github/workflows/js-test-and-release.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,8 @@ jobs:
9999
test-webkit:
100100
needs: check
101101
runs-on: ${{ matrix.os }}
102-
matrix:
102+
strategy:
103+
matrix:
103104
os: [ubuntu-latest, macos-latest]
104105
node: [lts/*]
105106
fail-fast: true
@@ -114,10 +115,11 @@ jobs:
114115
with:
115116
flags: webkit
116117

117-
test-webkit:
118+
test-webkit-webworker:
118119
needs: check
119120
runs-on: ${{ matrix.os }}
120-
matrix:
121+
strategy:
122+
matrix:
121123
os: [ubuntu-latest, macos-latest]
122124
node: [lts/*]
123125
fail-fast: true

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
node_modules
2+
build
23
dist
34
.docs
45
.coverage
56
node_modules
67
package-lock.json
78
yarn.lock
9+
.vscode

.vscode/settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"typescript.tsdk": "node_modules/typescript/lib"
3+
}

package.json

+12-14
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
"url": "https://github.com/libp2p/js-libp2p-prometheus-metrics/issues"
1414
},
1515
"engines": {
16-
"node": ">=16.0.0",
17-
"npm": ">=7.0.0"
16+
"node": ">=18.0.0",
17+
"npm": ">=8.6.0"
1818
},
1919
"type": "module",
2020
"types": "./dist/src/index.d.ts",
@@ -133,23 +133,21 @@
133133
"docs": "aegir docs"
134134
},
135135
"dependencies": {
136-
"@libp2p/interface-connection": "^3.0.2",
136+
"@libp2p/interface-connection": "^5.0.2",
137137
"@libp2p/interface-metrics": "^4.0.2",
138138
"@libp2p/logger": "^2.0.2",
139-
"it-foreach": "^1.0.0",
140-
"it-stream-types": "^1.0.4"
139+
"it-foreach": "^2.0.3",
140+
"it-stream-types": "^2.0.1"
141141
},
142142
"devDependencies": {
143-
"@libp2p/interface-mocks": "^8.0.4",
144-
"@libp2p/peer-id-factory": "^1.0.19",
145-
"@multiformats/multiaddr": "^11.0.7",
146-
"aegir": "^37.5.6",
147-
"it-drain": "^2.0.0",
148-
"it-pair": "^2.0.3",
149-
"it-pipe": "^2.0.4",
143+
"@libp2p/interface-mocks": "^12.0.1",
144+
"@libp2p/peer-id-factory": "^2.0.3",
145+
"@multiformats/multiaddr": "^12.1.3",
146+
"aegir": "^39.0.6",
147+
"it-drain": "^3.0.2",
148+
"it-pipe": "^3.0.1",
150149
"p-defer": "^4.0.0",
151-
"prom-client": "^14.1.0",
152-
"uint8arraylist": "^2.3.3"
150+
"prom-client": "^14.1.0"
153151
},
154152
"peerDependencies": {
155153
"prom-client": "^14.1.0"

src/counter-group.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics'
2-
import { Counter as PromCounter, CollectFunction } from 'prom-client'
3-
import { normaliseString, CalculatedMetric } from './utils.js'
1+
import { Counter as PromCounter, type CollectFunction } from 'prom-client'
2+
import { normaliseString, type CalculatedMetric } from './utils.js'
43
import type { PrometheusCalculatedMetricOptions } from './index.js'
4+
import type { CounterGroup, CalculateMetric } from '@libp2p/interface-metrics'
55

66
export class PrometheusCounterGroup implements CounterGroup, CalculatedMetric<Record<string, number>> {
77
private readonly counter: PromCounter
@@ -40,7 +40,7 @@ export class PrometheusCounterGroup implements CounterGroup, CalculatedMetric<Re
4040
})
4141
}
4242

43-
addCalculator (calculator: CalculateMetric<Record<string, number>>) {
43+
addCalculator (calculator: CalculateMetric<Record<string, number>>): void {
4444
this.calculators.push(calculator)
4545
}
4646

src/counter.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { CalculateMetric, Counter } from '@libp2p/interface-metrics'
2-
import { CollectFunction, Counter as PromCounter } from 'prom-client'
1+
import { type CollectFunction, Counter as PromCounter } from 'prom-client'
2+
import { normaliseString, type CalculatedMetric } from './utils.js'
33
import type { PrometheusCalculatedMetricOptions } from './index.js'
4-
import { normaliseString, CalculatedMetric } from './utils.js'
4+
import type { CalculateMetric, Counter } from '@libp2p/interface-metrics'
55

66
export class PrometheusCounter implements Counter, CalculatedMetric {
77
private readonly counter: PromCounter
@@ -20,7 +20,7 @@ export class PrometheusCounter implements Counter, CalculatedMetric {
2020
const self = this
2121

2222
collect = async function () {
23-
const values = await Promise.all(self.calculators.map(async calculate => await calculate()))
23+
const values = await Promise.all(self.calculators.map(async calculate => calculate()))
2424
const sum = values.reduce((acc, curr) => acc + curr, 0)
2525

2626
this.inc(sum)
@@ -36,7 +36,7 @@ export class PrometheusCounter implements Counter, CalculatedMetric {
3636
})
3737
}
3838

39-
addCalculator (calculator: CalculateMetric) {
39+
addCalculator (calculator: CalculateMetric): void {
4040
this.calculators.push(calculator)
4141
}
4242

src/index.ts

+10-11
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,18 @@
9292
* const stream = await connection.newStream('/my/protocol')
9393
* const streams = metrics.trackProtocolStream(stream)
9494
* ```
95-
*
9695
*/
9796

98-
import type { CalculatedMetricOptions, Counter, CounterGroup, Metric, MetricGroup, MetricOptions, Metrics } from '@libp2p/interface-metrics'
99-
import { collectDefaultMetrics, DefaultMetricsCollectorConfiguration, register, Registry } from 'prom-client'
100-
import type { MultiaddrConnection, Stream, Connection } from '@libp2p/interface-connection'
101-
import type { Duplex } from 'it-stream-types'
97+
import { logger } from '@libp2p/logger'
10298
import each from 'it-foreach'
103-
import { PrometheusMetric } from './metric.js'
104-
import { PrometheusMetricGroup } from './metric-group.js'
105-
import { PrometheusCounter } from './counter.js'
99+
import { collectDefaultMetrics, type DefaultMetricsCollectorConfiguration, register, type Registry } from 'prom-client'
106100
import { PrometheusCounterGroup } from './counter-group.js'
107-
import { logger } from '@libp2p/logger'
101+
import { PrometheusCounter } from './counter.js'
102+
import { PrometheusMetricGroup } from './metric-group.js'
103+
import { PrometheusMetric } from './metric.js'
104+
import type { MultiaddrConnection, Stream, Connection } from '@libp2p/interface-connection'
105+
import type { CalculatedMetricOptions, Counter, CounterGroup, Metric, MetricGroup, MetricOptions, Metrics } from '@libp2p/interface-metrics'
106+
import type { Duplex, Source } from 'it-stream-types'
108107

109108
const log = logger('libp2p:prometheus-metrics')
110109

@@ -194,7 +193,7 @@ class PrometheusMetrics implements Metrics {
194193
* Increment the transfer stat for the passed key, making sure
195194
* it exists first
196195
*/
197-
_incrementValue (key: string, value: number) {
196+
_incrementValue (key: string, value: number): void {
198197
const existing = this.transferStats.get(key) ?? 0
199198

200199
this.transferStats.set(key, existing + value)
@@ -204,7 +203,7 @@ class PrometheusMetrics implements Metrics {
204203
* Override the sink/source of the stream to count the bytes
205204
* in and out
206205
*/
207-
_track (stream: Duplex<any>, name: string) {
206+
_track (stream: Duplex<Source<any>>, name: string): void {
208207
const self = this
209208

210209
const sink = stream.sink

src/metric-group.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics'
2-
import { CollectFunction, Gauge } from 'prom-client'
1+
import { type CollectFunction, Gauge } from 'prom-client'
2+
import { normaliseString, type CalculatedMetric } from './utils.js'
33
import type { PrometheusCalculatedMetricOptions } from './index.js'
4-
import { normaliseString, CalculatedMetric } from './utils.js'
4+
import type { CalculateMetric, MetricGroup, StopTimer } from '@libp2p/interface-metrics'
55

66
export class PrometheusMetricGroup implements MetricGroup, CalculatedMetric<Record<string, number>> {
77
private readonly gauge: Gauge
@@ -40,7 +40,7 @@ export class PrometheusMetricGroup implements MetricGroup, CalculatedMetric<Reco
4040
})
4141
}
4242

43-
addCalculator (calculator: CalculateMetric<Record<string, number>>) {
43+
addCalculator (calculator: CalculateMetric<Record<string, number>>): void {
4444
this.calculators.push(calculator)
4545
}
4646

src/metric.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics'
2-
import { CollectFunction, Gauge } from 'prom-client'
3-
import type { PrometheusCalculatedMetricOptions } from './index.js'
1+
import { type CollectFunction, Gauge } from 'prom-client'
42
import { normaliseString } from './utils.js'
3+
import type { PrometheusCalculatedMetricOptions } from './index.js'
4+
import type { Metric, StopTimer, CalculateMetric } from '@libp2p/interface-metrics'
55

66
export class PrometheusMetric implements Metric {
77
private readonly gauge: Gauge
@@ -20,7 +20,7 @@ export class PrometheusMetric implements Metric {
2020
const self = this
2121

2222
collect = async function () {
23-
const values = await Promise.all(self.calculators.map(async calculate => await calculate()))
23+
const values = await Promise.all(self.calculators.map(async calculate => calculate()))
2424
const sum = values.reduce((acc, curr) => acc + curr, 0)
2525

2626
this.set(sum)
@@ -36,7 +36,7 @@ export class PrometheusMetric implements Metric {
3636
})
3737
}
3838

39-
addCalculator (calculator: CalculateMetric) {
39+
addCalculator (calculator: CalculateMetric): void {
4040
this.calculators.push(calculator)
4141
}
4242

test/counter-groups.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
32
import client from 'prom-client'
3+
import { prometheusMetrics } from '../src/index.js'
44
import { randomMetricName } from './fixtures/random-metric-name.js'
55

66
describe('counter groups', () => {

test/counters.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
32
import client from 'prom-client'
3+
import { prometheusMetrics } from '../src/index.js'
44
import { randomMetricName } from './fixtures/random-metric-name.js'
55

66
describe('counters', () => {

test/custom-registry.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
32
import client, { Registry } from 'prom-client'
3+
import { prometheusMetrics } from '../src/index.js'
44
import { randomMetricName } from './fixtures/random-metric-name.js'
55

66
describe('custom registry', () => {

test/fixtures/random-metric-name.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
* Prometheus metric names are global and can only contain
33
* a limited set of, at least /a-z_0-9/i
44
*/
5-
export function randomMetricName (key = '') {
5+
export function randomMetricName (key = ''): string {
66
return `my_metric_${key}${Math.random().toString().split('.').pop() ?? ''}`
77
}

test/metric-groups.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
32
import client from 'prom-client'
3+
import { prometheusMetrics } from '../src/index.js'
44
import { randomMetricName } from './fixtures/random-metric-name.js'
55

66
describe('metric groups', () => {

test/metrics.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
32
import client from 'prom-client'
3+
import { prometheusMetrics } from '../src/index.js'
44
import { randomMetricName } from './fixtures/random-metric-name.js'
55

66
describe('metrics', () => {

test/streams.spec.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { expect } from 'aegir/chai'
2-
import { prometheusMetrics } from '../src/index.js'
3-
import client from 'prom-client'
4-
import type { Connection } from '@libp2p/interface-connection'
51
import { connectionPair, mockRegistrar, mockMultiaddrConnPair } from '@libp2p/interface-mocks'
62
import { createEd25519PeerId } from '@libp2p/peer-id-factory'
7-
import { pipe } from 'it-pipe'
3+
import { multiaddr } from '@multiformats/multiaddr'
4+
import { expect } from 'aegir/chai'
85
import drain from 'it-drain'
6+
import { pipe } from 'it-pipe'
97
import defer from 'p-defer'
10-
import { multiaddr } from '@multiformats/multiaddr'
8+
import client from 'prom-client'
9+
import { prometheusMetrics } from '../src/index.js'
10+
import type { Connection } from '@libp2p/interface-connection'
1111

1212
describe('streams', () => {
1313
let connectionA: Connection

0 commit comments

Comments
 (0)