Files
mr.koi 454e6c51d7 Release 0.2.0
Complete OpenAPI 3.0/3.1 generation, diagnostics, lifecycle safety, enum and naming mappings, bilingual documentation, examples, and pub.dev release validation.
2026-07-31 16:47:39 +08:00

5.6 KiB

Comparison with mature open-source generators

Internal research reviewed on 2026-07-31 against official documentation:

This document is a planning comparison, not a public compatibility promise. See Compatibility for verified behavior.

Positioning

Dimension Mature community tools koi_swagger_parser
Output scope Many client languages, server stubs, and documentation Dart/Flutter code inside an existing Retrofit + Freezed project
Specification parsing Mature OpenAPI models/validation and large corpora Purpose-built loader/parser/IR for a documented OpenAPI 3.0/3.1 subset
Extension model Templates, custom generators, language backends, plugins Separated preset/IR/renderer, but no stable external renderer interface
Naming/type reuse Model/property/parameter/operation/type/import mappings Comparable mapping categories with early collision checks
HTTP runtime Kiota request adapter, authentication, and middleware abstractions Dio/Retrofit, with generated adapters for supported wire styles
Authentication Generated schemes or provider abstractions Server/security metadata; credentials supplied by host Dio code
Model state Optional backing stores and explicit presence tracking Immutable Freezed models; absent/null validation without dirty tracking
Deliverable Can scaffold a standalone SDK package Generates APIs/models into an existing package
Lifecycle Established CLI/plugin/build-system integrations Local manifest, locking, hashes, safe stale cleanup, and build_runner

Current differentiators

The official OpenAPI Generator dart-dio feature table marks multi-server, parameterized-server, and parameter-styling support as unavailable. Within its documented subset, koi_swagger_parser implements root/path/operation server variables and path/query/header/cookie style/explode handling, using a typed adapter when Retrofit annotations cannot express the wire format.

Other project-specific strengths include:

  • OpenAPI 3.1 nullable versus required/absent behavior for json_serializable;
  • root properties plus additionalProperties round trips;
  • directional read-only/write-only models;
  • discriminator and structural union matching;
  • external generic Koi response envelopes;
  • multiple enum vendor extensions plus configuration precedence;
  • hash-protected cleanup limited to generator-owned files;
  • generated-package build_runner/analyze/test verification.

These are useful differentiators for Koi-style Dart clients; they do not imply broader specification coverage than mature general-purpose generators.

Gaps compared with mature ecosystems

Specification and JSON Schema breadth

The implementation is not a complete JSON Schema 2020-12 validator. Broader third-party document coverage would require selected $defs/JSON Pointer cases, conditional and unevaluated schemas, richer constraint interaction, larger official/community corpora, fuzz/property tests, and resource/performance benchmarks.

Renderer and template extensibility

OpenAPI Generator and Swagger Codegen allow template replacement and custom language generators. A comparable extension boundary would require a versioned IR contract, renderer interface, template overrides, alternative Dart stacks, layout/header hooks, and generator compatibility checks.

Runtime abstraction

Kiota separates requests, serialization, authentication, and transport. A future Dio-oriented optional runtime layer could provide typed authentication providers, retry/telemetry hooks, error mapping, pagination/long-running operation helpers, download progress, and presence tracking for PATCH.

Standalone SDK delivery

Generating a publishable SDK rather than files inside an application would also require package scaffolding, dependency-version policy, generated documentation/examples, semantic breaking-change reports, runtime/generator version pinning, and reproducible release archives.

Explicitly deferred scope

  • Swagger/OpenAPI 2.0.
  • Callbacks, webhooks, and Link Object execution.
  • XML, Protobuf, and arbitrary codecs.
  • Complete OAuth login and mutual-TLS runtime flows.
  • Server stubs and mock servers.
  • Non-Dart code generation.

These do not block the current Koi/FastAPI client goal, but encountering them must produce documented diagnostics rather than plausible-looking output.

Suggested priority

  1. Expand fixture/fuzz coverage and add large-document performance benchmarks.
  2. Version the IR and define a renderer/template extension boundary.
  3. Add semantic diff and CI-check modes.
  4. Add optional authentication/error/middleware hooks.
  5. Add PATCH presence and dirty tracking if demanded by consumer APIs.
  6. Expand the JSON Schema subset only for concrete production fixtures.
  7. Add Swagger 2, XML, or callbacks only when a confirmed consumer requires them.

This order preserves the focused Dart/Koi value while adopting engineering features with demonstrated reuse value.