@knovator/pagecreator-node 0.0.5 → 0.0.7
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 +227 -158
- package/package.json +1 -1
- package/src/controllers/UserController.js +37 -17
- package/src/controllers/UserController.js.map +1 -1
- package/src/routes/PageRoute.js +7 -4
- package/src/routes/PageRoute.js.map +1 -1
- package/src/routes/TileRoute.js +7 -4
- package/src/routes/TileRoute.js.map +1 -1
- package/src/routes/UserRoute.js +3 -2
- package/src/routes/UserRoute.js.map +1 -1
- package/src/routes/WidgetRoute.js +9 -8
- package/src/routes/WidgetRoute.js.map +1 -1
- package/src/types/common.d.ts +12 -0
- package/src/utils/defaults.d.ts +5 -0
- package/src/utils/defaults.js +6 -1
- package/src/utils/defaults.js.map +1 -1
- package/src/utils/helper.d.ts +30 -0
- package/src/utils/helper.js +90 -0
- package/src/utils/helper.js.map +1 -0
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<!-- Improved compatibility of back to top link: See: https://github.com/othneildrew/Best-README-Template/pull/73 -->
|
|
2
|
+
|
|
2
3
|
<a name="readme-top"></a>
|
|
3
4
|
|
|
4
5
|
[![Contributors][contributors-shield]][contributors-url]
|
|
@@ -7,8 +8,6 @@
|
|
|
7
8
|
[![Issues][issues-shield]][issues-url]
|
|
8
9
|
[![MIT License][license-shield]][license-url]
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
11
|
<!-- PROJECT LOGO -->
|
|
13
12
|
<br />
|
|
14
13
|
<div align="center">
|
|
@@ -32,8 +31,6 @@
|
|
|
32
31
|
</p>
|
|
33
32
|
</div>
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
|
|
37
34
|
<!-- TABLE OF CONTENTS -->
|
|
38
35
|
<details>
|
|
39
36
|
<summary>Table of Contents</summary>
|
|
@@ -59,34 +56,35 @@
|
|
|
59
56
|
</ol>
|
|
60
57
|
</details>
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
|
|
64
59
|
<!-- ABOUT THE PROJECT -->
|
|
60
|
+
|
|
65
61
|
## About The Project
|
|
66
62
|
|
|
67
63
|
`@knovator/pagecreator-node` is built with intent to build pages that are depend on backend data, and admin can change how page will look like.
|
|
68
64
|
|
|
69
65
|
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
70
66
|
|
|
71
|
-
|
|
72
67
|
### Built With
|
|
73
68
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
69
|
+
- [Typescript](https://www.typescriptlang.org/)
|
|
70
|
+
- [mongoose](https://mongoosejs.com/)
|
|
71
|
+
- [express](https://expressjs.com/)
|
|
72
|
+
- [mongoose-paginate-v2](https://www.npmjs.com/package/mongoose-paginate-v2)
|
|
73
|
+
- [joi](https://www.npmjs.com/package/joi)
|
|
79
74
|
|
|
80
75
|
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
81
76
|
|
|
82
77
|
<!-- GETTING STARTED -->
|
|
78
|
+
|
|
83
79
|
## Getting Started
|
|
84
80
|
|
|
85
81
|
To integrate `@knovator/pagecreator-node`, you should be having basic nodejs application up and running with express (optionally using mongoose for mongodb database). `@knovator/pagecreator-node` provides routes for `widget`, `page`, `tile` and `user` to use in application.
|
|
86
82
|
|
|
87
83
|
### Prerequisites
|
|
84
|
+
|
|
88
85
|
- It's good start to have `nodejs` application up and running with `express`. Good to have used [i18next](https://www.npmjs.com/package/i18next) to add message in response codes.
|
|
89
86
|
- `routes` uses `mongoose` connection established by application, so it's required to connect to database before using package. Example,
|
|
87
|
+
|
|
90
88
|
```js
|
|
91
89
|
// db.js
|
|
92
90
|
const mongoose = require('mongoose');
|
|
@@ -100,57 +98,58 @@ To integrate `@knovator/pagecreator-node`, you should be having basic nodejs app
|
|
|
100
98
|
|
|
101
99
|
module.exports = mongoose;
|
|
102
100
|
```
|
|
101
|
+
|
|
103
102
|
- Image upload route for `upload` & `remove` is needed to declare externally. Example,
|
|
103
|
+
|
|
104
104
|
```js
|
|
105
105
|
// fileRoute.js
|
|
106
106
|
const express = require('express');
|
|
107
107
|
const router = express.Router();
|
|
108
108
|
|
|
109
109
|
router.post(`/files/upload`, (req, res) => {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
// TO DO: some file storage operation
|
|
111
|
+
let uri = '/image.jpg';
|
|
112
|
+
let id = '62c54b15524b6b59d2313c02';
|
|
113
|
+
res.json({
|
|
114
|
+
code: 'SUCCESS',
|
|
115
|
+
data: { id, uri },
|
|
116
|
+
message: 'File uploaded successfully',
|
|
117
|
+
});
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
router.delete(`/files/remove/:id`, (req, res) => {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
})
|
|
121
|
+
// TO DO: some file remove operation
|
|
122
|
+
res.json({
|
|
123
|
+
code: 'SUCCESS',
|
|
124
|
+
data: {},
|
|
125
|
+
message: 'File removed successfully',
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
128
|
|
|
129
129
|
module.exports = router;
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
|
|
134
132
|
**Sample App file**
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
133
|
+
|
|
134
|
+
```js
|
|
135
|
+
require('./src/db');
|
|
136
|
+
require('./src/models/file');
|
|
137
|
+
|
|
138
|
+
const cors = require('cors');
|
|
139
|
+
const express = require('express');
|
|
140
|
+
const fileRoutes = require('./fileRoute.js');
|
|
141
|
+
const PORT = 8080;
|
|
142
|
+
|
|
143
|
+
const app = express();
|
|
144
|
+
app.use(cors());
|
|
145
|
+
app.use(express.static('public'));
|
|
146
|
+
app.use(fileRoutes);
|
|
147
|
+
|
|
148
|
+
// ...
|
|
149
|
+
app.listen(PORT, () => {
|
|
150
|
+
console.log(`App started on ${PORT}`);
|
|
151
|
+
});
|
|
152
|
+
```
|
|
154
153
|
|
|
155
154
|
### Installation
|
|
156
155
|
|
|
@@ -163,76 +162,137 @@ To integrate `@knovator/pagecreator-node`, you should be having basic nodejs app
|
|
|
163
162
|
|
|
164
163
|
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
165
164
|
|
|
166
|
-
|
|
167
|
-
|
|
168
165
|
<!-- USAGE EXAMPLES -->
|
|
166
|
+
|
|
169
167
|
## Usage
|
|
170
168
|
|
|
171
169
|
App/Main file is a good place to use `@knovator/pagecreator-node`
|
|
172
|
-
```js
|
|
173
|
-
const { setConfig, WidgetRoutes, TileRoutes, FileUploadRoute, PageRoutes, UserRoutes } = require('@knovator/pagecreator-node');
|
|
174
|
-
|
|
175
|
-
setConfig({
|
|
176
|
-
collections: [
|
|
177
|
-
{
|
|
178
|
-
title: 'Notifications',
|
|
179
|
-
collectionName: 'notifications',
|
|
180
|
-
filters: { isDeleted: false, isActive: true },
|
|
181
|
-
searchColumns: ['name', 'code'],
|
|
182
|
-
},
|
|
183
|
-
],
|
|
184
|
-
});
|
|
185
170
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
171
|
+
```js
|
|
172
|
+
const {
|
|
173
|
+
setConfig,
|
|
174
|
+
WidgetRoutes,
|
|
175
|
+
TileRoutes,
|
|
176
|
+
FileUploadRoute,
|
|
177
|
+
PageRoutes,
|
|
178
|
+
UserRoutes,
|
|
179
|
+
} = require('@knovator/pagecreator-node');
|
|
180
|
+
|
|
181
|
+
setConfig({
|
|
182
|
+
collections: [
|
|
183
|
+
{
|
|
184
|
+
title: 'Notifications',
|
|
185
|
+
collectionName: 'notifications',
|
|
186
|
+
filters: { isDeleted: false, isActive: true },
|
|
187
|
+
searchColumns: ['name', 'code'],
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
app.use('/widgets', WidgetRoutes);
|
|
193
|
+
app.use('/tiles', TileRoutes);
|
|
194
|
+
app.use('/media', FileUploadRoute);
|
|
195
|
+
app.use('/pages', PageRoutes);
|
|
196
|
+
app.use('/users', UserRoutes);
|
|
197
|
+
|
|
198
|
+
app.listen(PORT, () => {
|
|
199
|
+
console.log(`App started on ${PORT}`);
|
|
200
|
+
});
|
|
195
201
|
```
|
|
196
202
|
|
|
197
203
|
Through `setConfig` function e can set `logger`, `collections` and `catchAsync` functions as parameters. By `collections`, we can add reference of application collections.
|
|
204
|
+
|
|
198
205
|
### parameter explanations
|
|
206
|
+
|
|
199
207
|
- `logger`
|
|
200
208
|
- Provides ability to add logging for Database and Validation
|
|
201
209
|
```js
|
|
202
210
|
// default
|
|
203
|
-
console
|
|
211
|
+
console;
|
|
204
212
|
```
|
|
205
213
|
- `catchAsync`
|
|
206
214
|
- Wraps functions to handle async errors
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
});
|
|
215
|
+
```js
|
|
216
|
+
// default
|
|
217
|
+
function catchAsync(fn) {
|
|
218
|
+
return function (req, res, next) {
|
|
219
|
+
Promise.resolve(fn(req, res, next)).catch((err) => {
|
|
220
|
+
// this.logger.error(err.message);
|
|
221
|
+
res.status(internalServerError).json({
|
|
222
|
+
code: RESPONSE_CODE.ERROR,
|
|
223
|
+
message: err.message,
|
|
224
|
+
data: {},
|
|
218
225
|
});
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
```
|
|
222
230
|
- `collections`
|
|
223
|
-
|
|
231
|
+
- Array of collection items to add reference of collections in package.
|
|
224
232
|
|
|
225
233
|
#### Collection Item Format
|
|
226
|
-
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
234
|
+
|
|
235
|
+
| Code | Description |
|
|
236
|
+
| -------------- | -------------------------------------------------------------------------------------- |
|
|
237
|
+
| title | Title of collection name to show in UI |
|
|
238
|
+
| collectionName | Collection name specified in database |
|
|
239
|
+
| filters | Filter object to apply while getting data, like `{ isDeleted: false, isActive: true }` |
|
|
240
|
+
| searchColumns | Array of fields to to perform search |
|
|
241
|
+
| lookup | `$lookup` object to apply while getting data through aggregation |
|
|
242
|
+
| project | `$project` object to apply while getting data through aggregation |
|
|
243
|
+
| match | `$match` object to apply while getting data through aggregation |
|
|
244
|
+
|
|
245
|
+
**Example**,
|
|
246
|
+
|
|
247
|
+
```js
|
|
248
|
+
setConfig({
|
|
249
|
+
collections: [
|
|
250
|
+
{
|
|
251
|
+
title: 'Notifications',
|
|
252
|
+
collectionName: 'notifications',
|
|
253
|
+
filters: { isDeleted: false, isActive: true },
|
|
254
|
+
searchColumns: ['name', 'code'],
|
|
255
|
+
lookup: {
|
|
256
|
+
from: 'file',
|
|
257
|
+
let: {
|
|
258
|
+
id: '$fileId',
|
|
259
|
+
},
|
|
260
|
+
pipeline: [
|
|
261
|
+
{
|
|
262
|
+
$match: {
|
|
263
|
+
$expr: {
|
|
264
|
+
$eq: ['$_id', '$$id'],
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
$project: {
|
|
270
|
+
_id: 1,
|
|
271
|
+
nm: 1,
|
|
272
|
+
uri: 1,
|
|
273
|
+
mimeType: 1,
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
as: 'fileId',
|
|
278
|
+
},
|
|
279
|
+
project: {
|
|
280
|
+
_id: 1,
|
|
281
|
+
nm: 1,
|
|
282
|
+
fileId: 1,
|
|
283
|
+
},
|
|
284
|
+
match: {
|
|
285
|
+
deletedAt: { $exists: false },
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
});
|
|
290
|
+
```
|
|
232
291
|
|
|
233
292
|
## Routes Infomration
|
|
234
293
|
|
|
235
294
|
Response follows following structure
|
|
295
|
+
|
|
236
296
|
```js
|
|
237
297
|
{
|
|
238
298
|
code: RESPONSE_CODES,
|
|
@@ -242,93 +302,102 @@ Response follows following structure
|
|
|
242
302
|
```
|
|
243
303
|
|
|
244
304
|
### Response Codes
|
|
245
|
-
|
|
246
|
-
|
|
|
305
|
+
|
|
306
|
+
| Code | Description |
|
|
307
|
+
| ------- | ------------------------------------ |
|
|
247
308
|
| SUCCESS | When request fullfiled without error |
|
|
248
|
-
| ERROR
|
|
309
|
+
| ERROR | When request fullfiled with error |
|
|
249
310
|
|
|
250
311
|
### Custom Validation messages
|
|
251
|
-
|
|
252
|
-
|
|
|
312
|
+
|
|
313
|
+
| Message | Description |
|
|
314
|
+
| ---------------------------------- | ----------------------------------------------- |
|
|
253
315
|
| Widget with same code is available | When widget with same code is exist in database |
|
|
254
316
|
|
|
255
317
|
### HTTP Status Codes
|
|
256
|
-
|
|
257
|
-
|
|
|
258
|
-
|
|
|
259
|
-
|
|
|
260
|
-
|
|
|
261
|
-
|
|
|
318
|
+
|
|
319
|
+
| HTTP | Description |
|
|
320
|
+
| ---- | ------------------------------------ |
|
|
321
|
+
| 200 | When request fullfiled without error |
|
|
322
|
+
| 201 | When document is created |
|
|
323
|
+
| 500 | When internal server occurred |
|
|
324
|
+
| 422 | When Validation error occurred |
|
|
262
325
|
|
|
263
326
|
### Routes
|
|
327
|
+
|
|
264
328
|
This are the routes that gets integrated by `@knovator/pagecreator-node`,
|
|
329
|
+
|
|
265
330
|
#### Widget
|
|
266
|
-
|
|
267
|
-
|
|
|
268
|
-
|
|
|
269
|
-
| `/
|
|
270
|
-
| `/
|
|
271
|
-
|
|
|
272
|
-
|
|
|
273
|
-
| `/:id`
|
|
274
|
-
| `/:id`
|
|
275
|
-
|
|
|
331
|
+
|
|
332
|
+
| Route | Method | Description |
|
|
333
|
+
| ------------------ | ---------- | -------------------------------------------------------- |
|
|
334
|
+
| `/widget-types` | **GET** | Get widget-types like `Image` and provided `collections` |
|
|
335
|
+
| `/selection-types` | **GET** | Get Selection types like `Fixed Card` and `Carousel` |
|
|
336
|
+
| `/list` | **POST** | List widget data in pagination |
|
|
337
|
+
| `/` | **POST** | Create `widget` |
|
|
338
|
+
| `/:id` | **PUT** | Update `widget` |
|
|
339
|
+
| `/:id` | **PATCH** | Partial Update `widget` |
|
|
340
|
+
| `/:id` | **DELETE** | Delete widget whose `id` send in body |
|
|
341
|
+
| `/collection-data` | **POST** | Get collection data |
|
|
276
342
|
|
|
277
343
|
#### Page
|
|
278
|
-
|
|
279
|
-
|
|
|
280
|
-
|
|
|
281
|
-
|
|
|
282
|
-
|
|
|
283
|
-
| `/:id`
|
|
344
|
+
|
|
345
|
+
| Route | Method | Description |
|
|
346
|
+
| ------- | ---------- | ----------------------------------- |
|
|
347
|
+
| `/list` | **POST** | List page data in pagination |
|
|
348
|
+
| `/` | **POST** | Create `page` |
|
|
349
|
+
| `/:id` | **PUT** | Update `page` |
|
|
350
|
+
| `/:id` | **DELETE** | Delete page whose `id` send in body |
|
|
284
351
|
|
|
285
352
|
#### Tile
|
|
286
|
-
|
|
287
|
-
|
|
|
288
|
-
|
|
|
289
|
-
|
|
|
290
|
-
|
|
|
291
|
-
| `/:id`
|
|
353
|
+
|
|
354
|
+
| Route | Method | Description |
|
|
355
|
+
| ------------ | ---------- | ----------------------------------- |
|
|
356
|
+
| `/:widgetId` | **GET** | Get Tiles data for `widgetId` |
|
|
357
|
+
| `/` | **POST** | Create `tile` |
|
|
358
|
+
| `/:id` | **PUT** | Update `tile` |
|
|
359
|
+
| `/:id` | **DELETE** | Delete tile whose `id` send in body |
|
|
292
360
|
|
|
293
361
|
#### User
|
|
294
|
-
|
|
295
|
-
|
|
|
362
|
+
|
|
363
|
+
| Route | Method | Description |
|
|
364
|
+
| -------------- | -------- | -------------------------------------------------------- |
|
|
296
365
|
| `/widget-data` | **POST** | Get widget-data data for specified widget `code` in body |
|
|
297
|
-
| `/page-data`
|
|
366
|
+
| `/page-data` | **POST** | Get page-data data for specified page `code` in body |
|
|
298
367
|
|
|
299
368
|
### `descriptor` codes & `i18n` code for messages
|
|
300
369
|
|
|
301
370
|
Nextjs [i18n](https://www.npmjs.com/package/i18next) package adds facility for internationalization in nodejs application, and it's used in following manner
|
|
371
|
+
|
|
302
372
|
```js
|
|
303
373
|
// usage
|
|
304
|
-
req?.i18n?.(CODE)
|
|
374
|
+
req?.i18n?.(CODE);
|
|
305
375
|
```
|
|
306
|
-
| CODE | Description |
|
|
307
|
-
| --- | ----------- |
|
|
308
|
-
| `widget.getWidgetTypes` | While fetching widget types |
|
|
309
|
-
| `widget.getSelectionTypes` | While fetching selection types |
|
|
310
|
-
| `widget.getAll` | While fetching widgets |
|
|
311
|
-
| `widget.create` | While creating widget |
|
|
312
|
-
| `widget.update` | While updating widget |
|
|
313
|
-
| `widget.partialUpdate` | While doing partialUpdate for widget, like toggle `IsActive` |
|
|
314
|
-
| `widget.delete` | While deleting widget |
|
|
315
|
-
| `widget.getCollectionData` | While getting widget `collection-data` |
|
|
316
|
-
| `page.getAll` | While getting pages in pagination |
|
|
317
|
-
| `page.create` | While creating page |
|
|
318
|
-
| `page.update` | While updating page |
|
|
319
|
-
| `page.delete` | While deleting page |
|
|
320
|
-
| `tile.getAll` | While getting tiles for widget |
|
|
321
|
-
| `tile.create` | While creating tile |
|
|
322
|
-
| `tile.update` | While updating tile |
|
|
323
|
-
| `user.getWidgetData` | While getting widget data |
|
|
324
|
-
| `user.getPageData` | While getting page data |
|
|
325
|
-
|
|
326
|
-
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
327
|
-
|
|
328
376
|
|
|
377
|
+
| CODE | Description |
|
|
378
|
+
| -------------------------- | ------------------------------------------------------------ |
|
|
379
|
+
| `widget.getWidgetTypes` | While fetching widget types |
|
|
380
|
+
| `widget.getSelectionTypes` | While fetching selection types |
|
|
381
|
+
| `widget.getAll` | While fetching widgets |
|
|
382
|
+
| `widget.create` | While creating widget |
|
|
383
|
+
| `widget.update` | While updating widget |
|
|
384
|
+
| `widget.partialUpdate` | While doing partialUpdate for widget, like toggle `IsActive` |
|
|
385
|
+
| `widget.delete` | While deleting widget |
|
|
386
|
+
| `widget.getCollectionData` | While getting widget `collection-data` |
|
|
387
|
+
| `page.getAll` | While getting pages in pagination |
|
|
388
|
+
| `page.create` | While creating page |
|
|
389
|
+
| `page.update` | While updating page |
|
|
390
|
+
| `page.delete` | While deleting page |
|
|
391
|
+
| `tile.getAll` | While getting tiles for widget |
|
|
392
|
+
| `tile.create` | While creating tile |
|
|
393
|
+
| `tile.update` | While updating tile |
|
|
394
|
+
| `user.getWidgetData` | While getting widget data |
|
|
395
|
+
| `user.getPageData` | While getting page data |
|
|
329
396
|
|
|
397
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
330
398
|
|
|
331
399
|
<!-- CONTRIBUTING -->
|
|
400
|
+
|
|
332
401
|
## Contributing
|
|
333
402
|
|
|
334
403
|
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
|
|
@@ -344,20 +413,20 @@ Don't forget to give the project a star! Thanks again!
|
|
|
344
413
|
|
|
345
414
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
346
415
|
|
|
347
|
-
|
|
348
|
-
|
|
349
416
|
<!-- LICENSE -->
|
|
417
|
+
|
|
350
418
|
## License
|
|
351
419
|
|
|
352
420
|
Distributed under the MIT License. See `LICENSE.txt` for more information.
|
|
353
421
|
|
|
354
422
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
355
423
|
|
|
356
|
-
|
|
357
424
|
<!-- CONTACT -->
|
|
425
|
+
|
|
358
426
|
## Contact
|
|
359
427
|
|
|
360
428
|
Knovator Technologies
|
|
429
|
+
|
|
361
430
|
- Twitter [@knovator](https://twitter.com/knovator)
|
|
362
431
|
- Web [https://knovator.com/](https://knovator.com/)
|
|
363
432
|
|
|
@@ -365,9 +434,9 @@ Project Link: [https://github.com/knovator/pagecreator](https://github.com/knova
|
|
|
365
434
|
|
|
366
435
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
367
436
|
|
|
368
|
-
|
|
369
437
|
<!-- MARKDOWN LINKS & IMAGES -->
|
|
370
438
|
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
|
|
439
|
+
|
|
371
440
|
[contributors-shield]: https://img.shields.io/github/contributors/knovator/pagecreator.svg?style=for-the-badge
|
|
372
441
|
[contributors-url]: https://github.com/knovator/pagecreator/graphs/contributors
|
|
373
442
|
[forks-shield]: https://img.shields.io/github/forks/knovator/pagecreator.svg?style=for-the-badge
|
|
@@ -377,4 +446,4 @@ Project Link: [https://github.com/knovator/pagecreator](https://github.com/knova
|
|
|
377
446
|
[issues-shield]: https://img.shields.io/github/issues/knovator/pagecreator.svg?style=for-the-badge
|
|
378
447
|
[issues-url]: https://github.com/knovator/pagecreator/issues
|
|
379
448
|
[license-shield]: https://img.shields.io/github/license/knovator/pagecreator.svg?style=for-the-badge
|
|
380
|
-
[license-url]: https://github.com/knovator/pagecreator/blob/master/LICENSE.txt
|
|
449
|
+
[license-url]: https://github.com/knovator/pagecreator/blob/master/LICENSE.txt
|
package/package.json
CHANGED
|
@@ -2,20 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPageData = exports.getWidgetData = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const mongoose_1 = require("mongoose");
|
|
5
6
|
const models_1 = require("./../models");
|
|
7
|
+
const helper_1 = require("../utils/helper");
|
|
6
8
|
const responseHandlers_1 = require("./../utils/responseHandlers");
|
|
7
9
|
const defaults_1 = require("../utils/defaults");
|
|
8
|
-
const commonExcludedFields = {
|
|
9
|
-
__v: 0,
|
|
10
|
-
isDeleted: 0,
|
|
11
|
-
deletedAt: 0,
|
|
12
|
-
};
|
|
13
10
|
const catchAsync = (fn) => {
|
|
14
11
|
return defaults_1.defaults.catchAsync(fn, 'User');
|
|
15
12
|
};
|
|
13
|
+
// TO Do: Optimize the following
|
|
16
14
|
exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
17
15
|
const { code } = req.body;
|
|
18
|
-
const
|
|
16
|
+
const widgetDataArr = (yield models_1.Widget.aggregate([
|
|
19
17
|
{
|
|
20
18
|
$match: {
|
|
21
19
|
isDeleted: false,
|
|
@@ -25,7 +23,7 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
|
|
|
25
23
|
},
|
|
26
24
|
{
|
|
27
25
|
// Get only the fields that are not excluded
|
|
28
|
-
$project: Object.assign({}, commonExcludedFields),
|
|
26
|
+
$project: Object.assign({}, defaults_1.commonExcludedFields),
|
|
29
27
|
},
|
|
30
28
|
{
|
|
31
29
|
// Get Tiles data
|
|
@@ -42,7 +40,7 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
|
|
|
42
40
|
},
|
|
43
41
|
},
|
|
44
42
|
{
|
|
45
|
-
$project: Object.assign({}, commonExcludedFields),
|
|
43
|
+
$project: Object.assign({}, defaults_1.commonExcludedFields),
|
|
46
44
|
},
|
|
47
45
|
{
|
|
48
46
|
$lookup: {
|
|
@@ -74,11 +72,36 @@ exports.getWidgetData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void
|
|
|
74
72
|
},
|
|
75
73
|
},
|
|
76
74
|
]));
|
|
77
|
-
if (!
|
|
75
|
+
if (!widgetDataArr.length)
|
|
78
76
|
throw new Error(`Widget not found`);
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
const widgetData = widgetDataArr[0];
|
|
78
|
+
if (widgetData.collectionName && widgetData.collectionItems.length > 0) {
|
|
79
|
+
const collectionConfig = defaults_1.defaults.collections.find((c) => c.collectionName === widgetData.collectionName);
|
|
80
|
+
const aggregateQuery = {
|
|
81
|
+
$match: Object.assign({ _id: {
|
|
82
|
+
$in: widgetData.collectionItems,
|
|
83
|
+
} }, ((collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.match) || {})),
|
|
84
|
+
};
|
|
85
|
+
if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project)
|
|
86
|
+
aggregateQuery['$project'] = collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project;
|
|
87
|
+
if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup)
|
|
88
|
+
aggregateQuery['$lookup'] = collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup;
|
|
89
|
+
const aggregateQueryItem = [];
|
|
90
|
+
if (aggregateQuery['$match'])
|
|
91
|
+
aggregateQueryItem.push({ $match: aggregateQuery['$match'] });
|
|
92
|
+
if (aggregateQuery['$lookup'])
|
|
93
|
+
aggregateQueryItem.push({ $lookup: aggregateQuery['$lookup'] });
|
|
94
|
+
if (aggregateQuery['$project'])
|
|
95
|
+
aggregateQueryItem.push({ $project: aggregateQuery['$project'] });
|
|
96
|
+
const collectionItems = yield mongoose_1.models[widgetData.collectionName].aggregate(
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
98
|
+
// @ts-ignore
|
|
99
|
+
aggregateQueryItem);
|
|
100
|
+
widgetData.collectionItems = collectionItems;
|
|
101
|
+
}
|
|
102
|
+
return (0, responseHandlers_1.successResponse)(widgetData, res);
|
|
81
103
|
}));
|
|
104
|
+
// TO Do: Optimize the following
|
|
82
105
|
exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
83
106
|
var _a;
|
|
84
107
|
const { code } = req.body;
|
|
@@ -110,7 +133,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
|
|
|
110
133
|
},
|
|
111
134
|
},
|
|
112
135
|
{
|
|
113
|
-
$project: Object.assign({ widgetId: 0, sequence: 0 }, commonExcludedFields),
|
|
136
|
+
$project: Object.assign({ widgetId: 0, sequence: 0 }, defaults_1.commonExcludedFields),
|
|
114
137
|
},
|
|
115
138
|
{
|
|
116
139
|
$lookup: {
|
|
@@ -126,7 +149,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
|
|
|
126
149
|
},
|
|
127
150
|
},
|
|
128
151
|
{
|
|
129
|
-
$project: Object.assign({}, commonExcludedFields),
|
|
152
|
+
$project: Object.assign({}, defaults_1.commonExcludedFields),
|
|
130
153
|
},
|
|
131
154
|
{
|
|
132
155
|
$lookup: {
|
|
@@ -164,10 +187,7 @@ exports.getPageData = catchAsync((req, res) => tslib_1.__awaiter(void 0, void 0,
|
|
|
164
187
|
]));
|
|
165
188
|
if (!pageData.length)
|
|
166
189
|
throw new Error('Page not found');
|
|
167
|
-
yield
|
|
168
|
-
path: 'collectionItems',
|
|
169
|
-
options: { projection: commonExcludedFields },
|
|
170
|
-
});
|
|
190
|
+
pageData[0].widgets = yield (0, helper_1.appendCollectionData)(pageData[0].widgets);
|
|
171
191
|
res.message = (_a = req === null || req === void 0 ? void 0 : req.i18n) === null || _a === void 0 ? void 0 : _a.t('user.pageData');
|
|
172
192
|
return (0, responseHandlers_1.successResponse)(pageData[0], res);
|
|
173
193
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../../../libs/node/src/controllers/UserController.ts"],"names":[],"mappings":";;;;AAAA,wCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"UserController.js","sourceRoot":"","sources":["../../../../../libs/node/src/controllers/UserController.ts"],"names":[],"mappings":"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"}
|
package/src/routes/PageRoute.js
CHANGED
|
@@ -7,21 +7,24 @@ require('express-list-endpoints-descriptor')(express_1.default);
|
|
|
7
7
|
const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
|
|
8
8
|
const pageValidation = tslib_1.__importStar(require("../utils/validations/page"));
|
|
9
9
|
const pageController = tslib_1.__importStar(require("../controllers/PageController"));
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
10
11
|
const routes = express_1.default.Router();
|
|
11
12
|
routes.use(express_1.default.json());
|
|
12
13
|
// Get all pages
|
|
13
14
|
routes
|
|
14
15
|
.post(`/list`, (0, validate_1.default)(pageValidation.list), pageController.getPages)
|
|
15
|
-
.descriptor(
|
|
16
|
+
.descriptor(`${descriptorPrefix}page.getAll`);
|
|
16
17
|
// Create a page
|
|
17
18
|
routes
|
|
18
19
|
.post(`/`, (0, validate_1.default)(pageValidation.create), pageController.createPage)
|
|
19
|
-
.descriptor(
|
|
20
|
+
.descriptor(`${descriptorPrefix}page.create`);
|
|
20
21
|
// Update a page
|
|
21
22
|
routes
|
|
22
23
|
.put(`/:id`, (0, validate_1.default)(pageValidation.update), pageController.updatePage)
|
|
23
|
-
.descriptor(
|
|
24
|
+
.descriptor(`${descriptorPrefix}page.update`);
|
|
24
25
|
// Delete a page
|
|
25
|
-
routes
|
|
26
|
+
routes
|
|
27
|
+
.delete(`/:id`, pageController.deletePage)
|
|
28
|
+
.descriptor(`${descriptorPrefix}page.delete`);
|
|
26
29
|
exports.default = routes;
|
|
27
30
|
//# sourceMappingURL=PageRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/PageRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACrE,UAAU,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"PageRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/PageRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;KACzC,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAEhD,kBAAe,MAAM,CAAC"}
|
package/src/routes/TileRoute.js
CHANGED
|
@@ -7,22 +7,25 @@ require('express-list-endpoints-descriptor')(express_1.default);
|
|
|
7
7
|
const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
|
|
8
8
|
const tileValidation = tslib_1.__importStar(require("../utils/validations/tile"));
|
|
9
9
|
const tileController = tslib_1.__importStar(require("../controllers/TileController"));
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
10
11
|
const routes = express_1.default.Router();
|
|
11
12
|
routes.use(express_1.default.json());
|
|
12
13
|
// Tile Routes
|
|
13
14
|
// Get all tiles
|
|
14
15
|
routes
|
|
15
16
|
.get(`/:widgetId`, (0, validate_1.default)(tileValidation.list), tileController.getTiles)
|
|
16
|
-
.descriptor(
|
|
17
|
+
.descriptor(`${descriptorPrefix}tile.getAll`);
|
|
17
18
|
// Create a tile
|
|
18
19
|
routes
|
|
19
20
|
.post(`/`, (0, validate_1.default)(tileValidation.create), tileController.createTile)
|
|
20
|
-
.descriptor(
|
|
21
|
+
.descriptor(`${descriptorPrefix}tile.create`);
|
|
21
22
|
// Update a tile
|
|
22
23
|
routes
|
|
23
24
|
.put(`/:id`, (0, validate_1.default)(tileValidation.update), tileController.updateTile)
|
|
24
|
-
.descriptor(
|
|
25
|
+
.descriptor(`${descriptorPrefix}tile.update`);
|
|
25
26
|
// Delete a tile
|
|
26
|
-
routes
|
|
27
|
+
routes
|
|
28
|
+
.delete(`/:id`, tileController.deleteTile)
|
|
29
|
+
.descriptor(`${descriptorPrefix}tile.delete`);
|
|
27
30
|
exports.default = routes;
|
|
28
31
|
//# sourceMappingURL=TileRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/TileRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,YAAY,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACzE,UAAU,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TileRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/TileRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,YAAY,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;KACzE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACrE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,cAAc,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC;KACvE,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAChD,gBAAgB;AAChB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;KACzC,UAAU,CAAC,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAEhD,kBAAe,MAAM,CAAC"}
|
package/src/routes/UserRoute.js
CHANGED
|
@@ -7,15 +7,16 @@ require('express-list-endpoints-descriptor')(express_1.default);
|
|
|
7
7
|
const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
|
|
8
8
|
const userValidation = tslib_1.__importStar(require("../utils/validations/user"));
|
|
9
9
|
const userController = tslib_1.__importStar(require("../controllers/UserController"));
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
10
11
|
const routes = express_1.default.Router();
|
|
11
12
|
routes.use(express_1.default.json());
|
|
12
13
|
// Tile Routes
|
|
13
14
|
// Get Widget Data
|
|
14
15
|
routes
|
|
15
16
|
.post(`/widget-data`, (0, validate_1.default)(userValidation.getWidgetData), userController.getWidgetData)
|
|
16
|
-
.descriptor(
|
|
17
|
+
.descriptor(`${descriptorPrefix}user.getWidgetData`);
|
|
17
18
|
routes
|
|
18
19
|
.post('/page-data', (0, validate_1.default)(userValidation.getPageData), userController.getPageData)
|
|
19
|
-
.descriptor(
|
|
20
|
+
.descriptor(`${descriptorPrefix}user.getPageData`);
|
|
20
21
|
exports.default = routes;
|
|
21
22
|
//# sourceMappingURL=UserRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/UserRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,kBAAkB;AAClB,MAAM;KACH,IAAI,CACH,cAAc,EACd,IAAA,kBAAQ,EAAC,cAAc,CAAC,aAAa,CAAC,EACtC,cAAc,CAAC,aAAa,CAC7B;KACA,UAAU,CAAC,oBAAoB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"UserRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/UserRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,kFAA4D;AAC5D,sFAAgE;AAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,cAAc;AACd,kBAAkB;AAClB,MAAM;KACH,IAAI,CACH,cAAc,EACd,IAAA,kBAAQ,EAAC,cAAc,CAAC,aAAa,CAAC,EACtC,cAAc,CAAC,aAAa,CAC7B;KACA,UAAU,CAAC,GAAG,gBAAgB,oBAAoB,CAAC,CAAC;AAEvD,MAAM;KACH,IAAI,CACH,YAAY,EACZ,IAAA,kBAAQ,EAAC,cAAc,CAAC,WAAW,CAAC,EACpC,cAAc,CAAC,WAAW,CAC3B;KACA,UAAU,CAAC,GAAG,gBAAgB,kBAAkB,CAAC,CAAC;AAErD,kBAAe,MAAM,CAAC"}
|
|
@@ -7,40 +7,41 @@ require('express-list-endpoints-descriptor')(express_1.default);
|
|
|
7
7
|
const validate_1 = tslib_1.__importDefault(require("../utils/validate"));
|
|
8
8
|
const widgetValidation = tslib_1.__importStar(require("../utils/validations/widget"));
|
|
9
9
|
const widgetController = tslib_1.__importStar(require("../controllers/WidgetController"));
|
|
10
|
+
const descriptorPrefix = process.env['PAGECREATOR_DESCRIPTOR_PREFIX'] || '';
|
|
10
11
|
const routes = express_1.default.Router();
|
|
11
12
|
routes.use(express_1.default.json());
|
|
12
13
|
// Widget Routes
|
|
13
14
|
// Get widget types
|
|
14
15
|
routes
|
|
15
16
|
.get('/widget-types', widgetController.getWidgetTypes)
|
|
16
|
-
.descriptor(
|
|
17
|
+
.descriptor(`${descriptorPrefix}widget.getWidgetTypes`);
|
|
17
18
|
// Get widget selection types
|
|
18
19
|
routes
|
|
19
20
|
.get('/selection-types', widgetController.getSelectionTypes)
|
|
20
|
-
.descriptor(
|
|
21
|
+
.descriptor(`${descriptorPrefix}widget.getSelectionTypes`);
|
|
21
22
|
// Get all widgets
|
|
22
23
|
routes
|
|
23
24
|
.post(`/list`, (0, validate_1.default)(widgetValidation.list), widgetController.getWidgets)
|
|
24
|
-
.descriptor(
|
|
25
|
+
.descriptor(`${descriptorPrefix}widget.getAll`);
|
|
25
26
|
// Create a widget
|
|
26
27
|
routes
|
|
27
28
|
.post(`/`, (0, validate_1.default)(widgetValidation.create), widgetController.createWidget)
|
|
28
|
-
.descriptor(
|
|
29
|
+
.descriptor(`${descriptorPrefix}widget.create`);
|
|
29
30
|
// Update a widget
|
|
30
31
|
routes
|
|
31
32
|
.put(`/:id`, (0, validate_1.default)(widgetValidation.update), widgetController.updateWidget)
|
|
32
|
-
.descriptor(
|
|
33
|
+
.descriptor(`${descriptorPrefix}widget.update`);
|
|
33
34
|
// Partial Update a widget
|
|
34
35
|
routes
|
|
35
36
|
.patch(`/:id`, (0, validate_1.default)(widgetValidation.partialUpdate), widgetController.partialUpdateWidget)
|
|
36
|
-
.descriptor(
|
|
37
|
+
.descriptor(`${descriptorPrefix}widget.partialUpdate`);
|
|
37
38
|
// Delete a widget
|
|
38
39
|
routes
|
|
39
40
|
.delete(`/:id`, widgetController.deleteWidget)
|
|
40
|
-
.descriptor(
|
|
41
|
+
.descriptor(`${descriptorPrefix}widget.delete`);
|
|
41
42
|
// Get dynamic collection data
|
|
42
43
|
routes
|
|
43
44
|
.post('/collection-data', (0, validate_1.default)(widgetValidation.getCollectionData), widgetController.getCollectionData)
|
|
44
|
-
.descriptor(
|
|
45
|
+
.descriptor(`${descriptorPrefix}widget.getCollectionData`);
|
|
45
46
|
exports.default = routes;
|
|
46
47
|
//# sourceMappingURL=WidgetRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/WidgetRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,sFAAgE;AAChE,0FAAoE;AAEpE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,mBAAmB;AACnB,MAAM;KACH,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,cAAc,CAAC;KACrD,UAAU,CAAC,uBAAuB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetRoute.js","sourceRoot":"","sources":["../../../../../libs/node/src/routes/WidgetRoute.ts"],"names":[],"mappings":";;;AAAA,8DAA8B;AAC9B,8DAA8D;AAC9D,OAAO,CAAC,mCAAmC,CAAC,CAAC,iBAAO,CAAC,CAAC;AAGtD,yEAAyC;AACzC,sFAAgE;AAChE,0FAAoE;AAEpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;AAC5E,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAa,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAE3B,gBAAgB;AAChB,mBAAmB;AACnB,MAAM;KACH,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,cAAc,CAAC;KACrD,UAAU,CAAC,GAAG,gBAAgB,uBAAuB,CAAC,CAAC;AAC1D,6BAA6B;AAC7B,MAAM;KACH,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC;KAC3D,UAAU,CAAC,GAAG,gBAAgB,0BAA0B,CAAC,CAAC;AAC7D,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,OAAO,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,UAAU,CAAC;KAC3E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,kBAAkB;AAClB,MAAM;KACH,IAAI,CAAC,GAAG,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC3E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,kBAAkB;AAClB,MAAM;KACH,GAAG,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7E,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,0BAA0B;AAC1B,MAAM;KACH,KAAK,CACJ,MAAM,EACN,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,aAAa,CAAC,EACxC,gBAAgB,CAAC,mBAAmB,CACrC;KACA,UAAU,CAAC,GAAG,gBAAgB,sBAAsB,CAAC,CAAC;AACzD,kBAAkB;AAClB,MAAM;KACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,YAAY,CAAC;KAC7C,UAAU,CAAC,GAAG,gBAAgB,eAAe,CAAC,CAAC;AAClD,8BAA8B;AAC9B,MAAM;KACH,IAAI,CACH,kBAAkB,EAClB,IAAA,kBAAQ,EAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAC5C,gBAAgB,CAAC,iBAAiB,CACnC;KACA,UAAU,CAAC,GAAG,gBAAgB,0BAA0B,CAAC,CAAC;AAE7D,kBAAe,MAAM,CAAC"}
|
package/src/types/common.d.ts
CHANGED
|
@@ -44,6 +44,9 @@ export declare type CollectionItem = {
|
|
|
44
44
|
[key: string]: string | number | boolean;
|
|
45
45
|
};
|
|
46
46
|
searchColumns: string[];
|
|
47
|
+
match?: ObjectType;
|
|
48
|
+
project?: ObjectType;
|
|
49
|
+
lookup?: ObjectType;
|
|
47
50
|
};
|
|
48
51
|
export interface IConfig {
|
|
49
52
|
logger: any;
|
|
@@ -64,3 +67,12 @@ export interface IDefaultValidations {
|
|
|
64
67
|
deletedBy: string;
|
|
65
68
|
deletedAt: string;
|
|
66
69
|
}
|
|
70
|
+
export interface IWidgetDataSchema {
|
|
71
|
+
_id: string;
|
|
72
|
+
code: string;
|
|
73
|
+
collectionName: string;
|
|
74
|
+
collectionItems: string[];
|
|
75
|
+
}
|
|
76
|
+
export declare type IWidgetData = {
|
|
77
|
+
[key: string]: IWidgetDataSchema;
|
|
78
|
+
};
|
package/src/utils/defaults.d.ts
CHANGED
package/src/utils/defaults.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaults = void 0;
|
|
3
|
+
exports.commonExcludedFields = exports.defaults = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
exports.defaults = {
|
|
6
6
|
logger: console,
|
|
@@ -20,4 +20,9 @@ exports.defaults = {
|
|
|
20
20
|
},
|
|
21
21
|
collections: [],
|
|
22
22
|
};
|
|
23
|
+
exports.commonExcludedFields = {
|
|
24
|
+
__v: 0,
|
|
25
|
+
isDeleted: 0,
|
|
26
|
+
deletedAt: 0,
|
|
27
|
+
};
|
|
23
28
|
//# sourceMappingURL=defaults.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/defaults.ts"],"names":[],"mappings":";;;AAEA,4CAA2E;AAE9D,QAAA,QAAQ,GAAY;IAC/B,MAAM,EAAE,OAAc;IACtB,UAAU,EACR,CAAC,EAAO,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CACxB,CAAC,GAAa,EAAE,GAAc,EAAE,IAAkB,EAAE,EAAE;QACpD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAM,CAAC,oBAAoB,CAAC,EAAE;gBAC9C,OAAO,GAAG,GAAG,KAAK,2BAA2B,CAAC;aAC/C;YACD,kCAAkC;YAClC,GAAG,CAAC,MAAM,CAAC,+BAAmB,CAAC,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,0BAAc,CAAC,KAAK;gBAC1B,OAAO;gBACP,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,WAAW,EAAE,EAAsB;CACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/defaults.ts"],"names":[],"mappings":";;;AAEA,4CAA2E;AAE9D,QAAA,QAAQ,GAAY;IAC/B,MAAM,EAAE,OAAc;IACtB,UAAU,EACR,CAAC,EAAO,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CACxB,CAAC,GAAa,EAAE,GAAc,EAAE,IAAkB,EAAE,EAAE;QACpD,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChD,IAAI,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;YACrC,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAM,CAAC,oBAAoB,CAAC,EAAE;gBAC9C,OAAO,GAAG,GAAG,KAAK,2BAA2B,CAAC;aAC/C;YACD,kCAAkC;YAClC,GAAG,CAAC,MAAM,CAAC,+BAAmB,CAAC,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,0BAAc,CAAC,KAAK;gBAC1B,OAAO;gBACP,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,WAAW,EAAE,EAAsB;CACpC,CAAC;AAEW,QAAA,oBAAoB,GAAG;IAClC,GAAG,EAAE,CAAC;IACN,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;CACb,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IWidgetSchema } from '../types';
|
|
2
|
+
export declare function appendCollectionData(widgetData: IWidgetSchema[]): Promise<(IWidgetSchema | {
|
|
3
|
+
collectionItems: any;
|
|
4
|
+
name: string;
|
|
5
|
+
code: string;
|
|
6
|
+
autoPlay: boolean;
|
|
7
|
+
isActive: boolean;
|
|
8
|
+
selectionTitle: string;
|
|
9
|
+
webPerRow: number;
|
|
10
|
+
mobilePerRow: number;
|
|
11
|
+
tabletPerRow: number;
|
|
12
|
+
widgetType: import("../types").WidgetType;
|
|
13
|
+
selectionType: import("../types").SelectionTypes;
|
|
14
|
+
collectionName: string;
|
|
15
|
+
_id?: any;
|
|
16
|
+
__v?: any;
|
|
17
|
+
$locals: Record<string, unknown>;
|
|
18
|
+
$op: "save" | "validate" | "remove" | null;
|
|
19
|
+
$where: Record<string, unknown>;
|
|
20
|
+
baseModelName?: string | undefined;
|
|
21
|
+
collection: import("mongoose").Collection<import("bson").Document>;
|
|
22
|
+
db: import("mongoose").Connection;
|
|
23
|
+
errors?: import("mongoose").Error.ValidationError | undefined;
|
|
24
|
+
id?: any;
|
|
25
|
+
isNew: boolean;
|
|
26
|
+
modelName: string;
|
|
27
|
+
schema: import("mongoose").Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, "type", {
|
|
28
|
+
[x: string]: any;
|
|
29
|
+
}>;
|
|
30
|
+
})[]>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendCollectionData = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const models_1 = require("../models");
|
|
6
|
+
const defaults_1 = require("./defaults");
|
|
7
|
+
function appendCollectionData(widgetData) {
|
|
8
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
9
|
+
// reduce widget data to optimize query
|
|
10
|
+
const newData = widgetData.reduce((acc, widget) => {
|
|
11
|
+
if (widget.collectionName) {
|
|
12
|
+
acc[widget.code] = {
|
|
13
|
+
_id: widget._id,
|
|
14
|
+
code: widget.code,
|
|
15
|
+
collectionName: widget.collectionName,
|
|
16
|
+
collectionItems: widget.collectionItems,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return acc;
|
|
20
|
+
}, {});
|
|
21
|
+
if (Object.keys(newData).length > 0) {
|
|
22
|
+
const aggregationQuery = [
|
|
23
|
+
{
|
|
24
|
+
$match: {
|
|
25
|
+
_id: {
|
|
26
|
+
$in: Object.values(newData).map((item) => item._id),
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
// Get only the fields that are not excluded
|
|
32
|
+
$project: {
|
|
33
|
+
_id: 1,
|
|
34
|
+
code: 1,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
let collectionConfig, aggregationQueryPiplelines;
|
|
39
|
+
Object.keys(newData).forEach((key) => {
|
|
40
|
+
collectionConfig = defaults_1.defaults.collections.find((c) => c.collectionName === newData[key].collectionName);
|
|
41
|
+
// Build piplelines with config
|
|
42
|
+
aggregationQueryPiplelines = [
|
|
43
|
+
{
|
|
44
|
+
$match: Object.assign({ _id: {
|
|
45
|
+
$in: newData[key].collectionItems,
|
|
46
|
+
} }, ((collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.match) || {})),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
$project: Object.assign({}, defaults_1.commonExcludedFields),
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
// add project config if it exists
|
|
53
|
+
if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project)
|
|
54
|
+
aggregationQueryPiplelines.push({
|
|
55
|
+
$project: collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.project,
|
|
56
|
+
});
|
|
57
|
+
// add lookup config if it exists
|
|
58
|
+
if (collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup)
|
|
59
|
+
aggregationQueryPiplelines.push({
|
|
60
|
+
$lookup: collectionConfig === null || collectionConfig === void 0 ? void 0 : collectionConfig.lookup,
|
|
61
|
+
});
|
|
62
|
+
// Build Aggregation Query
|
|
63
|
+
aggregationQuery.push({
|
|
64
|
+
$lookup: {
|
|
65
|
+
from: newData[key].collectionName,
|
|
66
|
+
pipeline: aggregationQueryPiplelines,
|
|
67
|
+
as: newData[key].code,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
// getting collection data by populating widget
|
|
72
|
+
let aggregationData = yield models_1.Widget.aggregate(aggregationQuery);
|
|
73
|
+
aggregationData = aggregationData.reduce((acc, aggregation) => {
|
|
74
|
+
acc[aggregation.code] = aggregation[aggregation.code];
|
|
75
|
+
return acc;
|
|
76
|
+
}, {});
|
|
77
|
+
// adding collection data to widgets
|
|
78
|
+
return widgetData.map((widget) => {
|
|
79
|
+
if (aggregationData[widget.code]) {
|
|
80
|
+
return Object.assign(Object.assign({}, widget), { collectionItems: aggregationData[widget.code] });
|
|
81
|
+
}
|
|
82
|
+
return widget;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// returning widget data as it is if they do not have dynamic collection
|
|
86
|
+
return widgetData;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
exports.appendCollectionData = appendCollectionData;
|
|
90
|
+
//# sourceMappingURL=helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../libs/node/src/utils/helper.ts"],"names":[],"mappings":"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"}
|