perf: optimize MCP server (O(1) auth, compact JSON, trashedAt fix) + memento-note performance (lazy loading, server-side filtering, XSS fixes, dead code removal, security hardening)
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 1m35s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 1m35s
MCP Server: - Fix validateApiKey: O(1) direct lookup by shortId instead of loading all keys - Add trashedAt:null filter to ALL note queries (trashed notes leaked in results) - Compact JSON output (~40% smaller responses) - Bounded session cache (Map with MAX_SESSIONS=500) to prevent memory leaks - PostgreSQL connection pooling (connection_limit=10) - Rewrite all 22 tool descriptions in clear English - Fix /sse fallback to proper 307 redirect memento-note Performance: - loading=lazy on all note images - Split notebooksRefreshKey from global refreshKey (note CRUD no longer re-fetches notebooks) - Remove searchKey from trash count deps (no re-fetch on every keystroke) - Server-side notebookId filter in getAllNotes() (biggest win) - Skip collaborator fetch for non-shared notes (eliminates N+1 API calls) - next/dynamic for MarkdownContent + 4 modals (code-split remark/rehype/KaTeX) - Memoize DOMPurify sanitize with useMemo Security: - XSS: DOMPurify sanitize in note-card and note-history-modal - Auth anti-enumeration: uniform errors in auth.ts - CRON_SECRET mandatory on cron endpoints - Rate limiting on login (5 attempts/min per email) - Centralized API auth helpers (requireAuth/requireAdmin) - randomize-labels changed GET→POST - Removed debug endpoints (/api/debug/config, /api/debug/test-chat) Cleanup: - Removed dead code: .backup-keep, settings-backup, fix-*.js, debug-theme, fix-labels route - Removed sensitive console.error in auth.ts - Ollama fetchWithTimeout (30s/60s AbortController) - i18n: full Arabic translation, Farsi missing keys - Masonry drag-and-drop fix (localOrderMap, cross-section block) - Sidebar notebook tooltip on truncation
This commit is contained in:
130
mcp-server/node_modules/.prisma/client/wasm.js
generated
vendored
130
mcp-server/node_modules/.prisma/client/wasm.js
generated
vendored
@@ -116,40 +116,26 @@ Prisma.NullTypes = {
|
||||
*/
|
||||
|
||||
exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
|
||||
ReadUncommitted: 'ReadUncommitted',
|
||||
ReadCommitted: 'ReadCommitted',
|
||||
RepeatableRead: 'RepeatableRead',
|
||||
Serializable: 'Serializable'
|
||||
});
|
||||
|
||||
exports.Prisma.NoteScalarFieldEnum = {
|
||||
exports.Prisma.UserScalarFieldEnum = {
|
||||
id: 'id',
|
||||
title: 'title',
|
||||
content: 'content',
|
||||
color: 'color',
|
||||
isPinned: 'isPinned',
|
||||
isArchived: 'isArchived',
|
||||
type: 'type',
|
||||
checkItems: 'checkItems',
|
||||
labels: 'labels',
|
||||
images: 'images',
|
||||
links: 'links',
|
||||
reminder: 'reminder',
|
||||
isReminderDone: 'isReminderDone',
|
||||
reminderRecurrence: 'reminderRecurrence',
|
||||
reminderLocation: 'reminderLocation',
|
||||
isMarkdown: 'isMarkdown',
|
||||
size: 'size',
|
||||
embedding: 'embedding',
|
||||
sharedWith: 'sharedWith',
|
||||
userId: 'userId',
|
||||
order: 'order',
|
||||
notebookId: 'notebookId',
|
||||
name: 'name',
|
||||
email: 'email',
|
||||
emailVerified: 'emailVerified',
|
||||
password: 'password',
|
||||
role: 'role',
|
||||
image: 'image',
|
||||
theme: 'theme',
|
||||
cardSizeMode: 'cardSizeMode',
|
||||
resetToken: 'resetToken',
|
||||
resetTokenExpiry: 'resetTokenExpiry',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt',
|
||||
autoGenerated: 'autoGenerated',
|
||||
aiProvider: 'aiProvider',
|
||||
aiConfidence: 'aiConfidence',
|
||||
language: 'language',
|
||||
languageConfidence: 'languageConfidence',
|
||||
lastAiAnalysis: 'lastAiAnalysis'
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
|
||||
exports.Prisma.NotebookScalarFieldEnum = {
|
||||
@@ -173,17 +159,57 @@ exports.Prisma.LabelScalarFieldEnum = {
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
|
||||
exports.Prisma.UserScalarFieldEnum = {
|
||||
exports.Prisma.NoteScalarFieldEnum = {
|
||||
id: 'id',
|
||||
name: 'name',
|
||||
email: 'email',
|
||||
emailVerified: 'emailVerified',
|
||||
password: 'password',
|
||||
role: 'role',
|
||||
image: 'image',
|
||||
theme: 'theme',
|
||||
resetToken: 'resetToken',
|
||||
resetTokenExpiry: 'resetTokenExpiry',
|
||||
title: 'title',
|
||||
content: 'content',
|
||||
color: 'color',
|
||||
isPinned: 'isPinned',
|
||||
isArchived: 'isArchived',
|
||||
trashedAt: 'trashedAt',
|
||||
type: 'type',
|
||||
dismissedFromRecent: 'dismissedFromRecent',
|
||||
checkItems: 'checkItems',
|
||||
labels: 'labels',
|
||||
images: 'images',
|
||||
links: 'links',
|
||||
reminder: 'reminder',
|
||||
isReminderDone: 'isReminderDone',
|
||||
reminderRecurrence: 'reminderRecurrence',
|
||||
reminderLocation: 'reminderLocation',
|
||||
isMarkdown: 'isMarkdown',
|
||||
size: 'size',
|
||||
sharedWith: 'sharedWith',
|
||||
userId: 'userId',
|
||||
order: 'order',
|
||||
notebookId: 'notebookId',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt',
|
||||
contentUpdatedAt: 'contentUpdatedAt',
|
||||
autoGenerated: 'autoGenerated',
|
||||
aiProvider: 'aiProvider',
|
||||
aiConfidence: 'aiConfidence',
|
||||
language: 'language',
|
||||
languageConfidence: 'languageConfidence',
|
||||
lastAiAnalysis: 'lastAiAnalysis'
|
||||
};
|
||||
|
||||
exports.Prisma.NoteEmbeddingScalarFieldEnum = {
|
||||
id: 'id',
|
||||
noteId: 'noteId',
|
||||
embedding: 'embedding',
|
||||
createdAt: 'createdAt'
|
||||
};
|
||||
|
||||
exports.Prisma.NoteShareScalarFieldEnum = {
|
||||
id: 'id',
|
||||
noteId: 'noteId',
|
||||
userId: 'userId',
|
||||
sharedBy: 'sharedBy',
|
||||
status: 'status',
|
||||
permission: 'permission',
|
||||
notifiedAt: 'notifiedAt',
|
||||
respondedAt: 'respondedAt',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
@@ -218,19 +244,6 @@ exports.Prisma.VerificationTokenScalarFieldEnum = {
|
||||
expires: 'expires'
|
||||
};
|
||||
|
||||
exports.Prisma.NoteShareScalarFieldEnum = {
|
||||
id: 'id',
|
||||
noteId: 'noteId',
|
||||
userId: 'userId',
|
||||
sharedBy: 'sharedBy',
|
||||
status: 'status',
|
||||
permission: 'permission',
|
||||
notifiedAt: 'notifiedAt',
|
||||
respondedAt: 'respondedAt',
|
||||
createdAt: 'createdAt',
|
||||
updatedAt: 'updatedAt'
|
||||
};
|
||||
|
||||
exports.Prisma.SystemConfigScalarFieldEnum = {
|
||||
key: 'key',
|
||||
value: 'value'
|
||||
@@ -273,6 +286,7 @@ exports.Prisma.UserAISettingsScalarFieldEnum = {
|
||||
fontSize: 'fontSize',
|
||||
demoMode: 'demoMode',
|
||||
showRecentNotes: 'showRecentNotes',
|
||||
notesViewMode: 'notesViewMode',
|
||||
emailNotifications: 'emailNotifications',
|
||||
desktopNotifications: 'desktopNotifications',
|
||||
anonymousAnalytics: 'anonymousAnalytics'
|
||||
@@ -283,6 +297,11 @@ exports.Prisma.SortOrder = {
|
||||
desc: 'desc'
|
||||
};
|
||||
|
||||
exports.Prisma.QueryMode = {
|
||||
default: 'default',
|
||||
insensitive: 'insensitive'
|
||||
};
|
||||
|
||||
exports.Prisma.NullsOrder = {
|
||||
first: 'first',
|
||||
last: 'last'
|
||||
@@ -290,14 +309,15 @@ exports.Prisma.NullsOrder = {
|
||||
|
||||
|
||||
exports.Prisma.ModelName = {
|
||||
Note: 'Note',
|
||||
User: 'User',
|
||||
Notebook: 'Notebook',
|
||||
Label: 'Label',
|
||||
User: 'User',
|
||||
Note: 'Note',
|
||||
NoteEmbedding: 'NoteEmbedding',
|
||||
NoteShare: 'NoteShare',
|
||||
Account: 'Account',
|
||||
Session: 'Session',
|
||||
VerificationToken: 'VerificationToken',
|
||||
NoteShare: 'NoteShare',
|
||||
SystemConfig: 'SystemConfig',
|
||||
AiFeedback: 'AiFeedback',
|
||||
MemoryEchoInsight: 'MemoryEchoInsight',
|
||||
|
||||
Reference in New Issue
Block a user