stubbed in report lists

This commit is contained in:
Nate Kelley 2025-08-02 21:48:15 -06:00
parent 7cf8b10c07
commit cf5d549af3
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
10 changed files with 125 additions and 80 deletions

View File

@ -34,14 +34,18 @@
"@hono/zod-validator": "^0.7.2",
"@supabase/supabase-js": "catalog:",
"@trigger.dev/sdk": "catalog:",
"drizzle-orm": "catalog:",
"ai": "catalog:",
"drizzle-orm": "catalog:",
"hono": "catalog:",
"hono-pino": "^0.10.1",
"lodash-es": "^4.17.21",
"pino": "^9.7.0",
"pino-pretty": "^13.0.0",
"typescript": "5.8.3",
"tsup": "catalog:",
"typescript": "5.8.3",
"zod": "catalog:"
},
"devDependencies": {
"@types/lodash-es": "^4.17.12"
}
}

View File

@ -2,7 +2,7 @@ import type { User } from '@buster/database';
import type {
GetReportsListRequest,
GetReportsListResponse,
ReportResponse,
ReportListItem,
} from '@buster/server-shared/reports';
import { GetReportsListRequestSchema } from '@buster/server-shared/reports';
import { zValidator } from '@hono/zod-validator';
@ -12,27 +12,14 @@ async function getReportsListHandler(
request: GetReportsListRequest,
user: User
): Promise<GetReportsListResponse> {
const stubbedReports: ReportResponse[] = [
const stubbedReports: ReportListItem[] = [
{
id: 'report-1',
name: 'Sales Analysis Q4',
file_name: 'sales_analysis_q4.md',
description: 'Quarterly sales performance analysis',
created_by: user.id,
created_at: '2024-01-15T10:00:00Z',
updated_at: '2024-01-20T14:30:00Z',
deleted_at: null,
publicly_accessible: false,
content: [
{
type: 'h1' as const,
children: [{ text: 'Sales Analysis Q4' }],
},
{
type: 'p' as const,
children: [{ text: 'This report analyzes our Q4 sales performance.' }],
},
],
},
{
id: 'report-2',
@ -40,16 +27,7 @@ async function getReportsListHandler(
file_name: 'customer_metrics.md',
description: 'Key customer engagement metrics',
created_by: user.id,
created_at: '2024-01-10T09:00:00Z',
updated_at: '2024-01-18T16:45:00Z',
deleted_at: null,
publicly_accessible: true,
content: [
{
type: 'h1' as const,
children: [{ text: 'Customer Metrics' }],
},
],
},
{
id: 'report-3',
@ -57,22 +35,7 @@ async function getReportsListHandler(
file_name: 'marketing_campaign_results.md',
description: 'Analysis of recent marketing campaigns',
created_by: user.id,
created_at: '2024-01-05T08:30:00Z',
updated_at: '2024-01-12T11:15:00Z',
deleted_at: null,
publicly_accessible: false,
content: [
{
type: 'h1' as const,
children: [{ text: 'Marketing Campaign Results' }],
},
{
type: 'p' as const,
children: [
{ text: 'Overview of our recent marketing initiatives and their performance.' },
],
},
],
},
];
@ -80,7 +43,7 @@ async function getReportsListHandler(
// Page is 1-based, so we need to subtract 1 for array indexing
const startIndex = (page - 1) * page_size;
const endIndex = startIndex + page_size;
const paginatedReports = stubbedReports.slice(startIndex, endIndex);
const paginatedReports: ReportListItem[] = stubbedReports.slice(startIndex, endIndex);
const result: GetReportsListResponse = {
data: paginatedReports,

View File

@ -0,0 +1,55 @@
import type { User } from '@buster/database';
import type {
GetReportIndividualResponse,
ReportIndividualResponse,
} from '@buster/server-shared/reports';
import { zValidator } from '@hono/zod-validator';
import { Hono } from 'hono';
import { HTTPException } from 'hono/http-exception';
async function getReportHandler(
reportId: string,
user: User
): Promise<GetReportIndividualResponse> {
return {
id: reportId,
name: 'Sales Analysis Q4',
file_name: 'sales_analysis_q4.md',
description: 'Quarterly sales performance analysis',
created_by: user.id,
created_at: '2024-01-15T10:00:00Z',
updated_at: '2024-01-20T14:30:00Z',
deleted_at: null,
publicly_accessible: false,
content: [
{
type: 'h1',
children: [{ text: 'Sales Analysis Q4' }],
},
{
type: 'p',
children: [{ text: 'This report analyzes our Q4 sales performance.' }],
},
{
type: 'metric',
metricId: '123',
children: [{ text: '' }],
caption: [{ text: 'This is a metric' }],
},
],
};
}
const app = new Hono().get('/', async (c) => {
const reportId = c.req.param('id');
const user = c.get('busterUser');
if (!reportId) {
throw new HTTPException(404, { message: 'Report ID is required' });
}
const response: GetReportIndividualResponse = await getReportHandler(reportId, user);
return c.json(response);
});
export default app;

View File

@ -1,9 +1,5 @@
import type { User } from '@buster/database';
import type {
ReportResponse,
UpdateReportRequest,
UpdateReportResponse,
} from '@buster/server-shared/reports';
import type { UpdateReportRequest, UpdateReportResponse } from '@buster/server-shared/reports';
import { UpdateReportRequestSchema } from '@buster/server-shared/reports';
import { zValidator } from '@hono/zod-validator';
import { Hono } from 'hono';
@ -14,7 +10,7 @@ async function updateReportHandler(
request: UpdateReportRequest,
user: User
): Promise<UpdateReportResponse> {
const existingReport: ReportResponse = {
const existingReport: UpdateReportResponse = {
id: reportId,
name: 'Sales Analysis Q4',
file_name: 'sales_analysis_q4.md',
@ -42,7 +38,7 @@ async function updateReportHandler(
const updatedReport: UpdateReportResponse = {
...existingReport,
...(request as Partial<ReportResponse>),
...(request as Partial<UpdateReportResponse>),
updated_at: new Date().toISOString(),
};

View File

@ -0,0 +1,8 @@
import { Hono } from 'hono';
import { requireAuth } from '../../../../middleware/auth';
import GET from './GET';
import PUT from './PUT';
const app = new Hono().route('/', GET).route('/', PUT);
export default app;

View File

@ -1,11 +1,8 @@
import { Hono } from 'hono';
import { requireAuth } from '../../../middleware/auth';
import GET from './GET';
import PUT_ID from './[id]';
import individualReport from './[id]';
const app = new Hono()
.use('*', requireAuth)
.route('/', GET)
.route('/:id', PUT_ID);
const app = new Hono().use('*', requireAuth).route('/', GET).route('/:id', individualReport);
export default app;

View File

@ -2,7 +2,16 @@ import { z } from 'zod';
import type { ReportElement, ReportElements } from './report-elements';
import { ReportElementSchema } from './report-elements';
const ReportResponseSchema: z.ZodType<{
export const ReportListItemSchema = z.object({
id: z.string(),
name: z.string(),
file_name: z.string(),
description: z.string(),
created_by: z.string(),
updated_at: z.string(),
});
export const ReportIndividualResponseSchema: z.ZodType<{
id: string;
name: string;
file_name: string;
@ -26,7 +35,5 @@ const ReportResponseSchema: z.ZodType<{
content: z.array(ReportElementSchema) as z.ZodType<ReportElements>,
});
// Export base schema for operations like .pick()
export { ReportResponseSchema };
export type ReportResponse = z.infer<typeof ReportResponseSchema>;
export type ReportListItem = z.infer<typeof ReportListItemSchema>;
export type ReportIndividualResponse = z.infer<typeof ReportIndividualResponseSchema>;

View File

@ -2,7 +2,6 @@ import { z } from 'zod';
import { PaginatedRequestSchema } from '../type-utilities/pagination';
import type { ReportElement, ReportElements } from './report-elements';
import { ReportElementSchema } from './report-elements';
import { ReportResponseSchema } from './reports.types';
export const GetReportsListRequestSchema = PaginatedRequestSchema;

View File

@ -1,9 +1,10 @@
import type { z } from 'zod';
import { PaginatedResponseSchema } from '../type-utilities/pagination';
import { ReportResponseSchema } from './reports.types';
import { ReportIndividualResponseSchema, ReportListItemSchema } from './reports.types';
export const GetReportsListResponseSchema = PaginatedResponseSchema(ReportResponseSchema);
export const UpdateReportResponseSchema = ReportResponseSchema;
export const GetReportsListResponseSchema = PaginatedResponseSchema(ReportListItemSchema);
export const UpdateReportResponseSchema = ReportIndividualResponseSchema;
export type GetReportsListResponse = z.infer<typeof GetReportsListResponseSchema>;
export type UpdateReportResponse = z.infer<typeof UpdateReportResponseSchema>;
export type GetReportIndividualResponse = z.infer<typeof ReportIndividualResponseSchema>;

View File

@ -175,6 +175,9 @@ importers:
hono-pino:
specifier: ^0.10.1
version: 0.10.1(hono@4.8.4)(pino@9.7.0)
lodash-es:
specifier: ^4.17.21
version: 4.17.21
pino:
specifier: ^9.7.0
version: 9.7.0
@ -190,6 +193,10 @@ importers:
zod:
specifier: 'catalog:'
version: 3.25.1
devDependencies:
'@types/lodash-es':
specifier: ^4.17.12
version: 4.17.12
apps/trigger:
dependencies:
@ -298,10 +305,10 @@ importers:
version: 49.2.4(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/autoformat':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-nodes':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-styles':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -352,7 +359,7 @@ importers:
version: 49.2.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/markdown':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
version: 49.2.1(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/math':
specifier: ^49.0.0
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@ -1038,13 +1045,13 @@ importers:
version: link:../vitest-config
'@platejs/autoformat':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/basic-nodes':
specifier: 'catalog:'
version: 49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@platejs/markdown':
specifier: 'catalog:'
version: 49.2.1(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
version: 49.2.1(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
platejs:
specifier: 'catalog:'
version: 49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
@ -5771,6 +5778,9 @@ packages:
'@types/katex@0.16.7':
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
'@types/lodash-es@4.17.12':
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
'@types/lodash@4.17.20':
resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
@ -6773,6 +6783,7 @@ packages:
bun@1.2.18:
resolution: {integrity: sha512-OR+EpNckoJN4tHMVZPaTPxDj2RgpJgJwLruTIFYbO3bQMguLd0YrmkWKYqsiihcLgm2ehIjF/H1RLfZiRa7+qQ==}
cpu: [arm64, x64, aarch64]
os: [darwin, linux, win32]
hasBin: true
@ -16479,7 +16490,7 @@ snapshots:
'@platejs/ai@49.2.4(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
dependencies:
'@platejs/markdown': 49.2.1(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/markdown': 49.2.1(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)
'@platejs/selection': 49.2.4(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
platejs: 49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
@ -16489,14 +16500,14 @@ snapshots:
- supports-color
- typescript
'@platejs/autoformat@49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/autoformat@49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
lodash: 4.17.21
platejs: 49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/basic-nodes@49.0.0(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@platejs/basic-nodes@49.0.0(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
platejs: 49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))
react: 18.3.1
@ -16552,7 +16563,7 @@ snapshots:
html-entities: 2.6.0
is-hotkey: 0.2.0
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1)
jotai-optics: 0.4.0(jotai@2.8.4(react@18.3.1))(optics-ts@2.4.1)
jotai-optics: 0.4.0(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(optics-ts@2.4.1)
jotai-x: 2.3.3(@types/react@18.3.23)(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)
lodash: 4.17.21
nanoid: 5.1.5
@ -16563,7 +16574,7 @@ snapshots:
slate-react: 0.117.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)
use-deep-compare: 1.3.0(react@18.3.1)
zustand: 5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))
zustand-x: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)))
zustand-x: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)))
transitivePeerDependencies:
- '@types/react'
- immer
@ -16654,7 +16665,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
'@platejs/markdown@49.2.1(platejs@49.2.4(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
'@platejs/markdown@49.2.1(platejs@49.2.4(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)':
dependencies:
marked: 15.0.12
mdast-util-math: 3.0.0
@ -18761,6 +18772,10 @@ snapshots:
'@types/katex@0.16.7': {}
'@types/lodash-es@4.17.12':
dependencies:
'@types/lodash': 4.17.20
'@types/lodash@4.17.20': {}
'@types/mdast@4.0.4':
@ -19207,14 +19222,14 @@ snapshots:
msw: 2.10.4(@types/node@20.19.4)(typescript@5.8.3)
vite: 6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
'@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))':
'@vitest/mocker@3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
msw: 2.10.4(@types/node@24.0.10)(typescript@5.8.3)
vite: 6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
vite: 6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0)
'@vitest/pretty-format@2.0.5':
dependencies:
@ -22519,7 +22534,7 @@ snapshots:
jose@5.10.0: {}
jotai-optics@0.4.0(jotai@2.8.4(react@18.3.1))(optics-ts@2.4.1):
jotai-optics@0.4.0(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(optics-ts@2.4.1):
dependencies:
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1)
optics-ts: 2.4.1
@ -26543,7 +26558,7 @@ snapshots:
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
'@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@20.19.4)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
'@vitest/mocker': 3.2.4(msw@2.10.4(@types/node@24.0.10)(typescript@5.8.3))(vite@6.3.5(@types/node@24.0.10)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.2)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.0))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@ -26950,7 +26965,7 @@ snapshots:
zod@3.25.1: {}
zustand-x@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))):
zustand-x@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.7(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))):
dependencies:
immer: 10.1.1
lodash.mapvalues: 4.6.0