From b7aab02ed3477f82600e45171201a269573d2003 Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Sat, 4 Oct 2025 13:05:10 +0530 Subject: [PATCH 01/38] added automation script --- .github/workflows/vercel-error-monitor.yml | 27 +++++++ error-hashes.json | 1 + monitor-vercel-errors.js | 87 ++++++++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 .github/workflows/vercel-error-monitor.yml create mode 100644 error-hashes.json create mode 100644 monitor-vercel-errors.js diff --git a/.github/workflows/vercel-error-monitor.yml b/.github/workflows/vercel-error-monitor.yml new file mode 100644 index 00000000..261b132c --- /dev/null +++ b/.github/workflows/vercel-error-monitor.yml @@ -0,0 +1,27 @@ +name: Vercel Error Monitor + +on: + schedule: + - cron: '0 */6 * * *' # every 6 hours + workflow_dispatch: # manual trigger + +jobs: + monitor-errors: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install Vercel CLI + run: npm i -g vercel + + - name: Run Monitor Script + env: + VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VERCEL_DEPLOYMENT_URL: https://jsonresume-org.vercel.app + run: node scripts/monitor-vercel-errors.js diff --git a/error-hashes.json b/error-hashes.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/error-hashes.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/monitor-vercel-errors.js b/monitor-vercel-errors.js new file mode 100644 index 00000000..889f11f1 --- /dev/null +++ b/monitor-vercel-errors.js @@ -0,0 +1,87 @@ +const fs = require('fs'); +const crypto = require('crypto'); +const { execSync } = require('child_process'); + +const DEPLOYMENT_URL = process.env.VERCEL_DEPLOYMENT_URL || "https://jsonresume-org.vercel.app"; +const hashFile = 'error-hashes.json'; + +// Fetch logs +function fetchLogs() { + try { + const output = execSync(`vercel logs ${DEPLOYMENT_URL} --token ${process.env.VERCEL_TOKEN} --limit 200`, { encoding: "utf8" }); + return output.split("\n"); + } catch (err) { + console.error("Failed to fetch logs:", err.message); + return []; + } +} + +const logs = fetchLogs(); + +// Collect multi-line error blocks +const errorBlocks = []; +let block = []; +logs.forEach(line => { + if (line.toLowerCase().includes("error") || block.length) { + block.push(line); + if (line.trim() === "") { + errorBlocks.push(block); + block = []; + } + } +}); +if (block.length) errorBlocks.push(block); + +// Load existing hashes +let existingHashes = []; +if (fs.existsSync(hashFile)) { + try { + const data = JSON.parse(fs.readFileSync(hashFile, 'utf-8')); + existingHashes = Array.isArray(data) ? data : []; + } catch { + console.warn('Invalid hash file, resetting.'); + existingHashes = []; + } +} + +function getHash(str) { + return crypto.createHash('sha1').update(str).digest('hex'); +} + +// Deduplicate and create issues +const newErrors = []; +errorBlocks.forEach(block => { + const fullError = block.join("\n"); + const hash = getHash(fullError); + + if (!existingHashes.includes(hash)) { + newErrors.push({ block, hash }); + existingHashes.push(hash); + + const title = `[Vercel Error] ${block[0].substring(0, 80)}`; + const body = `## Auto-generated Error Report + +\`\`\` +${fullError} +\`\`\` + +Generated automatically from Vercel logs.`; + + try { + execSync( + `gh issue create --repo jsonresume/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, + { stdio: 'inherit' } + ); + console.log(`Created GitHub issue for: ${block[0]}`); + } catch (e) { + console.error(`❌ Failed to create issue:`, e.message); + } + } +}); + +// Save updated hashes +fs.writeFileSync(hashFile, JSON.stringify(existingHashes, null, 2)); + +if (newErrors.length === 0) { + console.log('No new unique errors to report.'); +} From 39e017732c6654199e7d6933de36f8d668ed8338 Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Sat, 4 Oct 2025 13:32:32 +0530 Subject: [PATCH 02/38] reorganize --- error-hashes.json => scripts/error-hashes.json | 0 monitor-vercel-errors.js => scripts/monitor-vercel-errors.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename error-hashes.json => scripts/error-hashes.json (100%) rename monitor-vercel-errors.js => scripts/monitor-vercel-errors.js (91%) diff --git a/error-hashes.json b/scripts/error-hashes.json similarity index 100% rename from error-hashes.json rename to scripts/error-hashes.json diff --git a/monitor-vercel-errors.js b/scripts/monitor-vercel-errors.js similarity index 91% rename from monitor-vercel-errors.js rename to scripts/monitor-vercel-errors.js index 889f11f1..7c11fefe 100644 --- a/monitor-vercel-errors.js +++ b/scripts/monitor-vercel-errors.js @@ -69,7 +69,7 @@ Generated automatically from Vercel logs.`; try { execSync( - `gh issue create --repo jsonresume/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, + `gh issue create --repo a-y-a-n-das/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, { stdio: 'inherit' } ); console.log(`Created GitHub issue for: ${block[0]}`); From 0e6af9dd9e1ed72058bb789d56cd769930146f41 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:37:58 +0530 Subject: [PATCH 03/38] Update monitor-vercel-errors.js Checking the script by using "warn" as keyword as the deployment doesnt have any error now. --- scripts/monitor-vercel-errors.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/monitor-vercel-errors.js b/scripts/monitor-vercel-errors.js index 7c11fefe..264e1892 100644 --- a/scripts/monitor-vercel-errors.js +++ b/scripts/monitor-vercel-errors.js @@ -22,7 +22,7 @@ const logs = fetchLogs(); const errorBlocks = []; let block = []; logs.forEach(line => { - if (line.toLowerCase().includes("error") || block.length) { + if (line.toLowerCase().includes("warn") || block.length) { //error or warn block.push(line); if (line.trim() === "") { errorBlocks.push(block); @@ -85,3 +85,4 @@ fs.writeFileSync(hashFile, JSON.stringify(existingHashes, null, 2)); if (newErrors.length === 0) { console.log('No new unique errors to report.'); } + From a43f8c4de35f8b250dc31204b3987c0baf4a3967 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sat, 4 Oct 2025 13:45:59 +0530 Subject: [PATCH 04/38] Update monitor-vercel-errors.js Parameter update --- scripts/monitor-vercel-errors.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/monitor-vercel-errors.js b/scripts/monitor-vercel-errors.js index 264e1892..8b18d034 100644 --- a/scripts/monitor-vercel-errors.js +++ b/scripts/monitor-vercel-errors.js @@ -2,13 +2,13 @@ const fs = require('fs'); const crypto = require('crypto'); const { execSync } = require('child_process'); -const DEPLOYMENT_URL = process.env.VERCEL_DEPLOYMENT_URL || "https://jsonresume-org.vercel.app"; +const DEPLOYMENT_NAME = process.env.VERCEL_DEPLOYMENT_NAME || "jsonresume-org-homepage2"; const hashFile = 'error-hashes.json'; // Fetch logs function fetchLogs() { try { - const output = execSync(`vercel logs ${DEPLOYMENT_URL} --token ${process.env.VERCEL_TOKEN} --limit 200`, { encoding: "utf8" }); + const output = execSync(`vercel logs ${DEPLOYMENT_NAME} --token ${process.env.VERCEL_TOKEN}`, { encoding: "utf8" }); return output.split("\n"); } catch (err) { console.error("Failed to fetch logs:", err.message); @@ -86,3 +86,4 @@ if (newErrors.length === 0) { console.log('No new unique errors to report.'); } + From 6851f10ef7ddc3f6825a38af9d7cf18b5c422a93 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sat, 4 Oct 2025 15:50:52 +0530 Subject: [PATCH 05/38] Update monitor-vercel-errors.js Conclusion --- scripts/monitor-vercel-errors.js | 120 ++++++++++++++----------------- 1 file changed, 55 insertions(+), 65 deletions(-) diff --git a/scripts/monitor-vercel-errors.js b/scripts/monitor-vercel-errors.js index 8b18d034..a1e8a857 100644 --- a/scripts/monitor-vercel-errors.js +++ b/scripts/monitor-vercel-errors.js @@ -2,88 +2,78 @@ const fs = require('fs'); const crypto = require('crypto'); const { execSync } = require('child_process'); -const DEPLOYMENT_NAME = process.env.VERCEL_DEPLOYMENT_NAME || "jsonresume-org-homepage2"; +const DEPLOYMENT_URL = "https://jsonresume-org-homepage2-9zdb0ytck-ayan-das-projects-afcc9401.vercel.app"; const hashFile = 'error-hashes.json'; -// Fetch logs -function fetchLogs() { - try { - const output = execSync(`vercel logs ${DEPLOYMENT_NAME} --token ${process.env.VERCEL_TOKEN}`, { encoding: "utf8" }); - return output.split("\n"); - } catch (err) { - console.error("Failed to fetch logs:", err.message); - return []; - } +function getHash(str) { + return crypto.createHash('sha1').update(str).digest('hex'); } -const logs = fetchLogs(); - -// Collect multi-line error blocks -const errorBlocks = []; -let block = []; -logs.forEach(line => { - if (line.toLowerCase().includes("warn") || block.length) { //error or warn - block.push(line); - if (line.trim() === "") { - errorBlocks.push(block); - block = []; - } - } -}); -if (block.length) errorBlocks.push(block); - // Load existing hashes let existingHashes = []; if (fs.existsSync(hashFile)) { try { - const data = JSON.parse(fs.readFileSync(hashFile, 'utf-8')); - existingHashes = Array.isArray(data) ? data : []; + existingHashes = JSON.parse(fs.readFileSync(hashFile, 'utf-8')); + if (!Array.isArray(existingHashes)) existingHashes = []; } catch { console.warn('Invalid hash file, resetting.'); existingHashes = []; } } -function getHash(str) { - return crypto.createHash('sha1').update(str).digest('hex'); +// Fetch logs (this will continuously stream runtime logs) +function fetchLogs() { + try { + return execSync(`vercel logs ${DEPLOYMENT_URL} --token ${process.env.VERCEL_TOKEN}`, { encoding: 'utf8' }).split('\n'); + } catch (err) { + console.error('Failed to fetch logs:', err.message); + return []; + } } -// Deduplicate and create issues -const newErrors = []; -errorBlocks.forEach(block => { - const fullError = block.join("\n"); - const hash = getHash(fullError); - - if (!existingHashes.includes(hash)) { - newErrors.push({ block, hash }); - existingHashes.push(hash); - - const title = `[Vercel Error] ${block[0].substring(0, 80)}`; - const body = `## Auto-generated Error Report - -\`\`\` -${fullError} -\`\`\` - -Generated automatically from Vercel logs.`; - - try { - execSync( - `gh issue create --repo a-y-a-n-das/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, - { stdio: 'inherit' } - ); - console.log(`Created GitHub issue for: ${block[0]}`); - } catch (e) { - console.error(`❌ Failed to create issue:`, e.message); +// Process logs +function processLogs(logs) { + const errorBlocks = []; + let block = []; + + logs.forEach(line => { + if (line.toLowerCase().includes('error') || block.length) { + block.push(line); + if (line.trim() === '') { + errorBlocks.push(block); + block = []; + } } - } -}); - -// Save updated hashes -fs.writeFileSync(hashFile, JSON.stringify(existingHashes, null, 2)); + }); + if (block.length) errorBlocks.push(block); + + const newErrors = []; + errorBlocks.forEach(block => { + const fullError = block.join('\n'); + const hash = getHash(fullError); + if (!existingHashes.includes(hash)) { + newErrors.push({ block, hash }); + existingHashes.push(hash); + + const title = `[Vercel Error] ${block[0].substring(0, 80)}`; + const body = `## Auto-generated Error Report\n\n\`\`\`\n${fullError}\n\`\`\`\n\nGenerated automatically from Vercel logs.`; + + try { + execSync( + `gh issue create --repo a-y-a-n-das/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, + { stdio: 'inherit' } + ); + console.log(`Created GitHub issue for: ${block[0]}`); + } catch (e) { + console.error(`❌ Failed to create issue:`, e.message); + } + } + }); -if (newErrors.length === 0) { - console.log('No new unique errors to report.'); + fs.writeFileSync(hashFile, JSON.stringify(existingHashes, null, 2)); + if (newErrors.length === 0) console.log('No new unique errors to report.'); } - +// Main +const logs = fetchLogs(); +processLogs(logs); From f2588accc4f1f6c7ca799e30e4f05768ed38225c Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sat, 4 Oct 2025 16:26:50 +0530 Subject: [PATCH 06/38] Update monitor-vercel-errors.js Conclusion From 0af3f2a5a96e1e15529841328fb39508bfae708c Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Sun, 5 Oct 2025 22:25:11 +0530 Subject: [PATCH 07/38] Add Sentry to GitHub issue fetch workflow --- .github/workflows/fetch-issue.yml | 33 ++++++++++++ apps/homepage2/pages/api/test-error.js | 16 ++++++ scripts/sentry-to-github.js | 70 ++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 .github/workflows/fetch-issue.yml create mode 100644 apps/homepage2/pages/api/test-error.js create mode 100644 scripts/sentry-to-github.js diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml new file mode 100644 index 00000000..fd62854e --- /dev/null +++ b/.github/workflows/fetch-issue.yml @@ -0,0 +1,33 @@ +name: fetch-issue-sentry + +on: + schedule: + - cron: "0 * * * *" # runs every hour + workflow_dispatch: # allows manual trigger + +jobs: + fetch-issues: + runs-on: ubuntu-latest + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install dependencies + run: pnpm install + env: + NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Run Sentry to GitHub script + run: | + node --env-file=.env.local scripts/sentry-to-github.js + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/homepage2/pages/api/test-error.js b/apps/homepage2/pages/api/test-error.js new file mode 100644 index 00000000..afdb9d63 --- /dev/null +++ b/apps/homepage2/pages/api/test-error.js @@ -0,0 +1,16 @@ + +import Sentry from '../../sentry'; + +console.log("SENTRY_DSN =", process.env.SENTRY_DSN); + +export default async function handler(req, res) { + try { + throw new Error("🚨 Test Sentry error"); + } catch (err) { + console.log("Sending error to Sentry:", err.message); + Sentry.captureException(err); + + await Sentry.flush(2000); // wait max 2s + res.status(500).json({ message: "Error sent to Sentry" }); + } +} \ No newline at end of file diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js new file mode 100644 index 00000000..e993c3b3 --- /dev/null +++ b/scripts/sentry-to-github.js @@ -0,0 +1,70 @@ +// scripts/sentry-to-github.js +import fetch from 'node-fetch'; +import dotenv from 'dotenv'; +dotenv.config(); + + + +const SENTRY_AUTH_TOKEN = process.env.SENTRY_AUTH_TOKEN; +const SENTRY_ORG = process.env.SENTRY_ORG; +const SENTRY_PROJECT = process.env.SENTRY_PROJECT; +const GITHUB_TOKEN = process.env.GITHUB_TOKEN; +const GITHUB_REPO = process.env.GITHUB_REPO; // "owner/repo" format + +console.log(`${SENTRY_AUTH_TOKEN}`); +// Sentry issues +async function fetchSentryIssues() { + const url = `https://sentry.io/api/0/projects/${SENTRY_ORG}/${SENTRY_PROJECT}/issues/?query=is:unresolved&statsPeriod=24h`; + const res = await fetch(url, { + headers: { Authorization: `Bearer ${SENTRY_AUTH_TOKEN}` }, + }); + if (!res.ok) throw new Error(`Sentry fetch failed: ${res.statusText}`); + return res.json(); +} + +// Check if GitHub issue exists by title +async function githubIssueExists(title) { + const url = `https://api.github.com/repos/${GITHUB_REPO}/issues?state=open&per_page=100`; + const res = await fetch(url, { + headers: { Authorization: `token ${GITHUB_TOKEN}` }, + }); + const issues = await res.json(); + return issues.some((issue) => issue.title === title); +} + +// Create GitHub issue +async function createGithubIssue(title, body) { + const url = `https://api.github.com/repos/${GITHUB_REPO}/issues`; + const res = await fetch(url, { + method: 'POST', + headers: { + Authorization: `token ${GITHUB_TOKEN}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ title, body }), + }); + if (!res.ok) throw new Error(`GitHub issue creation failed: ${res.statusText}`); + const data = await res.json(); + console.log(`Created GitHub issue #${data.number}: ${title}`); +} + +// Main +(async () => { + try { + const sentryIssues = await fetchSentryIssues(); + + for (const issue of sentryIssues) { + const title = issue.title; + const body = `Sentry Issue: [${title}](${issue.permalink})\n\nLast seen: ${issue.lastSeen}\nPlatform: ${issue.platform}`; + + const exists = await githubIssueExists(title); + if (!exists) { + await createGithubIssue(title, body); + } else { + console.log(`Issue already exists: ${title}`); + } + } + } catch (err) { + console.error("Error in Sentry -> GitHub workflow:", err); + } +})(); From 5b4f6d2f66ab329ac92b2bdbf115c9d04995e9f9 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:32:10 +0530 Subject: [PATCH 08/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index fd62854e..1c7d7e72 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -1,9 +1,9 @@ name: fetch-issue-sentry on: - schedule: - - cron: "0 * * * *" # runs every hour - workflow_dispatch: # allows manual trigger + #schedule: + # - cron: "0 * * * *" + workflow_dispatch: jobs: fetch-issues: @@ -31,3 +31,4 @@ jobs: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From 88665e9a8de2a247f019b10d85da8e97fbed9b20 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:33:55 +0530 Subject: [PATCH 09/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 1c7d7e72..ff0dbecb 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -1,6 +1,10 @@ name: fetch-issue-sentry on: +push: + branches: + - "sentry-to-github-issue" + #schedule: # - cron: "0 * * * *" workflow_dispatch: @@ -32,3 +36,4 @@ jobs: SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From 1da98a01ccbd027dc9ac988ba956ecbcea1c6e26 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:36:30 +0530 Subject: [PATCH 10/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index ff0dbecb..b2ed6ae7 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -1,7 +1,7 @@ name: fetch-issue-sentry on: -push: + push: branches: - "sentry-to-github-issue" @@ -37,3 +37,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From 8b9084f9997576b6c77e354150953a860c694a7c Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:38:36 +0530 Subject: [PATCH 11/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index b2ed6ae7..ca2fa34f 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -22,6 +22,10 @@ jobs: with: node-version: 20 + - name: Setup pnpm + run: npm install -g pnpm + + - name: Install dependencies run: pnpm install env: @@ -38,3 +42,4 @@ jobs: + From 0483cd69738a02a178d5827878fe648390e99c5b Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:40:29 +0530 Subject: [PATCH 12/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index ca2fa34f..6984cb84 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -33,7 +33,7 @@ jobs: - name: Run Sentry to GitHub script run: | - node --env-file=.env.local scripts/sentry-to-github.js + node scripts/sentry-to-github.js env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} @@ -43,3 +43,4 @@ jobs: + From 12904d4230587b3b4ccaca17e88909992e12a62f Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:44:13 +0530 Subject: [PATCH 13/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 6984cb84..d8c9038b 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -25,6 +25,8 @@ jobs: - name: Setup pnpm run: npm install -g pnpm + - name: modules + run: pnpm add node-fetch -w - name: Install dependencies run: pnpm install @@ -44,3 +46,4 @@ jobs: + From bf898642bc969b8a491cbe79c748f8e3f7999ee9 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:09:29 +0530 Subject: [PATCH 14/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index d8c9038b..d6381430 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -41,6 +41,9 @@ jobs: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_REPO: ${{ secrets.GITHUB_REPO }} + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + From d00d064ef4103839d4326750614431b3faf24314 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:12:35 +0530 Subject: [PATCH 15/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index e993c3b3..91edafee 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -1,7 +1,5 @@ // scripts/sentry-to-github.js import fetch from 'node-fetch'; -import dotenv from 'dotenv'; -dotenv.config(); @@ -68,3 +66,4 @@ async function createGithubIssue(title, body) { console.error("Error in Sentry -> GitHub workflow:", err); } })(); + From f8e48635828987ad33b8d1ff88d0b77f2eb142f3 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:16:20 +0530 Subject: [PATCH 16/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index d6381430..f7d7b95c 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -44,7 +44,20 @@ jobs: GITHUB_REPO: ${{ secrets.GITHUB_REPO }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - + - name: Debug secrets + run: | + echo "SENTRY_ORG=$SENTRY_ORG" + echo "SENTRY_PROJECT=$SENTRY_PROJECT" + echo "GITHUB_REPO=$GITHUB_REPO" + echo "GITHUB_TOKEN length=${#GITHUB_TOKEN}" + env: + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + GITHUB_REPO: ${{ secrets.GITHUB_REPO }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + + From e45f450caa4404ead6d4e355027ec833f33e6acc Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:20:48 +0530 Subject: [PATCH 17/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index f7d7b95c..60673acc 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -53,7 +53,7 @@ jobs: env: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - GITHUB_REPO: ${{ secrets.GITHUB_REPO }} + MY_GITHUB_REPO: ${{ secrets.MY_GITHUB_REPO }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -63,3 +63,4 @@ jobs: + From 761f419279e306310d68bbeaaa176f621eee1734 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:21:11 +0530 Subject: [PATCH 18/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 60673acc..7bba8368 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -41,7 +41,7 @@ jobs: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_REPO: ${{ secrets.GITHUB_REPO }} + MY_GITHUB_REPO: ${{ secrets.MY_GITHUB_REPO }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - name: Debug secrets @@ -64,3 +64,4 @@ jobs: + From f14e1555f2f2b76d73bb3342326d72641e5b83da Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:22:57 +0530 Subject: [PATCH 19/38] Update fetch-issue.yml From aa8ddd2d86f2d82a8ec53d6de072cb0a62566a40 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:28:46 +0530 Subject: [PATCH 20/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 7bba8368..4872cbe8 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -48,7 +48,7 @@ jobs: run: | echo "SENTRY_ORG=$SENTRY_ORG" echo "SENTRY_PROJECT=$SENTRY_PROJECT" - echo "GITHUB_REPO=$GITHUB_REPO" + echo "MY_GITHUB_REPO=$MY_GITHUB_REPO" echo "GITHUB_TOKEN length=${#GITHUB_TOKEN}" env: SENTRY_ORG: ${{ secrets.SENTRY_ORG }} @@ -65,3 +65,4 @@ jobs: + From 8ca1e7bf91410303287dded1bd5ac7321bc0f7b3 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:30:44 +0530 Subject: [PATCH 21/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index 91edafee..d602f0af 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -7,7 +7,7 @@ const SENTRY_AUTH_TOKEN = process.env.SENTRY_AUTH_TOKEN; const SENTRY_ORG = process.env.SENTRY_ORG; const SENTRY_PROJECT = process.env.SENTRY_PROJECT; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; -const GITHUB_REPO = process.env.GITHUB_REPO; // "owner/repo" format +const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format console.log(`${SENTRY_AUTH_TOKEN}`); // Sentry issues @@ -67,3 +67,4 @@ async function createGithubIssue(title, body) { } })(); + From 59590774de0289804ea31ef70aacb13f20a53cb6 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:35:27 +0530 Subject: [PATCH 22/38] Sentry --- apps/homepage2/sentry.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 apps/homepage2/sentry.js diff --git a/apps/homepage2/sentry.js b/apps/homepage2/sentry.js new file mode 100644 index 00000000..1aa5c379 --- /dev/null +++ b/apps/homepage2/sentry.js @@ -0,0 +1,10 @@ +import * as Sentry from "@sentry/node"; + +Sentry.init({ + dsn: process.env.SENTRY_DSN, + tracesSampleRate: 1.0, + sendDefaultPii: true, + environment: process.env.NODE_ENV || "development", +}); + +export default Sentry; \ No newline at end of file From 485846bbc3ee993a6e3c68d85a940754fc26b992 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:42:54 +0530 Subject: [PATCH 23/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index d602f0af..353ee982 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -27,6 +27,7 @@ async function githubIssueExists(title) { headers: { Authorization: `token ${GITHUB_TOKEN}` }, }); const issues = await res.json(); + console.log("GitHub API response for issues:", issues); return issues.some((issue) => issue.title === title); } @@ -68,3 +69,4 @@ async function createGithubIssue(title, body) { })(); + From 4c95cbd72646b69d1e6a72cff9f6e992c64561af Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Sun, 5 Oct 2025 23:49:55 +0530 Subject: [PATCH 24/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index 353ee982..726f2605 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -7,7 +7,8 @@ const SENTRY_AUTH_TOKEN = process.env.SENTRY_AUTH_TOKEN; const SENTRY_ORG = process.env.SENTRY_ORG; const SENTRY_PROJECT = process.env.SENTRY_PROJECT; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; -const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format +//const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format +const GITHUB_REPO = "ayan/jsonresume.org"; // replace with your actual repo console.log(`${SENTRY_AUTH_TOKEN}`); // Sentry issues @@ -70,3 +71,4 @@ async function createGithubIssue(title, body) { + From 9d71cb5417287ef029ff176bbb472c0a030be34b Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:01:42 +0530 Subject: [PATCH 25/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index 726f2605..481c3484 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -8,7 +8,7 @@ const SENTRY_ORG = process.env.SENTRY_ORG; const SENTRY_PROJECT = process.env.SENTRY_PROJECT; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; //const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format -const GITHUB_REPO = "ayan/jsonresume.org"; // replace with your actual repo +const GITHUB_REPO = "a-y-a-n-das/jsonresume.org"; // replace with your actual repo console.log(`${SENTRY_AUTH_TOKEN}`); // Sentry issues @@ -72,3 +72,4 @@ async function createGithubIssue(title, body) { + From 91a3bf4b9a83551c3bfe2681d0bfe6376ffd1812 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:04:49 +0530 Subject: [PATCH 26/38] Update sentry-to-github.js --- scripts/sentry-to-github.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/sentry-to-github.js b/scripts/sentry-to-github.js index 481c3484..d69707b5 100644 --- a/scripts/sentry-to-github.js +++ b/scripts/sentry-to-github.js @@ -7,8 +7,7 @@ const SENTRY_AUTH_TOKEN = process.env.SENTRY_AUTH_TOKEN; const SENTRY_ORG = process.env.SENTRY_ORG; const SENTRY_PROJECT = process.env.SENTRY_PROJECT; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; -//const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format -const GITHUB_REPO = "a-y-a-n-das/jsonresume.org"; // replace with your actual repo +const GITHUB_REPO = process.env.MY_GITHUB_REPO; // "owner/repo" format console.log(`${SENTRY_AUTH_TOKEN}`); // Sentry issues @@ -73,3 +72,4 @@ async function createGithubIssue(title, body) { + From b0301659a798b6618ca147ed0b5cee83bd8becdc Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:05:10 +0530 Subject: [PATCH 27/38] Delete scripts/error-hashes.json --- scripts/error-hashes.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 scripts/error-hashes.json diff --git a/scripts/error-hashes.json b/scripts/error-hashes.json deleted file mode 100644 index 0637a088..00000000 --- a/scripts/error-hashes.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file From ba76e4f2b2209bb4f03e3ab990b3245520ffd431 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:05:19 +0530 Subject: [PATCH 28/38] Delete scripts/monitor-vercel-errors.js --- scripts/monitor-vercel-errors.js | 79 -------------------------------- 1 file changed, 79 deletions(-) delete mode 100644 scripts/monitor-vercel-errors.js diff --git a/scripts/monitor-vercel-errors.js b/scripts/monitor-vercel-errors.js deleted file mode 100644 index a1e8a857..00000000 --- a/scripts/monitor-vercel-errors.js +++ /dev/null @@ -1,79 +0,0 @@ -const fs = require('fs'); -const crypto = require('crypto'); -const { execSync } = require('child_process'); - -const DEPLOYMENT_URL = "https://jsonresume-org-homepage2-9zdb0ytck-ayan-das-projects-afcc9401.vercel.app"; -const hashFile = 'error-hashes.json'; - -function getHash(str) { - return crypto.createHash('sha1').update(str).digest('hex'); -} - -// Load existing hashes -let existingHashes = []; -if (fs.existsSync(hashFile)) { - try { - existingHashes = JSON.parse(fs.readFileSync(hashFile, 'utf-8')); - if (!Array.isArray(existingHashes)) existingHashes = []; - } catch { - console.warn('Invalid hash file, resetting.'); - existingHashes = []; - } -} - -// Fetch logs (this will continuously stream runtime logs) -function fetchLogs() { - try { - return execSync(`vercel logs ${DEPLOYMENT_URL} --token ${process.env.VERCEL_TOKEN}`, { encoding: 'utf8' }).split('\n'); - } catch (err) { - console.error('Failed to fetch logs:', err.message); - return []; - } -} - -// Process logs -function processLogs(logs) { - const errorBlocks = []; - let block = []; - - logs.forEach(line => { - if (line.toLowerCase().includes('error') || block.length) { - block.push(line); - if (line.trim() === '') { - errorBlocks.push(block); - block = []; - } - } - }); - if (block.length) errorBlocks.push(block); - - const newErrors = []; - errorBlocks.forEach(block => { - const fullError = block.join('\n'); - const hash = getHash(fullError); - if (!existingHashes.includes(hash)) { - newErrors.push({ block, hash }); - existingHashes.push(hash); - - const title = `[Vercel Error] ${block[0].substring(0, 80)}`; - const body = `## Auto-generated Error Report\n\n\`\`\`\n${fullError}\n\`\`\`\n\nGenerated automatically from Vercel logs.`; - - try { - execSync( - `gh issue create --repo a-y-a-n-das/jsonresume.org --title "${title}" --body "${body}" --label "vercel-error"`, - { stdio: 'inherit' } - ); - console.log(`Created GitHub issue for: ${block[0]}`); - } catch (e) { - console.error(`❌ Failed to create issue:`, e.message); - } - } - }); - - fs.writeFileSync(hashFile, JSON.stringify(existingHashes, null, 2)); - if (newErrors.length === 0) console.log('No new unique errors to report.'); -} - -// Main -const logs = fetchLogs(); -processLogs(logs); From b87a0f990ecaab76e77d5861683da45c02969ab5 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:09:44 +0530 Subject: [PATCH 29/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 4872cbe8..527547da 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -1,13 +1,13 @@ name: fetch-issue-sentry + on: push: branches: - - "sentry-to-github-issue" - - #schedule: - # - cron: "0 * * * *" - workflow_dispatch: + - sentry-to-github-issue + schedule: + - cron: "0 * * * *" # Runs every hour + workflow_dispatch: jobs: fetch-issues: @@ -43,18 +43,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} MY_GITHUB_REPO: ${{ secrets.MY_GITHUB_REPO }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - - - name: Debug secrets - run: | - echo "SENTRY_ORG=$SENTRY_ORG" - echo "SENTRY_PROJECT=$SENTRY_PROJECT" - echo "MY_GITHUB_REPO=$MY_GITHUB_REPO" - echo "GITHUB_TOKEN length=${#GITHUB_TOKEN}" - env: - SENTRY_ORG: ${{ secrets.SENTRY_ORG }} - SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} - MY_GITHUB_REPO: ${{ secrets.MY_GITHUB_REPO }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -66,3 +54,4 @@ jobs: + From b3b2e1edd0daf5f4d4b38f7f18f7ed812a90c431 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:10:19 +0530 Subject: [PATCH 30/38] Delete .github/workflows/vercel-error-monitor.yml --- .github/workflows/vercel-error-monitor.yml | 27 ---------------------- 1 file changed, 27 deletions(-) delete mode 100644 .github/workflows/vercel-error-monitor.yml diff --git a/.github/workflows/vercel-error-monitor.yml b/.github/workflows/vercel-error-monitor.yml deleted file mode 100644 index 261b132c..00000000 --- a/.github/workflows/vercel-error-monitor.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Vercel Error Monitor - -on: - schedule: - - cron: '0 */6 * * *' # every 6 hours - workflow_dispatch: # manual trigger - -jobs: - monitor-errors: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install Vercel CLI - run: npm i -g vercel - - - name: Run Monitor Script - env: - VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VERCEL_DEPLOYMENT_URL: https://jsonresume-org.vercel.app - run: node scripts/monitor-vercel-errors.js From 2aa61f420b2bfb7187986401d43c105e0646f3ab Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:19:27 +0530 Subject: [PATCH 31/38] Update package.json for server --- package.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/package.json b/package.json index b586700a..1c0a83bf 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,14 @@ "prettier": "^2.8.0", "start-server-and-test": "^2.0.3", "turbo": "^2.0.6" + }, + "packageManager": "pnpm@8.15.9", + "name": "jsonresume.org", + "dependencies": { + "@changesets/cli": "^2.27.1", + "@sentry/node": "^10.17.0", + "dotenv": "^16.6.1", + "node-fetch": "2" }, "packageManager": "pnpm@8.15.9", "name": "jsonresume.org", From 6037bf3199321ca13acfa9d48e13ed52531752a5 Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Mon, 6 Oct 2025 00:30:42 +0530 Subject: [PATCH 32/38] conclusion --- package.json | 11 +- pnpm-lock.yaml | 596 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 591 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 1c0a83bf..4599e2f5 100644 --- a/package.json +++ b/package.json @@ -10,26 +10,19 @@ "ui:add": "pnpm --filter @repo/ui ui:add" }, "devDependencies": { - "eslint": "^8", "@repo/eslint-config-custom": "workspace:*", + "eslint": "^8", "husky": "^8.0.3", "lint-staged": "^15.2.0", "prettier": "^2.8.0", "start-server-and-test": "^2.0.3", "turbo": "^2.0.6" - }, - "packageManager": "pnpm@8.15.9", - "name": "jsonresume.org", - "dependencies": { - "@changesets/cli": "^2.27.1", - "@sentry/node": "^10.17.0", - "dotenv": "^16.6.1", - "node-fetch": "2" }, "packageManager": "pnpm@8.15.9", "name": "jsonresume.org", "dependencies": { "@changesets/cli": "^2.27.1", + "@sentry/node": "^10.17.0", "dotenv": "^16.0.3" }, "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 26b04b5d..8ca57e88 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,6 +26,9 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.29.5 + '@sentry/node': + specifier: ^10.17.0 + version: 10.17.0 dotenv: specifier: ^16.0.3 version: 16.6.1 @@ -119,7 +122,7 @@ importers: version: 4.17.21 next: specifier: ^14.2.32 - version: 14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) + version: 14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) node-html-markdown: specifier: ^1.3.0 version: 1.3.0 @@ -435,7 +438,7 @@ importers: version: 5.1.7 next: specifier: ^14.2.32 - version: 14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) + version: 14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) next-auth: specifier: 5.0.0-beta.18 version: 5.0.0-beta.18(next@14.2.33)(react@18.3.1) @@ -4457,9 +4460,415 @@ packages: '@octokit/webhooks-methods': 5.1.1 dev: false + /@opentelemetry/api-logs@0.204.0: + resolution: {integrity: sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==} + engines: {node: '>=8.0.0'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/api-logs@0.57.2: + resolution: {integrity: sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + /@opentelemetry/api@1.9.0: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + + /@opentelemetry/context-async-hooks@2.1.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/core@2.1.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.37.0 + dev: false + + /@opentelemetry/instrumentation-amqplib@0.51.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-XGmjYwjVRktD4agFnWBWQXo9SiYHKBxR6Ag3MLXwtLE4R99N3a08kGKM5SC1qOFKIELcQDGFEFT9ydXMH00Luw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-connect@0.48.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-OMjc3SFL4pC16PeK+tDhwP7MRvDPalYCGSvGqUhX5rASkI2H0RuxZHOWElYeXkV0WP+70Gw6JHWac/2Zqwmhdw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@types/connect': 3.4.38 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-dataloader@0.22.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-bXnTcwtngQsI1CvodFkTemrrRSQjAjZxqHVc+CJZTDnidT0T6wt3jkKhnsjU/Kkkc0lacr6VdRpCu2CUWa0OKw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-express@0.53.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-r/PBafQmFYRjuxLYEHJ3ze1iBnP2GDA1nXOSS6E02KnYNZAVjj6WcDA1MSthtdAUUK0XnotHvvWM8/qz7DMO5A==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-fs@0.24.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-HjIxJ6CBRD770KNVaTdMXIv29Sjz4C1kPCCK5x1Ujpc6SNnLGPqUVyJYZ3LUhhnHAqdbrl83ogVWjCgeT4Q0yw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-generic-pool@0.48.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-TLv/On8pufynNR+pUbpkyvuESVASZZKMlqCm4bBImTpXKTpqXaJJ3o/MUDeMlM91rpen+PEv2SeyOKcHCSlgag==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-graphql@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-3fEJ8jOOMwopvldY16KuzHbRhPk8wSsOTSF0v2psmOCGewh6ad+ZbkTx/xyUK9rUdUMWAxRVU0tFpj4Wx1vkPA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-hapi@0.51.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-qyf27DaFNL1Qhbo/da+04MSCw982B02FhuOS5/UF+PMhM61CcOiu7fPuXj8TvbqyReQuJFljXE6UirlvoT/62g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-http@0.204.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + forwarded-parse: 2.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-ioredis@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-rUvlyZwI90HRQPYicxpDGhT8setMrlHKokCtBtZgYxQWRF5RBbG4q0pGtbZvd7kyseuHbFpA3I/5z7M8b/5ywg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-kafkajs@0.14.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-kbB5yXS47dTIdO/lfbbXlzhvHFturbux4EpP0+6H78Lk0Bn4QXiZQW7rmZY1xBCY16mNcCb8Yt0mhz85hTnSVA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-knex@0.49.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-NKsRRT27fbIYL4Ix+BjjP8h4YveyKc+2gD6DMZbr5R5rUeDqfC8+DTfIt3c3ex3BIc5Vvek4rqHnN7q34ZetLQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-koa@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-JJSBYLDx/mNSy8Ibi/uQixu2rH0bZODJa8/cz04hEhRaiZQoeJ5UrOhO/mS87IdgVsHrnBOsZ6vDu09znupyuA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-lru-memoizer@0.49.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-ctXu+O/1HSadAxtjoEg2w307Z5iPyLOMM8IRNwjaKrIpNAthYGSOanChbk1kqY6zU5CrpkPHGdAT6jk8dXiMqw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongodb@0.57.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-KD6Rg0KSHWDkik+qjIOWoksi1xqSpix8TSPfquIK1DTmd9OTFb5PHmMkzJe16TAPVEuElUW8gvgP59cacFcrMQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mongoose@0.51.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-gwWaAlhhV2By7XcbyU3DOLMvzsgeaymwP/jktDC+/uPkCmgB61zurwqOQdeiRq9KAf22Y2dtE5ZLXxytJRbEVA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql2@0.51.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-zT2Wg22Xn43RyfU3NOUmnFtb5zlDI0fKcijCj9AcK9zuLZ4ModgtLXOyBJSSfO+hsOCZSC1v/Fxwj+nZJFdzLQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-mysql@0.50.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-duKAvMRI3vq6u9JwzIipY9zHfikN20bX05sL7GjDeLKr2qV0LQ4ADtKST7KStdGcQ+MTN5wghWbbVdLgNcB3rA==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@types/mysql': 2.15.27 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-pg@0.57.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-dWLGE+r5lBgm2A8SaaSYDE3OKJ/kwwy5WLyGyzor8PLhUL9VnJRiY6qhp4njwhnljiLtzeffRtG2Mf/YyWLeTw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0) + '@types/pg': 8.15.5 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-redis@0.53.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-WUHV8fr+8yo5RmzyU7D5BIE1zwiaNQcTyZPwtxlfr7px6NYYx7IIpSihJK7WA60npWynfxxK1T67RAVF0Gdfjg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.38.2 + '@opentelemetry/semantic-conventions': 1.37.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-tedious@0.23.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-3TMTk/9VtlRonVTaU4tCzbg4YqW+Iq/l5VnN2e5whP6JgEg/PKfrGbqQ+CxQWNLfLaQYIUgEZqAn5gk/inh1uQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation-undici@0.15.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-sNFGA/iCDlVkNjzTzPRcudmI11vT/WAfAguRdZY9IspCw02N4WSC72zTuQhSMheh2a1gdeM9my1imnKRvEEvEg==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.204.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.204.0 + import-in-the-middle: 1.14.4 + require-in-the-middle: 7.5.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.57.2 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.14.4 + require-in-the-middle: 7.5.2 + semver: 7.7.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@opentelemetry/redis-common@0.38.2: + resolution: {integrity: sha512-1BCcU93iwSRZvDAgwUxC/DV4T/406SkMfxGqu5ojc3AvNI+I9GhV7v0J1HljsczuuhcnFLYqD5VmwVXfCGHzxA==} + engines: {node: ^18.19.0 || >=20.6.0} + dev: false + + /@opentelemetry/resources@2.1.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + dev: false + + /@opentelemetry/sdk-trace-base@2.1.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': '>=1.3.0 <1.10.0' + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + dev: false + + /@opentelemetry/semantic-conventions@1.37.0: + resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} + engines: {node: '>=14'} + dev: false + + /@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==} + engines: {node: ^18.19.0 || >=20.6.0} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) dev: false /@panva/hkdf@1.2.1: @@ -5677,6 +6086,17 @@ packages: '@prisma/debug': 6.16.3 dev: false + /@prisma/instrumentation@6.15.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-6TXaH6OmDkMOQvOxwLZ8XS51hU2v4A3vmE2pSijCIiGRJYyNeMcL6nMHQMyYdZRD8wl7LF3Wzc+AMPMV/9Oo7A==} + peerDependencies: + '@opentelemetry/api': ^1.8 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + dev: false + /@radix-ui/number@1.1.1: resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} dev: false @@ -6566,6 +6986,96 @@ packages: /@rushstack/eslint-patch@1.12.0: resolution: {integrity: sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw==} + /@sentry/core@10.17.0: + resolution: {integrity: sha512-UVIvxSzS0n5QbIDPyFf0WX9I77Of1bcr6a0sCEKfjhJGmGQ8mFWoWgR2gF4wcPw60XUrzbryCr79eOsIHLQ5cw==} + engines: {node: '>=18'} + dev: false + + /@sentry/node-core@10.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0)(@opentelemetry/core@2.1.0)(@opentelemetry/instrumentation@0.204.0)(@opentelemetry/resources@2.1.0)(@opentelemetry/sdk-trace-base@2.1.0)(@opentelemetry/semantic-conventions@1.37.0): + resolution: {integrity: sha512-x6av2pFtsAeN+nZKkhI07cOCugTKux908DCGBlwQEw8ZjghcO5jn3unfAlKZqxZ0ktWgBcSrCM/iJ5Gk2nxPFg==} + engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 + '@opentelemetry/instrumentation': '>=0.57.1 <1' + '@opentelemetry/resources': ^1.30.1 || ^2.1.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 + '@opentelemetry/semantic-conventions': ^1.37.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@sentry/core': 10.17.0 + '@sentry/opentelemetry': 10.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0)(@opentelemetry/core@2.1.0)(@opentelemetry/sdk-trace-base@2.1.0)(@opentelemetry/semantic-conventions@1.37.0) + import-in-the-middle: 1.14.4 + dev: false + + /@sentry/node@10.17.0: + resolution: {integrity: sha512-rM+ANC4NKkYHAFa73lqBXq024/YrflcUKBxkqSuo/0jc/Q/svLZfoZ8FW0IVZ4uhXXFZL3PZbkceZYmoOG9ePg==} + engines: {node: '>=18'} + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.51.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.22.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.24.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.51.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.204.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.14.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.49.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.49.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.51.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.50.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.51.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.57.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.23.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@prisma/instrumentation': 6.15.0(@opentelemetry/api@1.9.0) + '@sentry/core': 10.17.0 + '@sentry/node-core': 10.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0)(@opentelemetry/core@2.1.0)(@opentelemetry/instrumentation@0.204.0)(@opentelemetry/resources@2.1.0)(@opentelemetry/sdk-trace-base@2.1.0)(@opentelemetry/semantic-conventions@1.37.0) + '@sentry/opentelemetry': 10.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0)(@opentelemetry/core@2.1.0)(@opentelemetry/sdk-trace-base@2.1.0)(@opentelemetry/semantic-conventions@1.37.0) + import-in-the-middle: 1.14.4 + minimatch: 9.0.5 + transitivePeerDependencies: + - supports-color + dev: false + + /@sentry/opentelemetry@10.17.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.1.0)(@opentelemetry/core@2.1.0)(@opentelemetry/sdk-trace-base@2.1.0)(@opentelemetry/semantic-conventions@1.37.0): + resolution: {integrity: sha512-kZONokjkIQjhDUEZLsi7TZ1Bay0g4VFC2rT1MvZqa1fkFZff7Th9qQr0Lv7gt3nrbD6qIctEzmpf75OQN1cR8A==} + engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 + '@opentelemetry/core': ^1.30.1 || ^2.1.0 + '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 + '@opentelemetry/semantic-conventions': ^1.37.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.1.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.37.0 + '@sentry/core': 10.17.0 + dev: false + /@sideway/address@4.1.5: resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: @@ -7749,7 +8259,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 18.19.121 + '@types/node': 20.19.9 /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -8001,6 +8511,12 @@ packages: resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} dev: false + /@types/mysql@2.15.27: + resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==} + dependencies: + '@types/node': 20.19.9 + dev: false + /@types/next-auth@3.15.0(next@14.2.33)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-ZVfejlu81YiIRX1m0iKAfvZ3nK7K9EyZWhNARNKsFop8kNAgEvMnlKpTpwN59xkK2OhyWLagPuiDAVBYSO9jSA==} deprecated: This is a stub types definition. next-auth provides its own type definitions, so you do not need this installed. @@ -8056,6 +8572,20 @@ packages: resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==} dev: false + /@types/pg-pool@2.0.6: + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} + dependencies: + '@types/pg': 8.15.5 + dev: false + + /@types/pg@8.15.5: + resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==} + dependencies: + '@types/node': 20.19.9 + pg-protocol: 1.10.3 + pg-types: 2.2.0 + dev: false + /@types/phoenix@1.6.6: resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} dev: false @@ -8134,6 +8664,10 @@ packages: '@types/node': 18.19.121 '@types/send': 0.17.5 + /@types/shimmer@1.2.0: + resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + dev: false + /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: @@ -8159,6 +8693,12 @@ packages: '@types/geojson': 7946.0.16 dev: false + /@types/tedious@4.0.14: + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + dependencies: + '@types/node': 20.19.9 + dev: false + /@types/testing-library__jest-dom@5.14.9: resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} dependencies: @@ -8789,7 +9329,7 @@ packages: vue-router: optional: true dependencies: - next: 14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 dev: false @@ -9080,6 +9620,14 @@ packages: acorn: 7.4.1 acorn-walk: 7.2.0 + /acorn-import-attributes@1.9.5(acorn@8.15.0): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.15.0 + dev: false + /acorn-import-phases@1.0.4(acorn@8.15.0): resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} engines: {node: '>=10.13.0'} @@ -14000,6 +14548,10 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false + /forwarded-parse@2.1.2: + resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} + dev: false + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -15298,6 +15850,15 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 + /import-in-the-middle@1.14.4: + resolution: {integrity: sha512-eWjxh735SJLFJJDs5X82JQ2405OdJeAHDBnaoFCfdr5GVc7AWc9xU7KbrF+3Xd5F2ccP1aQFKtY+65X6EfKZ7A==} + dependencies: + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) + cjs-module-lexer: 1.4.3 + module-details-from-path: 1.0.4 + dev: false + /import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -18559,6 +19120,10 @@ packages: hasBin: true dev: false + /module-details-from-path@1.0.4: + resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} + dev: false + /moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: false @@ -18741,7 +19306,7 @@ packages: '@panva/hkdf': 1.2.1 cookie: 0.7.2 jose: 4.15.9 - next: 14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) oauth: 0.9.15 openid-client: 5.7.1 preact: 10.27.0 @@ -18768,7 +19333,7 @@ packages: optional: true dependencies: '@auth/core': 0.31.0 - next: 14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) + next: 14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 dev: false @@ -18786,7 +19351,7 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false - /next@14.2.33(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1): + /next@14.2.33(@opentelemetry/api@1.9.0)(@playwright/test@1.54.2)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-GiKHLsD00t4ACm1p00VgrI0rUFAC9cRDGReKyERlM57aeEZkOQGcZTpIbsGn0b562FTPJWmYfKwplfO9EaT6ng==} engines: {node: '>=18.17.0'} hasBin: true @@ -18805,6 +19370,7 @@ packages: optional: true dependencies: '@next/env': 14.2.33 + '@opentelemetry/api': 1.9.0 '@playwright/test': 1.54.2 '@swc/helpers': 0.5.5 busboy: 1.6.0 @@ -19838,6 +20404,7 @@ packages: /phin@3.7.1(debug@4.4.1): resolution: {integrity: sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==} engines: {node: '>= 8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dependencies: centra: 2.7.0(debug@4.4.1) transitivePeerDependencies: @@ -22255,6 +22822,17 @@ packages: parent-module: 0.1.0 dev: false + /require-in-the-middle@7.5.2: + resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} + engines: {node: '>=8.6.0'} + dependencies: + debug: 4.4.1(supports-color@5.5.0) + module-details-from-path: 1.0.4 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + dev: false + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: false @@ -22798,6 +23376,10 @@ packages: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} + /shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + dev: false + /side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} From 59c8726fdce188ed77afadd065b83615d08e448f Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 00:44:22 +0530 Subject: [PATCH 33/38] Update turbo.json for DSN env --- turbo.json | 1 + 1 file changed, 1 insertion(+) diff --git a/turbo.json b/turbo.json index ca610f47..f0589ce2 100644 --- a/turbo.json +++ b/turbo.json @@ -16,6 +16,7 @@ "AUTH_GITHUB_ID", "AUTH_GITHUB_SECRET", "VERCEL_ENV", + "SENTRY_DSN", "NEXT_PUBLIC_SUPABASE_URL", "NEXT_PUBLIC_SUPABASE_ANON_KEY", "NEXT_PUBLIC_APP_URL", From c56c1e5bb3571f74305c5516787d106de2bc37e6 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 08:46:05 +0530 Subject: [PATCH 34/38] added node fetch --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 4599e2f5..0c0ca3aa 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "pnpm": { "overrides": { "handlebars@<4.7.8": "^4.7.8", + "node-fetch": "^3.3.2" "uglify-js@<3.0.0": "^3.19.3", "tar@<6.2.1": "^6.2.1", "marked@<4.0.10": "^4.0.10", From 04f5cdfb2e10d133d72ec73e332bcbc9215667b2 Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 08:46:41 +0530 Subject: [PATCH 35/38] Update fetch-issue.yml --- .github/workflows/fetch-issue.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/fetch-issue.yml b/.github/workflows/fetch-issue.yml index 527547da..4f0a2959 100644 --- a/.github/workflows/fetch-issue.yml +++ b/.github/workflows/fetch-issue.yml @@ -25,9 +25,6 @@ jobs: - name: Setup pnpm run: npm install -g pnpm - - name: modules - run: pnpm add node-fetch -w - - name: Install dependencies run: pnpm install env: @@ -55,3 +52,4 @@ jobs: + From 810a97f355cc2b08baccfec60be1fb7441a897bb Mon Sep 17 00:00:00 2001 From: Ayan Das <126937849+a-y-a-n-das@users.noreply.github.com> Date: Mon, 6 Oct 2025 08:55:05 +0530 Subject: [PATCH 36/38] forgot `,` --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0c0ca3aa..344655e4 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "pnpm": { "overrides": { "handlebars@<4.7.8": "^4.7.8", - "node-fetch": "^3.3.2" + "node-fetch": "^3.3.2", "uglify-js@<3.0.0": "^3.19.3", "tar@<6.2.1": "^6.2.1", "marked@<4.0.10": "^4.0.10", From 4c6eaccf0731c51368457ca301b280493d483c5c Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Mon, 6 Oct 2025 09:04:41 +0530 Subject: [PATCH 37/38] generated pnpm-lock.yml --- pnpm-lock.yaml | 68 +++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8ca57e88..1f57d326 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: handlebars@<4.7.8: ^4.7.8 + node-fetch: ^3.3.2 uglify-js@<3.0.0: ^3.19.3 tar@<6.2.1: ^6.2.1 marked@<4.0.10: ^4.0.10 @@ -3909,14 +3910,13 @@ packages: detect-libc: 2.0.4 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.7.0 + node-fetch: 3.3.2 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 semver: 7.7.2 tar: 6.2.1 transitivePeerDependencies: - - encoding - supports-color dev: false @@ -5829,8 +5829,6 @@ packages: engines: {node: '>=14.0.0'} dependencies: cross-fetch: 3.2.0 - transitivePeerDependencies: - - encoding dev: false /@pkgjs/parseargs@0.11.0: @@ -10687,7 +10685,6 @@ packages: '@mapbox/node-pre-gyp': 1.0.11 node-addon-api: 5.1.0 transitivePeerDependencies: - - encoding - supports-color dev: false @@ -11630,17 +11627,13 @@ packages: /cross-fetch@3.2.0: resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + node-fetch: 3.3.2 dev: false /cross-fetch@4.0.0: resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + node-fetch: 3.3.2 /cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} @@ -12211,6 +12204,10 @@ packages: accessor-fn: 1.5.3 dev: false + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + /data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -14248,6 +14245,13 @@ packages: core-js: 3.45.0 dev: false + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -14548,6 +14552,12 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + /forwarded-parse@2.1.2: resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} dev: false @@ -15779,8 +15789,6 @@ packages: resolution: {integrity: sha512-FgZxrXdRA5u44xfYsJlEBL4/KH3f2IluBpgV/7riW0YW2VEyM8FzVt2XHAOi6id0Ppj7vZvCZVpp5LrGXnc8Ig==} dependencies: cross-fetch: 4.0.0 - transitivePeerDependencies: - - encoding /i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} @@ -15832,9 +15840,7 @@ packages: /image-to-base64@2.2.0: resolution: {integrity: sha512-Z+aMwm/91UOQqHhrz7Upre2ytKhWejZlWV/JxUTD1sT7GWWKFDJUEV5scVQKnkzSgPHFuQBUEWcanO+ma0PSVw==} dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + node-fetch: 3.3.2 dev: false /immer@9.0.21: @@ -17419,8 +17425,6 @@ packages: image-to-base64: 2.2.0 marked: 4.3.0 promised-handlebars: 2.0.1(handlebars@4.7.8) - transitivePeerDependencies: - - encoding dev: false /jsonresume-theme-msresume@0.1.0: @@ -19465,22 +19469,19 @@ packages: /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - dev: false + deprecated: Use your platform's native DOMException instead /node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} dev: false - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - whatwg-url: 5.0.0 + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 /node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} @@ -19973,10 +19974,8 @@ packages: agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 - node-fetch: 2.7.0 + node-fetch: 3.3.2 zod: 3.25.76 - transitivePeerDependencies: - - encoding dev: false /openid-client@5.7.1: @@ -24646,6 +24645,7 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -25524,6 +25524,10 @@ packages: resolution: {integrity: sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==} dev: false + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + /web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} @@ -25541,6 +25545,7 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} @@ -25834,6 +25839,7 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false /whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} From f3363e5d72e8f663f195b2e6dac3cca2357c5565 Mon Sep 17 00:00:00 2001 From: a-y-a-n-das Date: Mon, 6 Oct 2025 09:08:24 +0530 Subject: [PATCH 38/38] fix: add node-fetch to root workspace --- package.json | 3 ++- pnpm-lock.yaml | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 344655e4..e7197071 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "dependencies": { "@changesets/cli": "^2.27.1", "@sentry/node": "^10.17.0", - "dotenv": "^16.0.3" + "dotenv": "^16.0.3", + "node-fetch": "3" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f57d326..3edff45d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,6 +33,9 @@ importers: dotenv: specifier: ^16.0.3 version: 16.6.1 + node-fetch: + specifier: ^3.3.2 + version: 3.3.2 devDependencies: '@repo/eslint-config-custom': specifier: workspace:*