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", "@hono/zod-validator": "^0.7.2",
"@supabase/supabase-js": "catalog:", "@supabase/supabase-js": "catalog:",
"@trigger.dev/sdk": "catalog:", "@trigger.dev/sdk": "catalog:",
"drizzle-orm": "catalog:",
"ai": "catalog:", "ai": "catalog:",
"drizzle-orm": "catalog:",
"hono": "catalog:", "hono": "catalog:",
"hono-pino": "^0.10.1", "hono-pino": "^0.10.1",
"lodash-es": "^4.17.21",
"pino": "^9.7.0", "pino": "^9.7.0",
"pino-pretty": "^13.0.0", "pino-pretty": "^13.0.0",
"typescript": "5.8.3",
"tsup": "catalog:", "tsup": "catalog:",
"typescript": "5.8.3",
"zod": "catalog:" "zod": "catalog:"
},
"devDependencies": {
"@types/lodash-es": "^4.17.12"
} }
} }

View File

@ -2,7 +2,7 @@ import type { User } from '@buster/database';
import type { import type {
GetReportsListRequest, GetReportsListRequest,
GetReportsListResponse, GetReportsListResponse,
ReportResponse, ReportListItem,
} from '@buster/server-shared/reports'; } from '@buster/server-shared/reports';
import { GetReportsListRequestSchema } from '@buster/server-shared/reports'; import { GetReportsListRequestSchema } from '@buster/server-shared/reports';
import { zValidator } from '@hono/zod-validator'; import { zValidator } from '@hono/zod-validator';
@ -12,27 +12,14 @@ async function getReportsListHandler(
request: GetReportsListRequest, request: GetReportsListRequest,
user: User user: User
): Promise<GetReportsListResponse> { ): Promise<GetReportsListResponse> {
const stubbedReports: ReportResponse[] = [ const stubbedReports: ReportListItem[] = [
{ {
id: 'report-1', id: 'report-1',
name: 'Sales Analysis Q4', name: 'Sales Analysis Q4',
file_name: 'sales_analysis_q4.md', file_name: 'sales_analysis_q4.md',
description: 'Quarterly sales performance analysis', description: 'Quarterly sales performance analysis',
created_by: user.id, created_by: user.id,
created_at: '2024-01-15T10:00:00Z',
updated_at: '2024-01-20T14:30: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', id: 'report-2',
@ -40,16 +27,7 @@ async function getReportsListHandler(
file_name: 'customer_metrics.md', file_name: 'customer_metrics.md',
description: 'Key customer engagement metrics', description: 'Key customer engagement metrics',
created_by: user.id, created_by: user.id,
created_at: '2024-01-10T09:00:00Z',
updated_at: '2024-01-18T16:45: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', id: 'report-3',
@ -57,22 +35,7 @@ async function getReportsListHandler(
file_name: 'marketing_campaign_results.md', file_name: 'marketing_campaign_results.md',
description: 'Analysis of recent marketing campaigns', description: 'Analysis of recent marketing campaigns',
created_by: user.id, created_by: user.id,
created_at: '2024-01-05T08:30:00Z',
updated_at: '2024-01-12T11:15: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 // Page is 1-based, so we need to subtract 1 for array indexing
const startIndex = (page - 1) * page_size; const startIndex = (page - 1) * page_size;
const endIndex = startIndex + page_size; const endIndex = startIndex + page_size;
const paginatedReports = stubbedReports.slice(startIndex, endIndex); const paginatedReports: ReportListItem[] = stubbedReports.slice(startIndex, endIndex);
const result: GetReportsListResponse = { const result: GetReportsListResponse = {
data: paginatedReports, 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 { User } from '@buster/database';
import type { import type { UpdateReportRequest, UpdateReportResponse } from '@buster/server-shared/reports';
ReportResponse,
UpdateReportRequest,
UpdateReportResponse,
} from '@buster/server-shared/reports';
import { UpdateReportRequestSchema } from '@buster/server-shared/reports'; import { UpdateReportRequestSchema } from '@buster/server-shared/reports';
import { zValidator } from '@hono/zod-validator'; import { zValidator } from '@hono/zod-validator';
import { Hono } from 'hono'; import { Hono } from 'hono';
@ -14,7 +10,7 @@ async function updateReportHandler(
request: UpdateReportRequest, request: UpdateReportRequest,
user: User user: User
): Promise<UpdateReportResponse> { ): Promise<UpdateReportResponse> {
const existingReport: ReportResponse = { const existingReport: UpdateReportResponse = {
id: reportId, id: reportId,
name: 'Sales Analysis Q4', name: 'Sales Analysis Q4',
file_name: 'sales_analysis_q4.md', file_name: 'sales_analysis_q4.md',
@ -42,7 +38,7 @@ async function updateReportHandler(
const updatedReport: UpdateReportResponse = { const updatedReport: UpdateReportResponse = {
...existingReport, ...existingReport,
...(request as Partial<ReportResponse>), ...(request as Partial<UpdateReportResponse>),
updated_at: new Date().toISOString(), 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 { Hono } from 'hono';
import { requireAuth } from '../../../middleware/auth'; import { requireAuth } from '../../../middleware/auth';
import GET from './GET'; import GET from './GET';
import PUT_ID from './[id]'; import individualReport from './[id]';
const app = new Hono() const app = new Hono().use('*', requireAuth).route('/', GET).route('/:id', individualReport);
.use('*', requireAuth)
.route('/', GET)
.route('/:id', PUT_ID);
export default app; export default app;

View File

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

View File

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

View File

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

View File

@ -175,6 +175,9 @@ importers:
hono-pino: hono-pino:
specifier: ^0.10.1 specifier: ^0.10.1
version: 0.10.1(hono@4.8.4)(pino@9.7.0) version: 0.10.1(hono@4.8.4)(pino@9.7.0)
lodash-es:
specifier: ^4.17.21
version: 4.17.21
pino: pino:
specifier: ^9.7.0 specifier: ^9.7.0
version: 9.7.0 version: 9.7.0
@ -190,6 +193,10 @@ importers:
zod: zod:
specifier: 'catalog:' specifier: 'catalog:'
version: 3.25.1 version: 3.25.1
devDependencies:
'@types/lodash-es':
specifier: ^4.17.12
version: 4.17.12
apps/trigger: apps/trigger:
dependencies: 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) 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': '@platejs/autoformat':
specifier: 'catalog:' 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': '@platejs/basic-nodes':
specifier: 'catalog:' 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': '@platejs/basic-styles':
specifier: ^49.0.0 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) 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) 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': '@platejs/markdown':
specifier: 'catalog:' 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': '@platejs/math':
specifier: ^49.0.0 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) 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 version: link:../vitest-config
'@platejs/autoformat': '@platejs/autoformat':
specifier: 'catalog:' 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': '@platejs/basic-nodes':
specifier: 'catalog:' 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': '@platejs/markdown':
specifier: 'catalog:' 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: platejs:
specifier: 'catalog:' 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)) 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': '@types/katex@0.16.7':
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
'@types/lodash-es@4.17.12':
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
'@types/lodash@4.17.20': '@types/lodash@4.17.20':
resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==}
@ -6773,6 +6783,7 @@ packages:
bun@1.2.18: bun@1.2.18:
resolution: {integrity: sha512-OR+EpNckoJN4tHMVZPaTPxDj2RgpJgJwLruTIFYbO3bQMguLd0YrmkWKYqsiihcLgm2ehIjF/H1RLfZiRa7+qQ==} resolution: {integrity: sha512-OR+EpNckoJN4tHMVZPaTPxDj2RgpJgJwLruTIFYbO3bQMguLd0YrmkWKYqsiihcLgm2ehIjF/H1RLfZiRa7+qQ==}
cpu: [arm64, x64, aarch64]
os: [darwin, linux, win32] os: [darwin, linux, win32]
hasBin: true 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)': '@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: 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) '@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 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)) 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 - supports-color
- typescript - 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: dependencies:
lodash: 4.17.21 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)) 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: 18.3.1
react-dom: 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: 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)) 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: 18.3.1
@ -16552,7 +16563,7 @@ snapshots:
html-entities: 2.6.0 html-entities: 2.6.0
is-hotkey: 0.2.0 is-hotkey: 0.2.0
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) 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) 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 lodash: 4.17.21
nanoid: 5.1.5 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) 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) 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: 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: transitivePeerDependencies:
- '@types/react' - '@types/react'
- immer - immer
@ -16654,7 +16665,7 @@ snapshots:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(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: dependencies:
marked: 15.0.12 marked: 15.0.12
mdast-util-math: 3.0.0 mdast-util-math: 3.0.0
@ -18761,6 +18772,10 @@ snapshots:
'@types/katex@0.16.7': {} '@types/katex@0.16.7': {}
'@types/lodash-es@4.17.12':
dependencies:
'@types/lodash': 4.17.20
'@types/lodash@4.17.20': {} '@types/lodash@4.17.20': {}
'@types/mdast@4.0.4': '@types/mdast@4.0.4':
@ -19207,14 +19222,14 @@ snapshots:
msw: 2.10.4(@types/node@20.19.4)(typescript@5.8.3) 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) 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: dependencies:
'@vitest/spy': 3.2.4 '@vitest/spy': 3.2.4
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.17 magic-string: 0.30.17
optionalDependencies: optionalDependencies:
msw: 2.10.4(@types/node@24.0.10)(typescript@5.8.3) 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': '@vitest/pretty-format@2.0.5':
dependencies: dependencies:
@ -22519,7 +22534,7 @@ snapshots:
jose@5.10.0: {} 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: dependencies:
jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1)
optics-ts: 2.4.1 optics-ts: 2.4.1
@ -26543,7 +26558,7 @@ snapshots:
dependencies: dependencies:
'@types/chai': 5.2.2 '@types/chai': 5.2.2
'@vitest/expect': 3.2.4 '@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/pretty-format': 3.2.4
'@vitest/runner': 3.2.4 '@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4 '@vitest/snapshot': 3.2.4
@ -26950,7 +26965,7 @@ snapshots:
zod@3.25.1: {} 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: dependencies:
immer: 10.1.1 immer: 10.1.1
lodash.mapvalues: 4.6.0 lodash.mapvalues: 4.6.0