feat: roadmap completion — core type safety, test coverage, benchmarks#380
feat: roadmap completion — core type safety, test coverage, benchmarks#380
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…rc/index.test.ts Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…/Create/VSCode - Add KernelBridge interface to replace `as any` casts in app.ts - Type repository.ts CRUD methods with proper Record<string, unknown> types - Add 65-test SDK test suite (RemoteDriver, DataApiClient, MetadataApiClient) - Add 37-test CLI test suite (command registration, options, utilities) - Add 32-test Create tool test suite (templates, scaffolding) - Add 20-test VSCode extension test suite (manifest, commands, providers) - Exclude test files from build tsconfigs - Fix repository.test.ts to match null return (IObjectRepository contract) Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
…ark suite - Mark Q2 Protocol Maturity (GraphQL/OData/JSON-RPC) as completed - Mark Q2 Multi-Tenancy as completed - Mark Q3 Edge Runtime & Offline Sync as completed - Update Protocol Compliance from ⏳ to ✅ (95%+) - Update test coverage status (4 packages added) - Add driver-perf.ts benchmark suite (Phase 7C) - Add bench:driver script to package.json Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR advances ObjectQL's roadmap by implementing type safety improvements, comprehensive test coverage for tool packages, and driver performance benchmarks. It marks Q2 (Protocol Maturity & Multi-Tenancy) and Q3 (Edge & Offline Sync) as completed based on previously implemented features.
Changes:
- Introduced
KernelBridgeinterface to eliminate 67+as anycasts in@objectql/core(99 → 28 any instances) - Added comprehensive test suites: SDK (65 tests), CLI (37 tests), Create (32 tests), VSCode (20 tests)
- Created driver performance benchmark suite with 8 benchmarks
- Updated ROADMAP.md to reflect completion of Q2/Q3 milestones and Phase 1B/2 progress
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
packages/foundation/core/src/app.ts |
Added KernelBridge interface for typed kernel property access, eliminating as-any casts |
packages/foundation/core/src/repository.ts |
Replaced any types with Record<string, unknown> in all CRUD method signatures |
packages/foundation/core/test/repository.test.ts |
Fixed expectation to use null instead of undefined for findOne |
packages/drivers/sdk/src/index.test.ts |
New: 65 tests covering RemoteDriver, DataApiClient, MetadataApiClient |
packages/tools/cli/src/index.test.ts |
New: 37 tests covering command registration, options, config resolution |
packages/tools/create/src/bin.test.ts |
New: 32 tests covering templates, package.json transformation, CLI setup |
packages/tools/vscode-objectql/src/extension.test.ts |
New: 20 tests covering extension manifest, commands, providers |
scripts/benchmarks/driver-perf.ts |
New: Driver performance benchmarks with 8 test scenarios |
packages/drivers/sdk/tsconfig.json |
Added test file exclusion pattern |
packages/tools/cli/tsconfig.json |
Added test file exclusion pattern |
packages/tools/create/tsconfig.json |
Added test file exclusion pattern |
packages/tools/vscode-objectql/tsconfig.json |
Added test file exclusion pattern |
package.json |
Added bench:driver npm script |
ROADMAP.md |
Updated to mark Q2/Q3 as completed, updated Phase 1B/2 progress tables |
| * Run: npx tsx scripts/benchmarks/driver-perf.ts | ||
| */ | ||
|
|
||
| import { MemoryDriver } from '../../packages/drivers/memory/src'; |
There was a problem hiding this comment.
The benchmark uses a relative path import '../../packages/drivers/memory/src' instead of the package name '@objectql/memory'. This creates tight coupling and breaks if the benchmark is moved or if the internal structure changes. Consider using the published package import instead.
| import { MemoryDriver } from '../../packages/drivers/memory/src'; | |
| import { MemoryDriver } from '@objectql/memory'; |
Advances multiple cross-cutting roadmap phases and marks Q2/Q3 milestones as completed (already implemented).
Core Type Safety (Phase 1B)
Introduced
KernelBridgeinterface inapp.tsto replace 67+as anycasts with typed access to dynamically-assigned kernel properties:@objectql/coreanycount: 99 → 28repository.tstyped all CRUD signatures withRecord<string, unknown>instead ofanyfindOnenow correctly returnsnull(matchingIObjectRepositorycontract)Test Coverage (Phase 2)
Added test suites for 4 previously untested packages:
@objectql/sdk@objectql/cli@objectql/createvscode-objectqlAdded
"exclude": ["src/**/*.test.ts"]to affectedtsconfig.jsonfiles.Driver Benchmarks (Phase 7C)
New
scripts/benchmarks/driver-perf.tswith 8 benchmarks (insert, find, findOne, count, update, delete). Run viapnpm bench:driver.ROADMAP Updates
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
fastdl.mongodb.org/home/REDACTED/work/_temp/ghcca-node/node/bin/node node /home/REDACTED/work/objectql/objectql/node_modules/.bin/../vitest/vitest.mjs run node k/_t��(dns block)/home/REDACTED/work/_temp/ghcca-node/node/bin/node node /home/REDACTED/work/objectql/objectql/node_modules/.bin/../vitest/vitest.mjs run sh _mod�� tsc git tql/node_modules/.bin/node --name-only HEAD de/node/bin/pnpmrun node tql/�� h de/node/bin/pnpm--no-renames(dns block)/home/REDACTED/work/_temp/ghcca-node/node/bin/node node /home/REDACTED/work/objectql/objectql/node_modules/.bin/../vitest/vitest.mjs run sh(dns block)fonts.googleapis.com/opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/objectql/objectql/node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/jest-worker/processChild.js(dns block)/opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/objectql/objectql/node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/jest-worker/processChild.js odules/npm/node_tsc sh tql/�� xclude='dist' --exclude='__tests__' ../../../examples/quickstart/hello-world templates/ && rsync -av --exclude='node_modules' --exclude='dist' --exclude='__tests__' ../../../e which de/node/bin/ps al id" | sort |unode t.ts /usr/bin/grep sh -c tsc grep p/bin/sh ef891ec64eb540bfsh ep/bin/linux-x64-c /usr/bin/mktemp uname(dns block)/opt/hostedtoolcache/node/24.13.0/x64/bin/node /opt/hostedtoolcache/node/24.13.0/x64/bin/node /home/REDACTED/work/objectql/objectql/node_modules/.pnpm/next@16.1.6_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/next/dist/compiled/jest-worker/processChild.js /usr/bin/sh sh -c vitest run sh /home/REDACTED/work/objectql/objectql/node_modules/.bin/node o | grep "physic/usr/bin/git sh che/node/corepac-r node /hom�� run /usr/bin/git /usr/bin/sort --untracked-file/home/REDACTED/work/_temp/ghcca-node/node/bin/pnpm --no-renames dules/.bin/node sort(dns block)If you need me to access, download, or install something from one of these locations, you can either:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.