@centralping/ergo-router
Version [0.3.0]
Added
-
paginatepipeline config key. Declarative route configs accept apaginatekey that wires ergo’spaginate()middleware into Stage 1 (Negotiation), after URL parsing. Automatically includes URL parsing when active (regardless of HTTP method). When enabled,send()receivespaginate: truefor automatic Link header andX-Total-Countgeneration. Supports offset-based (paginate: true) and cursor-based (paginate: {strategy: 'cursor'}) pagination strategies via ergo’s pagination primitives. (#71) -
presets.jsonApiconvenience export. A deeply frozenRouterOptionsobject that enables transport-level request ID and security headers, and restricts content negotiation toapplication/json. Consumers spread it intocreateRouter()for one-liner JSON API configuration. Excludes deployment-specific concerns (auth, CORS origin, rate limiting). Available viaimport {presets} from '@centralping/ergo-router'. (#70) -
Typed
RouteConfigwith generic accumulator. Hand-written TypeScript declaration overrides (types-override/) provide precise type information for declarative route configuration. Each middleware key is typed with its specific ergo option interface (e.g.,AcceptsOptions,BodyOptions) instead of genericobject | boolean. Theexecutecallback’s domain accumulator accepts a generic type parameterRouteConfig<A>(defaults toRecord<string, unknown>), enabling consumers to annotate their accumulator shape for type-safe property access.RouterOptions,TransportOptions,GracefulOptions, and theRouterinstance are also fully typed. Adopts thetypes-overridepattern established in@centralping/ergo. (#68)
Changed
- Config value type validation at registration time. Declarative route config values,
createRouter()options, andoptions.defaultsare now validated for correct types at registration time. Invalid values (e.g.,timeout: 'five seconds',rateLimit: 42,validate: [1,2,3]) throw immediately with descriptive error messages instead of causing cryptic runtime errors at request time. Pipeline middleware keys acceptboolean | object; route option keys enforce their specific types (send: object,noSend: boolean,catchHandler: function); router option keys enforce per-key types. Value type errors always throw regardless ofstrictsetting. (#69) - Bumped
@centralping/ergopeer dependency range to>=0.3.0 <0.4.0(was>=0.2.0 <0.3.0). Floor bumped to 0.3.0 forpaginatemiddleware factory import. (#71)