@lyku/lockstep-handles-ts
v1.8.0
Published
Generate typed handler factories from TsonHandlerModel API definitions
Maintainers
Readme
@lyku/lockstep-handles-ts
Generate typed handler factories from TsonHandlerModel API definitions. Part of the lockstep schema toolkit.
What it does
Takes your API endpoint models and generates:
- Handler factories (
handleCreateUser,handleGetPost, etc.) — typed wrappers that enforce request/response types - Runtime validators — built from the schema, embedded in each handler
- TypeScript declarations —
.d.tsfiles with full context types (auth, WebSocket, HTTP)
Usage
import { generateHandles } from '@lyku/lockstep-handles-ts';
import * as models from '@myapp/api-models';
await generateHandles({
models,
outputDir: 'dist/libs/handles/src',
modelsPackage: '@myapp/api-models',
typesPackage: '@myapp/api-types',
typesName: 'MyApiTypes',
});Options
| Option | Type | Default | Description |
| ---------------- | --------- | -------------------------------- | -------------------------------------------------- |
| models | Record | required | Endpoint name to model map (non-handlers filtered) |
| outputDir | string | required | Where to write generated files |
| modelsPackage | string | required | Import path for API model definitions |
| typesPackage | string | required | Import path for generated request/response types |
| contextPackage | string | '@lyku/lockstep-core/contexts' | Import path for handler context types |
| typesName | string | 'ApiTypes' | Name of the aggregate types map |
| clean | boolean | true | Clean output directory before generating |
Generated output
For an endpoint createUser:
outputDir/
createUser.js # Handler factory with embedded validator
createUser.d.ts # TypeScript declaration
index.js # Re-exports all handlers
index.d.ts # Re-exports all typesThe generated handler factory:
import { handleCreateUser } from '@myapp/handles';
export const createUser = handleCreateUser(async (request, context) => {
// request is typed as CreateUserRequest
// context includes auth, session, etc.
return { id: newUser.id };
});Where it fits
Requirements
Peer dependency on @lyku/lockstep-core (provides buildValidator, stringifyBON, formatCode, and filterHandlerModels).
