@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 +76 -0
- package/package.json +46 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +6 -0
- package/src/index.js.map +1 -0
- package/src/request-context.decorator.d.ts +1 -0
- package/src/request-context.decorator.js +31 -0
- package/src/request-context.decorator.js.map +1 -0
- package/src/request-context.interface.d.ts +24 -0
- package/src/request-context.interface.js +3 -0
- package/src/request-context.interface.js.map +1 -0
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
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
|
package/src/index.js.map
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"request-context.interface.js","sourceRoot":"","sources":["../../../../libs/dismissible-request/src/request-context.interface.ts"],"names":[],"mappings":""}
|