Validation
Use Node.js 24+ and the repository’s declared pnpm version when validating a release candidate.
pnpm install --frozen-lockfile
pnpm check
pnpm build
pnpm test
pnpm pack:check
pnpm db:check detects drift between the internal DB development source and shipped CLI templates. pnpm build regenerates DB templates before compiling both packages.
The automated tests cover:
- Core lifecycle ordering, dependency graph validation and reverse cleanup;
- startup/listen failures and graceful HTTP/resource shutdown;
- runtime configuration precedence and validation;
- generated application compilation;
- all five DB templates under strict TypeScript options;
- CLI dry runs, installation isolation, overwrite protection and custom paths;
- env appending idempotency;
- SQLite persistence across reconnects;
- native network-driver failure cleanup;
- Auth register/login/me/logout regression behavior;
- SIGTERM cleanup;
- packed package contents.
Live network database tests
Four network success-path tests are opt-in because they require disposable external services. The SQLite success-path test always uses a real SQLite database.
Copy:
tests/.env.example
to an untracked:
tests/.env
and configure disposable services. Then run:
pnpm build
node --env-file=tests/.env --test tests/database.test.mjs
The live network tests verify real connect, write, read, delete, health and close behavior for MongoDB, PostgreSQL, MySQL and MariaDB. Use credentials that are allowed to create and remove test data.
A skipped opt-in test is not evidence of successful live integration.
0.2.0 release-candidate live validation
The 0.2.0 DB release candidate was additionally validated on 2026-09-20 in a clean consumer project created from packed @exetjs/core@0.2.0 and @exetjs/cli@0.2.0 tarballs.
Validated environment:
Node.js 24.21.0
pnpm 12.4.2
Validated real services:
| Adapter | Service | Result |
|---|---|---|
db-sqlite | better-sqlite3 file DB | PASS |
db-mongo | MongoDB 8 container | PASS |
db-postgres | PostgreSQL 17 container | PASS |
db-mysql | MySQL 8.4 container | PASS |
db-mariadb | MariaDB 11.4 container | PASS |
The clean consumer validation covered:
CLI 0.2.0 from packed tarball
Core 0.2.0 from packed tarball
exet list
exet doctor
TypeScript check
build
module installation
real DB connect/write/read/delete/health/close
SQLite reconnect persistence
all five DB modules registered in one ExetJS application
GET /api/v1/health -> HTTP 200
graceful shutdown with resources released
This validation record supplements the automated suite. It does not replace future CI or provider-version testing.
Package checks
The packed CLI must contain generated templates and their env examples. Neither npm package may contain:
tools/db-core;- authoring descriptors or test fixtures;
- database credentials;
- unrelated native DB drivers as runtime dependencies.
Only the selected module manifest adds its native driver to a generated application.
Clean consumer release trial
Before publication, validate the actual packed artifacts rather than only workspace links:
- pack Core and CLI;
- create a clean temp directory outside the repository;
- install the CLI tarball;
- generate a project without fetching unpublished versions from npm;
- replace Core/CLI registry versions with the packed tarballs;
- run
exet doctor,checkandbuild; - install the target module from the packed CLI;
- configure disposable runtime services;
- start the application and exercise real runtime behavior;
- verify graceful shutdown;
- run the final repository
pnpm release:checkbefore publishing.
The release process should use the package versions and Node baseline declared by the project rather than relying on unrelated system-global tools.