data-peek/package.json

58 lines
2 KiB
JSON
Raw Normal View History

2025-11-26 10:23:53 +00:00
{
"name": "data-peek",
2026-04-02 06:44:15 +00:00
"version": "0.17.0",
2025-11-26 10:23:53 +00:00
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "turbo run dev --filter=@data-peek/desktop",
"dev:web": "turbo run dev --filter=@data-peek/web",
"dev:docs": "turbo run dev --filter=docs",
"dev:video": "turbo run dev --filter=@data-peek/video",
"render:video": "turbo run render --filter=@data-peek/video",
"build": "turbo run build",
"build:desktop": "turbo run build --filter=@data-peek/desktop",
feat: add support for multiple result sets and enhanced storage (#18) * feat: add support for multiple result sets in query editor Implements multiple result sets feature found in TablePlus, DBeaver, and DataGrip. When executing multiple SQL statements separated by semicolons, each statement's results are displayed in separate tabs within the results pane. Changes: - Add StatementResult and MultiStatementResult types to shared package - Update PostgreSQL, MySQL, and MSSQL adapters with queryMultiple() method - Add SQL statement splitter that respects string literals and comments - Update tab store with multiResult support and activeResultIndex - Add result set tabs UI in tab-query-editor when multiple statements present - Each result shows row count, affected rows (for non-SELECT), and timing The UI displays clickable result tabs above the data table when multiple statements are executed. Green indicators show data-returning statements (SELECT), blue for row-affecting statements (INSERT/UPDATE/DELETE). * feat: add DpStorage facade with automatic corruption recovery - Create storage.ts with DpStorage and DpSecureStorage classes - Implement facade pattern for electron-store with auto-recovery - Corrupted JSON files are automatically deleted and recreated - Refactor all stores to use the new facade: - index.ts: connections, saved queries - license-service.ts: license data - window-state.ts: window bounds - ai-service.ts: AI config, chat history 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add auto updated * feat: add build:web and build:docs scripts for Vercel deployments 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: use safeStorage for encryption keys and improve updater UX - Use Electron's safeStorage to derive machine-specific encryption keys for connections and saved queries stores instead of hardcoded values - Fix updater comment/behavior mismatch: now correctly documents that automatic checks download silently while manual checks prompt user - Add proper dialog handling for manual update checks (shows update available, no updates, and error dialogs appropriately) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
2025-12-01 14:01:30 +00:00
"build:web": "turbo run build --filter=@data-peek/web",
"build:docs": "turbo run build --filter=docs",
"lint": "turbo run lint",
"typecheck": "turbo run typecheck types:check",
"postinstall": "pnpm --filter @data-peek/desktop exec electron-builder install-app-deps || true",
"setup": "pnpm install && pnpm setup:electron",
"setup:electron": "pnpm --filter @data-peek/desktop exec electron-builder install-app-deps",
"rebuild": "pnpm rebuild better-sqlite3 && pnpm setup:electron",
"clean": "rm -rf node_modules apps/*/node_modules packages/*/node_modules pnpm-lock.yaml .turbo",
"clean:install": "pnpm clean && pnpm install",
"build:win": "turbo run build:win --filter=@data-peek/desktop",
"build:mac": "turbo run build:mac --filter=@data-peek/desktop",
"build:linux": "turbo run build:linux --filter=@data-peek/desktop",
2025-11-30 13:12:54 +00:00
"release": "bumpp package.json apps/*/package.json packages/*/package.json"
2025-11-26 10:23:53 +00:00
},
"devDependencies": {
feat: add 6 new features — stats, masking, CSV import, data gen, notifications, health monitor (#119) * docs: add design spec for 6 new features Column Statistics, Data Masking, CSV Import, Data Generator, DB Notifications, and Connection Health Monitor. * docs: update spec with review fixes Resolve all 15 review issues: naming conflicts, preload layer, batch insert interface, guard clauses, confirmation dialogs, etc. * docs: add implementation plan for 6 features Fix critical issues from review: adapter connection pattern, preload event subscription pattern, tab interface definitions, ColumnStatsRequest type, and implementation notes. * feat: add column statistics panel (Tasks 1.1-1.8) Implement the Column Statistics feature allowing users to right-click a column header and view min/max/nulls/distinct/histogram in a right sidebar panel. Supports PostgreSQL (full implementation with median + histogram), MySQL (CASE WHEN histogram, no median), and MSSQL (NTILE histogram + PERCENTILE_CONT median). Includes shared types, IPC handler, Zustand store, stats panel UI, and DataTable integration via onColumnStatsClick. * feat: add Data Masking feature (renderer-only) Adds blur-based data masking so users can hide sensitive columns during demos, screenshots, and pair programming. Entirely renderer-only — no IPC or main process changes. - masking-store: Zustand store with manual per-tab masking, auto-mask rules (email/password/ssn/token etc.), hover-to-peek, and persist middleware for rules/settings only (runtime maskedColumns not persisted) - masking-toolbar: dropdown UI for toggling auto-mask, managing rules, adding custom regex patterns, and unmasking all columns for a tab - data-table: accepts optional tabId, shows lock icon on masked headers, adds Mask/Unmask to column dropdown, applies blur(5px) + userSelect:none to masked cells with alt-hover peek support - editable-data-table: same masking UX; masked cells block editing - tab-query-editor: wires tabId into DataTable, renders MaskingToolbar near Export, intercepts exports when masked columns are present and shows an AlertDialog to confirm exporting with [MASKED] values * feat(csv-import): implement CSV import feature (Tasks 3.1-3.5) - Add shared types: CsvColumnMapping, CsvImportOptions, CsvImportRequest, CsvImportProgress, CsvImportResult, BatchInsertOptions, BatchInsertResult - Install papaparse for CSV parsing in renderer - Create batch-insert.ts: parameterized INSERT with per-dialect placeholder syntax (pg: $1/$2, mysql: ?, mssql: @p1/@p2), ON CONFLICT handling, and cancellation support - Add import-handlers.ts IPC handler for db:import-csv and db:import-cancel; progress events pushed via event.sender.send('db:import-progress') - Add import-store.ts Zustand store with 5-step wizard state, type inference for new tables (integer/numeric/timestamp/boolean/text), and auto-mapping - Create csv-import-dialog.tsx Sheet dialog: file drop zone, target selection, column mapping, options (batch size/conflict/truncate/transaction), and progress/result step - Add "Import CSV" to schema explorer table context menu (both virtualized and non-virtualized paths) * feat: add Data Generator feature (Tasks 4.1-4.5) Adds schema-aware fake data generation using @faker-js/faker. Users can open a data-generator tab from the schema explorer context menu on any table, configure per-column generators (faker, random-int/float/bool/date, uuid, auto-increment, fk-reference, fixed, null), preview 5 sample rows, and insert up to 10 000 rows in configurable batches with live progress. - packages/shared: GeneratorType, ColumnGenerator, DataGenConfig, DataGenProgress, DataGenResult types - main: data-generator.ts engine with heuristics + faker dispatch - main: data-gen-handlers.ts IPC for generate, cancel, preview - preload + preload d.ts: generateData, cancelGenerate, generatePreview, onGenerateProgress on window.api.db - stores: DataGeneratorTab type added to tab-store; data-gen-store for per-tab generator state and actions - renderer: data-generator.tsx UI; schema-explorer "Generate Data" menu item; tab-query-editor dispatch for data-generator tab type * feat: add PostgreSQL LISTEN/NOTIFY dashboard (Chunk 5) Implements a full LISTEN/NOTIFY panel for PostgreSQL connections: - Shared types: PgNotificationEvent, PgNotificationChannel, PgNotificationStats - Main process: dedicated pg.Client listener per connection with SSH tunnel support, auto-reconnect with exponential backoff, and SQLite event history (capped at 10k events per connection) - IPC handlers under pg-notify: prefix; cleanup on app quit - Preload: pgNotify namespace exposing subscribe/unsubscribe/send/getChannels/ getHistory/clearHistory/onEvent - Store: usePgNotificationStore with rolling 60s stats and in-memory event cap - Tab type: pg-notifications added to TabType union with deduplication - UI: channel subscription bar, scrollable event log with JSON highlighting, collapsible send panel and stats; PostgreSQL-only guard - Sidebar: Notifications entry visible only for PostgreSQL connections * feat(shared): add health monitor types (Task 6.1) Add ActiveQuery, TableSizeInfo, CacheStats, LockInfo, and DatabaseSizeInfo types to the shared package for IPC contract. * feat(adapters): implement health monitor queries (Task 6.2) Add getActiveQueries, getTableSizes, getCacheStats, getLocks, and killQuery to DatabaseAdapter interface with implementations for PostgreSQL, MySQL, MSSQL, and SQLite stub. * feat(ipc): add health monitor IPC handlers (Task 6.3) Register IPC handlers for db:active-queries, db:table-sizes, db:cache-stats, db:locks, and db:kill-query channels. * feat(preload): expose health monitor API to renderer (Task 6.4) Add health namespace to preload bridge with activeQueries, tableSizes, cacheStats, locks, and killQuery methods plus type declarations. * feat(store): add health monitor Zustand store (Task 6.5) Create useHealthStore with polling, fetch actions for all health metrics, and kill query support. * feat(ui): add health monitor dashboard tab (Task 6.6) Add HealthMonitor component with 4-panel dashboard: active queries with kill support, table sizes with sorting, cache hit ratios with color coding, and lock/blocking detection. Integrate into tab system and sidebar navigation. * chore: apply prettier formatting * fix: resolve empty block statement lint errors * fix: add column stats to editable table and fix masking infinite loop Column statistics dropdown now available in table preview (editable) mode. Fixed MaskingToolbar infinite re-render caused by creating a new empty array reference on every store snapshot. * docs: update README, features, roadmap, and marketing site for 6 new features Add Column Statistics, Data Masking, CSV Import, Data Generator, Connection Health Monitor, and PostgreSQL Notifications to all documentation and the marketing website features grid. * Apply suggestions from code review Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --------- Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-03-18 02:48:55 +00:00
"@types/papaparse": "^5.5.2",
2025-11-30 13:10:00 +00:00
"bumpp": "^10.3.2",
"prettier": "^3.2.0",
"turbo": "^2.6.1",
2025-11-30 13:10:00 +00:00
"typescript": "^5.4.0"
2025-11-26 10:23:53 +00:00
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "pnpm@10.22.0",
"pnpm": {
"onlyBuiltDependencies": [
"@clerk/shared",
"better-sqlite3",
"core-js",
"cpu-features",
"electron",
"esbuild",
"sharp",
"ssh2",
"unrs-resolver"
]
feat: add 6 new features — stats, masking, CSV import, data gen, notifications, health monitor (#119) * docs: add design spec for 6 new features Column Statistics, Data Masking, CSV Import, Data Generator, DB Notifications, and Connection Health Monitor. * docs: update spec with review fixes Resolve all 15 review issues: naming conflicts, preload layer, batch insert interface, guard clauses, confirmation dialogs, etc. * docs: add implementation plan for 6 features Fix critical issues from review: adapter connection pattern, preload event subscription pattern, tab interface definitions, ColumnStatsRequest type, and implementation notes. * feat: add column statistics panel (Tasks 1.1-1.8) Implement the Column Statistics feature allowing users to right-click a column header and view min/max/nulls/distinct/histogram in a right sidebar panel. Supports PostgreSQL (full implementation with median + histogram), MySQL (CASE WHEN histogram, no median), and MSSQL (NTILE histogram + PERCENTILE_CONT median). Includes shared types, IPC handler, Zustand store, stats panel UI, and DataTable integration via onColumnStatsClick. * feat: add Data Masking feature (renderer-only) Adds blur-based data masking so users can hide sensitive columns during demos, screenshots, and pair programming. Entirely renderer-only — no IPC or main process changes. - masking-store: Zustand store with manual per-tab masking, auto-mask rules (email/password/ssn/token etc.), hover-to-peek, and persist middleware for rules/settings only (runtime maskedColumns not persisted) - masking-toolbar: dropdown UI for toggling auto-mask, managing rules, adding custom regex patterns, and unmasking all columns for a tab - data-table: accepts optional tabId, shows lock icon on masked headers, adds Mask/Unmask to column dropdown, applies blur(5px) + userSelect:none to masked cells with alt-hover peek support - editable-data-table: same masking UX; masked cells block editing - tab-query-editor: wires tabId into DataTable, renders MaskingToolbar near Export, intercepts exports when masked columns are present and shows an AlertDialog to confirm exporting with [MASKED] values * feat(csv-import): implement CSV import feature (Tasks 3.1-3.5) - Add shared types: CsvColumnMapping, CsvImportOptions, CsvImportRequest, CsvImportProgress, CsvImportResult, BatchInsertOptions, BatchInsertResult - Install papaparse for CSV parsing in renderer - Create batch-insert.ts: parameterized INSERT with per-dialect placeholder syntax (pg: $1/$2, mysql: ?, mssql: @p1/@p2), ON CONFLICT handling, and cancellation support - Add import-handlers.ts IPC handler for db:import-csv and db:import-cancel; progress events pushed via event.sender.send('db:import-progress') - Add import-store.ts Zustand store with 5-step wizard state, type inference for new tables (integer/numeric/timestamp/boolean/text), and auto-mapping - Create csv-import-dialog.tsx Sheet dialog: file drop zone, target selection, column mapping, options (batch size/conflict/truncate/transaction), and progress/result step - Add "Import CSV" to schema explorer table context menu (both virtualized and non-virtualized paths) * feat: add Data Generator feature (Tasks 4.1-4.5) Adds schema-aware fake data generation using @faker-js/faker. Users can open a data-generator tab from the schema explorer context menu on any table, configure per-column generators (faker, random-int/float/bool/date, uuid, auto-increment, fk-reference, fixed, null), preview 5 sample rows, and insert up to 10 000 rows in configurable batches with live progress. - packages/shared: GeneratorType, ColumnGenerator, DataGenConfig, DataGenProgress, DataGenResult types - main: data-generator.ts engine with heuristics + faker dispatch - main: data-gen-handlers.ts IPC for generate, cancel, preview - preload + preload d.ts: generateData, cancelGenerate, generatePreview, onGenerateProgress on window.api.db - stores: DataGeneratorTab type added to tab-store; data-gen-store for per-tab generator state and actions - renderer: data-generator.tsx UI; schema-explorer "Generate Data" menu item; tab-query-editor dispatch for data-generator tab type * feat: add PostgreSQL LISTEN/NOTIFY dashboard (Chunk 5) Implements a full LISTEN/NOTIFY panel for PostgreSQL connections: - Shared types: PgNotificationEvent, PgNotificationChannel, PgNotificationStats - Main process: dedicated pg.Client listener per connection with SSH tunnel support, auto-reconnect with exponential backoff, and SQLite event history (capped at 10k events per connection) - IPC handlers under pg-notify: prefix; cleanup on app quit - Preload: pgNotify namespace exposing subscribe/unsubscribe/send/getChannels/ getHistory/clearHistory/onEvent - Store: usePgNotificationStore with rolling 60s stats and in-memory event cap - Tab type: pg-notifications added to TabType union with deduplication - UI: channel subscription bar, scrollable event log with JSON highlighting, collapsible send panel and stats; PostgreSQL-only guard - Sidebar: Notifications entry visible only for PostgreSQL connections * feat(shared): add health monitor types (Task 6.1) Add ActiveQuery, TableSizeInfo, CacheStats, LockInfo, and DatabaseSizeInfo types to the shared package for IPC contract. * feat(adapters): implement health monitor queries (Task 6.2) Add getActiveQueries, getTableSizes, getCacheStats, getLocks, and killQuery to DatabaseAdapter interface with implementations for PostgreSQL, MySQL, MSSQL, and SQLite stub. * feat(ipc): add health monitor IPC handlers (Task 6.3) Register IPC handlers for db:active-queries, db:table-sizes, db:cache-stats, db:locks, and db:kill-query channels. * feat(preload): expose health monitor API to renderer (Task 6.4) Add health namespace to preload bridge with activeQueries, tableSizes, cacheStats, locks, and killQuery methods plus type declarations. * feat(store): add health monitor Zustand store (Task 6.5) Create useHealthStore with polling, fetch actions for all health metrics, and kill query support. * feat(ui): add health monitor dashboard tab (Task 6.6) Add HealthMonitor component with 4-panel dashboard: active queries with kill support, table sizes with sorting, cache hit ratios with color coding, and lock/blocking detection. Integrate into tab system and sidebar navigation. * chore: apply prettier formatting * fix: resolve empty block statement lint errors * fix: add column stats to editable table and fix masking infinite loop Column statistics dropdown now available in table preview (editable) mode. Fixed MaskingToolbar infinite re-render caused by creating a new empty array reference on every store snapshot. * docs: update README, features, roadmap, and marketing site for 6 new features Add Column Statistics, Data Masking, CSV Import, Data Generator, Connection Health Monitor, and PostgreSQL Notifications to all documentation and the marketing website features grid. * Apply suggestions from code review Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --------- Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com>
2026-03-18 02:48:55 +00:00
},
"dependencies": {
"papaparse": "^5.5.3"
}
2025-11-26 10:23:53 +00:00
}