@simitgroup/simpleapp-generator 2.0.1-w-alpha → 2.0.1-y-alpha

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 (48) hide show
  1. package/ReleaseNote.md +10 -0
  2. package/dist/buildinschemas/autoincreament.js +1 -1
  3. package/dist/buildinschemas/docnoformat.js +1 -1
  4. package/dist/buildinschemas/docnoformat.js.map +1 -1
  5. package/dist/buildinschemas/documentevent.js +1 -1
  6. package/package.json +1 -1
  7. package/templates/basic/miniApi/resource.controller.ts.eta +28 -0
  8. package/templates/basic/miniApi/resource.service.ts.eta +13 -0
  9. package/templates/miniApi/src/constants/api-scopes.ts.eta +10 -0
  10. package/templates/nest/src/simple-app/_core/features/cron/cron-system/cron-system.service.ts.eta +8 -8
  11. package/templates/nest/src/simple-app/_core/framework/base/simple-app.service.ts.eta +15 -18
  12. package/templates/nest/src/simple-app/_core/framework/schemas/simple-app.schema.ts.eta +1 -0
  13. package/dist/buildinschemas/message.d.ts +0 -3
  14. package/dist/buildinschemas/message.d.ts.map +0 -1
  15. package/dist/buildinschemas/message.js +0 -34
  16. package/dist/buildinschemas/message.js.map +0 -1
  17. package/dist/buildinschemas/webhookhistory.d.ts +0 -3
  18. package/dist/buildinschemas/webhookhistory.d.ts.map +0 -1
  19. package/dist/buildinschemas/webhookhistory.js +0 -44
  20. package/dist/buildinschemas/webhookhistory.js.map +0 -1
  21. package/dist/createproject.js +0 -138
  22. package/dist/createproject.js.map +0 -1
  23. package/dist/generate-allow-changebackend.js +0 -305
  24. package/dist/generate-allow-changebackend.js.map +0 -1
  25. package/dist/index2.js +0 -118
  26. package/dist/index2.js.map +0 -1
  27. package/dist/installdependency.js +0 -20
  28. package/dist/installdependency.js.map +0 -1
  29. package/dist/installnest.js +0 -2
  30. package/dist/installnest.js.map +0 -1
  31. package/dist/installnuxt.js +0 -2
  32. package/dist/installnuxt.js.map +0 -1
  33. package/dist/processors/groupsbuilder.js +0 -2
  34. package/dist/processors/groupsbuilder.js.map +0 -1
  35. package/dist/schematype/baseschema.js +0 -25
  36. package/dist/schematype/baseschema.js.map +0 -1
  37. package/dist/schematype/default.js +0 -2
  38. package/dist/schematype/default.js.map +0 -1
  39. package/dist/schematype/index.js +0 -12
  40. package/dist/schematype/index.js.map +0 -1
  41. package/dist/schematype/primarymasterdata.js +0 -38
  42. package/dist/schematype/primarymasterdata.js.map +0 -1
  43. package/dist/schematype/simple.js +0 -24
  44. package/dist/schematype/simple.js.map +0 -1
  45. package/dist/schematype/simplemasterdata.js +0 -31
  46. package/dist/schematype/simplemasterdata.js.map +0 -1
  47. package/dist/schematype/transaction.js +0 -74
  48. package/dist/schematype/transaction.js.map +0 -1
package/ReleaseNote.md CHANGED
@@ -1,4 +1,14 @@
1
+ [2.0.1y-alpha]
2
+
3
+ 1. Handle whitelist confirm and void api
4
+
5
+ [2.0.1x-alpha]
6
+
7
+ 1. disable system cron auto run
8
+ 2. fix search text syntax mess up
9
+
1
10
  [2.0.1w-alpha]
11
+
2
12
  1. touch up abit debugger in simple-app.service
3
13
  2. add default queue job option code
4
14
 
@@ -15,7 +15,7 @@ exports.autoincreament = {
15
15
  entryPoint: 'gennextno/:collection/:field',
16
16
  requiredRole: ['User'],
17
17
  method: type_1.RESTMethods.get,
18
- responseType: 'AutoIncreament',
18
+ responseType: 'Autoincreament',
19
19
  description: 'Get next no and trigger increase nextno'
20
20
  }
21
21
  ],
@@ -17,7 +17,7 @@ exports.docnoformat = {
17
17
  action: 'listDocFormats',
18
18
  entryPoint: '/listdocformats/:doctype',
19
19
  requiredRole: ['User'],
20
- responseType: '[DocumentNoFormat]',
20
+ responseType: '[Docnoformat]',
21
21
  method: type_1.RESTMethods.get,
22
22
  description: 'get list of document format for 1 doctype'
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docnoformat.js","sourceRoot":"","sources":["../../src/buildinschemas/docnoformat.ts"],"names":[],"mappings":";;;AAAA,kCAAiE;AAEpD,QAAA,WAAW,GAAe;IACrC,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE;QACpB,aAAa,EAAE,oBAAa,CAAC,GAAG;QAChC,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,aAAa;QAC3B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,eAAe;QAC1B,aAAa,EAAE,iBAAiB;QAChC,4BAA4B,EAAE,CAAC,SAAS,CAAC;QACzC,cAAc,EAAE;YACd;gBACE,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,0BAA0B;gBACtC,YAAY,EAAE,CAAC,MAAM,CAAC;gBACtB,YAAY,EAAE,oBAAoB;gBAClC,MAAM,EAAE,kBAAW,CAAC,GAAG;gBACvB,WAAW,EAAE,2CAA2C;aACzD;SACF;QACD,YAAY,EAAE,kBAAkB;KACjC;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACrD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC9B;SACF;QACD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;QACpD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE;QACzE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;QACrD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;YAC9C,WAAW,EAAE,iCAAiC;SAC/C;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;KAC5C;CACF,CAAC"}
1
+ {"version":3,"file":"docnoformat.js","sourceRoot":"","sources":["../../src/buildinschemas/docnoformat.ts"],"names":[],"mappings":";;;AAAA,kCAAiE;AAEpD,QAAA,WAAW,GAAe;IACrC,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE;QACpB,aAAa,EAAE,oBAAa,CAAC,GAAG;QAChC,YAAY,EAAE,OAAO;QACrB,YAAY,EAAE,aAAa;QAC3B,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,eAAe;QAC1B,aAAa,EAAE,iBAAiB;QAChC,4BAA4B,EAAE,CAAC,SAAS,CAAC;QACzC,cAAc,EAAE;YACd;gBACE,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,0BAA0B;gBACtC,YAAY,EAAE,CAAC,MAAM,CAAC;gBACtB,YAAY,EAAE,eAAe;gBAC7B,MAAM,EAAE,kBAAW,CAAC,GAAG;gBACvB,WAAW,EAAE,2CAA2C;aACzD;SACF;QACD,YAAY,EAAE,kBAAkB;KACjC;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACrD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAClD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACrD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC9B;SACF;QACD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;QACpD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,wBAAwB,CAAC,EAAE;QACzE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;QACrD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;YAC9C,WAAW,EAAE,iCAAiC;SAC/C;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;KAC5C;CACF,CAAC"}
@@ -42,7 +42,7 @@ exports.documentevent = {
42
42
  ],
43
43
  examples: ['create', 'delete']
44
44
  },
45
- eventData: {}
45
+ eventdata: {}
46
46
  }
47
47
  };
48
48
  //# sourceMappingURL=documentevent.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "2.0.1w-alpha",
3
+ "version": "2.0.1y-alpha",
4
4
  "description": "frontend nuxtjs and backend nests code generator using jsonschema",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -164,6 +164,34 @@ export class <%= pascalName %>Controller {
164
164
  return await this.<%= serviceVariable %>.autocomplete(headers, query, filter);
165
165
  }
166
166
  <% } else if(action === 'current') { %>
167
+ <% } else if(action === 'confirm') { %>
168
+ @Post(':id/confirm')
169
+ @ApiOperation({ operationId: 'confirm' })
170
+ @ApiBody({ type: <%= schemaName %>, required: true })
171
+ @ApiResponse({ status: 200, description: 'Success', type: <%= schemaName %> })
172
+ @ApiResponse({ status: 400, description: 'Bad Request' })
173
+ @ApiResponse({ status: 500, description: 'Internal Error' })
174
+ async confirm(
175
+ @Headers() headers: ApiHeader,
176
+ @Param('id') id: string,
177
+ @Body() resourceDto: any,
178
+ ) {
179
+ return await this.<%= serviceVariable %>.confirm(headers, id, resourceDto);
180
+ }
181
+ <% } else if(action === 'void') { %>
182
+ @Post(':id/void')
183
+ @ApiOperation({ operationId: 'void' })
184
+ @ApiBody({ type: <%= schemaName %>, required: true })
185
+ @ApiResponse({ status: 200, description: 'Success', type: <%= schemaName %> })
186
+ @ApiResponse({ status: 400, description: 'Bad Request' })
187
+ @ApiResponse({ status: 500, description: 'Internal Error' })
188
+ async void(
189
+ @Headers() headers: ApiHeader,
190
+ @Param('id') id: string,
191
+ @Body() resourceDto: any,
192
+ ) {
193
+ return await this.<%= serviceVariable %>.void(headers, id, resourceDto);
194
+ }
167
195
  <% } else { %>
168
196
  <% const api = it.apiSettings.find(item => item.action === action); %>
169
197
  <% if (api) { %>
@@ -4,6 +4,7 @@
4
4
  const uglyName = upperFirstCase(it.name ?? '');
5
5
  const schemaName = `SimtrainSchema.${pascalName}Dto`;
6
6
  const schemaAutoCompleteName = `SimtrainSchema.${pascalName}AutoCompleteDto`;
7
+ const resourceName = it.resourceName;
7
8
 
8
9
  const getTypeName = (typeName) => {
9
10
  const systemTypes = ['boolean', 'string', 'number', 'object', 'integer'];
@@ -105,6 +106,18 @@ export class <%= pascalName %>Service {
105
106
  return resp.data;
106
107
  }
107
108
  <% } else if(action === 'current') { %>
109
+ <% } else if(action === 'confirm') { %>
110
+ async confirm(headers: ApiHeader, id: string, resourceDto: any) {
111
+ const api = this.getApi(headers);
112
+ const resp = await api.<%= resourceName %>ControllerSetStatusConfirm(id, resourceDto);
113
+ return resp.data;
114
+ }
115
+ <% } else if(action === 'void') { %>
116
+ async void(headers: ApiHeader, id: string, resourceDto: any) {
117
+ const api = this.getApi(headers);
118
+ const resp = await api.<%= resourceName %>ControllerSetStatusVoid(id, resourceDto);
119
+ return resp.data;
120
+ }
108
121
  <% } else { %>
109
122
  <% const api = it.apiSettings.find(item => item.action === action); %>
110
123
  <% if (api) { %>
@@ -59,6 +59,16 @@
59
59
  case 'current':
60
60
  return;
61
61
 
62
+ case 'confirm':
63
+ method = 'post';
64
+ description = `Confirm and finalize the specified ${resourceTitleName}.`;
65
+ break;
66
+
67
+ case 'void':
68
+ method = 'post';
69
+ description = `Invalidate and mark the specified ${resourceTitleName} as void.`;
70
+ break;
71
+
62
72
  default:
63
73
  const additionalApiConfig = (additionalApis ?? []).find(item => item.action === action);
64
74
  method = additionalApiConfig?.method ?? '';
@@ -15,25 +15,25 @@ export class CronSystemService extends SimpleAppCronBaseClass {
15
15
  super(robotUserService);
16
16
  }
17
17
 
18
- @Cron('0 1 * * *')
18
+ //@Cron('0 1 * * *')
19
19
  async deleteApiLog() {
20
- if (process.env.ON_CRONTAB == 'true') {
21
- this.logger.debug('run CronSystemService.deleteApiLog 0 1 * * *')
20
+ //if (process.env.ON_CRONTAB == 'true') {
21
+ this.logger.debug('run CronSystemService.deleteApiLog')
22
22
  const today = new Date();
23
23
  const newDate = new Date(today.getTime());
24
24
  const cutoffdate = new Date(newDate.setDate(newDate.getDate() - 90)).toISOString();
25
25
  await this.apiEventModel.deleteMany({ created: { $lte: cutoffdate } });
26
- }
26
+ //}
27
27
  }
28
28
 
29
- @Cron('30 0 * * *')
29
+ //@Cron('30 0 * * *')
30
30
  async deleteQueueJob() {
31
- if (process.env.ON_CRONTAB == 'true') {
32
- this.logger.debug('run deleteQueueJob.deleteApiLog 30 0 * * *')
31
+ //if (process.env.ON_CRONTAB == 'true') {
32
+ this.logger.debug('run deleteQueueJob.deleteApiLog')
33
33
  const today = new Date();
34
34
  const newDate = new Date(today.getTime());
35
35
  const cutoffdate = new Date(newDate.setDate(newDate.getDate() - 90)).toISOString();
36
36
  await this.queueJobModel.deleteMany({ created: { $lte: cutoffdate } });
37
- }
37
+ //}
38
38
  }
39
39
  }
@@ -286,27 +286,24 @@ export class SimpleAppService<T extends SchemaFields> {
286
286
 
287
287
  async fullTextSearch(appuser: UserContext, body: TextSearchBody) {
288
288
  try {
289
+ //{filters:string[],fields:string[]}
289
290
  const isolationFilter = { ...this.getIsolationFilter(appuser) };
290
291
  this.polishIsolationFilter(isolationFilter);
291
292
  const keyword = body.keyword;
292
-
293
+ // console.log("bodybody",body)
293
294
  // Prepare regex filter
294
295
  const orConditions: any[] = [];
295
- if (body.fields && body.fields.length > 0) {
296
- body.fields.forEach((field: string) => {
297
- if (field != 'defaultPrice' && field != 'amount' && field != 'active' && field != 'updated') {
296
+ const regex = new RegExp(keyword, 'i')
297
+
298
+ if (body.filters && body.filters.length > 0) {
299
+ body.filters.forEach((field: string) => {
298
300
  orConditions.push({
299
- [field]: { $regex: keyword, $options: 'i' },
300
- });
301
- } else {
302
- if (!isNaN(Number(keyword)) && (field == 'defaultPrice' || field == 'amount')) {
303
- orConditions.push({
304
- [field]: { $gte: keyword },
305
- });
306
- }
307
- }
301
+ [field]: { $regex: regex },
302
+ });
308
303
  });
309
304
  }
305
+
306
+
310
307
  const filter = {
311
308
  $or: orConditions,
312
309
  };
@@ -318,7 +315,7 @@ export class SimpleAppService<T extends SchemaFields> {
318
315
 
319
316
  const fields = body.fields || {};
320
317
  const sorts = body.sorts || {};
321
-
318
+ // console.log("newfilters",JSON.stringify(newfilters),fields)
322
319
  // Ensure `this.doc` is a Mongoose model or similar
323
320
  const results = await this.doc.find(newfilters, fields).sort(sorts).exec();
324
321
 
@@ -499,7 +496,7 @@ export class SimpleAppService<T extends SchemaFields> {
499
496
  errormsg.push(this.errorlist[i].message);
500
497
  }
501
498
 
502
- throw new BadRequestException(errormsg as HttpExceptionOptions,'Before validation hook failed');
499
+ throw new BadRequestException(errormsg as HttpExceptionOptions, 'Before validation hook failed');
503
500
  }
504
501
 
505
502
  let validate;
@@ -513,7 +510,7 @@ export class SimpleAppService<T extends SchemaFields> {
513
510
  if (!valid) {
514
511
  this.logger.error(JSON.stringify(data));
515
512
  this.logger.error(JSON.stringify(validate.errors), 'validate errors:');
516
- throw new BadRequestException(validate.errors as HttpExceptionOptions,'Data validation failed');
513
+ throw new BadRequestException(validate.errors as HttpExceptionOptions, 'Data validation failed');
517
514
  }
518
515
  }
519
516
 
@@ -1089,7 +1086,7 @@ export class SimpleAppService<T extends SchemaFields> {
1089
1086
 
1090
1087
  if (!unionresult) {
1091
1088
  this.logger.error('foreign key control failed ', 'identifyForeignKeys');
1092
- throw new InternalServerErrorException(pipelines as HttpExceptionOptions,'Foreignkey check execution error');
1089
+ throw new InternalServerErrorException(pipelines as HttpExceptionOptions, 'Foreignkey check execution error');
1093
1090
  } else {
1094
1091
  const searchresult: any = {};
1095
1092
  unionresult.forEach((item) => {
@@ -1099,7 +1096,7 @@ export class SimpleAppService<T extends SchemaFields> {
1099
1096
  searchresult[item.collection] = [item._id];
1100
1097
  }
1101
1098
  });
1102
- this.logger.debug( this.documentType + ' search Result',unionresult);
1099
+ this.logger.debug(this.documentType + ' search Result', unionresult);
1103
1100
 
1104
1101
  //search is it all foreign key exists in db
1105
1102
  for (let i = 0; i < collections.length; i++) {
@@ -143,6 +143,7 @@ export class DynamicParam {
143
143
  export class TextSearchBody {
144
144
  keyword: string;
145
145
  fields?: string[];
146
+ filters?: string[];
146
147
  sorts?: string[][];
147
148
  lookup?: Record<string, string>;
148
149
  }
@@ -1,3 +0,0 @@
1
- import { SchemaType } from '../type';
2
- export declare const docnoformat: SchemaType;
3
- //# sourceMappingURL=message.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/buildinschemas/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,SAAS,CAAA;AAE5D,eAAO,MAAM,WAAW,EAAC,UA6BtB,CAAA"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.docnoformat = void 0;
4
- const type_1 = require("../type");
5
- exports.docnoformat = {
6
- "type": "object",
7
- "x-simpleapp-config": {
8
- "documentType": "msg",
9
- "documentName": "message",
10
- "isolationType": type_1.IsolationType.tenant,
11
- "documentTitle": "messageTitle"
12
- },
13
- "properties": {
14
- "_id": { "type": "string" },
15
- "created": { "type": "string" },
16
- "updated": { "type": "string" },
17
- "createdBy": { "type": "string" },
18
- "updatedBy": { "type": "string" },
19
- "tenantId": { "type": "integer", "default": 1 },
20
- "orgId": { "type": "integer", "default": 1 },
21
- "branchId": { "type": "integer", "default": 1 },
22
- "messageTitle": {
23
- "type": "string",
24
- "minLength": 3
25
- },
26
- "read": { "type": "boolean", "default": false },
27
- "url": { "type": "string" },
28
- "description": {
29
- "type": "string",
30
- "format": "text"
31
- }
32
- }
33
- };
34
- //# sourceMappingURL=message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/buildinschemas/message.ts"],"names":[],"mappings":";;;AAAA,kCAA4D;AAE/C,QAAA,WAAW,GACxB;IACI,MAAM,EAAE,QAAQ;IAChB,oBAAoB,EAAE;QACpB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,SAAS;QACzB,eAAe,EAAE,oBAAa,CAAC,MAAM;QACrC,eAAe,EAAE,cAAc;KAChC;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC3B,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/B,SAAS,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QAC/B,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QACjC,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;QACjC,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;QAC/C,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;QAC5C,UAAU,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;QAC/C,cAAc,EAAE;YACd,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,CAAC;SACf;QACD,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAC;QAC9C,KAAK,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAC;QACzB,aAAa,EAAE;YACb,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,MAAM;SACjB;KACF;CACF,CAAA"}
@@ -1,3 +0,0 @@
1
- import { SchemaType } from '../type';
2
- export declare const webhookhistory: SchemaType;
3
- //# sourceMappingURL=webhookhistory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhookhistory.d.ts","sourceRoot":"","sources":["../../src/buildinschemas/webhookhistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA2B,MAAM,SAAS,CAAA;AAE5D,eAAO,MAAM,cAAc,EAAC,UAsC3B,CAAA"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.webhookhistory = void 0;
4
- const type_1 = require("../type");
5
- exports.webhookhistory = {
6
- type: "object",
7
- "x-simpleapp-config": {
8
- documentType: 'webhookhistory',
9
- documentName: 'webhookhistory',
10
- isolationType: type_1.IsolationType.tenant,
11
- // uniqueKey:'documentName',
12
- // documentTitle:'documentName'
13
- // pageType:"crud",
14
- },
15
- required: ["documentName", "url"],
16
- properties: {
17
- _id: { type: 'string' },
18
- created: { type: 'string' },
19
- updated: { type: 'string' },
20
- createdBy: { type: 'string' },
21
- updatedBy: { type: 'string' },
22
- tenantId: { type: 'integer', default: 1, minimum: 0 },
23
- orgId: { type: 'integer', default: 1, minimum: 0 },
24
- branchId: { type: 'integer', default: 1, minimum: 0 },
25
- webHookId: { type: "string", format: "uuid" },
26
- url: { type: "string", format: 'uri' },
27
- authentication: { type: "string" },
28
- headers: {
29
- type: "array",
30
- items: {
31
- type: "object",
32
- description: "http headers",
33
- properties: {
34
- name: { type: 'string' },
35
- value: { type: 'string' }
36
- }
37
- }
38
- },
39
- description: { type: "string", format: "text" },
40
- setting: { type: "string", format: "text" },
41
- result: { type: "string" }
42
- }
43
- };
44
- //# sourceMappingURL=webhookhistory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webhookhistory.js","sourceRoot":"","sources":["../../src/buildinschemas/webhookhistory.ts"],"names":[],"mappings":";;;AAAA,kCAA4D;AAE/C,QAAA,cAAc,GAAc;IACrC,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAC;QACnB,YAAY,EAAC,gBAAgB;QAC7B,YAAY,EAAC,gBAAgB;QAC7B,aAAa,EAAC,oBAAa,CAAC,MAAM;QAClC,4BAA4B;QAC5B,+BAA+B;QAC/B,yBAAyB;KAC1B;IACD,QAAQ,EAAC,CAAC,cAAc,EAAC,KAAK,CAAC;IAC/B,UAAU,EAAE;QACV,GAAG,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;QACnB,OAAO,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;QACvB,OAAO,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;QACvB,SAAS,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;QACzB,SAAS,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;QACzB,QAAQ,EAAE,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE;QAC/C,KAAK,EAAE,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE;QAC5C,QAAQ,EAAE,EAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAC,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE;QAC/C,SAAS,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC;QACvC,GAAG,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAC,KAAK,EAAC;QACnC,cAAc,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;QAChC,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,KAAK,EAAC;gBACJ,IAAI,EAAC,QAAQ;gBACb,WAAW,EAAC,cAAc;gBAC1B,UAAU,EAAC;oBACT,IAAI,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;oBACpB,KAAK,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;iBACtB;aACF;SACF;QACD,WAAW,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC;QAC3C,OAAO,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC;QACrC,MAAM,EAAC,EAAC,IAAI,EAAC,QAAQ,EAAC;KACvB;CACJ,CAAA"}
@@ -1,138 +0,0 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createNest = exports.createNuxt = exports.installDependency = void 0;
27
- const child_process_1 = require("child_process");
28
- const fs_1 = require("fs");
29
- const constants = __importStar(require("./constant"));
30
- const tslog_1 = require("tslog");
31
- const log = new tslog_1.Logger();
32
- const { Eta } = require('eta');
33
- const checkNodeJS = (callback) => {
34
- return (0, child_process_1.exec)(`npx -v`, (error, stdout, stderr) => {
35
- if (error) {
36
- throw ("Nodejs not exists");
37
- }
38
- else {
39
- callback();
40
- }
41
- });
42
- };
43
- const checkNestCli = (callback) => {
44
- log.info("setting up nest backend");
45
- return (0, child_process_1.exec)(`npx -v`, (error, stdout, stderr) => {
46
- if (error) {
47
- return (0, child_process_1.exec)(`npm i -g @nestjs/cli`, (error, stdout, stderr) => {
48
- callback();
49
- });
50
- }
51
- else {
52
- callback();
53
- }
54
- });
55
- };
56
- const installDependency = async () => {
57
- log.info("installDependency 'npm install -g pnpm @nestjs/cli @openapitools/openapi-generator-cli nuxi'");
58
- return await (0, child_process_1.exec)("npm install -g pnpm @nestjs/cli @openapitools/openapi-generator-cli nuxi");
59
- };
60
- exports.installDependency = installDependency;
61
- const createNuxt = (targetfolder, callback) => {
62
- log.info("setting up nuxt frontend ${targetfolder}");
63
- log.info(`frontend nuxt project "${targetfolder}" created, installing module`);
64
- (0, child_process_1.exec)(`cd ${targetfolder};pnpm install;pnpm install -D @types/node @vueuse/nuxt @sidebase/nuxt-auth @vueuse/core nuxt-security prettier @nuxt/ui`, (error, stdout, stderr) => {
65
- //;pnpm install
66
- console.log(error, stdout, stderr);
67
- (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save ajv dotenv @fullcalendar/core @fullcalendar/vue3 quill uuid ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
68
- console.log(error, stdout, stderr);
69
- (0, fs_1.mkdirSync)(`${targetfolder}/assets/css/`, { recursive: true });
70
- (0, fs_1.mkdirSync)(`${targetfolder}/layouts`, { recursive: true });
71
- (0, fs_1.mkdirSync)(`${targetfolder}/components`, { recursive: true });
72
- (0, fs_1.mkdirSync)(`${targetfolder}/server/api`, { recursive: true });
73
- (0, fs_1.mkdirSync)(`${targetfolder}/pages`, { recursive: true });
74
- (0, fs_1.mkdirSync)(`${targetfolder}/plugins`, { recursive: true });
75
- const eta = new Eta({ views: `${constants.templatedir}/nuxt` });
76
- const variables = [];
77
- const writes = {
78
- './app.vue.eta': 'app.vue',
79
- './components.eventmonitor.vue.eta': 'components/EventMonitor.vue',
80
- './components.menus.vue.eta': 'components/Menus.vue',
81
- './components.crudsimple.vue.eta': 'components/CrudSimple.vue',
82
- './components.debugdocdata.vue.eta': 'components/DebugDocumentData.vue',
83
- './layouts.default.vue.eta': 'layouts/default.vue',
84
- './server.api.ts.eta': 'server/api/[...].ts',
85
- './nuxt.config.ts.eta': 'nuxt.config.ts',
86
- './pages.index.vue.eta': 'pages/index.vue',
87
- './plugins.simpleapp.ts.eta': 'plugins/simpleapp.ts',
88
- './tailwind.config.ts.eta': 'tailwind.config.ts',
89
- './tailwind.css.eta': 'assets/css/tailwind.css',
90
- './env.eta': '.env',
91
- };
92
- const templates = Object.getOwnPropertyNames(writes);
93
- for (let i = 0; i < templates.length; i++) {
94
- const template = templates[i];
95
- const filename = writes[template];
96
- const txt = eta.render(template, variables);
97
- const file = `${targetfolder}/${filename}`;
98
- log.info("writing ", file);
99
- (0, fs_1.writeFileSync)(file, txt);
100
- }
101
- log.info("nuxt project completed");
102
- callback();
103
- });
104
- });
105
- };
106
- exports.createNuxt = createNuxt;
107
- const createNest = (targetfolder, callback) => {
108
- // checkNestCli(()=>{
109
- log.info(`creating backend project ${targetfolder}`);
110
- (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save @nestjs/swagger @nestjs/mongoose mongoose ajv ajv-formats @nestjs/config`, async (error, stdout, stderr) => {
111
- // log.info(`dependency installed`)
112
- if (!error) {
113
- (0, child_process_1.exec)(`pnpm install ajv ajv-formats axios json-schema`, (error, stdout, stderr) => {
114
- const eta = new Eta({ views: constants.templatedir });
115
- const variables = [];
116
- const txtEnv = eta.render('./nest.env.eta', variables);
117
- const txtMain = eta.render('./nest.main.eta', variables);
118
- (0, fs_1.writeFileSync)(`${targetfolder}/.env`, txtEnv);
119
- (0, fs_1.writeFileSync)(`${targetfolder}/src/main.ts`, txtMain);
120
- const tsconfigpath = process.cwd() + '/' + `${targetfolder}/tsconfig.json`;
121
- const tsconfig = require(tsconfigpath);
122
- tsconfig.compilerOptions.esModuleInterop = true;
123
- tsconfig.compilerOptions.resolveJsonModule = true;
124
- (0, fs_1.writeFileSync)(tsconfigpath, JSON.stringify(tsconfig));
125
- log.info("nest project completed");
126
- callback();
127
- });
128
- }
129
- else {
130
- log.error(stderr);
131
- throw error;
132
- }
133
- });
134
- //
135
- // })
136
- };
137
- exports.createNest = createNest;
138
- //# sourceMappingURL=createproject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":"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"}