@zola_do/nestjs-shared 0.2.5 → 0.2.8
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 +311 -22
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +13 -12
package/README.md
CHANGED
|
@@ -1,15 +1,42 @@
|
|
|
1
1
|
# @zola_do/nestjs-shared
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@zola_do/nestjs-shared)
|
|
4
|
+
[](https://www.npmjs.com/package/@zola_do/nestjs-shared)
|
|
5
|
+
[](https://opensource.org/licenses/ISC)
|
|
6
|
+
|
|
3
7
|
Meta package that re-exports all `@zola_do/*` packages for one-shot installation.
|
|
4
8
|
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
`@zola_do/nestjs-shared` is a convenience meta package that exports all sub-packages:
|
|
12
|
+
|
|
13
|
+
- **One-shot Installation** — Install all packages at once
|
|
14
|
+
- **Backward Compatible** — Same API as individual packages
|
|
15
|
+
- **Full Monorepo** — Everything you need for NestJS applications
|
|
16
|
+
|
|
17
|
+
### Included Packages
|
|
18
|
+
|
|
19
|
+
| Package | Description |
|
|
20
|
+
| -------------------------------------------------------- | ------------------------------------------------ |
|
|
21
|
+
| [@zola_do/collection-query](../collection-query) | TypeORM filter, sort, paginate, cursor support |
|
|
22
|
+
| [@zola_do/typeorm](../typeorm) | TypeORM configuration from environment variables |
|
|
23
|
+
| [@zola_do/authorization](../authorization) | JWT auth, guards, strategies |
|
|
24
|
+
| [@zola_do/crud](../crud) | Generic CRUD controllers, services, repositories |
|
|
25
|
+
| [@zola_do/audit](../audit) | RabbitMQ audit logging |
|
|
26
|
+
| [@zola_do/email](../email) | SMTP email service |
|
|
27
|
+
| [@zola_do/minio](../minio) | MinIO object storage |
|
|
28
|
+
| [@zola_do/seaweed](../seaweed) | S3-compatible storage |
|
|
29
|
+
| [@zola_do/docx](../docx) | DOCX template processing |
|
|
30
|
+
| [@zola_do/document-manipulator](../document-manipulator) | PDF/DOCX merge and conversion |
|
|
31
|
+
| [@zola_do/workflow-engine](../workflow-engine) | State machine workflow converter |
|
|
32
|
+
|
|
5
33
|
## Installation
|
|
6
34
|
|
|
7
35
|
```bash
|
|
36
|
+
# Install all packages
|
|
8
37
|
npm install @zola_do/nestjs-shared
|
|
9
38
|
```
|
|
10
39
|
|
|
11
|
-
This installs all 14 sub-packages. For smaller installs, install individual packages instead.
|
|
12
|
-
|
|
13
40
|
**Note:** If installation fails due to `nestjs-minio-client` postinstall script, use:
|
|
14
41
|
|
|
15
42
|
```bash
|
|
@@ -21,34 +48,296 @@ npm install @zola_do/nestjs-shared --ignore-scripts
|
|
|
21
48
|
Import from the meta package or from individual packages:
|
|
22
49
|
|
|
23
50
|
```typescript
|
|
24
|
-
// From meta package
|
|
25
|
-
import {
|
|
51
|
+
// From meta package (convenient)
|
|
52
|
+
import {
|
|
53
|
+
AuthorizationModule,
|
|
54
|
+
EntityCrudController,
|
|
55
|
+
CollectionQuery,
|
|
56
|
+
CommonEntity,
|
|
57
|
+
AuditModule,
|
|
58
|
+
EmailService,
|
|
59
|
+
} from "@zola_do/nestjs-shared";
|
|
60
|
+
|
|
61
|
+
// From individual packages (tree-shaking)
|
|
62
|
+
import { AuthorizationModule } from "@zola_do/authorization";
|
|
63
|
+
import { EntityCrudController } from "@zola_do/crud/controller";
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Quick Start
|
|
67
|
+
|
|
68
|
+
### 1. Install
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm install @zola_do/nestjs-shared
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Configure Environment
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Database
|
|
78
|
+
DATABASE_HOST=localhost
|
|
79
|
+
DATABASE_PORT=5432
|
|
80
|
+
DATABASE_NAME=myapp
|
|
81
|
+
DATABASE_USER=postgres
|
|
82
|
+
DATABASE_PASSWORD=secret
|
|
83
|
+
|
|
84
|
+
# JWT
|
|
85
|
+
JWT_ACCESS_TOKEN_SECRET=your-secret
|
|
86
|
+
JWT_ACCESS_TOKEN_EXPIRES=15m
|
|
87
|
+
JWT_REFRESH_TOKEN_SECRET=your-refresh-secret
|
|
88
|
+
JWT_REFRESH_TOKEN_EXPIRES=7d
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 3. Set Up App Module
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { Module } from "@nestjs/common";
|
|
95
|
+
import { TypeOrmModule } from "@nestjs/typeorm";
|
|
96
|
+
import { dataSourceOptions } from "@zola_do/nestjs-shared";
|
|
97
|
+
import { AuthorizationModule } from "@zola_do/nestjs-shared";
|
|
98
|
+
import { AuditModule } from "@zola_do/nestjs-shared";
|
|
99
|
+
import { EmailModule } from "@zola_do/nestjs-shared";
|
|
100
|
+
|
|
101
|
+
@Module({
|
|
102
|
+
imports: [
|
|
103
|
+
TypeOrmModule.forRoot(dataSourceOptions),
|
|
104
|
+
AuthorizationModule,
|
|
105
|
+
AuditModule,
|
|
106
|
+
EmailModule,
|
|
107
|
+
],
|
|
108
|
+
})
|
|
109
|
+
export class AppModule {}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 4. Create CRUD Entity
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { CommonEntity } from "@zola_do/nestjs-shared";
|
|
116
|
+
import { Entity, Column } from "typeorm";
|
|
117
|
+
|
|
118
|
+
@Entity("products")
|
|
119
|
+
export class Product extends CommonEntity {
|
|
120
|
+
@Column()
|
|
121
|
+
name: string;
|
|
122
|
+
|
|
123
|
+
@Column("decimal", { precision: 10, scale: 2 })
|
|
124
|
+
price: number;
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 5. Create CRUD Controller
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
import { Controller } from "@nestjs/common";
|
|
132
|
+
import {
|
|
133
|
+
EntityCrudController,
|
|
134
|
+
EntityCrudService,
|
|
135
|
+
} from "@zola_do/nestjs-shared";
|
|
136
|
+
import { Product } from "./product.entity";
|
|
137
|
+
|
|
138
|
+
@Controller("products")
|
|
139
|
+
export class ProductsController extends EntityCrudController<Product>({
|
|
140
|
+
createPermission: "product:create",
|
|
141
|
+
viewPermission: "product:view",
|
|
142
|
+
updatePermission: "product:update",
|
|
143
|
+
deletePermission: "product:delete",
|
|
144
|
+
}) {
|
|
145
|
+
constructor(service: EntityCrudService<Product>) {
|
|
146
|
+
super(service);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Common Patterns
|
|
152
|
+
|
|
153
|
+
### Full-Featured Module
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import { Module } from '@nestjs/common';
|
|
157
|
+
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
158
|
+
import {
|
|
159
|
+
AuthorizationModule,
|
|
160
|
+
EntityCrudController,
|
|
161
|
+
EntityCrudService,
|
|
162
|
+
CommonEntity,
|
|
163
|
+
} from '@zola_do/nestjs-shared';
|
|
164
|
+
import { Product } from './product.entity';
|
|
165
|
+
import { CreateProductDto, UpdateProductDto } from './product.dto';
|
|
166
|
+
|
|
167
|
+
@Module({
|
|
168
|
+
imports: [
|
|
169
|
+
TypeOrmModule.forFeature([Product]),
|
|
170
|
+
AuthorizationModule,
|
|
171
|
+
],
|
|
172
|
+
controllers: [
|
|
173
|
+
class extends EntityCrudController<Product>({
|
|
174
|
+
createDto: CreateProductDto,
|
|
175
|
+
updateDto: UpdateProductDto,
|
|
176
|
+
createPermission: 'product:create',
|
|
177
|
+
viewPermission: 'product:view',
|
|
178
|
+
updatePermission: 'product:update',
|
|
179
|
+
deletePermission: 'product:delete',
|
|
180
|
+
beforeCreate: async ({ req, itemData }) => {
|
|
181
|
+
itemData.organizationId = req.user.organizationId;
|
|
182
|
+
},
|
|
183
|
+
}),
|
|
184
|
+
],
|
|
185
|
+
providers: [EntityCrudService],
|
|
186
|
+
})
|
|
187
|
+
export class ProductsModule {}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Using Email Service
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
import { EmailService } from "@zola_do/nestjs-shared";
|
|
194
|
+
|
|
195
|
+
@Injectable()
|
|
196
|
+
class OrderService {
|
|
197
|
+
constructor(private readonly emailService: EmailService) {}
|
|
198
|
+
|
|
199
|
+
async sendOrderConfirmation(order: Order) {
|
|
200
|
+
await this.emailService.sendEmail({
|
|
201
|
+
to: order.customerEmail,
|
|
202
|
+
subject: `Order #${order.number} Confirmed`,
|
|
203
|
+
html: `<h1>Thank you for your order!</h1>`,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Using Collection Query
|
|
210
|
+
|
|
211
|
+
```typescript
|
|
212
|
+
import {
|
|
213
|
+
decodeCollectionQuery,
|
|
214
|
+
QueryConstructor,
|
|
215
|
+
} from "@zola_do/nestjs-shared";
|
|
216
|
+
|
|
217
|
+
@Controller("products")
|
|
218
|
+
export class ProductsController {
|
|
219
|
+
@Get()
|
|
220
|
+
async findAll(@Query("q") q: string) {
|
|
221
|
+
const query = decodeCollectionQuery(q);
|
|
222
|
+
const dataQuery = QueryConstructor.constructQuery<Product>(
|
|
223
|
+
this.productRepo,
|
|
224
|
+
query,
|
|
225
|
+
);
|
|
226
|
+
return dataQuery.getManyAndCount();
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Exports
|
|
232
|
+
|
|
233
|
+
The meta package re-exports everything from all sub-packages:
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// Collection Query
|
|
237
|
+
import {
|
|
238
|
+
CollectionQuery,
|
|
239
|
+
QueryConstructor,
|
|
240
|
+
FilterOperators,
|
|
241
|
+
} from "@zola_do/nestjs-shared";
|
|
242
|
+
|
|
243
|
+
// TypeORM
|
|
244
|
+
import {
|
|
245
|
+
dataSourceOptions,
|
|
246
|
+
TypeOrmConfigHelper,
|
|
247
|
+
CommonEntity,
|
|
248
|
+
} from "@zola_do/nestjs-shared";
|
|
249
|
+
|
|
250
|
+
// Authorization
|
|
251
|
+
import {
|
|
252
|
+
AuthorizationModule,
|
|
253
|
+
JwtGuard,
|
|
254
|
+
PermissionsGuard,
|
|
255
|
+
AllowAnonymous,
|
|
256
|
+
CurrentUser,
|
|
257
|
+
AuthHelper,
|
|
258
|
+
} from "@zola_do/nestjs-shared";
|
|
259
|
+
|
|
260
|
+
// CRUD
|
|
261
|
+
import {
|
|
262
|
+
EntityCrudController,
|
|
263
|
+
EntityCrudService,
|
|
264
|
+
EntityCrudOptions,
|
|
265
|
+
CRUD_REQUEST_CONTEXT_RESOLVER,
|
|
266
|
+
} from "@zola_do/nestjs-shared";
|
|
267
|
+
|
|
268
|
+
// Audit
|
|
269
|
+
import {
|
|
270
|
+
AuditModule,
|
|
271
|
+
AuditRmqEvent,
|
|
272
|
+
AuditLoggerInterceptor,
|
|
273
|
+
} from "@zola_do/nestjs-shared";
|
|
274
|
+
|
|
275
|
+
// Email
|
|
276
|
+
import { EmailModule, EmailService } from "@zola_do/nestjs-shared";
|
|
277
|
+
|
|
278
|
+
// Storage
|
|
279
|
+
import {
|
|
280
|
+
MinIoModule,
|
|
281
|
+
MinIOService,
|
|
282
|
+
StorageModule,
|
|
283
|
+
StorageService,
|
|
284
|
+
} from "@zola_do/nestjs-shared";
|
|
26
285
|
|
|
27
|
-
//
|
|
28
|
-
import {
|
|
286
|
+
// Documents
|
|
287
|
+
import { DocxModule, DocxService } from "@zola_do/nestjs-shared";
|
|
288
|
+
import {
|
|
289
|
+
DocumentManipulatorModule,
|
|
290
|
+
DocumentManipulatorService,
|
|
291
|
+
} from "@zola_do/nestjs-shared";
|
|
292
|
+
|
|
293
|
+
// Workflow
|
|
294
|
+
import { WorkflowEngineService } from "@zola_do/nestjs-shared";
|
|
29
295
|
```
|
|
30
296
|
|
|
31
|
-
##
|
|
297
|
+
## Peer Dependencies
|
|
32
298
|
|
|
33
|
-
|
|
34
|
-
|---------|-------------|
|
|
35
|
-
| [@zola_do/collection-query](../collection-query) | TypeORM filter, sort, paginate |
|
|
36
|
-
| [@zola_do/typeorm](../typeorm) | TypeORM configuration |
|
|
37
|
-
| [@zola_do/authorization](../authorization) | JWT auth, guards, strategies |
|
|
38
|
-
| [@zola_do/crud](../crud) | Generic CRUD controllers and services |
|
|
39
|
-
| [@zola_do/audit](../audit) | RabbitMQ audit logging |
|
|
40
|
-
| [@zola_do/email](../email) | SMTP email service |
|
|
41
|
-
| [@zola_do/minio](../minio) | MinIO object storage |
|
|
42
|
-
| [@zola_do/seaweed](../seaweed) | S3-compatible storage |
|
|
43
|
-
| [@zola_do/docx](../docx) | DOCX template processing |
|
|
44
|
-
| [@zola_do/document-manipulator](../document-manipulator) | PDF/DOCX merge and conversion |
|
|
45
|
-
| [@zola_do/workflow-engine](../workflow-engine) | State machine workflow converter |
|
|
299
|
+
The meta package requires these peer dependencies:
|
|
46
300
|
|
|
47
|
-
|
|
301
|
+
```bash
|
|
302
|
+
npm install @nestjs/common @nestjs/core @nestjs/typeorm @nestjs/jwt @nestjs/passport
|
|
303
|
+
npm install @nestjs/config @nestjs/swagger @nestjs/throttler
|
|
304
|
+
npm install typeorm typeorm-extension passport passport-jwt
|
|
305
|
+
npm install class-validator class-transformer
|
|
306
|
+
npm install bcrypt jsonwebtoken
|
|
307
|
+
npm install @nestjs-modules/mailer nodemailer
|
|
308
|
+
npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner
|
|
309
|
+
npm install nestjs-minio-client
|
|
310
|
+
npm install docx-templates pdf-lib docx-merger axios form-data
|
|
311
|
+
npm install dotenv
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Optional peer dependencies (for full functionality):
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
npm install @nestjs/microservices amqplib # For audit logging
|
|
318
|
+
npm install @nestjs/throttler # For rate limiting
|
|
319
|
+
npm install libreoffice-convert # For document conversion
|
|
320
|
+
```
|
|
48
321
|
|
|
49
322
|
## Documentation
|
|
50
323
|
|
|
51
|
-
For
|
|
324
|
+
For detailed documentation on each package:
|
|
325
|
+
|
|
326
|
+
| Package | README |
|
|
327
|
+
| -------------------- | ---------------------------------------------------------------------------- |
|
|
328
|
+
| collection-query | [packages/collection-query/README.md](../collection-query/README.md) |
|
|
329
|
+
| typeorm | [packages/typeorm/README.md](../typeorm/README.md) |
|
|
330
|
+
| authorization | [packages/authorization/README.md](../authorization/README.md) |
|
|
331
|
+
| crud | [packages/crud/README.md](../crud/README.md) |
|
|
332
|
+
| audit | [packages/audit/README.md](../audit/README.md) |
|
|
333
|
+
| email | [packages/email/README.md](../email/README.md) |
|
|
334
|
+
| minio | [packages/minio/README.md](../minio/README.md) |
|
|
335
|
+
| seaweed | [packages/seaweed/README.md](../seaweed/README.md) |
|
|
336
|
+
| docx | [packages/docx/README.md](../docx/README.md) |
|
|
337
|
+
| document-manipulator | [packages/document-manipulator/README.md](../document-manipulator/README.md) |
|
|
338
|
+
| workflow-engine | [packages/workflow-engine/README.md](../workflow-engine/README.md) |
|
|
339
|
+
|
|
340
|
+
For architecture overview, see [ARCHITECTURE.md](../../ARCHITECTURE.md).
|
|
52
341
|
|
|
53
342
|
## License
|
|
54
343
|
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -25,4 +25,5 @@ __exportStar(require("@zola_do/seaweed"), exports);
|
|
|
25
25
|
__exportStar(require("@zola_do/docx"), exports);
|
|
26
26
|
__exportStar(require("@zola_do/document-manipulator"), exports);
|
|
27
27
|
__exportStar(require("@zola_do/workflow-engine"), exports);
|
|
28
|
+
__exportStar(require("@zola_do/health"), exports);
|
|
28
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,mDAAiC;AACjC,yDAAuC;AACvC,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,iDAA+B;AAC/B,mDAAiC;AACjC,gDAA8B;AAC9B,gEAA8C;AAC9C,2DAAyC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,mDAAiC;AACjC,yDAAuC;AACvC,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,iDAA+B;AAC/B,mDAAiC;AACjC,gDAA8B;AAC9B,gEAA8C;AAC9C,2DAAyC;AACzC,kDAAgC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zola_do/nestjs-shared",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Shared package for NestJS applications - re-exports all @zola_do packages",
|
|
5
5
|
"author": "zolaDO",
|
|
6
6
|
"license": "ISC",
|
|
@@ -31,17 +31,18 @@
|
|
|
31
31
|
"prepublishOnly": "npm run build"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@zola_do/collection-query": "^0.2.
|
|
35
|
-
"@zola_do/typeorm": "^0.2.
|
|
36
|
-
"@zola_do/authorization": "^0.2.
|
|
37
|
-
"@zola_do/crud": "^0.2.
|
|
38
|
-
"@zola_do/audit": "^0.2.
|
|
39
|
-
"@zola_do/email": "^0.2.
|
|
40
|
-
"@zola_do/minio": "^0.2.
|
|
41
|
-
"@zola_do/seaweed": "^0.2.
|
|
42
|
-
"@zola_do/docx": "^0.2.
|
|
43
|
-
"@zola_do/document-manipulator": "^0.2.
|
|
44
|
-
"@zola_do/workflow-engine": "^0.2.
|
|
34
|
+
"@zola_do/collection-query": "^0.2.7",
|
|
35
|
+
"@zola_do/typeorm": "^0.2.7",
|
|
36
|
+
"@zola_do/authorization": "^0.2.7",
|
|
37
|
+
"@zola_do/crud": "^0.2.7",
|
|
38
|
+
"@zola_do/audit": "^0.2.7",
|
|
39
|
+
"@zola_do/email": "^0.2.7",
|
|
40
|
+
"@zola_do/minio": "^0.2.7",
|
|
41
|
+
"@zola_do/seaweed": "^0.2.7",
|
|
42
|
+
"@zola_do/docx": "^0.2.7",
|
|
43
|
+
"@zola_do/document-manipulator": "^0.2.7",
|
|
44
|
+
"@zola_do/workflow-engine": "^0.2.7",
|
|
45
|
+
"@zola_do/health": "^0.2.7"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"rimraf": "^6.1.3",
|