diff --git a/api/gitlab/proxy.ts b/api/gitlab/proxy.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc8eeb81ce8d8ff3451b6861c977c75efe36d8d6 --- /dev/null +++ b/api/gitlab/proxy.ts @@ -0,0 +1,52 @@ +import type { VercelRequest, VercelResponse } from '@vercel/node'; + +interface AuthToken { + token: string, + uri: string, +} + +export default async function (req: VercelRequest, res: VercelResponse) { + const { body, query, method, url, headers } = req + + const gitlab_tokens_var = process.env.GITLAB_ENDPOINT_TOKENS + var array: String[] = [] + var authTokenArray: Array<AuthToken> = [] + let endpointURI = new URL(query.url.toString()) + + if(gitlab_tokens_var) { + array = gitlab_tokens_var!.split(",") + } + + // Parse environment variable $GITLAB_ENDPOINT_TOKENS + // into authTokenArray + for(var i = 0; i < array.length; i++) { + let token: string = array[i].split(/:(.*)/s)[0] + let uri: string = array[i].split(/:(.*)/s)[1] + authTokenArray.push({ token: token, uri: uri }) + } + + // Check authTokenArray for token to add to query + var injectToken: String = "" + + for(var i = 0; i < authTokenArray.length; i++) { + let uri: URL = new URL(authTokenArray[i]['uri']) + if(uri.hostname == endpointURI.hostname) { + injectToken = authTokenArray[i].token + } + } + + var apiResult: Response = await fetch(endpointURI.toString(), { + method: "GET", + headers: { "PRIVATE-TOKEN": injectToken.toString(), + "Content-Type": "application/json", + "Accept": "application/json" }, + }) + + let resultJson = await apiResult.json() + + console.log(resultJson) + + res.statusCode = 200 + res.setHeader("Content-Type", 'application/json') + res.send(resultJson) +}; diff --git a/content/_index.md b/content/_index.md deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/package-lock.json b/package-lock.json index 4c4b2ab001a20b01cabbf307758f03bc3361c266..e9e876ddc8bd9bacf578936cfa77bd0762abc4a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { - "name": "flear.org", + "name": "fedipage", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "flear.org", + "name": "fedipage", "dependencies": { "@firebase/app-types": "^0.9.0", "@polymath-ai/client": "*", "@polymath-ai/host": "*", - "@types/node": "^20.8.2", "@vercel/analytics": "^1.0.2", "@vercel/edge": "^1.1.0", + "@vercel/functions": "^1.4.0", "@vercel/node": "^3.0.7", "@vercel/og": "^0.5.17", "activitypub-core-types": "^0.3.2", @@ -19,17 +19,19 @@ "file-drop-element": "^1.0.1", "firebase-admin": "^11.11.0", "hugo-bin": "^0.115.0", + "jquery": "^3.7.1", "multiparty": "^4.2.3", + "next": "^14.2.5", "node-fetch": "^3.3.2", "pinch-zoom-element": "^1.1.1", - "ts-node": "^10.9.1", "uuid": "^9.0.1", - "vercel": "^32.4.1", - "whatwg-flora-tmpl": "^1.0.3" + "vercel": "^32.7.2", + "whatwg-flora-tmpl": "^1.0.3", + "xmlhttprequest": "^1.8.0" }, "devDependencies": { "@types/multiparty": "^0.0.34", - "typescript": "^5.2.2" + "typescript": "^5.5.4" }, "engines": { "node": ">= 18.0.0" @@ -85,20 +87,28 @@ "node": ">=16" } }, + "node_modules/@edge-runtime/ponyfill": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@edge-runtime/ponyfill/-/ponyfill-2.4.1.tgz", + "integrity": "sha512-ZbR/EViY3gg2rmEAQTKPa6mXl4aR1/+cFcQe4r1segCjEbTAxT6PWu40odbu/KlZKSysEb2O/BWIC2lJgSJOMQ==", + "engines": { + "node": ">=16" + } + }, "node_modules/@edge-runtime/primitives": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-3.1.1.tgz", - "integrity": "sha512-ROO22py+KdAfzqWZu6CtVMC4qV6mS0W1jPI51jGXE+uenyBUN7cQTWB9ReQc8Bm4cnjqmhajvpqEx3j7Y9iSOg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-4.0.5.tgz", + "integrity": "sha512-t7QiN5d/KpXgCvIfSt6Nm9Hj3WVdNgc5CpOD73jasY+9EvTI7Ngdj5cXvjcHrPcmYWJZMySPgeEeoL/1N/Llag==", "engines": { "node": ">=16" } }, "node_modules/@edge-runtime/vm": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-3.1.1.tgz", - "integrity": "sha512-6NJRRG04/91qnWLZj+wZm27q6fJkTbkZdIJdo/Ig++GTxkAv8Wh/45nIcz9Xg7AzIAMpAkflFdiCrCoZ3hp1Iw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-3.1.7.tgz", + "integrity": "sha512-hUMFbDQ/nZN+1TLMi6iMO1QFz9RSV8yGG8S42WFPFma1d7VSNE0eMdJUmwjmtav22/iQkzHMmu6oTSfAvRGS8g==", "dependencies": { - "@edge-runtime/primitives": "3.1.1" + "@edge-runtime/primitives": "4.0.5" }, "engines": { "node": ">=16" @@ -399,6 +409,146 @@ } } }, + "node_modules/@next/env": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", + "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", + "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", + "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", + "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", + "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", + "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", + "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", + "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", + "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", + "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -588,6 +738,20 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -813,9 +977,9 @@ "integrity": "sha512-BZFxVrv24VbNNl5xMxqUojQIegEeXMI6rX3rg1uVLYUEXsuKNBSAEQf4BWEcjQDp/8aYJOj6m8V4PUA3x/cxgg==" }, "node_modules/@vercel/build-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-7.2.2.tgz", - "integrity": "sha512-CUMgVKTJCba5tGe+KZaVvwGUCsuSeuNEmPIzMggIMDtzdqllRu8+QjjIhEI+unHoYvUgGfen6Z5lMeMo9Ne0qQ==" + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-7.3.0.tgz", + "integrity": "sha512-RJwqrGYSk75auHZqWmlSL+a5JsWv+4SF1AxNQJ+KpF3XWZ/8yThkN/jHBfNxMmW6VvNczSVtMaXI0/2Sess6Eg==" }, "node_modules/@vercel/edge": { "version": "1.1.0", @@ -823,9 +987,9 @@ "integrity": "sha512-84H2EavY5Kul9Ef1DnTH0XEG5vChqcXjyqoRLVPjjZjLWw47sMapzXXQH09pybcshR+8AKqULGvFqPTWuRh3Rw==" }, "node_modules/@vercel/error-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vercel/error-utils/-/error-utils-2.0.1.tgz", - "integrity": "sha512-ZUVpRFArh5eyKpJmdfEuCaMpZKQvZgUq0pQ7PdK8m5FgRYEvF4I0TMJH3JnkbYaMMUH82aYWZr+/hFJtEBcmTQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vercel/error-utils/-/error-utils-2.0.2.tgz", + "integrity": "sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==" }, "node_modules/@vercel/fun": { "version": "1.1.0", @@ -1028,6 +1192,22 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "node_modules/@vercel/functions": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-1.4.0.tgz", + "integrity": "sha512-Ln6SpIkms1UJg306X2kbEMyG9ol+mjDr2xx389cvsBxgFyFMI9Bm+LYOG4N3TSik4FI59MECyyc4oz7AIAYmqQ==", + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-web-identity": "*" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-provider-web-identity": { + "optional": true + } + } + }, "node_modules/@vercel/gatsby-plugin-vercel-analytics": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.11.tgz", @@ -1037,13 +1217,13 @@ } }, "node_modules/@vercel/gatsby-plugin-vercel-builder": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.7.tgz", - "integrity": "sha512-hzaWLdBeb/QnGRE17ldaxeXMTLroaiJTlaW2G3HwvaK8sXA9e+jmcfAw8fjN3BNMnkFU523CnE7InqmjKH4TfQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.12.tgz", + "integrity": "sha512-S1RkywrUItewqg06T3L4cgYfiwi2BFngHIIerhOYhVuD9A+yfMgxnH5dkbu6nujmV1SEws+Q92wSiPfLPmO0eA==", "dependencies": { "@sinclair/typebox": "0.25.24", - "@vercel/build-utils": "7.2.2", - "@vercel/routing-utils": "3.0.0", + "@vercel/build-utils": "7.3.0", + "@vercel/routing-utils": "3.1.0", "esbuild": "0.14.47", "etag": "1.8.1", "fs-extra": "11.1.0" @@ -1074,17 +1254,17 @@ } }, "node_modules/@vercel/gatsby-plugin-vercel-builder/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, "node_modules/@vercel/go": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vercel/go/-/go-3.0.3.tgz", - "integrity": "sha512-XhrmpsACxNo64ojhscL//Mq+XEfm3VXlx/UIUcHzJJXdvFnz7DEzh1zs0AtdpVgZbYhPQ7rW3GIejaHrIJnN5w==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@vercel/go/-/go-3.0.4.tgz", + "integrity": "sha512-hMIJm2xwU1HT56YRNF8HNOnIFNH7WnGl1l2D6lc6UJk7XdCCh1Dm0nsqLqki2SprTUh3I+53pTQaqgRsFGf06A==" }, "node_modules/@vercel/hydrogen": { "version": "1.0.1", @@ -1096,9 +1276,9 @@ } }, "node_modules/@vercel/next": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@vercel/next/-/next-4.0.10.tgz", - "integrity": "sha512-+Z+R7Dev1OFU9Rm8R4h34W0/RdSHeZ4dvkv50lS7TneRj1Ab1zLlqupyG0tEdSP5/Nvb/OZ4ixvTiLqw9oo8oA==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vercel/next/-/next-4.0.15.tgz", + "integrity": "sha512-BxMxIJrya7MS6IWrQIaQaYHPmq7WoZFLX909RBpNoAG5wgzrTrW756d2EsibBwGo7sQYBv2atyI5GqBIHzYbWg==", "dependencies": { "@vercel/nft": "0.24.2" } @@ -1128,20 +1308,20 @@ } }, "node_modules/@vercel/node": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vercel/node/-/node-3.0.7.tgz", - "integrity": "sha512-0KrDGi6z+qPtCyC7wSHmHDU/ot352AJpAeAO1OIEYqYFsYwzvwuyu7TbGGwiUbtolij4/EBUCls3YmwADM/vKw==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-3.0.12.tgz", + "integrity": "sha512-OiNHiUe1LX/CfDrQ07ntPsoYhJiC38mEeErYeqA6YNVAz3QGdX3pthiaIig2KPqeeYkEx5bSkVIqQtQOTJBuLQ==", "dependencies": { "@edge-runtime/node-utils": "2.2.1", - "@edge-runtime/primitives": "3.1.1", - "@edge-runtime/vm": "3.1.1", + "@edge-runtime/primitives": "4.0.5", + "@edge-runtime/vm": "3.1.7", "@types/node": "14.18.33", - "@vercel/build-utils": "7.2.2", - "@vercel/error-utils": "2.0.1", + "@vercel/build-utils": "7.3.0", + "@vercel/error-utils": "2.0.2", "@vercel/nft": "0.24.2", "@vercel/static-config": "3.0.0", "async-listen": "3.0.0", - "edge-runtime": "2.5.1", + "edge-runtime": "2.5.7", "esbuild": "0.14.47", "etag": "1.8.1", "exit-hook": "2.2.1", @@ -1150,7 +1330,7 @@ "ts-morph": "12.0.0", "ts-node": "10.9.1", "typescript": "4.9.5", - "undici": "5.23.0" + "undici": "5.26.5" } }, "node_modules/@vercel/node/node_modules/@types/node": { @@ -1203,17 +1383,17 @@ } }, "node_modules/@vercel/python": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@vercel/python/-/python-4.0.2.tgz", - "integrity": "sha512-mmUeR3GBuDnaJK3IIHRoPl3bNevcWO3N/YrNAx+zxLPSHzfzmCLZbFVVXbzoKBi/cALiOPcApVhlQXwU26y7xg==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vercel/python/-/python-4.1.0.tgz", + "integrity": "sha512-EIQXK5zL6fce0Barh74gc7xyLtRyvgmLZDIVQ8yJLtFxPlPCRY3GXkdJ7Jdcw8Pd0uuVF0vIHatv18xSLbcwtg==" }, "node_modules/@vercel/redwood": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-2.0.4.tgz", - "integrity": "sha512-f0dzR8xQ34MKTzLmUygfu6vngCaRozN0z2Aao1sQ7sIC0+UExgiL0qJ9syejWwDv7IxK4yZ0w1WvztrHtAMa9Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-2.0.5.tgz", + "integrity": "sha512-9iWTxfMkC7yNnwN2xxOdptiIDAgXe1V1fh3aw92MWt5PBRcFY9RqgIPF7Q3Qa7yzQFgpbHwCnSTqWO+HCEuFtw==", "dependencies": { "@vercel/nft": "0.24.2", - "@vercel/routing-utils": "3.0.0", + "@vercel/routing-utils": "3.1.0", "semver": "6.3.1" } }, @@ -1226,9 +1406,9 @@ } }, "node_modules/@vercel/remix-builder": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-2.0.9.tgz", - "integrity": "sha512-/wgZrnKGZYJ8Z1tgAQc2UUhF+51tGwSHw9PnAhnaY5KclLiBrnXSjKqUAXW8GyaM4IB1ZjPXoI5oARKKUGu8kQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-2.0.14.tgz", + "integrity": "sha512-c+ILERSRq404sf6kt0qWhYhuxWkkoTEm2FdLoUnVs21K6kzGtJMJbUExEHoPZvN9a0tq86ZU86jVvRZV6WL0cQ==", "dependencies": { "@vercel/nft": "0.24.2", "@vercel/static-config": "3.0.0", @@ -1236,9 +1416,9 @@ } }, "node_modules/@vercel/routing-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vercel/routing-utils/-/routing-utils-3.0.0.tgz", - "integrity": "sha512-u+SoHnL+RzRQIRP+YxvigzzKXQcbgYQF9qCTIuWuoLw5h9thIYWcDJvz3KxrUzxjGZ3dWboXA29KAlT6eeaeFw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vercel/routing-utils/-/routing-utils-3.1.0.tgz", + "integrity": "sha512-Ci5xTjVTJY/JLZXpCXpLehMft97i9fH34nu9PGav6DtwkVUF6TOPX86U0W0niQjMZ5n6/ZP0BwcJK2LOozKaGw==", "dependencies": { "path-to-regexp": "6.1.0" }, @@ -1274,17 +1454,17 @@ "integrity": "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw==" }, "node_modules/@vercel/ruby": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-2.0.2.tgz", - "integrity": "sha512-MqFynhtZ905L210DWAbgkiEQEK39LTtp9eL2Nm6PjzhjNzU6hV0UfK8Z24vU9CC6J4mrUTTZx396fH7XTYJWqg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-2.0.4.tgz", + "integrity": "sha512-EpZyfF6wFGzFDmubFIh/EZtYpKindmXx/69xSfKEBTVU0afgljyOOICbyZePe5tvigfOEBLSLgrt/2nN+MlLtA==" }, "node_modules/@vercel/static-build": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-2.0.8.tgz", - "integrity": "sha512-46//Pxez7mc+UdOZgNv6y9lPSBehMdvCxajb/nvquptDMNH543Itospu9lyt448EQoS7HVE1NSPI21iiCboqvA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-2.0.14.tgz", + "integrity": "sha512-l5eQtJbk5Pc+P8XARDnpcbX4LnK3bGy7uf6S1aFOD4h6F8iBdg0agWTufZnq5BI91pcPVICPazM5BYhigIEznQ==", "dependencies": { "@vercel/gatsby-plugin-vercel-analytics": "1.0.11", - "@vercel/gatsby-plugin-vercel-builder": "2.0.7", + "@vercel/gatsby-plugin-vercel-builder": "2.0.12", "@vercel/static-config": "3.0.0", "ts-morph": "12.0.0" } @@ -2112,6 +2292,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -2278,6 +2477,11 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2649,16 +2853,16 @@ } }, "node_modules/edge-runtime": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-2.5.1.tgz", - "integrity": "sha512-E0kY1Dqvwvk9yh7dvR56KnCjXf/dlbrrGjO5Sjnz9Ja3WqYT3csv2B8O4erxJiOWfWy9NTukBk4Kb3yrR66gBw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-2.5.7.tgz", + "integrity": "sha512-gA4qSVP0sNwJlkdQ2nahDPASlSl8twUd17o+JolPa1EtXpLTGzIpOETvodgJwXIxa+zaD8bnAXCdsWrx2PhlVQ==", "dependencies": { "@edge-runtime/format": "2.2.0", - "@edge-runtime/vm": "3.1.1", + "@edge-runtime/ponyfill": "2.4.1", + "@edge-runtime/vm": "3.1.7", "async-listen": "3.0.1", "mri": "1.2.0", "picocolors": "1.0.0", - "pretty-bytes": "5.6.0", "pretty-ms": "7.0.1", "signal-exit": "4.0.2", "time-span": "4.0.0" @@ -4344,6 +4548,11 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, "node_modules/js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -4352,6 +4561,12 @@ "node": ">= 0.8" } }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -4653,6 +4868,18 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "optional": true }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -5017,6 +5244,72 @@ "node": ">= 0.10" } }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", + "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", + "dependencies": { + "@next/env": "14.2.5", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.5", + "@next/swc-darwin-x64": "14.2.5", + "@next/swc-linux-arm64-gnu": "14.2.5", + "@next/swc-linux-arm64-musl": "14.2.5", + "@next/swc-linux-x64-gnu": "14.2.5", + "@next/swc-linux-x64-musl": "14.2.5", + "@next/swc-win32-arm64-msvc": "14.2.5", + "@next/swc-win32-ia32-msvc": "14.2.5", + "@next/swc-win32-x64-msvc": "14.2.5" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -5505,6 +5798,33 @@ "resolved": "https://registry.npmjs.org/pointer-tracker/-/pointer-tracker-2.5.3.tgz", "integrity": "sha512-LiJUeIbzk4dXq678YeyrZ++mdY17q4n/2sBHfU9wIuvmSzdiPgMvmvWN2g8mY4J7YwYOIrqrZUWP/MfFHVwYtg==" }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -5519,17 +5839,6 @@ "node": ">= 0.8.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pretty-ms": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", @@ -5774,6 +6083,31 @@ "node": ">=0.6" } }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -5987,6 +6321,15 @@ "node": ">=16" } }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -6203,6 +6546,14 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -6424,6 +6775,28 @@ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", "optional": true }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/supertap": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", @@ -6727,9 +7100,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6788,16 +7161,24 @@ "optional": true }, "node_modules/undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", + "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", "dependencies": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" }, "engines": { "node": ">=14.0" } }, + "node_modules/undici/node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, "node_modules/unicode-trie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", @@ -6854,21 +7235,21 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "node_modules/vercel": { - "version": "32.4.1", - "resolved": "https://registry.npmjs.org/vercel/-/vercel-32.4.1.tgz", - "integrity": "sha512-cULmLvceDaluXz2usPtPYhb9y/jwjWolAjBBbG1DLGQmxVlnHVHTOJrYPaq2ioujQpU0yi92+RQPdzjzOY6aEg==", + "version": "32.7.2", + "resolved": "https://registry.npmjs.org/vercel/-/vercel-32.7.2.tgz", + "integrity": "sha512-esyeo67OZ/f7usKFCrx6NSjsvpo/BP/C8Mfron2uiCb4vXVcjkwOM7TwliHx6b0DbXjpzomdGVUHKRs34VNn2Q==", "dependencies": { - "@vercel/build-utils": "7.2.2", + "@vercel/build-utils": "7.3.0", "@vercel/fun": "1.1.0", - "@vercel/go": "3.0.3", + "@vercel/go": "3.0.4", "@vercel/hydrogen": "1.0.1", - "@vercel/next": "4.0.10", - "@vercel/node": "3.0.7", - "@vercel/python": "4.0.2", - "@vercel/redwood": "2.0.4", - "@vercel/remix-builder": "2.0.9", - "@vercel/ruby": "2.0.2", - "@vercel/static-build": "2.0.8", + "@vercel/next": "4.0.15", + "@vercel/node": "3.0.12", + "@vercel/python": "4.1.0", + "@vercel/redwood": "2.0.5", + "@vercel/remix-builder": "2.0.14", + "@vercel/ruby": "2.0.4", + "@vercel/static-build": "2.0.14", "chokidar": "3.3.1" }, "bin": { @@ -7080,6 +7461,14 @@ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "optional": true }, + "node_modules/xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -7216,17 +7605,22 @@ "@edge-runtime/cookies": "3.4.1" } }, + "@edge-runtime/ponyfill": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@edge-runtime/ponyfill/-/ponyfill-2.4.1.tgz", + "integrity": "sha512-ZbR/EViY3gg2rmEAQTKPa6mXl4aR1/+cFcQe4r1segCjEbTAxT6PWu40odbu/KlZKSysEb2O/BWIC2lJgSJOMQ==" + }, "@edge-runtime/primitives": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-3.1.1.tgz", - "integrity": "sha512-ROO22py+KdAfzqWZu6CtVMC4qV6mS0W1jPI51jGXE+uenyBUN7cQTWB9ReQc8Bm4cnjqmhajvpqEx3j7Y9iSOg==" + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@edge-runtime/primitives/-/primitives-4.0.5.tgz", + "integrity": "sha512-t7QiN5d/KpXgCvIfSt6Nm9Hj3WVdNgc5CpOD73jasY+9EvTI7Ngdj5cXvjcHrPcmYWJZMySPgeEeoL/1N/Llag==" }, "@edge-runtime/vm": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-3.1.1.tgz", - "integrity": "sha512-6NJRRG04/91qnWLZj+wZm27q6fJkTbkZdIJdo/Ig++GTxkAv8Wh/45nIcz9Xg7AzIAMpAkflFdiCrCoZ3hp1Iw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@edge-runtime/vm/-/vm-3.1.7.tgz", + "integrity": "sha512-hUMFbDQ/nZN+1TLMi6iMO1QFz9RSV8yGG8S42WFPFma1d7VSNE0eMdJUmwjmtav22/iQkzHMmu6oTSfAvRGS8g==", "requires": { - "@edge-runtime/primitives": "3.1.1" + "@edge-runtime/primitives": "4.0.5" } }, "@fastify/busboy": { @@ -7466,6 +7860,65 @@ } } }, + "@next/env": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", + "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==" + }, + "@next/swc-darwin-arm64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", + "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "optional": true + }, + "@next/swc-darwin-x64": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", + "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "optional": true + }, + "@next/swc-linux-arm64-gnu": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", + "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "optional": true + }, + "@next/swc-linux-arm64-musl": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", + "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "optional": true + }, + "@next/swc-linux-x64-gnu": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", + "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "optional": true + }, + "@next/swc-linux-x64-musl": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", + "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "optional": true + }, + "@next/swc-win32-arm64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", + "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "optional": true + }, + "@next/swc-win32-ia32-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", + "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", + "optional": true + }, + "@next/swc-win32-x64-msvc": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", + "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "optional": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -7630,6 +8083,20 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==" }, + "@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "requires": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, "@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -7849,9 +8316,9 @@ "integrity": "sha512-BZFxVrv24VbNNl5xMxqUojQIegEeXMI6rX3rg1uVLYUEXsuKNBSAEQf4BWEcjQDp/8aYJOj6m8V4PUA3x/cxgg==" }, "@vercel/build-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-7.2.2.tgz", - "integrity": "sha512-CUMgVKTJCba5tGe+KZaVvwGUCsuSeuNEmPIzMggIMDtzdqllRu8+QjjIhEI+unHoYvUgGfen6Z5lMeMo9Ne0qQ==" + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-7.3.0.tgz", + "integrity": "sha512-RJwqrGYSk75auHZqWmlSL+a5JsWv+4SF1AxNQJ+KpF3XWZ/8yThkN/jHBfNxMmW6VvNczSVtMaXI0/2Sess6Eg==" }, "@vercel/edge": { "version": "1.1.0", @@ -7859,9 +8326,9 @@ "integrity": "sha512-84H2EavY5Kul9Ef1DnTH0XEG5vChqcXjyqoRLVPjjZjLWw47sMapzXXQH09pybcshR+8AKqULGvFqPTWuRh3Rw==" }, "@vercel/error-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@vercel/error-utils/-/error-utils-2.0.1.tgz", - "integrity": "sha512-ZUVpRFArh5eyKpJmdfEuCaMpZKQvZgUq0pQ7PdK8m5FgRYEvF4I0TMJH3JnkbYaMMUH82aYWZr+/hFJtEBcmTQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vercel/error-utils/-/error-utils-2.0.2.tgz", + "integrity": "sha512-Sj0LFafGpYr6pfCqrQ82X6ukRl5qpmVrHM/191kNYFqkkB9YkjlMAj6QcEsvCG259x4QZ7Tya++0AB85NDPbKQ==" }, "@vercel/fun": { "version": "1.1.0", @@ -8023,6 +8490,12 @@ } } }, + "@vercel/functions": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-1.4.0.tgz", + "integrity": "sha512-Ln6SpIkms1UJg306X2kbEMyG9ol+mjDr2xx389cvsBxgFyFMI9Bm+LYOG4N3TSik4FI59MECyyc4oz7AIAYmqQ==", + "requires": {} + }, "@vercel/gatsby-plugin-vercel-analytics": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-analytics/-/gatsby-plugin-vercel-analytics-1.0.11.tgz", @@ -8032,13 +8505,13 @@ } }, "@vercel/gatsby-plugin-vercel-builder": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.7.tgz", - "integrity": "sha512-hzaWLdBeb/QnGRE17ldaxeXMTLroaiJTlaW2G3HwvaK8sXA9e+jmcfAw8fjN3BNMnkFU523CnE7InqmjKH4TfQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.0.12.tgz", + "integrity": "sha512-S1RkywrUItewqg06T3L4cgYfiwi2BFngHIIerhOYhVuD9A+yfMgxnH5dkbu6nujmV1SEws+Q92wSiPfLPmO0eA==", "requires": { "@sinclair/typebox": "0.25.24", - "@vercel/build-utils": "7.2.2", - "@vercel/routing-utils": "3.0.0", + "@vercel/build-utils": "7.3.0", + "@vercel/routing-utils": "3.1.0", "esbuild": "0.14.47", "etag": "1.8.1", "fs-extra": "11.1.0" @@ -8064,16 +8537,16 @@ } }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" } } }, "@vercel/go": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vercel/go/-/go-3.0.3.tgz", - "integrity": "sha512-XhrmpsACxNo64ojhscL//Mq+XEfm3VXlx/UIUcHzJJXdvFnz7DEzh1zs0AtdpVgZbYhPQ7rW3GIejaHrIJnN5w==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@vercel/go/-/go-3.0.4.tgz", + "integrity": "sha512-hMIJm2xwU1HT56YRNF8HNOnIFNH7WnGl1l2D6lc6UJk7XdCCh1Dm0nsqLqki2SprTUh3I+53pTQaqgRsFGf06A==" }, "@vercel/hydrogen": { "version": "1.0.1", @@ -8085,9 +8558,9 @@ } }, "@vercel/next": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@vercel/next/-/next-4.0.10.tgz", - "integrity": "sha512-+Z+R7Dev1OFU9Rm8R4h34W0/RdSHeZ4dvkv50lS7TneRj1Ab1zLlqupyG0tEdSP5/Nvb/OZ4ixvTiLqw9oo8oA==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@vercel/next/-/next-4.0.15.tgz", + "integrity": "sha512-BxMxIJrya7MS6IWrQIaQaYHPmq7WoZFLX909RBpNoAG5wgzrTrW756d2EsibBwGo7sQYBv2atyI5GqBIHzYbWg==", "requires": { "@vercel/nft": "0.24.2" } @@ -8111,20 +8584,20 @@ } }, "@vercel/node": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@vercel/node/-/node-3.0.7.tgz", - "integrity": "sha512-0KrDGi6z+qPtCyC7wSHmHDU/ot352AJpAeAO1OIEYqYFsYwzvwuyu7TbGGwiUbtolij4/EBUCls3YmwADM/vKw==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-3.0.12.tgz", + "integrity": "sha512-OiNHiUe1LX/CfDrQ07ntPsoYhJiC38mEeErYeqA6YNVAz3QGdX3pthiaIig2KPqeeYkEx5bSkVIqQtQOTJBuLQ==", "requires": { "@edge-runtime/node-utils": "2.2.1", - "@edge-runtime/primitives": "3.1.1", - "@edge-runtime/vm": "3.1.1", + "@edge-runtime/primitives": "4.0.5", + "@edge-runtime/vm": "3.1.7", "@types/node": "14.18.33", - "@vercel/build-utils": "7.2.2", - "@vercel/error-utils": "2.0.1", + "@vercel/build-utils": "7.3.0", + "@vercel/error-utils": "2.0.2", "@vercel/nft": "0.24.2", "@vercel/static-config": "3.0.0", "async-listen": "3.0.0", - "edge-runtime": "2.5.1", + "edge-runtime": "2.5.7", "esbuild": "0.14.47", "etag": "1.8.1", "exit-hook": "2.2.1", @@ -8133,7 +8606,7 @@ "ts-morph": "12.0.0", "ts-node": "10.9.1", "typescript": "4.9.5", - "undici": "5.23.0" + "undici": "5.26.5" }, "dependencies": { "@types/node": { @@ -8167,17 +8640,17 @@ } }, "@vercel/python": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@vercel/python/-/python-4.0.2.tgz", - "integrity": "sha512-mmUeR3GBuDnaJK3IIHRoPl3bNevcWO3N/YrNAx+zxLPSHzfzmCLZbFVVXbzoKBi/cALiOPcApVhlQXwU26y7xg==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vercel/python/-/python-4.1.0.tgz", + "integrity": "sha512-EIQXK5zL6fce0Barh74gc7xyLtRyvgmLZDIVQ8yJLtFxPlPCRY3GXkdJ7Jdcw8Pd0uuVF0vIHatv18xSLbcwtg==" }, "@vercel/redwood": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-2.0.4.tgz", - "integrity": "sha512-f0dzR8xQ34MKTzLmUygfu6vngCaRozN0z2Aao1sQ7sIC0+UExgiL0qJ9syejWwDv7IxK4yZ0w1WvztrHtAMa9Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-2.0.5.tgz", + "integrity": "sha512-9iWTxfMkC7yNnwN2xxOdptiIDAgXe1V1fh3aw92MWt5PBRcFY9RqgIPF7Q3Qa7yzQFgpbHwCnSTqWO+HCEuFtw==", "requires": { "@vercel/nft": "0.24.2", - "@vercel/routing-utils": "3.0.0", + "@vercel/routing-utils": "3.1.0", "semver": "6.3.1" }, "dependencies": { @@ -8189,9 +8662,9 @@ } }, "@vercel/remix-builder": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-2.0.9.tgz", - "integrity": "sha512-/wgZrnKGZYJ8Z1tgAQc2UUhF+51tGwSHw9PnAhnaY5KclLiBrnXSjKqUAXW8GyaM4IB1ZjPXoI5oARKKUGu8kQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-2.0.14.tgz", + "integrity": "sha512-c+ILERSRq404sf6kt0qWhYhuxWkkoTEm2FdLoUnVs21K6kzGtJMJbUExEHoPZvN9a0tq86ZU86jVvRZV6WL0cQ==", "requires": { "@vercel/nft": "0.24.2", "@vercel/static-config": "3.0.0", @@ -8199,9 +8672,9 @@ } }, "@vercel/routing-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vercel/routing-utils/-/routing-utils-3.0.0.tgz", - "integrity": "sha512-u+SoHnL+RzRQIRP+YxvigzzKXQcbgYQF9qCTIuWuoLw5h9thIYWcDJvz3KxrUzxjGZ3dWboXA29KAlT6eeaeFw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vercel/routing-utils/-/routing-utils-3.1.0.tgz", + "integrity": "sha512-Ci5xTjVTJY/JLZXpCXpLehMft97i9fH34nu9PGav6DtwkVUF6TOPX86U0W0niQjMZ5n6/ZP0BwcJK2LOozKaGw==", "requires": { "ajv": "^6.0.0", "path-to-regexp": "6.1.0" @@ -8233,17 +8706,17 @@ } }, "@vercel/ruby": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-2.0.2.tgz", - "integrity": "sha512-MqFynhtZ905L210DWAbgkiEQEK39LTtp9eL2Nm6PjzhjNzU6hV0UfK8Z24vU9CC6J4mrUTTZx396fH7XTYJWqg==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-2.0.4.tgz", + "integrity": "sha512-EpZyfF6wFGzFDmubFIh/EZtYpKindmXx/69xSfKEBTVU0afgljyOOICbyZePe5tvigfOEBLSLgrt/2nN+MlLtA==" }, "@vercel/static-build": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-2.0.8.tgz", - "integrity": "sha512-46//Pxez7mc+UdOZgNv6y9lPSBehMdvCxajb/nvquptDMNH543Itospu9lyt448EQoS7HVE1NSPI21iiCboqvA==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-2.0.14.tgz", + "integrity": "sha512-l5eQtJbk5Pc+P8XARDnpcbX4LnK3bGy7uf6S1aFOD4h6F8iBdg0agWTufZnq5BI91pcPVICPazM5BYhigIEznQ==", "requires": { "@vercel/gatsby-plugin-vercel-analytics": "1.0.11", - "@vercel/gatsby-plugin-vercel-builder": "2.0.7", + "@vercel/gatsby-plugin-vercel-builder": "2.0.12", "@vercel/static-config": "3.0.0", "ts-morph": "12.0.0" } @@ -8821,6 +9294,11 @@ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==" }, + "caniuse-lite": { + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==" + }, "catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -8930,6 +9408,11 @@ } } }, + "client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -9214,16 +9697,16 @@ } }, "edge-runtime": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-2.5.1.tgz", - "integrity": "sha512-E0kY1Dqvwvk9yh7dvR56KnCjXf/dlbrrGjO5Sjnz9Ja3WqYT3csv2B8O4erxJiOWfWy9NTukBk4Kb3yrR66gBw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/edge-runtime/-/edge-runtime-2.5.7.tgz", + "integrity": "sha512-gA4qSVP0sNwJlkdQ2nahDPASlSl8twUd17o+JolPa1EtXpLTGzIpOETvodgJwXIxa+zaD8bnAXCdsWrx2PhlVQ==", "requires": { "@edge-runtime/format": "2.2.0", - "@edge-runtime/vm": "3.1.1", + "@edge-runtime/ponyfill": "2.4.1", + "@edge-runtime/vm": "3.1.7", "async-listen": "3.0.1", "mri": "1.2.0", "picocolors": "1.0.0", - "pretty-bytes": "5.6.0", "pretty-ms": "7.0.1", "signal-exit": "4.0.2", "time-span": "4.0.0" @@ -10310,11 +10793,22 @@ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.2.tgz", "integrity": "sha512-IY73F228OXRl9ar3jJagh7Vnuhj/GzBunPiZP13K0lOl7Am9SoWW3kEzq3MCllJMTtZqHTiDXQvoRd4U95aU6A==" }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, "js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -10578,6 +11072,15 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "optional": true }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, "lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -10836,6 +11339,34 @@ "uid-safe": "2.1.5" } }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "next": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", + "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", + "requires": { + "@next/env": "14.2.5", + "@next/swc-darwin-arm64": "14.2.5", + "@next/swc-darwin-x64": "14.2.5", + "@next/swc-linux-arm64-gnu": "14.2.5", + "@next/swc-linux-arm64-musl": "14.2.5", + "@next/swc-linux-x64-gnu": "14.2.5", + "@next/swc-linux-x64-musl": "14.2.5", + "@next/swc-win32-arm64-msvc": "14.2.5", + "@next/swc-win32-ia32-msvc": "14.2.5", + "@next/swc-win32-x64-msvc": "14.2.5", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + } + }, "node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -11170,6 +11701,16 @@ "resolved": "https://registry.npmjs.org/pointer-tracker/-/pointer-tracker-2.5.3.tgz", "integrity": "sha512-LiJUeIbzk4dXq678YeyrZ++mdY17q4n/2sBHfU9wIuvmSzdiPgMvmvWN2g8mY4J7YwYOIrqrZUWP/MfFHVwYtg==" }, + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, "postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -11181,11 +11722,6 @@ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "optional": true }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - }, "pretty-ms": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", @@ -11361,6 +11897,25 @@ } } }, + "react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + } + }, "readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -11496,6 +12051,15 @@ "yoga-wasm-web": "^0.3.3" } }, + "scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, "seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -11633,6 +12197,11 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "optional": true }, + "source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11819,6 +12388,14 @@ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", "optional": true }, + "styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "requires": { + "client-only": "0.0.1" + } + }, "supertap": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", @@ -12032,9 +12609,9 @@ } }, "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==" }, "uc.micro": { "version": "1.0.6", @@ -12077,11 +12654,18 @@ "optional": true }, "undici": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", - "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", + "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", "requires": { - "busboy": "^1.6.0" + "@fastify/busboy": "^2.0.0" + }, + "dependencies": { + "@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" + } } }, "unicode-trie": { @@ -12127,21 +12711,21 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "vercel": { - "version": "32.4.1", - "resolved": "https://registry.npmjs.org/vercel/-/vercel-32.4.1.tgz", - "integrity": "sha512-cULmLvceDaluXz2usPtPYhb9y/jwjWolAjBBbG1DLGQmxVlnHVHTOJrYPaq2ioujQpU0yi92+RQPdzjzOY6aEg==", + "version": "32.7.2", + "resolved": "https://registry.npmjs.org/vercel/-/vercel-32.7.2.tgz", + "integrity": "sha512-esyeo67OZ/f7usKFCrx6NSjsvpo/BP/C8Mfron2uiCb4vXVcjkwOM7TwliHx6b0DbXjpzomdGVUHKRs34VNn2Q==", "requires": { - "@vercel/build-utils": "7.2.2", + "@vercel/build-utils": "7.3.0", "@vercel/fun": "1.1.0", - "@vercel/go": "3.0.3", + "@vercel/go": "3.0.4", "@vercel/hydrogen": "1.0.1", - "@vercel/next": "4.0.10", - "@vercel/node": "3.0.7", - "@vercel/python": "4.0.2", - "@vercel/redwood": "2.0.4", - "@vercel/remix-builder": "2.0.9", - "@vercel/ruby": "2.0.2", - "@vercel/static-build": "2.0.8", + "@vercel/next": "4.0.15", + "@vercel/node": "3.0.12", + "@vercel/python": "4.1.0", + "@vercel/redwood": "2.0.5", + "@vercel/remix-builder": "2.0.14", + "@vercel/ruby": "2.0.4", + "@vercel/static-build": "2.0.14", "chokidar": "3.3.1" }, "dependencies": { @@ -12296,6 +12880,11 @@ "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", "optional": true }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==" + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index f0d13c709f845d57fbce4c49cd20c68071e43ada..4ee9f96bf20f3814a4b0cc0cb07400ba11c299c4 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "@polymath-ai/host": "*", "@vercel/analytics": "^1.0.2", "@vercel/edge": "^1.1.0", + "@vercel/functions": "^1.4.0", "@vercel/node": "^3.0.7", "@vercel/og": "^0.5.17", "activitypub-core-types": "^0.3.2", @@ -14,19 +15,22 @@ "file-drop-element": "^1.0.1", "firebase-admin": "^11.11.0", "hugo-bin": "^0.115.0", + "jquery": "^3.7.1", "multiparty": "^4.2.3", + "next": "^14.2.5", "node-fetch": "^3.3.2", "pinch-zoom-element": "^1.1.1", "uuid": "^9.0.1", - "vercel": "^32.4.1", - "whatwg-flora-tmpl": "^1.0.3" + "vercel": "^32.7.2", + "whatwg-flora-tmpl": "^1.0.3", + "xmlhttprequest": "^1.8.0" }, "engines": { "node": ">= 18.0.0" }, "devDependencies": { "@types/multiparty": "^0.0.34", - "typescript": "^5.2.2" + "typescript": "^5.5.4" }, "type": "module" } diff --git a/static/javascripts/gitlab-widgets/gitlab-widgets.js b/static/javascripts/gitlab-widgets/gitlab-widgets.js index 2c4dcac1b3a9cc5299d11787b3b707aa8b6c5b9a..939648f2d9a8adabad9f7a98264821e6ec0e7eec 100644 --- a/static/javascripts/gitlab-widgets/gitlab-widgets.js +++ b/static/javascripts/gitlab-widgets/gitlab-widgets.js @@ -32,14 +32,15 @@ function initializeOverviewWidget(widget) { var projectName = overviewWidget.find(".project-name") var releaseList = overviewWidget.find(".gitlab-overview-release-list") var progressList = overviewWidget.find(".gitlab-progress-list") + var proxy = overviewWidget.find("#proxy") var projectId = gitlabWidgets.getGitlabServerProjectID(overviewWidget, 0) var displayCount = gitlabWidgets.getDisplayCount(overviewWidget) - gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(overviewWidget, 0), (data) => { + gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(overviewWidget, 0), proxy, (data) => { projectName.text(data['path_with_namespace']) }); - gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(overviewWidget, 0) + gitlabWidgets.ENDPOINTS.P.MILESTONES, (data) => { + gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(overviewWidget, 0) + gitlabWidgets.ENDPOINTS.P.MILESTONES, proxy, (data) => { var displayedData = null @@ -70,6 +71,7 @@ function initializeOverviewWidget(widget) { async function initializeSingleVersionWidget(widget) { var singleVersionWidget = $(widget) var releaseName = singleVersionWidget.find(".release-name") + var proxy = singleVersionWidget.find("#proxy") var percentageComplete = singleVersionWidget.find(".gitlab-single-version-entry .percentage-complete") var releaseData = null @@ -77,7 +79,7 @@ async function initializeSingleVersionWidget(widget) { var addBugsField = false - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectMilestoneURL(widget, 0), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectMilestoneURL(widget, 0), proxy, (data) => { releaseName.text(data['title']) releaseAnchor = gitlabWidgets.generateMilestoneAnchor(widget, data) let releaseNameDatum = $("<td></td>").append(releaseAnchor) @@ -88,7 +90,7 @@ async function initializeSingleVersionWidget(widget) { releaseData = data }) - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectMilestoneURL(widget, 0), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectMilestoneURL(widget, 0), proxy, (data) => { if(data['state'] == "active") { initializeSingleVersionInProgress(widget, data) } else if(data['state'] == "closed") { @@ -107,6 +109,7 @@ async function initializeSingleVersionWidget(widget) { async function initializeSingleVersionReleased(widget, data) { var singleVersionWidget = $(widget) + var proxy = singleVersionWidget.find("#proxy") var title = singleVersionWidget.find(".title") // DOM manipulations to get rid of fields that make no sense to display singleVersionWidget.find(".percentage-column").remove() @@ -118,7 +121,7 @@ async function initializeSingleVersionReleased(widget, data) { var milestoneBugIssuesParams = new URLSearchParams({ ...issuesSearchParams, milestone: data['title'], labels: ["Type::Bug"] }) // Color title based on whether bug issues exist - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), proxy, (data) => { if(data.length > 0) { title.children("a").addClass("red") } else { @@ -131,6 +134,7 @@ async function initializeSingleVersionReleased(widget, data) { async function initializeSingleVersionInProgress(widget, data) { var singleVersionWidget = $(widget) + var proxy = singleVersionWidget.find("#proxy") // TODO: Calculate percentage complete var allIssuesParams = new URLSearchParams({ ...issuesSearchParams, milestone: data['title'] }) @@ -142,11 +146,11 @@ async function initializeSingleVersionInProgress(widget, data) { var closedIssuesCount = 0 for(let i = 0; i < gitlabWidgets.getGitlabServerCount(singleVersionWidget); i++) { - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allIssuesParams.toString(), (allIssuesData) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allIssuesParams.toString(), proxy, (allIssuesData) => { allIssuesCount += allIssuesData.length }) - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + closedIssuesParams.toString(), (closedIssuesData) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + closedIssuesParams.toString(), proxy, (closedIssuesData) => { closedIssuesCount += closedIssuesData.length }) } @@ -174,6 +178,8 @@ async function populateSingleVersionFooter(widget, milestoneTitle, addBugsField= var mergeRequestCount = 0 var mergeRequestTotal = 0 + var proxy = $(widget).find("#proxy") + var bugFooterElement = $('<span class="footer-element"></span>') let issuesMilestoneSearchParams = new URLSearchParams({ ...issuesSearchParams, milestone: milestoneTitle }) @@ -183,19 +189,19 @@ async function populateSingleVersionFooter(widget, milestoneTitle, addBugsField= let allMRSearchParams = new URLSearchParams({ state: "all", milestone: milestoneTitle }) for(let i = 0; i < gitlabWidgets.getGitlabServerCount(widget); i++) { - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + issuesMilestoneSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + issuesMilestoneSearchParams.toString(), proxy, (data) => { issueTotal += data.length }) - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + issuesOpenMilestoneSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + issuesOpenMilestoneSearchParams.toString(), proxy, (data) => { issueCount += data.length }) - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.MERGE_REQUESTS + "?" + openMRSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.MERGE_REQUESTS + "?" + openMRSearchParams.toString(), proxy, (data) => { mergeRequestCount += data.length }) - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.MERGE_REQUESTS + "?" + allMRSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.MERGE_REQUESTS + "?" + allMRSearchParams.toString(), proxy, (data) => { mergeRequestTotal += data.length }) } @@ -214,14 +220,14 @@ async function populateSingleVersionFooter(widget, milestoneTitle, addBugsField= var milestoneBugIssuesParams = new URLSearchParams({ ...issuesSearchParams, milestone: milestoneTitle, labels: ["Type::Bug"] }) // Color title based on whether bug issues exist - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), proxy, (data) => { getBugCountSinceRelease(widget, milestoneTitle).then((bugCount) => { bugFooterElement.find("#bugs").text(bugCount) }) }) let projectStatsSearchParams = new URLSearchParams({ statistics: "true" }) - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + "?" + projectStatsSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + "?" + projectStatsSearchParams.toString(), proxy, (data) => { $(widget).find("#commits").text(data['statistics']['commit_count']) }) } @@ -231,10 +237,11 @@ async function getBugCountSinceRelease(widget, milestoneTitle) { var indice = 0 var bugCount = 0 + var proxy = $(widget).find("#proxy") + let serverCount = gitlabWidgets.getGitlabServerCount(widget) await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, 0) + gitlabWidgets.ENDPOINTS.P.MILESTONES, (data) => { - //console.log(data) for(var milestone of data) { milestones.push(milestone['title']) } @@ -247,7 +254,7 @@ async function getBugCountSinceRelease(widget, milestoneTitle) { for(var milestone of subsequentMilestones) { let milestoneBugIssuesParams = new URLSearchParams({ ...issuesSearchParams, milestone: milestone, labels: ["Type::Bug"] }) for(let i = 0; i < serverCount; i++) { - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.ISSUES + "?" + milestoneBugIssuesParams.toString(), proxy, (data) => { bugCount += data.length }) } @@ -265,33 +272,35 @@ async function populateFooter(widget) { var mergeRequestTotal = 0 var commitCount = 0 + var proxy = $(widget).find("#proxy") + for(let i = 0; i < gitlabWidgets.getGitlabServerCount(widget); i++) { // Project info - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i), proxy, (data) => { starCount += data['star_count'] issueCount += data['open_issues_count'] }) // Issue count - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.ISSUES, (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.ISSUES, proxy, (data) => { issueTotal += data.length }) // Merge request count let openMRSearchParams = new URLSearchParams({ state: "opened" }) - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.MERGE_REQUESTS + "?" + openMRSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.MERGE_REQUESTS + "?" + openMRSearchParams.toString(), proxy, (data) => { mergeRequestCount += data.length }) // Merge request count, part 2 let allMRSearchParams = new URLSearchParams({ state: "all" }) - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.MERGE_REQUESTS + "?" + allMRSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + gitlabWidgets.ENDPOINTS.P.MERGE_REQUESTS + "?" + allMRSearchParams.toString(), proxy, (data) => { mergeRequestTotal += data.length }) // Count the project commits let projectStatsSearchParams = new URLSearchParams({ statistics: "true" }) - await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + "?" + projectStatsSearchParams.toString(), (data) => { + await gitlabWidgets.apiCall(gitlabWidgets.buildProjectURL(widget, i) + "?" + projectStatsSearchParams.toString(), proxy, (data) => { // We don't sum these values because we don't want to double-count commits // We want the higher count, though let singleProjectCommitCount = data['statistics']['commit_count'] @@ -314,9 +323,11 @@ function removeFooter(widget) { } function styleReleaseName(widget, releases) { + var proxy = $(widget).find("#proxy") + Array.from(releases).forEach(release => { var allBugIssuesParams = new URLSearchParams({ ...issuesBugSearchParams, milestone: release.innerText }) - gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, 0) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allBugIssuesParams.toString(), (data) => { + gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, 0) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allBugIssuesParams.toString(), proxy, (data) => { if(data.length == 0) { $(release).addClass("green") } else { @@ -329,6 +340,8 @@ function styleReleaseName(widget, releases) { async function populateProgressList(widget, progressList, releases) { var displayCount = gitlabWidgets.getDisplayCount(widget) + var proxy = $(widget).find("#proxy") + var displayedReleases = null if(displayCount != null) { @@ -360,11 +373,11 @@ async function populateProgressList(widget, progressList, releases) { for(let i = 0; i < gitlabWidgets.getGitlabServerCount(widget); i++) { // Get issues of milestone_title, open and closed - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allIssuesParams.toString(), (allIssuesData) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + allIssuesParams.toString(), proxy, (allIssuesData) => { allIssuesCount += allIssuesData.length }); - await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + closedIssuesParams.toString(), (closedIssuesData) => { + await gitlabWidgets.apiCall(gitlabWidgets.getGitlabServerURL(widget, i) + gitlabWidgets.ENDPOINTS.ISSUES + "?" + closedIssuesParams.toString(), proxy, (closedIssuesData) => { closedIssuesCount += closedIssuesData.length }); } diff --git a/static/javascripts/gitlab-widgets/helpers.js b/static/javascripts/gitlab-widgets/helpers.js index 6ea587950d73f4ee18f5f8ab1b52fb0486f8d6d9..812c970da461b3418902718548e8cb7ea8accb5a 100644 --- a/static/javascripts/gitlab-widgets/helpers.js +++ b/static/javascripts/gitlab-widgets/helpers.js @@ -2,9 +2,6 @@ export { getDisplayCount, getGitlabServerCount, getGitlabServerURLs, getGitlabSe getGitlabServerProjectID, generateMilestoneAnchor, buildProjectURL, buildProjectMilestoneURL, apiCall, compareSemanticVersions, ENDPOINTS, PUBLIC_PROJECT_ENDPOINT }; -const GITLAB_CLEVERTHIS_TOKEN = "glpat--dYnjsqjXfHxkf6yrzvL" -const GITLAB_QOTO_TOKEN = "glpat-7LzfVvDzWyb_8gwgpG2b" - const PUBLIC_PROJECT_ENDPOINT = "/projects/" const ENDPOINTS = { @@ -76,20 +73,17 @@ function buildProjectMilestoneURL(widget, index) { return url } -function apiCall(endpoint, callback) { - var token = null - if(endpoint.toString().includes("cleverthis.com")) { - token = GITLAB_CLEVERTHIS_TOKEN - } else if(endpoint.toString().includes("qoto.org")) { - token = GITLAB_QOTO_TOKEN - } else { - return - } +function apiCall(endpoint, proxy, callback) { + let proxyURL = new URL(proxy.val()) + let proxySearchParams = new URLSearchParams({ url: endpoint.toString() }) + let fullProxyEndpointWithParams = proxyURL.toString() + "?" + proxySearchParams.toString() + return $.ajax({ - url: endpoint, - dataType: 'json', - headers: { "PRIVATE-TOKEN": token }, + url: fullProxyEndpointWithParams, + method: "GET", + timeout: 0, + error: function(error, status, errorThrown) { console.dir({error, status, errorThrown}) }, }).done(callback) }