@venizia/ignis 0.0.5-21 → 0.0.5-23
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/base/controllers/abstract.d.ts +23 -4
- package/dist/base/controllers/abstract.d.ts.map +1 -1
- package/dist/base/controllers/abstract.js +9 -4
- package/dist/base/controllers/abstract.js.map +1 -1
- package/dist/base/controllers/base.d.ts +4 -2
- package/dist/base/controllers/base.d.ts.map +1 -1
- package/dist/base/controllers/base.js +1 -0
- package/dist/base/controllers/base.js.map +1 -1
- package/dist/base/controllers/common/types.d.ts +262 -7
- package/dist/base/controllers/common/types.d.ts.map +1 -1
- package/dist/base/controllers/factory/controller.d.ts +568 -351
- package/dist/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/base/controllers/factory/controller.js +25 -25
- package/dist/base/controllers/factory/controller.js.map +1 -1
- package/dist/base/controllers/factory/definition.d.ts +190 -430
- package/dist/base/controllers/factory/definition.d.ts.map +1 -1
- package/dist/base/controllers/factory/definition.js +300 -209
- package/dist/base/controllers/factory/definition.js.map +1 -1
- package/dist/components/auth/authenticate/common/constants.d.ts +4 -0
- package/dist/components/auth/authenticate/common/constants.d.ts.map +1 -1
- package/dist/components/auth/authenticate/common/constants.js +6 -1
- package/dist/components/auth/authenticate/common/constants.js.map +1 -1
- package/dist/components/auth/authenticate/common/keys.d.ts +1 -0
- package/dist/components/auth/authenticate/common/keys.d.ts.map +1 -1
- package/dist/components/auth/authenticate/common/keys.js +1 -0
- package/dist/components/auth/authenticate/common/keys.js.map +1 -1
- package/dist/components/auth/authenticate/common/types.d.ts +39 -4
- package/dist/components/auth/authenticate/common/types.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.d.ts +17 -1
- package/dist/components/auth/authenticate/component.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.js +87 -31
- package/dist/components/auth/authenticate/component.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/factory.d.ts +3 -2
- package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/basic-token.service.d.ts +59 -0
- package/dist/components/auth/authenticate/services/basic-token.service.d.ts.map +1 -0
- package/dist/components/auth/authenticate/services/basic-token.service.js +135 -0
- package/dist/components/auth/authenticate/services/basic-token.service.js.map +1 -0
- package/dist/components/auth/authenticate/services/index.d.ts +1 -0
- package/dist/components/auth/authenticate/services/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/index.js +1 -0
- package/dist/components/auth/authenticate/services/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/basic.strategy.d.ts +33 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.d.ts.map +1 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.js +59 -0
- package/dist/components/auth/authenticate/strategies/basic.strategy.js.map +1 -0
- package/dist/components/auth/authenticate/strategies/index.d.ts +1 -0
- package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/strategies/index.js +1 -0
- package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts +10 -5
- package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
- package/dist/components/auth/authenticate/strategies/strategy-registry.js +83 -44
- package/dist/components/auth/authenticate/strategies/strategy-registry.js.map +1 -1
- package/dist/components/static-asset/controller/factory.d.ts +3 -2
- package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/helpers/inversion/common/types.d.ts +2 -1
- package/dist/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/utilities/schema.utility.d.ts +2 -0
- package/dist/utilities/schema.utility.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { TAuthMode, TAuthStrategy } from '../../components/auth';
|
|
1
2
|
import { Hook, OpenAPIHono, RouteConfig } from '@hono/zod-openapi';
|
|
2
|
-
import { BaseHelper,
|
|
3
|
+
import { BaseHelper, ValueOrPromise } from '@venizia/ignis-helpers';
|
|
3
4
|
import { Env, Schema } from 'hono';
|
|
4
5
|
import { IController, IControllerOptions, TAuthRouteConfig, TLazyRouteHandler, TRouteBindingOptions, TRouteDefinition } from './common/types';
|
|
5
6
|
/**
|
|
@@ -17,6 +18,7 @@ import { IController, IControllerOptions, TAuthRouteConfig, TLazyRouteHandler, T
|
|
|
17
18
|
* @typeParam RouteSchema - Combined schema type for all routes
|
|
18
19
|
* @typeParam BasePath - Base path prefix for the router
|
|
19
20
|
* @typeParam ConfigurableOptions - Options passed during configuration
|
|
21
|
+
* @typeParam Definitions - Route definitions map type for strongly-typed method overrides
|
|
20
22
|
*
|
|
21
23
|
* @example
|
|
22
24
|
* ```typescript
|
|
@@ -33,11 +35,27 @@ import { IController, IControllerOptions, TAuthRouteConfig, TLazyRouteHandler, T
|
|
|
33
35
|
* }
|
|
34
36
|
* ```
|
|
35
37
|
*/
|
|
36
|
-
export declare abstract class AbstractController<RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}
|
|
38
|
+
export declare abstract class AbstractController<RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, Definitions extends Record<string, TAuthRouteConfig<RouteConfig>> = Record<string, TAuthRouteConfig<RouteConfig>>> extends BaseHelper implements IController<RouteEnv, RouteSchema, BasePath, ConfigurableOptions> {
|
|
37
39
|
/** The OpenAPIHono router instance managing all routes for this controller */
|
|
38
40
|
router: OpenAPIHono<RouteEnv, RouteSchema, BasePath>;
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Route definitions map, keyed by route identifier (e.g., 'FIND', 'CREATE').
|
|
43
|
+
* Use with {@link THandlerContext} to type overridden handler methods.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Extract definitions type from the controller class
|
|
48
|
+
* type TRouteDefinitions = InstanceType<typeof _Controller>['definitions'];
|
|
49
|
+
*
|
|
50
|
+
* // Override a CRUD method with proper typing:
|
|
51
|
+
* override async create(_opts: { context: THandlerContext<TRouteDefinitions, 'CREATE'> }) {
|
|
52
|
+
* const { context } = _opts;
|
|
53
|
+
* const data = context.req.valid('json'); // Properly typed!
|
|
54
|
+
* return super.create(_opts);
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
definitions: Definitions;
|
|
41
59
|
/** The base path for all routes in this controller */
|
|
42
60
|
path: string;
|
|
43
61
|
/**
|
|
@@ -100,6 +118,7 @@ export declare abstract class AbstractController<RouteEnv extends Env = Env, Rou
|
|
|
100
118
|
*/
|
|
101
119
|
getJSXRouteConfigs<RC extends RouteConfig & {
|
|
102
120
|
authStrategies?: Array<TAuthStrategy>;
|
|
121
|
+
authMode?: TAuthMode;
|
|
103
122
|
}>(opts: {
|
|
104
123
|
configs: RC;
|
|
105
124
|
}): RC & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/abstract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"abstract.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAe,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAIxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,8BAAsB,kBAAkB,CACtC,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CACxE,MAAM,EACN,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CAED,SAAQ,UACR,YAAW,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,CAAC;IAE5E,8EAA8E;IAC9E,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAErD;;;;;;;;;;;;;;;;OAgBG;IACH,WAAW,EAAE,WAAW,CAAC;IAEzB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;gBACS,IAAI,EAAE,kBAAkB;IA4BpC;;;;OAIG;IACH,SAAS;IAIT;;;;;OAKG;IACH,0BAA0B,IAAI,IAAI;IAiBlC;;;;;;;;OAQG;IACG,SAAS,CACb,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAgBxD;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,SAAS,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,EAAE,CAAA;KAAE;;;IAoC/E;;;;;;;;;OASG;IACH,kBAAkB,CAChB,EAAE,SAAS,WAAW,GAAG;QAAE,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,EACxF,IAAI,EAAE;QAAE,OAAO,EAAE,EAAE,CAAA;KAAE;;;IAkCvB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;QACjE,OAAO,EAAE,EAAE,CAAC;KACb,GAAG,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;IAE7D;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;QACnE,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;CAC1D"}
|
|
@@ -22,6 +22,7 @@ const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
|
22
22
|
* @typeParam RouteSchema - Combined schema type for all routes
|
|
23
23
|
* @typeParam BasePath - Base path prefix for the router
|
|
24
24
|
* @typeParam ConfigurableOptions - Options passed during configuration
|
|
25
|
+
* @typeParam Definitions - Route definitions map type for strongly-typed method overrides
|
|
25
26
|
*
|
|
26
27
|
* @example
|
|
27
28
|
* ```typescript
|
|
@@ -129,9 +130,11 @@ class AbstractController extends ignis_helpers_1.BaseHelper {
|
|
|
129
130
|
*/
|
|
130
131
|
getRouteConfigs(opts) {
|
|
131
132
|
const { configs } = opts;
|
|
132
|
-
const { authStrategies = [], ...restConfig } = configs;
|
|
133
|
+
const { authStrategies = [], authMode = 'any', ...restConfig } = configs;
|
|
133
134
|
const security = authStrategies.map(strategy => ({ [strategy]: [] }));
|
|
134
|
-
const mws = authStrategies
|
|
135
|
+
const mws = authStrategies.length > 0
|
|
136
|
+
? [(0, auth_1.authenticate)({ strategies: authStrategies, mode: authMode })]
|
|
137
|
+
: [];
|
|
135
138
|
if (restConfig.middleware) {
|
|
136
139
|
const extraMws = Array.isArray(restConfig.middleware)
|
|
137
140
|
? restConfig.middleware
|
|
@@ -162,9 +165,11 @@ class AbstractController extends ignis_helpers_1.BaseHelper {
|
|
|
162
165
|
*/
|
|
163
166
|
getJSXRouteConfigs(opts) {
|
|
164
167
|
const { configs } = opts;
|
|
165
|
-
const { authStrategies = [], ...restConfig } = configs;
|
|
168
|
+
const { authStrategies = [], authMode = 'any', ...restConfig } = configs;
|
|
166
169
|
const security = authStrategies.map(strategy => ({ [strategy]: [] }));
|
|
167
|
-
const mws = authStrategies
|
|
170
|
+
const mws = authStrategies.length > 0
|
|
171
|
+
? [(0, auth_1.authenticate)({ strategies: authStrategies, mode: authMode })]
|
|
172
|
+
: [];
|
|
168
173
|
const extraMws = restConfig.middleware && Array.isArray(restConfig.middleware)
|
|
169
174
|
? restConfig.middleware
|
|
170
175
|
: [restConfig.middleware];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/base/controllers/abstract.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../src/base/controllers/abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Hook, RouteConfig } from '@hono/zod-openapi';
|
|
2
|
-
import {
|
|
2
|
+
import { ValueOrPromise } from '@venizia/ignis-helpers';
|
|
3
|
+
import { TAuthStrategy } from '../../components/auth/authenticate/common';
|
|
3
4
|
import { Env, Schema } from 'hono';
|
|
4
5
|
import { AbstractController } from './abstract';
|
|
5
6
|
import { TAuthRouteConfig, TLazyRouteHandler, TRouteBindingOptions, TRouteDefinition } from './common/types';
|
|
@@ -14,6 +15,7 @@ import { TAuthRouteConfig, TLazyRouteHandler, TRouteBindingOptions, TRouteDefini
|
|
|
14
15
|
* @typeParam RouteSchema - Combined schema type for all routes
|
|
15
16
|
* @typeParam BasePath - Base path prefix for the router
|
|
16
17
|
* @typeParam ConfigurableOptions - Options passed during configuration
|
|
18
|
+
* @typeParam Definitions - Route definitions map type for strongly-typed method overrides
|
|
17
19
|
*
|
|
18
20
|
* @example
|
|
19
21
|
* ```typescript
|
|
@@ -43,7 +45,7 @@ import { TAuthRouteConfig, TLazyRouteHandler, TRouteBindingOptions, TRouteDefini
|
|
|
43
45
|
* }
|
|
44
46
|
* ```
|
|
45
47
|
*/
|
|
46
|
-
export declare abstract class BaseController<RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}
|
|
48
|
+
export declare abstract class BaseController<RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, Definitions extends Record<string, TAuthRouteConfig<RouteConfig>> = Record<string, TAuthRouteConfig<RouteConfig>>> extends AbstractController<RouteEnv, RouteSchema, BasePath, ConfigurableOptions, Definitions> {
|
|
47
49
|
/**
|
|
48
50
|
* Creates a fluent binding for registering a route.
|
|
49
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/base/controllers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,8BAAsB,cAAc,CAClC,QAAQ,SAAS,GAAG,GAAG,GAAG,EAC1B,WAAW,SAAS,MAAM,GAAG,EAAE,EAC/B,QAAQ,SAAS,MAAM,GAAG,GAAG,EAC7B,mBAAmB,SAAS,MAAM,GAAG,EAAE,EACvC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CACxE,MAAM,EACN,gBAAgB,CAAC,WAAW,CAAC,CAC9B,CACD,SAAQ,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,CAAC;IAC7F;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,SAAS,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,EAAE,CAAC;KACb,GAAG,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;IAc7D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,CAAC,EAAE,SAAS,gBAAgB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE;QAC1D,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;IASzD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,cAAc,CAAC,EAAE,SAAS,WAAW,GAAG;QAAE,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;KAAE,EAAE,IAAI,EAAE;QACvF,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;CAQ1D"}
|
|
@@ -13,6 +13,7 @@ const abstract_1 = require("./abstract");
|
|
|
13
13
|
* @typeParam RouteSchema - Combined schema type for all routes
|
|
14
14
|
* @typeParam BasePath - Base path prefix for the router
|
|
15
15
|
* @typeParam ConfigurableOptions - Options passed during configuration
|
|
16
|
+
* @typeParam Definitions - Route definitions map type for strongly-typed method overrides
|
|
16
17
|
*
|
|
17
18
|
* @example
|
|
18
19
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/base/controllers/base.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/base/controllers/base.ts"],"names":[],"mappings":";;;AAIA,yCAAgD;AAQhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAsB,cASpB,SAAQ,6BAAqF;IAC7F;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAA2C,IAEnD;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;gBAClB,OAAO;oBACL,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC;iBAClD,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,CAA2C,IAIrD;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;SAClE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,cAAc,CAAqE,IAIlF;QACC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE5E,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;SAClE,CAAC;IACJ,CAAC;CACF;AAxHD,wCAwHC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { TAuthMode, TAuthStrategy } from '../../../components/auth/authenticate/common';
|
|
2
|
+
import { TAnyObjectSchema } from '../../../utilities/schema.utility';
|
|
1
3
|
import type { RouteConfig, RouteHandler } from '@hono/zod-openapi';
|
|
2
|
-
import { createRoute, Hook, OpenAPIHono } from '@hono/zod-openapi';
|
|
3
|
-
import { IConfigurable,
|
|
4
|
+
import { createRoute, Hook, OpenAPIHono, z } from '@hono/zod-openapi';
|
|
5
|
+
import { IConfigurable, ValueOrPromise } from '@venizia/ignis-helpers';
|
|
4
6
|
import { Env, Schema } from 'hono';
|
|
5
7
|
/**
|
|
6
8
|
* Lazy-evaluated route handler type that preserves type inference from route config.
|
|
@@ -24,9 +26,7 @@ export type TLazyRouteHandler<RC extends RouteConfig, RouteEnv extends Env = Env
|
|
|
24
26
|
* @typeParam BasePath - Base path prefix for the router
|
|
25
27
|
*/
|
|
26
28
|
export type TRouteDefinition<RC extends RouteConfig, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/'> = {
|
|
27
|
-
/** The created route configuration */
|
|
28
29
|
configs: ReturnType<typeof createRoute<string, RC>>;
|
|
29
|
-
/** The OpenAPIHono router instance with the route registered */
|
|
30
30
|
route: OpenAPIHono<RouteEnv, RouteSchema, BasePath>;
|
|
31
31
|
};
|
|
32
32
|
/**
|
|
@@ -43,9 +43,7 @@ export type TRouteDefinition<RC extends RouteConfig, RouteEnv extends Env = Env,
|
|
|
43
43
|
* @typeParam BasePath - Base path prefix
|
|
44
44
|
*/
|
|
45
45
|
export type TRouteBindingOptions<RC extends RouteConfig, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/'> = {
|
|
46
|
-
/** The route configuration */
|
|
47
46
|
configs: RC;
|
|
48
|
-
/** Binds the handler and returns the route definition */
|
|
49
47
|
to: (opts: {
|
|
50
48
|
handler: TLazyRouteHandler<RC, RouteEnv>;
|
|
51
49
|
}) => TRouteDefinition<RC, RouteEnv, RouteSchema, BasePath>;
|
|
@@ -63,13 +61,15 @@ export type TRouteBindingOptions<RC extends RouteConfig, RouteEnv extends Env =
|
|
|
63
61
|
* const config: TAuthRouteConfig<RouteConfig> = {
|
|
64
62
|
* path: '/protected',
|
|
65
63
|
* method: 'get',
|
|
66
|
-
* authStrategies: ['jwt', '
|
|
64
|
+
* authStrategies: ['jwt', 'basic'],
|
|
65
|
+
* authMode: 'any', // 'any' = fallback (default), 'all' = all must pass
|
|
67
66
|
* responses: { 200: { ... } }
|
|
68
67
|
* };
|
|
69
68
|
* ```
|
|
70
69
|
*/
|
|
71
70
|
export type TAuthRouteConfig<RC extends RouteConfig> = RC & {
|
|
72
71
|
authStrategies?: readonly TAuthStrategy[];
|
|
72
|
+
authMode?: TAuthMode;
|
|
73
73
|
};
|
|
74
74
|
/**
|
|
75
75
|
* Extract the context type from a route config for use in decorated handler methods
|
|
@@ -118,6 +118,44 @@ export type TRouteContext<RC extends TAuthRouteConfig<RouteConfig>, RouteEnv ext
|
|
|
118
118
|
* ```
|
|
119
119
|
*/
|
|
120
120
|
export type TRouteResponse<RC extends TAuthRouteConfig<RouteConfig>, RouteEnv extends Env = Env> = ReturnType<TLazyRouteHandler<RC, RouteEnv>>;
|
|
121
|
+
/**
|
|
122
|
+
* Extracts the context type for a specific route from a definitions object.
|
|
123
|
+
* Use this to properly type overridden CRUD methods.
|
|
124
|
+
*
|
|
125
|
+
* @typeParam D - The definitions object type
|
|
126
|
+
* @typeParam K - The route key (e.g., 'CREATE', 'FIND')
|
|
127
|
+
* @typeParam RouteEnv - Hono environment type
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const _Controller = ControllerFactory.defineCrudController({
|
|
132
|
+
* entity: () => MyEntity,
|
|
133
|
+
* repository: { name: 'MyRepository' },
|
|
134
|
+
* controller: { name: 'MyController', basePath: '/my-path' },
|
|
135
|
+
* });
|
|
136
|
+
*
|
|
137
|
+
* // Extract definitions type from the generated controller
|
|
138
|
+
* type TRouteDefinitions = InstanceType<typeof _Controller>['definitions'];
|
|
139
|
+
*
|
|
140
|
+
* class MyController extends _Controller {
|
|
141
|
+
* override async create(opts: { context: THandlerContext<TRouteDefinitions, 'CREATE'> }) {
|
|
142
|
+
* const { context } = opts;
|
|
143
|
+
* const data = context.req.valid('json'); // Properly typed!
|
|
144
|
+
* // Custom logic here...
|
|
145
|
+
* return super.create(opts);
|
|
146
|
+
* }
|
|
147
|
+
* }
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export type THandlerContext<RouteDefinition extends Record<string, TAuthRouteConfig<RouteConfig>>, Key extends keyof RouteDefinition, RouteEnv extends Env = Env> = TRouteContext<RouteDefinition[Key], RouteEnv>;
|
|
151
|
+
/**
|
|
152
|
+
* Extracts the return type for a specific route from a definitions object.
|
|
153
|
+
*
|
|
154
|
+
* @typeParam D - The definitions object type
|
|
155
|
+
* @typeParam K - The route key
|
|
156
|
+
* @typeParam RouteEnv - Hono environment type
|
|
157
|
+
*/
|
|
158
|
+
export type THandlerResponse<RouteDefinition extends Record<string, TAuthRouteConfig<RouteConfig>>, Key extends keyof RouteDefinition, RouteEnv extends Env = Env> = TRouteResponse<RouteDefinition[Key], RouteEnv>;
|
|
121
159
|
/**
|
|
122
160
|
* Base controller interface defining the contract for all controllers.
|
|
123
161
|
*
|
|
@@ -199,4 +237,221 @@ export interface IControllerOptions {
|
|
|
199
237
|
*/
|
|
200
238
|
isStrict?: boolean;
|
|
201
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Per-route authentication configuration.
|
|
242
|
+
*
|
|
243
|
+
* Priority (endpoint config takes precedence over controller):
|
|
244
|
+
* 1. If endpoint has `skipAuth: true` -> no auth
|
|
245
|
+
* 2. If endpoint has `authStrategies` -> use these (overrides controller)
|
|
246
|
+
* 3. Otherwise -> use controller-level authStrategies
|
|
247
|
+
*/
|
|
248
|
+
export type TRouteAuthConfig = {
|
|
249
|
+
skipAuth: true;
|
|
250
|
+
authStrategies?: never;
|
|
251
|
+
} | {
|
|
252
|
+
skipAuth?: false;
|
|
253
|
+
authStrategies?: Array<TAuthStrategy>;
|
|
254
|
+
};
|
|
255
|
+
/** OpenAPI response header object */
|
|
256
|
+
export type TResponseHeaderObject = {
|
|
257
|
+
description?: string;
|
|
258
|
+
schema: {
|
|
259
|
+
type: 'string';
|
|
260
|
+
examples?: string[];
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
/** OpenAPI response headers format */
|
|
264
|
+
export type TResponseHeaders = Record<string, TResponseHeaderObject>;
|
|
265
|
+
/** Request configuration for COUNT route */
|
|
266
|
+
export type TCountRequestConfig = {
|
|
267
|
+
query?: TAnyObjectSchema;
|
|
268
|
+
headers?: TAnyObjectSchema;
|
|
269
|
+
};
|
|
270
|
+
/** Response configuration for COUNT route */
|
|
271
|
+
export type TCountResponseConfig = {
|
|
272
|
+
schema?: z.ZodTypeAny;
|
|
273
|
+
headers?: TResponseHeaders;
|
|
274
|
+
};
|
|
275
|
+
/** Full configuration for COUNT route */
|
|
276
|
+
export type TCountRouteConfig = TRouteAuthConfig & {
|
|
277
|
+
request?: TCountRequestConfig;
|
|
278
|
+
response?: TCountResponseConfig;
|
|
279
|
+
};
|
|
280
|
+
/** Request configuration for FIND route */
|
|
281
|
+
export type TFindRequestConfig = {
|
|
282
|
+
query?: TAnyObjectSchema;
|
|
283
|
+
headers?: TAnyObjectSchema;
|
|
284
|
+
};
|
|
285
|
+
/** Response configuration for FIND route */
|
|
286
|
+
export type TFindResponseConfig = {
|
|
287
|
+
schema?: z.ZodTypeAny;
|
|
288
|
+
headers?: TResponseHeaders;
|
|
289
|
+
};
|
|
290
|
+
/** Full configuration for FIND route */
|
|
291
|
+
export type TFindRouteConfig = TRouteAuthConfig & {
|
|
292
|
+
request?: TFindRequestConfig;
|
|
293
|
+
response?: TFindResponseConfig;
|
|
294
|
+
};
|
|
295
|
+
/** Request configuration for FIND_BY_ID route */
|
|
296
|
+
export type TFindByIdRequestConfig = {
|
|
297
|
+
/** Note: params cannot be customized - id param is required */
|
|
298
|
+
query?: TAnyObjectSchema;
|
|
299
|
+
headers?: TAnyObjectSchema;
|
|
300
|
+
};
|
|
301
|
+
/** Response configuration for FIND_BY_ID route */
|
|
302
|
+
export type TFindByIdResponseConfig = {
|
|
303
|
+
schema?: z.ZodTypeAny;
|
|
304
|
+
headers?: TResponseHeaders;
|
|
305
|
+
};
|
|
306
|
+
/** Full configuration for FIND_BY_ID route */
|
|
307
|
+
export type TFindByIdRouteConfig = TRouteAuthConfig & {
|
|
308
|
+
request?: TFindByIdRequestConfig;
|
|
309
|
+
response?: TFindByIdResponseConfig;
|
|
310
|
+
};
|
|
311
|
+
/** Request configuration for FIND_ONE route */
|
|
312
|
+
export type TFindOneRequestConfig = {
|
|
313
|
+
query?: TAnyObjectSchema;
|
|
314
|
+
headers?: TAnyObjectSchema;
|
|
315
|
+
};
|
|
316
|
+
/** Response configuration for FIND_ONE route */
|
|
317
|
+
export type TFindOneResponseConfig = {
|
|
318
|
+
schema?: z.ZodTypeAny;
|
|
319
|
+
headers?: TResponseHeaders;
|
|
320
|
+
};
|
|
321
|
+
/** Full configuration for FIND_ONE route */
|
|
322
|
+
export type TFindOneRouteConfig = TRouteAuthConfig & {
|
|
323
|
+
request?: TFindOneRequestConfig;
|
|
324
|
+
response?: TFindOneResponseConfig;
|
|
325
|
+
};
|
|
326
|
+
/** Request configuration for CREATE route */
|
|
327
|
+
export type TCreateRequestConfig = {
|
|
328
|
+
body?: TAnyObjectSchema;
|
|
329
|
+
headers?: TAnyObjectSchema;
|
|
330
|
+
};
|
|
331
|
+
/** Response configuration for CREATE route */
|
|
332
|
+
export type TCreateResponseConfig = {
|
|
333
|
+
schema?: z.ZodTypeAny;
|
|
334
|
+
headers?: TResponseHeaders;
|
|
335
|
+
};
|
|
336
|
+
/** Full configuration for CREATE route */
|
|
337
|
+
export type TCreateRouteConfig = TRouteAuthConfig & {
|
|
338
|
+
request?: TCreateRequestConfig;
|
|
339
|
+
response?: TCreateResponseConfig;
|
|
340
|
+
};
|
|
341
|
+
/** Request configuration for UPDATE_BY_ID route */
|
|
342
|
+
export type TUpdateByIdRequestConfig = {
|
|
343
|
+
/** Note: params cannot be customized - id param is required */
|
|
344
|
+
body?: TAnyObjectSchema;
|
|
345
|
+
headers?: TAnyObjectSchema;
|
|
346
|
+
};
|
|
347
|
+
/** Response configuration for UPDATE_BY_ID route */
|
|
348
|
+
export type TUpdateByIdResponseConfig = {
|
|
349
|
+
schema?: z.ZodTypeAny;
|
|
350
|
+
headers?: TResponseHeaders;
|
|
351
|
+
};
|
|
352
|
+
/** Full configuration for UPDATE_BY_ID route */
|
|
353
|
+
export type TUpdateByIdRouteConfig = TRouteAuthConfig & {
|
|
354
|
+
request?: TUpdateByIdRequestConfig;
|
|
355
|
+
response?: TUpdateByIdResponseConfig;
|
|
356
|
+
};
|
|
357
|
+
/** Request configuration for UPDATE_BY route */
|
|
358
|
+
export type TUpdateByRequestConfig = {
|
|
359
|
+
query?: TAnyObjectSchema;
|
|
360
|
+
body?: TAnyObjectSchema;
|
|
361
|
+
headers?: TAnyObjectSchema;
|
|
362
|
+
};
|
|
363
|
+
/** Response configuration for UPDATE_BY route */
|
|
364
|
+
export type TUpdateByResponseConfig = {
|
|
365
|
+
schema?: z.ZodTypeAny;
|
|
366
|
+
headers?: TResponseHeaders;
|
|
367
|
+
};
|
|
368
|
+
/** Full configuration for UPDATE_BY route */
|
|
369
|
+
export type TUpdateByRouteConfig = TRouteAuthConfig & {
|
|
370
|
+
request?: TUpdateByRequestConfig;
|
|
371
|
+
response?: TUpdateByResponseConfig;
|
|
372
|
+
};
|
|
373
|
+
/** Request configuration for DELETE_BY_ID route */
|
|
374
|
+
export type TDeleteByIdRequestConfig = {
|
|
375
|
+
/** Note: params cannot be customized - id param is required */
|
|
376
|
+
headers?: TAnyObjectSchema;
|
|
377
|
+
};
|
|
378
|
+
/** Response configuration for DELETE_BY_ID route */
|
|
379
|
+
export type TDeleteByIdResponseConfig = {
|
|
380
|
+
schema?: z.ZodTypeAny;
|
|
381
|
+
headers?: TResponseHeaders;
|
|
382
|
+
};
|
|
383
|
+
/** Full configuration for DELETE_BY_ID route */
|
|
384
|
+
export type TDeleteByIdRouteConfig = TRouteAuthConfig & {
|
|
385
|
+
request?: TDeleteByIdRequestConfig;
|
|
386
|
+
response?: TDeleteByIdResponseConfig;
|
|
387
|
+
};
|
|
388
|
+
/** Request configuration for DELETE_BY route */
|
|
389
|
+
export type TDeleteByRequestConfig = {
|
|
390
|
+
query?: TAnyObjectSchema;
|
|
391
|
+
headers?: TAnyObjectSchema;
|
|
392
|
+
};
|
|
393
|
+
/** Response configuration for DELETE_BY route */
|
|
394
|
+
export type TDeleteByResponseConfig = {
|
|
395
|
+
schema?: z.ZodTypeAny;
|
|
396
|
+
headers?: TResponseHeaders;
|
|
397
|
+
};
|
|
398
|
+
/** Full configuration for DELETE_BY route */
|
|
399
|
+
export type TDeleteByRouteConfig = TRouteAuthConfig & {
|
|
400
|
+
request?: TDeleteByRequestConfig;
|
|
401
|
+
response?: TDeleteByResponseConfig;
|
|
402
|
+
};
|
|
403
|
+
/**
|
|
404
|
+
* Per-route configuration for CRUD controller endpoints.
|
|
405
|
+
*
|
|
406
|
+
* Each route supports full customization of:
|
|
407
|
+
* - Authentication (skipAuth, authStrategies)
|
|
408
|
+
* - Request (query, params, body, headers)
|
|
409
|
+
* - Response (schema, headers)
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* ```typescript
|
|
413
|
+
* const routes: TRoutesConfig = {
|
|
414
|
+
* count: {
|
|
415
|
+
* skipAuth: true,
|
|
416
|
+
* request: {
|
|
417
|
+
* query: z.object({ where: CustomWhereSchema }),
|
|
418
|
+
* headers: z.object({ 'x-tenant-id': z.string() }),
|
|
419
|
+
* },
|
|
420
|
+
* response: {
|
|
421
|
+
* schema: z.object({ total: z.number() }),
|
|
422
|
+
* },
|
|
423
|
+
* },
|
|
424
|
+
* find: {
|
|
425
|
+
* request: {
|
|
426
|
+
* query: z.object({ filter: FilterSchema, search: z.string().optional() }),
|
|
427
|
+
* },
|
|
428
|
+
* response: {
|
|
429
|
+
* schema: CustomFindResponseSchema,
|
|
430
|
+
* },
|
|
431
|
+
* },
|
|
432
|
+
* create: {
|
|
433
|
+
* authStrategies: ['jwt'],
|
|
434
|
+
* request: {
|
|
435
|
+
* body: CreateUserSchema,
|
|
436
|
+
* headers: z.object({ 'x-idempotency-key': z.string().uuid() }),
|
|
437
|
+
* },
|
|
438
|
+
* response: {
|
|
439
|
+
* schema: UserResponseSchema,
|
|
440
|
+
* headers: { 'x-resource-id': { description: 'Created ID', schema: { type: 'string' } } },
|
|
441
|
+
* },
|
|
442
|
+
* },
|
|
443
|
+
* };
|
|
444
|
+
* ```
|
|
445
|
+
*/
|
|
446
|
+
export type TRoutesConfig = {
|
|
447
|
+
count?: TCountRouteConfig;
|
|
448
|
+
find?: TFindRouteConfig;
|
|
449
|
+
findById?: TFindByIdRouteConfig;
|
|
450
|
+
findOne?: TFindOneRouteConfig;
|
|
451
|
+
create?: TCreateRouteConfig;
|
|
452
|
+
updateById?: TUpdateByIdRouteConfig;
|
|
453
|
+
updateBy?: TUpdateByRouteConfig;
|
|
454
|
+
deleteById?: TDeleteByIdRouteConfig;
|
|
455
|
+
deleteBy?: TDeleteByRouteConfig;
|
|
456
|
+
};
|
|
202
457
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/base/controllers/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/base/controllers/common/types.ts"],"names":[],"mappings":"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"}
|