@russ-b/nestjs-common-tools 1.11.1 → 1.13.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 +81 -2
- package/dist/common/filters/index.d.ts +1 -1
- package/dist/common/filters/index.js +1 -1
- package/dist/common/filters/index.js.map +1 -1
- package/dist/typeorm/errors/index.d.ts +1 -0
- package/dist/{grpc/proxies → typeorm/errors}/index.js +1 -1
- package/dist/typeorm/errors/index.js.map +1 -0
- package/dist/typeorm/errors/query-failed-error.util.d.ts +9 -0
- package/dist/typeorm/errors/query-failed-error.util.js +27 -0
- package/dist/typeorm/errors/query-failed-error.util.js.map +1 -0
- package/dist/typeorm/filters/entity-not-found.filter.d.ts +5 -0
- package/dist/{grpc/grpc.module.js → typeorm/filters/entity-not-found.filter.js} +14 -13
- package/dist/typeorm/filters/entity-not-found.filter.js.map +1 -0
- package/dist/{grpc → typeorm}/filters/index.d.ts +1 -0
- package/dist/{grpc → typeorm}/filters/index.js +1 -0
- package/dist/typeorm/filters/index.js.map +1 -0
- package/dist/typeorm/filters/typeorm-exception.filter.d.ts +13 -0
- package/dist/typeorm/filters/typeorm-exception.filter.js +53 -0
- package/dist/typeorm/filters/typeorm-exception.filter.js.map +1 -0
- package/dist/typeorm/index.d.ts +3 -0
- package/dist/typeorm/index.js +3 -0
- package/dist/typeorm/index.js.map +1 -1
- package/dist/typeorm/types/driver-error.type.d.ts +8 -0
- package/dist/{s3/s3.interface.js → typeorm/types/driver-error.type.js} +1 -1
- package/dist/typeorm/types/driver-error.type.js.map +1 -0
- package/dist/typeorm/types/index.d.ts +1 -0
- package/dist/{grpc/interceptors → typeorm/types}/index.js +1 -1
- package/dist/typeorm/types/index.js.map +1 -0
- package/package.json +41 -40
- package/dist/common/filters/typeorm-exception.filter.d.ts +0 -6
- package/dist/common/filters/typeorm-exception.filter.js +0 -36
- package/dist/common/filters/typeorm-exception.filter.js.map +0 -1
- package/dist/grpc/client-grpc.interface.d.ts +0 -34
- package/dist/grpc/client-grpc.interface.js +0 -3
- package/dist/grpc/client-grpc.interface.js.map +0 -1
- package/dist/grpc/filters/index.js.map +0 -1
- package/dist/grpc/filters/rpc-exception.filter.d.ts +0 -6
- package/dist/grpc/filters/rpc-exception.filter.js +0 -63
- package/dist/grpc/filters/rpc-exception.filter.js.map +0 -1
- package/dist/grpc/filters/typeorm-exception.filter.d.ts +0 -6
- package/dist/grpc/filters/typeorm-exception.filter.js +0 -52
- package/dist/grpc/filters/typeorm-exception.filter.js.map +0 -1
- package/dist/grpc/grpc.module.d.ts +0 -2
- package/dist/grpc/grpc.module.js.map +0 -1
- package/dist/grpc/index.d.ts +0 -4
- package/dist/grpc/index.js +0 -21
- package/dist/grpc/index.js.map +0 -1
- package/dist/grpc/interceptors/field-mask.interceptor.d.ts +0 -5
- package/dist/grpc/interceptors/field-mask.interceptor.js +0 -31
- package/dist/grpc/interceptors/field-mask.interceptor.js.map +0 -1
- package/dist/grpc/interceptors/index.d.ts +0 -1
- package/dist/grpc/interceptors/index.js.map +0 -1
- package/dist/grpc/interceptors/struct.interceptor.d.ts +0 -9
- package/dist/grpc/interceptors/struct.interceptor.js +0 -69
- package/dist/grpc/interceptors/struct.interceptor.js.map +0 -1
- package/dist/grpc/interfaces/index.d.ts +0 -1
- package/dist/grpc/interfaces/index.js +0 -18
- package/dist/grpc/interfaces/index.js.map +0 -1
- package/dist/grpc/interfaces/package-definition.interface.d.ts +0 -18
- package/dist/grpc/interfaces/package-definition.interface.js +0 -3
- package/dist/grpc/interfaces/package-definition.interface.js.map +0 -1
- package/dist/grpc/providers/grpc-options.provider.d.ts +0 -16
- package/dist/grpc/providers/grpc-options.provider.js +0 -68
- package/dist/grpc/providers/grpc-options.provider.js.map +0 -1
- package/dist/grpc/providers/index.d.ts +0 -1
- package/dist/grpc/providers/index.js +0 -18
- package/dist/grpc/providers/index.js.map +0 -1
- package/dist/grpc/proxies/base-client-grpc.proxy.d.ts +0 -7
- package/dist/grpc/proxies/base-client-grpc.proxy.js +0 -73
- package/dist/grpc/proxies/base-client-grpc.proxy.js.map +0 -1
- package/dist/grpc/proxies/index.d.ts +0 -1
- package/dist/grpc/proxies/index.js.map +0 -1
- package/dist/grpc/services/grpc-package-definition.service.d.ts +0 -16
- package/dist/grpc/services/grpc-package-definition.service.js +0 -82
- package/dist/grpc/services/grpc-package-definition.service.js.map +0 -1
- package/dist/grpc/services/index.d.ts +0 -1
- package/dist/grpc/services/index.js +0 -18
- package/dist/grpc/services/index.js.map +0 -1
- package/dist/grpc/services/package-definition/index.d.ts +0 -2
- package/dist/grpc/services/package-definition/index.js +0 -19
- package/dist/grpc/services/package-definition/index.js.map +0 -1
- package/dist/grpc/services/package-definition/package-definition-manager.d.ts +0 -15
- package/dist/grpc/services/package-definition/package-definition-manager.js +0 -62
- package/dist/grpc/services/package-definition/package-definition-manager.js.map +0 -1
- package/dist/grpc/services/package-definition/package-definition.constants.d.ts +0 -2
- package/dist/grpc/services/package-definition/package-definition.constants.js +0 -6
- package/dist/grpc/services/package-definition/package-definition.constants.js.map +0 -1
- package/dist/grpc/services/package-definition/package-definition.service.d.ts +0 -8
- package/dist/grpc/services/package-definition/package-definition.service.js +0 -27
- package/dist/grpc/services/package-definition/package-definition.service.js.map +0 -1
- package/dist/grpc/services/proto/constants/proto.constants.d.ts +0 -2
- package/dist/grpc/services/proto/constants/proto.constants.js +0 -6
- package/dist/grpc/services/proto/constants/proto.constants.js.map +0 -1
- package/dist/grpc/services/proto/field.selector.d.ts +0 -9
- package/dist/grpc/services/proto/field.selector.js +0 -34
- package/dist/grpc/services/proto/field.selector.js.map +0 -1
- package/dist/grpc/services/proto/interfaces/field-selector.interface.d.ts +0 -4
- package/dist/grpc/services/proto/interfaces/field-selector.interface.js +0 -3
- package/dist/grpc/services/proto/interfaces/field-selector.interface.js.map +0 -1
- package/dist/grpc/services/proto/interfaces/index.d.ts +0 -3
- package/dist/grpc/services/proto/interfaces/index.js +0 -20
- package/dist/grpc/services/proto/interfaces/index.js.map +0 -1
- package/dist/grpc/services/proto/interfaces/package-definition.interface.d.ts +0 -3
- package/dist/grpc/services/proto/interfaces/package-definition.interface.js +0 -3
- package/dist/grpc/services/proto/interfaces/package-definition.interface.js.map +0 -1
- package/dist/grpc/services/proto/interfaces/proto-descriptors.interface.d.ts +0 -49
- package/dist/grpc/services/proto/interfaces/proto-descriptors.interface.js +0 -31
- package/dist/grpc/services/proto/interfaces/proto-descriptors.interface.js.map +0 -1
- package/dist/grpc/services/proto/readers/client-definition.reader.d.ts +0 -23
- package/dist/grpc/services/proto/readers/client-definition.reader.js +0 -51
- package/dist/grpc/services/proto/readers/client-definition.reader.js.map +0 -1
- package/dist/grpc/services/proto/readers/field-definition.reader.d.ts +0 -3
- package/dist/grpc/services/proto/readers/field-definition.reader.js +0 -8
- package/dist/grpc/services/proto/readers/field-definition.reader.js.map +0 -1
- package/dist/grpc/services/proto/readers/field.selector.d.ts +0 -7
- package/dist/grpc/services/proto/readers/field.selector.js +0 -29
- package/dist/grpc/services/proto/readers/field.selector.js.map +0 -1
- package/dist/grpc/services/proto/readers/interfaces/client-definition.interface.d.ts +0 -24
- package/dist/grpc/services/proto/readers/interfaces/client-definition.interface.js +0 -3
- package/dist/grpc/services/proto/readers/interfaces/client-definition.interface.js.map +0 -1
- package/dist/grpc/services/proto/readers/interfaces/field.interface.d.ts +0 -16
- package/dist/grpc/services/proto/readers/interfaces/field.interface.js +0 -3
- package/dist/grpc/services/proto/readers/interfaces/field.interface.js.map +0 -1
- package/dist/grpc/services/proto/readers/interfaces/index.d.ts +0 -1
- package/dist/grpc/services/proto/readers/interfaces/index.js +0 -18
- package/dist/grpc/services/proto/readers/interfaces/index.js.map +0 -1
- package/dist/grpc/services/proto/readers/interfaces/package-definition.interface.d.ts +0 -9
- package/dist/grpc/services/proto/readers/interfaces/package-definition.interface.js +0 -3
- package/dist/grpc/services/proto/readers/interfaces/package-definition.interface.js.map +0 -1
- package/dist/grpc/services/proto/readers/package-definition.reader.d.ts +0 -17
- package/dist/grpc/services/proto/readers/package-definition.reader.js +0 -61
- package/dist/grpc/services/proto/readers/package-definition.reader.js.map +0 -1
- package/dist/grpc/transformers/field-transformer.d.ts +0 -7
- package/dist/grpc/transformers/field-transformer.js +0 -26
- package/dist/grpc/transformers/field-transformer.js.map +0 -1
- package/dist/grpc/transformers/index.d.ts +0 -2
- package/dist/grpc/transformers/index.js +0 -19
- package/dist/grpc/transformers/index.js.map +0 -1
- package/dist/grpc/transformers/struct/index.d.ts +0 -2
- package/dist/grpc/transformers/struct/index.js +0 -19
- package/dist/grpc/transformers/struct/index.js.map +0 -1
- package/dist/grpc/transformers/struct/struct.interface.d.ts +0 -17
- package/dist/grpc/transformers/struct/struct.interface.js +0 -3
- package/dist/grpc/transformers/struct/struct.interface.js.map +0 -1
- package/dist/grpc/transformers/struct/struct.transformer.d.ts +0 -8
- package/dist/grpc/transformers/struct/struct.transformer.js +0 -86
- package/dist/grpc/transformers/struct/struct.transformer.js.map +0 -1
- package/dist/logger/logger.interface.d.ts +0 -1
- package/dist/logger/logger.interface.js +0 -3
- package/dist/logger/logger.interface.js.map +0 -1
- package/dist/logger/transports/json-format.transport.d.ts +0 -4
- package/dist/logger/transports/json-format.transport.js +0 -14
- package/dist/logger/transports/json-format.transport.js.map +0 -1
- package/dist/logger/transports/nest-format.transport.d.ts +0 -4
- package/dist/logger/transports/nest-format.transport.js +0 -18
- package/dist/logger/transports/nest-format.transport.js.map +0 -1
- package/dist/s3/s3.constants.d.ts +0 -2
- package/dist/s3/s3.constants.js +0 -6
- package/dist/s3/s3.constants.js.map +0 -1
- package/dist/s3/s3.interface.d.ts +0 -13
- package/dist/s3/s3.interface.js.map +0 -1
- package/dist/s3/s3.module.d.ts +0 -5
- package/dist/s3/s3.module.js +0 -52
- package/dist/s3/s3.module.js.map +0 -1
- package/dist/s3/s3.service.d.ts +0 -12
- package/dist/s3/s3.service.js +0 -80
- package/dist/s3/s3.service.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# nestjs-common-tools
|
|
2
2
|
NestJS Common Tools
|
|
3
3
|
|
|
4
|
+
A small toolbox for NestJS with helpers that often come up in day-to-day development.
|
|
5
|
+
|
|
6
|
+
This package grew out of the same recurring problem across multiple projects: there are many standard pieces that are useful in real NestJS applications, but are not available out of the box. Instead of copying those building blocks from project to project, this library collects them in one place to reduce boilerplate and help avoid repeating yourself.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
Install the package:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @russ-b/nestjs-common-tools
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Depending on which features you use, make sure the relevant peer dependencies are also installed in your project.
|
|
17
|
+
|
|
4
18
|
## Entity Validator
|
|
5
19
|
|
|
6
20
|
A custom validator for NestJS that validates if an entity exists in the database using TypeORM.
|
|
@@ -30,7 +44,7 @@ async function bootstrap() {
|
|
|
30
44
|
// app.module.ts
|
|
31
45
|
import { Module } from '@nestjs/common';
|
|
32
46
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
33
|
-
import { EntityConstraint } from '
|
|
47
|
+
import { EntityConstraint } from '@russ-b/nestjs-common-tools/validators';
|
|
34
48
|
|
|
35
49
|
@Module({
|
|
36
50
|
providers: [
|
|
@@ -44,7 +58,7 @@ export class AppModule {}
|
|
|
44
58
|
## Usage
|
|
45
59
|
|
|
46
60
|
```typescript
|
|
47
|
-
import { IsEntity } from '@russ-b/nestjs-common-tools/
|
|
61
|
+
import { IsEntity } from '@russ-b/nestjs-common-tools/validators';
|
|
48
62
|
|
|
49
63
|
export class UserDto {
|
|
50
64
|
// Validate single entity
|
|
@@ -87,3 +101,68 @@ export class AssignRolesDto {
|
|
|
87
101
|
roleIds: string[];
|
|
88
102
|
}
|
|
89
103
|
```
|
|
104
|
+
|
|
105
|
+
## TypeORM Exception Filter
|
|
106
|
+
|
|
107
|
+
When you want to convert low-level database errors into meaningful HTTP responses, a TypeORM exception filter helps keep that logic out of controllers and services. You can register it once and optionally override specific constraints with your own domain-friendly messages.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// app.module.ts
|
|
111
|
+
import { Module } from '@nestjs/common';
|
|
112
|
+
import { APP_FILTER } from '@nestjs/core';
|
|
113
|
+
import { ConflictException } from '@nestjs/common';
|
|
114
|
+
import { TypeOrmExceptionFilter } from '@russ-b/nestjs-common-tools/typeorm';
|
|
115
|
+
|
|
116
|
+
const USER_EMAIL_UNIQUE_INDEX = 'users_email_key';
|
|
117
|
+
|
|
118
|
+
@Module({
|
|
119
|
+
providers: [
|
|
120
|
+
{
|
|
121
|
+
provide: APP_FILTER,
|
|
122
|
+
useFactory: () =>
|
|
123
|
+
new TypeOrmExceptionFilter({
|
|
124
|
+
constraints: {
|
|
125
|
+
[USER_EMAIL_UNIQUE_INDEX]: () =>
|
|
126
|
+
new ConflictException('A user with this email already exists'),
|
|
127
|
+
},
|
|
128
|
+
}),
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
})
|
|
132
|
+
export class AppModule {}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
By default, the filter already maps common TypeORM database errors such as unique constraint violations, foreign key violations, and invalid input format to NestJS HTTP exceptions. Custom constraint handlers let you keep those responses specific to your business rules.
|
|
136
|
+
|
|
137
|
+
## isTypeOrmQueryFailedError
|
|
138
|
+
|
|
139
|
+
Sometimes a global filter is not enough and you want to react differently to one exact database error inside a service. `isTypeOrmQueryFailedError` is useful for that kind of targeted branching without scattering manual `instanceof QueryFailedError` checks and driver casts around the codebase.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { ConflictException, Injectable } from '@nestjs/common';
|
|
143
|
+
import { isTypeOrmQueryFailedError } from '@russ-b/nestjs-common-tools/typeorm';
|
|
144
|
+
|
|
145
|
+
const OPEN_TICKET_PER_CAR_INDEX = 'open_ticket_per_car_index';
|
|
146
|
+
|
|
147
|
+
@Injectable()
|
|
148
|
+
export class TicketsService {
|
|
149
|
+
async createTicket(payload: CreateTicketDto) {
|
|
150
|
+
try {
|
|
151
|
+
return await this.ticketRepository.save(payload);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
if (
|
|
154
|
+
isTypeOrmQueryFailedError(error, {
|
|
155
|
+
code: '23505',
|
|
156
|
+
constraint: OPEN_TICKET_PER_CAR_INDEX,
|
|
157
|
+
})
|
|
158
|
+
) {
|
|
159
|
+
throw new ConflictException('This car already has an open ticket');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The helper can also be used as a plain type guard or with multiple matching fields such as `code`, `constraint`, `table`, or `column`. That makes it a good fit for small pieces of domain-specific error handling where a generic global mapping would be too broad.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from '../../typeorm/filters';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("
|
|
17
|
+
__exportStar(require("../../typeorm/filters"), exports);
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './query-failed-error.util';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./query-failed-error.util"), exports);
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/typeorm/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { QueryFailedError } from 'typeorm';
|
|
2
|
+
import { DriverError } from '../types';
|
|
3
|
+
type MatchValue<T> = T | readonly T[];
|
|
4
|
+
export type QueryFailedErrorCriteria = {
|
|
5
|
+
[K in keyof DriverError]?: MatchValue<NonNullable<DriverError[K]>>;
|
|
6
|
+
};
|
|
7
|
+
export type TypeOrmQueryFailedError = QueryFailedError<Error & DriverError> & Partial<DriverError>;
|
|
8
|
+
export declare function isTypeOrmQueryFailedError(error: unknown, criteria?: QueryFailedErrorCriteria): error is TypeOrmQueryFailedError;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTypeOrmQueryFailedError = isTypeOrmQueryFailedError;
|
|
4
|
+
const typeorm_1 = require("typeorm");
|
|
5
|
+
function isTypeOrmQueryFailedError(error, criteria) {
|
|
6
|
+
if (!(error instanceof typeorm_1.QueryFailedError)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (!criteria) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return Object.keys(criteria).every((key) => {
|
|
13
|
+
const expected = criteria[key];
|
|
14
|
+
if (expected === undefined) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
const actual = getDriverErrorValue(error, key);
|
|
18
|
+
const acceptedValues = Array.isArray(expected) ? expected : [expected];
|
|
19
|
+
return acceptedValues.some((value) => value === actual);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function getDriverErrorValue(error, key) {
|
|
23
|
+
const driverError = error.driverError;
|
|
24
|
+
const queryFailedError = error;
|
|
25
|
+
return driverError[key] ?? queryFailedError[key];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=query-failed-error.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-failed-error.util.js","sourceRoot":"","sources":["../../../src/typeorm/errors/query-failed-error.util.ts"],"names":[],"mappings":";;AAYA,8DAwBC;AApCD,qCAA2C;AAY3C,SAAgB,yBAAyB,CACvC,KAAc,EACd,QAAmC;IAEnC,IAAI,CAAC,CAAC,KAAK,YAAY,0BAAgB,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA8B,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEvE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA8B,EAC9B,GAAM;IAEN,MAAM,WAAW,GAAG,KAAK,CAAC,WAAmC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,KAA6B,CAAC;IAEvD,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -6,18 +6,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.EntityNotFoundFilter = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const typeorm_1 = require("typeorm");
|
|
12
|
+
let EntityNotFoundFilter = class EntityNotFoundFilter {
|
|
13
|
+
catch(exception, host) {
|
|
14
|
+
if (host.getType() !== 'http') {
|
|
15
|
+
throw exception;
|
|
16
|
+
}
|
|
17
|
+
throw new common_1.NotFoundException('Entity not found');
|
|
18
|
+
}
|
|
15
19
|
};
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
(0, common_1.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
})
|
|
22
|
-
], GrpcModule);
|
|
23
|
-
//# sourceMappingURL=grpc.module.js.map
|
|
20
|
+
exports.EntityNotFoundFilter = EntityNotFoundFilter;
|
|
21
|
+
exports.EntityNotFoundFilter = EntityNotFoundFilter = __decorate([
|
|
22
|
+
(0, common_1.Catch)(typeorm_1.EntityNotFoundError)
|
|
23
|
+
], EntityNotFoundFilter);
|
|
24
|
+
//# sourceMappingURL=entity-not-found.filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-not-found.filter.js","sourceRoot":"","sources":["../../../src/typeorm/filters/entity-not-found.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAKwB;AACxB,qCAA8C;AAGvC,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,KAAK,CAAC,SAA8B,EAAE,IAAmB;QACvD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,0BAAiB,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AARY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,cAAK,EAAC,6BAAmB,CAAC;GACd,oBAAoB,CAQhC"}
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./entity-not-found.filter"), exports);
|
|
17
18
|
__exportStar(require("./typeorm-exception.filter"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/typeorm/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,6DAA2C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
|
|
2
|
+
import { QueryFailedError } from 'typeorm';
|
|
3
|
+
import { DriverError } from '../types';
|
|
4
|
+
type ConstraintHandler = (error: DriverError) => HttpException;
|
|
5
|
+
interface TypeOrmExceptionFilterOptions {
|
|
6
|
+
constraints?: Record<string, ConstraintHandler>;
|
|
7
|
+
}
|
|
8
|
+
export declare class TypeOrmExceptionFilter implements ExceptionFilter {
|
|
9
|
+
private readonly options;
|
|
10
|
+
constructor(options?: TypeOrmExceptionFilterOptions);
|
|
11
|
+
catch(exception: QueryFailedError, host: ArgumentsHost): never;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TypeOrmExceptionFilter = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const typeorm_1 = require("typeorm");
|
|
15
|
+
let TypeOrmExceptionFilter = class TypeOrmExceptionFilter {
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
}
|
|
19
|
+
catch(exception, host) {
|
|
20
|
+
if (host.getType() !== 'http') {
|
|
21
|
+
throw exception;
|
|
22
|
+
}
|
|
23
|
+
const error = exception.driverError;
|
|
24
|
+
const constraint = error.constraint;
|
|
25
|
+
if (constraint && this.options.constraints?.[constraint]) {
|
|
26
|
+
throw this.options.constraints[constraint](error);
|
|
27
|
+
}
|
|
28
|
+
const code = String(error.code ?? error.errno ?? '');
|
|
29
|
+
switch (code) {
|
|
30
|
+
case '1062':
|
|
31
|
+
case '23505':
|
|
32
|
+
throw new common_1.ConflictException('Unique constraint violation');
|
|
33
|
+
case '1451':
|
|
34
|
+
case '1452':
|
|
35
|
+
case '23503':
|
|
36
|
+
throw new common_1.BadRequestException('Foreign key constraint violation');
|
|
37
|
+
case '23502':
|
|
38
|
+
throw new common_1.BadRequestException('Required field is missing');
|
|
39
|
+
case '23514':
|
|
40
|
+
throw new common_1.BadRequestException('Check constraint violation');
|
|
41
|
+
case '22P02':
|
|
42
|
+
throw new common_1.BadRequestException('Invalid input format');
|
|
43
|
+
default:
|
|
44
|
+
throw exception;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter;
|
|
49
|
+
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter = __decorate([
|
|
50
|
+
(0, common_1.Catch)(typeorm_1.QueryFailedError),
|
|
51
|
+
__metadata("design:paramtypes", [Object])
|
|
52
|
+
], TypeOrmExceptionFilter);
|
|
53
|
+
//# sourceMappingURL=typeorm-exception.filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeorm-exception.filter.js","sourceRoot":"","sources":["../../../src/typeorm/filters/typeorm-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAOwB;AACxB,qCAA2C;AAUpC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,YAA6B,UAAyC,EAAE;QAA3C,YAAO,GAAP,OAAO,CAAoC;IAAG,CAAC;IAE5E,KAAK,CAAC,SAA2B,EAAE,IAAmB;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,WAA0B,CAAC;QACnD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEpC,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAErD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,MAAM,IAAI,0BAAiB,CAAC,6BAA6B,CAAC,CAAC;YAC7D,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO;gBACV,MAAM,IAAI,4BAAmB,CAAC,kCAAkC,CAAC,CAAC;YACpE,KAAK,OAAO;gBACV,MAAM,IAAI,4BAAmB,CAAC,2BAA2B,CAAC,CAAC;YAC7D,KAAK,OAAO;gBACV,MAAM,IAAI,4BAAmB,CAAC,4BAA4B,CAAC,CAAC;YAC9D,KAAK,OAAO;gBACV,MAAM,IAAI,4BAAmB,CAAC,sBAAsB,CAAC,CAAC;YACxD;gBACE,MAAM,SAAS,CAAC;QACpB,CAAC;IACH,CAAC;CACF,CAAA;AAnCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,cAAK,EAAC,0BAAgB,CAAC;;GACX,sBAAsB,CAmClC"}
|
package/dist/typeorm/index.d.ts
CHANGED
package/dist/typeorm/index.js
CHANGED
|
@@ -14,5 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./filters"), exports);
|
|
18
|
+
__exportStar(require("./errors"), exports);
|
|
17
19
|
__exportStar(require("./transformers"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typeorm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typeorm/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB;AACzB,iDAA+B;AAC/B,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-error.type.js","sourceRoot":"","sources":["../../../src/typeorm/types/driver-error.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './driver-error.type';
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./driver-error.type"), exports);
|
|
18
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/typeorm/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@russ-b/nestjs-common-tools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "NestJS utility tools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
|
-
"dist"
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md"
|
|
9
10
|
],
|
|
10
11
|
"scripts": {
|
|
11
|
-
"build": "
|
|
12
|
+
"build": "node -e \"const fs = require('fs'); fs.rmSync('dist', { recursive: true, force: true }); fs.rmSync('tsconfig.tsbuildinfo', { force: true });\" && tsc",
|
|
12
13
|
"test": "jest",
|
|
13
14
|
"prepare": "npm run build",
|
|
14
15
|
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\"",
|
|
15
|
-
"format": "prettier --write \"src/**/*.ts\""
|
|
16
|
-
"publish": "npm publish --access public"
|
|
16
|
+
"format": "prettier --write \"src/**/*.ts\""
|
|
17
17
|
},
|
|
18
18
|
"keywords": [
|
|
19
19
|
"nestjs",
|
|
@@ -27,40 +27,43 @@
|
|
|
27
27
|
"type": "git",
|
|
28
28
|
"url": "git+https://github.com/RuSS-B/nestjs-common-tools.git"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"./common/util": "./dist/common/util/index.js",
|
|
33
|
-
"./common/pagination": "./dist/common/pagination/index.js",
|
|
34
|
-
"./common/filters": "./dist/common/filters/index.js",
|
|
35
|
-
"./validators": "./dist/validators/index.js",
|
|
36
|
-
"./typeorm": "./dist/typeorm/index.js",
|
|
37
|
-
"./modules": "./dist/modules/index.js",
|
|
38
|
-
"./logger": "./dist/logger/index.js"
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
39
32
|
},
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
"common/pagination"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"common/filters"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"types": "./dist/index.d.ts",
|
|
36
|
+
"default": "./dist/index.js"
|
|
37
|
+
},
|
|
38
|
+
"./common/util": {
|
|
39
|
+
"types": "./dist/common/util/index.d.ts",
|
|
40
|
+
"default": "./dist/common/util/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./common/pagination": {
|
|
43
|
+
"types": "./dist/common/pagination/index.d.ts",
|
|
44
|
+
"default": "./dist/common/pagination/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./common/filters": {
|
|
47
|
+
"types": "./dist/common/filters/index.d.ts",
|
|
48
|
+
"default": "./dist/common/filters/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./validators": {
|
|
51
|
+
"types": "./dist/validators/index.d.ts",
|
|
52
|
+
"default": "./dist/validators/index.js"
|
|
53
|
+
},
|
|
54
|
+
"./typeorm": {
|
|
55
|
+
"types": "./dist/typeorm/index.d.ts",
|
|
56
|
+
"default": "./dist/typeorm/index.js"
|
|
57
|
+
},
|
|
58
|
+
"./modules": {
|
|
59
|
+
"types": "./dist/modules/index.d.ts",
|
|
60
|
+
"default": "./dist/modules/index.js"
|
|
61
|
+
},
|
|
62
|
+
"./logger": {
|
|
63
|
+
"types": "./dist/logger/index.d.ts",
|
|
64
|
+
"default": "./dist/logger/index.js"
|
|
65
|
+
},
|
|
66
|
+
"./package.json": "./package.json"
|
|
64
67
|
},
|
|
65
68
|
"dependencies": {
|
|
66
69
|
"class-transformer": "^0.5.1",
|
|
@@ -74,7 +77,6 @@
|
|
|
74
77
|
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
75
78
|
"@nestjs/config": "^3.0.0 || ^4.0.0",
|
|
76
79
|
"nest-winston": "^1.10.2",
|
|
77
|
-
"protobufjs": "^7.4.0",
|
|
78
80
|
"typeorm": "^0.3.20",
|
|
79
81
|
"winston": "^3.17.0",
|
|
80
82
|
"winston-transport": "^4.9.0"
|
|
@@ -91,7 +93,6 @@
|
|
|
91
93
|
"jest": "^29.7.0",
|
|
92
94
|
"prettier": "^3.4.2",
|
|
93
95
|
"ts-jest": "^29.2.5",
|
|
94
|
-
"ts-proto": "^2.6.1",
|
|
95
96
|
"tsconfig-paths": "^4.2.0",
|
|
96
97
|
"typescript": "^5.7.3",
|
|
97
98
|
"typescript-eslint": "^8.20.0"
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ExceptionFilter, ArgumentsHost } from '@nestjs/common';
|
|
2
|
-
import { QueryFailedError } from 'typeorm';
|
|
3
|
-
export declare class TypeOrmExceptionFilter implements ExceptionFilter {
|
|
4
|
-
catch(exception: QueryFailedError, host: ArgumentsHost): void;
|
|
5
|
-
private throwHttpError;
|
|
6
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.TypeOrmExceptionFilter = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const typeorm_1 = require("typeorm");
|
|
12
|
-
let TypeOrmExceptionFilter = class TypeOrmExceptionFilter {
|
|
13
|
-
catch(exception, host) {
|
|
14
|
-
if (host.getType() !== 'http') {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const errno = exception.errno || +exception.code;
|
|
18
|
-
this.throwHttpError(errno);
|
|
19
|
-
}
|
|
20
|
-
throwHttpError(code) {
|
|
21
|
-
switch (code) {
|
|
22
|
-
case 1062:
|
|
23
|
-
case 23505:
|
|
24
|
-
throw new common_1.ConflictException('A record with these unique constraint(s) already exists');
|
|
25
|
-
case 1451:
|
|
26
|
-
throw new common_1.BadRequestException('Cannot delete or update a parent row: a foreign key constraint fails');
|
|
27
|
-
case 1452:
|
|
28
|
-
throw new common_1.BadRequestException('Cannot add or update a child row: a foreign key constraint fails');
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter;
|
|
33
|
-
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter = __decorate([
|
|
34
|
-
(0, common_1.Catch)(typeorm_1.QueryFailedError)
|
|
35
|
-
], TypeOrmExceptionFilter);
|
|
36
|
-
//# sourceMappingURL=typeorm-exception.filter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeorm-exception.filter.js","sourceRoot":"","sources":["../../../src/common/filters/typeorm-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAMwB;AACxB,qCAA2C;AAGpC,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,KAAK,CAAC,SAA2B,EAAE,IAAmB;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAY,SAAiB,CAAC,KAAK,IAAI,CAAE,SAAiB,CAAC,IAAI,CAAC;QAE3E,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI,CAAC;YACV,KAAK,KAAK;gBACR,MAAM,IAAI,0BAAiB,CACzB,yDAAyD,CAC1D,CAAC;YACJ,KAAK,IAAI;gBACP,MAAM,IAAI,4BAAmB,CAC3B,sEAAsE,CACvE,CAAC;YACJ,KAAK,IAAI;gBACP,MAAM,IAAI,4BAAmB,CAC3B,kEAAkE,CACnE,CAAC;QACN,CAAC;IACH,CAAC;CACF,CAAA;AA5BY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,cAAK,EAAC,0BAAgB,CAAC;GACX,sBAAsB,CA4BlC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { DescriptorProto, FieldDescriptorProto } from 'ts-proto/build/protos';
|
|
2
|
-
export interface IGrpcMethod {
|
|
3
|
-
requestType: {
|
|
4
|
-
type: DescriptorProto;
|
|
5
|
-
};
|
|
6
|
-
responseType: {
|
|
7
|
-
type: DescriptorProto;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
export interface IMethodDescriptor {
|
|
11
|
-
request: FieldDescriptorProto[];
|
|
12
|
-
response: FieldDescriptorProto[];
|
|
13
|
-
}
|
|
14
|
-
interface IStruct {
|
|
15
|
-
fields?: {
|
|
16
|
-
[k: string]: IValue;
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
interface IListValue {
|
|
20
|
-
values?: IValue[];
|
|
21
|
-
}
|
|
22
|
-
export interface IValue {
|
|
23
|
-
kind?: string;
|
|
24
|
-
nullValue?: 0;
|
|
25
|
-
numberValue?: number;
|
|
26
|
-
stringValue?: string;
|
|
27
|
-
boolValue?: boolean;
|
|
28
|
-
structValue?: IStruct;
|
|
29
|
-
listValue?: IListValue;
|
|
30
|
-
}
|
|
31
|
-
export interface StructObject {
|
|
32
|
-
[key: string]: any;
|
|
33
|
-
}
|
|
34
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client-grpc.interface.js","sourceRoot":"","sources":["../../src/grpc/client-grpc.interface.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/grpc/filters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ArgumentsHost, ExceptionFilter } from '@nestjs/common';
|
|
2
|
-
import { RpcException } from '@nestjs/microservices';
|
|
3
|
-
export declare class RpcExceptionFilter implements ExceptionFilter {
|
|
4
|
-
private logger;
|
|
5
|
-
catch(exception: RpcException, host: ArgumentsHost): void;
|
|
6
|
-
}
|