@veloxts/router 0.3.4 → 0.3.6

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.
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Error classes for @veloxts/router
3
+ *
4
+ * Provides specialized error types for the routing system, including
5
+ * guard authorization failures.
6
+ *
7
+ * @module errors
8
+ */
9
+ import { VeloxError } from '@veloxts/core';
10
+ /**
11
+ * Error codes specific to the router package
12
+ */
13
+ export type RouterErrorCode = 'GUARD_FAILED' | 'UNAUTHORIZED' | 'FORBIDDEN';
14
+ /**
15
+ * Guard error response type for API responses
16
+ */
17
+ export interface GuardErrorResponse {
18
+ error: 'GuardError';
19
+ message: string;
20
+ statusCode: number;
21
+ code: 'GUARD_FAILED';
22
+ guardName: string;
23
+ }
24
+ /**
25
+ * Error thrown when a guard check fails
26
+ *
27
+ * Used to signal authorization failures in a type-safe way without
28
+ * mutating error objects. Integrates with the VeloxTS error system
29
+ * and provides proper HTTP status codes.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // In guard execution
34
+ * if (!passed) {
35
+ * throw new GuardError('authenticated', 'Authentication required', 401);
36
+ * }
37
+ * ```
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // In error handler
42
+ * if (isGuardError(error)) {
43
+ * reply.status(error.statusCode).send({
44
+ * error: 'GuardError',
45
+ * message: error.message,
46
+ * guardName: error.guardName,
47
+ * });
48
+ * }
49
+ * ```
50
+ */
51
+ export declare class GuardError extends VeloxError<'GUARD_FAILED'> {
52
+ /**
53
+ * Name of the guard that failed
54
+ */
55
+ readonly guardName: string;
56
+ /**
57
+ * Creates a new GuardError instance
58
+ *
59
+ * @param guardName - Name of the guard that failed (for debugging)
60
+ * @param message - Human-readable error message
61
+ * @param statusCode - HTTP status code (default: 403 Forbidden)
62
+ */
63
+ constructor(guardName: string, message: string, statusCode?: number);
64
+ /**
65
+ * Converts guard error to JSON format for API responses
66
+ *
67
+ * @returns Guard error response with guard name
68
+ */
69
+ toJSON(): GuardErrorResponse;
70
+ }
71
+ /**
72
+ * Type guard to check if an error is a GuardError
73
+ *
74
+ * @param error - Error to check
75
+ * @returns true if error is a GuardError instance
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * try {
80
+ * await executeProcedure(proc, input, ctx);
81
+ * } catch (error) {
82
+ * if (isGuardError(error)) {
83
+ * console.log(`Guard "${error.guardName}" failed:`, error.message);
84
+ * }
85
+ * }
86
+ * ```
87
+ */
88
+ export declare function isGuardError(error: unknown): error is GuardError;
89
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,cAAc,GAAG,WAAW,CAAC;AAM5E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,UAAW,SAAQ,UAAU,CAAC,cAAc,CAAC;IACxD;;OAEG;IACH,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC;;;;;;OAMG;gBACS,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY;IAWxE;;;;OAIG;IACM,MAAM,IAAI,kBAAkB;CAStC;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE"}
package/dist/errors.js ADDED
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Error classes for @veloxts/router
3
+ *
4
+ * Provides specialized error types for the routing system, including
5
+ * guard authorization failures.
6
+ *
7
+ * @module errors
8
+ */
9
+ import { VeloxError } from '@veloxts/core';
10
+ /**
11
+ * Error thrown when a guard check fails
12
+ *
13
+ * Used to signal authorization failures in a type-safe way without
14
+ * mutating error objects. Integrates with the VeloxTS error system
15
+ * and provides proper HTTP status codes.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // In guard execution
20
+ * if (!passed) {
21
+ * throw new GuardError('authenticated', 'Authentication required', 401);
22
+ * }
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // In error handler
28
+ * if (isGuardError(error)) {
29
+ * reply.status(error.statusCode).send({
30
+ * error: 'GuardError',
31
+ * message: error.message,
32
+ * guardName: error.guardName,
33
+ * });
34
+ * }
35
+ * ```
36
+ */
37
+ export class GuardError extends VeloxError {
38
+ /**
39
+ * Name of the guard that failed
40
+ */
41
+ guardName;
42
+ /**
43
+ * Creates a new GuardError instance
44
+ *
45
+ * @param guardName - Name of the guard that failed (for debugging)
46
+ * @param message - Human-readable error message
47
+ * @param statusCode - HTTP status code (default: 403 Forbidden)
48
+ */
49
+ constructor(guardName, message, statusCode = 403) {
50
+ super(message, statusCode, 'GUARD_FAILED');
51
+ this.name = 'GuardError';
52
+ this.guardName = guardName;
53
+ // Maintains proper stack trace for where error was thrown (V8 only)
54
+ if (Error.captureStackTrace) {
55
+ Error.captureStackTrace(this, GuardError);
56
+ }
57
+ }
58
+ /**
59
+ * Converts guard error to JSON format for API responses
60
+ *
61
+ * @returns Guard error response with guard name
62
+ */
63
+ toJSON() {
64
+ return {
65
+ error: 'GuardError',
66
+ message: this.message,
67
+ statusCode: this.statusCode,
68
+ code: 'GUARD_FAILED',
69
+ guardName: this.guardName,
70
+ };
71
+ }
72
+ }
73
+ // ============================================================================
74
+ // Type Guards
75
+ // ============================================================================
76
+ /**
77
+ * Type guard to check if an error is a GuardError
78
+ *
79
+ * @param error - Error to check
80
+ * @returns true if error is a GuardError instance
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * try {
85
+ * await executeProcedure(proc, input, ctx);
86
+ * } catch (error) {
87
+ * if (isGuardError(error)) {
88
+ * console.log(`Guard "${error.guardName}" failed:`, error.message);
89
+ * }
90
+ * }
91
+ * ```
92
+ */
93
+ export function isGuardError(error) {
94
+ return error instanceof GuardError;
95
+ }
96
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA0B3C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,UAAW,SAAQ,UAA0B;IACxD;;OAEG;IACa,SAAS,CAAS;IAElC;;;;;;OAMG;IACH,YAAY,SAAiB,EAAE,OAAe,EAAE,aAAqB,GAAG;QACtE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,oEAAoE;QACpE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACM,MAAM;QACb,OAAO;YACL,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,cAAc;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,UAAU,CAAC;AACrC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -39,12 +39,14 @@
39
39
  */
40
40
  /** Router package version */
41
41
  export declare const ROUTER_VERSION: string;
42
- export type { CompiledProcedure, ContextExtensions, ContextFactory, ExtendedContext, HttpMethod, InferProcedureContext, InferProcedureInput, InferProcedureOutput, InferProcedureTypes, MiddlewareArgs, MiddlewareFunction, MiddlewareNext, MiddlewareResult, ProcedureCollection, ProcedureHandler, ProcedureHandlerArgs, ProcedureRecord, ProcedureType, RestRouteOverride, } from './types.js';
42
+ export type { CompiledProcedure, ContextExtensions, ContextFactory, ExtendedContext, GuardLike, HttpMethod, InferProcedureContext, InferProcedureInput, InferProcedureOutput, InferProcedureTypes, MiddlewareArgs, MiddlewareFunction, MiddlewareNext, MiddlewareResult, ParentResourceConfig, ProcedureCollection, ProcedureHandler, ProcedureHandlerArgs, ProcedureRecord, ProcedureType, RestRouteOverride, } from './types.js';
43
43
  export { PROCEDURE_METHOD_MAP, } from './types.js';
44
+ export type { GuardErrorResponse, RouterErrorCode } from './errors.js';
45
+ export { GuardError, isGuardError } from './errors.js';
44
46
  export { defineProcedures, executeProcedure, isCompiledProcedure, isProcedureCollection, procedure, } from './procedure/builder.js';
45
47
  export type { BuilderRuntimeState, InferProcedures, InferSchemaOutput, ProcedureBuilder, ProcedureBuilderState, ProcedureDefinitions, ValidSchema, } from './procedure/types.js';
46
48
  export type { RestAdapterOptions, RestMapping, RestRoute } from './rest/index.js';
47
- export { rest, createRoutesRegistrar, buildRestPath, followsNamingConvention, generateRestRoutes, getRouteSummary, inferResourceName, parseNamingConvention, registerRestRoutes, } from './rest/index.js';
49
+ export { buildNestedRestPath, buildRestPath, createRoutesRegistrar, followsNamingConvention, generateRestRoutes, getRouteSummary, inferResourceName, parseNamingConvention, registerRestRoutes, rest, } from './rest/index.js';
48
50
  export type { AnyRouter, InferAppRouter, TRPCInstance, TRPCPluginOptions, } from './trpc/index.js';
49
51
  export { buildTRPCRouter, createAppRouter, createTRPC, createTRPCContextFactory, registerTRPCPlugin, veloxErrorToTRPCError, } from './trpc/index.js';
50
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAQH,6BAA6B;AAC7B,eAAO,MAAM,cAAc,EAAE,MAA+C,CAAC;AAO7E,YAAY,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EAEnB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAEhB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAEL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAEV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAS9B,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAEL,IAAI,EAEJ,qBAAqB,EAErB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAMzB,YAAY,EAEV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,eAAe,EACf,eAAe,EACf,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAQH,6BAA6B;AAC7B,eAAO,MAAM,cAAc,EAAE,MAA+C,CAAC;AAO7E,YAAY,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,EAEf,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EAEnB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAEhB,oBAAoB,EAEpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAMpB,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMvD,OAAO,EAEL,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAEV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAS9B,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAEL,mBAAmB,EACnB,aAAa,EAEb,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAElB,IAAI,GACL,MAAM,iBAAiB,CAAC;AAMzB,YAAY,EAEV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,eAAe,EACf,eAAe,EACf,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -46,6 +46,7 @@ export const ROUTER_VERSION = packageJson.version ?? '0.0.0-unknown';
46
46
  export {
47
47
  // Constants
48
48
  PROCEDURE_METHOD_MAP, } from './types.js';
49
+ export { GuardError, isGuardError } from './errors.js';
49
50
  // ============================================================================
50
51
  // Procedure Builder
51
52
  // ============================================================================
@@ -53,12 +54,12 @@ export {
53
54
  // Builder functions
54
55
  defineProcedures, executeProcedure, isCompiledProcedure, isProcedureCollection, procedure, } from './procedure/builder.js';
55
56
  export {
56
- // Succinct API (preferred)
57
- rest,
58
- // Legacy API (deprecated)
59
- createRoutesRegistrar,
60
57
  // Internal utilities
61
- buildRestPath, followsNamingConvention, generateRestRoutes, getRouteSummary, inferResourceName, parseNamingConvention, registerRestRoutes, } from './rest/index.js';
58
+ buildNestedRestPath, buildRestPath,
59
+ // Legacy API (deprecated)
60
+ createRoutesRegistrar, followsNamingConvention, generateRestRoutes, getRouteSummary, inferResourceName, parseNamingConvention, registerRestRoutes,
61
+ // Succinct API (preferred)
62
+ rest, } from './rest/index.js';
62
63
  export {
63
64
  // tRPC utilities
64
65
  buildTRPCRouter, createAppRouter, createTRPC, createTRPCContextFactory, registerTRPCPlugin, veloxErrorToTRPCError, } from './trpc/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAW,WAAW,CAAC,OAAO,IAAI,eAAe,CAAC;AA+B7E,OAAO;AACL,YAAY;AACZ,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO;AACL,oBAAoB;AACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAoBhC,OAAO;AACL,2BAA2B;AAC3B,IAAI;AACJ,0BAA0B;AAC1B,qBAAqB;AACrB,qBAAqB;AACrB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAazB,OAAO;AACL,iBAAiB;AACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,cAAc,GAAW,WAAW,CAAC,OAAO,IAAI,eAAe,CAAC;AAmC7E,OAAO;AACL,YAAY;AACZ,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,OAAO;AACL,oBAAoB;AACpB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACV,MAAM,wBAAwB,CAAC;AAoBhC,OAAO;AACL,qBAAqB;AACrB,mBAAmB,EACnB,aAAa;AACb,0BAA0B;AAC1B,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB;AAClB,2BAA2B;AAC3B,IAAI,GACL,MAAM,iBAAiB,CAAC;AAazB,OAAO;AACL,iBAAiB;AACjB,eAAe,EACf,eAAe,EACf,UAAU,EACV,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/procedure/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,iBAAiB,EAEjB,mBAAmB,EAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAEV,eAAe,EAEf,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAO3E;AA8LD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,SAAS,oBAAoB,EACvE,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,WAAW,GACtB,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAKnD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,SAAS,WAAW,EAClF,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EACvD,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC,OAAO,CAAC,CA+BlB;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAY9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAYlF"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/procedure/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EACV,iBAAiB,EAIjB,mBAAmB,EAGpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAEV,eAAe,EAEf,gBAAgB,EAChB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAyEpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,SAAS,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAS3E;AA8ND;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,SAAS,oBAAoB,EACvE,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,WAAW,GACtB,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAKnD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,SAAS,WAAW,EAClF,SAAS,EAAE,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EACvD,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,QAAQ,GACZ,OAAO,CAAC,OAAO,CAAC,CAyDlB;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAa9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAYlF"}
@@ -7,6 +7,71 @@
7
7
  *
8
8
  * @module procedure/builder
9
9
  */
10
+ import { GuardError } from '../errors.js';
11
+ // ============================================================================
12
+ // Utility Functions
13
+ // ============================================================================
14
+ /**
15
+ * Derives the default parent parameter name from a namespace
16
+ *
17
+ * Converts a plural namespace to a singular form and appends 'Id'.
18
+ * Uses simple heuristics for common English pluralization patterns.
19
+ *
20
+ * @param namespace - The parent resource namespace (e.g., 'posts', 'users')
21
+ * @returns The parameter name (e.g., 'postId', 'userId')
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * deriveParentParamName('posts') // 'postId'
26
+ * deriveParentParamName('users') // 'userId'
27
+ * deriveParentParamName('categories') // 'categoryId'
28
+ * deriveParentParamName('data') // 'dataId' (no change for non-plural)
29
+ * ```
30
+ *
31
+ * @internal
32
+ */
33
+ function deriveParentParamName(namespace) {
34
+ // Handle common irregular plurals
35
+ const irregulars = {
36
+ people: 'person',
37
+ children: 'child',
38
+ men: 'man',
39
+ women: 'woman',
40
+ mice: 'mouse',
41
+ geese: 'goose',
42
+ teeth: 'tooth',
43
+ feet: 'foot',
44
+ data: 'datum',
45
+ criteria: 'criterion',
46
+ phenomena: 'phenomenon',
47
+ };
48
+ const lower = namespace.toLowerCase();
49
+ if (irregulars[lower]) {
50
+ return `${irregulars[lower]}Id`;
51
+ }
52
+ // Handle common English pluralization patterns
53
+ let singular = namespace;
54
+ if (namespace.endsWith('ies') && namespace.length > 3) {
55
+ // categories -> category
56
+ singular = namespace.slice(0, -3) + 'y';
57
+ }
58
+ else if (namespace.endsWith('es') && namespace.length > 2) {
59
+ // Check for -shes, -ches, -xes, -zes, -sses patterns
60
+ const beforeEs = namespace.slice(-4, -2);
61
+ if (['sh', 'ch'].includes(beforeEs) || ['x', 'z', 's'].includes(namespace.slice(-3, -2))) {
62
+ singular = namespace.slice(0, -2);
63
+ }
64
+ else {
65
+ // classes -> class (double s + es)
66
+ singular = namespace.slice(0, -1);
67
+ }
68
+ }
69
+ else if (namespace.endsWith('s') && namespace.length > 1 && !namespace.endsWith('ss')) {
70
+ // Simple plural: users -> user, posts -> post
71
+ singular = namespace.slice(0, -1);
72
+ }
73
+ return `${singular}Id`;
74
+ }
10
75
  // ============================================================================
11
76
  // Builder Factory
12
77
  // ============================================================================
@@ -36,7 +101,9 @@ export function procedure() {
36
101
  inputSchema: undefined,
37
102
  outputSchema: undefined,
38
103
  middlewares: [],
104
+ guards: [],
39
105
  restOverride: undefined,
106
+ parentResource: undefined,
40
107
  });
41
108
  }
42
109
  // ============================================================================
@@ -85,6 +152,18 @@ function createBuilder(state) {
85
152
  middlewares: [...state.middlewares, typedMiddleware],
86
153
  });
87
154
  },
155
+ /**
156
+ * Adds an authorization guard
157
+ *
158
+ * Accepts guards with partial context types (contravariant).
159
+ * Guards typed for `{ auth?: AuthContext }` work with full `BaseContext`.
160
+ */
161
+ guard(guardDef) {
162
+ return createBuilder({
163
+ ...state,
164
+ guards: [...state.guards, guardDef],
165
+ });
166
+ },
88
167
  /**
89
168
  * Sets REST route override
90
169
  */
@@ -94,6 +173,19 @@ function createBuilder(state) {
94
173
  restOverride: config,
95
174
  });
96
175
  },
176
+ /**
177
+ * Declares a parent resource for nested routes
178
+ */
179
+ parent(namespace, paramName) {
180
+ const parentConfig = {
181
+ namespace,
182
+ paramName: paramName ?? deriveParentParamName(namespace),
183
+ };
184
+ return createBuilder({
185
+ ...state,
186
+ parentResource: parentConfig,
187
+ });
188
+ },
97
189
  /**
98
190
  * Finalizes as a query procedure
99
191
  */
@@ -131,7 +223,9 @@ function compileProcedure(type, handler, state) {
131
223
  inputSchema: state.inputSchema,
132
224
  outputSchema: state.outputSchema,
133
225
  middlewares: typedMiddlewares,
226
+ guards: state.guards,
134
227
  restOverride: state.restOverride,
228
+ parentResource: state.parentResource,
135
229
  // Store pre-compiled executor for performance
136
230
  _precompiledExecutor: precompiledExecutor,
137
231
  };
@@ -252,11 +346,30 @@ export function defineProcedures(namespace, procedures) {
252
346
  * ```
253
347
  */
254
348
  export async function executeProcedure(procedure, rawInput, ctx) {
255
- // Step 1: Validate input if schema provided
349
+ // Step 1: Execute guards if any
350
+ if (procedure.guards.length > 0) {
351
+ // Defensive check: ensure request and reply exist in context
352
+ // These are required for guard execution but may be missing in test contexts
353
+ const request = ctx.request;
354
+ const reply = ctx.reply;
355
+ if (!request || !reply) {
356
+ throw new GuardError('context', 'Guard execution requires request and reply in context. ' +
357
+ 'Ensure the procedure is being called from a valid HTTP context.', 500);
358
+ }
359
+ for (const guard of procedure.guards) {
360
+ const passed = await guard.check(ctx, request, reply);
361
+ if (!passed) {
362
+ const statusCode = guard.statusCode ?? 403;
363
+ const message = guard.message ?? `Guard "${guard.name}" check failed`;
364
+ throw new GuardError(guard.name, message, statusCode);
365
+ }
366
+ }
367
+ }
368
+ // Step 2: Validate input if schema provided
256
369
  const input = procedure.inputSchema
257
370
  ? procedure.inputSchema.parse(rawInput)
258
371
  : rawInput;
259
- // Step 2: Execute handler (with or without middleware)
372
+ // Step 3: Execute handler (with or without middleware)
260
373
  let result;
261
374
  if (procedure._precompiledExecutor) {
262
375
  // PERFORMANCE: Use pre-compiled middleware chain executor
@@ -270,7 +383,7 @@ export async function executeProcedure(procedure, rawInput, ctx) {
270
383
  // Fallback: Build middleware chain dynamically (should not normally happen)
271
384
  result = await executeMiddlewareChainFallback(procedure.middlewares, input, ctx, async () => procedure.handler({ input, ctx }));
272
385
  }
273
- // Step 3: Validate output if schema provided
386
+ // Step 4: Validate output if schema provided
274
387
  if (procedure.outputSchema) {
275
388
  return procedure.outputSchema.parse(result);
276
389
  }
@@ -324,7 +437,8 @@ export function isCompiledProcedure(value) {
324
437
  const obj = value;
325
438
  return ((obj.type === 'query' || obj.type === 'mutation') &&
326
439
  typeof obj.handler === 'function' &&
327
- Array.isArray(obj.middlewares));
440
+ Array.isArray(obj.middlewares) &&
441
+ Array.isArray(obj.guards));
328
442
  }
329
443
  /**
330
444
  * Type guard to check if a value is a procedure collection
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/procedure/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/procedure/builder.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import type { BaseContext } from '@veloxts/core';
13
13
  import type { ZodType, ZodTypeDef } from 'zod';
14
- import type { CompiledProcedure, MiddlewareFunction, ProcedureHandler, RestRouteOverride } from '../types.js';
14
+ import type { CompiledProcedure, GuardLike, MiddlewareFunction, ParentResourceConfig, ProcedureHandler, RestRouteOverride } from '../types.js';
15
15
  /**
16
16
  * Internal state type that accumulates type information through the builder chain
17
17
  *
@@ -137,6 +137,39 @@ export interface ProcedureBuilder<TInput = unknown, TOutput = unknown, TContext
137
137
  * ```
138
138
  */
139
139
  use<TNewContext extends BaseContext = TContext>(middleware: MiddlewareFunction<TInput, TContext, TNewContext, TOutput>): ProcedureBuilder<TInput, TOutput, TNewContext>;
140
+ /**
141
+ * Adds an authorization guard to the procedure
142
+ *
143
+ * Guards are executed before the handler and middleware chain.
144
+ * If the guard check fails, a 401/403 error is returned.
145
+ *
146
+ * Guards are compatible with @veloxts/auth guards (authenticated, hasRole, etc.)
147
+ * but can be any object implementing the GuardLike interface.
148
+ *
149
+ * The guard type parameter accepts guards that require a subset of the current
150
+ * context (contravariant). This allows guards typed for `{ auth?: AuthContext }`
151
+ * to work with the full `BaseContext` since BaseContext extends that shape.
152
+ *
153
+ * @template TGuardContext - The context type required by the guard (must be a subset of TContext)
154
+ * @param guard - Guard definition to apply
155
+ * @returns Same builder (no type changes)
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * import { authenticated, hasRole } from '@veloxts/auth';
160
+ *
161
+ * // Require authentication
162
+ * procedure()
163
+ * .guard(authenticated)
164
+ * .query(async ({ ctx }) => { ... });
165
+ *
166
+ * // Require admin role
167
+ * procedure()
168
+ * .guard(hasRole('admin'))
169
+ * .mutation(async ({ input, ctx }) => { ... });
170
+ * ```
171
+ */
172
+ guard<TGuardContext extends Partial<TContext>>(guard: GuardLike<TGuardContext>): ProcedureBuilder<TInput, TOutput, TContext>;
140
173
  /**
141
174
  * Configures REST route override
142
175
  *
@@ -153,6 +186,35 @@ export interface ProcedureBuilder<TInput = unknown, TOutput = unknown, TContext
153
186
  * ```
154
187
  */
155
188
  rest(config: RestRouteOverride): ProcedureBuilder<TInput, TOutput, TContext>;
189
+ /**
190
+ * Declares a parent resource for nested routes
191
+ *
192
+ * When a procedure has a parent resource, the REST path will be nested
193
+ * under the parent: `/${parentNamespace}/:${parentParam}/${childNamespace}/:id`
194
+ *
195
+ * The input schema should include the parent parameter (e.g., `postId`) for
196
+ * proper type safety and runtime validation.
197
+ *
198
+ * @param namespace - Parent resource namespace (e.g., 'posts', 'users')
199
+ * @param paramName - Optional custom parameter name (default: `${singularNamespace}Id`)
200
+ * @returns Same builder (no type changes)
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Generates: GET /posts/:postId/comments/:id
205
+ * const getComment = procedure()
206
+ * .parent('posts')
207
+ * .input(z.object({ postId: z.string(), id: z.string() }))
208
+ * .query(async ({ input }) => { ... });
209
+ *
210
+ * // With custom param name: GET /posts/:post_id/comments/:id
211
+ * const getComment = procedure()
212
+ * .parent('posts', 'post_id')
213
+ * .input(z.object({ post_id: z.string(), id: z.string() }))
214
+ * .query(async ({ input }) => { ... });
215
+ * ```
216
+ */
217
+ parent(namespace: string, paramName?: string): ProcedureBuilder<TInput, TOutput, TContext>;
156
218
  /**
157
219
  * Finalizes the procedure as a query (read-only operation)
158
220
  *
@@ -205,8 +267,12 @@ export interface BuilderRuntimeState {
205
267
  outputSchema?: ValidSchema;
206
268
  /** Middleware chain */
207
269
  middlewares: MiddlewareFunction<unknown, BaseContext, BaseContext, unknown>[];
270
+ /** Guards to execute before handler */
271
+ guards: GuardLike<unknown>[];
208
272
  /** REST route override */
209
273
  restOverride?: RestRouteOverride;
274
+ /** Parent resource configuration for nested routes */
275
+ parentResource?: ParentResourceConfig;
210
276
  }
211
277
  /**
212
278
  * Type for the procedures object passed to defineProcedures
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedure/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/procedure/types.ts"],"names":[],"mappings":"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"}