@dismissible/nestjs-request 1.0.3-alpha.064e57a.0

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,91 @@
1
+ <p align="center">
2
+ <a href="https://dismissible.io" target="_blank"><img src="../../docs/images/dismissible_logo.png" width="120" alt="Dismissible" /></a>
3
+ </p>
4
+
5
+ <p align="center">Never Show The Same Thing Twice!</p>
6
+ <p align="center">
7
+ <a href="https://www.npmjs.com/package/@dismissible/nestjs-request" target="_blank"><img src="https://img.shields.io/npm/v/@dismissible/nestjs-request.svg" alt="NPM Version" /></a>
8
+ <a href="https://github.com/dismissibleio/dismissible-api/blob/main/LICENSE" target="_blank"><img src="https://img.shields.io/npm/l/@dismissible/nestjs-request.svg" alt="Package License" /></a>
9
+ <a href="https://www.npmjs.com/package/@dismissible/nestjs-request" target="_blank"><img src="https://img.shields.io/npm/dm/@dismissible/nestjs-request.svg" alt="NPM Downloads" /></a>
10
+ <a href="https://github.com/dismissibleio/dismissible-api" target="_blank"><img alt="GitHub Actions Workflow Status" src="https://img.shields.io/github/actions/workflow/status/dismissibleio/dismissible-api/release.yml"></a>
11
+ <a href="https://paypal.me/joshstuartx" target="_blank"><img src="https://img.shields.io/badge/Donate-PayPal-ff3f59.svg"/></a>
12
+ </p>
13
+
14
+ Dismissible manages the state of your UI elements across sessions, so your users see what matters, once! No more onboarding messages reappearing on every tab, no more notifications haunting users across devices. Dismissible syncs dismissal state everywhere, so every message is intentional, never repetitive.
15
+
16
+ # @dismissible/nestjs-request
17
+
18
+ Request context decorator for Dismissible applications.
19
+
20
+ > **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.
21
+
22
+ ## Overview
23
+
24
+ This library provides a NestJS parameter decorator for extracting request context from HTTP requests:
25
+
26
+ - `RequestContext` - Parameter decorator that extracts request context from the current HTTP request
27
+
28
+ ## Installation
29
+
30
+ ```bash
31
+ npm install @dismissible/nestjs-request
32
+ ```
33
+
34
+ ## Getting Started
35
+
36
+ ### Basic Usage
37
+
38
+ Use the `RequestContext` decorator in your controllers to extract request context:
39
+
40
+ ```typescript
41
+ import { Controller, Get } from '@nestjs/common';
42
+ import { RequestContext, IRequestContext } from '@dismissible/nestjs-request';
43
+
44
+ @Controller('items')
45
+ export class ItemsController {
46
+ @Get()
47
+ async getItems(@RequestContext() context: IRequestContext) {
48
+ // Use context.requestId, context.headers, etc.
49
+ return { requestId: context.requestId };
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## API Reference
55
+
56
+ ### RequestContext
57
+
58
+ A NestJS parameter decorator that extracts request context from the current HTTP request.
59
+
60
+ The decorator returns an `IRequestContext` object containing:
61
+
62
+ - `requestId` - Unique request identifier (from `x-request-id` header or generated UUID)
63
+ - `headers` - Request headers
64
+ - `query` - Query parameters
65
+ - `params` - Route parameters
66
+ - `body` - Request body
67
+ - `user` - Authenticated user (if available)
68
+ - `ip` - Client IP address
69
+ - `method` - HTTP method
70
+ - `url` - Request URL
71
+ - `protocol` - Request protocol
72
+ - `secure` - Whether the request is secure (HTTPS)
73
+ - `hostname` - Request hostname
74
+ - `port` - Request port
75
+ - `path` - Request path
76
+ - `search` - Query string
77
+ - `searchParams` - Parsed search parameters
78
+ - `origin` - Request origin
79
+ - `referer` - Referer header
80
+ - `userAgent` - User agent header
81
+
82
+ ## Related Packages
83
+
84
+ This library is typically used alongside other Dismissible packages:
85
+
86
+ - `@dismissible/nestjs-hooks` - Provides the `IRequestContext` interface
87
+ - `@dismissible/nestjs-core` - Main dismissible service and module
88
+
89
+ ## License
90
+
91
+ MIT
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@dismissible/nestjs-request",
3
+ "version": "1.0.3-alpha.064e57a.0",
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
+ "LICENSE.md"
18
+ ],
19
+ "dependencies": {
20
+ "uuid": "13.0.0"
21
+ },
22
+ "peerDependencies": {
23
+ "@nestjs/common": "10.0.0 || ^11.0.0"
24
+ },
25
+ "peerDependenciesMeta": {
26
+ "@nestjs/common": {
27
+ "optional": false
28
+ }
29
+ },
30
+ "keywords": [
31
+ "nestjs",
32
+ "dismissible",
33
+ "request",
34
+ "context",
35
+ "decorator"
36
+ ],
37
+ "author": "",
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/DismissibleIo/dismissible-api"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ },
46
+ "type": "commonjs"
47
+ }
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/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/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/request/src/request-context.interface.ts"],"names":[],"mappings":""}