@shadow-library/fastify 0.0.9 → 0.0.11

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.
Files changed (72) hide show
  1. package/README.md +58 -0
  2. package/cjs/classes/default-error-handler.d.ts +6 -0
  3. package/cjs/classes/default-error-handler.js +9 -0
  4. package/cjs/constants.d.ts +12 -0
  5. package/cjs/constants.js +12 -0
  6. package/cjs/decorators/http-controller.decorator.d.ts +6 -0
  7. package/cjs/decorators/http-controller.decorator.js +12 -0
  8. package/cjs/decorators/http-input.decorator.d.ts +6 -0
  9. package/cjs/decorators/http-input.decorator.js +12 -0
  10. package/cjs/decorators/http-output.decorator.d.ts +9 -0
  11. package/cjs/decorators/http-output.decorator.js +6 -0
  12. package/cjs/decorators/http-route.decorator.d.ts +9 -0
  13. package/cjs/decorators/http-route.decorator.js +12 -0
  14. package/cjs/decorators/middleware.decorator.d.ts +11 -0
  15. package/cjs/decorators/middleware.decorator.js +9 -0
  16. package/cjs/decorators/sensitive.decorator.d.ts +9 -0
  17. package/cjs/decorators/sensitive.decorator.js +3 -0
  18. package/cjs/index.d.ts +6 -0
  19. package/cjs/index.js +6 -0
  20. package/cjs/interfaces/error-handler.interface.d.ts +12 -0
  21. package/cjs/interfaces/error-handler.interface.js +3 -0
  22. package/cjs/interfaces/middleware.interface.d.ts +9 -0
  23. package/cjs/interfaces/route-handler.interface.d.ts +12 -0
  24. package/cjs/interfaces/server-metadata.interface.d.ts +9 -0
  25. package/cjs/module/error-response.dto.d.ts +9 -0
  26. package/cjs/module/error-response.dto.js +12 -0
  27. package/cjs/module/fastify-module.interface.d.ts +55 -0
  28. package/cjs/module/fastify-router.d.ts +11 -0
  29. package/cjs/module/fastify-router.js +20 -1
  30. package/cjs/module/fastify.module.d.ts +6 -0
  31. package/cjs/module/fastify.module.js +12 -0
  32. package/cjs/module/fastify.utils.js +14 -1
  33. package/cjs/server.error.d.ts +15 -0
  34. package/cjs/server.error.js +24 -0
  35. package/cjs/services/context.service.d.ts +10 -1
  36. package/cjs/services/context.service.js +9 -0
  37. package/esm/classes/default-error-handler.d.ts +6 -0
  38. package/esm/classes/default-error-handler.js +9 -0
  39. package/esm/constants.d.ts +12 -0
  40. package/esm/constants.js +12 -0
  41. package/esm/decorators/http-controller.decorator.d.ts +6 -0
  42. package/esm/decorators/http-controller.decorator.js +12 -0
  43. package/esm/decorators/http-input.decorator.d.ts +6 -0
  44. package/esm/decorators/http-input.decorator.js +12 -0
  45. package/esm/decorators/http-output.decorator.d.ts +9 -0
  46. package/esm/decorators/http-output.decorator.js +6 -0
  47. package/esm/decorators/http-route.decorator.d.ts +9 -0
  48. package/esm/decorators/http-route.decorator.js +12 -0
  49. package/esm/decorators/middleware.decorator.d.ts +11 -0
  50. package/esm/decorators/middleware.decorator.js +9 -0
  51. package/esm/decorators/sensitive.decorator.d.ts +9 -0
  52. package/esm/decorators/sensitive.decorator.js +3 -0
  53. package/esm/index.d.ts +6 -0
  54. package/esm/index.js +6 -0
  55. package/esm/interfaces/error-handler.interface.d.ts +12 -0
  56. package/esm/interfaces/error-handler.interface.js +3 -0
  57. package/esm/interfaces/middleware.interface.d.ts +9 -0
  58. package/esm/interfaces/route-handler.interface.d.ts +12 -0
  59. package/esm/interfaces/server-metadata.interface.d.ts +9 -0
  60. package/esm/module/error-response.dto.d.ts +9 -0
  61. package/esm/module/error-response.dto.js +12 -0
  62. package/esm/module/fastify-module.interface.d.ts +55 -0
  63. package/esm/module/fastify-router.d.ts +11 -0
  64. package/esm/module/fastify-router.js +20 -1
  65. package/esm/module/fastify.module.d.ts +6 -0
  66. package/esm/module/fastify.module.js +12 -0
  67. package/esm/module/fastify.utils.js +14 -1
  68. package/esm/server.error.d.ts +15 -0
  69. package/esm/server.error.js +24 -0
  70. package/esm/services/context.service.d.ts +10 -1
  71. package/esm/services/context.service.js +9 -0
  72. package/package.json +1 -1
@@ -16,6 +16,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  };
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.FastifyRouter = void 0;
19
+ /**
20
+ * Importing npm packages
21
+ */
19
22
  const node_assert_1 = __importDefault(require("node:assert"));
20
23
  const app_1 = require("@shadow-library/app");
21
24
  const class_schema_1 = require("@shadow-library/class-schema");
@@ -23,9 +26,15 @@ const common_1 = require("@shadow-library/common");
23
26
  const deepmerge_1 = __importDefault(require("deepmerge"));
24
27
  const find_my_way_1 = __importDefault(require("find-my-way"));
25
28
  const json_stable_stringify_1 = __importDefault(require("json-stable-stringify"));
29
+ /**
30
+ * Importing user defined packages
31
+ */
26
32
  const constants_1 = require("../constants.js");
27
33
  const decorators_1 = require("../decorators/index.js");
28
34
  const services_1 = require("../services/index.js");
35
+ /**
36
+ * Declaring the constants
37
+ */
29
38
  const httpMethods = Object.values(decorators_1.HttpMethod).filter(m => m !== decorators_1.HttpMethod.ALL);
30
39
  const DEFAULT_ARTIFACTS = { transforms: {} };
31
40
  let FastifyRouter = class FastifyRouter extends app_1.Router {
@@ -90,7 +99,7 @@ let FastifyRouter = class FastifyRouter extends app_1.Router {
90
99
  metadata.reqIp = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
91
100
  metadata.resLen = res.getHeader('content-length');
92
101
  const resTime = process.hrtime(startTime);
93
- metadata.timeTaken = (resTime[0] * 1e3 + resTime[1] * 1e-6).toFixed(3);
102
+ metadata.timeTaken = (resTime[0] * 1e3 + resTime[1] * 1e-6).toFixed(3); // Converting time to milliseconds
94
103
  if (req.body)
95
104
  metadata.body = transforms.maskBody ? transforms.maskBody(structuredClone(req.body)) : req.body;
96
105
  if (req.query)
@@ -152,10 +161,12 @@ let FastifyRouter = class FastifyRouter extends app_1.Router {
152
161
  const query = request.query;
153
162
  const body = request.body;
154
163
  const context = { request, response, params, query, body };
164
+ /** Setting the status code and headers */
155
165
  response.status(statusCode);
156
166
  for (const [key, value] of Object.entries(metadata.headers ?? {})) {
157
167
  response.header(key, typeof value === 'function' ? value() : value);
158
168
  }
169
+ /** Handling the actual route and serializing the output */
159
170
  const args = argsOrder.map(arg => arg && context[arg]);
160
171
  const data = await route.handler(...args);
161
172
  if (metadata.redirect)
@@ -176,11 +187,13 @@ let FastifyRouter = class FastifyRouter extends app_1.Router {
176
187
  async getMiddlewareHandler(middleware, metadata) {
177
188
  if (!middleware.metadata.generates)
178
189
  return middleware.handler.bind(middleware.instance);
190
+ /** Generating the cache key and getting the cached middleware */
179
191
  const genCacheKey = 'cacheKey' in middleware.instance && typeof middleware.instance.cacheKey === 'function' ? middleware.instance.cacheKey : json_stable_stringify_1.default;
180
192
  const cacheKey = genCacheKey(metadata);
181
193
  const cachedMiddleware = this.cachedDynamicMiddlewares.get(cacheKey);
182
194
  if (cachedMiddleware)
183
195
  return cachedMiddleware;
196
+ /** Generating the middleware handler */
184
197
  const handler = await middleware.handler.apply(middleware.instance, [metadata]);
185
198
  this.cachedDynamicMiddlewares.set(cacheKey, handler);
186
199
  return handler;
@@ -206,6 +219,7 @@ let FastifyRouter = class FastifyRouter extends app_1.Router {
206
219
  routeOptions.url = metadata.path;
207
220
  routeOptions.method = metadata.method === decorators_1.HttpMethod.ALL ? httpMethods : [metadata.method];
208
221
  routeOptions.handler = this.generateRouteHandler(route);
222
+ /** Applying middlewares */
209
223
  for (const middleware of middlewares) {
210
224
  const name = middleware.metatype.name;
211
225
  const { type } = middleware.metadata;
@@ -266,6 +280,11 @@ let FastifyRouter = class FastifyRouter extends app_1.Router {
266
280
  await this.instance.close();
267
281
  this.logger.info('server stopped');
268
282
  }
283
+ /**
284
+ * Creates a new child context derived from the current one to load route-specific data
285
+ * during SSR. Automatically reuses middleware results from the parent context to avoid
286
+ * redundant execution and ensures correct context isolation for nested route data fetching.
287
+ */
269
288
  async resolveChildRoute(url) {
270
289
  if (!this.childRouter)
271
290
  throw new common_1.InternalError('Child routes are not enabled');
@@ -1,5 +1,11 @@
1
1
  import { Class } from 'type-fest';
2
2
  import { FastifyModuleAsyncOptions, FastifyModuleOptions } from './fastify-module.interface.js';
3
+ /**
4
+ * Defining types
5
+ */
6
+ /**
7
+ * Declaring the constants
8
+ */
3
9
  export declare class FastifyModule {
4
10
  private static getDefaultConfig;
5
11
  static forRoot(options: FastifyModuleOptions): Class<FastifyModule>;
@@ -1,16 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FastifyModule = void 0;
4
+ /**
5
+ * Importing npm packages
6
+ */
4
7
  const app_1 = require("@shadow-library/app");
5
8
  const class_schema_1 = require("@shadow-library/class-schema");
6
9
  const common_1 = require("@shadow-library/common");
7
10
  const uuid_1 = require("uuid");
11
+ /**
12
+ * Importing user defined packages
13
+ */
8
14
  const classes_1 = require("../classes/index.js");
9
15
  const constants_1 = require("../constants.js");
10
16
  const services_1 = require("../services/index.js");
11
17
  const error_response_dto_1 = require("./error-response.dto.js");
12
18
  const fastify_router_1 = require("./fastify-router.js");
13
19
  const fastify_utils_1 = require("./fastify.utils.js");
20
+ /**
21
+ * Defining types
22
+ */
23
+ /**
24
+ * Declaring the constants
25
+ */
14
26
  class FastifyModule {
15
27
  static getDefaultConfig() {
16
28
  const errorResponseSchema = class_schema_1.ClassSchema.generate(error_response_dto_1.ErrorResponseDto);
@@ -7,11 +7,23 @@ exports.notFoundHandler = void 0;
7
7
  exports.compileValidator = compileValidator;
8
8
  exports.formatSchemaErrors = formatSchemaErrors;
9
9
  exports.createFastifyInstance = createFastifyInstance;
10
+ /**
11
+ * Importing npm packages
12
+ */
10
13
  const node_assert_1 = __importDefault(require("node:assert"));
11
14
  const common_1 = require("@shadow-library/common");
12
15
  const ajv_1 = __importDefault(require("ajv"));
13
16
  const fastify_1 = require("fastify");
17
+ /**
18
+ * Importing user defined packages
19
+ */
14
20
  const server_error_1 = require("../server.error.js");
21
+ /**
22
+ * Defining types
23
+ */
24
+ /**
25
+ * Declaring the constants
26
+ */
15
27
  const keywords = ['x-fastify'];
16
28
  const allowedHttpParts = ['body', 'params', 'querystring'];
17
29
  const strictValidator = new ajv_1.default({ allErrors: true, useDefaults: true, removeAdditional: true, strict: true, keywords });
@@ -39,12 +51,13 @@ function compileValidator(routeSchema) {
39
51
  return (data) => {
40
52
  validate(data);
41
53
  for (const error of validate.errors ?? []) {
54
+ /** Since this schema is for querystring there won't be any nested objects so we are directly accessing the path */
42
55
  const path = error.instancePath.substring(1);
43
56
  const defaultValue = routeSchema.schema.properties?.[path]?.default;
44
57
  if (defaultValue !== undefined)
45
58
  data[path] = defaultValue;
46
59
  else
47
- delete data[path];
60
+ delete data[path]; // eslint-disable-line @typescript-eslint/no-dynamic-delete
48
61
  }
49
62
  return { value: data };
50
63
  };
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { AppError, ErrorCode, ErrorType } from '@shadow-library/common';
2
5
  export declare class ServerError extends AppError<ServerErrorCode> {
3
6
  getStatusCode(): number;
@@ -6,13 +9,25 @@ export declare class ServerErrorCode extends ErrorCode {
6
9
  private readonly statusCode;
7
10
  protected constructor(code: string, type: ErrorType, msg: string, statusCode?: number);
8
11
  getStatusCode(): number;
12
+ /*!
13
+ * List of all server related errors
14
+ */
15
+ /** An unexpected server error occurred while processing the request */
9
16
  static readonly S001: ServerErrorCode;
17
+ /** The requested endpoint does not exist */
10
18
  static readonly S002: ServerErrorCode;
19
+ /** The provided input data is invalid or does not meet validation requirements */
11
20
  static readonly S003: ServerErrorCode;
21
+ /** Authentication credentials are required to access this resource */
12
22
  static readonly S004: ServerErrorCode;
23
+ /** Access denied due to insufficient permissions to perform this operation */
13
24
  static readonly S005: ServerErrorCode;
25
+ /** The request is malformed or contains invalid parameters */
14
26
  static readonly S006: ServerErrorCode;
27
+ /** Rate limit exceeded due to too many requests sent in a given time frame */
15
28
  static readonly S007: ServerErrorCode;
29
+ /** Resource conflict as the requested operation conflicts with existing data */
16
30
  static readonly S008: ServerErrorCode;
31
+ /** The requested resource could not be found */
17
32
  static readonly S009: ServerErrorCode;
18
33
  }
@@ -1,7 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServerErrorCode = exports.ServerError = void 0;
4
+ /**
5
+ * Importing npm packages
6
+ */
4
7
  const common_1 = require("@shadow-library/common");
8
+ /**
9
+ * Importing user defined packages
10
+ */
11
+ /**
12
+ * Defining types
13
+ */
14
+ /**
15
+ * Declaring the constants
16
+ */
5
17
  const ERROR_STATUS_CODES = {
6
18
  [common_1.ErrorType.CLIENT_ERROR]: 400,
7
19
  [common_1.ErrorType.HTTP_ERROR]: 400,
@@ -27,14 +39,26 @@ class ServerErrorCode extends common_1.ErrorCode {
27
39
  getStatusCode() {
28
40
  return this.statusCode;
29
41
  }
42
+ /*!
43
+ * List of all server related errors
44
+ */
45
+ /** An unexpected server error occurred while processing the request */
30
46
  static S001 = new ServerErrorCode('S001', common_1.ErrorType.SERVER_ERROR, 'An unexpected server error occurred while processing the request');
47
+ /** The requested endpoint does not exist */
31
48
  static S002 = new ServerErrorCode('S002', common_1.ErrorType.NOT_FOUND, 'The requested endpoint does not exist');
49
+ /** The provided input data is invalid or does not meet validation requirements */
32
50
  static S003 = new ServerErrorCode('S003', common_1.ErrorType.VALIDATION_ERROR, 'The provided input data is invalid or does not meet validation requirements');
51
+ /** Authentication credentials are required to access this resource */
33
52
  static S004 = new ServerErrorCode('S004', common_1.ErrorType.UNAUTHENTICATED, 'Authentication credentials are required to access this resource');
53
+ /** Access denied due to insufficient permissions to perform this operation */
34
54
  static S005 = new ServerErrorCode('S005', common_1.ErrorType.UNAUTHORIZED, 'Access denied due to insufficient permissions to perform this operation');
55
+ /** The request is malformed or contains invalid parameters */
35
56
  static S006 = new ServerErrorCode('S006', common_1.ErrorType.CLIENT_ERROR, 'The request is malformed or contains invalid parameters');
57
+ /** Rate limit exceeded due to too many requests sent in a given time frame */
36
58
  static S007 = new ServerErrorCode('S007', common_1.ErrorType.CLIENT_ERROR, 'Rate limit exceeded due to too many requests sent in a given time frame', 429);
59
+ /** Resource conflict as the requested operation conflicts with existing data */
37
60
  static S008 = new ServerErrorCode('S008', common_1.ErrorType.CONFLICT, 'Resource conflict as the requested operation conflicts with existing data');
61
+ /** The requested resource could not be found */
38
62
  static S009 = new ServerErrorCode('S009', common_1.ErrorType.NOT_FOUND, 'The requested resource could not be found');
39
63
  }
40
64
  exports.ServerErrorCode = ServerErrorCode;
@@ -1,7 +1,15 @@
1
1
  import { onRequestHookHandler } from 'fastify';
2
+ /**
3
+ * Importing user defined packages
4
+ */
2
5
  import { HttpRequest, HttpResponse } from '../interfaces/index.js';
6
+ /**
7
+ * Defining types
8
+ */
3
9
  type Key = string | symbol;
4
- export declare class ContextService {
10
+ export interface ContextExtension {
11
+ }
12
+ export declare class ContextService implements ContextExtension {
5
13
  static readonly name = "ContextService";
6
14
  private readonly storage;
7
15
  init(): onRequestHookHandler;
@@ -21,5 +29,6 @@ export declare class ContextService {
21
29
  getResponse(throwOnMissing: false): HttpResponse | null;
22
30
  getRID(): string;
23
31
  getRID(throwOnMissing: false): string | null;
32
+ extend<T extends ContextExtension = ContextExtension>(extension: T & ThisType<this & T>): this;
24
33
  }
25
34
  export {};
@@ -7,9 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ContextService = void 0;
10
+ /**
11
+ * Importing npm packages
12
+ */
10
13
  const node_async_hooks_1 = require("node:async_hooks");
11
14
  const app_1 = require("@shadow-library/app");
12
15
  const common_1 = require("@shadow-library/common");
16
+ /**
17
+ * Declaring the constants
18
+ */
13
19
  const REQUEST = Symbol('request');
14
20
  const RESPONSE = Symbol('response');
15
21
  const RID = Symbol('rid');
@@ -92,6 +98,9 @@ let ContextService = class ContextService {
92
98
  getRID(throwOnMissing = true) {
93
99
  return this.get(RID, throwOnMissing);
94
100
  }
101
+ extend(extension) {
102
+ return Object.assign(this, extension);
103
+ }
95
104
  };
96
105
  exports.ContextService = ContextService;
97
106
  exports.ContextService = ContextService = __decorate([
@@ -1,6 +1,12 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { AppErrorObject } from '@shadow-library/common';
2
5
  import { FastifyError } from 'fastify';
3
6
  import { ErrorHandler, HttpRequest, HttpResponse } from '../interfaces/index.js';
7
+ /**
8
+ * Defining types
9
+ */
4
10
  export interface ParsedFastifyError {
5
11
  statusCode: number;
6
12
  error: AppErrorObject;
@@ -1,6 +1,15 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { AppError, Logger, ValidationError } from '@shadow-library/common';
5
+ /**
6
+ * Importing user defined packages
7
+ */
2
8
  import { NAMESPACE } from '../constants.js';
3
9
  import { ServerError, ServerErrorCode } from '../server.error.js';
10
+ /**
11
+ * Declaring the constants
12
+ */
4
13
  const unexpectedError = new ServerError(ServerErrorCode.S001);
5
14
  const validationError = new ServerError(ServerErrorCode.S003);
6
15
  const invalidRequestError = new ServerError(ServerErrorCode.S006);
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
4
+ /**
5
+ * Importing user defined packages
6
+ */
7
+ /**
8
+ * Defining types
9
+ */
10
+ /**
11
+ * Declaring the constants
12
+ */
1
13
  export declare const NAMESPACE = "@shadow-library/fastify";
2
14
  export declare const PARAMTYPES_METADATA = "design:paramtypes";
3
15
  export declare const FASTIFY_CONFIG: unique symbol;
package/esm/constants.js CHANGED
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
4
+ /**
5
+ * Importing user defined packages
6
+ */
7
+ /**
8
+ * Defining types
9
+ */
10
+ /**
11
+ * Declaring the constants
12
+ */
1
13
  export const NAMESPACE = '@shadow-library/fastify';
2
14
  export const PARAMTYPES_METADATA = 'design:paramtypes';
3
15
  export const FASTIFY_CONFIG = Symbol('fastify-config');
@@ -1 +1,7 @@
1
+ /**
2
+ * Defining types
3
+ */
4
+ /**
5
+ * Declaring the constants
6
+ */
1
7
  export declare function HttpController(path?: string): ClassDecorator;
@@ -1,5 +1,17 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { Controller } from '@shadow-library/app';
5
+ /**
6
+ * Importing user defined packages
7
+ */
2
8
  import { HTTP_CONTROLLER_TYPE } from '../constants.js';
9
+ /**
10
+ * Defining types
11
+ */
12
+ /**
13
+ * Declaring the constants
14
+ */
3
15
  export function HttpController(path = '') {
4
16
  if (path.charAt(0) !== '/')
5
17
  path = `/${path}`;
@@ -1,5 +1,8 @@
1
1
  import { JSONSchema } from '@shadow-library/class-schema';
2
2
  import { Class } from 'type-fest';
3
+ /**
4
+ * Defining types
5
+ */
3
6
  export declare enum RouteInputType {
4
7
  BODY = "body",
5
8
  PARAMS = "params",
@@ -8,6 +11,9 @@ export declare enum RouteInputType {
8
11
  RESPONSE = "response"
9
12
  }
10
13
  export type RouteInputSchemas = Partial<Record<'body' | 'params' | 'query', JSONSchema | Class<unknown>>>;
14
+ /**
15
+ * Declaring the constants
16
+ */
11
17
  export declare function HttpInput(type: RouteInputType, schema?: JSONSchema): ParameterDecorator;
12
18
  export declare const Body: (schema?: JSONSchema) => ParameterDecorator;
13
19
  export declare const Params: (schema?: JSONSchema) => ParameterDecorator;
@@ -1,6 +1,15 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import assert from 'node:assert';
2
5
  import { Route } from '@shadow-library/app';
6
+ /**
7
+ * Importing user defined packages
8
+ */
3
9
  import { HTTP_CONTROLLER_INPUTS, PARAMTYPES_METADATA } from '../constants.js';
10
+ /**
11
+ * Defining types
12
+ */
4
13
  export var RouteInputType;
5
14
  (function (RouteInputType) {
6
15
  RouteInputType["BODY"] = "body";
@@ -9,6 +18,9 @@ export var RouteInputType;
9
18
  RouteInputType["REQUEST"] = "request";
10
19
  RouteInputType["RESPONSE"] = "response";
11
20
  })(RouteInputType || (RouteInputType = {}));
21
+ /**
22
+ * Declaring the constants
23
+ */
12
24
  export function HttpInput(type, schema) {
13
25
  return (target, propertyKey, index) => {
14
26
  assert(propertyKey, 'Cannot apply decorator to a constructor parameter');
@@ -1,5 +1,14 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { JSONSchema, SchemaClass } from '@shadow-library/class-schema';
2
5
  import { JsonObject } from 'type-fest';
6
+ /**
7
+ * Importing user defined packages
8
+ */
9
+ /**
10
+ * Defining types
11
+ */
3
12
  export interface DynamicRender<T extends JsonObject> {
4
13
  template: string;
5
14
  data: T;
@@ -1,5 +1,11 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { Route } from '@shadow-library/app';
2
5
  import { ClassSchema } from '@shadow-library/class-schema';
6
+ /**
7
+ * Declaring the constants
8
+ */
3
9
  const isClass = (schema) => schema.toString().startsWith('class ');
4
10
  export const HttpStatus = (status) => Route({ status });
5
11
  export const Header = (name, value) => Route({ headers: { [name]: value } });
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Importing user defined packages
3
+ */
4
+ /**
5
+ * Defining types
6
+ */
1
7
  export declare enum HttpMethod {
2
8
  GET = "GET",
3
9
  POST = "POST",
@@ -12,6 +18,9 @@ export interface RouteOptions {
12
18
  method: HttpMethod;
13
19
  path?: string;
14
20
  }
21
+ /**
22
+ * Declaring the constants
23
+ */
15
24
  export declare function HttpRoute(options: RouteOptions): MethodDecorator;
16
25
  export declare const Get: (path?: string) => MethodDecorator;
17
26
  export declare const Post: (path?: string) => MethodDecorator;
@@ -1,4 +1,13 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { Route } from '@shadow-library/app';
5
+ /**
6
+ * Importing user defined packages
7
+ */
8
+ /**
9
+ * Defining types
10
+ */
2
11
  export var HttpMethod;
3
12
  (function (HttpMethod) {
4
13
  HttpMethod["GET"] = "GET";
@@ -10,6 +19,9 @@ export var HttpMethod;
10
19
  HttpMethod["HEAD"] = "HEAD";
11
20
  HttpMethod["ALL"] = "ALL";
12
21
  })(HttpMethod || (HttpMethod = {}));
22
+ /**
23
+ * Declaring the constants
24
+ */
13
25
  export function HttpRoute(options) {
14
26
  if (options.path && options.path.charAt(0) !== '/')
15
27
  options.path = `/${options.path}`;
@@ -1,7 +1,18 @@
1
+ /**
2
+ * Importing user defined packages
3
+ */
1
4
  import { HTTP_CONTROLLER_TYPE } from '../constants.js';
5
+ /**
6
+ * Defining types
7
+ */
2
8
  export type MiddlewareType = 'onRequest' | 'preParsing' | 'preValidation' | 'preHandler' | 'preSerialization' | 'onSend' | 'onResponse' | 'onError';
3
9
  export interface MiddlewareOptions {
10
+ /**
11
+ * Denotes when to execute the middleware. default value is `preHandler`.
12
+ * see https://fastify.dev/docs/latest/Reference/Lifecycle for more information
13
+ */
4
14
  type: MiddlewareType;
15
+ /** Denotes the execution order, the higher value gets executed first */
5
16
  weight: number;
6
17
  }
7
18
  export interface MiddlewareMetadata extends MiddlewareOptions {
@@ -1,6 +1,15 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import assert from 'node:assert';
2
5
  import { Controller } from '@shadow-library/app';
6
+ /**
7
+ * Importing user defined packages
8
+ */
3
9
  import { HTTP_CONTROLLER_TYPE } from '../constants.js';
10
+ /**
11
+ * Declaring the constants
12
+ */
4
13
  const propertyKeys = ['generate', 'use'];
5
14
  export function Middleware(options = {}) {
6
15
  if (!options.type)
@@ -1,4 +1,13 @@
1
1
  import { MaskOptions } from '@shadow-library/common';
2
+ /**
3
+ * Importing user defined packages
4
+ */
5
+ /**
6
+ * Defining types
7
+ */
2
8
  export type SensitiveDataType = 'secret' | 'email' | 'number' | 'words';
9
+ /**
10
+ * Declaring the constants
11
+ */
3
12
  export declare function Sensitive(type?: SensitiveDataType): PropertyDecorator;
4
13
  export declare function Sensitive(maskOptions: MaskOptions): PropertyDecorator;
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { FieldMetadata } from '@shadow-library/class-schema';
2
5
  export function Sensitive(typeOrMaskOptions = 'secret') {
3
6
  return (target, propertyKey) => {
package/esm/index.d.ts CHANGED
@@ -1,4 +1,10 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import 'reflect-metadata';
5
+ /**
6
+ * exporting modules
7
+ */
2
8
  export * from './classes/index.js';
3
9
  export * from './decorators/index.js';
4
10
  export * from './interfaces/index.js';
package/esm/index.js CHANGED
@@ -1,4 +1,10 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import 'reflect-metadata';
5
+ /**
6
+ * exporting modules
7
+ */
2
8
  export * from './classes/index.js';
3
9
  export * from './decorators/index.js';
4
10
  export * from './interfaces/index.js';
@@ -1,4 +1,16 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
4
+ /**
5
+ * Importing user defined packages
6
+ */
1
7
  import { HttpRequest, HttpResponse } from './route-handler.interface.js';
8
+ /**
9
+ * Defining types
10
+ */
11
+ /**
12
+ * Declaring the constants
13
+ */
2
14
  export interface ErrorHandler {
3
15
  handle(err: Error, req: HttpRequest, res: HttpResponse): any | Promise<any>;
4
16
  }
@@ -1 +1,4 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  export {};
@@ -1,5 +1,14 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { RouteMetadata } from '@shadow-library/app';
5
+ /**
6
+ * Importing user defined packages
7
+ */
2
8
  import { HttpCallback, HttpRequest, HttpResponse, RouteHandler } from './route-handler.interface.js';
9
+ /**
10
+ * Defining types
11
+ */
3
12
  export interface MiddlewareGenerator {
4
13
  cacheKey?: (metadata: RouteMetadata) => string;
5
14
  generate(metadata: RouteMetadata): RouteHandler | undefined | Promise<RouteHandler | undefined>;
@@ -1,5 +1,17 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { SyncValue } from '@shadow-library/common';
2
5
  import { DoneFuncWithErrOrRes, FastifyReply, FastifyRequest } from 'fastify';
6
+ /**
7
+ * Importing user defined packages
8
+ */
9
+ /**
10
+ * Defining types
11
+ */
12
+ /**
13
+ * Declaring the constants
14
+ */
3
15
  export type HttpRequest = FastifyRequest;
4
16
  export type HttpResponse = FastifyReply;
5
17
  export type HttpCallback = DoneFuncWithErrOrRes;
@@ -1,8 +1,17 @@
1
+ /**
2
+ * Importing npm packages
3
+ */
1
4
  import { RouteMetadata } from '@shadow-library/app';
2
5
  import { JSONSchema } from '@shadow-library/class-schema';
3
6
  import { RouteShorthandOptions } from 'fastify';
7
+ /**
8
+ * Importing user defined packages
9
+ */
4
10
  import { HTTP_CONTROLLER_TYPE } from '../constants.js';
5
11
  import { HttpMethod, RouteInputSchemas } from '../decorators/index.js';
12
+ /**
13
+ * Defining types
14
+ */
6
15
  declare module '@shadow-library/app' {
7
16
  interface RouteMetadata extends Omit<RouteShorthandOptions, 'config'> {
8
17
  method?: HttpMethod;