@makebelieve21213-packages/nest-common 1.1.2 → 1.1.4
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 +37 -3
- package/dist/decorators/__tests__/user.decorator.spec.d.ts +2 -0
- package/dist/decorators/__tests__/user.decorator.spec.d.ts.map +1 -0
- package/dist/decorators/__tests__/user.decorator.spec.js +135 -0
- package/dist/decorators/__tests__/user.decorator.spec.js.map +1 -0
- package/dist/decorators/user.decorator.d.ts +7 -0
- package/dist/decorators/user.decorator.d.ts.map +1 -0
- package/dist/decorators/user.decorator.js +12 -0
- package/dist/decorators/user.decorator.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
- ✅ **Валидация** - готовые пайпы для валидации DTO, файлов, query параметров и заголовков
|
|
22
22
|
- ✅ **Логирование** - автоматическое логирование всех HTTP, RPC и WebSocket запросов
|
|
23
23
|
- ✅ **Guards** - готовые guards для аутентификации, авторизации и rate limiting
|
|
24
|
-
- ✅ **Декораторы** - удобные декораторы для метаданных (@Public, @Roles, @Permissions, @ApiKey, @Serialize)
|
|
24
|
+
- ✅ **Декораторы** - удобные декораторы для метаданных (@Public, @Roles, @Permissions, @ApiKey, @Serialize, @User)
|
|
25
25
|
- ✅ **Утилиты** - функции для работы с контекстом, файлами, CORS, compression, versioning
|
|
26
26
|
- ✅ **100% покрытие тестами** - надежность и качество кода
|
|
27
27
|
- ✅ **TypeScript типизация** - полная типобезопасность
|
|
@@ -264,7 +264,16 @@ app.useGlobalInterceptors(new UnifiedInterceptor(logger));
|
|
|
264
264
|
|
|
265
265
|
**ApiKeyGuard** - проверка API ключа (работает с декоратором `@ApiKey()`)
|
|
266
266
|
```typescript
|
|
267
|
-
|
|
267
|
+
// Регистрация в модуле (Reflector из @nestjs/core)
|
|
268
|
+
{
|
|
269
|
+
provide: ApiKeyGuard,
|
|
270
|
+
useFactory: (reflector: Reflector) =>
|
|
271
|
+
new ApiKeyGuard(reflector, "x-api-key", new Set(["key1", "key2"])),
|
|
272
|
+
inject: [Reflector],
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// В контроллере
|
|
276
|
+
@UseGuards(ApiKeyGuard)
|
|
268
277
|
@ApiKey()
|
|
269
278
|
```
|
|
270
279
|
|
|
@@ -282,7 +291,16 @@ app.useGlobalInterceptors(new UnifiedInterceptor(logger));
|
|
|
282
291
|
|
|
283
292
|
**RateLimitGuard** - ограничение частоты запросов
|
|
284
293
|
```typescript
|
|
285
|
-
|
|
294
|
+
// Регистрация в модуле (Reflector из @nestjs/core)
|
|
295
|
+
{
|
|
296
|
+
provide: RateLimitGuard,
|
|
297
|
+
useFactory: (reflector: Reflector) =>
|
|
298
|
+
new RateLimitGuard(reflector, 200, 60000), // 200 запросов в минуту
|
|
299
|
+
inject: [Reflector],
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// В контроллере
|
|
303
|
+
@UseGuards(RateLimitGuard)
|
|
286
304
|
```
|
|
287
305
|
|
|
288
306
|
**WebSocketAuthGuard** - проверка аутентификации WebSocket
|
|
@@ -299,6 +317,22 @@ app.useGlobalInterceptors(new UnifiedInterceptor(logger));
|
|
|
299
317
|
- `@Permissions(...)` - указание требуемых разрешений
|
|
300
318
|
- `@ApiKey()` - пометка эндпоинта как требующего API ключ
|
|
301
319
|
- `@Serialize(DtoClass)` - указание DTO для сериализации ответа
|
|
320
|
+
- `@User()` - получение `req.user` в хендлере (поддерживает generic: `@User<MyUserType>()`)
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
@UseGuards(JwtAuthGuard)
|
|
324
|
+
@Get("profile")
|
|
325
|
+
getProfile(@User() user: UserFromContext) {
|
|
326
|
+
return user;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// С кастомным типом
|
|
330
|
+
@UseGuards(JwtAuthGuard)
|
|
331
|
+
@Get("me")
|
|
332
|
+
getMe(@User<MyUser>() user: MyUser) {
|
|
333
|
+
return user;
|
|
334
|
+
}
|
|
335
|
+
```
|
|
302
336
|
|
|
303
337
|
### Утилиты
|
|
304
338
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.decorator.spec.d.ts","sourceRoot":"","sources":["../../../src/decorators/__tests__/user.decorator.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import User from "../../decorators/user.decorator.js";
|
|
14
|
+
import * as contextUtils from "../../utils/context.utils.js";
|
|
15
|
+
let capturedFactory = null;
|
|
16
|
+
jest.mock("@nestjs/common", () => {
|
|
17
|
+
const actual = jest.requireActual("@nestjs/common");
|
|
18
|
+
return {
|
|
19
|
+
...actual,
|
|
20
|
+
createParamDecorator: (factory) => {
|
|
21
|
+
capturedFactory = factory;
|
|
22
|
+
return () => () => { };
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
describe("User decorator", () => {
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
capturedFactory = null;
|
|
29
|
+
});
|
|
30
|
+
it("should return a parameter decorator when called", () => {
|
|
31
|
+
const decorator = User();
|
|
32
|
+
expect(typeof decorator).toBe("function");
|
|
33
|
+
});
|
|
34
|
+
it("should not throw when applied to a class method parameter", () => {
|
|
35
|
+
class TestController {
|
|
36
|
+
getUser(user) {
|
|
37
|
+
return user;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
__decorate([
|
|
41
|
+
__param(0, User()),
|
|
42
|
+
__metadata("design:type", Function),
|
|
43
|
+
__metadata("design:paramtypes", [Object]),
|
|
44
|
+
__metadata("design:returntype", void 0)
|
|
45
|
+
], TestController.prototype, "getUser", null);
|
|
46
|
+
expect(TestController).toBeDefined();
|
|
47
|
+
});
|
|
48
|
+
it("should support generic type parameter", () => {
|
|
49
|
+
const decorator = User();
|
|
50
|
+
expect(typeof decorator).toBe("function");
|
|
51
|
+
class TestController {
|
|
52
|
+
getUser(user) {
|
|
53
|
+
return user;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
__decorate([
|
|
57
|
+
__param(0, User()),
|
|
58
|
+
__metadata("design:type", Function),
|
|
59
|
+
__metadata("design:paramtypes", [Object]),
|
|
60
|
+
__metadata("design:returntype", void 0)
|
|
61
|
+
], TestController.prototype, "getUser", null);
|
|
62
|
+
expect(TestController).toBeDefined();
|
|
63
|
+
});
|
|
64
|
+
it("should call getUserFromContext and return user when factory is invoked", () => {
|
|
65
|
+
const mockUser = { id: "1", email: "test@test.com", roles: ["admin"] };
|
|
66
|
+
const mockContext = {
|
|
67
|
+
switchToHttp: () => ({
|
|
68
|
+
getRequest: () => ({ user: mockUser }),
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
71
|
+
class TestController {
|
|
72
|
+
getUser(_user) {
|
|
73
|
+
return _user;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
__decorate([
|
|
77
|
+
__param(0, User()),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Object]),
|
|
80
|
+
__metadata("design:returntype", void 0)
|
|
81
|
+
], TestController.prototype, "getUser", null);
|
|
82
|
+
expect(TestController).toBeDefined();
|
|
83
|
+
expect(capturedFactory).toBeDefined();
|
|
84
|
+
expect(typeof capturedFactory).toBe("function");
|
|
85
|
+
const result = capturedFactory?.(undefined, mockContext);
|
|
86
|
+
expect(result).toEqual(mockUser);
|
|
87
|
+
});
|
|
88
|
+
it("should return undefined when user is not in request", () => {
|
|
89
|
+
const mockContext = {
|
|
90
|
+
switchToHttp: () => ({
|
|
91
|
+
getRequest: () => ({}),
|
|
92
|
+
}),
|
|
93
|
+
};
|
|
94
|
+
class TestController {
|
|
95
|
+
getUser(_user) {
|
|
96
|
+
return _user;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
__decorate([
|
|
100
|
+
__param(0, User()),
|
|
101
|
+
__metadata("design:type", Function),
|
|
102
|
+
__metadata("design:paramtypes", [Object]),
|
|
103
|
+
__metadata("design:returntype", void 0)
|
|
104
|
+
], TestController.prototype, "getUser", null);
|
|
105
|
+
expect(TestController).toBeDefined();
|
|
106
|
+
const result = capturedFactory?.(undefined, mockContext);
|
|
107
|
+
expect(result).toBeUndefined();
|
|
108
|
+
});
|
|
109
|
+
it("should invoke getUserFromContext when factory runs", () => {
|
|
110
|
+
const getUserSpy = jest.spyOn(contextUtils, "getUserFromContext");
|
|
111
|
+
const mockUser = { id: "2", email: "user@example.com" };
|
|
112
|
+
const mockContext = {
|
|
113
|
+
switchToHttp: () => ({
|
|
114
|
+
getRequest: () => ({ user: mockUser }),
|
|
115
|
+
}),
|
|
116
|
+
};
|
|
117
|
+
class TestController {
|
|
118
|
+
getUser(_user) {
|
|
119
|
+
return _user;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
__decorate([
|
|
123
|
+
__param(0, User()),
|
|
124
|
+
__metadata("design:type", Function),
|
|
125
|
+
__metadata("design:paramtypes", [Object]),
|
|
126
|
+
__metadata("design:returntype", void 0)
|
|
127
|
+
], TestController.prototype, "getUser", null);
|
|
128
|
+
expect(TestController).toBeDefined();
|
|
129
|
+
capturedFactory?.(undefined, mockContext);
|
|
130
|
+
expect(getUserSpy).toHaveBeenCalledWith(mockContext);
|
|
131
|
+
expect(getUserSpy).toHaveBeenCalledTimes(1);
|
|
132
|
+
getUserSpy.mockRestore();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=user.decorator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/user.decorator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { UserFromContext } from "../types/context-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Декоратор для получения req.user из запроса в хендлере контроллера
|
|
4
|
+
* Требует аутентификации (например, JwtAuthGuard) для гарантированного наличия user
|
|
5
|
+
*/
|
|
6
|
+
export default function User<T = UserFromContext>(): ParameterDecorator;
|
|
7
|
+
//# sourceMappingURL=user.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/user.decorator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC,GAAG,eAAe,KAAK,kBAAkB,CAItE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createParamDecorator } from "@nestjs/common";
|
|
2
|
+
import { getUserFromContext } from "../utils/context.utils.js";
|
|
3
|
+
/**
|
|
4
|
+
* Декоратор для получения req.user из запроса в хендлере контроллера
|
|
5
|
+
* Требует аутентификации (например, JwtAuthGuard) для гарантированного наличия user
|
|
6
|
+
*/
|
|
7
|
+
export default function User() {
|
|
8
|
+
return createParamDecorator((_data, ctx) => {
|
|
9
|
+
return getUserFromContext(ctx);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=user.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.decorator.js","sourceRoot":"","sources":["../../src/decorators/user.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI;IAC3B,OAAO,oBAAoB,CAAC,CAAC,KAAc,EAAE,GAAqB,EAAiB,EAAE;QACpF,OAAO,kBAAkB,CAAC,GAAG,CAAkB,CAAC;IACjD,CAAC,CAAuB,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export { Roles, ROLES_KEY } from "./decorators/roles.decorator.js";
|
|
|
31
31
|
export { Permissions, PERMISSIONS_KEY } from "./decorators/permissions.decorator.js";
|
|
32
32
|
export { ApiKey, API_KEY_KEY } from "./decorators/api-key.decorator.js";
|
|
33
33
|
export { Serialize, SERIALIZE_KEY } from "./decorators/serialize.decorator.js";
|
|
34
|
+
export { default as User } from "./decorators/user.decorator.js";
|
|
34
35
|
export { getUserFromContext, getIpFromContext, getUserAgentFromContext, getRequestIdFromContext, } from "./utils/context.utils.js";
|
|
35
36
|
export type { UserFromContext } from "./types/context-types.js";
|
|
36
37
|
export { default as createCorsOptions } from "./utils/cors.utils.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE1F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAE3G,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,cAAc,GACd,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACN,OAAO,IAAI,kBAAkB,EAC7B,KAAK,cAAc,GACnB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { Roles, ROLES_KEY } from "./decorators/roles.decorator.js";
|
|
|
30
30
|
export { Permissions, PERMISSIONS_KEY } from "./decorators/permissions.decorator.js";
|
|
31
31
|
export { ApiKey, API_KEY_KEY } from "./decorators/api-key.decorator.js";
|
|
32
32
|
export { Serialize, SERIALIZE_KEY } from "./decorators/serialize.decorator.js";
|
|
33
|
+
export { default as User } from "./decorators/user.decorator.js";
|
|
33
34
|
export { getUserFromContext, getIpFromContext, getUserAgentFromContext, getRequestIdFromContext, } from "./utils/context.utils.js";
|
|
34
35
|
export { default as createCorsOptions } from "./utils/cors.utils.js";
|
|
35
36
|
export { default as createCompressionOptions } from "./utils/compression.utils.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE1F,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,kDAAkD,CAAC;AAE3G,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACN,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,cAAc,GACd,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EACN,OAAO,IAAI,kBAAkB,GAE7B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makebelieve21213-packages/nest-common",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Common NestJS utilities, guards, interceptors, and shared modules for NakolenkeChain microservices",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"pnpm": ">=10.18.0"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@makebelieve21213-packages/logger": "1.0.
|
|
39
|
+
"@makebelieve21213-packages/logger": "1.0.7",
|
|
40
40
|
"@nestjs/common": "^11.1.6",
|
|
41
41
|
"@nestjs/core": "^11.1.6",
|
|
42
42
|
"@nestjs/microservices": "^11.1.3",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"test:coverage": "jest --coverage",
|
|
90
90
|
"lint": "tsc --noEmit && eslint \"src/**/*.ts\"",
|
|
91
91
|
"lint:fix": "tsc --noEmit && eslint \"src/**/*.ts\" --fix",
|
|
92
|
-
"format": "prettier --check
|
|
93
|
-
"format:fix": "prettier --write
|
|
92
|
+
"format": "prettier --check .",
|
|
93
|
+
"format:fix": "prettier --write ."
|
|
94
94
|
}
|
|
95
95
|
}
|