+
= ({
/>
-
+
Unlock Cap AI
-
+
Upgrade to Cap Pro to access AI-powered features including
automatic titles, video summaries, and intelligent chapter
generation.
@@ -139,6 +143,8 @@ export const Summary: React.FC = ({
);
}
+ if (isSummaryDisabled) return null;
+
if (isLoading || aiData?.processing) {
return (
@@ -152,22 +158,12 @@ export const Summary: React.FC
= ({
if (!aiData?.summary && (!aiData?.chapters || aiData.chapters.length === 0)) {
return (
-
-
-
-
-
+
+
+
No summary available
@@ -203,10 +199,10 @@ export const Summary: React.FC = ({
{aiData.chapters.map((chapter) => (
handleSeek(chapter.start)}
>
-
+
{formatTime(chapter.start)}
{chapter.title}
diff --git a/apps/web/app/s/[videoId]/_components/utils/transcript-utils.ts b/apps/web/app/s/[videoId]/_components/utils/transcript-utils.ts
index dba8952c58..d24b1cd5b3 100644
--- a/apps/web/app/s/[videoId]/_components/utils/transcript-utils.ts
+++ b/apps/web/app/s/[videoId]/_components/utils/transcript-utils.ts
@@ -20,6 +20,14 @@ export const formatTime = (seconds: number): string => {
.padStart(3, "0")}`;
};
+export const formatTimeMinutes = (time: number) => {
+ const minutes = Math.floor(time / 60);
+ const seconds = Math.floor(time % 60);
+ return `${minutes.toString().padStart(2, "0")}:${seconds
+ .toString()
+ .padStart(2, "0")}`;
+};
+
/**
* Formats transcript entries as VTT format for subtitles
*/
diff --git a/apps/web/app/s/[videoId]/page.tsx b/apps/web/app/s/[videoId]/page.tsx
index be76d9dcab..246736232f 100644
--- a/apps/web/app/s/[videoId]/page.tsx
+++ b/apps/web/app/s/[videoId]/page.tsx
@@ -25,7 +25,10 @@ import Link from "next/link";
import { notFound } from "next/navigation";
import { generateAiMetadata } from "@/actions/videos/generate-ai-metadata";
import { getVideoAnalytics } from "@/actions/videos/get-analytics";
-import { getDashboardData } from "@/app/(org)/dashboard/dashboard-data";
+import {
+ getDashboardData,
+ type OrganizationSettings,
+} from "@/app/(org)/dashboard/dashboard-data";
import { createNotification } from "@/lib/Notification";
import * as EffectRuntime from "@/lib/server";
import { transcribeVideo } from "@/lib/transcribe";
@@ -91,11 +94,6 @@ async function getSharedSpacesForVideo(videoId: Video.VideoId) {
return sharedSpaces;
}
-type Props = {
- params: Promise<{ [key: string]: string | string[] | undefined }>;
- searchParams: Promise<{ [key: string]: string | string[] | undefined }>;
-};
-
type VideoWithOrganization = typeof videos.$inferSelect & {
sharedOrganization?: {
organizationId: string;
@@ -106,6 +104,7 @@ type VideoWithOrganization = typeof videos.$inferSelect & {
password?: string | null;
hasPassword?: boolean;
ownerIsPro?: boolean;
+ orgSettings?: OrganizationSettings | null;
};
const ALLOWED_REFERRERS = [
@@ -282,6 +281,7 @@ export default async function ShareVideoPage(props: PageProps<"/s/[videoId]">) {
skipProcessing: videos.skipProcessing,
transcriptionStatus: videos.transcriptionStatus,
source: videos.source,
+ videoSettings: videos.settings,
width: videos.width,
height: videos.height,
duration: videos.duration,
@@ -290,6 +290,7 @@ export default async function ShareVideoPage(props: PageProps<"/s/[videoId]">) {
sharedOrganization: {
organizationId: sharedVideos.organizationId,
},
+ orgSettings: organizations.settings,
ownerIsPro:
sql`${users.stripeSubscriptionStatus} IN ('active','trialing','complete','paid') OR ${users.thirdPartyStripeSubscriptionId} IS NOT NULL`.mapWith(
Boolean,
@@ -302,6 +303,7 @@ export default async function ShareVideoPage(props: PageProps<"/s/[videoId]">) {
.leftJoin(sharedVideos, eq(videos.id, sharedVideos.videoId))
.leftJoin(users, eq(videos.ownerId, users.id))
.leftJoin(videoUploads, eq(videos.id, videoUploads.videoId))
+ .leftJoin(organizations, eq(videos.orgId, organizations.id))
.where(eq(videos.id, videoId)),
).pipe(Policy.withPublicPolicy(videosPolicy.canView(videoId)));
@@ -348,10 +350,15 @@ async function AuthorizedContent({
video,
searchParams,
}: {
- video: Omit, "folderId" | "password"> & {
+ video: Omit<
+ InferSelectModel,
+ "folderId" | "password" | "settings"
+ > & {
sharedOrganization: { organizationId: string } | null;
hasPassword: boolean;
ownerIsPro?: boolean;
+ orgSettings?: OrganizationSettings | null;
+ videoSettings?: OrganizationSettings | null;
};
searchParams: { [key: string]: string | string[] | undefined };
}) {
@@ -470,10 +477,13 @@ async function AuthorizedContent({
sharedOrganization: {
organizationId: sharedVideos.organizationId,
},
+ orgSettings: organizations.settings,
+ videoSettings: videos.settings,
})
.from(videos)
.leftJoin(sharedVideos, eq(videos.id, sharedVideos.videoId))
.leftJoin(users, eq(videos.ownerId, users.id))
+ .leftJoin(organizations, eq(videos.orgId, organizations.id))
.where(eq(videos.id, videoId))
.execute();
@@ -666,6 +676,8 @@ async function AuthorizedContent({
sharedOrganizations: sharedOrganizations,
password: null,
folderId: null,
+ orgSettings: video.orgSettings || null,
+ settings: video.videoSettings || null,
};
return (
@@ -691,6 +703,7 @@ async function AuthorizedContent({
{
+ //if dev - don't transcribe
+ if (serverEnv().NODE_ENV === "development") {
+ console.log("[transcribeAudio] Development mode, skipping transcription");
+ return "";
+ }
+
console.log("[transcribeAudio] Starting transcription for URL:", videoUrl);
const deepgram = createClient(serverEnv().DEEPGRAM_API_KEY as string);
diff --git a/apps/web/package.json b/apps/web/package.json
index 14555f8650..4f5bc1c266 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -53,7 +53,7 @@
"@radix-ui/react-dropdown-menu": "^2.0.6",
"@radix-ui/react-select": "^2.2.5",
"@radix-ui/react-slider": "^1.3.5",
- "@radix-ui/react-slot": "^1.0.2",
+ "@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-tooltip": "^1.2.6",
"@react-email/components": "^0.1.0",
"@react-email/render": "1.1.2",
diff --git a/package.json b/package.json
index 1fd394ce4f..96ff28d229 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"@clack/prompts": "^0.10.0",
"@effect/language-service": "^0.34.0",
"dotenv-cli": "latest",
+ "prettier": "^3.5.3",
"turbo": "^2.3.4",
"typescript": "^5.8.3"
},
diff --git a/packages/database/migrations/meta/_journal.json b/packages/database/migrations/meta/_journal.json
index 808fe48f79..f3efe3fbdc 100644
--- a/packages/database/migrations/meta/_journal.json
+++ b/packages/database/migrations/meta/_journal.json
@@ -57,6 +57,13 @@
"when": 1754314124918,
"tag": "0007_cheerful_rocket_raccoon",
"breakpoints": true
+ },
+ {
+ "idx": 8,
+ "version": "5",
+ "when": 1759139970377,
+ "tag": "0008_condemned_gamora",
+ "breakpoints": true
}
]
}
diff --git a/packages/database/schema.ts b/packages/database/schema.ts
index ca6f2c285b..035e895ade 100644
--- a/packages/database/schema.ts
+++ b/packages/database/schema.ts
@@ -159,6 +159,14 @@ export const organizations = mysqlTable(
allowedEmailDomain: varchar("allowedEmailDomain", { length: 255 }),
customDomain: varchar("customDomain", { length: 255 }),
domainVerified: timestamp("domainVerified"),
+ settings: json("settings").$type<{
+ disableSummary?: boolean;
+ disableCaptions?: boolean;
+ disableChapters?: boolean;
+ disableReactions?: boolean;
+ disableTranscript?: boolean;
+ disableComments?: boolean;
+ }>(),
iconUrl: varchar("iconUrl", { length: 1024 }),
createdAt: timestamp("createdAt").notNull().defaultNow(),
updatedAt: timestamp("updatedAt").notNull().defaultNow().onUpdateNow(),
@@ -260,8 +268,16 @@ export const videos = mysqlTable(
fps: int("fps"),
metadata: json("metadata").$type(),
public: boolean("public").notNull().default(true),
+ settings: json("settings").$type<{
+ disableSummary?: boolean;
+ disableCaptions?: boolean;
+ disableChapters?: boolean;
+ disableReactions?: boolean;
+ disableTranscript?: boolean;
+ disableComments?: boolean;
+ }>(),
transcriptionStatus: varchar("transcriptionStatus", { length: 255 }).$type<
- "PROCESSING" | "COMPLETE" | "ERROR"
+ "PROCESSING" | "COMPLETE" | "ERROR" | "SKIPPED"
>(),
source: json("source")
.$type<
diff --git a/packages/ui/src/components/Switch.tsx b/packages/ui/src/components/Switch.tsx
index 61bf461ed5..950853b915 100644
--- a/packages/ui/src/components/Switch.tsx
+++ b/packages/ui/src/components/Switch.tsx
@@ -14,7 +14,7 @@ const Switch = React.forwardRef<
"w-11 h-6 p-[0.125rem]",
"bg-gray-5 data-[state=checked]:bg-blue-500",
"focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500",
- "disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-200",
+ "disabled:cursor-not-allowed disabled:opacity-40 disabled:bg-gray-4",
className,
)}
{...props}
diff --git a/packages/web-api-contract-effect/src/index.ts b/packages/web-api-contract-effect/src/index.ts
index c5b583daa3..34a896bca1 100644
--- a/packages/web-api-contract-effect/src/index.ts
+++ b/packages/web-api-contract-effect/src/index.ts
@@ -4,12 +4,16 @@ import {
HttpApiError,
HttpApiGroup,
HttpApiMiddleware,
- HttpServerError,
} from "@effect/platform";
import { Context, Data } from "effect";
import * as Schema from "effect/Schema";
-const TranscriptionStatus = Schema.Literal("PROCESSING", "COMPLETE", "ERROR");
+const TranscriptionStatus = Schema.Literal(
+ "PROCESSING",
+ "COMPLETE",
+ "ERROR",
+ "SKIPPED",
+);
const OSType = Schema.Literal("macos", "windows");
const LicenseType = Schema.Literal("yearly", "lifetime");
diff --git a/packages/web-domain/src/Video.ts b/packages/web-domain/src/Video.ts
index 232efbd0f1..ac5dbec916 100644
--- a/packages/web-domain/src/Video.ts
+++ b/packages/web-domain/src/Video.ts
@@ -26,7 +26,7 @@ export class Video extends Schema.Class("Video")({
bucketId: Schema.OptionFromNullOr(S3BucketId),
folderId: Schema.OptionFromNullOr(FolderId),
transcriptionStatus: Schema.OptionFromNullOr(
- Schema.Literal("PROCESSING", "COMPLETE", "ERROR"),
+ Schema.Literal("PROCESSING", "COMPLETE", "ERROR", "SKIPPED"),
),
width: Schema.OptionFromNullOr(Schema.Number),
height: Schema.OptionFromNullOr(Schema.Number),
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 79a8921fc8..942d6ee14f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -23,6 +23,9 @@ importers:
dotenv-cli:
specifier: latest
version: 10.0.0
+ prettier:
+ specifier: ^3.5.3
+ version: 3.5.3
turbo:
specifier: ^2.3.4
version: 2.5.3
@@ -553,7 +556,7 @@ importers:
specifier: ^1.3.5
version: 1.3.5(@types/react-dom@19.1.9(@types/react@19.1.13))(@types/react@19.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@radix-ui/react-slot':
- specifier: ^1.0.2
+ specifier: ^1.2.3
version: 1.2.3(@types/react@19.1.13)(react@19.1.1)
'@radix-ui/react-tooltip':
specifier: ^1.2.6
@@ -692,7 +695,7 @@ importers:
version: 15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
next-auth:
specifier: ^4.24.5
- version: 4.24.11(next@15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 4.24.11(next@15.5.4(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
next-contentlayer2:
specifier: ^0.5.3
version: 0.5.8(acorn@8.15.0)(contentlayer2@0.5.8(acorn@8.15.0)(esbuild@0.25.5))(esbuild@0.25.5)(next@15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -994,7 +997,7 @@ importers:
version: 15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
next-auth:
specifier: ^4.24.5
- version: 4.24.11(next@15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 4.24.11(next@15.5.4(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
react-email:
specifier: ^4.0.16
version: 4.0.16(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -5992,10 +5995,10 @@ packages:
react-dom:
optional: true
- '@storybook/builder-vite@10.0.0-beta.8':
- resolution: {integrity: sha512-KlIdcmvjbB9WgrjSml9vmCDKqnLu6s88K9V/BsTklfKr71Nh0LEiltpiIsVabXmk8FcxWsVbvecoui0NcawWtA==}
+ '@storybook/builder-vite@10.0.0-beta.9':
+ resolution: {integrity: sha512-R8nSDRWr9eFOF+Bi9+wfJA6jjXGcLCrbgBt2bLebzfXhCNmfHCMaqRG2ZaNdEV4u9KJyakKdzKEotvAkaPONUA==}
peerDependencies:
- storybook: ^10.0.0-beta.8
+ storybook: ^10.0.0-beta.9
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
'@storybook/core@8.6.12':
@@ -6006,12 +6009,12 @@ packages:
prettier:
optional: true
- '@storybook/csf-plugin@10.0.0-beta.8':
- resolution: {integrity: sha512-nwMQ51ZTI8bPy15iar49frYByW9Fwq+UM6RkF0ExoPaDqV32VPZW46ChhTGVaKH6mHmZR7sNAXdboxulXGTP0Q==}
+ '@storybook/csf-plugin@10.0.0-beta.9':
+ resolution: {integrity: sha512-0PfoiNKNJGNaWZBc31sevMOfhzX0VqrrKqE98DCMyEvZLUPnKy4t7iCE5TNFH+rUd5D7MdVzwgAmJ+CdtlmHIQ==}
peerDependencies:
esbuild: '*'
rollup: '*'
- storybook: ^10.0.0-beta.8
+ storybook: ^10.0.0-beta.9
vite: '*'
webpack: '*'
peerDependenciesMeta:
@@ -19554,9 +19557,9 @@ snapshots:
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
- '@storybook/builder-vite@10.0.0-beta.8(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))':
+ '@storybook/builder-vite@10.0.0-beta.9(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))':
dependencies:
- '@storybook/csf-plugin': 10.0.0-beta.8(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))
+ '@storybook/csf-plugin': 10.0.0-beta.9(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))
storybook: 8.6.12(prettier@3.5.3)
ts-dedent: 2.2.0
vite: 6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1)
@@ -19586,7 +19589,7 @@ snapshots:
- supports-color
- utf-8-validate
- '@storybook/csf-plugin@10.0.0-beta.8(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))':
+ '@storybook/csf-plugin@10.0.0-beta.9(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))':
dependencies:
storybook: 8.6.12(prettier@3.5.3)
unplugin: 2.3.10
@@ -22823,8 +22826,8 @@ snapshots:
'@typescript-eslint/parser': 7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
eslint: 9.30.1(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.4.2))
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.30.1(jiti@2.4.2))
eslint-plugin-react: 7.37.5(eslint@9.30.1(jiti@2.4.2))
eslint-plugin-react-hooks: 5.2.0(eslint@9.30.1(jiti@2.4.2))
@@ -22852,33 +22855,33 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1):
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0(supports-color@5.5.0)
- eslint: 8.57.1
+ eslint: 9.30.1(jiti@2.4.2)
get-tsconfig: 4.10.0
is-bun-module: 2.0.0
stable-hash: 0.0.5
tinyglobby: 0.2.13
unrs-resolver: 1.7.2
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.4.2)):
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.0(supports-color@5.5.0)
- eslint: 9.30.1(jiti@2.4.2)
+ eslint: 8.57.1
get-tsconfig: 4.10.0
is-bun-module: 2.0.0
stable-hash: 0.0.5
tinyglobby: 0.2.13
unrs-resolver: 1.7.2
optionalDependencies:
- eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
+ eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
@@ -22904,14 +22907,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)):
+ eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)
eslint: 9.30.1(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.4.2))
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))
transitivePeerDependencies:
- supports-color
@@ -22973,7 +22976,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)):
+ eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.8
@@ -22984,7 +22987,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.30.1(jiti@2.4.2)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2))
+ eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -25946,7 +25949,7 @@ snapshots:
p-wait-for: 5.0.2
qs: 6.14.0
- next-auth@4.24.11(next@15.5.4(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ next-auth@4.24.11(next@15.5.4(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
dependencies:
'@babel/runtime': 7.27.1
'@panva/hkdf': 1.2.1
@@ -28002,7 +28005,7 @@ snapshots:
storybook-solidjs-vite@1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.5.3)))(esbuild@0.25.4)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.5.3))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4)):
dependencies:
- '@storybook/builder-vite': 10.0.0-beta.8(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))
+ '@storybook/builder-vite': 10.0.0-beta.9(esbuild@0.25.4)(rollup@4.40.2)(storybook@8.6.12(prettier@3.5.3))(vite@6.3.5(@types/node@22.15.17)(jiti@2.4.2)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.4))
'@storybook/types': 9.0.0-alpha.1(storybook@8.6.12(prettier@3.5.3))
magic-string: 0.30.17
solid-js: 1.9.6
@@ -28817,7 +28820,7 @@ snapshots:
scule: 1.3.0
strip-literal: 3.0.0
tinyglobby: 0.2.13
- unplugin: 2.3.2
+ unplugin: 2.3.10
unplugin-utils: 0.2.4
unique-filename@3.0.0: