diff --git a/packages/express/.gitignore b/packages/express/.gitignore new file mode 100644 index 0000000..6f1b72b --- /dev/null +++ b/packages/express/.gitignore @@ -0,0 +1,2 @@ +.env.* +tmp \ No newline at end of file diff --git a/packages/express/index.js b/packages/express/index.js new file mode 100644 index 0000000..fe07125 --- /dev/null +++ b/packages/express/index.js @@ -0,0 +1,78 @@ +import express from 'express' +import pinataSDK from "@pinata/sdk"; +import axios from "axios"; +import { exec } from "child_process"; +import fs from "fs"; +import { Livepeer } from "livepeer"; +import "dotenv/config" + +const pinata = new pinataSDK({ pinataJWTKey: process.env.PINATA_JWT }); +const app = express() +const port = 4000 +app.use(express.json()) + +const livepeer = new Livepeer({ + apiKey: process.env.LIVEPEER_API_KEY, +}); + +app.post('/', async (req, res) => { + console.log(req.body) + const body = req.body + const playbackId = body.playbackId; + const playbackInfo = await livepeer.playback.get(playbackId); + const videoUrl = playbackInfo.playbackInfo?.meta.source[0]?.url; + + const mp4FilePath = `video-${playbackId}.mp4`; + const mp4FileStream = fs.createWriteStream(mp4FilePath); + const response = await axios.get(String(videoUrl), { responseType: "stream" }); + + response.data.pipe(mp4FileStream); + + await new Promise((resolve, reject) => { + mp4FileStream.on("finish", resolve); + mp4FileStream.on("error", e => { + console.log(e); + reject(e); + }); + }); + console.log("mp4 file downloaded..."); + + // Convert MP4 to GIF using FFmpeg + const gifFilePath = `output-${playbackId}.gif`; + await new Promise((resolve, reject) => { + exec( + `ffmpeg -i ${mp4FilePath} -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif -loop 0 ${gifFilePath}`, + error => { + if (error) { + console.log(error); + reject(error); + return; + } + resolve(); + }, + ); + }); + console.log("gif generated..."); + + const readableStreamForFile = fs.createReadStream(gifFilePath); + const options = { + pinataMetadata: { + name: "gif", + }, + }; + const result = await pinata.pinFileToIPFS(readableStreamForFile, options); + console.log(result); + const { IpfsHash } = result; + + const gifUrl = `https://ipfs.io/ipfs/${IpfsHash}`; + fs.unlinkSync(gifFilePath); + fs.unlinkSync(mp4FilePath); + + res.send(JSON.stringify({ + gifUrl: gifUrl + })) +}) + +app.listen(port, () => { + console.log(`Example app listening on port ${port}`) +}) \ No newline at end of file diff --git a/packages/express/package.json b/packages/express/package.json new file mode 100644 index 0000000..9d789ba --- /dev/null +++ b/packages/express/package.json @@ -0,0 +1,20 @@ +{ + "name": "watch-clip-mint-express", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "type": "module", + "dependencies": { + "@pinata/sdk": "2.1.0", + "express": "4.19.2", + "livepeer": "^3.0.2" + }, + "devDependencies": { + "dotenv": "^16.4.5" + }, + "author": "", + "license": "ISC" +} diff --git a/packages/nextjs/app/slow-fetch/route.ts b/packages/nextjs/app/slow-fetch/route.ts index 2d56d85..864c7ec 100644 --- a/packages/nextjs/app/slow-fetch/route.ts +++ b/packages/nextjs/app/slow-fetch/route.ts @@ -1,48 +1,10 @@ import { NextRequest, NextResponse } from "next/server"; // import { DEFAULT_DEBUGGER_HUB_URL } from "../debug"; import { RandomNumberRequestStateValue } from "./types"; -import pinataSDK from "@pinata/sdk"; import { kv } from "@vercel/kv"; -import axios from "axios"; -import { exec } from "child_process"; import { getFrameMessage } from "frames.js"; -import fs from "fs"; -import { Livepeer } from "livepeer"; - -// import { PinataFDK } from "pinata-fdk"; const MAXIMUM_KV_RESULT_LIFETIME_IN_SECONDS = 10 * 60; // 10 minutes -const pinata = new pinataSDK({ pinataJWTKey: process.env.PINATA_JWT }); - -// const fdk = new PinataFDK({ -// pinata_jwt: String(process.env.PINATA_JWT), -// pinata_gateway: String(process.env.PINATA_GATEWAY), -// }); - -// async function pollUrlUntilResponse(url: string, expectedResponse: string, interval: number, maxAttempts: number) { -// let attempts = 0; -// // const axios = require("axios"); -// while (attempts < maxAttempts) { -// try { -// const response = await axios.get(url, { -// headers: { -// Authorization: `Bearer ${process.env.LIVEPEER_API_KEY}`, -// }, -// }); -// if (response.data.status.phase == expectedResponse) { -// console.log("got the download url..."); -// return response.data.downloadUrl; -// } -// } catch (error) { -// // Handle errors if necessary -// console.error("Error:", error); -// throw new Error("Error polling url"); -// } -// await new Promise(resolve => setTimeout(resolve, interval)); -// attempts++; -// } -// throw new Error(`Max attempts (${maxAttempts}) reached without receiving the expected response.`); -// } export async function POST(req: NextRequest) { const body = await req.json(); @@ -52,102 +14,23 @@ export async function POST(req: NextRequest) { const uniqueId = `fid:${frameMessage.requesterFid}`; try { - // const frame_id = `${frameMessage.requesterFid}`; - // const custom_id = "frameNFT"; - - console.log("sending analytics..."); console.log(body.postBody); - // const analyticsRes = await fdk.sendAnalytics(frame_id, body.postBody, custom_id); - // console.log(analyticsRes); + const playbackId = frameMessage.inputText; if (!playbackId) { return NextResponse.json({ message: "Playback ID is required" }, { status: 400 }); } - const livepeer = new Livepeer({ - apiKey: process.env.LIVEPEER_API_KEY, - }); - - //clipping random livestream - // console.log("creating clip"); - // const result = await livepeer.stream.createClip({ - // /** - // * Playback ID of the stream or asset to clip - // */ - // playbackId: playbackId, - // /** - // * Start time of the clip in milliseconds - // */ - // startTime: Date.now() - 7000, - // /** - // * End time of the clip in milliseconds - // */ - // endTime: Date.now() - 5000, - // }); - // console.log(result.object?.asset); - - // const url = `https://livepeer.studio/api/asset/${result.object?.asset.id}`; - // const expectedResponse = "ready"; - // const pollingInterval = 5000; // 5 seconds (in milliseconds) - // const maxAttempts = 100; - - // const downloadUrl = await pollUrlUntilResponse(url, expectedResponse, pollingInterval, maxAttempts); - - // fetch the playback info on the server - const playbackInfo = await livepeer.playback.get(playbackId); - const videoUrl = playbackInfo.playbackInfo?.meta.source[0]?.url; - console.log(videoUrl); - // const videoUrl = downloadUrl; - - // console.log("playback info ", playbackInfo.playbackInfo?.meta.source[0]); - - // Download MP4 video file - const mp4FilePath = `/tmp/video-${playbackId}.mp4`; - const mp4FileStream = fs.createWriteStream(mp4FilePath); - const response = await axios.get(String(videoUrl), { responseType: "stream" }); - - response.data.pipe(mp4FileStream); - - await new Promise((resolve, reject) => { - mp4FileStream.on("finish", resolve); - mp4FileStream.on("error", e => { - console.log(e); - reject(e); - }); - }); - console.log("mp4 file downloaded..."); - - // Convert MP4 to GIF using FFmpeg - const gifFilePath = `/tmp/output-${playbackId}.gif`; - fs.closeSync(fs.openSync(gifFilePath, "w")); - await new Promise((resolve, reject) => { - exec( - `npx ffmpeg -i ${mp4FilePath} -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif -loop 0 ${gifFilePath} --loglevel=verbose`, - error => { - if (error) { - console.log(error); - reject(error); - return; - } - resolve(); - }, - ); - }); - console.log("gif generated..."); - - const readableStreamForFile = fs.createReadStream(gifFilePath); - const options = { - pinataMetadata: { - name: "gif", + const response = await fetch(String(process.env.NODE_LIVEPEER_SERVER), { + method: "POST", + headers: { + "Content-Type": "application/json", }, - }; - const res = await pinata.pinFileToIPFS(readableStreamForFile, options); - console.log(res); - const { IpfsHash } = res; - - const gifUrl = `https://ipfs.io/ipfs/${IpfsHash}`; - fs.unlinkSync(gifFilePath); - fs.unlinkSync(mp4FilePath); + body: JSON.stringify({ + playbackId: playbackId, + }), + }); + const { gifUrl } = await response.json(); await kv.set( uniqueId, { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 49912c3..efa92f7 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -18,7 +18,6 @@ "@farcaster/core": "^0.14.3", "@ffmpeg-installer/darwin-arm64": "^4.1.5", "@ffmpeg-installer/ffmpeg": "^1.1.0", - "@ffmpeg-installer/linux-x64": "^4.1.0", "@heroicons/react": "~2.0.11", "@livepeer/react": "^4.1.11", "@noble/ed25519": "^2.0.0", diff --git a/yarn.lock b/yarn.lock index 26819b0..a667456 100644 --- a/yarn.lock +++ b/yarn.lock @@ -874,7 +874,7 @@ __metadata: languageName: node linkType: hard -"@ffmpeg-installer/linux-x64@npm:4.1.0, @ffmpeg-installer/linux-x64@npm:^4.1.0": +"@ffmpeg-installer/linux-x64@npm:4.1.0": version: 4.1.0 resolution: "@ffmpeg-installer/linux-x64@npm:4.1.0" conditions: os=linux & cpu=x64 @@ -2967,7 +2967,6 @@ __metadata: "@farcaster/core": ^0.14.3 "@ffmpeg-installer/darwin-arm64": ^4.1.5 "@ffmpeg-installer/ffmpeg": ^1.1.0 - "@ffmpeg-installer/linux-x64": ^4.1.0 "@frames.js/debugger": ^0.1.6 "@heroicons/react": ~2.0.11 "@livepeer/react": ^4.1.11 @@ -4973,6 +4972,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: ~2.1.34 + negotiator: 0.6.3 + checksum: 50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -5304,6 +5313,13 @@ __metadata: languageName: node linkType: hard +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: a9925bf3512d9dce202112965de90c222cd59a4fbfce68a0951d25d965cf44642931f40aac72309c41f12df19afa010ecadceb07cfff9ccc1621e99d89ab5f3b + languageName: node + linkType: hard + "array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": version: 3.1.8 resolution: "array-includes@npm:3.1.8" @@ -5705,6 +5721,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:1.20.2": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 + languageName: node + linkType: hard + "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -6588,6 +6624,15 @@ __metadata: languageName: node linkType: hard +"content-disposition@npm:0.5.4": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: 5.2.1 + checksum: afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + languageName: node + linkType: hard + "content-type@npm:1.0.4": version: 1.0.4 resolution: "content-type@npm:1.0.4" @@ -6595,6 +6640,13 @@ __metadata: languageName: node linkType: hard +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 + languageName: node + linkType: hard + "convert-hrtime@npm:^3.0.0": version: 3.0.0 resolution: "convert-hrtime@npm:3.0.0" @@ -6609,6 +6661,20 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: f4e1b0a98a27a0e6e66fd7ea4e4e9d8e038f624058371bf4499cfcd8f3980be9a121486995202ba3fca74fbed93a407d6d54d43a43f96fd28d0bd7a06761591a + languageName: node + linkType: hard + +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 + languageName: node + linkType: hard + "cookie@npm:^0.4.1": version: 0.4.2 resolution: "cookie@npm:0.4.2" @@ -6874,6 +6940,15 @@ __metadata: languageName: node linkType: hard +"debug@npm:2.6.9": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + languageName: node + linkType: hard + "debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -7064,6 +7139,13 @@ __metadata: languageName: node linkType: hard +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + languageName: node + linkType: hard + "detect-browser@npm:5.3.0, detect-browser@npm:^5.3.0": version: 5.3.0 resolution: "detect-browser@npm:5.3.0" @@ -7255,10 +7337,17 @@ __metadata: languageName: node linkType: hard +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.668": - version: 1.4.726 - resolution: "electron-to-chromium@npm:1.4.726" - checksum: f323d49eaa5a11a1a06cce08a2d015567f84b669e10642c528845b8d2db7b0d39f177960534daf64ce1aaaf70fe6bf73f27958c307f79502aede7deca4da1238 + version: 1.4.728 + resolution: "electron-to-chromium@npm:1.4.728" + checksum: e17ec490aa8c14119693ef22b1ae308b104dfa9f553032360dd9a0d3a7eee0ab26ff254e0005a2c7f9605d25e5cc48f93fb396cb9a53f740f6e0f3e7b5265e6b languageName: node linkType: hard @@ -7320,6 +7409,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -7747,7 +7843,7 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:^1.0.3": +"escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" checksum: 6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 @@ -8223,7 +8319,7 @@ __metadata: languageName: node linkType: hard -"etag@npm:1.8.1": +"etag@npm:1.8.1, etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff @@ -8573,6 +8669,45 @@ __metadata: languageName: node linkType: hard +"express@npm:4.19.2": + version: 4.19.2 + resolution: "express@npm:4.19.2" + dependencies: + accepts: ~1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: ~1.0.4 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: ~1.1.2 + on-finished: 2.4.1 + parseurl: ~1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: ~2.0.7 + qs: 6.11.0 + range-parser: ~1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: ~1.6.18 + utils-merge: 1.0.1 + vary: ~1.1.2 + checksum: 212dbd6c2c222a96a61bc927639c95970a53b06257080bb9e2838adb3bffdb966856551fdad1ab5dd654a217c35db94f987d0aa88d48fb04d306340f5f34dca5 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -8692,6 +8827,21 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + dependencies: + debug: 2.6.9 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + on-finished: 2.4.1 + parseurl: ~1.3.3 + statuses: 2.0.1 + unpipe: ~1.0.0 + checksum: 92effbfd32e22a7dff2994acedbd9bcc3aa646a3e919ea6a53238090e87097f8ef07cced90aa2cc421abdf993aefbdd5b00104d55c7c5479a8d00ed105b45716 + languageName: node + linkType: hard + "find-replace@npm:^3.0.0": version: 3.0.0 resolution: "find-replace@npm:3.0.0" @@ -8817,6 +8967,13 @@ __metadata: languageName: node linkType: hard +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: fd27e2394d8887ebd16a66ffc889dc983fbbd797d5d3f01087c020283c0f019a7d05ee85669383d8e0d216b116d720fc0cef2f6e9b7eb9f4c90c6e0bc7fd28e6 + languageName: node + linkType: hard + "fp-ts@npm:1.19.3": version: 1.19.3 resolution: "fp-ts@npm:1.19.3" @@ -8856,6 +9013,13 @@ __metadata: languageName: node linkType: hard +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + languageName: node + linkType: hard + "fs-extra@npm:11.1.0": version: 11.1.0 resolution: "fs-extra@npm:11.1.0" @@ -10008,6 +10172,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: f88d3825981486f5a1942414c8d77dd6674dd71c065adcfa46f578d677edcb99fda25af42675cb59db492fdf427b34a5abfcde3982da11a8fd83a500b41cfe77 + languageName: node + linkType: hard + "iron-webcrypto@npm:^1.0.0": version: 1.1.0 resolution: "iron-webcrypto@npm:1.1.0" @@ -11186,6 +11357,13 @@ __metadata: languageName: node linkType: hard +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + languageName: node + linkType: hard + "memory-level@npm:^1.0.0": version: 1.0.0 resolution: "memory-level@npm:1.0.0" @@ -11204,6 +11382,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 5abc259d2ae25bb06d19ce2b94a21632583c74e2a9109ee1ba7fd147aa7362b380d971e0251069f8b3eb7d48c21ac839e21fa177b335e82c76ec172e30c31a26 + languageName: node + linkType: hard + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -11218,6 +11403,13 @@ __metadata: languageName: node linkType: hard +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + languageName: node + linkType: hard + "micro-ftch@npm:^0.3.1": version: 0.3.1 resolution: "micro-ftch@npm:0.3.1" @@ -11255,7 +11447,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12": +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -11264,6 +11456,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -11563,6 +11764,13 @@ __metadata: languageName: node linkType: hard +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + languageName: node + linkType: hard + "ms@npm:2.1.1": version: 2.1.1 resolution: "ms@npm:2.1.1" @@ -11726,7 +11934,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 @@ -12228,6 +12436,15 @@ __metadata: languageName: node linkType: hard +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: 1.1.1 + checksum: d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + languageName: node + linkType: hard + "once@npm:1.x, once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -12484,6 +12701,13 @@ __metadata: languageName: node linkType: hard +"parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + languageName: node + linkType: hard + "path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" @@ -12553,6 +12777,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 69a14ea24db543e8b0f4353305c5eac6907917031340e5a8b37df688e52accd09e3cebfe1660b70d76b6bd89152f52183f28c74813dbf454ba1a01c82a38abce + languageName: node + linkType: hard + "path-to-regexp@npm:6.1.0": version: 6.1.0 resolution: "path-to-regexp@npm:6.1.0" @@ -13004,6 +13235,16 @@ __metadata: languageName: node linkType: hard +"proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + checksum: 29c6990ce9364648255454842f06f8c46fcd124d3e6d7c5066df44662de63cdc0bad032e9bf5a3d653ff72141cc7b6019873d685708ac8210c30458ad99f2b74 + languageName: node + linkType: hard + "proxy-compare@npm:2.5.1": version: 2.5.1 resolution: "proxy-compare@npm:2.5.1" @@ -13058,6 +13299,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: ^1.0.4 + checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 + languageName: node + linkType: hard + "qs@npm:^6.4.0, qs@npm:^6.9.4": version: 6.12.0 resolution: "qs@npm:6.12.0" @@ -13121,6 +13371,13 @@ __metadata: languageName: node linkType: hard +"range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 0a268d4fea508661cf5743dfe3d5f47ce214fd6b7dec1de0da4d669dd4ef3d2144468ebe4179049eff253d9d27e719c88dae55be64f954e80135a0cada804ec9 + languageName: node + linkType: hard + "raw-body@npm:2.4.1": version: 2.4.1 resolution: "raw-body@npm:2.4.1" @@ -13133,7 +13390,7 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:^2.4.1": +"raw-body@npm:2.5.2, raw-body@npm:^2.4.1": version: 2.5.2 resolution: "raw-body@npm:2.5.2" dependencies: @@ -13679,7 +13936,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -13839,6 +14096,27 @@ __metadata: languageName: node linkType: hard +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + etag: ~1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: ~1.2.1 + statuses: 2.0.1 + checksum: 74fc07ebb58566b87b078ec63e5a3e41ecd987e4272ba67b7467e86c6ad51bc6b0b0154133b6d8b08a2ddda360464f71382f7ef864700f34844a76c8027817a8 + languageName: node + linkType: hard + "serialize-javascript@npm:6.0.0": version: 6.0.0 resolution: "serialize-javascript@npm:6.0.0" @@ -13848,6 +14126,18 @@ __metadata: languageName: node linkType: hard +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + parseurl: ~1.3.3 + send: 0.18.0 + checksum: af57fc13be40d90a12562e98c0b7855cf6e8bd4c107fe9a45c212bf023058d54a1871b1c89511c3958f70626fff47faeb795f5d83f8cf88514dbaeb2b724464d + languageName: node + linkType: hard + "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" @@ -15112,6 +15402,16 @@ __metadata: languageName: node linkType: hard +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: 0.3.0 + mime-types: ~2.1.24 + checksum: 2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + languageName: node + linkType: hard + "typechain@npm:~8.1.0": version: 8.1.1 resolution: "typechain@npm:8.1.1" @@ -15401,7 +15701,7 @@ __metadata: languageName: node linkType: hard -"unpipe@npm:1.0.0": +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" checksum: 4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 @@ -15593,6 +15893,13 @@ __metadata: languageName: node linkType: hard +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: c81095493225ecfc28add49c106ca4f09cdf56bc66731aa8dabc2edbbccb1e1bfe2de6a115e5c6a380d3ea166d1636410b62ef216bb07b3feb1cfde1d95d5080 + languageName: node + linkType: hard + "uuid@npm:3.3.2": version: 3.3.2 resolution: "uuid@npm:3.3.2" @@ -15652,6 +15959,13 @@ __metadata: languageName: node linkType: hard +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + languageName: node + linkType: hard + "vercel@npm:~32.4.1": version: 32.4.1 resolution: "vercel@npm:32.4.1" @@ -15759,6 +16073,17 @@ __metadata: languageName: node linkType: hard +"watch-clip-mint-express@workspace:packages/express": + version: 0.0.0-use.local + resolution: "watch-clip-mint-express@workspace:packages/express" + dependencies: + "@pinata/sdk": 2.1.0 + dotenv: ^16.4.5 + express: 4.19.2 + livepeer: ^3.0.2 + languageName: unknown + linkType: soft + "watchpack@npm:2.4.0": version: 2.4.0 resolution: "watchpack@npm:2.4.0"