Skip to content

v0.7.7

Choose a tag to compare

@github-actions github-actions released this 22 Sep 08:49
· 39 commits to main since this release

ExisJS Release v0.7.7

Release Date: 2026-09-22
Type: Features, Architecture Modularization & Documentation
Affected Packages: exisjs, create-exisjs


Highlights

  • Native Swagger & OpenAPI 3.1 Documentation Engine (exisjs/swagger): Zero-bloat, auto-generated OpenAPI 3.1 specifications served at /docs/json with embedded interactive documentation UIs (Swagger UI 5.x and Scalar API Reference) at /docs.
  • Dual-Paradigm API Documentation Support:
    • Functional Routes: Direct annotations (summary, description, tags, responses, operationId, deprecated, security) inside route.get('/...', { ... }) with automatic TexEngine and tex.pagination() schema reflection.
    • Class-Based OOP Controllers: Dedicated OpenAPI decorators (@ApiTags, @ApiOperation, @ApiResponse, @ApiBearerAuth, @ApiSecurity, @ApiExclude, @ApiProperty).
    • Cascading Boundaries: Automatic inheritance of documentation tags and security schemes from boundary.ts.
  • Architectural Subsystem Modularization: Decomposed large files across the framework into focused sub-packages adhering to clean industry standards (~300 lines sweet spot):
    • src/router/route-scanner.ts (1,803 lines) modularized into src/router/scanner/ (fs-scanner.ts, boundary-loader.ts, functional-compiler.ts, cron-mounter.ts, error-mounter.ts).
    • src/validator/tex.ts (1,164 lines) modularized into src/validator/ (types.ts, error.ts, pagination.ts, builder.ts, engine.ts, tex.ts).
    • src/server/ Request & Response helpers extracted to src/server/helpers/ (ip.ts, body-parser.ts, cookie.ts, etag.ts, stream.ts).
  • Comprehensive TSDoc & IDE Hover Intelligence: Rich, copy-pasteable JSDoc/TSDoc hover documentation across all public APIs (route.*, controller, defineBoundary, tex.*, res.*, req.*, cron.*, @Controller, @Get, etc.) using the canonical ExisJS pattern.
  • Dev Server Watcher & Hot-Reload Hardening:
    • Eliminated false-positive Process crashed with code 1 messages by distinguishing intentional reload kills from crashes.
    • Updated dev watcher to ignore tests/, __tests__/, and *.test.ts / *.spec.ts from triggering server restarts.
    • Hardened /docs/json endpoint to send raw JSON, bypassing response interceptors and envelope wrappers.
  • Cron Subsystem Resilience: Restored multi-signature overloads for app.cron.schedule(), app.cron.interval(), app.cron.timeout(), app.cron.has(), and CronJob.resume().

Key Improvements

1. Native Swagger & OpenAPI 3.1 Subsystem (exisjs/swagger)

ExisJS now features a first-class OpenAPI 3.1 documentation engine:

  • Interactive UI Engines: Choose between standard Swagger UI (ui: 'swagger-ui') and modern Scalar API Reference (ui: 'scalar').
  • Automatic Schema Reflection: Converts TexEngine, TexType, and Zod schemas into compliant OpenAPI 3.1 JSON Schemas.
  • Global Configuration: Configurable in exis.config.ts via docs: { enabled: true, path: '/docs', ... } (with swagger as alias).
  • Public Exports: Direct access to swagger(), defineSwagger(), generateOpenApiSpec(), renderDocumentationHtml(), and OpenAPI decorators.

2. Subsystem Modularization

Large source files were systematically refactored into cohesive, maintainable modules without touching server/app.ts:

  • Router Scanner: Separated directory traversal, boundary inheritance, functional route compilation, cron mounting, and error handler mounting into dedicated scanner sub-modules.
  • Tex Validator: Separated schema builder, validation engine, pagination helpers, error formatting, and type definitions.
  • HTTP Server: Extracted standalone helpers for IP parsing, cookie serialization, ETag computation, and stream lifecycle management.

3. Developer Tooling & Hot-Reload Hardening

  • Hardened process restart lifecycle in exis dev to prevent false crash reports during intentional process termination on Windows and Unix.
  • Scoped file watcher ignore rules to isolate test suites and prevent dev server reloads while editing test files.
  • Ensured OpenAPI spec endpoints remain unmutated by global response interceptors (app.use(intercept(...))).

4. Official Documentation & Navigation

  • Added complete Swagger & OpenAPI guide (docs/content/swagger.mdx) and API Reference (docs/reference/swagger.mdx).
  • Integrated navigation links in the documentation sidebar (web/components/docs/sidebar.tsx).

Full Changelog: v0.7.6...v0.7.7