ts-typed-api 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hono-only.d.ts +1 -1
- package/dist/hono-only.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/object-handlers.d.ts +1 -0
- package/dist/object-handlers.js +5 -0
- package/examples/hono-cloudflare-worker-example.ts +3 -3
- package/examples/simple/server.ts +3 -3
- package/package.json +1 -1
- package/src/hono-cloudflare-workers.ts +4 -2
- package/src/hono-only.ts +1 -1
- package/src/index.ts +1 -1
- package/src/object-handlers.ts +14 -0
package/dist/hono-only.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { CreateApiDefinition, CreateResponses } from './definition';
|
|
2
2
|
export { z as ZodSchema } from 'zod';
|
|
3
|
-
export { EndpointMiddleware, EndpointMiddlewareCtx } from './object-handlers';
|
|
3
|
+
export { EndpointMiddleware, EndpointMiddlewareCtx, createTypedHandler } from './object-handlers';
|
|
4
4
|
export { RegisterHonoHandlers, CreateTypedHonoHandlerWithContext } from './hono-cloudflare-workers';
|
|
5
5
|
export type { ApiDefinitionSchema, RouteSchema, UnifiedError, FileUploadConfig, HttpSuccessStatusCode, HttpClientErrorStatusCode, HttpServerErrorStatusCode, AllowedInputStatusCode, AllowedResponseStatusCode } from './definition';
|
|
6
6
|
export type { HonoFile, HonoFileType, HonoTypedContext } from './hono-cloudflare-workers';
|
package/dist/hono-only.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateTypedHonoHandlerWithContext = exports.RegisterHonoHandlers = exports.ZodSchema = exports.CreateResponses = exports.CreateApiDefinition = void 0;
|
|
3
|
+
exports.CreateTypedHonoHandlerWithContext = exports.RegisterHonoHandlers = exports.createTypedHandler = exports.ZodSchema = exports.CreateResponses = exports.CreateApiDefinition = void 0;
|
|
4
4
|
// Hono-only exports - for Cloudflare Workers and other Hono environments
|
|
5
5
|
// Excludes Express dependencies like multer, busboy, etc.
|
|
6
6
|
var definition_1 = require("./definition");
|
|
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "CreateApiDefinition", { enumerable: true, get: f
|
|
|
8
8
|
Object.defineProperty(exports, "CreateResponses", { enumerable: true, get: function () { return definition_1.CreateResponses; } });
|
|
9
9
|
var zod_1 = require("zod");
|
|
10
10
|
Object.defineProperty(exports, "ZodSchema", { enumerable: true, get: function () { return zod_1.z; } });
|
|
11
|
+
var object_handlers_1 = require("./object-handlers");
|
|
12
|
+
Object.defineProperty(exports, "createTypedHandler", { enumerable: true, get: function () { return object_handlers_1.createTypedHandler; } });
|
|
11
13
|
// Hono adapter for Cloudflare Workers
|
|
12
14
|
var hono_cloudflare_workers_1 = require("./hono-cloudflare-workers");
|
|
13
15
|
Object.defineProperty(exports, "RegisterHonoHandlers", { enumerable: true, get: function () { return hono_cloudflare_workers_1.RegisterHonoHandlers; } });
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { ApiClient, FetchHttpClientAdapter } from './client';
|
|
|
2
2
|
export { generateOpenApiSpec } from './openapi';
|
|
3
3
|
export { generateOpenApiSpec as generateOpenApiSpec2 } from './openapi-self';
|
|
4
4
|
export { CreateApiDefinition, CreateResponses, ApiDefinitionSchema } from './definition';
|
|
5
|
-
export { RegisterHandlers, EndpointMiddleware, UniversalEndpointMiddleware, SimpleMiddleware, EndpointInfo } from './object-handlers';
|
|
5
|
+
export { RegisterHandlers, EndpointMiddleware, UniversalEndpointMiddleware, SimpleMiddleware, EndpointInfo, createTypedHandler } from './object-handlers';
|
|
6
6
|
export { File as UploadedFile } from './router';
|
|
7
7
|
export { z as ZodSchema } from 'zod';
|
|
8
8
|
export { RegisterHonoHandlers, registerHonoRouteHandlers, HonoFile, HonoFileType, honoFileSchema, HonoTypedContext, CreateTypedHonoHandlerWithContext } from './hono-cloudflare-workers';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CreateTypedHonoHandlerWithContext = exports.honoFileSchema = exports.registerHonoRouteHandlers = exports.RegisterHonoHandlers = exports.ZodSchema = exports.RegisterHandlers = exports.CreateResponses = exports.CreateApiDefinition = exports.generateOpenApiSpec2 = exports.generateOpenApiSpec = exports.FetchHttpClientAdapter = exports.ApiClient = void 0;
|
|
3
|
+
exports.CreateTypedHonoHandlerWithContext = exports.honoFileSchema = exports.registerHonoRouteHandlers = exports.RegisterHonoHandlers = exports.ZodSchema = exports.createTypedHandler = exports.RegisterHandlers = exports.CreateResponses = exports.CreateApiDefinition = exports.generateOpenApiSpec2 = exports.generateOpenApiSpec = exports.FetchHttpClientAdapter = exports.ApiClient = void 0;
|
|
4
4
|
var client_1 = require("./client");
|
|
5
5
|
Object.defineProperty(exports, "ApiClient", { enumerable: true, get: function () { return client_1.ApiClient; } });
|
|
6
6
|
Object.defineProperty(exports, "FetchHttpClientAdapter", { enumerable: true, get: function () { return client_1.FetchHttpClientAdapter; } });
|
|
@@ -13,6 +13,7 @@ Object.defineProperty(exports, "CreateApiDefinition", { enumerable: true, get: f
|
|
|
13
13
|
Object.defineProperty(exports, "CreateResponses", { enumerable: true, get: function () { return definition_1.CreateResponses; } });
|
|
14
14
|
var object_handlers_1 = require("./object-handlers");
|
|
15
15
|
Object.defineProperty(exports, "RegisterHandlers", { enumerable: true, get: function () { return object_handlers_1.RegisterHandlers; } });
|
|
16
|
+
Object.defineProperty(exports, "createTypedHandler", { enumerable: true, get: function () { return object_handlers_1.createTypedHandler; } });
|
|
16
17
|
var zod_1 = require("zod");
|
|
17
18
|
Object.defineProperty(exports, "ZodSchema", { enumerable: true, get: function () { return zod_1.z; } });
|
|
18
19
|
// Hono adapter for Cloudflare Workers
|
|
@@ -24,5 +24,6 @@ export type ObjectHandlers<TDef extends ApiDefinitionSchema, Ctx extends Record<
|
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
26
|
export declare function RegisterHandlers<TDef extends ApiDefinitionSchema, Ctx extends Record<string, any> = Record<string, any>>(app: express.Express, apiDefinition: TDef, objectHandlers: ObjectHandlers<TDef, Ctx>, middlewares?: AnyMiddleware<TDef>[]): void;
|
|
27
|
+
export declare function createTypedHandler<TDef extends ApiDefinitionSchema, TDomain extends keyof TDef['endpoints'], TRouteKey extends keyof TDef['endpoints'][TDomain]>(handler: (req: TypedRequest<TDef, TDomain, TRouteKey>, res: TypedResponse<TDef, TDomain, TRouteKey>) => Promise<void> | void): (req: TypedRequest<TDef, TDomain, TRouteKey>, res: TypedResponse<TDef, TDomain, TRouteKey>) => Promise<void> | void;
|
|
27
28
|
export declare function makeObjectHandlerRegistrar<TDef extends ApiDefinitionSchema>(apiDefinition: TDef): (app: express.Express, objectHandlers: ObjectHandlers<TDef>, middlewares?: EndpointMiddleware<TDef>[]) => void;
|
|
28
29
|
export {};
|
package/dist/object-handlers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RegisterHandlers = RegisterHandlers;
|
|
4
|
+
exports.createTypedHandler = createTypedHandler;
|
|
4
5
|
exports.makeObjectHandlerRegistrar = makeObjectHandlerRegistrar;
|
|
5
6
|
const handler_1 = require("./handler");
|
|
6
7
|
// Transform object-based handlers to array format
|
|
@@ -45,6 +46,10 @@ function RegisterHandlers(app, apiDefinition, objectHandlers, middlewares) {
|
|
|
45
46
|
}) || [];
|
|
46
47
|
(0, handler_1.registerRouteHandlers)(app, apiDefinition, handlerArray, endpointMiddlewares);
|
|
47
48
|
}
|
|
49
|
+
// Helper function to create typed handlers with proper type inference
|
|
50
|
+
function createTypedHandler(handler) {
|
|
51
|
+
return handler;
|
|
52
|
+
}
|
|
48
53
|
// Factory function to create a typed handler registrar for a specific API definition
|
|
49
54
|
function makeObjectHandlerRegistrar(apiDefinition) {
|
|
50
55
|
return function (app, objectHandlers, middlewares) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
-
import { RegisterHonoHandlers } from '../src';
|
|
2
|
+
import { RegisterHonoHandlers, createTypedHandler } from '../src';
|
|
3
3
|
import { PublicApiDefinition, PrivateApiDefinition } from './simple/definitions';
|
|
4
4
|
|
|
5
5
|
// Create Hono app for Cloudflare Workers
|
|
@@ -45,10 +45,10 @@ RegisterHonoHandlers(app, PublicApiDefinition, {
|
|
|
45
45
|
// Register private handlers with auth
|
|
46
46
|
RegisterHonoHandlers(app, PrivateApiDefinition, {
|
|
47
47
|
user: {
|
|
48
|
-
get: async (req, res) => {
|
|
48
|
+
get: createTypedHandler(async (req, res) => {
|
|
49
49
|
console.log('Fetching user', req.params.id);
|
|
50
50
|
res.respond(200, "ok");
|
|
51
|
-
}
|
|
51
|
+
})
|
|
52
52
|
}
|
|
53
53
|
}, [loggingMiddleware, authMiddleware]);
|
|
54
54
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { PrivateApiDefinition, PublicApiDefinition } from './definitions';
|
|
3
|
-
import { RegisterHandlers, EndpointMiddleware } from '../../src';
|
|
3
|
+
import { RegisterHandlers, EndpointMiddleware, createTypedHandler } from '../../src';
|
|
4
4
|
const app = express();
|
|
5
5
|
const port = 3001;
|
|
6
6
|
app.set('etag', false);
|
|
@@ -59,10 +59,10 @@ RegisterHandlers(app, PublicApiDefinition, {
|
|
|
59
59
|
// Add another api definition
|
|
60
60
|
RegisterHandlers(app, PrivateApiDefinition, {
|
|
61
61
|
user: {
|
|
62
|
-
get: async (req, res) => {
|
|
62
|
+
get: createTypedHandler(async (req, res) => {
|
|
63
63
|
console.log('Fetching user', req.params.id);
|
|
64
64
|
res.respond(200, "ok");
|
|
65
|
-
}
|
|
65
|
+
})
|
|
66
66
|
}
|
|
67
67
|
}, [loggingMiddlewareTyped, authMiddleware]);
|
|
68
68
|
|
package/package.json
CHANGED
|
@@ -282,8 +282,8 @@ export function registerHonoRouteHandlers<
|
|
|
282
282
|
routeHandlers.forEach((specificHandlerIterationItem) => {
|
|
283
283
|
const { domain, routeKey, handler } = specificHandlerIterationItem as any;
|
|
284
284
|
|
|
285
|
-
const currentDomain = domain
|
|
286
|
-
const currentRouteKey = routeKey
|
|
285
|
+
const currentDomain = domain;
|
|
286
|
+
const currentRouteKey = routeKey;
|
|
287
287
|
|
|
288
288
|
const routeDefinition = apiDefinition.endpoints[currentDomain][currentRouteKey] as RouteSchema;
|
|
289
289
|
|
|
@@ -587,6 +587,8 @@ export function RegisterHonoHandlers<
|
|
|
587
587
|
registerHonoRouteHandlers(app, apiDefinition, handlerArray, endpointMiddlewares);
|
|
588
588
|
}
|
|
589
589
|
|
|
590
|
+
|
|
591
|
+
|
|
590
592
|
export function CreateTypedHonoHandlerWithContext<Ctx extends Record<string, any>>() {
|
|
591
593
|
return function <
|
|
592
594
|
TDef extends ApiDefinitionSchema,
|
package/src/hono-only.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Excludes Express dependencies like multer, busboy, etc.
|
|
3
3
|
export { CreateApiDefinition, CreateResponses } from './definition';
|
|
4
4
|
export { z as ZodSchema } from 'zod';
|
|
5
|
-
export { EndpointMiddleware, EndpointMiddlewareCtx } from './object-handlers'
|
|
5
|
+
export { EndpointMiddleware, EndpointMiddlewareCtx, createTypedHandler } from './object-handlers'
|
|
6
6
|
|
|
7
7
|
// Hono adapter for Cloudflare Workers
|
|
8
8
|
export { RegisterHonoHandlers, CreateTypedHonoHandlerWithContext } from './hono-cloudflare-workers';
|
package/src/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { ApiClient, FetchHttpClientAdapter } from './client';
|
|
|
2
2
|
export { generateOpenApiSpec } from './openapi'
|
|
3
3
|
export { generateOpenApiSpec as generateOpenApiSpec2 } from './openapi-self'
|
|
4
4
|
export { CreateApiDefinition, CreateResponses, ApiDefinitionSchema } from './definition';
|
|
5
|
-
export { RegisterHandlers, EndpointMiddleware, UniversalEndpointMiddleware, SimpleMiddleware, EndpointInfo } from './object-handlers';
|
|
5
|
+
export { RegisterHandlers, EndpointMiddleware, UniversalEndpointMiddleware, SimpleMiddleware, EndpointInfo, createTypedHandler } from './object-handlers';
|
|
6
6
|
export { File as UploadedFile } from './router';
|
|
7
7
|
export { z as ZodSchema } from 'zod';
|
|
8
8
|
|
package/src/object-handlers.ts
CHANGED
|
@@ -136,6 +136,20 @@ export function RegisterHandlers<
|
|
|
136
136
|
registerRouteHandlers(app, apiDefinition, handlerArray, endpointMiddlewares);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
// Helper function to create typed handlers with proper type inference
|
|
140
|
+
export function createTypedHandler<
|
|
141
|
+
TDef extends ApiDefinitionSchema,
|
|
142
|
+
TDomain extends keyof TDef['endpoints'],
|
|
143
|
+
TRouteKey extends keyof TDef['endpoints'][TDomain]
|
|
144
|
+
>(
|
|
145
|
+
handler: (
|
|
146
|
+
req: TypedRequest<TDef, TDomain, TRouteKey>,
|
|
147
|
+
res: TypedResponse<TDef, TDomain, TRouteKey>
|
|
148
|
+
) => Promise<void> | void
|
|
149
|
+
) {
|
|
150
|
+
return handler;
|
|
151
|
+
}
|
|
152
|
+
|
|
139
153
|
// Factory function to create a typed handler registrar for a specific API definition
|
|
140
154
|
export function makeObjectHandlerRegistrar<TDef extends ApiDefinitionSchema>(
|
|
141
155
|
apiDefinition: TDef
|