Merge pull request #63 from codex-storage/releases/v0.0.7

Releases/v0.0.7
This commit is contained in:
Arnaud 2024-10-22 10:40:01 +01:00 committed by GitHub
commit 8763fbbc59
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 353 additions and 1824 deletions

View File

@ -8,8 +8,8 @@ on:
workflow_dispatch:
env:
codex_version: v0.1.6
circuit_version: v0.1.6
codex_version: v0.1.7
circuit_version: v0.1.7
marketplace_address: "0xfE822Df439d987849a90B64a4C0e26a297DBD47F"
eth_provider: "https://rpc.testnet.codex.storage"
VITE_CODEX_API_URL: ${{ secrets.VITE_CODEX_API_URL }}

32
e2e/download.spec.ts Normal file
View File

@ -0,0 +1,32 @@
import { test, expect } from '@playwright/test';
import { readFileSync } from 'fs';
import path, { dirname } from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
test('download a file', async ({ page, browserName }) => {
// https://github.com/microsoft/playwright/issues/13037
test.skip(browserName.toLowerCase() !== 'chromium',
`Test only for chromium!`);
await page.goto('/dashboard');
await page.locator('div').getByTestId("upload").setInputFiles([
path.join(__dirname, "assets", 'chatgpt.jpg'),
]);
await page.context().grantPermissions(["clipboard-read", "clipboard-write"]);
await page.locator('.files-fileActions > button:nth-child(3)').first().click();
await page.getByRole('button', { name: 'Copy CID' }).click();
const handle = await page.evaluateHandle(() => navigator.clipboard.readText());
const cid = await handle.jsonValue()
await page.locator('.sheets-container > .backdrop').click();
await page.getByPlaceholder('CID').click();
await page.getByPlaceholder('CID').fill(cid);
const page1Promise = page.waitForEvent('popup');
const downloadPromise = page.waitForEvent('download');
await page.locator('div').filter({ hasText: /^Download a fileDownload$/ }).getByRole('button').click();
const page1 = await page1Promise;
const download = await downloadPromise;
expect(await download.failure()).toBeNull()
});

View File

@ -12,12 +12,14 @@ test('update the URL with wrong URL applies', async ({ page }) => {
await page.goto('/dashboard');
await page.getByRole('link', { name: 'Settings' }).click();
await page.getByLabel('Codex client node URL').click();
await page.getByLabel('Codex client node URL').fill('hello');
await expect.soft(page.getByText("The URL is not valid")).toBeVisible()
await expect.soft(page.locator(".settings-url-button")).toBeDisabled()
await page.getByLabel('Codex client node URL').fill('http://127.0.0.1:8079');
await expect.soft(page.getByText("The URL is not valid")).not.toBeVisible()
await expect.soft(page.locator(".settings-url-button")).not.toBeDisabled()
await page.getByRole('button', { name: 'Save changes' }).nth(1).click();
await expect.soft(page.getByText("Cannot retrieve the data")).toBeVisible()
await page.getByLabel('Codex client node URL').fill('http://127.0.0.1:8080');
await page.getByRole('button', { name: 'Save changes' }).nth(1).click();
})

View File

@ -30,7 +30,7 @@ test('select a uploaded cid when creating a storage request', async ({ page }) =
await page.getByRole('link', { name: 'Purchases' }).click();
await page.getByRole('button', { name: 'Storage Request' }).click();
await page.getByPlaceholder('Select or type your CID').click();
await page.getByText('N/A0').click();
await page.locator('.dropdown-option').nth(1).click();
await expect(page.getByText('button[disabled]')).not.toBeVisible();
})

458
package-lock.json generated
View File

@ -1,15 +1,15 @@
{
"name": "@codex-storage/marketplace-ui",
"version": "0.0.6",
"version": "0.0.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@codex-storage/marketplace-ui",
"version": "0.0.6",
"version": "0.0.7",
"license": "MIT",
"dependencies": {
"@codex-storage/marketplace-ui-components": "^0.0.20",
"@codex-storage/marketplace-ui-components": "^0.0.24",
"@codex-storage/sdk-js": "^0.0.8",
"@sentry/browser": "^8.32.0",
"@sentry/react": "^8.31.0",
@ -374,9 +374,9 @@
"dev": true
},
"node_modules/@codex-storage/marketplace-ui-components": {
"version": "0.0.20",
"resolved": "https://registry.npmjs.org/@codex-storage/marketplace-ui-components/-/marketplace-ui-components-0.0.20.tgz",
"integrity": "sha512-nclmhFgseWV6p6hZJg5fPZR0voBOpZcPP79S6jaGWAgrDWogrBFVO4Axhwb9kdenJusIHUsuwG4pAu0r9ylb5w==",
"version": "0.0.24",
"resolved": "https://registry.npmjs.org/@codex-storage/marketplace-ui-components/-/marketplace-ui-components-0.0.24.tgz",
"integrity": "sha512-7YVpy70zC1rHxpUjFOt+gkhj1Rt9wG1Ls4hNtUzR4lFrICvCC8m4EuUg37FlgjTt2H9eLpVt1b090Wyz+CKeng==",
"dependencies": {
"lucide-react": "^0.441.0"
},
@ -620,12 +620,12 @@
}
},
"node_modules/@playwright/test": {
"version": "1.48.0",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.0.tgz",
"integrity": "sha512-W5lhqPUVPqhtc/ySvZI5Q8X2ztBOUgZ8LbAFy0JQgrXZs2xaILrUcNO3rQjwbLPfGK13+rZsDa1FpG+tqYkT5w==",
"version": "1.48.1",
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.48.1.tgz",
"integrity": "sha512-s9RtWoxkOLmRJdw3oFvhFbs9OJS0BzrLUc8Hf6l2UdCNd1rqeEyD4BhCJkvzeEoD1FsK4mirsWwGerhVmYKtZg==",
"dev": true,
"dependencies": {
"playwright": "1.48.0"
"playwright": "1.48.1"
},
"bin": {
"playwright": "cli.js"
@ -843,97 +843,97 @@
]
},
"node_modules/@sentry-internal/browser-utils": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.34.0.tgz",
"integrity": "sha512-4AcYOzPzD1tL5eSRQ/GpKv5enquZf4dMVUez99/Bh3va8qiJrNP55AcM7UzZ7WZLTqKygIYruJTU5Zu2SpEAPQ==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.35.0.tgz",
"integrity": "sha512-uj9nwERm7HIS13f/Q52hF/NUS5Al8Ma6jkgpfYGeppYvU0uSjPkwMogtqoJQNbOoZg973tV8qUScbcWY616wNA==",
"dependencies": {
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/feedback": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.34.0.tgz",
"integrity": "sha512-aYSM2KPUs0FLPxxbJCFSwCYG70VMzlT04xepD1Y/tTlPPOja/02tSv2tyOdZbv8Uw7xslZs3/8Lhj74oYcTBxw==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.35.0.tgz",
"integrity": "sha512-7bjSaUhL0bDArozre6EiIhhdWdT/1AWNWBC1Wc5w1IxEi5xF7nvF/FfvjQYrONQzZAI3HRxc45J2qhLUzHBmoQ==",
"dependencies": {
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/replay": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.34.0.tgz",
"integrity": "sha512-EoMh9NYljNewZK1quY23YILgtNdGgrkzJ9TPsj6jXUG0LZ0Q7N7eFWd0xOEDBvFxrmI3cSXF1i4d1sBb+eyKRw==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.35.0.tgz",
"integrity": "sha512-3wkW03vXYMyWtTLxl9yrtkV+qxbnKFgfASdoGWhXzfLjycgT6o4/04eb3Gn71q9aXqRwH17ISVQbVswnRqMcmA==",
"dependencies": {
"@sentry-internal/browser-utils": "8.34.0",
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry-internal/browser-utils": "8.35.0",
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/replay-canvas": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.34.0.tgz",
"integrity": "sha512-x8KhZcCDpbKHqFOykYXiamX6x0LRxv6N1OJHoH+XCrMtiDBZr4Yo30d/MaS6rjmKGMtSRij30v+Uq+YWIgxUrg==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.35.0.tgz",
"integrity": "sha512-TUrH6Piv19kvHIiRyIuapLdnuwxk/Un/l1WDCQfq7mK9p1Pac0FkQ7Uufjp6zY3lyhDDZQ8qvCS4ioCMibCwQg==",
"dependencies": {
"@sentry-internal/replay": "8.34.0",
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry-internal/replay": "8.35.0",
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/browser": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.34.0.tgz",
"integrity": "sha512-3HHG2NXxzHq1lVmDy2uRjYjGNf9NsJsTPlOC70vbQdOb+S49EdH/XMPy+J3ruIoyv6Cu0LwvA6bMOM6rHZOgNQ==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.35.0.tgz",
"integrity": "sha512-WHfI+NoZzpCsmIvtr6ChOe7yWPLQyMchPnVhY3Z4UeC70bkYNdKcoj/4XZbX3m0D8+71JAsm0mJ9s9OC3Ue6MQ==",
"dependencies": {
"@sentry-internal/browser-utils": "8.34.0",
"@sentry-internal/feedback": "8.34.0",
"@sentry-internal/replay": "8.34.0",
"@sentry-internal/replay-canvas": "8.34.0",
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry-internal/browser-utils": "8.35.0",
"@sentry-internal/feedback": "8.35.0",
"@sentry-internal/replay": "8.35.0",
"@sentry-internal/replay-canvas": "8.35.0",
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/core": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.34.0.tgz",
"integrity": "sha512-adrXCTK/zsg5pJ67lgtZqdqHvyx6etMjQW3P82NgWdj83c8fb+zH+K79Z47pD4zQjX0ou2Ws5nwwi4wJbz4bfA==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.35.0.tgz",
"integrity": "sha512-Ci0Nmtw5ETWLqQJGY4dyF+iWh7PWKy6k303fCEoEmqj2czDrKJCp7yHBNV0XYbo00prj2ZTbCr6I7albYiyONA==",
"dependencies": {
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0"
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/react": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.34.0.tgz",
"integrity": "sha512-gIgzhj7h67C+Sdq2ul4fOSK142Gf0uV99bqHRdtIiUlXw9yjzZQY5TKTtzbOaevn7qBJ0xrRKtIRUbOBMl0clw==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-8.35.0.tgz",
"integrity": "sha512-8Y+s4pE9hvT2TwSo5JS/Enw2cNFlwiLcJDNGCj/Hho+FePFYA59hbN06ouTHWARnO+swANHKZQj24Wp57p1/tg==",
"dependencies": {
"@sentry/browser": "8.34.0",
"@sentry/core": "8.34.0",
"@sentry/types": "8.34.0",
"@sentry/utils": "8.34.0",
"@sentry/browser": "8.35.0",
"@sentry/core": "8.35.0",
"@sentry/types": "8.35.0",
"@sentry/utils": "8.35.0",
"hoist-non-react-statics": "^3.3.2"
},
"engines": {
@ -944,19 +944,19 @@
}
},
"node_modules/@sentry/types": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.34.0.tgz",
"integrity": "sha512-zLRc60CzohGCo6zNsNeQ9JF3SiEeRE4aDCP9fDDdIVCOKovS+mn1rtSip0qd0Vp2fidOu0+2yY0ALCz1A3PJSQ==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.35.0.tgz",
"integrity": "sha512-AVEZjb16MlYPifiDDvJ19dPQyDn0jlrtC1PHs6ZKO+Rzyz+2EX2BRdszvanqArldexPoU1p5Bn2w81XZNXThBA==",
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/utils": {
"version": "8.34.0",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.34.0.tgz",
"integrity": "sha512-W1KoRlFUjprlh3t86DZPFxLfM6mzjRzshVfMY7vRlJFymBelJsnJ3A1lPeBZM9nCraOSiw6GtOWu6k5BAkiGIg==",
"version": "8.35.0",
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.35.0.tgz",
"integrity": "sha512-MdMb6+uXjqND7qIPWhulubpSeHzia6HtxeJa8jYI09OCvIcmNGPydv/Gx/LZBwosfMHrLdTWcFH7Y7aCxrq7cg==",
"dependencies": {
"@sentry/types": "8.34.0"
"@sentry/types": "8.35.0"
},
"engines": {
"node": ">=14.18"
@ -984,9 +984,9 @@
}
},
"node_modules/@tanstack/react-query": {
"version": "5.59.14",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.14.tgz",
"integrity": "sha512-2cM4x3Ka4Thl7/wnjf++EMGA2Is/RgPynn83D4kfGiJOGSjb5T2D3EEOlC8Nt6U2htLS3imOXjOSMEjC3K7JNg==",
"version": "5.59.15",
"resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.15.tgz",
"integrity": "sha512-QbVlAkTI78wB4Mqgf2RDmgC0AOiJqer2c5k9STOOSXGv1S6ZkY37r/6UpE8DbQ2Du0ohsdoXgFNEyv+4eDoPEw==",
"dependencies": {
"@tanstack/query-core": "5.59.13"
},
@ -999,12 +999,12 @@
}
},
"node_modules/@tanstack/react-router": {
"version": "1.67.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.67.0.tgz",
"integrity": "sha512-8AmtDpJZpoC+TnHf9qS0FbRz7qnLkQ336Oi6fyhfbHH+BPvf27tlj+YxbVrt7sVrdvI8n3AZveUGx38/JUkLDQ==",
"version": "1.75.0",
"resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.75.0.tgz",
"integrity": "sha512-iELqrMjlE/Y2JeOkvTfrPPKovrvtj1M+PTESfNfNv26Ja1efotcx0hEXiClmT7KYIlVBf0TowI5GUBNWGArm6A==",
"dependencies": {
"@tanstack/history": "1.61.1",
"@tanstack/react-store": "^0.5.5",
"@tanstack/react-store": "^0.5.6",
"tiny-invariant": "^1.3.3",
"tiny-warning": "^1.0.3"
},
@ -1016,7 +1016,7 @@
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
"@tanstack/router-generator": "1.65.0",
"@tanstack/router-generator": "1.74.2",
"react": ">=18",
"react-dom": ">=18"
},
@ -1027,8 +1027,9 @@
}
},
"node_modules/@tanstack/react-store": {
"version": "0.5.5",
"license": "MIT",
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/@tanstack/react-store/-/react-store-0.5.6.tgz",
"integrity": "sha512-SitIpS5jTj28DajjLpWbIX+YetmJL+6PRY0DKKiCGBKfYIqj3ryODQYF3jB3SNoR9ifUA/jFkqbJdBKFtWd+AQ==",
"dependencies": {
"@tanstack/store": "0.5.5",
"use-sync-external-store": "^1.2.2"
@ -1065,9 +1066,9 @@
}
},
"node_modules/@tanstack/router-generator": {
"version": "1.65.0",
"resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.65.0.tgz",
"integrity": "sha512-N2H2cHBbUNLqx/ySd5g0R1GR8gGc4UagoBWmQKaTD5gHjFwWojJhigllZlQN4U1nxZLb4yJ3eJYuxRQZCoqaJw==",
"version": "1.74.2",
"resolved": "https://registry.npmjs.org/@tanstack/router-generator/-/router-generator-1.74.2.tgz",
"integrity": "sha512-S69fXvYcL+tQsO5Fe9ju/XVa/hZvk4pCaWbtoR2MNjIgR2RmjiFKOgXYeLRMNom/IpP/HAQmQ3m1DwU9jjSUKA==",
"devOptional": true,
"dependencies": {
"@tanstack/virtual-file-routes": "^1.64.0",
@ -1552,9 +1553,9 @@
}
},
"node_modules/@tanstack/router-plugin": {
"version": "1.66.1",
"resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.66.1.tgz",
"integrity": "sha512-0oeO4x1AKwL9lP9WMJ4ysVcNCUdXHffjFKBWYaEt1Cj2RkWgaWXtSzgg3dhFFemYgn/Zm1NOGQlA4f6/q/PPZw==",
"version": "1.76.0",
"resolved": "https://registry.npmjs.org/@tanstack/router-plugin/-/router-plugin-1.76.0.tgz",
"integrity": "sha512-5JY1NeNbxi7jamTKTAWLyyC9t4Y9Ol+vFZB84h6F1K1BkxqeWQTCJuXMYCY3KawSd7xy2mVT/BgDyZ0AS5hKAA==",
"dev": true,
"dependencies": {
"@babel/core": "^7.25.8",
@ -1565,7 +1566,7 @@
"@babel/template": "^7.25.7",
"@babel/traverse": "^7.25.7",
"@babel/types": "^7.25.8",
"@tanstack/router-generator": "^1.65.0",
"@tanstack/router-generator": "^1.74.2",
"@tanstack/virtual-file-routes": "^1.64.0",
"@types/babel__core": "^7.20.5",
"@types/babel__generator": "^7.6.8",
@ -1602,7 +1603,8 @@
},
"node_modules/@tanstack/store": {
"version": "0.5.5",
"license": "MIT",
"resolved": "https://registry.npmjs.org/@tanstack/store/-/store-0.5.5.tgz",
"integrity": "sha512-EOSrgdDAJExbvRZEQ/Xhh9iZchXpMN+ga1Bnk8Nmygzs8TfiE6hbzThF+Pr2G19uHL6+DTDTHhJ8VQiOd7l4tA==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
@ -1695,9 +1697,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.7.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz",
"integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==",
"version": "22.7.8",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.8.tgz",
"integrity": "sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==",
"dev": true,
"dependencies": {
"undici-types": "~6.19.2"
@ -1728,16 +1730,16 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.9.0.tgz",
"integrity": "sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz",
"integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
"@typescript-eslint/scope-manager": "8.9.0",
"@typescript-eslint/type-utils": "8.9.0",
"@typescript-eslint/utils": "8.9.0",
"@typescript-eslint/visitor-keys": "8.9.0",
"@typescript-eslint/scope-manager": "8.11.0",
"@typescript-eslint/type-utils": "8.11.0",
"@typescript-eslint/utils": "8.11.0",
"@typescript-eslint/visitor-keys": "8.11.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@ -1761,15 +1763,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.9.0.tgz",
"integrity": "sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz",
"integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==",
"dev": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.9.0",
"@typescript-eslint/types": "8.9.0",
"@typescript-eslint/typescript-estree": "8.9.0",
"@typescript-eslint/visitor-keys": "8.9.0",
"@typescript-eslint/scope-manager": "8.11.0",
"@typescript-eslint/types": "8.11.0",
"@typescript-eslint/typescript-estree": "8.11.0",
"@typescript-eslint/visitor-keys": "8.11.0",
"debug": "^4.3.4"
},
"engines": {
@ -1789,13 +1791,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz",
"integrity": "sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz",
"integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.9.0",
"@typescript-eslint/visitor-keys": "8.9.0"
"@typescript-eslint/types": "8.11.0",
"@typescript-eslint/visitor-keys": "8.11.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1806,13 +1808,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.9.0.tgz",
"integrity": "sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz",
"integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==",
"dev": true,
"dependencies": {
"@typescript-eslint/typescript-estree": "8.9.0",
"@typescript-eslint/utils": "8.9.0",
"@typescript-eslint/typescript-estree": "8.11.0",
"@typescript-eslint/utils": "8.11.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@ -1830,9 +1832,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz",
"integrity": "sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz",
"integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==",
"dev": true,
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1843,13 +1845,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz",
"integrity": "sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz",
"integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.9.0",
"@typescript-eslint/visitor-keys": "8.9.0",
"@typescript-eslint/types": "8.11.0",
"@typescript-eslint/visitor-keys": "8.11.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@ -1883,15 +1885,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz",
"integrity": "sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz",
"integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
"@typescript-eslint/scope-manager": "8.9.0",
"@typescript-eslint/types": "8.9.0",
"@typescript-eslint/typescript-estree": "8.9.0"
"@typescript-eslint/scope-manager": "8.11.0",
"@typescript-eslint/types": "8.11.0",
"@typescript-eslint/typescript-estree": "8.11.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1905,12 +1907,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz",
"integrity": "sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==",
"version": "8.11.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz",
"integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==",
"dev": true,
"dependencies": {
"@typescript-eslint/types": "8.9.0",
"@typescript-eslint/types": "8.11.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@ -1927,13 +1929,14 @@
"license": "ISC"
},
"node_modules/@vitejs/plugin-react": {
"version": "4.3.1",
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.3.tgz",
"integrity": "sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.24.5",
"@babel/plugin-transform-react-jsx-self": "^7.24.5",
"@babel/plugin-transform-react-jsx-source": "^7.24.1",
"@babel/core": "^7.25.2",
"@babel/plugin-transform-react-jsx-self": "^7.24.7",
"@babel/plugin-transform-react-jsx-source": "^7.24.7",
"@types/babel__core": "^7.20.5",
"react-refresh": "^0.14.2"
},
@ -2393,9 +2396,9 @@
}
},
"node_modules/eslint-plugin-react-refresh": {
"version": "0.4.12",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz",
"integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==",
"version": "0.4.13",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.13.tgz",
"integrity": "sha512-f1EppwrpJRWmqDTyvAyomFVDYRtrS7iTEqv3nokETnMiMzs2SSTmKRTACce4O2p4jYyowiSMvpdwC/RLcMFhuQ==",
"dev": true,
"peerDependencies": {
"eslint": ">=7"
@ -3221,12 +3224,12 @@
}
},
"node_modules/playwright": {
"version": "1.48.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.0.tgz",
"integrity": "sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA==",
"version": "1.48.1",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.48.1.tgz",
"integrity": "sha512-j8CiHW/V6HxmbntOfyB4+T/uk08tBy6ph0MpBXwuoofkSnLmlfdYNNkFTYD6ofzzlSqLA1fwH4vwvVFvJgLN0w==",
"dev": true,
"dependencies": {
"playwright-core": "1.48.0"
"playwright-core": "1.48.1"
},
"bin": {
"playwright": "cli.js"
@ -3239,9 +3242,9 @@
}
},
"node_modules/playwright-core": {
"version": "1.48.0",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.0.tgz",
"integrity": "sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==",
"version": "1.48.1",
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.1.tgz",
"integrity": "sha512-Yw/t4VAFX/bBr1OzwCuOMZkY1Cnb4z/doAFSwf4huqAGWmf9eMNjmK7NiOljCdLmxeRYcGPPmcDgU0zOlzP0YA==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
@ -3499,9 +3502,9 @@
}
},
"node_modules/sass-embedded": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.79.5.tgz",
"integrity": "sha512-QFdalnjGFkbNvb6/uQGmP4OIN+GQ5/R77eu0PsXduDB1YP5JW5DSWFVDAyK6l6C54P+3J3eXkjuPYC0mcwX+AA==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.80.3.tgz",
"integrity": "sha512-aTxTl4ToSAWg7ILFgAe+kMenj+zNlwHmHK/ZNPrOM8+HTef1Q6zuxolptYLijmHdZHKSMOkWYHgo5MMN6+GIyg==",
"dev": true,
"dependencies": {
"@bufbuild/protobuf": "^2.0.0",
@ -3519,32 +3522,32 @@
"node": ">=16.0.0"
},
"optionalDependencies": {
"sass-embedded-android-arm": "1.79.5",
"sass-embedded-android-arm64": "1.79.5",
"sass-embedded-android-ia32": "1.79.5",
"sass-embedded-android-riscv64": "1.79.5",
"sass-embedded-android-x64": "1.79.5",
"sass-embedded-darwin-arm64": "1.79.5",
"sass-embedded-darwin-x64": "1.79.5",
"sass-embedded-linux-arm": "1.79.5",
"sass-embedded-linux-arm64": "1.79.5",
"sass-embedded-linux-ia32": "1.79.5",
"sass-embedded-linux-musl-arm": "1.79.5",
"sass-embedded-linux-musl-arm64": "1.79.5",
"sass-embedded-linux-musl-ia32": "1.79.5",
"sass-embedded-linux-musl-riscv64": "1.79.5",
"sass-embedded-linux-musl-x64": "1.79.5",
"sass-embedded-linux-riscv64": "1.79.5",
"sass-embedded-linux-x64": "1.79.5",
"sass-embedded-win32-arm64": "1.79.5",
"sass-embedded-win32-ia32": "1.79.5",
"sass-embedded-win32-x64": "1.79.5"
"sass-embedded-android-arm": "1.80.3",
"sass-embedded-android-arm64": "1.80.3",
"sass-embedded-android-ia32": "1.80.3",
"sass-embedded-android-riscv64": "1.80.3",
"sass-embedded-android-x64": "1.80.3",
"sass-embedded-darwin-arm64": "1.80.3",
"sass-embedded-darwin-x64": "1.80.3",
"sass-embedded-linux-arm": "1.80.3",
"sass-embedded-linux-arm64": "1.80.3",
"sass-embedded-linux-ia32": "1.80.3",
"sass-embedded-linux-musl-arm": "1.80.3",
"sass-embedded-linux-musl-arm64": "1.80.3",
"sass-embedded-linux-musl-ia32": "1.80.3",
"sass-embedded-linux-musl-riscv64": "1.80.3",
"sass-embedded-linux-musl-x64": "1.80.3",
"sass-embedded-linux-riscv64": "1.80.3",
"sass-embedded-linux-x64": "1.80.3",
"sass-embedded-win32-arm64": "1.80.3",
"sass-embedded-win32-ia32": "1.80.3",
"sass-embedded-win32-x64": "1.80.3"
}
},
"node_modules/sass-embedded-android-arm": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.79.5.tgz",
"integrity": "sha512-gYtpQAE2uNFa5IBKBIzUq5ETDS6gnVRmhP5j+N5JGrOThYaGPcG4KrjlU9R3BfCmc7zP5WvlHFZsxSz+2JRT2w==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.80.3.tgz",
"integrity": "sha512-i87crav7sfShzY7AyUneXvs4SWdJ93QlYIpo/2OQPTJV5MjJF8wUp0o9NT8Oo6sUJ26kfgsb64FwqQh1wO5uBg==",
"cpu": [
"arm"
],
@ -3558,9 +3561,9 @@
}
},
"node_modules/sass-embedded-android-arm64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.79.5.tgz",
"integrity": "sha512-pq1RJTENkRmEUMLiVuSGYwuLk8zXovWzrjQxlWZTF/Jn5F7Ypi/3v5huMmgJF5n+etsxjio1PN1idaQ5tPLBmg==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.80.3.tgz",
"integrity": "sha512-uaEKdi+PaFc1V87vj2eCUB8B2ThNvEYYu9Qs5sCtx1atEQDtvp/smHYlXOVrg2M4+g2YASkDBQewyk+auZtG0g==",
"cpu": [
"arm64"
],
@ -3574,9 +3577,9 @@
}
},
"node_modules/sass-embedded-android-ia32": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.79.5.tgz",
"integrity": "sha512-CgJZjLxYRkgjTP/76WumLlF7+1aW0LA+DSEJhkVaCxe5avndRCmPrNcX0PrtYSDvUgeQDvY7xF+fT9QXN1+NgQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.80.3.tgz",
"integrity": "sha512-XCa4Se7vqWuV5tFLZuYWidPLUCeK7n1AgugircJl/9QPThCGZ2mSRF0Ipj3lv+Qw4GG9kkhCqJIrksTGbSFypw==",
"cpu": [
"ia32"
],
@ -3590,9 +3593,9 @@
}
},
"node_modules/sass-embedded-android-riscv64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.79.5.tgz",
"integrity": "sha512-OLbdmDSM/eOjO01PUYbS54BQOCM/HHHHWk/4M8HHdxwF3ojy5eqQaA63R1YQ3IJvLEE7dnudofOXmL01B5+yvQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.80.3.tgz",
"integrity": "sha512-Dn3hYh5rchfivnPrHoff2pWutuFYJRddzEXcjfb0JhgF7JmTA/6Dxaym0pqVpS1RmYDiAYnmoX5OeFtEkdVytA==",
"cpu": [
"riscv64"
],
@ -3606,9 +3609,9 @@
}
},
"node_modules/sass-embedded-android-x64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.79.5.tgz",
"integrity": "sha512-UbXxk/rdR3aVBkB7Fh/eAUL7oUADWgQrYpLe9Xu5A0gmthw0/zo/pu7kweBSrbgHnPfWIt/uxwmW4eEAmqqZWQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.80.3.tgz",
"integrity": "sha512-QWOTHKPznYJnrP3HrlFYnAQOZ/c2am4ctK1cFIMtjQNGaFra8z94LZSQzAd6eeu6mITKwQbJuff36RpICZpgHA==",
"cpu": [
"x64"
],
@ -3622,9 +3625,9 @@
}
},
"node_modules/sass-embedded-darwin-arm64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.79.5.tgz",
"integrity": "sha512-qeEl9XhYetZSY1j4nqvh3hB8tfYOAGsOQyVOCaxyX1bubMRSGPvPNIyftm14QzK7EDrE/K/0+FwCvflarOV4NQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.80.3.tgz",
"integrity": "sha512-NqJXHzZGqVOarr36X5MIv0UCQHYVhOFXGe7kDhNqMQCiNApkVydseB5TM1C2lVaiWy2JaseRD/dUNS/o2ICKXw==",
"cpu": [
"arm64"
],
@ -3638,9 +3641,9 @@
}
},
"node_modules/sass-embedded-darwin-x64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.79.5.tgz",
"integrity": "sha512-y4pvkYCQhgruxlncub/2j+cZSmlpsZX9Rp1aTRIKvlNagqFStYzFZ6kX3CErlfCEAMYwRVEhP8z/OOoDqnjaZA==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.80.3.tgz",
"integrity": "sha512-6dmNn+oNxXE5uGThfAsHgz7Jg1oDhXHHQyPAnIIaMOM5dXv0D/nLmrlFbFajK0HtbzGaTVBTE6wkJwjASuP0Uw==",
"cpu": [
"x64"
],
@ -3654,9 +3657,9 @@
}
},
"node_modules/sass-embedded-linux-arm": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.79.5.tgz",
"integrity": "sha512-rX6qAR8pE1pevYhGzbCpGFexdH4z6QMnw3IeiCNmkpJ4zMXNEN336xl6SZN0xaPiGuNDhUFcq0wgSq3RDKS5vQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.80.3.tgz",
"integrity": "sha512-nZ7Y8gZgr+/fYrbsX3L8BfIafWXGVBcc0gKLoujad+axlFGv1MetO17S3vzrOQ1wuhjvDLVxceA/jtcta1qxoA==",
"cpu": [
"arm"
],
@ -3670,9 +3673,9 @@
}
},
"node_modules/sass-embedded-linux-arm64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.79.5.tgz",
"integrity": "sha512-kiUbrLiNAA7vOe6kpdukRhCad1u7ebwhB0ZE63+IgF5HFZ/Qo6GkhHIrVM9AfeLxUT3N6Z4BNtgdcRa9na4Pwg==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.80.3.tgz",
"integrity": "sha512-a9IILen4I6oFFb5qMHOiFqIAoztPuvJ6VHNaFbktP8SUvH4FX63ZutR/qKisN9DoudzSXMZijv/aG/bTh0Kccw==",
"cpu": [
"arm64"
],
@ -3686,9 +3689,9 @@
}
},
"node_modules/sass-embedded-linux-ia32": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.79.5.tgz",
"integrity": "sha512-12pj3fBV0+VAX/RI6uYFxi/MoUoihRKP7iVpo9MaT/m+EtvN6mYsDpi/T4pTq2dKQYljoaFq8Rb6tR+FinS1zg==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.80.3.tgz",
"integrity": "sha512-yKy4N0L9WfGokpBMHOhxzaS3jyzrHUg1+5Idi6J88onwxfpEhqOgdMcoqgOqvryMPrmKN7kW5d3iNpUYOniPnw==",
"cpu": [
"ia32"
],
@ -3702,9 +3705,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.79.5.tgz",
"integrity": "sha512-EHFrbTgRymEFTf3JnjHzC24PO0WHFjLUEWUJqSuWKZw0+BCL7120MvYIrfkYymPp5UYk+STIjj+Fd9dYSWBrAg==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.80.3.tgz",
"integrity": "sha512-yB7iSoS/phNHKFsZRW0rTRwoCTtOBELG/UYpIa2qATWZsDASSjdBitGsKS3nEliweveuGIVlUqG2kUKaq9M39g==",
"cpu": [
"arm"
],
@ -3718,9 +3721,9 @@
}
},
"node_modules/sass-embedded-linux-musl-arm64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.79.5.tgz",
"integrity": "sha512-Qg1HuQ+ebz3wfPT7xty2G8BpDLXdyfMk7WqKd+X1DlFEcY/kcNapwMVFXS2fCYTTR3gcbIZ4p7eUiQySlkj93A==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.80.3.tgz",
"integrity": "sha512-mw4BPe42wlAwg6vgmGkg+MDDyXZBexvAWC+QigtfMjTVHuSAB527UVWhIyv4jAkKLp71mPowsXXsfa4UHzyBaA==",
"cpu": [
"arm64"
],
@ -3734,9 +3737,9 @@
}
},
"node_modules/sass-embedded-linux-musl-ia32": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.79.5.tgz",
"integrity": "sha512-2qdsGIcdCnpsw8Ijuq8uk4RifxV/lTd1mqjrfge7AfFBtQIExbxZoYBtbSrcY63ONa+UWEf9Z1p6rZ3QySKWlg==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.80.3.tgz",
"integrity": "sha512-eyg5L9IFisCYYMXEZ/56X8k8wdhpfK06/j9MFAINE9U4C5NxQXrVWmMTEqgyfpmca8hziBlvbRrjdquteyXWfw==",
"cpu": [
"ia32"
],
@ -3750,9 +3753,9 @@
}
},
"node_modules/sass-embedded-linux-musl-riscv64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.79.5.tgz",
"integrity": "sha512-wrc6s8YQt95koSkaLoP5HtvAAKxTPWqYZVxnoqp2bHgkKWlr4ymJll9vMcdU3//VxTgJbuH83U5ajzNCtHd0NQ==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.80.3.tgz",
"integrity": "sha512-0VThiW7Gwo5UNgKyETYID6F2prHvOCH8fQQKM0sS/JSbTu1poTwD35yEptVxBpiTvyWwxI7K5Cbn0gtxobaqzA==",
"cpu": [
"riscv64"
],
@ -3766,9 +3769,9 @@
}
},
"node_modules/sass-embedded-linux-musl-x64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.79.5.tgz",
"integrity": "sha512-1J6JrGpVp07GsBEzEGj/9u6UkVUuga2U7kpfkQxIdYOLmXmXmni6zNx89VehaP7X5OSscwJc/Zufh++6VcRQHw==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.80.3.tgz",
"integrity": "sha512-ALSKlhTQdNS0cayyaXD8huNd+DRjWgCjDqyjvwSgemfLL+wtmVCO8h9rGu1MCwR8GHP6ceZCT2fBmjfcGHk0DQ==",
"cpu": [
"x64"
],
@ -3782,9 +3785,9 @@
}
},
"node_modules/sass-embedded-linux-riscv64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.79.5.tgz",
"integrity": "sha512-G45UKRAUgvxXhLROowTgVmyIVyGtRZoCMVH1vPi0EG5SePy43AkhjQVaUb6Ol6lfRRNpQqBFKw3UabxaMCM0Ow==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.80.3.tgz",
"integrity": "sha512-/1JvuQi137BNO7iTvNNraGYEt9mh3ch44cabJBTxLn3IZV5vNblENI+Hrj9J8/VWIsJumwPQGZSUrMbZcgB0tg==",
"cpu": [
"riscv64"
],
@ -3798,9 +3801,9 @@
}
},
"node_modules/sass-embedded-linux-x64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.79.5.tgz",
"integrity": "sha512-EOk6pULzxM9b5B8uuuZbQXqfg2BQheAovQeYAw4ueHikaFoESOfaA8OG4kl0v1m5v5tKqAHOjy7xFhtpbEpqEw==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.80.3.tgz",
"integrity": "sha512-ISQUnl9oFA0PFPtgOpgotfKQ8guUBIYcTpkHEF9lQ4PyFIxkXppk5CwQ8l0VQcQaKhOD2HQAucoqM51U7FABqA==",
"cpu": [
"x64"
],
@ -3814,9 +3817,9 @@
}
},
"node_modules/sass-embedded-win32-arm64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.79.5.tgz",
"integrity": "sha512-KdkJOmJSe5lhR4Kxn522GbZo4jRUnQ+V4JQSaIbyxKndBpD81NGPYhDs0ikpJciqrwbmiBxVD5Qqeim6B1gdxA==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.80.3.tgz",
"integrity": "sha512-RFT/OsWHVagPYa/9v+KfVM99QgzwzwnT2maapRfulEH39v0uPGOIFNXmnhaN3E5gNLIjIn3CTnR9KjTC145E8Q==",
"cpu": [
"arm64"
],
@ -3830,9 +3833,9 @@
}
},
"node_modules/sass-embedded-win32-ia32": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.79.5.tgz",
"integrity": "sha512-1YX4TVw6j3eqxRyPK3t45V5WSyAzql6EgKIEtjPQ0+ByRyqLRuHXlotHPX6KOcc0rA3LMUHmdskN1o08sRIDhA==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.80.3.tgz",
"integrity": "sha512-Is0eeX+UlWW7yPfDqc2Z2n9ql2rkA1uDaAkbHWWx5APc8CKYtds1w4B3Tyoy6lHnopEifgzgsnp6QSyOHHzPBg==",
"cpu": [
"ia32"
],
@ -3846,9 +3849,9 @@
}
},
"node_modules/sass-embedded-win32-x64": {
"version": "1.79.5",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.79.5.tgz",
"integrity": "sha512-8Tj9hBpOd6e+j23uTDecFb1ezQhvjQ+jvgKdVg9VlvwKUWmEStnHKA0x1uIQTThIM3dLCsYe63b/wX43gP8tBA==",
"version": "1.80.3",
"resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.3.tgz",
"integrity": "sha512-wehVA0atPloc6NKof/ctpW0agM+k7kiBLIpQs3/mi9FAlmTjxNnvntBPZIbl8n7AAExiLEir+x/LHC0yGhTfkg==",
"cpu": [
"x64"
],
@ -4113,7 +4116,8 @@
},
"node_modules/use-sync-external-store": {
"version": "1.2.2",
"license": "MIT",
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
"integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}

View File

@ -5,7 +5,7 @@
"type": "git",
"url": "https://github.com/codex-storage/codex-marketplace-ui"
},
"version": "0.0.6",
"version": "0.0.7",
"type": "module",
"scripts": {
"dev": "vite --host 127.0.0.1 --port 5173",
@ -24,7 +24,7 @@
"React"
],
"dependencies": {
"@codex-storage/marketplace-ui-components": "^0.0.20",
"@codex-storage/marketplace-ui-components": "^0.0.24",
"@codex-storage/sdk-js": "^0.0.8",
"@sentry/browser": "^8.32.0",
"@sentry/react": "^8.31.0",

View File

@ -6,6 +6,7 @@ import { CodexSdk } from "../../sdk/codex";
export function CodexUrlSettings() {
const queryClient = useQueryClient();
const [url, setUrl] = useState(CodexSdk.url);
const [isInvalid, setIsInvalid] = useState(false);
const [toast, setToast] = useState({ time: 0, message: "" });
const { mutateAsync } = useMutation({
mutationFn: (url: string) => CodexSdk.updateURL(url),
@ -17,23 +18,37 @@ export function CodexUrlSettings() {
});
const onChange = (e: React.FormEvent<HTMLInputElement>) => {
const value = e.currentTarget.value;
if (value) {
setUrl(value);
const element = e.currentTarget;
const value = element.value;
setUrl(value);
setIsInvalid(!element.checkValidity());
};
const onClick = () => {
if (isInvalid === false) {
mutateAsync(url);
}
};
const onClick = () => mutateAsync(url);
return (
<>
<Input
id="url"
label="Codex client node URL"
onChange={onChange}
value={url}
inputClassName="settings-input"></Input>
<Button variant="primary" label="Save changes" onClick={onClick}></Button>
<div className="settings-input">
<Input
id="url"
label="Codex client node URL"
onChange={onChange}
value={url}
isInvalid={isInvalid}
helper={isInvalid ? "The URL is not valid" : "Enter a valid URL"}
type="url"></Input>
</div>
<Button
className="settings-url-button"
disabled={isInvalid}
variant="primary"
label="Save changes"
onClick={onClick}></Button>
<Toast message={toast.message} time={toast.time} variant="success" />
</>
);

View File

@ -7,7 +7,7 @@ export function Download() {
const [cid, setCid] = useState("");
const onDownload = () => {
const url = CodexSdk.url() + "/api/codex/v1/data/";
window.open(url + cid + "/network", "_target");
window.open(url + cid + "/network/stream", "_target");
};
const onCidChange = (e: ChangeEvent<HTMLInputElement>) =>

View File

@ -1,6 +1,5 @@
import { Cell } from "@codex-storage/marketplace-ui-components";
import { PeerPin } from "./types";
import { countriesCoordinates } from "./countries";
import { useQuery } from "@tanstack/react-query";
import "./PeerCountryCell.css";
import { useEffect } from "react";
@ -23,11 +22,9 @@ export function PeerCountryCell({ address, onPinAdd }: Props) {
queryFn: () => {
const [ip] = address.split(":");
return fetch(import.meta.env.VITE_GEO_IP_URL + "/" + ip)
.then((res) => res.json())
.then((json) =>
countriesCoordinates.find((c) => c.iso === json.country)
);
return fetch(import.meta.env.VITE_GEO_IP_URL + "/json?ip=" + ip).then(
(res) => res.json()
);
},
refetchOnMount: true,
@ -51,8 +48,8 @@ export function PeerCountryCell({ address, onPinAdd }: Props) {
useEffect(() => {
if (data) {
onPinAdd({
lat: parseFloat(data.lat),
lng: parseFloat(data.lng),
lat: data.latitude,
lng: data.longitude,
});
}
}, [data]);
@ -62,8 +59,8 @@ export function PeerCountryCell({ address, onPinAdd }: Props) {
<div className="peerCountry">
{data ? (
<>
<span> {!!data && getFlagEmoji(data.iso)}</span>
<span>{data?.name}</span>
<span> {!!data && getFlagEmoji(data.country_iso)}</span>
<span>{data?.country}</span>
</>
) : (
<span>{address}</span>

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,6 @@ import {
UploadResponse,
} from "@codex-storage/sdk-js";
import { CodexSdk as Sdk } from "./sdk/codex";
import { WebStorage } from "./utils/web-storage";
import { FilesStorage } from "./utils/file-storage";
import { PurchaseStorage } from "./utils/purchases-storage";
@ -16,15 +15,58 @@ class CodexDataMock extends CodexData {
file: File,
onProgress?: (loaded: number, total: number) => void
): UploadResponse {
// const url = CodexSdk.url() + "/api/codex/v1/data";
// const xhr = new XMLHttpRequest();
// const promise = new Promise<SafeValue<string>>((resolve) => {
// xhr.upload.onprogress = (evt) => {
// if (evt.lengthComputable) {
// onProgress?.(evt.loaded, evt.total);
// }
// };
// xhr.open("POST", url, true);
// xhr.setRequestHeader("Content-Disposition", "attachment; filename=\"" + file.name + "\"")
// xhr.send(file);
// xhr.onload = function () {
// if (xhr.status != 200) {
// resolve({
// error: true,
// data: new CodexError(xhr.responseText, {
// code: xhr.status,
// }),
// });
// } else {
// resolve({ error: false, data: xhr.response });
// }
// };
// xhr.onerror = function () {
// resolve({
// error: true,
// data: new CodexError("Something went wrong during the file upload."),
// });
// };
// });
// return {
// result: promise,
// abort: () => {
// xhr.abort();
// },
// };
const { result, abort } = super.upload(file, onProgress);
return {
abort,
result: result.then((safe) => {
if (!safe.error) {
return WebStorage.set(safe.data, {
type: file.type,
return FilesStorage.set(safe.data, {
mimetype: file.type,
name: file.name,
uploadedAt: new Date().toJSON(),
}).then(() => safe);
}