@dismissible/nestjs-dismissible-request 0.0.1

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/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # @dismissible/nestjs-dismissible-request
2
+
3
+ Request context decorator for Dismissible applications.
4
+
5
+ > **Part of the Dismissible API** - This library is part of the [Dismissible API](https://dismissible.io) ecosystem. Visit [dismissible.io](https://dismissible.io) for more information and documentation.
6
+
7
+ ## Overview
8
+
9
+ This library provides a NestJS parameter decorator for extracting request context from HTTP requests:
10
+
11
+ - `RequestContext` - Parameter decorator that extracts request context from the current HTTP request
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @dismissible/nestjs-dismissible-request
17
+ ```
18
+
19
+ ## Getting Started
20
+
21
+ ### Basic Usage
22
+
23
+ Use the `RequestContext` decorator in your controllers to extract request context:
24
+
25
+ ```typescript
26
+ import { Controller, Get } from '@nestjs/common';
27
+ import { RequestContext, IRequestContext } from '@dismissible/nestjs-dismissible-request';
28
+
29
+ @Controller('items')
30
+ export class ItemsController {
31
+ @Get()
32
+ async getItems(@RequestContext() context: IRequestContext) {
33
+ // Use context.requestId, context.headers, etc.
34
+ return { requestId: context.requestId };
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## API Reference
40
+
41
+ ### RequestContext
42
+
43
+ A NestJS parameter decorator that extracts request context from the current HTTP request.
44
+
45
+ The decorator returns an `IRequestContext` object containing:
46
+
47
+ - `requestId` - Unique request identifier (from `x-request-id` header or generated UUID)
48
+ - `headers` - Request headers
49
+ - `query` - Query parameters
50
+ - `params` - Route parameters
51
+ - `body` - Request body
52
+ - `user` - Authenticated user (if available)
53
+ - `ip` - Client IP address
54
+ - `method` - HTTP method
55
+ - `url` - Request URL
56
+ - `protocol` - Request protocol
57
+ - `secure` - Whether the request is secure (HTTPS)
58
+ - `hostname` - Request hostname
59
+ - `port` - Request port
60
+ - `path` - Request path
61
+ - `search` - Query string
62
+ - `searchParams` - Parsed search parameters
63
+ - `origin` - Request origin
64
+ - `referer` - Referer header
65
+ - `userAgent` - User agent header
66
+
67
+ ## Related Packages
68
+
69
+ This library is typically used alongside other Dismissible packages:
70
+
71
+ - `@dismissible/nestjs-dismissible-hooks` - Provides the `IRequestContext` interface
72
+ - `@dismissible/nestjs-dismissible` - Main dismissible service and module
73
+
74
+ ## License
75
+
76
+ MIT
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@dismissible/nestjs-dismissible-request",
3
+ "version": "0.0.1",
4
+ "description": "Request context decorator for Dismissible applications",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./src/index.mjs",
10
+ "require": "./src/index.js",
11
+ "types": "./src/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "src",
16
+ "README.md"
17
+ ],
18
+ "dependencies": {
19
+ "uuid": "^13.0.0"
20
+ },
21
+ "peerDependencies": {
22
+ "@nestjs/common": "^11.0.0"
23
+ },
24
+ "peerDependenciesMeta": {
25
+ "@nestjs/common": {
26
+ "optional": false
27
+ }
28
+ },
29
+ "keywords": [
30
+ "nestjs",
31
+ "dismissible",
32
+ "request",
33
+ "context",
34
+ "decorator"
35
+ ],
36
+ "author": "",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/DismissibleIo/dismissible-api"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "type": "commonjs"
46
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './request-context.decorator';
2
+ export * from './request-context.interface';
package/src/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./request-context.decorator"), exports);
5
+ tslib_1.__exportStar(require("./request-context.interface"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/dismissible-request/src/index.ts"],"names":[],"mappings":";;;AAAA,sEAA4C;AAC5C,sEAA4C"}
@@ -0,0 +1 @@
1
+ export declare const RequestContext: (...dataOrPipes: unknown[]) => ParameterDecorator;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestContext = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const uuid_1 = require("uuid");
6
+ exports.RequestContext = (0, common_1.createParamDecorator)((_data, ctx) => {
7
+ const request = ctx.switchToHttp().getRequest();
8
+ const headers = request.headers;
9
+ return {
10
+ requestId: headers['x-request-id'] ?? (0, uuid_1.v4)(),
11
+ headers,
12
+ query: request.query,
13
+ params: request.params,
14
+ body: request.body,
15
+ user: request.user,
16
+ ip: request.ip,
17
+ method: request.method,
18
+ url: request.url,
19
+ protocol: request.protocol,
20
+ secure: request.secure,
21
+ hostname: request.hostname,
22
+ port: request.port,
23
+ path: request.path,
24
+ search: request.search,
25
+ searchParams: request.searchParams,
26
+ origin: request.origin,
27
+ referer: request.referer,
28
+ userAgent: request.userAgent,
29
+ };
30
+ });
31
+ //# sourceMappingURL=request-context.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.decorator.js","sourceRoot":"","sources":["../../../../libs/dismissible-request/src/request-context.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AACxE,+BAAoC;AAGvB,QAAA,cAAc,GAAG,IAAA,6BAAoB,EAChD,CAAC,KAAc,EAAE,GAAqB,EAAmB,EAAE;IACzD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,IAAA,SAAM,GAAE;QAC9C,OAAO;QACP,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Request context passed through the dismissible operations.
3
+ */
4
+ export type IRequestContext = {
5
+ requestId: string;
6
+ headers: Record<string, string>;
7
+ query: Record<string, string>;
8
+ params: Record<string, string>;
9
+ body: Record<string, string>;
10
+ user: Record<string, string>;
11
+ ip: string;
12
+ method: string;
13
+ url: string;
14
+ protocol: string;
15
+ secure: boolean;
16
+ hostname: string;
17
+ port: number;
18
+ path: string;
19
+ search: string;
20
+ searchParams: Record<string, string>;
21
+ origin: string;
22
+ referer: string;
23
+ userAgent: string;
24
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=request-context.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.interface.js","sourceRoot":"","sources":["../../../../libs/dismissible-request/src/request-context.interface.ts"],"names":[],"mappings":""}