diff --git a/.env.example b/.env.example
index 20e5f49..6718f38 100644
--- a/.env.example
+++ b/.env.example
@@ -1,3 +1,14 @@
DATABASE_URL=
NEXTAUTH_SECRET=
-BASE_URL=
\ No newline at end of file
+BASE_URL=
+
+# Email Configuration
+EMAIL_HOST=
+EMAIL_PORT=
+EMAIL_SECURE=
+EMAIL_USER=
+EMAIL_PASSWORD=
+EMAIL_RECIPIENT=
+
+# SendGrid Configuration
+SENDGRID_API_KEY=
\ No newline at end of file
diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml
index 08663fb..f9b047b 100644
--- a/.github/workflows/CI.yml
+++ b/.github/workflows/CI.yml
@@ -18,23 +18,24 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3
- - uses: pnpm/action-setup@v4
- name: Install pnpm
- with:
- version: 10
- run_install: false
-
- name: Install Node.js
uses: actions/setup-node@v4
with:
- node-version: 20
- cache: 'pnpm'
+ node-version: "latest"
+
+ - name: Install pnpm
+ run: npm i -g pnpm
- name: Install dependencies
run: pnpm install
- - name: Generate Prisma client
- run: pnpm prisma generate
+ - name: Generate Prisma Client
+ run: pnpx prisma generate
+
+ - name: Sleep
+ uses: jakejarvis/wait-action@master
+ with:
+ time: '5s'
- name: Build Next.js
- run: pnpm build
\ No newline at end of file
+ run: pnpm run build
\ No newline at end of file
diff --git a/content/docs/basic-usage.mdx b/content/docs/basic-usage.mdx
index 29c98cc..d7c0e5a 100644
--- a/content/docs/basic-usage.mdx
+++ b/content/docs/basic-usage.mdx
@@ -47,8 +47,6 @@ After creating a test, you can add steps to it:
await reporter.step("Step name", async () => {
// Your step implementation goes here
// For example: await page.click('.button');
-
- return true; // or any value
});
```
@@ -70,7 +68,6 @@ The `step` method accepts the following parameters:
```javascript
await reporter.step("Click login button", async () => {
await page.click('.login-button');
- return true;
});
```
@@ -162,27 +159,22 @@ async function runTest() {
// Add test steps
await reporter.step("Navigate to login page", () => {
console.log("Navigating to login page...");
- return true;
});
await reporter.step("Enter username", () => {
console.log("Entering username...");
- return true;
});
await reporter.step("Enter password", () => {
console.log("Entering password...");
- return true;
});
await reporter.step("Click login button", () => {
console.log("Clicking login button...");
- return true;
});
await reporter.step("Verify redirect to dashboard", () => {
console.log("Verifying redirect...");
- return true;
});
// End the test and get results
@@ -227,5 +219,4 @@ try {
## Next Steps
Now that you understand the basics, check out:
-- [Examples](/docs/examples) for integration with specific frameworks
-- [API Reference](/docs/api-reference) for detailed API documentation
\ No newline at end of file
+- [Examples](/docs/examples) for integration with specific frameworks
\ No newline at end of file
diff --git a/content/docs/examples.mdx b/content/docs/examples.mdx
index 7534389..05a147d 100644
--- a/content/docs/examples.mdx
+++ b/content/docs/examples.mdx
@@ -34,18 +34,15 @@ test('Product search test', async ({ page, browser }) => {
// Test steps
await reporter.step('Navigate to homepage', async () => {
await page.goto('https://example.com');
- return true;
});
await reporter.step('Click search box', async () => {
await page.click('.search-box');
- return true;
});
await reporter.step('Enter search query', async () => {
await page.fill('.search-input', 'test product');
await page.press('.search-input', 'Enter');
- return true;
});
// Take a screenshot of the search results
@@ -112,18 +109,15 @@ import { test, expect } from './fixtures';
test('User login test', async ({ page, qaReporter }) => {
await qaReporter.step('Navigate to login page', async () => {
await page.goto('https://example.com/login');
- return true;
});
await qaReporter.step('Enter credentials', async () => {
await page.fill('#username', 'testuser');
await page.fill('#password', 'password123');
- return true;
});
await qaReporter.step('Click login button', async () => {
await page.click('#login-button');
- return true;
});
await qaReporter.step('Verify successful login', async () => {
@@ -158,162 +152,14 @@ describe('User functions', () => {
test('should register a new user', async () => {
await reporter.step('Fill out registration form', () => {
// Registration form logic
- return true;
});
await reporter.step('Submit registration form', () => {
// Form submission logic
- return true;
});
await reporter.step('Verify confirmation email', () => {
// Email verification logic
- return true;
- });
- });
-});
-```
-
-### Jest with Custom Reporter
-
-You can also create a custom Jest reporter to automatically handle QAFlow reporting:
-
-```javascript
-// qaflow-jest-reporter.js
-import reporter from '@qaflow/report';
-
-class QAFlowJestReporter {
- constructor(globalConfig, options) {
- this.globalConfig = globalConfig;
- this.options = options;
- this.currentTest = null;
- }
-
- onRunStart() {
- // Initialize QAFlow if needed
- if (this.options.apiKey) {
- reporter.initialize(this.options.apiKey);
- }
- }
-
- onTestStart(test) {
- this.currentTest = test;
-
- reporter.createTest(
- test.title,
- test.fullName,
- { author: this.options.author || 'Jest Tester', email: this.options.email || 'tester@example.com' },
- { name: 'Jest', version: process.version, os: process.platform }
- );
- }
-
- async onTestResult(test, testResult) {
- if (testResult.status === 'failed') {
- // Record the failure
- await reporter.step('Test execution', false, {
- description: testResult.failureMessage
- });
- } else {
- // Record the success
- await reporter.step('Test execution', true);
- }
-
- await reporter.end();
- }
-
- onRunComplete() {
- // Cleanup if needed
- }
-}
-
-module.exports = QAFlowJestReporter;
-```
-
-Configure in your Jest config:
-
-```javascript
-// jest.config.js
-module.exports = {
- reporters: [
- 'default',
- ['./qaflow-jest-reporter.js', {
- apiKey: process.env.QAFLOW_API_KEY,
- author: 'Jest Test Runner',
- email: 'test@example.com'
- }]
- ]
-};
-```
-
-## Cypress Integration
-
-### Basic Cypress Example
-
-```javascript
-// cypress/support/e2e.js
-import reporter from '@qaflow/report';
-
-// Initialize QAFlow Reporter
-beforeEach(() => {
- const testName = Cypress.currentTest.title;
- const testDescription = `${Cypress.currentTest.titlePath.join(' > ')}`;
-
- reporter.createTest(
- testName,
- testDescription,
- { author: 'Cypress Tester', email: 'cypress@example.com' },
- {
- name: 'Cypress',
- browser: Cypress.browser.name,
- version: Cypress.browser.version,
- os: Cypress.platform
- }
- );
-});
-
-// End test after completion
-afterEach(() => {
- reporter.end();
-});
-
-// Define a custom Cypress command for steps
-Cypress.Commands.add('qaStep', (name, fn, options) => {
- return cy.wrap(null).then(async () => {
- return reporter.step(name, fn, options);
- });
-});
-```
-
-In your test file:
-
-```javascript
-// cypress/e2e/login.cy.js
-describe('Login functionality', () => {
- it('Should log in successfully with valid credentials', () => {
- cy.visit('/login');
-
- cy.qaStep('Navigate to login page', () => {
- return true;
- });
-
- cy.qaStep('Enter username', () => {
- cy.get('#username').type('testuser');
- return true;
- });
-
- cy.qaStep('Enter password', () => {
- cy.get('#password').type('password123');
- return true;
- });
-
- cy.qaStep('Click login button', () => {
- cy.get('#login-button').click();
- return true;
- });
-
- cy.qaStep('Verify successful login', () => {
- cy.url().should('include', '/dashboard');
- return true;
});
});
});
@@ -342,7 +188,6 @@ async function runMyCustomTest() {
// Test steps
await reporter.step('Initialize API client', () => {
console.log('Initializing API client...');
- return true;
});
await reporter.step('Generate test order', async () => {
@@ -359,7 +204,6 @@ async function runMyCustomTest() {
await reporter.step('Verify payment success', async () => {
console.log('Verifying payment success...');
- return true;
});
// End the test
@@ -376,112 +220,4 @@ async function runMyCustomTest() {
runMyCustomTest().catch(console.error);
```
-## Advanced Examples
-
-### Parallel Tests
-
-When running tests in parallel, ensure each test has a unique ID:
-
-```javascript
-import reporter from '@qaflow/report';
-
-// For parallel tests, create a custom instance
-const myReporter = new QAFlowReport({
- apiKey: 'your-api-key-here'
-});
-
-async function runTest(testId) {
- const test = myReporter.createTest(
- `Parallel Test ${testId}`,
- `Test running in parallel with ID ${testId}`,
- { author: 'Parallel Tester', email: 'parallel@example.com' },
- { name: 'Node.js', version: process.version, os: process.platform }
- );
-
- // Add steps
- await test.step(`Step 1 for test ${testId}`, async () => {
- await new Promise(resolve => setTimeout(resolve, 100 * testId));
- return true;
- });
-
- await test.step(`Step 2 for test ${testId}`, async () => {
- await new Promise(resolve => setTimeout(resolve, 50 * testId));
- return true;
- });
-
- // End this specific test
- return test.end();
-}
-
-// Run 5 tests in parallel
-Promise.all([1, 2, 3, 4, 5].map(id => runTest(id)))
- .then(results => {
- console.log('All tests completed!');
- results.forEach(result => {
- console.log(`${result.name}: ${result.summary.passed}/${result.summary.total} passed`);
- });
- })
- .catch(console.error);
-```
-
-### Nested Steps
-
-For more complex tests, you can create nested steps by calling `reporter.step` inside another step:
-
-```javascript
-import reporter from '@qaflow/report';
-
-async function runComplexTest() {
- reporter.createTest(
- 'Complex Workflow Test',
- 'Tests a complex multi-step workflow',
- { author: 'QA Tester', email: 'tester@example.com' },
- { name: 'Node.js', version: process.version, os: process.platform }
- );
-
- await reporter.step('User registration flow', async () => {
- const user = { name: 'Test User', email: 'user@example.com' };
-
- // Nested steps
- await reporter.step('Fill registration form', () => {
- console.log('Filling form...');
- return true;
- });
-
- await reporter.step('Submit registration', () => {
- console.log('Submitting registration...');
- return true;
- });
-
- await reporter.step('Verify email', () => {
- console.log('Verifying email...');
- return true;
- });
-
- return user; // Return value from parent step
- });
-
- await reporter.step('Product ordering flow', async () => {
- // More nested steps...
- await reporter.step('Search for product', () => {
- return true;
- });
-
- await reporter.step('Add to cart', () => {
- return true;
- });
-
- await reporter.step('Checkout', () => {
- return true;
- });
- });
-
- const results = await reporter.end();
- console.log('Complex test completed!');
- console.log(results);
-}
-
-runComplexTest().catch(console.error);
-```
-
These examples should help you get started with QAFlow Reporter in your testing workflows. For more detailed API documentation, see the [API Reference](/docs/api-reference) section.
\ No newline at end of file
diff --git a/content/docs/index.mdx b/content/docs/index.mdx
index 0b39648..3fc4344 100644
--- a/content/docs/index.mdx
+++ b/content/docs/index.mdx
@@ -53,22 +53,18 @@ reporter.createTest(
// Add test steps
await reporter.step("Navigate to login page", () => {
// Step implementation
- return true; // Step passes
});
await reporter.step("Enter username", () => {
// Username entry logic
- return true;
});
await reporter.step("Enter password", () => {
// Password entry logic
- return true;
});
await reporter.step("Click login button", () => {
// Login button click logic
- return true;
});
// End the test and get results
diff --git a/content/docs/installation.mdx b/content/docs/installation.mdx
index 7fc673a..570d56b 100644
--- a/content/docs/installation.mdx
+++ b/content/docs/installation.mdx
@@ -83,8 +83,6 @@ QAFlow Reporter supports the following configuration options:
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `apiKey` | string | required | Your QAFlow API key |
-| `pingInterval` | number | `null` | Interval in milliseconds for sending ping requests |
-| `autoScreenshot` | boolean | `false` | Whether to automatically capture screenshots |
## Verifying Installation
@@ -106,7 +104,6 @@ reporter.createTest(
// Add a test step
await reporter.step("Verify connection", async () => {
// This step should pass
- return true;
});
// End the test
diff --git a/next.config.ts b/next.config.ts
index 6f361eb..45269c4 100644
--- a/next.config.ts
+++ b/next.config.ts
@@ -5,10 +5,9 @@ const withMDX = createMDX();
const nextConfig: NextConfig = {
output: "standalone",
- reactStrictMode: true,
eslint: {
ignoreDuringBuilds: true,
- },
+ }
};
export default withMDX(nextConfig);
diff --git a/package.json b/package.json
index 2a1d7ce..87da016 100644
--- a/package.json
+++ b/package.json
@@ -29,21 +29,27 @@
"vercel-build": "prisma generate && fumadocs-mdx && next build"
},
"dependencies": {
- "@auth/prisma-adapter": "^2.7.4",
+ "@auth/prisma-adapter": "2.7.4",
"@heroicons/react": "^2.2.0",
"@hookform/resolvers": "^4.1.2",
"@prisma/client": "^6.4.1",
+ "@sendgrid/mail": "^8.1.4",
"@tailwindcss/postcss": "^4.0.9",
"bcryptjs": "^2.4.3",
- "daisyui": "5.0.0-beta.8",
+ "ejs": "^3.1.10",
+ "express-handlebars": "^8.0.1",
"fumadocs-core": "15.0.13",
"fumadocs-mdx": "11.5.6",
"fumadocs-ui": "15.0.13",
+ "handlebars": "^4.7.8",
"mongodb": "^6.13.0",
"motion": "^12.4.7",
"nanoid": "^5.1.2",
"next": "15.1.6",
"next-auth": "5.0.0-beta.25",
+ "next-themes": "^0.4.4",
+ "nodemailer": "^6.10.0",
+ "nodemailer-express-handlebars": "^7.0.0",
"postcss-cli": "^11.0.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
@@ -56,16 +62,21 @@
"devDependencies": {
"@eslint/eslintrc": "^3",
"@types/bcryptjs": "^2.4.6",
+ "@types/ejs": "^3.1.5",
+ "@types/handlebars": "^4.1.0",
"@types/mdx": "^2.0.13",
"@types/node": "^20",
+ "@types/nodemailer": "^6.4.17",
+ "@types/nodemailer-express-handlebars": "^4.0.5",
"@types/react": "^19",
"@types/react-dom": "^19",
"autoprefixer": "^10.4.20",
"eslint": "^9",
"eslint-config-next": "15.1.6",
"postcss": "^8.5.3",
- "prisma": "^6.3.0",
+ "prisma": "6.3.0",
"tailwindcss": "^4.0.9",
+ "tsx": "^4.19.3",
"typescript": "^5"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9c9beab..8a53995 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,26 +9,32 @@ importers:
.:
dependencies:
'@auth/prisma-adapter':
- specifier: ^2.7.4
- version: 2.7.4(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3))
+ specifier: 2.7.4
+ version: 2.7.4(@prisma/client@6.4.1(prisma@6.3.0(typescript@5.8.2))(typescript@5.8.2))(nodemailer@6.10.0)
'@heroicons/react':
specifier: ^2.2.0
version: 2.2.0(react@19.0.0)
'@hookform/resolvers':
specifier: ^4.1.2
- version: 4.1.2(react-hook-form@7.54.2(react@19.0.0))
+ version: 4.1.3(react-hook-form@7.54.2(react@19.0.0))
'@prisma/client':
specifier: ^6.4.1
- version: 6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3)
+ version: 6.4.1(prisma@6.3.0(typescript@5.8.2))(typescript@5.8.2)
+ '@sendgrid/mail':
+ specifier: ^8.1.4
+ version: 8.1.4
'@tailwindcss/postcss':
specifier: ^4.0.9
version: 4.0.9
bcryptjs:
specifier: ^2.4.3
version: 2.4.3
- daisyui:
- specifier: 5.0.0-beta.8
- version: 5.0.0-beta.8
+ ejs:
+ specifier: ^3.1.10
+ version: 3.1.10
+ express-handlebars:
+ specifier: ^8.0.1
+ version: 8.0.1
fumadocs-core:
specifier: 15.0.13
version: 15.0.13(@types/react@19.0.10)(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -38,12 +44,15 @@ importers:
fumadocs-ui:
specifier: 15.0.13
version: 15.0.13(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(fumadocs-core@15.0.13(@types/react@19.0.10)(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.9)
+ handlebars:
+ specifier: ^4.7.8
+ version: 4.7.8
mongodb:
specifier: ^6.13.0
- version: 6.13.1
+ version: 6.14.1
motion:
specifier: ^12.4.7
- version: 12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ version: 12.4.10(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
nanoid:
specifier: ^5.1.2
version: 5.1.2
@@ -52,10 +61,19 @@ importers:
version: 15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
next-auth:
specifier: 5.0.0-beta.25
- version: 5.0.0-beta.25(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)
+ version: 5.0.0-beta.25(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(nodemailer@6.10.0)(react@19.0.0)
+ next-themes:
+ specifier: ^0.4.4
+ version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ nodemailer:
+ specifier: ^6.10.0
+ version: 6.10.0
+ nodemailer-express-handlebars:
+ specifier: ^7.0.0
+ version: 7.0.0(express-handlebars@8.0.1)(nodemailer@6.10.0)
postcss-cli:
specifier: ^11.0.0
- version: 11.0.0(jiti@2.4.2)(postcss@8.5.3)
+ version: 11.0.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -84,12 +102,24 @@ importers:
'@types/bcryptjs':
specifier: ^2.4.6
version: 2.4.6
+ '@types/ejs':
+ specifier: ^3.1.5
+ version: 3.1.5
+ '@types/handlebars':
+ specifier: ^4.1.0
+ version: 4.1.0
'@types/mdx':
specifier: ^2.0.13
version: 2.0.13
'@types/node':
specifier: ^20
- version: 20.17.19
+ version: 20.17.23
+ '@types/nodemailer':
+ specifier: ^6.4.17
+ version: 6.4.17
+ '@types/nodemailer-express-handlebars':
+ specifier: ^4.0.5
+ version: 4.0.5
'@types/react':
specifier: ^19
version: 19.0.10
@@ -104,19 +134,22 @@ importers:
version: 9.21.0(jiti@2.4.2)
eslint-config-next:
specifier: 15.1.6
- version: 15.1.6(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
+ version: 15.1.6(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
postcss:
specifier: ^8.5.3
version: 8.5.3
prisma:
- specifier: ^6.3.0
- version: 6.4.1(typescript@5.7.3)
+ specifier: 6.3.0
+ version: 6.3.0(typescript@5.8.2)
tailwindcss:
specifier: ^4.0.9
version: 4.0.9
+ tsx:
+ specifier: ^4.19.3
+ version: 4.19.3
typescript:
specifier: ^5
- version: 5.7.3
+ version: 5.8.2
packages:
@@ -371,8 +404,8 @@ packages:
peerDependencies:
react: '>= 16 || ^19.0.0-rc'
- '@hookform/resolvers@4.1.2':
- resolution: {integrity: sha512-wl6H9c9wLOZMJAqGLEVKzbCkxJuV+BYuLFZFCQtCwMe0b3qQk4kUBd/ZAj13SwcSqcx86rCgSCyngQfmA6DOWg==}
+ '@hookform/resolvers@4.1.3':
+ resolution: {integrity: sha512-Jsv6UOWYTrEFJ/01ZrnwVXs7KDvP8XIo115i++5PWvNkNvkrsTfGiLS6w+eJ57CYtUtDQalUWovCZDHFJ8u1VQ==}
peerDependencies:
react-hook-form: ^7.0.0
@@ -501,6 +534,10 @@ packages:
cpu: [x64]
os: [win32]
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
'@mdx-js/mdx@3.1.0':
resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==}
@@ -596,20 +633,20 @@ packages:
typescript:
optional: true
- '@prisma/debug@6.4.1':
- resolution: {integrity: sha512-Q9xk6yjEGIThjSD8zZegxd5tBRNHYd13GOIG0nLsanbTXATiPXCLyvlYEfvbR2ft6dlRsziQXfQGxAgv7zcMUA==}
+ '@prisma/debug@6.3.0':
+ resolution: {integrity: sha512-m1lQv//0Rc5RG8TBpNUuLCxC35Ghi5XfpPmL83Gh04/GICHD2J5H2ndMlaljrUNaQDF9dOxIuFAYP1rE9wkXkg==}
- '@prisma/engines-version@6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d':
- resolution: {integrity: sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ==}
+ '@prisma/engines-version@6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0':
+ resolution: {integrity: sha512-R/ZcMuaWZT2UBmgX3Ko6PAV3f8//ZzsjRIG1eKqp3f2rqEqVtCv+mtzuH2rBPUC9ujJ5kCb9wwpxeyCkLcHVyA==}
- '@prisma/engines@6.4.1':
- resolution: {integrity: sha512-KldENzMHtKYwsOSLThghOIdXOBEsfDuGSrxAZjMnimBiDKd3AE4JQ+Kv+gBD/x77WoV9xIPf25GXMWffXZ17BA==}
+ '@prisma/engines@6.3.0':
+ resolution: {integrity: sha512-RXqYhlZb9sx/xkUfYIZuEPn7sT0WgTxNOuEYQ7AGw3IMpP9QGVEDVsluc/GcNkM8NTJszeqk8AplJzI9lm7Jxw==}
- '@prisma/fetch-engine@6.4.1':
- resolution: {integrity: sha512-uZ5hVeTmDspx7KcaRCNoXmcReOD+84nwlO2oFvQPRQh9xiFYnnUKDz7l9bLxp8t4+25CsaNlgrgilXKSQwrIGQ==}
+ '@prisma/fetch-engine@6.3.0':
+ resolution: {integrity: sha512-GBy0iT4f1mH31ePzfcpVSUa7JLRTeq4914FG2vR3LqDwRweSm4ja1o5flGDz+eVIa/BNYfkBvRRxv4D6ve6Eew==}
- '@prisma/get-platform@6.4.1':
- resolution: {integrity: sha512-gXqZaDI5scDkBF8oza7fOD3Q3QMD0e0rBynlzDDZdTWbWmzjuW58PRZtj+jkvKje2+ZigCWkH8SsWZAsH6q1Yw==}
+ '@prisma/get-platform@6.3.0':
+ resolution: {integrity: sha512-V8zZ1d0xfyi6FjpNP4AcYuwSpGcdmu35OXWnTPm8IW594PYALzKXHwIa9+o0f+Lo9AecFWrwrwaoYe56UNfTtQ==}
'@radix-ui/number@1.1.0':
resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
@@ -964,29 +1001,41 @@ packages:
'@rushstack/eslint-patch@1.10.5':
resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==}
- '@shikijs/core@3.0.0':
- resolution: {integrity: sha512-gSm3JQf2J2psiUn5bWokmZwnu5N0jfBtRps4CQ1B+qrFvmZCRAkMVoaxgl9qZgAFK5KisLAS3//XaMFVytYHKw==}
+ '@sendgrid/client@8.1.4':
+ resolution: {integrity: sha512-VxZoQ82MpxmjSXLR3ZAE2OWxvQIW2k2G24UeRPr/SYX8HqWLV/8UBN15T2WmjjnEb5XSmFImTJOKDzzSeKr9YQ==}
+ engines: {node: '>=12.*'}
+
+ '@sendgrid/helpers@8.0.0':
+ resolution: {integrity: sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==}
+ engines: {node: '>= 12.0.0'}
+
+ '@sendgrid/mail@8.1.4':
+ resolution: {integrity: sha512-MUpIZykD9ARie8LElYCqbcBhGGMaA/E6I7fEcG7Hc2An26QJyLtwOaKQ3taGp8xO8BICPJrSKuYV4bDeAJKFGQ==}
+ engines: {node: '>=12.*'}
- '@shikijs/engine-javascript@3.0.0':
- resolution: {integrity: sha512-zoB10hTfvk1iZk1ldt6VaF+0iucQL+4TtSvTdTu5MhOeLPLEf5nZ8Wz6uxlp99y627OLalYa2z4W0iTTwb6oyA==}
+ '@shikijs/core@3.1.0':
+ resolution: {integrity: sha512-1ppAOyg3F18N8Ge9DmJjGqRVswihN33rOgPovR6gUHW17Hw1L4RlRhnmVQcsacSHh0A8IO1FIgNbtTxUFwodmg==}
- '@shikijs/engine-oniguruma@3.0.0':
- resolution: {integrity: sha512-uM9lqwMrlPHPVcdpAN/4pAzTJah1pY7mi9f1MxG887SDkjF/tdiQK+5200Y8N5Hg125sewdMQ1K2agoAo8hDiA==}
+ '@shikijs/engine-javascript@3.1.0':
+ resolution: {integrity: sha512-/LwkhW17jYi7uPcdaaSQQDNW+xgrHXarkrxYPoC6WPzH2xW5mFMw12doHXJBqxmYvtcTbaatcv2MkH9+3PU1FA==}
- '@shikijs/langs@3.0.0':
- resolution: {integrity: sha512-HBsZAukiYz7k3hzttPWa0en3PABEwK3cpxcAcERRwvwuKc5pn0Y+yPxAIYZtN9cFdtNqrbFJNhfcEu/xbG1u/A==}
+ '@shikijs/engine-oniguruma@3.1.0':
+ resolution: {integrity: sha512-reRgy8VzDPdiDocuGDD60Rk/jLxgcgy+6H4n6jYLeN2Yw5ikasRjQQx8ERXtDM35yg2v/d6KolDBcK8hYYhcmw==}
- '@shikijs/rehype@3.0.0':
- resolution: {integrity: sha512-cvl6W9rkxM94q1nECj8WTpOjUxZ1BIhuAxiq1V1sqLPWLm7TN6GtNOPT7fhg1fHX6M5fj3fE0LUXELFKC2FRCQ==}
+ '@shikijs/langs@3.1.0':
+ resolution: {integrity: sha512-hAM//sExPXAXG3ZDWjrmV6Vlw4zlWFOcT1ZXNhFRBwPP27scZu/ZIdZ+TdTgy06zSvyF4KIjnF8j6+ScKGu6ww==}
- '@shikijs/themes@3.0.0':
- resolution: {integrity: sha512-mz63nyVB5nXWsv5H2hifDFIThZEJ/cJhMq1/+0JjMdOuuBq2H2D1Fn8UM5yzUtEvap/ipRltv381+hsHZFs4ug==}
+ '@shikijs/rehype@3.1.0':
+ resolution: {integrity: sha512-snfifm4fwSmkCbUUHrpgHP2F8oPWP6WUQOJrh+k0aQazqv2a0jYLLXs2mK1Y1w/JfQ/NnKNbRUmZQqS9zxTXGw==}
- '@shikijs/transformers@3.0.0':
- resolution: {integrity: sha512-N6iwlPt1IN4oQMdwSqWJhveBjfY2eLBjdmGglPngQ9ML1OPAgCPog0hI1lFPl52Rx7+s7GGuvWsSIu4zCUv2XA==}
+ '@shikijs/themes@3.1.0':
+ resolution: {integrity: sha512-A4MJmy9+ydLNbNCtkmdTp8a+ON+MMXoUe1KTkELkyu0+pHGOcbouhNuobhZoK59cL4cOST6CCz1x+kUdkp9UZA==}
- '@shikijs/types@3.0.0':
- resolution: {integrity: sha512-kh/xgZHxI6m9trVvPw+C47jyVHx190r0F5gkF+VO5vYB54UtcoPJe66dzZmK7GbJbzmtGEGbOwct/jsoPjjUqg==}
+ '@shikijs/transformers@3.1.0':
+ resolution: {integrity: sha512-Et+agcilvJOmWh/goUczrdM6R35JrEr8B8xZxJVv6rCIpUo2rICtWZF4YBUIILx5mV78455EcYyFPCrk3lJ+nw==}
+
+ '@shikijs/types@3.1.0':
+ resolution: {integrity: sha512-F8e7Fy4ihtcNpJG572BZZC1ErYrBrzJ5Cbc9Zi3REgWry43gIvjJ9lFAoUnuy7Bvy4IFz7grUSxL5edfrrjFEA==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -1095,12 +1144,22 @@ packages:
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ '@types/ejs@3.1.5':
+ resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==}
+
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ '@types/express-handlebars@5.3.1':
+ resolution: {integrity: sha512-DSzaERLO4gHb8AqnrL58jzSDyT0yDdl6HqDc+bGz1Hf0nrG1FK30nHGzv8NBEGR8QV9eUGB/YaE0Qj3NjF7siw==}
+
+ '@types/handlebars@4.1.0':
+ resolution: {integrity: sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==}
+ deprecated: This is a stub types definition. handlebars provides its own type definitions, so you do not need this installed.
+
'@types/hast@2.3.10':
resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
@@ -1122,8 +1181,14 @@ packages:
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
- '@types/node@20.17.19':
- resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==}
+ '@types/node@20.17.23':
+ resolution: {integrity: sha512-8PCGZ1ZJbEZuYNTMqywO+Sj4vSKjSjT6Ua+6RFOYlEvIvKQABPtrNkoVSLSKDb4obYcMhspVKmsw8Cm10NFRUg==}
+
+ '@types/nodemailer-express-handlebars@4.0.5':
+ resolution: {integrity: sha512-SuSYGNQPGtgMkDlQTO7zacXDENqQR3QXW1Ip5PvvookodvUKCbNVRF1tisY3Bgew1h8Wjfsf6dPQ5E45pJ1bJA==}
+
+ '@types/nodemailer@6.4.17':
+ resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==}
'@types/react-dom@19.0.4':
resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==}
@@ -1145,51 +1210,51 @@ packages:
'@types/whatwg-url@11.0.5':
resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==}
- '@typescript-eslint/eslint-plugin@8.25.0':
- resolution: {integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==}
+ '@typescript-eslint/eslint-plugin@8.26.0':
+ resolution: {integrity: sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/parser@8.25.0':
- resolution: {integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==}
+ '@typescript-eslint/parser@8.26.0':
+ resolution: {integrity: sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/scope-manager@8.25.0':
- resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==}
+ '@typescript-eslint/scope-manager@8.26.0':
+ resolution: {integrity: sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.25.0':
- resolution: {integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==}
+ '@typescript-eslint/type-utils@8.26.0':
+ resolution: {integrity: sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/types@8.25.0':
- resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==}
+ '@typescript-eslint/types@8.26.0':
+ resolution: {integrity: sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.25.0':
- resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==}
+ '@typescript-eslint/typescript-estree@8.26.0':
+ resolution: {integrity: sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/utils@8.25.0':
- resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==}
+ '@typescript-eslint/utils@8.26.0':
+ resolution: {integrity: sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- typescript: '>=4.8.4 <5.8.0'
+ typescript: '>=4.8.4 <5.9.0'
- '@typescript-eslint/visitor-keys@8.25.0':
- resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==}
+ '@typescript-eslint/visitor-keys@8.26.0':
+ resolution: {integrity: sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0':
@@ -1212,10 +1277,18 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
+ ansi-regex@6.1.0:
+ resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
+ engines: {node: '>=12'}
+
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
@@ -1277,6 +1350,12 @@ packages:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
autoprefixer@10.4.20:
resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
engines: {node: ^10 || ^12 || >=14}
@@ -1292,6 +1371,9 @@ packages:
resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==}
engines: {node: '>=4'}
+ axios@1.8.1:
+ resolution: {integrity: sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==}
+
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -1340,16 +1422,16 @@ packages:
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
engines: {node: '>= 0.4'}
- call-bound@1.0.3:
- resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
callsites@3.1.0:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001701:
- resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==}
+ caniuse-lite@1.0.30001702:
+ resolution: {integrity: sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -1418,6 +1500,10 @@ packages:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
engines: {node: '>=12.5.0'}
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
comma-separated-tokens@1.0.8:
resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
@@ -1446,9 +1532,6 @@ packages:
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- daisyui@5.0.0-beta.8:
- resolution: {integrity: sha512-jSokqm5i+Pv1jG80wliNzMHjmcF+iMx5xRUpk0/QExVoVNyQNWeCsaWJQubPvUq7bt9nzSsQTR2uIZBoyIIoaA==}
-
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
@@ -1487,6 +1570,10 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -1495,6 +1582,10 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
dependency-graph@0.11.0:
resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==}
engines: {node: '>= 0.6.0'}
@@ -1526,8 +1617,16 @@ packages:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
- electron-to-chromium@1.5.105:
- resolution: {integrity: sha512-ccp7LocdXx3yBhwiG0qTQ7XFrK48Ua2pxIxBdJO8cbddp/MvbBtPFzvnTchtyHQTsgqqczO8cdmAIbpMa0u2+g==}
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+
+ electron-to-chromium@1.5.112:
+ resolution: {integrity: sha512-oen93kVyqSb3l+ziUgzIOlWt/oOuy4zRmpwestMn4rhFWAoFJeFuCVte9F2fASjeZZo7l/Cif9TiyrdW4CwEMA==}
emoji-regex-xs@1.0.0:
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
@@ -1580,11 +1679,6 @@ packages:
esast-util-from-js@2.0.1:
resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
- esbuild-register@3.6.0:
- resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
- peerDependencies:
- esbuild: '>=0.12 <1'
-
esbuild@0.25.0:
resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
engines: {node: '>=18'}
@@ -1664,8 +1758,8 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
- eslint-plugin-react-hooks@5.1.0:
- resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==}
+ eslint-plugin-react-hooks@5.2.0:
+ resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
@@ -1747,6 +1841,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ express-handlebars@8.0.1:
+ resolution: {integrity: sha512-mdas0PTbgQnwSyAjcYM7OMaftM8nJ3Kqz6yAyK4iCFvMOGGvh6pv42IHwcE5PBpS6ffYeZRSsgAdYUMG4CSjhQ==}
+ engines: {node: '>=20'}
+
extend-shallow@2.0.1:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
engines: {node: '>=0.10.0'}
@@ -1789,6 +1887,9 @@ packages:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
+ filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -1804,10 +1905,27 @@ packages:
flatted@3.3.3:
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ follow-redirects@1.15.9:
+ resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
for-each@0.3.5:
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
engines: {node: '>= 0.4'}
+ foreground-child@3.3.1:
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
+
+ form-data@4.0.2:
+ resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
+ engines: {node: '>= 6'}
+
format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
@@ -1815,8 +1933,8 @@ packages:
fraction.js@4.3.7:
resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
- framer-motion@12.4.7:
- resolution: {integrity: sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw==}
+ framer-motion@12.4.10:
+ resolution: {integrity: sha512-3Msuyjcr1Pb5hjkn4EJcRe1HumaveP0Gbv4DBMKTPKcV/1GSMkQXj+Uqgneys+9DPcZM18Hac9qY9iUEF5LZtg==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -1932,6 +2050,11 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ glob@11.0.1:
+ resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==}
+ engines: {node: 20 || >=22}
+ hasBin: true
+
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
@@ -1963,6 +2086,11 @@ packages:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
+ handlebars@4.7.8:
+ resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+
has-bigints@1.1.0:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
engines: {node: '>= 0.4'}
@@ -1993,8 +2121,8 @@ packages:
hast-util-parse-selector@2.2.5:
resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
- hast-util-to-estree@3.1.2:
- resolution: {integrity: sha512-94SDoKOfop5gP8RHyw4vV1aj+oChuD42g08BONGAaWFbbO6iaWUqxk7SWfGybgcVzhK16KifZr3zD2dqQgx3jQ==}
+ hast-util-to-estree@3.1.3:
+ resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==}
hast-util-to-html@9.0.5:
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
@@ -2203,6 +2331,15 @@ packages:
resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
engines: {node: '>= 0.4'}
+ jackspeak@4.1.0:
+ resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==}
+ engines: {node: 20 || >=22}
+
+ jake@10.9.2:
+ resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
jiti@2.4.2:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
@@ -2344,6 +2481,10 @@ packages:
lowlight@1.20.0:
resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
+ lru-cache@11.0.2:
+ resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
+ engines: {node: 20 || >=22}
+
lucide-react@0.475.0:
resolution: {integrity: sha512-NJzvVu1HwFVeZ+Gwq2q00KygM1aBhy/ZrhY9FsAgJtpB+E4R7uxRk9M2iKvHa6/vNxZydIB59htha4c2vvwvVg==}
peerDependencies:
@@ -2415,8 +2556,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- micromark-core-commonmark@2.0.2:
- resolution: {integrity: sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==}
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
micromark-extension-gfm-autolink-literal@2.1.0:
resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
@@ -2508,25 +2649,41 @@ packages:
micromark-util-sanitize-uri@2.0.1:
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
- micromark-util-subtokenize@2.0.4:
- resolution: {integrity: sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==}
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
micromark-util-symbol@2.0.1:
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
- micromark-util-types@2.0.1:
- resolution: {integrity: sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==}
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
- micromark@4.0.1:
- resolution: {integrity: sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==}
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ minimatch@10.0.1:
+ resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+ engines: {node: 20 || >=22}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -2534,14 +2691,18 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
mongodb-connection-string-url@3.0.2:
resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==}
- mongodb@6.13.1:
- resolution: {integrity: sha512-gdq40tX8StmhP6akMp1pPoEVv+9jTYFSrga/g23JxajPAQhH39ysZrHGzQCSd9PEOnuEQEdjIWqxO7ZSwC0w7Q==}
+ mongodb@6.14.1:
+ resolution: {integrity: sha512-GnHWIm4GtgREkssWRv9vYKNvqwbLd8WL5hCW3nCqzI2OxEZ6Q5g6vc3J6L1Grz0x1hx1wmYAprLlRr3kzBLcJg==}
engines: {node: '>=16.20.1'}
peerDependencies:
- '@aws-sdk/credential-providers': ^3.632.0
+ '@aws-sdk/credential-providers': ^3.188.0
'@mongodb-js/zstd': ^1.1.0 || ^2.0.0
gcp-metadata: ^5.2.0
kerberos: ^2.0.1
@@ -2564,14 +2725,14 @@ packages:
socks:
optional: true
- motion-dom@12.4.5:
- resolution: {integrity: sha512-Q2xmhuyYug1CGTo0jdsL05EQ4RhIYXlggFS/yPhQQRNzbrhjKQ1tbjThx5Plv68aX31LsUQRq4uIkuDxdO5vRQ==}
+ motion-dom@12.4.10:
+ resolution: {integrity: sha512-ISP5u6FTceoD6qKdLupIPU/LyXBrxGox+P2e3mBbm1+pLdlBbwv01YENJr7+1WZnW5ucVKzFScYsV1eXTCG4Xg==}
- motion-utils@12.0.0:
- resolution: {integrity: sha512-MNFiBKbbqnmvOjkPyOKgHUp3Q6oiokLkI1bEwm5QA28cxMZrv0CbbBGDNmhF6DIXsi1pCQBSs0dX8xjeER1tmA==}
+ motion-utils@12.4.10:
+ resolution: {integrity: sha512-NPwZd94V013SwRf++jMrk2+HEBgPkeIE2RiOzhAuuQlqxMJPkKt/LXVh6Upl+iN8oarSGD2dlY5/bqgsYXDABA==}
- motion@12.4.7:
- resolution: {integrity: sha512-mhegHAbf1r80fr+ytC6OkjKvIUegRNXKLWNPrCN2+GnixlNSPwT03FtKqp9oDny1kNcLWZvwbmEr+JqVryFrcg==}
+ motion@12.4.10:
+ resolution: {integrity: sha512-AM21Lyfn7ZHO+nBuHJEA2REFgS3kUM83CLZnzM0ZY1/sVeKGkCtV4LF4O/YsQXyZ9mrUrrnTaUkKquS4eaIYjg==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -2604,6 +2765,9 @@ packages:
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
engines: {node: '>= 0.6'}
+ neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+
next-auth@5.0.0-beta.25:
resolution: {integrity: sha512-2dJJw1sHQl2qxCrRk+KTQbeH+izFbGFPuJj5eGgBZFYyiYYtvlrBeUw1E/OJJxTRjuxbSYGnCTkUIRsIIW0bog==}
peerDependencies:
@@ -2650,6 +2814,17 @@ packages:
node-releases@2.0.19:
resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
+ nodemailer-express-handlebars@7.0.0:
+ resolution: {integrity: sha512-fJ5pj5TaDiXKDShzrOksZDR1iE65W8z40unwM8+wiHT3AhifQsc2/G5uw4DC1LNN4RhqXGkuYuoEkoE+Zk+GHQ==}
+ engines: {node: '>= 20'}
+ peerDependencies:
+ express-handlebars: '>= 8.0.0'
+ nodemailer: '>= 6.0.0'
+
+ nodemailer@6.10.0:
+ resolution: {integrity: sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==}
+ engines: {node: '>=6.0.0'}
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -2712,6 +2887,9 @@ packages:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -2733,6 +2911,10 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ path-scurry@2.0.0:
+ resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+ engines: {node: 20 || >=22}
+
path-type@6.0.0:
resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
engines: {node: '>=18'}
@@ -2826,8 +3008,8 @@ packages:
resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
engines: {node: '>= 0.8'}
- prisma@6.4.1:
- resolution: {integrity: sha512-q2uJkgXnua/jj66mk6P9bX/zgYJFI/jn4Yp0aS6SPRrjH/n6VyOV7RDe1vHD0DX8Aanx4MvgmUPPoYnR6MJnPg==}
+ prisma@6.3.0:
+ resolution: {integrity: sha512-y+Zh3Qg+xGCWyyrNUUNaFW/OltaV/yXYuTa0WRgYkz5LGyifmAsgpv94I47+qGRocZrMGcbF2A/78/oO2zgifA==}
engines: {node: '>=18.18'}
hasBin: true
peerDependencies:
@@ -2853,6 +3035,9 @@ packages:
property-information@7.0.0:
resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -3083,8 +3268,8 @@ packages:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
- shiki@3.0.0:
- resolution: {integrity: sha512-x6MMdYN9auPGx7kMFtyKbaj65eCdetfrfkvQZwqisZLnGMnAZsZxOpcWD0ElvLPFWHOSMukVyN9Opm7TxQjnZA==}
+ shiki@3.1.0:
+ resolution: {integrity: sha512-LdTNyWQlC5zdCaHdcp1zPA1OVA2ivb+KjGOOnGcy02tGaF5ja+dGibWFH7Ar8YlngUgK/scDqworK18Ys9cbYA==}
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -3102,6 +3287,10 @@ packages:
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
@@ -3113,6 +3302,10 @@ packages:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
source-map@0.7.4:
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
engines: {node: '>= 8'}
@@ -3140,6 +3333,10 @@ packages:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
string.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -3170,6 +3367,10 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
strip-bom-string@1.0.0:
resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
engines: {node: '>=0.10.0'}
@@ -3182,6 +3383,9 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ style-to-js@1.1.16:
+ resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
+
style-to-object@1.0.8:
resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
@@ -3249,6 +3453,11 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ tsx@4.19.3:
+ resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -3269,11 +3478,16 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
- typescript@5.7.3:
- resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
+ typescript@5.8.2:
+ resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
engines: {node: '>=14.17'}
hasBin: true
+ uglify-js@3.19.3:
+ resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+
unbox-primitive@1.1.0:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
@@ -3381,10 +3595,17 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ wordwrap@1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
xtend@4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
@@ -3420,7 +3641,7 @@ snapshots:
'@alloc/quick-lru@5.2.0': {}
- '@auth/core@0.37.2':
+ '@auth/core@0.37.2(nodemailer@6.10.0)':
dependencies:
'@panva/hkdf': 1.2.1
'@types/cookie': 0.6.0
@@ -3429,19 +3650,23 @@ snapshots:
oauth4webapi: 3.3.0
preact: 10.11.3
preact-render-to-string: 5.2.3(preact@10.11.3)
+ optionalDependencies:
+ nodemailer: 6.10.0
- '@auth/core@0.37.4':
+ '@auth/core@0.37.4(nodemailer@6.10.0)':
dependencies:
'@panva/hkdf': 1.2.1
jose: 5.10.0
oauth4webapi: 3.3.0
preact: 10.24.3
preact-render-to-string: 6.5.11(preact@10.24.3)
+ optionalDependencies:
+ nodemailer: 6.10.0
- '@auth/prisma-adapter@2.7.4(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3))':
+ '@auth/prisma-adapter@2.7.4(@prisma/client@6.4.1(prisma@6.3.0(typescript@5.8.2))(typescript@5.8.2))(nodemailer@6.10.0)':
dependencies:
- '@auth/core': 0.37.4
- '@prisma/client': 6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3)
+ '@auth/core': 0.37.4(nodemailer@6.10.0)
+ '@prisma/client': 6.4.1(prisma@6.3.0(typescript@5.8.2))(typescript@5.8.2)
transitivePeerDependencies:
- '@simplewebauthn/browser'
- '@simplewebauthn/server'
@@ -3598,7 +3823,7 @@ snapshots:
dependencies:
react: 19.0.0
- '@hookform/resolvers@4.1.2(react-hook-form@7.54.2(react@19.0.0))':
+ '@hookform/resolvers@4.1.3(react-hook-form@7.54.2(react@19.0.0))':
dependencies:
'@standard-schema/utils': 0.3.0
react-hook-form: 7.54.2(react@19.0.0)
@@ -3691,6 +3916,15 @@ snapshots:
'@img/sharp-win32-x64@0.33.5':
optional: true
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
'@mdx-js/mdx@3.1.0(acorn@8.14.0)':
dependencies:
'@types/estree': 1.0.6
@@ -3773,31 +4007,31 @@ snapshots:
'@panva/hkdf@1.2.1': {}
- '@prisma/client@6.4.1(prisma@6.4.1(typescript@5.7.3))(typescript@5.7.3)':
+ '@prisma/client@6.4.1(prisma@6.3.0(typescript@5.8.2))(typescript@5.8.2)':
optionalDependencies:
- prisma: 6.4.1(typescript@5.7.3)
- typescript: 5.7.3
+ prisma: 6.3.0(typescript@5.8.2)
+ typescript: 5.8.2
- '@prisma/debug@6.4.1': {}
+ '@prisma/debug@6.3.0': {}
- '@prisma/engines-version@6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d': {}
+ '@prisma/engines-version@6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0': {}
- '@prisma/engines@6.4.1':
+ '@prisma/engines@6.3.0':
dependencies:
- '@prisma/debug': 6.4.1
- '@prisma/engines-version': 6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d
- '@prisma/fetch-engine': 6.4.1
- '@prisma/get-platform': 6.4.1
+ '@prisma/debug': 6.3.0
+ '@prisma/engines-version': 6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0
+ '@prisma/fetch-engine': 6.3.0
+ '@prisma/get-platform': 6.3.0
- '@prisma/fetch-engine@6.4.1':
+ '@prisma/fetch-engine@6.3.0':
dependencies:
- '@prisma/debug': 6.4.1
- '@prisma/engines-version': 6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d
- '@prisma/get-platform': 6.4.1
+ '@prisma/debug': 6.3.0
+ '@prisma/engines-version': 6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0
+ '@prisma/get-platform': 6.3.0
- '@prisma/get-platform@6.4.1':
+ '@prisma/get-platform@6.3.0':
dependencies:
- '@prisma/debug': 6.4.1
+ '@prisma/debug': 6.3.0
'@radix-ui/number@1.1.0': {}
@@ -4144,47 +4378,65 @@ snapshots:
'@rushstack/eslint-patch@1.10.5': {}
- '@shikijs/core@3.0.0':
+ '@sendgrid/client@8.1.4':
+ dependencies:
+ '@sendgrid/helpers': 8.0.0
+ axios: 1.8.1
+ transitivePeerDependencies:
+ - debug
+
+ '@sendgrid/helpers@8.0.0':
+ dependencies:
+ deepmerge: 4.3.1
+
+ '@sendgrid/mail@8.1.4':
+ dependencies:
+ '@sendgrid/client': 8.1.4
+ '@sendgrid/helpers': 8.0.0
+ transitivePeerDependencies:
+ - debug
+
+ '@shikijs/core@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.0.0':
+ '@shikijs/engine-javascript@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 3.1.1
- '@shikijs/engine-oniguruma@3.0.0':
+ '@shikijs/engine-oniguruma@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.0.0':
+ '@shikijs/langs@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
- '@shikijs/rehype@3.0.0':
+ '@shikijs/rehype@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
'@types/hast': 3.0.4
hast-util-to-string: 3.0.1
- shiki: 3.0.0
+ shiki: 3.1.0
unified: 11.0.5
unist-util-visit: 5.0.0
- '@shikijs/themes@3.0.0':
+ '@shikijs/themes@3.1.0':
dependencies:
- '@shikijs/types': 3.0.0
+ '@shikijs/types': 3.1.0
- '@shikijs/transformers@3.0.0':
+ '@shikijs/transformers@3.1.0':
dependencies:
- '@shikijs/core': 3.0.0
- '@shikijs/types': 3.0.0
+ '@shikijs/core': 3.1.0
+ '@shikijs/types': 3.1.0
- '@shikijs/types@3.0.0':
+ '@shikijs/types@3.1.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -4277,12 +4529,20 @@ snapshots:
dependencies:
'@types/ms': 2.1.0
+ '@types/ejs@3.1.5': {}
+
'@types/estree-jsx@1.0.5':
dependencies:
'@types/estree': 1.0.6
'@types/estree@1.0.6': {}
+ '@types/express-handlebars@5.3.1': {}
+
+ '@types/handlebars@4.1.0':
+ dependencies:
+ handlebars: 4.7.8
+
'@types/hast@2.3.10':
dependencies:
'@types/unist': 2.0.11
@@ -4303,10 +4563,19 @@ snapshots:
'@types/ms@2.1.0': {}
- '@types/node@20.17.19':
+ '@types/node@20.17.23':
dependencies:
undici-types: 6.19.8
+ '@types/nodemailer-express-handlebars@4.0.5':
+ dependencies:
+ '@types/express-handlebars': 5.3.1
+ '@types/nodemailer': 6.4.17
+
+ '@types/nodemailer@6.4.17':
+ dependencies:
+ '@types/node': 20.17.23
+
'@types/react-dom@19.0.4(@types/react@19.0.10)':
dependencies:
'@types/react': 19.0.10
@@ -4325,81 +4594,81 @@ snapshots:
dependencies:
'@types/webidl-conversions': 7.0.3
- '@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)':
+ '@typescript-eslint/eslint-plugin@8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
- '@typescript-eslint/scope-manager': 8.25.0
- '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
- '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
- '@typescript-eslint/visitor-keys': 8.25.0
+ '@typescript-eslint/parser': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/type-utils': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
+ '@typescript-eslint/utils': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
+ '@typescript-eslint/visitor-keys': 8.26.0
eslint: 9.21.0(jiti@2.4.2)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
- ts-api-utils: 2.0.1(typescript@5.7.3)
- typescript: 5.7.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)':
+ '@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/scope-manager': 8.25.0
- '@typescript-eslint/types': 8.25.0
- '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
- '@typescript-eslint/visitor-keys': 8.25.0
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
+ '@typescript-eslint/visitor-keys': 8.26.0
debug: 4.4.0
eslint: 9.21.0(jiti@2.4.2)
- typescript: 5.7.3
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.25.0':
+ '@typescript-eslint/scope-manager@8.26.0':
dependencies:
- '@typescript-eslint/types': 8.25.0
- '@typescript-eslint/visitor-keys': 8.25.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/visitor-keys': 8.26.0
- '@typescript-eslint/type-utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)':
+ '@typescript-eslint/type-utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
- '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
+ '@typescript-eslint/utils': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
debug: 4.4.0
eslint: 9.21.0(jiti@2.4.2)
- ts-api-utils: 2.0.1(typescript@5.7.3)
- typescript: 5.7.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.25.0': {}
+ '@typescript-eslint/types@8.26.0': {}
- '@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)':
+ '@typescript-eslint/typescript-estree@8.26.0(typescript@5.8.2)':
dependencies:
- '@typescript-eslint/types': 8.25.0
- '@typescript-eslint/visitor-keys': 8.25.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/visitor-keys': 8.26.0
debug: 4.4.0
fast-glob: 3.3.3
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.1
- ts-api-utils: 2.0.1(typescript@5.7.3)
- typescript: 5.7.3
+ ts-api-utils: 2.0.1(typescript@5.8.2)
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)':
+ '@typescript-eslint/utils@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
'@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2))
- '@typescript-eslint/scope-manager': 8.25.0
- '@typescript-eslint/types': 8.25.0
- '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3)
+ '@typescript-eslint/scope-manager': 8.26.0
+ '@typescript-eslint/types': 8.26.0
+ '@typescript-eslint/typescript-estree': 8.26.0(typescript@5.8.2)
eslint: 9.21.0(jiti@2.4.2)
- typescript: 5.7.3
+ typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.25.0':
+ '@typescript-eslint/visitor-keys@8.26.0':
dependencies:
- '@typescript-eslint/types': 8.25.0
+ '@typescript-eslint/types': 8.26.0
eslint-visitor-keys: 4.2.0
'@ungap/structured-clone@1.3.0': {}
@@ -4419,10 +4688,14 @@ snapshots:
ansi-regex@5.0.1: {}
+ ansi-regex@6.1.0: {}
+
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
+ ansi-styles@6.2.1: {}
+
anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
@@ -4442,7 +4715,7 @@ snapshots:
array-buffer-byte-length@1.0.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
is-array-buffer: 3.0.5
array-includes@3.1.8:
@@ -4510,10 +4783,14 @@ snapshots:
async-function@1.0.0: {}
+ async@3.2.6: {}
+
+ asynckit@0.4.0: {}
+
autoprefixer@10.4.20(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
- caniuse-lite: 1.0.30001701
+ caniuse-lite: 1.0.30001702
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -4526,6 +4803,14 @@ snapshots:
axe-core@4.10.2: {}
+ axios@1.8.1:
+ dependencies:
+ follow-redirects: 1.15.9
+ form-data: 4.0.2
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
axobject-query@4.1.0: {}
bail@2.0.2: {}
@@ -4551,8 +4836,8 @@ snapshots:
browserslist@4.24.4:
dependencies:
- caniuse-lite: 1.0.30001701
- electron-to-chromium: 1.5.105
+ caniuse-lite: 1.0.30001702
+ electron-to-chromium: 1.5.112
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.4)
@@ -4574,14 +4859,14 @@ snapshots:
get-intrinsic: 1.3.0
set-function-length: 1.2.2
- call-bound@1.0.3:
+ call-bound@1.0.4:
dependencies:
call-bind-apply-helpers: 1.0.2
get-intrinsic: 1.3.0
callsites@3.1.0: {}
- caniuse-lite@1.0.30001701: {}
+ caniuse-lite@1.0.30001702: {}
ccount@2.0.1: {}
@@ -4654,6 +4939,10 @@ snapshots:
color-string: 1.9.1
optional: true
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
comma-separated-tokens@1.0.8: {}
comma-separated-tokens@2.0.3: {}
@@ -4674,25 +4963,23 @@ snapshots:
csstype@3.1.3: {}
- daisyui@5.0.0-beta.8: {}
-
damerau-levenshtein@1.0.8: {}
data-view-buffer@1.0.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
is-data-view: 1.0.2
data-view-byte-length@1.0.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
is-data-view: 1.0.2
data-view-byte-offset@1.0.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
is-data-view: 1.0.2
@@ -4710,6 +4997,8 @@ snapshots:
deep-is@0.1.4: {}
+ deepmerge@4.3.1: {}
+
define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.1
@@ -4722,6 +5011,8 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
+ delayed-stream@1.0.0: {}
+
dependency-graph@0.11.0: {}
dequal@2.0.3: {}
@@ -4747,7 +5038,13 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
- electron-to-chromium@1.5.105: {}
+ eastasianwidth@0.2.0: {}
+
+ ejs@3.1.10:
+ dependencies:
+ jake: 10.9.2
+
+ electron-to-chromium@1.5.112: {}
emoji-regex-xs@1.0.0: {}
@@ -4766,7 +5063,7 @@ snapshots:
arraybuffer.prototype.slice: 1.0.4
available-typed-arrays: 1.0.7
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
data-view-buffer: 1.0.2
data-view-byte-length: 1.0.2
data-view-byte-offset: 1.0.1
@@ -4821,7 +5118,7 @@ snapshots:
es-iterator-helpers@1.2.1:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
es-abstract: 1.23.9
es-errors: 1.3.0
@@ -4872,13 +5169,6 @@ snapshots:
esast-util-from-estree: 2.0.0
vfile-message: 4.0.2
- esbuild-register@3.6.0(esbuild@0.25.0):
- dependencies:
- debug: 4.4.0
- esbuild: 0.25.0
- transitivePeerDependencies:
- - supports-color
-
esbuild@0.25.0:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.0
@@ -4913,21 +5203,21 @@ snapshots:
escape-string-regexp@5.0.0: {}
- eslint-config-next@15.1.6(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3):
+ eslint-config-next@15.1.6(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
'@next/eslint-plugin-next': 15.1.6
'@rushstack/eslint-patch': 1.10.5
- '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
- '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/eslint-plugin': 8.26.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
+ '@typescript-eslint/parser': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
eslint: 9.21.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.21.0(jiti@2.4.2))
eslint-plugin-react: 7.37.4(eslint@9.21.0(jiti@2.4.2))
- eslint-plugin-react-hooks: 5.1.0(eslint@9.21.0(jiti@2.4.2))
+ eslint-plugin-react-hooks: 5.2.0(eslint@9.21.0(jiti@2.4.2))
optionalDependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
transitivePeerDependencies:
- eslint-import-resolver-webpack
- eslint-plugin-import-x
@@ -4952,22 +5242,22 @@ snapshots:
stable-hash: 0.0.4
tinyglobby: 0.2.12
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2)):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
eslint: 9.21.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.8.3(eslint-plugin-import@2.31.0)(eslint@9.21.0(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2)):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -4978,7 +5268,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.21.0(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.3)(eslint@9.21.0(jiti@2.4.2))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -4990,7 +5280,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)
+ '@typescript-eslint/parser': 8.26.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.8.2)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -5015,7 +5305,7 @@ snapshots:
safe-regex-test: 1.1.0
string.prototype.includes: 2.0.1
- eslint-plugin-react-hooks@5.1.0(eslint@9.21.0(jiti@2.4.2)):
+ eslint-plugin-react-hooks@5.2.0(eslint@9.21.0(jiti@2.4.2)):
dependencies:
eslint: 9.21.0(jiti@2.4.2)
@@ -5148,6 +5438,12 @@ snapshots:
esutils@2.0.3: {}
+ express-handlebars@8.0.1:
+ dependencies:
+ glob: 11.0.1
+ graceful-fs: 4.2.11
+ handlebars: 4.7.8
+
extend-shallow@2.0.1:
dependencies:
is-extendable: 0.1.1
@@ -5192,6 +5488,10 @@ snapshots:
dependencies:
flat-cache: 4.0.1
+ filelist@1.0.4:
+ dependencies:
+ minimatch: 5.1.6
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -5208,18 +5508,32 @@ snapshots:
flatted@3.3.3: {}
+ follow-redirects@1.15.9: {}
+
for-each@0.3.5:
dependencies:
is-callable: 1.2.7
+ foreground-child@3.3.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ form-data@4.0.2:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ mime-types: 2.1.35
+
format@0.2.2: {}
fraction.js@4.3.7: {}
- framer-motion@12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ framer-motion@12.4.10(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
- motion-dom: 12.4.5
- motion-utils: 12.0.0
+ motion-dom: 12.4.10
+ motion-utils: 12.4.10
tslib: 2.8.1
optionalDependencies:
react: 19.0.0
@@ -5238,10 +5552,10 @@ snapshots:
dependencies:
'@formatjs/intl-localematcher': 0.6.0
'@orama/orama': 2.1.1
- '@shikijs/rehype': 3.0.0
- '@shikijs/transformers': 3.0.0
+ '@shikijs/rehype': 3.1.0
+ '@shikijs/transformers': 3.1.0
github-slugger: 2.0.0
- hast-util-to-estree: 3.1.2
+ hast-util-to-estree: 3.1.3
hast-util-to-jsx-runtime: 2.3.5
image-size: 1.2.0
negotiator: 1.0.0
@@ -5249,7 +5563,7 @@ snapshots:
remark: 15.0.1
remark-gfm: 4.0.1
scroll-into-view-if-needed: 3.1.0
- shiki: 3.0.0
+ shiki: 3.1.0
unist-util-visit: 5.0.0
optionalDependencies:
next: 15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -5310,7 +5624,7 @@ snapshots:
function.prototype.name@1.1.8:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
functions-have-names: 1.2.3
hasown: 2.0.2
@@ -5344,7 +5658,7 @@ snapshots:
get-symbol-description@1.1.0:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
get-intrinsic: 1.3.0
@@ -5362,6 +5676,15 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob@11.0.1:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 4.1.0
+ minimatch: 10.0.1
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 2.0.0
+
globals@14.0.0: {}
globalthis@1.0.4:
@@ -5395,6 +5718,15 @@ snapshots:
section-matter: 1.0.0
strip-bom-string: 1.0.0
+ handlebars@4.7.8:
+ dependencies:
+ minimist: 1.2.8
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: 3.19.3
+
has-bigints@1.1.0: {}
has-flag@4.0.0: {}
@@ -5419,7 +5751,7 @@ snapshots:
hast-util-parse-selector@2.2.5: {}
- hast-util-to-estree@3.1.2:
+ hast-util-to-estree@3.1.3:
dependencies:
'@types/estree': 1.0.6
'@types/estree-jsx': 1.0.5
@@ -5434,7 +5766,7 @@ snapshots:
mdast-util-mdxjs-esm: 2.0.1
property-information: 7.0.0
space-separated-tokens: 2.0.2
- style-to-object: 1.0.8
+ style-to-js: 1.1.16
unist-util-position: 5.0.0
zwitch: 2.0.4
transitivePeerDependencies:
@@ -5538,7 +5870,7 @@ snapshots:
is-array-buffer@3.0.5:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-intrinsic: 1.3.0
is-arrayish@0.3.2:
@@ -5547,7 +5879,7 @@ snapshots:
is-async-function@2.1.1:
dependencies:
async-function: 1.0.0
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-proto: 1.0.1
has-tostringtag: 1.0.2
safe-regex-test: 1.1.0
@@ -5562,7 +5894,7 @@ snapshots:
is-boolean-object@1.2.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-bun-module@1.3.0:
@@ -5577,13 +5909,13 @@ snapshots:
is-data-view@1.0.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-intrinsic: 1.3.0
is-typed-array: 1.1.15
is-date-object@1.1.0:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-decimal@1.0.4: {}
@@ -5596,13 +5928,13 @@ snapshots:
is-finalizationregistry@1.1.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
is-fullwidth-code-point@3.0.0: {}
is-generator-function@1.1.0:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-proto: 1.0.1
has-tostringtag: 1.0.2
safe-regex-test: 1.1.0
@@ -5619,7 +5951,7 @@ snapshots:
is-number-object@1.1.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-number@7.0.0: {}
@@ -5628,7 +5960,7 @@ snapshots:
is-regex@1.2.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
gopd: 1.2.0
has-tostringtag: 1.0.2
hasown: 2.0.2
@@ -5637,16 +5969,16 @@ snapshots:
is-shared-array-buffer@1.0.4:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
is-string@1.1.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-tostringtag: 1.0.2
is-symbol@1.1.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-symbols: 1.1.0
safe-regex-test: 1.1.0
@@ -5658,11 +5990,11 @@ snapshots:
is-weakref@1.1.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
is-weakset@2.0.4:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-intrinsic: 1.3.0
isarray@2.0.5: {}
@@ -5678,6 +6010,17 @@ snapshots:
has-symbols: 1.1.0
set-function-name: 2.0.2
+ jackspeak@4.1.0:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+
+ jake@10.9.2:
+ dependencies:
+ async: 3.2.6
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+
jiti@2.4.2: {}
jose@5.10.0: {}
@@ -5797,6 +6140,8 @@ snapshots:
fault: 1.0.4
highlight.js: 10.7.3
+ lru-cache@11.0.2: {}
+
lucide-react@0.475.0(react@19.0.0):
dependencies:
react: 19.0.0
@@ -5821,12 +6166,12 @@ snapshots:
decode-named-character-reference: 1.0.2
devlop: 1.1.0
mdast-util-to-string: 4.0.0
- micromark: 4.0.1
+ micromark: 4.0.2
micromark-util-decode-numeric-character-reference: 2.0.2
micromark-util-decode-string: 2.0.1
micromark-util-normalize-identifier: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
unist-util-stringify-position: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -5974,7 +6319,7 @@ snapshots:
merge2@1.4.1: {}
- micromark-core-commonmark@2.0.2:
+ micromark-core-commonmark@2.0.3:
dependencies:
decode-named-character-reference: 1.0.2
devlop: 1.1.0
@@ -5989,27 +6334,27 @@ snapshots:
micromark-util-html-tag-name: 2.0.1
micromark-util-normalize-identifier: 2.0.1
micromark-util-resolve-all: 2.0.1
- micromark-util-subtokenize: 2.0.4
+ micromark-util-subtokenize: 2.1.0
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-autolink-literal@2.1.0:
dependencies:
micromark-util-character: 2.1.1
micromark-util-sanitize-uri: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-footnote@2.1.0:
dependencies:
devlop: 1.1.0
- micromark-core-commonmark: 2.0.2
+ micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-normalize-identifier: 2.0.1
micromark-util-sanitize-uri: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-strikethrough@2.1.0:
dependencies:
@@ -6018,7 +6363,7 @@ snapshots:
micromark-util-classify-character: 2.0.1
micromark-util-resolve-all: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-table@2.1.1:
dependencies:
@@ -6026,11 +6371,11 @@ snapshots:
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-tagfilter@2.0.0:
dependencies:
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm-task-list-item@2.1.0:
dependencies:
@@ -6038,7 +6383,7 @@ snapshots:
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-gfm@3.0.0:
dependencies:
@@ -6049,7 +6394,7 @@ snapshots:
micromark-extension-gfm-tagfilter: 2.0.0
micromark-extension-gfm-task-list-item: 2.1.0
micromark-util-combine-extensions: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-mdx-expression@3.0.0:
dependencies:
@@ -6060,7 +6405,7 @@ snapshots:
micromark-util-character: 2.1.1
micromark-util-events-to-acorn: 2.0.2
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-mdx-jsx@3.0.1:
dependencies:
@@ -6073,22 +6418,22 @@ snapshots:
micromark-util-character: 2.1.1
micromark-util-events-to-acorn: 2.0.2
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
vfile-message: 4.0.2
micromark-extension-mdx-md@2.0.0:
dependencies:
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-extension-mdxjs-esm@3.0.0:
dependencies:
'@types/estree': 1.0.6
devlop: 1.1.0
- micromark-core-commonmark: 2.0.2
+ micromark-core-commonmark: 2.0.3
micromark-util-character: 2.1.1
micromark-util-events-to-acorn: 2.0.2
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
unist-util-position-from-estree: 2.0.0
vfile-message: 4.0.2
@@ -6101,20 +6446,20 @@ snapshots:
micromark-extension-mdx-md: 2.0.0
micromark-extension-mdxjs-esm: 3.0.0
micromark-util-combine-extensions: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-factory-destination@2.0.1:
dependencies:
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-factory-label@2.0.1:
dependencies:
devlop: 1.1.0
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-factory-mdx-expression@2.0.2:
dependencies:
@@ -6124,33 +6469,33 @@ snapshots:
micromark-util-character: 2.1.1
micromark-util-events-to-acorn: 2.0.2
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
unist-util-position-from-estree: 2.0.0
vfile-message: 4.0.2
micromark-factory-space@2.0.1:
dependencies:
micromark-util-character: 2.1.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-factory-title@2.0.1:
dependencies:
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-factory-whitespace@2.0.1:
dependencies:
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-character@2.1.1:
dependencies:
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-chunked@2.0.1:
dependencies:
@@ -6160,12 +6505,12 @@ snapshots:
dependencies:
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-combine-extensions@2.0.1:
dependencies:
micromark-util-chunked: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-decode-numeric-character-reference@2.0.2:
dependencies:
@@ -6188,7 +6533,7 @@ snapshots:
devlop: 1.1.0
estree-util-visit: 2.0.0
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
vfile-message: 4.0.2
micromark-util-html-tag-name@2.0.1: {}
@@ -6199,7 +6544,7 @@ snapshots:
micromark-util-resolve-all@2.0.1:
dependencies:
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-sanitize-uri@2.0.1:
dependencies:
@@ -6207,24 +6552,24 @@ snapshots:
micromark-util-encode: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-subtokenize@2.0.4:
+ micromark-util-subtokenize@2.1.0:
dependencies:
devlop: 1.1.0
micromark-util-chunked: 2.0.1
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
micromark-util-symbol@2.0.1: {}
- micromark-util-types@2.0.1: {}
+ micromark-util-types@2.0.2: {}
- micromark@4.0.1:
+ micromark@4.0.2:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.0
decode-named-character-reference: 1.0.2
devlop: 1.1.0
- micromark-core-commonmark: 2.0.2
+ micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-chunked: 2.0.1
@@ -6234,9 +6579,9 @@ snapshots:
micromark-util-normalize-identifier: 2.0.1
micromark-util-resolve-all: 2.0.1
micromark-util-sanitize-uri: 2.0.1
- micromark-util-subtokenize: 2.0.4
+ micromark-util-subtokenize: 2.1.0
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
transitivePeerDependencies:
- supports-color
@@ -6245,36 +6590,52 @@ snapshots:
braces: 3.0.3
picomatch: 2.3.1
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ minimatch@10.0.1:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.1
+
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
minimist@1.2.8: {}
+ minipass@7.1.2: {}
+
mongodb-connection-string-url@3.0.2:
dependencies:
'@types/whatwg-url': 11.0.5
whatwg-url: 14.1.1
- mongodb@6.13.1:
+ mongodb@6.14.1:
dependencies:
'@mongodb-js/saslprep': 1.2.0
bson: 6.10.3
mongodb-connection-string-url: 3.0.2
- motion-dom@12.4.5:
+ motion-dom@12.4.10:
dependencies:
- motion-utils: 12.0.0
+ motion-utils: 12.4.10
- motion-utils@12.0.0: {}
+ motion-utils@12.4.10: {}
- motion@12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ motion@12.4.10(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
- framer-motion: 12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ framer-motion: 12.4.10(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
tslib: 2.8.1
optionalDependencies:
react: 19.0.0
@@ -6290,11 +6651,15 @@ snapshots:
negotiator@1.0.0: {}
- next-auth@5.0.0-beta.25(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0):
+ neo-async@2.6.2: {}
+
+ next-auth@5.0.0-beta.25(next@15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(nodemailer@6.10.0)(react@19.0.0):
dependencies:
- '@auth/core': 0.37.2
+ '@auth/core': 0.37.2(nodemailer@6.10.0)
next: 15.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react: 19.0.0
+ optionalDependencies:
+ nodemailer: 6.10.0
next-themes@0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
@@ -6307,7 +6672,7 @@ snapshots:
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
- caniuse-lite: 1.0.30001701
+ caniuse-lite: 1.0.30001702
postcss: 8.4.31
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
@@ -6328,6 +6693,13 @@ snapshots:
node-releases@2.0.19: {}
+ nodemailer-express-handlebars@7.0.0(express-handlebars@8.0.1)(nodemailer@6.10.0):
+ dependencies:
+ express-handlebars: 8.0.1
+ nodemailer: 6.10.0
+
+ nodemailer@6.10.0: {}
+
normalize-path@3.0.0: {}
normalize-range@0.1.2: {}
@@ -6343,7 +6715,7 @@ snapshots:
object.assign@4.1.7:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
es-object-atoms: 1.1.1
has-symbols: 1.1.0
@@ -6371,7 +6743,7 @@ snapshots:
object.values@1.2.1:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
es-object-atoms: 1.1.1
@@ -6404,6 +6776,8 @@ snapshots:
dependencies:
p-limit: 3.1.0
+ package-json-from-dist@1.0.1: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -6433,6 +6807,11 @@ snapshots:
path-parse@1.0.7: {}
+ path-scurry@2.0.0:
+ dependencies:
+ lru-cache: 11.0.2
+ minipass: 7.1.2
+
path-type@6.0.0: {}
picocolors@1.1.1: {}
@@ -6445,7 +6824,7 @@ snapshots:
possible-typed-array-names@1.1.0: {}
- postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.3):
+ postcss-cli@11.0.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3):
dependencies:
chokidar: 3.6.0
dependency-graph: 0.11.0
@@ -6454,7 +6833,7 @@ snapshots:
globby: 14.1.0
picocolors: 1.1.1
postcss: 8.5.3
- postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.3)
+ postcss-load-config: 5.1.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)
postcss-reporter: 7.1.0(postcss@8.5.3)
pretty-hrtime: 1.0.3
read-cache: 1.0.0
@@ -6464,13 +6843,14 @@ snapshots:
- jiti
- tsx
- postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.3):
+ postcss-load-config@5.1.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3):
dependencies:
lilconfig: 3.1.3
yaml: 2.7.0
optionalDependencies:
jiti: 2.4.2
postcss: 8.5.3
+ tsx: 4.19.3
postcss-reporter@7.1.0(postcss@8.5.3):
dependencies:
@@ -6516,16 +6896,12 @@ snapshots:
pretty-hrtime@1.0.3: {}
- prisma@6.4.1(typescript@5.7.3):
+ prisma@6.3.0(typescript@5.8.2):
dependencies:
- '@prisma/engines': 6.4.1
- esbuild: 0.25.0
- esbuild-register: 3.6.0(esbuild@0.25.0)
+ '@prisma/engines': 6.3.0
optionalDependencies:
fsevents: 2.3.3
- typescript: 5.7.3
- transitivePeerDependencies:
- - supports-color
+ typescript: 5.8.2
prismjs@1.27.0: {}
@@ -6543,6 +6919,8 @@ snapshots:
property-information@7.0.0: {}
+ proxy-from-env@1.1.0: {}
+
punycode@2.3.1: {}
queue-microtask@1.2.3: {}
@@ -6699,7 +7077,7 @@ snapshots:
dependencies:
'@types/estree': 1.0.6
'@types/hast': 3.0.4
- hast-util-to-estree: 3.1.2
+ hast-util-to-estree: 3.1.3
transitivePeerDependencies:
- supports-color
@@ -6725,7 +7103,7 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
mdast-util-from-markdown: 2.0.2
- micromark-util-types: 2.0.1
+ micromark-util-types: 2.0.2
unified: 11.0.5
transitivePeerDependencies:
- supports-color
@@ -6780,7 +7158,7 @@ snapshots:
safe-array-concat@1.1.3:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
get-intrinsic: 1.3.0
has-symbols: 1.1.0
isarray: 2.0.5
@@ -6792,7 +7170,7 @@ snapshots:
safe-regex-test@1.1.0:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
is-regex: 1.2.1
@@ -6866,14 +7244,14 @@ snapshots:
shebang-regex@3.0.0: {}
- shiki@3.0.0:
+ shiki@3.1.0:
dependencies:
- '@shikijs/core': 3.0.0
- '@shikijs/engine-javascript': 3.0.0
- '@shikijs/engine-oniguruma': 3.0.0
- '@shikijs/langs': 3.0.0
- '@shikijs/themes': 3.0.0
- '@shikijs/types': 3.0.0
+ '@shikijs/core': 3.1.0
+ '@shikijs/engine-javascript': 3.1.0
+ '@shikijs/engine-oniguruma': 3.1.0
+ '@shikijs/langs': 3.1.0
+ '@shikijs/themes': 3.1.0
+ '@shikijs/types': 3.1.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -6884,14 +7262,14 @@ snapshots:
side-channel-map@1.0.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
get-intrinsic: 1.3.0
object-inspect: 1.13.4
side-channel-weakmap@1.0.2:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
get-intrinsic: 1.3.0
object-inspect: 1.13.4
@@ -6905,6 +7283,8 @@ snapshots:
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
+ signal-exit@4.1.0: {}
+
simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
@@ -6914,6 +7294,8 @@ snapshots:
source-map-js@1.2.1: {}
+ source-map@0.6.1: {}
+
source-map@0.7.4: {}
space-separated-tokens@1.1.5: {}
@@ -6936,6 +7318,12 @@ snapshots:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -6945,7 +7333,7 @@ snapshots:
string.prototype.matchall@4.0.12:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
es-abstract: 1.23.9
es-errors: 1.3.0
@@ -6966,7 +7354,7 @@ snapshots:
string.prototype.trim@1.2.10:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-data-property: 1.1.4
define-properties: 1.2.1
es-abstract: 1.23.9
@@ -6976,7 +7364,7 @@ snapshots:
string.prototype.trimend@1.0.9:
dependencies:
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
define-properties: 1.2.1
es-object-atoms: 1.1.1
@@ -6995,12 +7383,20 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.1.0
+
strip-bom-string@1.0.0: {}
strip-bom@3.0.0: {}
strip-json-comments@3.1.1: {}
+ style-to-js@1.1.16:
+ dependencies:
+ style-to-object: 1.0.8
+
style-to-object@1.0.8:
dependencies:
inline-style-parser: 0.2.4
@@ -7041,9 +7437,9 @@ snapshots:
trough@2.2.0: {}
- ts-api-utils@2.0.1(typescript@5.7.3):
+ ts-api-utils@2.0.1(typescript@5.8.2):
dependencies:
- typescript: 5.7.3
+ typescript: 5.8.2
tsconfig-paths@3.15.0:
dependencies:
@@ -7054,13 +7450,20 @@ snapshots:
tslib@2.8.1: {}
+ tsx@4.19.3:
+ dependencies:
+ esbuild: 0.25.0
+ get-tsconfig: 4.10.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
typed-array-buffer@1.0.3:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
es-errors: 1.3.0
is-typed-array: 1.1.15
@@ -7091,11 +7494,14 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- typescript@5.7.3: {}
+ typescript@5.8.2: {}
+
+ uglify-js@3.19.3:
+ optional: true
unbox-primitive@1.1.0:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
has-bigints: 1.1.0
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
@@ -7197,7 +7603,7 @@ snapshots:
which-builtin-type@1.2.1:
dependencies:
- call-bound: 1.0.3
+ call-bound: 1.0.4
function.prototype.name: 1.1.8
has-tostringtag: 1.0.2
is-async-function: 2.1.1
@@ -7222,7 +7628,7 @@ snapshots:
dependencies:
available-typed-arrays: 1.0.7
call-bind: 1.0.8
- call-bound: 1.0.3
+ call-bound: 1.0.4
for-each: 0.3.5
gopd: 1.2.0
has-tostringtag: 1.0.2
@@ -7233,12 +7639,20 @@ snapshots:
word-wrap@1.2.5: {}
+ wordwrap@1.0.0: {}
+
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
xtend@4.0.2: {}
y18n@5.0.8: {}
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 5faf31a..c327ba1 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -1,5 +1,5 @@
generator client {
- provider = "prisma-client-js"
+ provider = "prisma-client-js"
}
datasource db {
diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx
index 866c113..b2d228b 100644
--- a/src/app/(auth)/login/page.tsx
+++ b/src/app/(auth)/login/page.tsx
@@ -8,9 +8,11 @@ import { useState } from "react";
import { signInAction } from "@/lib/actions";
import { Toaster, toast } from "react-hot-toast";
import { useRouter, useSearchParams } from "next/navigation";
+import { useSession } from "next-auth/react";
import { DEFAULT_LOGIN_REDIRECT } from "@/lib/routes";
export default function LoginPage() {
+ const session = useSession();
const [isSubmitting, setIsSubmitting] = useState(false);
const router = useRouter();
const searchParams = useSearchParams();
@@ -18,28 +20,20 @@ export default function LoginPage() {
const handleSubmit = async (data: SignInValues) => {
setIsSubmitting(true);
- try {
- const result = await signInAction(data);
-
- if (result?.error) {
- toast.error(result.error, {
- position: "top-right",
- duration: 3000,
- });
- } else {
- toast.success("Login successful!", {
- position: "top-right",
- duration: 3000,
- });
- }
- } catch (error) {
- toast.error("An unexpected error occurred", {
+ const result = await signInAction(data);
+ if (result.success) {
+ await session.update();
+ toast.success("Login successful!", {
position: "top-right",
duration: 3000,
});
- } finally {
- setIsSubmitting(false);
+ } else {
+ toast.error("Login failed. Please check your credentials.");
}
+
+ setTimeout(() => {
+ router.push(callbackUrl || DEFAULT_LOGIN_REDIRECT);
+ }, 1000);
};
return (
@@ -69,7 +63,7 @@ export default function LoginPage() {
+ We're here to help with any questions about our platform. + Reach out to us and we'll respond as soon as we can. +
+Your message has been sent successfully! We'll get back to you shortly.
+{errorMessage || "There was an error sending your message. Please try again."}
++ Our team is available Monday through Friday from 9am to 5pm to assist you with any inquiries. +
+support@qaflow.com
+info@qaflow.com
++1 (555) 123-4567
+Mon-Fri 9am-5pm
+123 Testing Street
+San Francisco, CA 94103
++ Monday - Friday: + 9:00 AM - 5:00 PM +
++ Saturday: + Closed +
++ Sunday: + Closed +
++ Learn how and why we use cookies and similar technologies on our platform. +
+Last Updated: {lastUpdated}
++ Cookies are small pieces of text sent to your browser when you visit our website. They serve a variety of functions, like enabling us to remember certain information about your session and preferences, enhancing your browsing experience, and helping us to improve our service. +
+ +We use the following types of cookies on our website:
+ ++ These cookies are necessary for the website to function properly. They enable core functionality such as security, network management, and account authentication. You may disable these by changing your browser settings, but this may affect how the website functions. +
+ ++ These cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site. +
+ ++ These cookies enable the website to provide enhanced functionality and personalization. They may be set by us or by third-party providers whose services we have added to our pages. +
+ ++ These cookies are used to deliver advertisements more relevant to you and your interests. They are also used to limit the number of times you see an advertisement as well as help measure the effectiveness of the advertising campaign. +
+ ++ Most web browsers allow some control of most cookies through the browser settings. To find out more about cookies, including how to see what cookies have been set, visit www.allaboutcookies.org. +
+You can manage your cookie preferences in various ways, depending on your browser:
++ Please note that restricting cookies may impact your experience on our website, as some features may not function properly. +
+ ++ In addition to our own cookies, we may also use various third-party cookies to report usage statistics, deliver advertisements, and so on. These cookies may be placed when you visit our website or when you open emails from us, and are sometimes used to track when you have opened or clicked on a link in an email. +
++ Third-party providers we use may include Google Analytics, HubSpot, Intercom, and social media platforms for sharing and engagement. +
+ +| Name | +Provider | +Purpose | +Expiry | +
|---|---|---|---|
| session_id | +qaflow.com | +Authentication and session management | +Session | +
| _ga | +Google Analytics | +Usage statistics | +2 years | +
| _gid | +Google Analytics | +Usage statistics | +24 hours | +
| preference | +qaflow.com | +User preferences | +1 year | +
+ We may update our Cookie Policy from time to time. We will notify you of any changes by posting the new Cookie Policy on this page and updating the "Last Updated" date at the top of this policy. +
++ We encourage you to review this Cookie Policy periodically to stay informed about our use of cookies. +
+ ++ If you have any questions about our Cookie Policy, please contact us at: +
+Email: support@qaflow.com
+{answer}
++ Find answers to common questions about QA Flow. If you don't see what you're looking for, + feel free to contact our support team. +
++ Try adjusting your search or browse through our categories. +
++ If you couldn't find the answer you were looking for, our support team is here to help. +
+ + Contact Support + ++ We respect your privacy and are committed to protecting your personal data. + This privacy policy explains how we collect, use, and safeguard your information. +
+Last Updated: {lastUpdated}
++ At QA Flow, we take your privacy seriously. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you use our platform. Please read this privacy policy carefully. If you do not agree with the terms of this privacy policy, please do not access the site. +
+ +We collect information that you provide directly to us when you:
+This information may include:
+We use the information we collect to:
++ We use cookies and similar tracking technologies to track activity on our platform and hold certain information. Cookies are files with a small amount of data that may include an anonymous unique identifier. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. +
+ +We may share your information in the following situations:
++ We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, please note that no electronic transmission or storage of information can be guaranteed to be 100% secure. +
+ +Depending on your location, you may have the following rights:
++ Our services are not intended for individuals under the age of 18. We do not knowingly collect personal data from children under 18. If we become aware that we have collected personal data from a child under 18, we will take steps to delete such information. +
+ ++ We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the "Last Updated" date at the top of this policy. +
+ ++ If you have any questions about this Privacy Policy, please contact us at: +
+Email: support@qaflow.com
++ Our team is here to help you understand how we protect your data. +
+ + Contact Us + ++ Please read these terms and conditions carefully before using our service. +
+Last Updated: {lastUpdated}
++ By accessing or using QA Flow's platform, you agree to be bound by these Terms of Service and all applicable laws and regulations. If you do not agree with any of these terms, you are prohibited from using or accessing this site. +
+ ++ Permission is granted to temporarily use QA Flow's platform for personal, educational, or commercial purposes, subject to the following restrictions: +
++ When you create an account with us, you must provide accurate, complete, and up-to-date information. You are responsible for safeguarding the password that you use to access the service and for any activities or actions under your password. +
++ You agree not to disclose your password to any third party. You must notify us immediately upon becoming aware of any breach of security or unauthorized use of your account. +
+ ++ Some parts of the service are billed on a subscription basis. You will be billed in advance on a recurring basis, depending on the type of subscription plan you select. +
++ At the end of each billing period, your subscription will automatically renew under the same conditions unless you cancel it or QA Flow cancels it. You may cancel your subscription either through your online account management or by contacting our customer support team. +
+ ++ Our service allows you to post, link, store, share and otherwise make available certain information, text, graphics, videos, or other material. You are responsible for the content that you post to the service, including its legality, reliability, and appropriateness. +
++ By posting content to the service, you grant us the right to use, modify, publicly perform, publicly display, reproduce, and distribute such content on and through the service. You retain any and all of your rights to any content you submit, post or display on or through the service and you are responsible for protecting those rights. +
+ +You agree not to use the Service:
++ The Service and its original content (excluding content provided by users), features, and functionality are and will remain the exclusive property of QA Flow and its licensors. The Service is protected by copyright, trademark, and other laws of both the United States and foreign countries. +
++ Our trademarks and trade dress may not be used in connection with any product or service without the prior written consent of QA Flow. +
+ ++ We may terminate or suspend your account immediately, without prior notice or liability, for any reason whatsoever, including without limitation if you breach the Terms. +
++ Upon termination, your right to use the Service will immediately cease. If you wish to terminate your account, you may simply discontinue using the Service or contact us to delete your account. +
+ ++ In no event shall QA Flow, nor its directors, employees, partners, agents, suppliers, or affiliates, be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your access to or use of or inability to access or use the Service. +
+ ++ We reserve the right, at our sole discretion, to modify or replace these Terms at any time. If a revision is material we will try to provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at our sole discretion. +
+ ++ If you have any questions about these Terms, please contact us at: +
+Email: legal@qaflow.com
+Mail: QA Flow, 123 Testing Street, rancisco, CA 94103
++ If you have any questions about our terms of service, please don't hesitate to reach out. +
+ + Contact Us + +{title}
View your recent test reports in the Test Reports section.
-- Here's an overview of your QA testing metrics and activities. + Here's an overview of your QA testing metrics and activities.
Loading chart data...
-Advanced analytics coming soon to QA Flow
- Stay tuned for visualizations and insights
- Failure trend detection
- Performance benchmarking
- Release planned for next update
- - Start running tests to see analytics and trends over time. -
-The test report you're looking for doesn't exist or you don't have permission to view it.
+The test report you're looking for doesn't exist or you don't have permission to view it.