@russ-b/nestjs-common-tools 1.12.0 → 1.13.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 +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/{common/types → 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.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/{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 -15
- package/dist/common/filters/typeorm-exception.filter.js.map +0 -1
- package/dist/common/types/index.d.ts +0 -1
- package/dist/common/types/index.js.map +0 -1
- package/dist/common/types/typeorm-driver.types.js +0 -3
- package/dist/common/types/typeorm-driver.types.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 +0 -18
- 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/dist/{common → typeorm}/filters/typeorm-exception.filter.d.ts +0 -0
- /package/dist/{common → typeorm}/filters/typeorm-exception.filter.js +0 -0
- /package/dist/{common/types/typeorm-driver.types.d.ts → typeorm/types/driver-error.type.d.ts} +0 -0
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 @@
|
|
|
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.1",
|
|
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,15 +27,43 @@
|
|
|
27
27
|
"type": "git",
|
|
28
28
|
"url": "git+https://github.com/RuSS-B/nestjs-common-tools.git"
|
|
29
29
|
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
30
33
|
"exports": {
|
|
31
|
-
".":
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"./
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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"
|
|
39
67
|
},
|
|
40
68
|
"typesVersions": {
|
|
41
69
|
"*": {
|
|
@@ -74,7 +102,6 @@
|
|
|
74
102
|
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
75
103
|
"@nestjs/config": "^3.0.0 || ^4.0.0",
|
|
76
104
|
"nest-winston": "^1.10.2",
|
|
77
|
-
"protobufjs": "^7.4.0",
|
|
78
105
|
"typeorm": "^0.3.20",
|
|
79
106
|
"winston": "^3.17.0",
|
|
80
107
|
"winston-transport": "^4.9.0"
|
|
@@ -91,7 +118,6 @@
|
|
|
91
118
|
"jest": "^29.7.0",
|
|
92
119
|
"prettier": "^3.4.2",
|
|
93
120
|
"ts-jest": "^29.2.5",
|
|
94
|
-
"ts-proto": "^2.6.1",
|
|
95
121
|
"tsconfig-paths": "^4.2.0",
|
|
96
122
|
"typescript": "^5.7.3",
|
|
97
123
|
"typescript-eslint": "^8.20.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeorm-exception.filter.js","sourceRoot":"","sources":["../../../src/common/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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './typeorm-driver.types';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeorm-driver.types.js","sourceRoot":"","sources":["../../../src/common/types/typeorm-driver.types.ts"],"names":[],"mappings":""}
|
|
@@ -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
|
-
}
|
|
@@ -1,63 +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.RpcExceptionFilter = void 0;
|
|
10
|
-
const common_1 = require("@nestjs/common");
|
|
11
|
-
const microservices_1 = require("@nestjs/microservices");
|
|
12
|
-
let RpcExceptionFilter = class RpcExceptionFilter {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.logger = new common_1.Logger(this.constructor.name);
|
|
15
|
-
}
|
|
16
|
-
catch(exception, host) {
|
|
17
|
-
const ctx = host.switchToHttp();
|
|
18
|
-
const response = ctx.getResponse();
|
|
19
|
-
const error = exception.getError();
|
|
20
|
-
let status = common_1.HttpStatus.INTERNAL_SERVER_ERROR;
|
|
21
|
-
let message = 'Internal server error';
|
|
22
|
-
switch (error.code) {
|
|
23
|
-
case 1:
|
|
24
|
-
break;
|
|
25
|
-
case 3:
|
|
26
|
-
status = common_1.HttpStatus.BAD_REQUEST;
|
|
27
|
-
break;
|
|
28
|
-
case 5:
|
|
29
|
-
status = common_1.HttpStatus.NOT_FOUND;
|
|
30
|
-
break;
|
|
31
|
-
case 7:
|
|
32
|
-
status = common_1.HttpStatus.FORBIDDEN;
|
|
33
|
-
break;
|
|
34
|
-
case 12:
|
|
35
|
-
status = common_1.HttpStatus.NOT_IMPLEMENTED;
|
|
36
|
-
break;
|
|
37
|
-
case 16:
|
|
38
|
-
status = common_1.HttpStatus.UNAUTHORIZED;
|
|
39
|
-
break;
|
|
40
|
-
default:
|
|
41
|
-
this.logger.error(error);
|
|
42
|
-
}
|
|
43
|
-
message = error.message || message;
|
|
44
|
-
let details = '';
|
|
45
|
-
try {
|
|
46
|
-
details = JSON.parse(error.details)['error'];
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
details = error.details;
|
|
50
|
-
}
|
|
51
|
-
response.status(status).json({
|
|
52
|
-
statusCode: status,
|
|
53
|
-
message: message,
|
|
54
|
-
error: common_1.HttpStatus[status],
|
|
55
|
-
details: details,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
exports.RpcExceptionFilter = RpcExceptionFilter;
|
|
60
|
-
exports.RpcExceptionFilter = RpcExceptionFilter = __decorate([
|
|
61
|
-
(0, common_1.Catch)(microservices_1.RpcException)
|
|
62
|
-
], RpcExceptionFilter);
|
|
63
|
-
//# sourceMappingURL=rpc-exception.filter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-exception.filter.js","sourceRoot":"","sources":["../../../src/grpc/filters/rpc-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAMwB;AACxB,yDAAqD;AAI9C,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAAxB;QACG,WAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAiDrD,CAAC;IA/CC,KAAK,CAAC,SAAuB,EAAE,IAAmB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAE7C,MAAM,KAAK,GAAQ,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,MAAM,GAAG,mBAAU,CAAC,qBAAqB,CAAC;QAC9C,IAAI,OAAO,GAAG,uBAAuB,CAAC;QAGtC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC;gBACJ,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM,GAAG,mBAAU,CAAC,WAAW,CAAC;gBAChC,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM,GAAG,mBAAU,CAAC,SAAS,CAAC;gBAC9B,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM,GAAG,mBAAU,CAAC,SAAS,CAAC;gBAC9B,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,GAAG,mBAAU,CAAC,eAAe,CAAC;gBACpC,MAAM;YACR,KAAK,EAAE;gBACL,MAAM,GAAG,mBAAU,CAAC,YAAY,CAAC;gBACjC,MAAM;YACR;gBACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC;QAEnC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC3B,UAAU,EAAE,MAAM;YAClB,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,mBAAU,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAlDY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,cAAK,EAAC,4BAAY,CAAC;GACP,kBAAkB,CAkD9B"}
|
|
@@ -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): import("rxjs").Observable<never> | undefined;
|
|
5
|
-
private getError;
|
|
6
|
-
}
|
|
@@ -1,52 +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
|
-
const grpc_js_1 = require("@grpc/grpc-js");
|
|
13
|
-
const rxjs_1 = require("rxjs");
|
|
14
|
-
let TypeOrmExceptionFilter = class TypeOrmExceptionFilter {
|
|
15
|
-
catch(exception, host) {
|
|
16
|
-
if (host.getType() !== 'rpc') {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
const errno = exception.errno || +exception.code;
|
|
20
|
-
const error = this.getError(errno);
|
|
21
|
-
return (0, rxjs_1.throwError)(() => ({
|
|
22
|
-
code: error?.code || 500,
|
|
23
|
-
message: error?.message || exception.message,
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
getError(code) {
|
|
27
|
-
const errorMapping = {
|
|
28
|
-
23505: {
|
|
29
|
-
code: grpc_js_1.status.ALREADY_EXISTS,
|
|
30
|
-
message: 'A record with these unique constraints already exists',
|
|
31
|
-
},
|
|
32
|
-
1062: {
|
|
33
|
-
code: grpc_js_1.status.ALREADY_EXISTS,
|
|
34
|
-
message: 'A record with these unique constraints already exists',
|
|
35
|
-
},
|
|
36
|
-
1451: {
|
|
37
|
-
code: grpc_js_1.status.ALREADY_EXISTS,
|
|
38
|
-
message: 'Cannot delete or update a parent row: a foreign key constraint fails',
|
|
39
|
-
},
|
|
40
|
-
1452: {
|
|
41
|
-
code: grpc_js_1.status.INVALID_ARGUMENT,
|
|
42
|
-
message: 'Cannot add or update a child row: a foreign key constraint fails',
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
return errorMapping[code];
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter;
|
|
49
|
-
exports.TypeOrmExceptionFilter = TypeOrmExceptionFilter = __decorate([
|
|
50
|
-
(0, common_1.Catch)(typeorm_1.QueryFailedError)
|
|
51
|
-
], TypeOrmExceptionFilter);
|
|
52
|
-
//# sourceMappingURL=typeorm-exception.filter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeorm-exception.filter.js","sourceRoot":"","sources":["../../../src/grpc/filters/typeorm-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAuE;AACvE,qCAA2C;AAC3C,2CAAuC;AACvC,+BAAkC;AAQ3B,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,KAAK,CAAC,SAA2B,EAAE,IAAmB;QACpD,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAI,SAAiB,CAAC,KAAK,IAAI,CAAE,SAAiB,CAAC,IAAI,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,GAAG;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,QAAQ,CAAC,IAAY;QAC3B,MAAM,YAAY,GAA2B;YAC3C,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAM,CAAC,cAAc;gBAC3B,OAAO,EAAE,uDAAuD;aACjE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAM,CAAC,cAAc;gBAC3B,OAAO,EAAE,uDAAuD;aACjE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAM,CAAC,cAAc;gBAC3B,OAAO,EACL,sEAAsE;aACzE;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,gBAAM,CAAC,gBAAgB;gBAC7B,OAAO,EACL,kEAAkE;aACrE;SACF,CAAC;QAEF,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF,CAAA;AAtCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,cAAK,EAAC,0BAAgB,CAAC;GACX,sBAAsB,CAsClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grpc.module.js","sourceRoot":"","sources":["../../src/grpc/grpc.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,sEAAyE;AACzE,iDAAmD;AACnD,2CAAkD;AAM3C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAJtB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,6CAAwB,EAAE,gCAAiB,EAAE,+BAAmB,CAAC;QAC7E,OAAO,EAAE,CAAC,6CAAwB,EAAE,gCAAiB,EAAE,+BAAmB,CAAC;KAC5E,CAAC;GACW,UAAU,CAAG"}
|
package/dist/grpc/index.d.ts
DELETED