Ready for 1.1.2-rc.1

This commit is contained in:
charlesgauthereau
2025-09-23 20:35:48 +02:00
parent 461e3ff7c9
commit 385836d5fe
28 changed files with 75 additions and 81 deletions
Binary file not shown.
@@ -19,7 +19,6 @@ export default async function RoutePage(props: PageParams<{ databaseId: string }
notFound(); notFound();
} }
return ( return (
<Page> <Page>
<PageHeader> <PageHeader>
+1
View File
@@ -1,5 +1,6 @@
/// <reference types="next" /> /// <reference types="next" />
/// <reference types="next/image-types/global" /> /// <reference types="next/image-types/global" />
/// <reference path="./.next/types/routes.d.ts" />
// NOTE: This file should not be edited // NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
-3
View File
@@ -44,9 +44,6 @@ const nextConfig: NextConfig = {
eslint: { eslint: {
ignoreDuringBuilds: true, ignoreDuringBuilds: true,
}, },
experimental: {
nodeMiddleware: true,
},
async headers() { async headers() {
return [ return [
{ {
+1 -1
View File
@@ -65,7 +65,7 @@
"input-otp": "^1.4.2", "input-otp": "^1.4.2",
"lucide-react": "^0.510.0", "lucide-react": "^0.510.0",
"minio": "^8.0.5", "minio": "^8.0.5",
"next": "15.4.2-canary.10", "next": "15.5.2",
"next-safe-action": "^7.10.8", "next-safe-action": "^7.10.8",
"next-themes": "^0.4.6", "next-themes": "^0.4.6",
"node-cron": "^4.2.1", "node-cron": "^4.2.1",
@@ -1,10 +1,10 @@
"use server"; "use server";
import { userAction } from "@/safe-actions";
import { z } from "zod"; import { z } from "zod";
import { EmailFormSchema } from "@/components/wrappers/dashboard/admin/admin-email-tab/email-form/email-form.schema"; import { EmailFormSchema } from "@/components/wrappers/dashboard/admin/admin-email-tab/email-form/email-form.schema";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { db } from "@/db"; import { db } from "@/db";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
export const updateEmailSettingsAction = userAction export const updateEmailSettingsAction = userAction
.schema( .schema(
@@ -1,11 +1,11 @@
"use server"; "use server";
import { userAction } from "@/safe-actions";
import { z } from "zod"; import { z } from "zod";
import { db } from "@/db"; import { db } from "@/db";
import { S3FormSchema, StorageSwitchSchema } from "@/components/wrappers/dashboard/admin/admin-storage-tab/storage-s3/s3-form.schema"; import { S3FormSchema, StorageSwitchSchema } from "@/components/wrappers/dashboard/admin/admin-storage-tab/storage-s3/s3-form.schema";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
export const updateS3SettingsAction = userAction export const updateS3SettingsAction = userAction
.schema( .schema(
@@ -1,5 +1,5 @@
"use server"; "use server";
import {ActionError, userAction} from "@/safe-actions"; import {ActionError, userAction} from "@/lib/safe-actions/actions";
import {AgentSchema} from "@/components/wrappers/dashboard/agent/agent-form/agent-form.schema"; import {AgentSchema} from "@/components/wrappers/dashboard/agent/agent-form/agent-form.schema";
import {z} from "zod"; import {z} from "zod";
import {eq, and, ne, count} from "drizzle-orm"; import {eq, and, ne, count} from "drizzle-orm";
@@ -1,6 +1,5 @@
"use server"; "use server";
import {userAction} from "@/safe-actions";
import {z} from "zod"; import {z} from "zod";
import {v4 as uuidv4} from "uuid"; import {v4 as uuidv4} from "uuid";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
@@ -8,6 +7,7 @@ import {eq} from "drizzle-orm";
import {db} from "@/db"; import {db} from "@/db";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {Agent} from "@/db/schema/08_agent"; import {Agent} from "@/db/schema/08_agent";
import {userAction} from "@/lib/safe-actions/actions";
export const deleteAgentAction = userAction.schema(z.string()).action(async ({parsedInput}): Promise<ServerActionResult<Agent>> => { export const deleteAgentAction = userAction.schema(z.string()).action(async ({parsedInput}): Promise<ServerActionResult<Agent>> => {
try { try {
@@ -1,12 +1,12 @@
"use server"; "use server";
import {z} from "zod"; import {z} from "zod";
import {userAction} from "@/safe-actions";
import {db} from "@/db"; import {db} from "@/db";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {Backup} from "@/db/schema/07_database"; import {Backup} from "@/db/schema/07_database";
import {withUpdatedAt} from "@/db/utils"; import {withUpdatedAt} from "@/db/utils";
import {userAction} from "@/lib/safe-actions/actions";
export const backupButtonAction = userAction.schema(z.string()).action(async ({parsedInput}): Promise<ServerActionResult<Backup>> => { export const backupButtonAction = userAction.schema(z.string()).action(async ({parsedInput}): Promise<ServerActionResult<Backup>> => {
try { try {
@@ -1,10 +1,10 @@
"use server"; "use server";
import {userAction} from "@/safe-actions";
import {z} from "zod"; import {z} from "zod";
import {db} from "@/db"; import {db} from "@/db";
import {eq} from "drizzle-orm"; import {eq} from "drizzle-orm";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
export const updateDatabaseBackupPolicyAction = userAction export const updateDatabaseBackupPolicyAction = userAction
.schema( .schema(
@@ -1,11 +1,12 @@
"use server"; "use server";
import { z } from "zod"; import { z } from "zod";
import { userAction } from "@/safe-actions";
import { db } from "@/db"; import { db } from "@/db";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { DatabaseSchema } from "@/components/wrappers/dashboard/database/database-form/form-database.schema"; import { DatabaseSchema } from "@/components/wrappers/dashboard/database/database-form/form-database.schema";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
import {Database} from "@/db/schema/07_database";
export const updateDatabaseAction = userAction export const updateDatabaseAction = userAction
.schema( .schema(
@@ -1,6 +1,5 @@
"use server" "use server"
import {userAction} from "@/safe-actions"
import {z} from "zod" import {z} from "zod"
import {db} from "@/db" import {db} from "@/db"
import {eq} from "drizzle-orm" import {eq} from "drizzle-orm"
@@ -8,6 +7,7 @@ import * as drizzleDb from "@/db";
import { import {
RetentionSettingsSchema RetentionSettingsSchema
} from "@/components/wrappers/dashboard/database/retention-policy/backup-retention-settings.schema"; } from "@/components/wrappers/dashboard/database/retention-policy/backup-retention-settings.schema";
import {userAction} from "@/lib/safe-actions/actions";
export const updateOrCreateBackupRetentionPolicyAction = userAction export const updateOrCreateBackupRetentionPolicyAction = userAction
@@ -1,6 +1,6 @@
"use server"; "use server";
import {userAction} from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import {OrganizationSchema} from "@/components/wrappers/dashboard/organization/organization.schema"; import {OrganizationSchema} from "@/components/wrappers/dashboard/organization/organization.schema";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
import {z} from "zod"; import {z} from "zod";
@@ -1,6 +1,6 @@
"use server"; "use server";
import { db } from "@/db"; import { db } from "@/db";
import { userAction } from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { z } from "zod"; import { z } from "zod";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
@@ -1,5 +1,5 @@
"use server"; "use server";
import { userAction } from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import { z } from "zod"; import { z } from "zod";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
import { db } from "@/db"; import { db } from "@/db";
@@ -1,5 +1,5 @@
"use server"; "use server";
import { userAction } from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import { z } from "zod"; import { z } from "zod";
import { UserSchema } from "@/components/wrappers/dashboard/profile/user-form/user-form.schema"; import { UserSchema } from "@/components/wrappers/dashboard/profile/user-form/user-form.schema";
import { db } from "@/db"; import { db } from "@/db";
@@ -1,6 +1,6 @@
"use server"; "use server";
import {userAction} from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import {z} from "zod"; import {z} from "zod";
import {v4 as uuidv4} from "uuid"; import {v4 as uuidv4} from "uuid";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
@@ -1,6 +1,6 @@
"use server"; "use server";
import { userAction } from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import { ProjectSchema } from "@/components/wrappers/dashboard/projects/project-form/project-form.schema"; import { ProjectSchema } from "@/components/wrappers/dashboard/projects/project-form/project-form.schema";
import { z } from "zod"; import { z } from "zod";
import { ServerActionResult } from "@/types/action-type"; import { ServerActionResult } from "@/types/action-type";
@@ -1,5 +1,5 @@
"use server"; "use server";
import {userAction} from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import {z} from "zod"; import {z} from "zod";
import {auth} from "@/lib/auth/auth"; import {auth} from "@/lib/auth/auth";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
@@ -1,5 +1,5 @@
"use server" "use server"
import {userAction} from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import {z} from "zod"; import {z} from "zod";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
+1 -1
View File
@@ -6,10 +6,10 @@ import * as fs from "node:fs";
import {getServerUrl} from "@/utils/get-server-url"; import {getServerUrl} from "@/utils/get-server-url";
import {createPresignedUrlToDownload, deleteFileFromBucket, saveFileInBucket} from "@/utils/s3-file-management"; import {createPresignedUrlToDownload, deleteFileFromBucket, saveFileInBucket} from "@/utils/s3-file-management";
import {env} from "@/env.mjs"; import {env} from "@/env.mjs";
import {action} from "@/safe-actions";
import {z} from "zod"; import {z} from "zod";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
import {unlink} from "fs/promises"; import {unlink} from "fs/promises";
import {action} from "@/lib/safe-actions/actions";
const privateLocalDir = "private/uploads/files/"; const privateLocalDir = "private/uploads/files/";
const privateS3Dir = "backups/"; const privateS3Dir = "backups/";
+1 -1
View File
@@ -1,5 +1,5 @@
"use server"; "use server";
import { userAction } from "@/safe-actions"; import {userAction} from "@/lib/safe-actions/actions";
import { z } from "zod"; import { z } from "zod";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
import { mkdir, writeFile } from "fs/promises"; import { mkdir, writeFile } from "fs/promises";
+6 -9
View File
@@ -8,7 +8,7 @@ import {admin as adminPlugin, openAPI, Organization, organization} from "better-
import {ac, admin, orgAdmin, orgMember, orgOwner, pending, superadmin, user} from "@/lib/auth/permissions"; import {ac, admin, orgAdmin, orgMember, orgOwner, pending, superadmin, user} from "@/lib/auth/permissions";
import {headers} from "next/headers"; import {headers} from "next/headers";
import {count, eq} from "drizzle-orm"; import {count, eq} from "drizzle-orm";
import {OrganizationWithMembers, OrganizationWithMembersAndUsers} from "@/db/schema/03_organization"; import {OrganizationWithMembersAndUsers} from "@/db/schema/03_organization";
export const auth = betterAuth({ export const auth = betterAuth({
database: drizzleAdapter(db, { database: drizzleAdapter(db, {
@@ -81,8 +81,6 @@ export const auth = betterAuth({
async before(user, context) { async before(user, context) {
const userCount = (await db.select({count: count()}).from(drizzleDb.schemas.user))[0].count; const userCount = (await db.select({count: count()}).from(drizzleDb.schemas.user))[0].count;
const role = userCount === 0 ? "superadmin" : "pending"; const role = userCount === 0 ? "superadmin" : "pending";
return { return {
data: { data: {
...user, ...user,
@@ -335,15 +333,15 @@ export const getOrganization = async ({
} = {}): Promise<OrganizationWithMembersAndUsers | null> => { } = {}): Promise<OrganizationWithMembersAndUsers | null> => {
const query = const query =
organizationId != null organizationId != null
? { organizationId } ? {organizationId}
: organizationSlug != null : organizationSlug != null
? { organizationSlug } ? {organizationSlug}
: undefined; : undefined;
try { try {
const response = await auth.api.getFullOrganization({ const response = await auth.api.getFullOrganization({
headers: await headers(), headers: await headers(),
...(query ? { query } : {}), ...(query ? {query} : {}),
}); });
return response as OrganizationWithMembersAndUsers; return response as OrganizationWithMembersAndUsers;
@@ -382,7 +380,7 @@ export const getLastOrganizationOrFirst = async (userId: string) => {
export const createOrganization = async (name: string, slug: string) => { export const createOrganization = async (name: string, slug: string) => {
try { try {
return await auth.api.createOrganization({ return await auth.api.createOrganization({
headers: await headers(), headers: await headers(),
body: { body: {
name, name,
slug, slug,
@@ -465,13 +463,12 @@ export const getActiveMember = async () => {
export const setActiveOrganization = async (slug: string) => { export const setActiveOrganization = async (slug: string) => {
try { try {
const organization = await auth.api.setActiveOrganization({ return await auth.api.setActiveOrganization({
headers: await headers(), headers: await headers(),
body: { body: {
organizationSlug: slug, organizationSlug: slug,
}, },
}); });
return organization;
} catch (e) { } catch (e) {
console.log("error", e); console.log("error", e);
} }
@@ -1,5 +1,5 @@
import { createSafeActionClient } from "next-safe-action"; import {createSafeActionClient} from "next-safe-action";
import { currentUser } from "./lib/auth/current-user"; import {currentUser} from "@/lib/auth/current-user";
export class ActionError extends Error { export class ActionError extends Error {
constructor(message: string) { constructor(message: string) {
@@ -20,11 +20,10 @@ export const action = createSafeActionClient({
handleServerError: handleReturnedServerError, handleServerError: handleReturnedServerError,
}); });
export const userAction = action.use(async ({ next, ctx }) => { export const userAction = action.use(async ({next, ctx}) => {
const user = await currentUser(); const user = await currentUser();
if (!user) { if (!user) {
throw new ActionError("You must be logged in"); throw new ActionError("You must be logged in");
} }
return next({ ctx: { user } }); return next({ctx: {user}});
}); });
+1 -1
View File
@@ -3,7 +3,7 @@ import {enforceRetentionCount} from "@/lib/tasks/database/retention-count";
import {enforceRetentionDays} from "@/lib/tasks/database/retention-days"; import {enforceRetentionDays} from "@/lib/tasks/database/retention-days";
import {enforceRetentionGFS} from "@/lib/tasks/database/retention-gsf"; import {enforceRetentionGFS} from "@/lib/tasks/database/retention-gsf";
import {retentionPolicy} from "@/db/schema/07_database"; import {retentionPolicy} from "@/db/schema/07_database";
import {eq, isNull} from "drizzle-orm"; import {isNull} from "drizzle-orm";
import * as drizzleDb from "@/db"; import * as drizzleDb from "@/db";
import {eventEmitter} from "../../../../app/api/events/route"; import {eventEmitter} from "../../../../app/api/events/route";
+1 -1
View File
@@ -1,5 +1,5 @@
"use server" "use server"
import {action, userAction} from "@/safe-actions"; import {action} from "@/lib/safe-actions/actions";
import {z} from "zod"; import {z} from "zod";
import {ServerActionResult} from "@/types/action-type"; import {ServerActionResult} from "@/types/action-type";
import {Backup} from "@/db/schema/07_database"; import {Backup} from "@/db/schema/07_database";
+42 -42
View File
@@ -1099,10 +1099,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@next/env@npm:15.4.2-canary.10": "@next/env@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/env@npm:15.4.2-canary.10" resolution: "@next/env@npm:15.5.2"
checksum: 10c0/03b8181c2670950c2c37f5521ecc4c305c241166e304622189bc35b96f8a28523673f1c4f0c5867b41a0ce8a75dbc88ace92dc20375aa7840a231009881e1cf0 checksum: 10c0/39bb834c36361c12b8f3f8fc9e6ce72b2af0daa1b56eab18f2b79d114403fe025317d5079ed2907334da6b4c53b2462724ffc2afa54471c335e6987b4a7a0cc3
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1115,58 +1115,58 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-darwin-arm64@npm:15.4.2-canary.10": "@next/swc-darwin-arm64@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-darwin-arm64@npm:15.4.2-canary.10" resolution: "@next/swc-darwin-arm64@npm:15.5.2"
conditions: os=darwin & cpu=arm64 conditions: os=darwin & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-darwin-x64@npm:15.4.2-canary.10": "@next/swc-darwin-x64@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-darwin-x64@npm:15.4.2-canary.10" resolution: "@next/swc-darwin-x64@npm:15.5.2"
conditions: os=darwin & cpu=x64 conditions: os=darwin & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-arm64-gnu@npm:15.4.2-canary.10": "@next/swc-linux-arm64-gnu@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-linux-arm64-gnu@npm:15.4.2-canary.10" resolution: "@next/swc-linux-arm64-gnu@npm:15.5.2"
conditions: os=linux & cpu=arm64 & libc=glibc conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-arm64-musl@npm:15.4.2-canary.10": "@next/swc-linux-arm64-musl@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-linux-arm64-musl@npm:15.4.2-canary.10" resolution: "@next/swc-linux-arm64-musl@npm:15.5.2"
conditions: os=linux & cpu=arm64 & libc=musl conditions: os=linux & cpu=arm64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-x64-gnu@npm:15.4.2-canary.10": "@next/swc-linux-x64-gnu@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-linux-x64-gnu@npm:15.4.2-canary.10" resolution: "@next/swc-linux-x64-gnu@npm:15.5.2"
conditions: os=linux & cpu=x64 & libc=glibc conditions: os=linux & cpu=x64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-x64-musl@npm:15.4.2-canary.10": "@next/swc-linux-x64-musl@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-linux-x64-musl@npm:15.4.2-canary.10" resolution: "@next/swc-linux-x64-musl@npm:15.5.2"
conditions: os=linux & cpu=x64 & libc=musl conditions: os=linux & cpu=x64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-win32-arm64-msvc@npm:15.4.2-canary.10": "@next/swc-win32-arm64-msvc@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-win32-arm64-msvc@npm:15.4.2-canary.10" resolution: "@next/swc-win32-arm64-msvc@npm:15.5.2"
conditions: os=win32 & cpu=arm64 conditions: os=win32 & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-win32-x64-msvc@npm:15.4.2-canary.10": "@next/swc-win32-x64-msvc@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "@next/swc-win32-x64-msvc@npm:15.4.2-canary.10" resolution: "@next/swc-win32-x64-msvc@npm:15.5.2"
conditions: os=win32 & cpu=x64 conditions: os=win32 & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
@@ -8119,19 +8119,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"next@npm:15.4.2-canary.10": "next@npm:15.5.2":
version: 15.4.2-canary.10 version: 15.5.2
resolution: "next@npm:15.4.2-canary.10" resolution: "next@npm:15.5.2"
dependencies: dependencies:
"@next/env": "npm:15.4.2-canary.10" "@next/env": "npm:15.5.2"
"@next/swc-darwin-arm64": "npm:15.4.2-canary.10" "@next/swc-darwin-arm64": "npm:15.5.2"
"@next/swc-darwin-x64": "npm:15.4.2-canary.10" "@next/swc-darwin-x64": "npm:15.5.2"
"@next/swc-linux-arm64-gnu": "npm:15.4.2-canary.10" "@next/swc-linux-arm64-gnu": "npm:15.5.2"
"@next/swc-linux-arm64-musl": "npm:15.4.2-canary.10" "@next/swc-linux-arm64-musl": "npm:15.5.2"
"@next/swc-linux-x64-gnu": "npm:15.4.2-canary.10" "@next/swc-linux-x64-gnu": "npm:15.5.2"
"@next/swc-linux-x64-musl": "npm:15.4.2-canary.10" "@next/swc-linux-x64-musl": "npm:15.5.2"
"@next/swc-win32-arm64-msvc": "npm:15.4.2-canary.10" "@next/swc-win32-arm64-msvc": "npm:15.5.2"
"@next/swc-win32-x64-msvc": "npm:15.4.2-canary.10" "@next/swc-win32-x64-msvc": "npm:15.5.2"
"@swc/helpers": "npm:0.5.15" "@swc/helpers": "npm:0.5.15"
caniuse-lite: "npm:^1.0.30001579" caniuse-lite: "npm:^1.0.30001579"
postcss: "npm:8.4.31" postcss: "npm:8.4.31"
@@ -8174,7 +8174,7 @@ __metadata:
optional: true optional: true
bin: bin:
next: dist/bin/next next: dist/bin/next
checksum: 10c0/c7da06257cf4ba373f41ffbe788e962d58fc92ab6ecd6ffb80a17a1a94bbb4d6d74d95661c9168a41b037d1856a4bac47f6326ab912d22e97e454dd86e2422d9 checksum: 10c0/3bed56bcca1f0fe07908fa075229f7f2662b4870974570f9e5a944758db9960868704ea4253f05c79507381b2e0014e8b621d7934408e26a0df8cbb3621986d8
languageName: node languageName: node
linkType: hard linkType: hard
@@ -8805,7 +8805,7 @@ __metadata:
input-otp: "npm:^1.4.2" input-otp: "npm:^1.4.2"
lucide-react: "npm:^0.510.0" lucide-react: "npm:^0.510.0"
minio: "npm:^8.0.5" minio: "npm:^8.0.5"
next: "npm:15.4.2-canary.10" next: "npm:15.5.2"
next-safe-action: "npm:^7.10.8" next-safe-action: "npm:^7.10.8"
next-themes: "npm:^0.4.6" next-themes: "npm:^0.4.6"
node-cron: "npm:^4.2.1" node-cron: "npm:^4.2.1"