@uecsio/pages-api 1.0.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.
Files changed (35) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/dist/controllers/pages.controller.d.ts +8 -0
  4. package/dist/controllers/pages.controller.d.ts.map +1 -0
  5. package/dist/controllers/pages.controller.js +48 -0
  6. package/dist/controllers/pages.controller.js.map +1 -0
  7. package/dist/dto/create-page.dto.d.ts +12 -0
  8. package/dist/dto/create-page.dto.d.ts.map +1 -0
  9. package/dist/dto/create-page.dto.js +102 -0
  10. package/dist/dto/create-page.dto.js.map +1 -0
  11. package/dist/dto/update-page.dto.d.ts +7 -0
  12. package/dist/dto/update-page.dto.d.ts.map +1 -0
  13. package/dist/dto/update-page.dto.js +30 -0
  14. package/dist/dto/update-page.dto.js.map +1 -0
  15. package/dist/entities/page.entity.d.ts +15 -0
  16. package/dist/entities/page.entity.d.ts.map +1 -0
  17. package/dist/entities/page.entity.js +126 -0
  18. package/dist/entities/page.entity.js.map +1 -0
  19. package/dist/index.d.ts +13 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +36 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/pages.module.d.ts +3 -0
  24. package/dist/pages.module.d.ts.map +1 -0
  25. package/dist/pages.module.js +26 -0
  26. package/dist/pages.module.js.map +1 -0
  27. package/dist/services/pages.service.d.ts +7 -0
  28. package/dist/services/pages.service.d.ts.map +1 -0
  29. package/dist/services/pages.service.js +32 -0
  30. package/dist/services/pages.service.js.map +1 -0
  31. package/dist/specs/pages.test.config.d.ts +31 -0
  32. package/dist/specs/pages.test.config.d.ts.map +1 -0
  33. package/dist/specs/pages.test.config.js +86 -0
  34. package/dist/specs/pages.test.config.js.map +1 -0
  35. package/package.json +81 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Your Organization
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,235 @@
1
+ # @your-org/pages-nestjs
2
+
3
+ A reusable NestJS Pages module for content management with full CRUD operations, validation, and Swagger documentation.
4
+
5
+ ## 🚀 Features
6
+
7
+ - **Full CRUD Operations**: Create, Read, Update, Delete pages
8
+ - **TypeORM Integration**: Built-in database support
9
+ - **Validation**: Class-validator integration for DTOs
10
+ - **Swagger Documentation**: Auto-generated API documentation
11
+ - **Flexible Configuration**: Easy to customize and extend
12
+ - **TypeScript Support**: Full type safety
13
+
14
+ ## 📦 Installation
15
+
16
+ ```bash
17
+ npm install @your-org/pages-nestjs
18
+ ```
19
+
20
+ ## 🔧 Dependencies
21
+
22
+ This package requires the following peer dependencies in your NestJS application:
23
+
24
+ ```bash
25
+ npm install @nestjs/common @nestjs/typeorm typeorm class-validator class-transformer @nestjs-library/crud
26
+ ```
27
+
28
+ ## 📖 Usage
29
+
30
+ ### 1. Import the Module
31
+
32
+ ```typescript
33
+ import { Module } from '@nestjs/common';
34
+ import { TypeOrmModule } from '@nestjs/typeorm';
35
+ import { PagesModule } from '@your-org/pages-nestjs';
36
+
37
+ @Module({
38
+ imports: [
39
+ TypeOrmModule.forRoot({
40
+ type: 'postgres',
41
+ host: 'localhost',
42
+ port: 5432,
43
+ username: 'postgres',
44
+ password: 'password',
45
+ database: 'your_database',
46
+ entities: [__dirname + '/**/*.entity{.ts,.js}'],
47
+ synchronize: true, // Only in development
48
+ }),
49
+ PagesModule,
50
+ ],
51
+ })
52
+ export class AppModule {}
53
+ ```
54
+
55
+ ### 2. Use the Service
56
+
57
+ ```typescript
58
+ import { Injectable } from '@nestjs/common';
59
+ import { PagesService, CreatePageDto, Page } from '@your-org/pages-nestjs';
60
+
61
+ @Injectable()
62
+ export class YourService {
63
+ constructor(private readonly pagesService: PagesService) {}
64
+
65
+ async createPage(data: CreatePageDto): Promise<Page> {
66
+ return this.pagesService.create(data);
67
+ }
68
+
69
+ async getAllPages(): Promise<Page[]> {
70
+ return this.pagesService.findAll();
71
+ }
72
+
73
+ async getPageById(id: number): Promise<Page> {
74
+ return this.pagesService.findOne(id);
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### 3. Use the Controller
80
+
81
+ The package automatically provides a REST API with the following endpoints:
82
+
83
+ - `POST /pages` - Create a new page
84
+ - `GET /pages` - Get all pages
85
+ - `GET /pages/:id` - Get a specific page
86
+ - `PUT /pages/:id` - Update a page
87
+ - `DELETE /pages/:id` - Delete a page
88
+
89
+ ### 4. Customize the Page Entity
90
+
91
+ You can extend the Page entity for your specific needs:
92
+
93
+ ```typescript
94
+ import { Entity } from 'typeorm';
95
+ import { Page } from '@your-org/pages-nestjs';
96
+
97
+ @Entity()
98
+ export class CustomPage extends Page {
99
+ // Add your custom fields here
100
+ @Column()
101
+ customField: string;
102
+ }
103
+ ```
104
+
105
+ ## 🏗️ Architecture
106
+
107
+ ```
108
+ src/
109
+ ├── entities/
110
+ │ └── page.entity.ts # Page database entity
111
+ ├── dto/
112
+ │ ├── create-page.dto.ts # Create page DTO
113
+ │ └── update-page.dto.ts # Update page DTO
114
+ ├── services/
115
+ │ └── pages.service.ts # Business logic service
116
+ ├── controllers/
117
+ │ └── pages.controller.ts # REST API controller
118
+ ├── pages.module.ts # NestJS module
119
+ └── index.ts # Package exports
120
+ ```
121
+
122
+ ## 🔍 API Documentation
123
+
124
+ Once the module is imported, you can access the Swagger documentation at:
125
+
126
+ ```
127
+ http://localhost:3000/api
128
+ ```
129
+
130
+ ## 🧪 Testing
131
+
132
+ ```bash
133
+ # Run tests
134
+ npm test
135
+
136
+ # Run tests with coverage
137
+ npm run test:cov
138
+
139
+ # Run tests in watch mode
140
+ npm run test:watch
141
+ ```
142
+
143
+ ## 📝 Configuration
144
+
145
+ ### Environment Variables
146
+
147
+ The module uses the following environment variables (with defaults):
148
+
149
+ ```env
150
+ DB_HOST=localhost
151
+ DB_PORT=5432
152
+ DB_USERNAME=postgres
153
+ DB_PASSWORD=password
154
+ DB_NAME=your_database
155
+ ```
156
+
157
+ ### Custom Database Configuration
158
+
159
+ You can override the database configuration:
160
+
161
+ ```typescript
162
+ import { Module } from '@nestjs/common';
163
+ import { TypeOrmModule } from '@nestjs/typeorm';
164
+ import { PagesModule } from '@your-org/pages-nestjs';
165
+
166
+ @Module({
167
+ imports: [
168
+ TypeOrmModule.forRoot({
169
+ // Your custom database configuration
170
+ type: 'mysql',
171
+ host: 'your-host',
172
+ // ... other options
173
+ }),
174
+ PagesModule,
175
+ ],
176
+ })
177
+ export class AppModule {}
178
+ ```
179
+
180
+ ## 🔌 Extending the Module
181
+
182
+ ### Custom Service Methods
183
+
184
+ ```typescript
185
+ import { Injectable } from '@nestjs/common';
186
+ import { PagesService } from '@your-org/pages-nestjs';
187
+
188
+ @Injectable()
189
+ export class CustomPagesService extends PagesService {
190
+ async findByStatus(status: number) {
191
+ return this.repository.find({ where: { status } });
192
+ }
193
+ }
194
+ ```
195
+
196
+ ### Custom Controller Methods
197
+
198
+ ```typescript
199
+ import { Controller } from '@nestjs/common';
200
+ import { PagesController } from '@your-org/pages-nestjs';
201
+
202
+ @Controller('custom-pages')
203
+ export class CustomPagesController extends PagesController {
204
+ // Add your custom endpoints here
205
+ }
206
+ ```
207
+
208
+ ## 🤝 Contributing
209
+
210
+ 1. Fork the repository
211
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
212
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
213
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
214
+ 5. Open a Pull Request
215
+
216
+ ## 📄 License
217
+
218
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
219
+
220
+ ## 🆘 Support
221
+
222
+ If you encounter any problems or have questions, please:
223
+
224
+ 1. Check the [documentation](https://github.com/your-org/pages-nestjs#readme)
225
+ 2. Search [existing issues](https://github.com/your-org/pages-nestjs/issues)
226
+ 3. Create a [new issue](https://github.com/your-org/pages-nestjs/issues/new)
227
+
228
+ ## 🔄 Changelog
229
+
230
+ ### v1.0.0
231
+ - Initial release
232
+ - Full CRUD operations
233
+ - TypeORM integration
234
+ - Swagger documentation
235
+ - Validation support
@@ -0,0 +1,8 @@
1
+ import { CrudController } from '@nestjs-library/crud';
2
+ import { Page } from '../entities/page.entity';
3
+ import { PagesService } from '../services/pages.service';
4
+ export declare class PagesController implements CrudController<Page> {
5
+ readonly crudService: PagesService;
6
+ constructor(crudService: PagesService);
7
+ }
8
+ //# sourceMappingURL=pages.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/pages.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,qBAmBa,eAAgB,YAAW,cAAc,CAAC,IAAI,CAAC;aAC9B,WAAW,EAAE,YAAY;gBAAzB,WAAW,EAAE,YAAY;CACtD"}
@@ -0,0 +1,48 @@
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.PagesController = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const crud_1 = require("@nestjs-library/crud");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ const page_entity_1 = require("../entities/page.entity");
17
+ const pages_service_1 = require("../services/pages.service");
18
+ const create_page_dto_1 = require("../dto/create-page.dto");
19
+ const update_page_dto_1 = require("../dto/update-page.dto");
20
+ let PagesController = class PagesController {
21
+ constructor(crudService) {
22
+ this.crudService = crudService;
23
+ }
24
+ };
25
+ exports.PagesController = PagesController;
26
+ exports.PagesController = PagesController = __decorate([
27
+ (0, swagger_1.ApiTags)('pages'),
28
+ (0, crud_1.Crud)({
29
+ entity: page_entity_1.Page,
30
+ routes: {
31
+ create: {
32
+ swagger: {
33
+ body: create_page_dto_1.CreatePageDto,
34
+ response: page_entity_1.Page,
35
+ },
36
+ },
37
+ update: {
38
+ swagger: {
39
+ body: update_page_dto_1.UpdatePageDto,
40
+ response: page_entity_1.Page,
41
+ },
42
+ },
43
+ },
44
+ }),
45
+ (0, common_1.Controller)('pages'),
46
+ __metadata("design:paramtypes", [pages_service_1.PagesService])
47
+ ], PagesController);
48
+ //# sourceMappingURL=pages.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.controller.js","sourceRoot":"","sources":["../../src/controllers/pages.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+CAA4D;AAC5D,6CAA0C;AAC1C,yDAA+C;AAC/C,6DAAyD;AACzD,4DAAuD;AACvD,4DAAuD;AAqBhD,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAA4B,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;CAC1D,CAAA;AAFY,0CAAe;0BAAf,eAAe;IAnB3B,IAAA,iBAAO,EAAC,OAAO,CAAC;IAChB,IAAA,WAAI,EAAC;QACJ,MAAM,EAAE,kBAAI;QACZ,MAAM,EAAE;YACN,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,IAAI,EAAE,+BAAa;oBACnB,QAAQ,EAAE,kBAAI;iBACf;aACF;YACD,MAAM,EAAE;gBACN,OAAO,EAAE;oBACP,IAAI,EAAE,+BAAa;oBACnB,QAAQ,EAAE,kBAAI;iBACf;aACF;SACF;KACF,CAAC;IACD,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEuB,4BAAY;GAD1C,eAAe,CAE3B"}
@@ -0,0 +1,12 @@
1
+ export declare class CreatePageDto {
2
+ title: string;
3
+ url: string;
4
+ content: string;
5
+ metaTitle?: string;
6
+ metaKeywords?: string;
7
+ metaDescription?: string;
8
+ status: number;
9
+ activateFrom?: Date;
10
+ activateTo?: Date;
11
+ }
12
+ //# sourceMappingURL=create-page.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.dto.d.ts","sourceRoot":"","sources":["../../src/dto/create-page.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,aAAa;IAOxB,KAAK,EAAE,MAAM,CAAC;IASd,GAAG,EAAE,MAAM,CAAC;IAOZ,OAAO,EAAE,MAAM,CAAC;IAShB,SAAS,CAAC,EAAE,MAAM,CAAC;IASnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAQtB,eAAe,CAAC,EAAE,MAAM,CAAC;IASzB,MAAM,EAAE,MAAM,CAAC;IAQf,YAAY,CAAC,EAAE,IAAI,CAAC;IAQpB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB"}
@@ -0,0 +1,102 @@
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.CreatePageDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ class CreatePageDto {
16
+ }
17
+ exports.CreatePageDto = CreatePageDto;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({
20
+ description: 'The title of the page',
21
+ example: 'Welcome to Our Website',
22
+ maxLength: 255,
23
+ }),
24
+ (0, class_validator_1.IsString)(),
25
+ __metadata("design:type", String)
26
+ ], CreatePageDto.prototype, "title", void 0);
27
+ __decorate([
28
+ (0, swagger_1.ApiProperty)({
29
+ description: 'The URL of the page',
30
+ example: 'https://example.com/welcome',
31
+ maxLength: 255,
32
+ }),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.IsUrl)(),
35
+ __metadata("design:type", String)
36
+ ], CreatePageDto.prototype, "url", void 0);
37
+ __decorate([
38
+ (0, swagger_1.ApiProperty)({
39
+ description: 'The main content of the page',
40
+ example: 'Welcome to our amazing website! We provide the best services...',
41
+ }),
42
+ (0, class_validator_1.IsString)(),
43
+ __metadata("design:type", String)
44
+ ], CreatePageDto.prototype, "content", void 0);
45
+ __decorate([
46
+ (0, swagger_1.ApiPropertyOptional)({
47
+ description: 'SEO meta title for the page',
48
+ example: 'Welcome Page - Best Services',
49
+ maxLength: 255,
50
+ }),
51
+ (0, class_validator_1.IsOptional)(),
52
+ (0, class_validator_1.IsString)(),
53
+ __metadata("design:type", String)
54
+ ], CreatePageDto.prototype, "metaTitle", void 0);
55
+ __decorate([
56
+ (0, swagger_1.ApiPropertyOptional)({
57
+ description: 'SEO meta keywords for the page',
58
+ example: 'welcome, services, website',
59
+ maxLength: 255,
60
+ }),
61
+ (0, class_validator_1.IsOptional)(),
62
+ (0, class_validator_1.IsString)(),
63
+ __metadata("design:type", String)
64
+ ], CreatePageDto.prototype, "metaKeywords", void 0);
65
+ __decorate([
66
+ (0, swagger_1.ApiPropertyOptional)({
67
+ description: 'SEO meta description for the page',
68
+ example: 'Welcome to our website where you can find the best services...',
69
+ }),
70
+ (0, class_validator_1.IsOptional)(),
71
+ (0, class_validator_1.IsString)(),
72
+ __metadata("design:type", String)
73
+ ], CreatePageDto.prototype, "metaDescription", void 0);
74
+ __decorate([
75
+ (0, swagger_1.ApiProperty)({
76
+ description: 'Page status (1: active, 0: inactive, 2: draft)',
77
+ example: 1,
78
+ minimum: 0,
79
+ maximum: 2,
80
+ }),
81
+ (0, class_validator_1.IsNumber)(),
82
+ __metadata("design:type", Number)
83
+ ], CreatePageDto.prototype, "status", void 0);
84
+ __decorate([
85
+ (0, swagger_1.ApiPropertyOptional)({
86
+ description: 'Date when the page becomes active',
87
+ example: '2024-01-01T00:00:00.000Z',
88
+ }),
89
+ (0, class_validator_1.IsOptional)(),
90
+ (0, class_validator_1.IsDateString)(),
91
+ __metadata("design:type", Date)
92
+ ], CreatePageDto.prototype, "activateFrom", void 0);
93
+ __decorate([
94
+ (0, swagger_1.ApiPropertyOptional)({
95
+ description: 'Date when the page becomes inactive',
96
+ example: '2024-12-31T23:59:59.999Z',
97
+ }),
98
+ (0, class_validator_1.IsOptional)(),
99
+ (0, class_validator_1.IsDateString)(),
100
+ __metadata("design:type", Date)
101
+ ], CreatePageDto.prototype, "activateTo", void 0);
102
+ //# sourceMappingURL=create-page.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.dto.js","sourceRoot":"","sources":["../../src/dto/create-page.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsF;AACtF,6CAAmE;AAEnE,MAAa,aAAa;CA2EzB;AA3ED,sCA2EC;AApEC;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,wBAAwB;QACjC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,0BAAQ,GAAE;;4CACG;AASd;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,6BAA6B;QACtC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,uBAAK,GAAE;;0CACI;AAOZ;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iEAAiE;KAC3E,CAAC;IACD,IAAA,0BAAQ,GAAE;;8CACK;AAShB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gDACQ;AASnB;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACW;AAQtB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,gEAAgE;KAC1E,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACc;AASzB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,0BAAQ,GAAE;;6CACI;AAQf;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;8BACA,IAAI;mDAAC;AAQpB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,8BAAY,GAAE;8BACF,IAAI;iDAAC"}
@@ -0,0 +1,7 @@
1
+ import { CreatePageDto } from './create-page.dto';
2
+ declare const UpdatePageDto_base: import("@nestjs/mapped-types").MappedType<Partial<CreatePageDto>>;
3
+ export declare class UpdatePageDto extends UpdatePageDto_base {
4
+ id?: number;
5
+ }
6
+ export {};
7
+ //# sourceMappingURL=update-page.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-page.dto.d.ts","sourceRoot":"","sources":["../../src/dto/update-page.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;;AAElD,qBAAa,aAAc,SAAQ,kBAA0B;IAQ3D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb"}
@@ -0,0 +1,30 @@
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.UpdatePageDto = void 0;
13
+ const mapped_types_1 = require("@nestjs/mapped-types");
14
+ const class_validator_1 = require("class-validator");
15
+ const swagger_1 = require("@nestjs/swagger");
16
+ const create_page_dto_1 = require("./create-page.dto");
17
+ class UpdatePageDto extends (0, mapped_types_1.PartialType)(create_page_dto_1.CreatePageDto) {
18
+ }
19
+ exports.UpdatePageDto = UpdatePageDto;
20
+ __decorate([
21
+ (0, swagger_1.ApiPropertyOptional)({
22
+ description: 'The unique identifier of the page',
23
+ example: 1,
24
+ readOnly: true,
25
+ }),
26
+ (0, class_validator_1.IsOptional)(),
27
+ (0, class_validator_1.IsNumber)(),
28
+ __metadata("design:type", Number)
29
+ ], UpdatePageDto.prototype, "id", void 0);
30
+ //# sourceMappingURL=update-page.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-page.dto.js","sourceRoot":"","sources":["../../src/dto/update-page.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAmD;AACnD,qDAAuD;AACvD,6CAAsD;AACtD,uDAAkD;AAElD,MAAa,aAAc,SAAQ,IAAA,0BAAW,EAAC,+BAAa,CAAC;CAS5D;AATD,sCASC;AADC;IAPC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;yCACC"}
@@ -0,0 +1,15 @@
1
+ export declare class Page {
2
+ id: number;
3
+ title: string;
4
+ url: string;
5
+ content: string;
6
+ metaTitle: string;
7
+ metaKeywords: string;
8
+ metaDescription: string;
9
+ status: number;
10
+ activateFrom: Date;
11
+ activateTo: Date;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+ //# sourceMappingURL=page.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.entity.d.ts","sourceRoot":"","sources":["../../src/entities/page.entity.ts"],"names":[],"mappings":"AAGA,qBACa,IAAI;IAOf,EAAE,EAAE,MAAM,CAAC;IAQX,KAAK,EAAE,MAAM,CAAC;IAQd,GAAG,EAAE,MAAM,CAAC;IAOZ,OAAO,EAAE,MAAM,CAAC;IAQhB,SAAS,EAAE,MAAM,CAAC;IAQlB,YAAY,EAAE,MAAM,CAAC;IAOrB,eAAe,EAAE,MAAM,CAAC;IASxB,MAAM,EAAE,MAAM,CAAC;IAOf,YAAY,EAAE,IAAI,CAAC;IAOnB,UAAU,EAAE,IAAI,CAAC;IAQjB,SAAS,EAAE,IAAI,CAAC;IAQhB,SAAS,EAAE,IAAI,CAAC;CACjB"}
@@ -0,0 +1,126 @@
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.Page = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ let Page = class Page {
16
+ };
17
+ exports.Page = Page;
18
+ __decorate([
19
+ (0, swagger_1.ApiProperty)({
20
+ description: 'The unique identifier of the page',
21
+ example: 1,
22
+ readOnly: true,
23
+ }),
24
+ (0, typeorm_1.PrimaryGeneratedColumn)(),
25
+ __metadata("design:type", Number)
26
+ ], Page.prototype, "id", void 0);
27
+ __decorate([
28
+ (0, swagger_1.ApiProperty)({
29
+ description: 'The title of the page',
30
+ example: 'Welcome to Our Website',
31
+ maxLength: 255,
32
+ }),
33
+ (0, typeorm_1.Column)({ length: 255 }),
34
+ __metadata("design:type", String)
35
+ ], Page.prototype, "title", void 0);
36
+ __decorate([
37
+ (0, swagger_1.ApiProperty)({
38
+ description: 'The URL of the page',
39
+ example: 'https://example.com/welcome',
40
+ maxLength: 255,
41
+ }),
42
+ (0, typeorm_1.Column)({ length: 255 }),
43
+ __metadata("design:type", String)
44
+ ], Page.prototype, "url", void 0);
45
+ __decorate([
46
+ (0, swagger_1.ApiProperty)({
47
+ description: 'The main content of the page',
48
+ example: 'Welcome to our amazing website! We provide the best services...',
49
+ }),
50
+ (0, typeorm_1.Column)(),
51
+ __metadata("design:type", String)
52
+ ], Page.prototype, "content", void 0);
53
+ __decorate([
54
+ (0, swagger_1.ApiPropertyOptional)({
55
+ description: 'SEO meta title for the page',
56
+ example: 'Welcome Page - Best Services',
57
+ maxLength: 255,
58
+ }),
59
+ (0, typeorm_1.Column)({ nullable: true, length: 255 }),
60
+ __metadata("design:type", String)
61
+ ], Page.prototype, "metaTitle", void 0);
62
+ __decorate([
63
+ (0, swagger_1.ApiPropertyOptional)({
64
+ description: 'SEO meta keywords for the page',
65
+ example: 'welcome, services, website',
66
+ maxLength: 255,
67
+ }),
68
+ (0, typeorm_1.Column)({ nullable: true, length: 255 }),
69
+ __metadata("design:type", String)
70
+ ], Page.prototype, "metaKeywords", void 0);
71
+ __decorate([
72
+ (0, swagger_1.ApiPropertyOptional)({
73
+ description: 'SEO meta description for the page',
74
+ example: 'Welcome to our website where you can find the best services...',
75
+ }),
76
+ (0, typeorm_1.Column)({ nullable: true }),
77
+ __metadata("design:type", String)
78
+ ], Page.prototype, "metaDescription", void 0);
79
+ __decorate([
80
+ (0, swagger_1.ApiProperty)({
81
+ description: 'Page status (1: active, 0: inactive, 2: draft)',
82
+ example: 1,
83
+ minimum: 0,
84
+ maximum: 2,
85
+ }),
86
+ (0, typeorm_1.Column)(),
87
+ __metadata("design:type", Number)
88
+ ], Page.prototype, "status", void 0);
89
+ __decorate([
90
+ (0, swagger_1.ApiPropertyOptional)({
91
+ description: 'Date when the page becomes active',
92
+ example: '2024-01-01T00:00:00.000Z',
93
+ }),
94
+ (0, typeorm_1.Column)({ nullable: true }),
95
+ __metadata("design:type", Date)
96
+ ], Page.prototype, "activateFrom", void 0);
97
+ __decorate([
98
+ (0, swagger_1.ApiPropertyOptional)({
99
+ description: 'Date when the page becomes inactive',
100
+ example: '2024-12-31T23:59:59.999Z',
101
+ }),
102
+ (0, typeorm_1.Column)({ nullable: true }),
103
+ __metadata("design:type", Date)
104
+ ], Page.prototype, "activateTo", void 0);
105
+ __decorate([
106
+ (0, swagger_1.ApiProperty)({
107
+ description: 'Date when the page was created',
108
+ example: '2024-01-01T00:00:00.000Z',
109
+ readOnly: true,
110
+ }),
111
+ (0, typeorm_1.CreateDateColumn)(),
112
+ __metadata("design:type", Date)
113
+ ], Page.prototype, "createdAt", void 0);
114
+ __decorate([
115
+ (0, swagger_1.ApiProperty)({
116
+ description: 'Date when the page was last updated',
117
+ example: '2024-01-01T00:00:00.000Z',
118
+ readOnly: true,
119
+ }),
120
+ (0, typeorm_1.UpdateDateColumn)(),
121
+ __metadata("design:type", Date)
122
+ ], Page.prototype, "updatedAt", void 0);
123
+ exports.Page = Page = __decorate([
124
+ (0, typeorm_1.Entity)()
125
+ ], Page);
126
+ //# sourceMappingURL=page.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.entity.js","sourceRoot":"","sources":["../../src/entities/page.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAqG;AACrG,6CAAmE;AAG5D,IAAM,IAAI,GAAV,MAAM,IAAI;CA6FhB,CAAA;AA7FY,oBAAI;AAOf;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,gCAAsB,GAAE;;gCACd;AAQX;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,wBAAwB;QACjC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;mCACV;AAQd;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,6BAA6B;QACtC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;iCACZ;AAOZ;IALC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,iEAAiE;KAC3E,CAAC;IACD,IAAA,gBAAM,GAAE;;qCACO;AAQhB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,8BAA8B;QACvC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;uCACtB;AAQlB;IANC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,4BAA4B;QACrC,SAAS,EAAE,GAAG;KACf,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;;0CACnB;AAOrB;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,gEAAgE;KAC1E,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACH;AASxB;IAPC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gDAAgD;QAC7D,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAC;IACD,IAAA,gBAAM,GAAE;;oCACM;AAOf;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,mCAAmC;QAChD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACb,IAAI;0CAAC;AAOnB;IALC,IAAA,6BAAmB,EAAC;QACnB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;KACpC,CAAC;IACD,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,IAAI;wCAAC;AAQjB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,0BAAgB,GAAE;8BACR,IAAI;uCAAC;AAQhB;IANC,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC;IACD,IAAA,0BAAgB,GAAE;8BACR,IAAI;uCAAC;eA5FL,IAAI;IADhB,IAAA,gBAAM,GAAE;GACI,IAAI,CA6FhB"}
@@ -0,0 +1,13 @@
1
+ export * from './pages.module';
2
+ export * from './services/pages.service';
3
+ export * from './controllers/pages.controller';
4
+ export * from './dto/create-page.dto';
5
+ export * from './dto/update-page.dto';
6
+ export * from './entities/page.entity';
7
+ export { Page } from './entities/page.entity';
8
+ export { CreatePageDto } from './dto/create-page.dto';
9
+ export { UpdatePageDto } from './dto/update-page.dto';
10
+ export { PagesService } from './services/pages.service';
11
+ export { PagesController } from './controllers/pages.controller';
12
+ export { PagesModule } from './pages.module';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PagesModule = exports.PagesController = exports.PagesService = exports.UpdatePageDto = exports.CreatePageDto = exports.Page = void 0;
18
+ __exportStar(require("./pages.module"), exports);
19
+ __exportStar(require("./services/pages.service"), exports);
20
+ __exportStar(require("./controllers/pages.controller"), exports);
21
+ __exportStar(require("./dto/create-page.dto"), exports);
22
+ __exportStar(require("./dto/update-page.dto"), exports);
23
+ __exportStar(require("./entities/page.entity"), exports);
24
+ var page_entity_1 = require("./entities/page.entity");
25
+ Object.defineProperty(exports, "Page", { enumerable: true, get: function () { return page_entity_1.Page; } });
26
+ var create_page_dto_1 = require("./dto/create-page.dto");
27
+ Object.defineProperty(exports, "CreatePageDto", { enumerable: true, get: function () { return create_page_dto_1.CreatePageDto; } });
28
+ var update_page_dto_1 = require("./dto/update-page.dto");
29
+ Object.defineProperty(exports, "UpdatePageDto", { enumerable: true, get: function () { return update_page_dto_1.UpdatePageDto; } });
30
+ var pages_service_1 = require("./services/pages.service");
31
+ Object.defineProperty(exports, "PagesService", { enumerable: true, get: function () { return pages_service_1.PagesService; } });
32
+ var pages_controller_1 = require("./controllers/pages.controller");
33
+ Object.defineProperty(exports, "PagesController", { enumerable: true, get: function () { return pages_controller_1.PagesController; } });
34
+ var pages_module_1 = require("./pages.module");
35
+ Object.defineProperty(exports, "PagesModule", { enumerable: true, get: function () { return pages_module_1.PagesModule; } });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,iDAA+B;AAC/B,2DAAyC;AACzC,iEAA+C;AAC/C,wDAAsC;AACtC,wDAAsC;AACtC,yDAAuC;AAGvC,sDAA8C;AAArC,mGAAA,IAAI,OAAA;AACb,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AACtB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AACxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
@@ -0,0 +1,3 @@
1
+ export declare class PagesModule {
2
+ }
3
+ //# sourceMappingURL=pages.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.module.d.ts","sourceRoot":"","sources":["../src/pages.module.ts"],"names":[],"mappings":"AAMA,qBAMa,WAAW;CAAG"}
@@ -0,0 +1,26 @@
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.PagesModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const typeorm_1 = require("@nestjs/typeorm");
12
+ const page_entity_1 = require("./entities/page.entity");
13
+ const pages_controller_1 = require("./controllers/pages.controller");
14
+ const pages_service_1 = require("./services/pages.service");
15
+ let PagesModule = class PagesModule {
16
+ };
17
+ exports.PagesModule = PagesModule;
18
+ exports.PagesModule = PagesModule = __decorate([
19
+ (0, common_1.Module)({
20
+ imports: [typeorm_1.TypeOrmModule.forFeature([page_entity_1.Page])],
21
+ controllers: [pages_controller_1.PagesController],
22
+ providers: [pages_service_1.PagesService],
23
+ exports: [pages_service_1.PagesService],
24
+ })
25
+ ], PagesModule);
26
+ //# sourceMappingURL=pages.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.module.js","sourceRoot":"","sources":["../src/pages.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,wDAA8C;AAC9C,qEAAiE;AACjE,4DAAwD;AAQjD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,kBAAI,CAAC,CAAC,CAAC;QAC3C,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE,CAAC,4BAAY,CAAC;QACzB,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CAAG"}
@@ -0,0 +1,7 @@
1
+ import { CrudService } from '@nestjs-library/crud';
2
+ import { Repository } from 'typeorm';
3
+ import { Page } from '../entities/page.entity';
4
+ export declare class PagesService extends CrudService<Page> {
5
+ constructor(repository: Repository<Page>);
6
+ }
7
+ //# sourceMappingURL=pages.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.service.d.ts","sourceRoot":"","sources":["../../src/services/pages.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,qBACa,YAAa,SAAQ,WAAW,CAAC,IAAI,CAAC;gBACb,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC;CAGjE"}
@@ -0,0 +1,32 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PagesService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const typeorm_1 = require("@nestjs/typeorm");
18
+ const crud_1 = require("@nestjs-library/crud");
19
+ const typeorm_2 = require("typeorm");
20
+ const page_entity_1 = require("../entities/page.entity");
21
+ let PagesService = class PagesService extends crud_1.CrudService {
22
+ constructor(repository) {
23
+ super(repository);
24
+ }
25
+ };
26
+ exports.PagesService = PagesService;
27
+ exports.PagesService = PagesService = __decorate([
28
+ (0, common_1.Injectable)(),
29
+ __param(0, (0, typeorm_1.InjectRepository)(page_entity_1.Page)),
30
+ __metadata("design:paramtypes", [typeorm_2.Repository])
31
+ ], PagesService);
32
+ //# sourceMappingURL=pages.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.service.js","sourceRoot":"","sources":["../../src/services/pages.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,+CAAmD;AACnD,qCAAqC;AACrC,yDAA+C;AAGxC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,kBAAiB;IACjD,YAAoC,UAA4B;QAC9D,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF,CAAA;AAJY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;qCAAa,oBAAU;GAD/C,YAAY,CAIxB"}
@@ -0,0 +1,31 @@
1
+ import { TestingModule } from '@nestjs/testing';
2
+ import { Repository } from 'typeorm';
3
+ import { PagesController } from '../controllers/pages.controller';
4
+ import { PagesService } from '../services/pages.service';
5
+ import { Page } from '../entities/page.entity';
6
+ export interface TestContext {
7
+ module: TestingModule;
8
+ controller: PagesController;
9
+ service: PagesService;
10
+ repository: Repository<Page>;
11
+ }
12
+ export declare const createTestModule: () => Promise<TestContext>;
13
+ export declare const mockPage: Page;
14
+ export declare const mockCreatePageDto: {
15
+ title: string;
16
+ url: string;
17
+ content: string;
18
+ metaTitle: string;
19
+ metaKeywords: string;
20
+ metaDescription: string;
21
+ status: number;
22
+ activateFrom: Date;
23
+ activateTo: Date;
24
+ };
25
+ export declare const mockUpdatePageDto: {
26
+ title: string;
27
+ status: number;
28
+ };
29
+ export declare const setupRepositoryMocks: (repository: Repository<Page>) => void;
30
+ export declare const clearRepositoryMocks: (repository: Repository<Page>) => void;
31
+ //# sourceMappingURL=pages.test.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.test.config.d.ts","sourceRoot":"","sources":["../../src/specs/pages.test.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,WAAW,CAkC5D,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,IAatB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU7B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,YAAY,UAAU,CAAC,IAAI,CAAC,SAOhE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,YAAY,UAAU,CAAC,IAAI,CAAC,SAEhE,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearRepositoryMocks = exports.setupRepositoryMocks = exports.mockUpdatePageDto = exports.mockCreatePageDto = exports.mockPage = exports.createTestModule = void 0;
4
+ const testing_1 = require("@nestjs/testing");
5
+ const typeorm_1 = require("@nestjs/typeorm");
6
+ const pages_module_1 = require("../pages.module");
7
+ const pages_controller_1 = require("../controllers/pages.controller");
8
+ const pages_service_1 = require("../services/pages.service");
9
+ const page_entity_1 = require("../entities/page.entity");
10
+ const createTestModule = async () => {
11
+ const module = await testing_1.Test.createTestingModule({
12
+ imports: [pages_module_1.PagesModule],
13
+ })
14
+ .overrideProvider((0, typeorm_1.getRepositoryToken)(page_entity_1.Page))
15
+ .useValue({
16
+ create: jest.fn(),
17
+ save: jest.fn(),
18
+ find: jest.fn(),
19
+ findOne: jest.fn(),
20
+ update: jest.fn(),
21
+ delete: jest.fn(),
22
+ createQueryBuilder: jest.fn(() => ({
23
+ where: jest.fn().mockReturnThis(),
24
+ andWhere: jest.fn().mockReturnThis(),
25
+ orderBy: jest.fn().mockReturnThis(),
26
+ skip: jest.fn().mockReturnThis(),
27
+ take: jest.fn().mockReturnThis(),
28
+ getMany: jest.fn(),
29
+ getOne: jest.fn(),
30
+ })),
31
+ })
32
+ .compile();
33
+ const controller = module.get(pages_controller_1.PagesController);
34
+ const service = module.get(pages_service_1.PagesService);
35
+ const repository = module.get((0, typeorm_1.getRepositoryToken)(page_entity_1.Page));
36
+ return {
37
+ module,
38
+ controller,
39
+ service,
40
+ repository,
41
+ };
42
+ };
43
+ exports.createTestModule = createTestModule;
44
+ exports.mockPage = {
45
+ id: 1,
46
+ title: 'Test Page',
47
+ url: 'https://example.com/test',
48
+ content: 'This is a test page content',
49
+ metaTitle: 'Test Page - SEO Title',
50
+ metaKeywords: 'test, page, example',
51
+ metaDescription: 'A test page for testing purposes',
52
+ status: 1,
53
+ activateFrom: new Date('2024-01-01'),
54
+ activateTo: new Date('2024-12-31'),
55
+ createdAt: new Date('2024-01-01T00:00:00.000Z'),
56
+ updatedAt: new Date('2024-01-01T00:00:00.000Z'),
57
+ };
58
+ exports.mockCreatePageDto = {
59
+ title: 'New Test Page',
60
+ url: 'https://example.com/new-test',
61
+ content: 'This is a new test page content',
62
+ metaTitle: 'New Test Page - SEO Title',
63
+ metaKeywords: 'new, test, page',
64
+ metaDescription: 'A new test page for testing purposes',
65
+ status: 1,
66
+ activateFrom: new Date('2024-01-01'),
67
+ activateTo: new Date('2024-12-31'),
68
+ };
69
+ exports.mockUpdatePageDto = {
70
+ title: 'Updated Test Page',
71
+ status: 2,
72
+ };
73
+ const setupRepositoryMocks = (repository) => {
74
+ jest.spyOn(repository, 'create').mockReturnValue(exports.mockPage);
75
+ jest.spyOn(repository, 'save').mockResolvedValue(exports.mockPage);
76
+ jest.spyOn(repository, 'find').mockResolvedValue([exports.mockPage]);
77
+ jest.spyOn(repository, 'findOne').mockResolvedValue(exports.mockPage);
78
+ jest.spyOn(repository, 'update').mockResolvedValue({ affected: 1 });
79
+ jest.spyOn(repository, 'delete').mockResolvedValue({ affected: 1 });
80
+ };
81
+ exports.setupRepositoryMocks = setupRepositoryMocks;
82
+ const clearRepositoryMocks = (repository) => {
83
+ jest.clearAllMocks();
84
+ };
85
+ exports.clearRepositoryMocks = clearRepositoryMocks;
86
+ //# sourceMappingURL=pages.test.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.test.config.js","sourceRoot":"","sources":["../../src/specs/pages.test.config.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@uecsio/pages-api",
3
+ "version": "1.0.0",
4
+ "description": "A reusable NestJS API Pages module for content management",
5
+ "keywords": [
6
+ "nestjs",
7
+ "pages",
8
+ "cms",
9
+ "content-management",
10
+ "typeorm",
11
+ "crud"
12
+ ],
13
+ "author": "Dmytro Morozov <morosovdmitry@gmail.com>",
14
+ "license": "MIT",
15
+ "main": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "files": [
18
+ "dist/**/*"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "build:watch": "tsc --watch",
23
+ "test": "jest",
24
+ "test:watch": "jest --watch",
25
+ "test:cov": "jest --coverage",
26
+ "lint": "eslint src/**/*.ts",
27
+ "lint:fix": "eslint src/**/*.ts --fix",
28
+ "prepublishOnly": "npm run build",
29
+ "clean": "rimraf dist"
30
+ },
31
+ "peerDependencies": {
32
+ "@nestjs/common": "^10.0.0",
33
+ "@nestjs/core": "^10.0.0",
34
+ "@nestjs/typeorm": "^10.0.0",
35
+ "typeorm": "^0.3.0",
36
+ "class-validator": "^0.14.0",
37
+ "class-transformer": "^0.5.1",
38
+ "@nestjs-library/crud": "^0.13.1"
39
+ },
40
+ "devDependencies": {
41
+ "@nestjs/common": "^10.0.0",
42
+ "@nestjs/core": "^10.0.0",
43
+ "@nestjs/testing": "^10.0.0",
44
+ "@nestjs/typeorm": "^10.0.0",
45
+ "@types/jest": "^29.0.0",
46
+ "@types/node": "^20.0.0",
47
+ "jest": "^29.0.0",
48
+ "ts-jest": "^29.0.0",
49
+ "typescript": "^5.0.0",
50
+ "typeorm": "^0.3.0",
51
+ "class-validator": "^0.14.0",
52
+ "class-transformer": "^0.5.1",
53
+ "@nestjs-library/crud": "^0.13.1",
54
+ "rimraf": "^5.0.0"
55
+ },
56
+ "jest": {
57
+ "moduleFileExtensions": [
58
+ "js",
59
+ "json",
60
+ "ts"
61
+ ],
62
+ "rootDir": "src",
63
+ "testRegex": ".*\\.spec\\.ts$",
64
+ "transform": {
65
+ "^.+\\.(t|j)s$": "ts-jest"
66
+ },
67
+ "collectCoverageFrom": [
68
+ "**/*.(t|j)s"
69
+ ],
70
+ "coverageDirectory": "../coverage",
71
+ "testEnvironment": "node"
72
+ },
73
+ "repository": {
74
+ "type": "git",
75
+ "url": "https://github.com/uecsio/pages-api.git"
76
+ },
77
+ "bugs": {
78
+ "url": "https://github.com/uecsio/pages-api/issues"
79
+ },
80
+ "homepage": "https://github.com/uecsio/pages-api#readme"
81
+ }