From 288cfb81b6d18a65d807dd1854f548e7a92bd185 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Thu, 13 Feb 2025 15:42:19 +0100 Subject: [PATCH 1/2] Add `successful_http_head`. CheckerNetwork/spark#104 --- stats/lib/stats-fetchers.js | 21 +++++--- stats/test/app.test.js | 95 +++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 53 deletions(-) diff --git a/stats/lib/stats-fetchers.js b/stats/lib/stats-fetchers.js index c83fcdc..0608f7e 100644 --- a/stats/lib/stats-fetchers.js +++ b/stats/lib/stats-fetchers.js @@ -11,7 +11,8 @@ export const fetchRetrievalSuccessRate = async (pgPools, filter) => { day::text, SUM(total) as total, SUM(successful) as successful, - SUM(successful_http) as successful_http + SUM(successful_http) as successful_http, + SUM(successful_http_head) as successful_http_head FROM retrieval_stats WHERE day >= $1 AND day <= $2 ${filter.nonZero === 'true' ? 'AND successful > 0' : ''} GROUP BY day @@ -27,7 +28,9 @@ export const fetchRetrievalSuccessRate = async (pgPools, filter) => { success_rate: r.total > 0 ? r.successful / r.total : null, successful_http: r.successful_http ?? null, // successful_http might be null because the column was added later - success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null + success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null, + // successful_http_head might be null because the column was added later + success_rate_http_head: r.total > 0 && r.successful_http_head !== null ? r.successful_http_head / r.total : null })) return stats } @@ -218,7 +221,8 @@ export const fetchMinersRSRSummary = async (pgPools, filter) => { miner_id, SUM(total) as total, SUM(successful) as successful, - SUM(successful_http) as successful_http + SUM(successful_http) as successful_http, + SUM(successful_http_head) as successful_http_head FROM retrieval_stats WHERE day >= $1 AND day <= $2 GROUP BY miner_id @@ -233,7 +237,9 @@ export const fetchMinersRSRSummary = async (pgPools, filter) => { success_rate: r.total > 0 ? r.successful / r.total : null, successful_http: r.successful_http ?? null, // successful_http might be null because the column was added later - success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null + success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null, + // successful_http_head might be null because the column was added later + success_rate_http_head: r.total > 0 && r.successful_http_head !== null ? r.successful_http_head / r.total : null })) return stats } @@ -249,7 +255,8 @@ export const fetchDailyMinerRSRSummary = async (pgPools, { from, to }, minerId) SELECT day::TEXT, SUM(total) as total, SUM(successful) as successful, - SUM(successful_http) as successful_http + SUM(successful_http) as successful_http, + SUM(successful_http_head) as successful_http_head FROM retrieval_stats WHERE miner_id = $1 AND day >= $2 AND day <= $3 GROUP BY day @@ -266,7 +273,9 @@ export const fetchDailyMinerRSRSummary = async (pgPools, { from, to }, minerId) success_rate: r.total > 0 ? r.successful / r.total : null, successful_http: r.successful_http ?? null, // successful_http might be null because the column was added later - success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null + success_rate_http: r.total > 0 && r.successful_http !== null ? r.successful_http / r.total : null, + // successful_http_head might be null because the column was added later + success_rate_http_head: r.total > 0 && r.successful_http_head !== null ? r.successful_http_head / r.total : null })) return stats } diff --git a/stats/test/app.test.js b/stats/test/app.test.js index 1c9ddb3..0094558 100644 --- a/stats/test/app.test.js +++ b/stats/test/app.test.js @@ -67,12 +67,12 @@ describe('HTTP request handler', () => { it('returns today stats for no query string', async () => { const day = today() - await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 1, successfulHttp: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 1, successfulHttp: 0, successfulHttpHead: 0 }) const res = await fetch(new URL('/retrieval-success-rate', baseUrl), { redirect: 'follow' }) await assertResponseStatus(res, 200) const stats = await res.json() assert.deepStrictEqual(stats, [ - { day, success_rate: 0.1, successful: '1', total: '10', successful_http: '0', success_rate_http: 0 } + { day, success_rate: 0.1, successful: '1', total: '10', successful_http: '0', success_rate_http: 0, success_rate_http_head: 0 } ]) }) @@ -93,8 +93,8 @@ describe('HTTP request handler', () => { await assertResponseStatus(res, 200) const stats = await res.json() assert.deepStrictEqual(stats, [ - { day: '2024-01-11', success_rate: 0.05, successful: '1', total: '20', successful_http: '0', success_rate_http: 0 }, - { day: '2024-01-12', success_rate: 0.1, successful: '3', total: '30', successful_http: '3', success_rate_http: 0.1 } + { day: '2024-01-11', success_rate: 0.05, successful: '1', total: '20', successful_http: '0', success_rate_http: 0, success_rate_http_head: null }, + { day: '2024-01-12', success_rate: 0.1, successful: '3', total: '30', successful_http: '3', success_rate_http: 0.1, success_rate_http_head: null } ]) }) @@ -137,10 +137,10 @@ describe('HTTP request handler', () => { }) it('sums daily retrievals from all miners', async () => { - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 50, successfulHttp: 35 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1two', total: 200, successful: 60, successfulHttp: 50 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 50, successfulHttp: 35, successfulHttpHead: 35 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0, successfulHttpHead: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1two', total: 200, successful: 60, successfulHttp: 50, successfulHttpHead: 50 }) const res = await fetch( new URL( @@ -156,14 +156,14 @@ describe('HTTP request handler', () => { await res.json() ) assert.deepStrictEqual(stats, [ - { day: '2024-01-10', success_rate: 51 / 110, total: '110', successful: '51', successful_http: '36', success_rate_http: 36 / 110 }, - { day: '2024-01-11', success_rate: 61 / 220, total: '220', successful: '61', successful_http: '50', success_rate_http: 50 / 220 } + { day: '2024-01-10', success_rate: 51 / 110, total: '110', successful: '51', successful_http: '36', success_rate_http: 36 / 110, success_rate_http_head: 36 / 110 }, + { day: '2024-01-11', success_rate: 61 / 220, total: '220', successful: '61', successful_http: '50', success_rate_http: 50 / 220, success_rate_http_head: 50 / 220 } ]) }) it('sorts items by date ascending', async () => { - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', total: 10, successful: 5, successfulHttp: 3 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', total: 10, successful: 5, successfulHttp: 3, successfulHttpHead: 3 }) const res = await fetch( new URL( @@ -178,14 +178,14 @@ describe('HTTP request handler', () => { await res.json() ) assert.deepStrictEqual(stats, [ - { day: '2024-01-10', success_rate: 5 / 10, total: '10', successful: '5', successful_http: '3', success_rate_http: 3 / 10 }, - { day: '2024-01-20', success_rate: 1 / 10, total: '10', successful: '1', successful_http: '1', success_rate_http: 1 / 10 } + { day: '2024-01-10', success_rate: 5 / 10, total: '10', successful: '5', successful_http: '3', success_rate_http: 3 / 10, success_rate_http_head: 3 / 10 }, + { day: '2024-01-20', success_rate: 1 / 10, total: '10', successful: '1', successful_http: '1', success_rate_http: 1 / 10, success_rate_http_head: 1 / 10 } ]) }) it('filters out miners with zero RSR when asked', async () => { - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 1, minerId: 'f1one', successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 0, minerId: 'f1two', successfulHttp: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 1, minerId: 'f1one', successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', total: 10, successful: 0, minerId: 'f1two', successfulHttp: 0, successfulHttpHead: 0 }) const res = await fetch( new URL( @@ -200,19 +200,19 @@ describe('HTTP request handler', () => { await res.json() ) assert.deepStrictEqual(stats, [ - { day: '2024-01-20', success_rate: 1 / 10, successful: '1', total: '10', successful_http: '1', success_rate_http: 1 / 10 } + { day: '2024-01-20', success_rate: 1 / 10, successful: '1', total: '10', successful_http: '1', success_rate_http: 1 / 10, success_rate_http_head: 1 / 10 } ]) }) it('preserves additional query string arguments when redirecting', async () => { const day = today() - await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 1, minerId: 'f1one', successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 0, minerId: 'f1two', successfulHttp: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 1, minerId: 'f1one', successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day, total: 10, successful: 0, minerId: 'f1two', successfulHttp: 0, successfulHttpHead: 0 }) const res = await fetch(new URL('/retrieval-success-rate?nonZero=true', baseUrl), { redirect: 'follow' }) await assertResponseStatus(res, 200) const stats = await res.json() assert.deepStrictEqual(stats, [ - { day, success_rate: 0.1, successful: '1', total: '10', successful_http: '1', success_rate_http: 0.1 } + { day, success_rate: 0.1, successful: '1', total: '10', successful_http: '1', success_rate_http: 0.1, success_rate_http_head: 0.1 } ]) }) it('handles successful_http values 0, null, undefined', async () => { @@ -231,9 +231,9 @@ describe('HTTP request handler', () => { await assertResponseStatus(res, 200) const stats = await res.json() assert.deepStrictEqual(stats, [ - { day: '2024-01-20', success_rate: 0.1, successful: '1', total: '10', successful_http: '0', success_rate_http: 0 }, - { day: '2024-01-21', success_rate: 0.1, successful: '1', total: '10', successful_http: null, success_rate_http: null }, - { day: '2024-01-22', success_rate: 0.1, successful: '1', total: '10', successful_http: null, success_rate_http: null } + { day: '2024-01-20', success_rate: 0.1, successful: '1', total: '10', successful_http: '0', success_rate_http: 0, success_rate_http_head: null }, + { day: '2024-01-21', success_rate: 0.1, successful: '1', total: '10', successful_http: null, success_rate_http: null, success_rate_http_head: null }, + { day: '2024-01-22', success_rate: 0.1, successful: '1', total: '10', successful_http: null, success_rate_http: null, success_rate_http_head: null } ]) }) }) @@ -422,14 +422,14 @@ describe('HTTP request handler', () => { describe('GET /miners/retrieval-success-rate/summary', () => { it('returns a summary of miners RSR for the given date range', async () => { // before the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 20, successfulHttp: 10 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 20, successfulHttp: 10, successfulHttpHead: 10 }) // in the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1two', total: 200, successful: 150, successfulHttp: 100 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0, successfulHttpHead: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-11', minerId: 'f1two', total: 200, successful: 150, successfulHttp: 100, successfulHttpHead: 100 }) // after the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-12', minerId: 'f1one', total: 30, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-12', minerId: 'f1two', total: 300, successful: 60, successfulHttp: 60 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-12', minerId: 'f1one', total: 30, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-12', minerId: 'f1two', total: 300, successful: 60, successfulHttp: 60, successfulHttpHead: 60 }) const res = await fetch( new URL( @@ -442,8 +442,8 @@ describe('HTTP request handler', () => { await assertResponseStatus(res, 200) const stats = await res.json() assert.deepStrictEqual(stats, [ - { miner_id: 'f1one', success_rate: 0.05, total: '20', successful: '1', successful_http: '0', success_rate_http: 0 }, - { miner_id: 'f1two', success_rate: 0.75, total: '200', successful: '150', successful_http: '100', success_rate_http: 100 / 200 } + { miner_id: 'f1one', success_rate: 0.05, total: '20', successful: '1', successful_http: '0', success_rate_http: 0, success_rate_http_head: 0 }, + { miner_id: 'f1two', success_rate: 0.75, total: '200', successful: '150', successful_http: '100', success_rate_http: 100 / 200, success_rate_http_head: 100 / 200 } ]) }) it('handles successful_http values 0, null, undefined', async () => { @@ -465,7 +465,7 @@ describe('HTTP request handler', () => { let stats = await res.json() assert.deepStrictEqual(stats, [ // If there is a single number we expect any undefined or null values to be converted to 0 by Postgres - { miner_id: 'f1one', total: '30', successful: '3', success_rate: 0.1, successful_http: '0', success_rate_http: 0 } + { miner_id: 'f1one', total: '30', successful: '3', success_rate: 0.1, successful_http: '0', success_rate_http: 0, success_rate_http_head: null } ]) res = await fetch( @@ -479,8 +479,8 @@ describe('HTTP request handler', () => { await assertResponseStatus(res, 200) stats = await res.json() assert.deepStrictEqual(stats, [ - { miner_id: 'f2two', total: '10', successful: '1', success_rate: 0.1, successful_http: null, success_rate_http: null }, - { miner_id: 'f3three', total: '20', successful: '2', success_rate: 0.1, successful_http: null, success_rate_http: null } + { miner_id: 'f2two', total: '10', successful: '1', success_rate: 0.1, successful_http: null, success_rate_http: null, success_rate_http_head: null }, + { miner_id: 'f3three', total: '20', successful: '2', success_rate: 0.1, successful_http: null, success_rate_http: null, success_rate_http_head: null } ] ) }) @@ -729,16 +729,16 @@ describe('HTTP request handler', () => { describe('GET /miner/{id}/retrieval-success-rate/summary', () => { it('lists daily retrieval stats summary for specified miner in given date range', async () => { // before the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-09', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-09', minerId: 'f1two', total: 100, successful: 20, successfulHttp: 10 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-09', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-09', minerId: 'f1two', total: 100, successful: 20, successfulHttp: 10, successfulHttpHead: 10 }) // in the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', minerId: 'f1two', total: 200, successful: 60, successfulHttp: 50 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 50, successfulHttp: 35 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', minerId: 'f1one', total: 20, successful: 1, successfulHttp: 0, successfulHttpHead: 0 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-20', minerId: 'f1two', total: 200, successful: 60, successfulHttp: 50, successfulHttpHead: 50 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1one', total: 10, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-10', minerId: 'f1two', total: 100, successful: 50, successfulHttp: 35, successfulHttpHead: 35 }) // after the range - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-21', minerId: 'f1one', total: 30, successful: 1, successfulHttp: 1 }) - await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-21', minerId: 'f1two', total: 300, successful: 60, successfulHttp: 60 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-21', minerId: 'f1one', total: 30, successful: 1, successfulHttp: 1, successfulHttpHead: 1 }) + await givenRetrievalStats(pgPools.evaluate, { day: '2024-01-21', minerId: 'f1two', total: 300, successful: 60, successfulHttp: 60, successfulHttpHead: 60 }) const res = await fetch( new URL( @@ -754,8 +754,8 @@ describe('HTTP request handler', () => { await res.json() ) assert.deepStrictEqual(stats, [ - { day: '2024-01-10', success_rate: 1 / 10, total: '10', successful: '1', successful_http: '1', success_rate_http: 1 / 10 }, - { day: '2024-01-20', success_rate: 1 / 20, total: '20', successful: '1', successful_http: '0', success_rate_http: 0 } + { day: '2024-01-10', success_rate: 1 / 10, total: '10', successful: '1', successful_http: '1', success_rate_http: 1 / 10, success_rate_http_head: 1 / 10 }, + { day: '2024-01-20', success_rate: 1 / 20, total: '20', successful: '1', successful_http: '0', success_rate_http: 0, success_rate_http_head: 0 } ]) }) }) @@ -847,11 +847,12 @@ describe('HTTP request handler', () => { * @param {number | bigint} data.total * @param {number | bigint } data.successful * @param {number | bigint} [data.successfulHttp] + * @param {number | bigint} [data.successfulHttpHead] */ -const givenRetrievalStats = async (pgPool, { day, minerId, total, successful, successfulHttp }) => { +const givenRetrievalStats = async (pgPool, { day, minerId, total, successful, successfulHttp, successfulHttpHead }) => { await pgPool.query( - 'INSERT INTO retrieval_stats (day, miner_id, total, successful, successful_http) VALUES ($1, $2, $3, $4, $5)', - [day, minerId ?? 'f1test', total, successful, successfulHttp] + 'INSERT INTO retrieval_stats (day, miner_id, total, successful, successful_http, successful_http_head) VALUES ($1, $2, $3, $4, $5, $6)', + [day, minerId ?? 'f1test', total, successful, successfulHttp, successfulHttpHead] ) } From b584eb7428729bb7e1b020a10e5dd4ff40f19e9e Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Fri, 28 Feb 2025 14:37:16 +0100 Subject: [PATCH 2/2] update spark-evaluate --- db/package.json | 2 +- observer/package.json | 2 +- package-lock.json | 503 ++++++++++++------------------------------ stats/package.json | 2 +- 4 files changed, 138 insertions(+), 371 deletions(-) diff --git a/db/package.json b/db/package.json index 18cca58..11f504e 100644 --- a/db/package.json +++ b/db/package.json @@ -12,7 +12,7 @@ "standard": "^17.1.2" }, "dependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "pg": "^8.13.3", "postgrator": "^8.0.0" }, diff --git a/observer/package.json b/observer/package.json index 7be73e6..477b844 100644 --- a/observer/package.json +++ b/observer/package.json @@ -10,7 +10,7 @@ "test": "mocha" }, "devDependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "mocha": "^11.1.0", "standard": "^17.1.2" }, diff --git a/package-lock.json b/package-lock.json index 1856ed9..e03245f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "name": "@filecoin-station/spark-stats-db", "version": "1.0.0", "dependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "pg": "^8.13.3", "postgrator": "^8.0.0" }, @@ -326,82 +326,38 @@ } }, "node_modules/@filecoin-station/spark-evaluate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@filecoin-station/spark-evaluate/-/spark-evaluate-1.0.4.tgz", - "integrity": "sha512-5KbBALxXJNbWVm2JRHItOnru4Nd2TFztIn1TOQ6VBcsuSp5nCgZAJitNIuB84amoiF3JrAetV1fTePgIoCwuEA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@filecoin-station/spark-evaluate/-/spark-evaluate-1.2.0.tgz", + "integrity": "sha512-5pVy7KoEk3SsQ/D3FHy0ZR9iPuBe54XpwAOVX/7f6+melHAN/rjWIVDTRyYWJvao9nQVF2GRrnq/Pc/L7EBI+g==", "dependencies": { "@filecoin-station/spark-impact-evaluator": "^1.2.4", "@glif/filecoin-address": "^3.0.12", "@influxdata/influxdb-client": "^1.35.0", "@ipld/car": "^5.4.0", "@ipld/dag-json": "^10.2.3", - "@sentry/node": "^8.50.0", - "@ucanto/core": "^10.2.0", - "@ucanto/principal": "^9.0.1", - "@web3-storage/car-block-validator": "^1.2.0", + "@sentry/node": "^9.2.0", + "@ucanto/core": "^10.3.1", + "@ucanto/principal": "^9.0.2", + "@web3-storage/car-block-validator": "^1.2.1", "@web3-storage/w3up-client": "^16.5.2", "debug": "^4.4.0", "drand-client": "^1.2.6", "ethers": "^6.13.5", - "ipfs-car": "^1.2.0", "ipfs-unixfs-exporter": "^13.6.1", "just-percentile": "^4.2.0", "k-closest": "^1.3.0", "ms": "^2.1.3", - "multiformats": "^13.3.1", + "multiformats": "^13.3.2", "p-map": "^7.0.3", "p-retry": "^6.2.1", - "pg": "^8.13.1", + "pg": "^8.13.3", "postgrator": "^8.0.0" } }, - "node_modules/@filecoin-station/spark-evaluate/node_modules/@opentelemetry/api-logs": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.53.0.tgz", - "integrity": "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@filecoin-station/spark-evaluate/node_modules/@prisma/instrumentation": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-5.22.0.tgz", - "integrity": "sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.8", - "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0", - "@opentelemetry/sdk-trace-base": "^1.22" - } - }, - "node_modules/@filecoin-station/spark-evaluate/node_modules/@prisma/instrumentation/node_modules/@opentelemetry/instrumentation": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.53.0.tgz", - "integrity": "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.53.0", - "@types/shimmer": "^1.2.0", - "import-in-the-middle": "^1.8.1", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@filecoin-station/spark-evaluate/node_modules/@sentry/node": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-8.54.0.tgz", - "integrity": "sha512-z9ak481OtCw3V4l55ke/9FOiorF2J/niO1J1gvGefXpgFucpw0M3qqEFjB5cpg9HoZM8Y1WtA1OFusfTAnvcXg==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-9.2.0.tgz", + "integrity": "sha512-QDOCIs8hTnwPE34FwYL1oIQneqpqyl85MOEfHnv1K7WZ4XYaHMvlJi1vSDr155buFC9K6JkINTw5yJmU1Pi5mA==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.9.0", @@ -427,33 +383,32 @@ "@opentelemetry/instrumentation-mongoose": "0.46.0", "@opentelemetry/instrumentation-mysql": "0.45.0", "@opentelemetry/instrumentation-mysql2": "0.45.0", - "@opentelemetry/instrumentation-nestjs-core": "0.44.0", - "@opentelemetry/instrumentation-pg": "0.50.0", + "@opentelemetry/instrumentation-pg": "0.51.0", "@opentelemetry/instrumentation-redis-4": "0.46.0", "@opentelemetry/instrumentation-tedious": "0.18.0", "@opentelemetry/instrumentation-undici": "0.10.0", "@opentelemetry/resources": "^1.30.1", "@opentelemetry/sdk-trace-base": "^1.30.1", "@opentelemetry/semantic-conventions": "^1.28.0", - "@prisma/instrumentation": "5.22.0", - "@sentry/core": "8.54.0", - "@sentry/opentelemetry": "8.54.0", - "import-in-the-middle": "^1.11.2" + "@prisma/instrumentation": "6.2.1", + "@sentry/core": "9.2.0", + "@sentry/opentelemetry": "9.2.0", + "import-in-the-middle": "^1.12.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@filecoin-station/spark-evaluate/node_modules/@sentry/opentelemetry": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-8.54.0.tgz", - "integrity": "sha512-Tkmd8bmXMx0PKZF53ywk/FfvDrphX8NdPH5N53HxyMvGxSf2trZkTuOSFJg6zKibyGYO6+PUeGO3g2WJKUxwGA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.2.0.tgz", + "integrity": "sha512-ksd3M+KXuHt5vsPcqyy77YxVP0yb27J2LD19fasiybOPedb90XjynEk29zVBmW2iEPt8Ddw55FKDNVnHFEbUjw==", "license": "MIT", "dependencies": { - "@sentry/core": "8.54.0" + "@sentry/core": "9.2.0" }, "engines": { - "node": ">=14.18" + "node": ">=18" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", @@ -464,18 +419,6 @@ "@opentelemetry/semantic-conventions": "^1.28.0" } }, - "node_modules/@filecoin-station/spark-evaluate/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@filecoin-station/spark-impact-evaluator": { "version": "1.2.4", "license": "(Apache-2.0 AND MIT)", @@ -649,22 +592,6 @@ "rabin-rs": "^2.1.0" } }, - "node_modules/@ipld/unixfs/node_modules/@multiformats/murmur3": { - "version": "2.1.8", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0", - "murmurhash3js-revisited": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@ipld/unixfs/node_modules/@multiformats/murmur3/node_modules/multiformats": { - "version": "13.3.1", - "license": "Apache-2.0 OR MIT" - }, "node_modules/@ipld/unixfs/node_modules/multiformats": { "version": "11.0.2", "license": "Apache-2.0 OR MIT", @@ -794,31 +721,33 @@ } }, "node_modules/@multiformats/blake2": { - "version": "1.0.13", - "license": "(Apache-2.0 AND MIT)", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@multiformats/blake2/-/blake2-2.0.2.tgz", + "integrity": "sha512-AOWu6Tyuk5UoT5m4faB6ntVnPB8EmuD6rn18s4cCgHNEGgsamT8GdvjP9DYjzFHQVaP/0L3CaKqWQqJlXx9ecw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "blakejs": "^1.1.1", - "multiformats": "^9.5.4" + "blakejs": "^1.2.1", + "multiformats": "^13.0.0" } }, - "node_modules/@multiformats/blake2/node_modules/multiformats": { - "version": "9.9.0", - "license": "(Apache-2.0 AND MIT)" - }, "node_modules/@multiformats/murmur3": { - "version": "1.1.3", - "license": "(Apache-2.0 AND MIT)", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-2.1.8.tgz", + "integrity": "sha512-6vId1C46ra3R1sbJUOFCZnsUIveR9oF20yhPmAFxPm0JfrX3/ZRCgP3YDrBzlGoEppOXnA9czHeYc0T9mB6hbA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^9.5.4", + "multiformats": "^13.0.0", "murmurhash3js-revisited": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@multiformats/murmur3/node_modules/multiformats": { - "version": "9.9.0", - "license": "(Apache-2.0 AND MIT)" - }, "node_modules/@multiformats/sha3": { "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@multiformats/sha3/-/sha3-2.0.17.tgz", + "integrity": "sha512-7ik6pk178qLO2cpNucgf48UnAOBMkq/2H92DP4SprZOJqM9zqbVaKS7XyYW6UvhRsDJ3wi921fYv1ihTtQHLtA==", "license": "(Apache-2.0 AND MIT)", "dependencies": { "js-sha3": "^0.8.0", @@ -827,6 +756,8 @@ }, "node_modules/@multiformats/sha3/node_modules/multiformats": { "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", "license": "(Apache-2.0 AND MIT)" }, "node_modules/@noble/curves": { @@ -1283,31 +1214,15 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-nestjs-core": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.44.0.tgz", - "integrity": "sha512-t16pQ7A4WYu1yyQJZhRKIfUNvl5PAaF2pEteLvgJb/BWdd1oNuU1rOYt4S825kMy+0q4ngiX281Ss9qiwHfxFQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.57.0", - "@opentelemetry/semantic-conventions": "^1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.50.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.50.0.tgz", - "integrity": "sha512-TtLxDdYZmBhFswm8UIsrDjh/HFBeDXd4BLmE8h2MxirNHewLJ0VS9UUddKKEverb5Sm2qFVjqRjcU+8Iw4FJ3w==", + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.0.tgz", + "integrity": "sha512-/NStIcUWUofc11dL7tSgMk25NqvhtbHDCncgm+yc4iJF8Ste2Q/lwUitjfxqj4qWM280uFmBEtcmtMMjbjRU7Q==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^1.26.0", "@opentelemetry/instrumentation": "^0.57.0", - "@opentelemetry/semantic-conventions": "1.27.0", + "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.6" @@ -1319,15 +1234,6 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/instrumentation-pg/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/instrumentation-pg/node_modules/@types/pg": { "version": "8.6.1", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", @@ -1528,18 +1434,6 @@ "murmurhash3js-revisited": "^3.0.0" } }, - "node_modules/@perma/map/node_modules/@multiformats/murmur3": { - "version": "2.1.8", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0", - "murmurhash3js-revisited": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "dev": true, @@ -1697,12 +1591,12 @@ } }, "node_modules/@sentry/core": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.54.0.tgz", - "integrity": "sha512-03bWf+D1j28unOocY/5FDB6bUHtYlm6m6ollVejhg45ZmK9iPjdtxNWbrLsjT1WRym0Tjzowu+A3p+eebYEv0Q==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.2.0.tgz", + "integrity": "sha512-REnEuneWyv3DkZfr0ZCQOZRCkBxUuWMY7aJ7BwWU9t3CFRUIPO0ePiXb2eZJEkDtalJK+m9pSTDUbChtrzQmLA==", "license": "MIT", "engines": { - "node": ">=14.18" + "node": ">=18" } }, "node_modules/@sentry/node": { @@ -1750,26 +1644,6 @@ "node": ">=18" } }, - "node_modules/@sentry/node/node_modules/@opentelemetry/instrumentation-pg": { - "version": "0.51.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.51.0.tgz", - "integrity": "sha512-/NStIcUWUofc11dL7tSgMk25NqvhtbHDCncgm+yc4iJF8Ste2Q/lwUitjfxqj4qWM280uFmBEtcmtMMjbjRU7Q==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "^1.26.0", - "@opentelemetry/instrumentation": "^0.57.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.40.1", - "@types/pg": "8.6.1", - "@types/pg-pool": "2.0.6" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, "node_modules/@sentry/node/node_modules/@sentry/core": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.1.0.tgz", @@ -1779,72 +1653,6 @@ "node": ">=18" } }, - "node_modules/@sentry/node/node_modules/@types/pg": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", - "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" - } - }, - "node_modules/@sentry/node/node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@sentry/node/node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sentry/node/node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sentry/node/node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@sentry/node/node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@sentry/opentelemetry": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-9.1.0.tgz", @@ -2000,22 +1808,22 @@ } }, "node_modules/@ucanto/core": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@ucanto/core/-/core-10.2.1.tgz", - "integrity": "sha512-tPLrQUQEbo4d+vFB7hZdbMYaFqqJwczGz3LiGZMW7uWC9g1imFryJcedeLBqiKNYdQmBY70Yuj9QFDEope6mfQ==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@ucanto/core/-/core-10.3.1.tgz", + "integrity": "sha512-P4McvR1T7a+FJknWgn8B62WZs/tnL5qTpZWkaRI4dL85AICjfGmnns4ebAq0R0rkz2wrcGuBZEOB7/mwnxbH9w==", "license": "(Apache-2.0 AND MIT)", "dependencies": { "@ipld/car": "^5.1.0", "@ipld/dag-cbor": "^9.0.0", "@ipld/dag-ucan": "^3.4.5", - "@ucanto/interface": "^10.1.1", + "@ucanto/interface": "^10.2.0", "multiformats": "^13.3.1" } }, "node_modules/@ucanto/interface": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@ucanto/interface/-/interface-10.1.1.tgz", - "integrity": "sha512-FHSA7eAN1pbJyzcMRFs9ioHlPQUpE3CfHxLGkCF9AU4HMl7G2YdgzeeOdiD3Li7Ur7EFUwEhZDoVMNKGH+7h1g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@ucanto/interface/-/interface-10.2.0.tgz", + "integrity": "sha512-k49byxjAKJEW+ru1RBJ8VNCBCxWSMY7P25DqOocCGECUfod38uqj4Z5dmvlM8ax3HRd7U5MTp+B9Q/gzWXnjfQ==", "license": "(Apache-2.0 AND MIT)", "dependencies": { "@ipld/dag-ucan": "^3.4.5", @@ -2023,26 +1831,20 @@ } }, "node_modules/@ucanto/principal": { - "version": "9.0.1", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@ucanto/principal/-/principal-9.0.2.tgz", + "integrity": "sha512-RE3Rj0oz4wh4C9p2JJZB9+QLd7Fi3lCixrbHgAvEoSyTNpvz6ky8DGNtttmD5j3O94z13qdVdIoSRY6DQZXfAg==", "license": "(Apache-2.0 AND MIT)", "dependencies": { - "@ipld/dag-ucan": "^3.4.0", + "@ipld/dag-ucan": "^3.4.5", "@noble/curves": "^1.2.0", "@noble/ed25519": "^1.7.3", "@noble/hashes": "^1.3.2", - "@ucanto/interface": "^10.0.0", - "multiformats": "^11.0.2", + "@ucanto/interface": "^10.1.1", + "multiformats": "^13.3.1", "one-webcrypto": "^1.0.3" } }, - "node_modules/@ucanto/principal/node_modules/multiformats": { - "version": "11.0.2", - "license": "Apache-2.0 OR MIT", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@ucanto/transport": { "version": "9.1.1", "license": "(Apache-2.0 AND MIT)", @@ -2169,25 +1971,25 @@ } }, "node_modules/@web3-storage/car-block-validator": { - "version": "1.2.0", - "license": "(Apache-2.0 AND MIT)", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@web3-storage/car-block-validator/-/car-block-validator-1.2.1.tgz", + "integrity": "sha512-ueVZXReusjE//5BGLBEoRzyMVZcTJSoz4KOZjX6+mDHAdmjXDxWB+/+23PP8XPGwgyTdxt+s9xEPK0vZkW0oLQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@multiformats/blake2": "^1.0.13", - "@multiformats/murmur3": "^1.1.3", + "@multiformats/blake2": "^2.0.2", + "@multiformats/murmur3": "^2.1.8", "@multiformats/sha3": "^2.0.15", - "multiformats": "9.9.0", - "uint8arrays": "^3.1.1" + "multiformats": "^13.3.1", + "uint8arrays": "^5.1.0" } }, - "node_modules/@web3-storage/car-block-validator/node_modules/multiformats": { - "version": "9.9.0", - "license": "(Apache-2.0 AND MIT)" - }, "node_modules/@web3-storage/car-block-validator/node_modules/uint8arrays": { - "version": "3.1.1", - "license": "MIT", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "multiformats": "^9.4.2" + "multiformats": "^13.0.0" } }, "node_modules/@web3-storage/data-segment": { @@ -3898,6 +3700,8 @@ }, "node_modules/eventemitter3": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/fast-decode-uri-component": { @@ -4058,16 +3862,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/files-from-path": { - "version": "1.1.1", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "graceful-fs": "^4.2.10" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/fill-range": { "version": "7.1.1", "dev": true, @@ -4340,6 +4134,7 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", + "dev": true, "license": "ISC" }, "node_modules/graphemer": { @@ -4349,6 +4144,8 @@ }, "node_modules/hamt-sharding": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-3.0.6.tgz", + "integrity": "sha512-nZeamxfymIWLpVcAN0CRrb7uVq3hCOGj9IcL6NMA6VVCVWqj+h9Jo/SmaWuS92AEDf1thmHsM5D5c70hM3j2Tg==", "license": "Apache-2.0 OR MIT", "dependencies": { "sparse-array": "^1.3.1", @@ -4357,6 +4154,8 @@ }, "node_modules/hamt-sharding/node_modules/uint8arrays": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" @@ -4554,6 +4353,8 @@ }, "node_modules/interface-blockstore": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-5.3.1.tgz", + "integrity": "sha512-nhgrQnz6yUQEqxTFLhlOBurQOy5lWlwCpgFmZ3GTObTVTQS9RZjK/JTozY6ty9uz2lZs7VFJSqwjWAltorJ4Vw==", "license": "Apache-2.0 OR MIT", "dependencies": { "interface-store": "^6.0.0", @@ -4562,6 +4363,8 @@ }, "node_modules/interface-store": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.2.tgz", + "integrity": "sha512-KSFCXtBlNoG0hzwNa0RmhHtrdhzexp+S+UY2s0rWTBJyfdEIgn6i6Zl9otVqrcFYbYrneBT7hbmHQ8gE0C3umA==", "license": "Apache-2.0 OR MIT" }, "node_modules/internal-slot": { @@ -4584,57 +4387,10 @@ "node": ">= 10" } }, - "node_modules/ipfs-car": { - "version": "1.2.0", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@ipld/car": "^5.1.0", - "@ipld/dag-cbor": "^9.0.0", - "@ipld/dag-json": "^10.0.1", - "@ipld/dag-pb": "^4.0.2", - "@ipld/unixfs": "^3.0.0", - "@web3-storage/car-block-validator": "^1.0.1", - "files-from-path": "^1.0.0", - "ipfs-unixfs-exporter": "^13.0.1", - "multiformats": "^13.0.1", - "sade": "^1.8.1", - "varint": "^6.0.0" - }, - "bin": { - "🚘": "bin.js", - "ipfs-car": "bin.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ipfs-car/node_modules/@ipld/unixfs": { - "version": "3.0.0", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@ipld/dag-pb": "^4.0.0", - "@multiformats/murmur3": "^2.1.3", - "@perma/map": "^1.0.2", - "actor": "^2.3.1", - "multiformats": "^13.0.1", - "protobufjs": "^7.1.2", - "rabin-rs": "^2.1.0" - } - }, - "node_modules/ipfs-car/node_modules/@multiformats/murmur3": { - "version": "2.1.8", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0", - "murmurhash3js-revisited": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/ipfs-unixfs": { "version": "11.2.0", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-11.2.0.tgz", + "integrity": "sha512-J8FN1qM5nfrDo8sQKQwfj0+brTg1uBfZK2vY9hxci33lcl3BFrsELS9+1+4q/8tO1ASKfxZO8W3Pi2O4sVX2Lg==", "license": "Apache-2.0 OR MIT", "dependencies": { "protons-runtime": "^5.5.0", @@ -4643,6 +4399,8 @@ }, "node_modules/ipfs-unixfs-exporter": { "version": "13.6.1", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-13.6.1.tgz", + "integrity": "sha512-pYPI4oBTWao2//sFzAL0pURyojn79q/u5BuK6L5/nVbVUQVw6DcVP5uB1ySdWlTM2H+0Zlhp9+OL9aJBRIICpg==", "license": "Apache-2.0 OR MIT", "dependencies": { "@ipld/dag-cbor": "^9.2.1", @@ -4663,18 +4421,6 @@ "progress-events": "^1.0.1" } }, - "node_modules/ipfs-unixfs-exporter/node_modules/@multiformats/murmur3": { - "version": "2.1.8", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0", - "murmurhash3js-revisited": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/ipfs-utils": { "version": "9.0.14", "license": "Apache-2.0 OR MIT", @@ -5103,6 +4849,8 @@ }, "node_modules/it-filter": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz", + "integrity": "sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-peekable": "^3.0.0" @@ -5118,10 +4866,14 @@ }, "node_modules/it-last": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-last/-/it-last-3.0.6.tgz", + "integrity": "sha512-M4/get95O85u2vWvWQinF8SJUc/RPC5bWTveBTYXvlP2q5TF9Y+QhT3nz+CRCyS2YEc66VJkyl/da6WrJ0wKhw==", "license": "Apache-2.0 OR MIT" }, "node_modules/it-map": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", + "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-peekable": "^3.0.0" @@ -5129,6 +4881,8 @@ }, "node_modules/it-merge": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.5.tgz", + "integrity": "sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-pushable": "^3.2.3" @@ -5136,6 +4890,8 @@ }, "node_modules/it-parallel": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", + "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", "license": "Apache-2.0 OR MIT", "dependencies": { "p-defer": "^4.0.1" @@ -5143,10 +4899,14 @@ }, "node_modules/it-peekable": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.5.tgz", + "integrity": "sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==", "license": "Apache-2.0 OR MIT" }, "node_modules/it-pipe": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", + "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", "license": "Apache-2.0 OR MIT", "dependencies": { "it-merge": "^3.0.0", @@ -5160,6 +4920,8 @@ }, "node_modules/it-pushable": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz", + "integrity": "sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==", "license": "Apache-2.0 OR MIT", "dependencies": { "p-defer": "^4.0.0" @@ -5167,6 +4929,8 @@ }, "node_modules/it-stream-types": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.2.tgz", + "integrity": "sha512-Rz/DEZ6Byn/r9+/SBCuJhpPATDF9D+dz5pbgSUyBsCDtza6wtNATrz/jz1gDyNanC3XdLboriHnOC925bZRBww==", "license": "Apache-2.0 OR MIT" }, "node_modules/it-to-stream": { @@ -5218,6 +4982,8 @@ }, "node_modules/js-sha3": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", "license": "MIT" }, "node_modules/js-tokens": { @@ -5647,19 +5413,14 @@ "version": "1.0.3", "license": "MIT" }, - "node_modules/mri": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/ms": { "version": "2.1.3", "license": "MIT" }, "node_modules/multiformats": { - "version": "13.3.1", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.3.2.tgz", + "integrity": "sha512-qbB0CQDt3QKfiAzZ5ZYjLFOs+zW43vA4uyM8g27PeEuXZybUOFyjrVdP93HPBHMoglibwfkdVwbzfUq8qGcH6g==", "license": "Apache-2.0 OR MIT" }, "node_modules/murmurhash3js-revisited": { @@ -5959,7 +5720,9 @@ } }, "node_modules/p-queue": { - "version": "8.0.1", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", + "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", @@ -5988,7 +5751,9 @@ } }, "node_modules/p-timeout": { - "version": "6.1.3", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", "license": "MIT", "engines": { "node": ">=14.16" @@ -6446,6 +6211,8 @@ }, "node_modules/progress-events": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.1.tgz", + "integrity": "sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==", "license": "Apache-2.0 OR MIT" }, "node_modules/prop-types": { @@ -6482,6 +6249,8 @@ }, "node_modules/protons-runtime": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.5.0.tgz", + "integrity": "sha512-EsALjF9QsrEk6gbCx3lmfHxVN0ah7nG3cY7GySD4xf4g8cr7g543zB88Foh897Sr1RQJ9yDCUsoT1i1H/cVUFA==", "license": "Apache-2.0 OR MIT", "dependencies": { "uint8-varint": "^2.0.2", @@ -6491,6 +6260,8 @@ }, "node_modules/protons-runtime/node_modules/uint8arrays": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" @@ -6750,16 +6521,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/sade": { - "version": "1.8.1", - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/safe-array-concat": { "version": "1.1.2", "dev": true, @@ -6971,6 +6732,8 @@ }, "node_modules/sparse-array": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", + "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==", "license": "ISC" }, "node_modules/split2": { @@ -7403,6 +7166,8 @@ }, "node_modules/uint8-varint": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz", + "integrity": "sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==", "license": "Apache-2.0 OR MIT", "dependencies": { "uint8arraylist": "^2.0.0", @@ -7411,6 +7176,8 @@ }, "node_modules/uint8-varint/node_modules/uint8arrays": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "license": "Apache-2.0 OR MIT", "dependencies": { "multiformats": "^13.0.0" @@ -7751,7 +7518,7 @@ "slug": "^10.0.0" }, "devDependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "mocha": "^11.1.0", "standard": "^17.1.2" } @@ -7770,7 +7537,7 @@ "pg": "^8.13.3" }, "devDependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "mocha": "^11.1.0", "standard": "^17.1.2" } diff --git a/stats/package.json b/stats/package.json index ab5fa33..c668495 100644 --- a/stats/package.json +++ b/stats/package.json @@ -9,7 +9,7 @@ "test": "mocha" }, "devDependencies": { - "@filecoin-station/spark-evaluate": "^1.0.4", + "@filecoin-station/spark-evaluate": "^1.2.0", "mocha": "^11.1.0", "standard": "^17.1.2" },