Releases: SylphxAI/spectra
Releases · SylphxAI/spectra
v2.0.0 - Spectra
Spectra 2.0.0
Major refactor from SotiSchema to Spectra with new architecture.
Breaking Changes
- Package renamed:
soti_schema→spectra - Main annotation:
@SotiSchema()→@Spectra() - Output marker:
@jsonSchema→@spectraOutput - Builder:
soti_schema|soti_schema→spectra|spectra
New Features
Multi-format Output
- JSON Schema (Draft-07, 2019-09, 2020-12)
- OpenAPI (3.0, 3.1)
- Protocol Buffers (proto3)
Comprehensive Constraints
- String: minLength, maxLength, pattern, format (14 formats)
- Number: minimum, maximum, exclusiveMin/Max, multipleOf
- Array: minItems, maxItems, uniqueItems
Union Types
- Full support for Freezed sealed classes
- Generates
oneOfwith discriminator
Rich Annotations
@Spectra(title: 'User', formats: {SpectraFormat.jsonSchema})
class User {
@Field(minLength: 1, format: StringFormat.email)
final String email;
@Ignore()
final String internal;
}Bug Fixes
- Fixed
$refstring interpolation (was outputting literal$typeName) - Fixed enum handling (was never being called)
- Fixed nullable type support
Architecture
New modular design: Extractor → TypeSpec IR → Emitter
lib/src/
├── annotations/ # @Spectra, @Field, @Ignore
├── spec/ # TypeSpec IR (sealed classes)
├── extractors/ # Freezed, JsonSerializable, PlainDart
├── emitters/ # JsonSchema, OpenAPI, Protobuf
└── generator/ # SpectraGenerator
Test Coverage
- 94.2% coverage (175 tests)
- emitter.dart: 100%
- string_utils.dart: 100%
- json_schema_emitter.dart: 98.3%
Migration
See MIGRATION.md for upgrade guide.