@simitgroup/simpleapp-generator 2.0.2-i-alpha → 2.0.2-l-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 (46) 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 +3 -3
  7. package/templates/miniApi/src/constants/api-scopes.ts.eta +27 -0
  8. package/templates/nest/src/simple-app/_core/features/profile/profile.controller.ts.eta +2 -1
  9. package/templates/nest/src/simple-app/_core/features/profile/profile.service.ts.eta +14 -9
  10. package/templates/nest/src/simple-app/_core/features/user-context/user.context.ts.eta +100 -40
  11. package/dist/buildinschemas/message.d.ts +0 -3
  12. package/dist/buildinschemas/message.d.ts.map +0 -1
  13. package/dist/buildinschemas/message.js +0 -34
  14. package/dist/buildinschemas/message.js.map +0 -1
  15. package/dist/buildinschemas/webhookhistory.d.ts +0 -3
  16. package/dist/buildinschemas/webhookhistory.d.ts.map +0 -1
  17. package/dist/buildinschemas/webhookhistory.js +0 -44
  18. package/dist/buildinschemas/webhookhistory.js.map +0 -1
  19. package/dist/createproject.js +0 -138
  20. package/dist/createproject.js.map +0 -1
  21. package/dist/generate-allow-changebackend.js +0 -305
  22. package/dist/generate-allow-changebackend.js.map +0 -1
  23. package/dist/index2.js +0 -118
  24. package/dist/index2.js.map +0 -1
  25. package/dist/installdependency.js +0 -20
  26. package/dist/installdependency.js.map +0 -1
  27. package/dist/installnest.js +0 -2
  28. package/dist/installnest.js.map +0 -1
  29. package/dist/installnuxt.js +0 -2
  30. package/dist/installnuxt.js.map +0 -1
  31. package/dist/processors/groupsbuilder.js +0 -2
  32. package/dist/processors/groupsbuilder.js.map +0 -1
  33. package/dist/schematype/baseschema.js +0 -25
  34. package/dist/schematype/baseschema.js.map +0 -1
  35. package/dist/schematype/default.js +0 -2
  36. package/dist/schematype/default.js.map +0 -1
  37. package/dist/schematype/index.js +0 -12
  38. package/dist/schematype/index.js.map +0 -1
  39. package/dist/schematype/primarymasterdata.js +0 -38
  40. package/dist/schematype/primarymasterdata.js.map +0 -1
  41. package/dist/schematype/simple.js +0 -24
  42. package/dist/schematype/simple.js.map +0 -1
  43. package/dist/schematype/simplemasterdata.js +0 -31
  44. package/dist/schematype/simplemasterdata.js.map +0 -1
  45. package/dist/schematype/transaction.js +0 -74
  46. package/dist/schematype/transaction.js.map +0 -1
package/ReleaseNote.md CHANGED
@@ -1,3 +1,13 @@
1
+ [2.0.2l-alpha]
2
+
3
+ 1. Add direct debit mini api scope
4
+
5
+ [2.0.2k-alpha]
6
+
7
+ 1. add permission devbilling can access tenant invoice page
8
+ 2. add permission devsupport can access tenant page
9
+ 3. update profile tenant for user friendly when create tenant
10
+
1
11
  [2.0.2i-alpha]
2
12
 
3
13
  1. fix bugs cannot run backend
@@ -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,7 +1,7 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "2.0.2i-alpha",
4
- "description": "frontend nuxtjs and backend nests code generator using jsonschema",
3
+ "version": "2.0.2l-alpha",
4
+ "description": "frontend nuxtjs and backend nests code generator using jsonschema.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "generate": "ts-node src/index.ts -c ./sampleconfig.json; pnpm exec prettier ./backend --write;pnpm exec prettier ./frontend --write",
@@ -39,7 +39,7 @@
39
39
  "tslog": "4.9.1"
40
40
  },
41
41
  "bin": {
42
- "simpleapp-generator": "./dist/index.js"
42
+ "simpleapp-generator": "dist/index.js"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@types/node": "^20.5.2",
@@ -117,6 +117,33 @@ const scopes = {
117
117
  description: "Check online payment status",
118
118
  },
119
119
  },
120
+
121
+ directDebit: {
122
+ createDda: {
123
+ method: "post",
124
+ description: "Create direct debit authorization",
125
+ },
126
+ cancelDda: {
127
+ method: "post",
128
+ description: "Cancel direct debit authorization",
129
+ },
130
+ enquiryDdaByDdaRefNo: {
131
+ method: "get",
132
+ description: "Enquiry direct debit authorization by ref no",
133
+ },
134
+ createDdi: {
135
+ method: "post",
136
+ description: "Create direct debit instruction",
137
+ },
138
+ cancelDdi: {
139
+ method: "post",
140
+ description: "Cancel direct debit instruction",
141
+ },
142
+ enquiryDdiByDdiOrderNo: {
143
+ method: "get",
144
+ description: "Enquiry direct debit instruction by order no",
145
+ },
146
+ },
120
147
  };
121
148
 
122
149
  export default scopes;
@@ -116,8 +116,9 @@ export class ProfileController {
116
116
  @Body('timeZone') timeZone: string,
117
117
  @Body('utcOffset') utcOffset: number,
118
118
  @Body('businessType') businessType: string,
119
+ @Body('interestedInSales') interestedInSales?: boolean,
119
120
  ) {
120
- const result = await this.profileservice.createTenant(appUser, tenantName, timeZone, utcOffset, businessType,mobileNo);
121
+ const result = await this.profileservice.createTenant(appUser, tenantName, timeZone, utcOffset, businessType, mobileNo, interestedInSales);
121
122
  if (result) {
122
123
  return result;
123
124
  } else {
@@ -87,7 +87,7 @@ export class ProfileService {
87
87
  return userinfo;
88
88
  }
89
89
 
90
- async createTenant(appuser: UserContext, tenantName: string, timeZone: string, utcOffset: number, businessType: string, mobileNo: string) {
90
+ async createTenant(appuser: UserContext, tenantName: string, timeZone: string, utcOffset: number, businessType: string, mobileNo: string, interestedInSales?: boolean) {
91
91
  // try{
92
92
 
93
93
 
@@ -111,6 +111,8 @@ export class ProfileService {
111
111
  _id: appuser.getId(),
112
112
  label: appuser.getFullname(),
113
113
  uid: appuser.getUid(),
114
+ mobileNo: mobileNo,
115
+ email: appuser.getEmail(),
114
116
  },
115
117
  };
116
118
  this.logger.debug(tenantdata, 'createTenant data');
@@ -149,21 +151,21 @@ export class ProfileService {
149
151
  branchName: tenantName,
150
152
  companyName: tenantName,
151
153
  registrationNo: '',
152
- paymentRemark: '',
153
- invoiceRemark: '',
154
- cnRemark: '',
155
- refundRemark: '',
154
+ paymentRemark: 'This document is system-generated and does not require a signature. For any questions, please contact our support team.',
155
+ invoiceRemark: 'This document is system-generated and does not require a signature. For any questions, please contact our support team.',
156
+ cnRemark: 'This document is system-generated and does not require a signature. For any questions, please contact our support team.',
157
+ refundRemark: 'This document is system-generated and does not require a signature. For any questions, please contact our support team.',
156
158
  workStart: '09:00:00',
157
159
  workEnd: '22:00:00',
158
160
  workingHours: [],
159
161
  offdays: ['sat', 'sun'],
160
- street1: '11,my street 1',
161
- street2: 'my street 2',
162
+ street1: '11, My Street 1',
163
+ street2: 'My Street 2',
162
164
  postcode: '11111',
163
- city: 'my city',
165
+ city: 'My City',
164
166
  tel: mobileNo,
165
167
  email: appuser.getEmail(),
166
- region: 'my region',
168
+ region: 'My Region',
167
169
  country: countryName,
168
170
  active: true,
169
171
  orgId: orgResult.orgId,
@@ -187,6 +189,8 @@ export class ProfileService {
187
189
  fullName: appuser.getFullname(),
188
190
  email: appuser.getEmail(),
189
191
  active: true,
192
+ mobileNo: mobileNo,
193
+ interestedInSales: interestedInSales,
190
194
  };
191
195
  this.logger.debug(userdata, 'createtenant user data');
192
196
  const userResult = await this.userService.create(appuser, userdata);
@@ -219,6 +223,7 @@ export class ProfileService {
219
223
  const tenantUpdateData = await this.tenantService.findById(appuser, tenantResult._id);
220
224
  this.logger.log(tenantUpdateData, `update tenant owner(${tenantResult._id})`);
221
225
  tenantUpdateData.owner._id = userRecordId;
226
+ (tenantUpdateData.owner as any).mobileNo = mobileNo;
222
227
  const updateTenantOwnerResult = await this.tenantService.findIdThenUpdate(appuser, tenantResult._id, tenantUpdateData);
223
228
  if (!updateTenantOwnerResult) {
224
229
  throw new BadRequestException('Update tenant owner failed');
@@ -37,8 +37,8 @@ import { StepData } from 'src/simple-app/_core/resources/permission/permission.s
37
37
  @Injectable({ scope: Scope.REQUEST })
38
38
  export class UserContext extends UserContextInfo {
39
39
  sessionId: string = crypto.randomUUID();
40
- protected isTransaction = false
41
- protected transSteps:StepData[] = []
40
+ protected isTransaction = false;
41
+ protected transSteps: StepData[] = [];
42
42
  protected logger = new Logger(this.constructor.name);
43
43
 
44
44
  // protected uid: string = '';
@@ -152,7 +152,7 @@ export class UserContext extends UserContextInfo {
152
152
 
153
153
  getDBSession = (): ClientSession => this.dbsession;
154
154
  getTransSteps = () => this.transSteps;
155
- setTransSteps = (steps: StepData[]) => this.transSteps = steps;
155
+ setTransSteps = (steps: StepData[]) => (this.transSteps = steps);
156
156
  getId = () => this._id;
157
157
 
158
158
  getUid = () => this.uid;
@@ -578,6 +578,42 @@ export class UserContext extends UserContextInfo {
578
578
  }
579
579
  }
580
580
 
581
+ // Tenant permissions for DevSupport role
582
+ if (this.roles.includes(Role.DevSupport)) {
583
+ const tenantRoles = [
584
+ Role.Tenant_access,
585
+ Role.Tenant_search,
586
+ Role.Tenant_create,
587
+ Role.Tenant_update,
588
+ Role.Tenant_delete,
589
+ ];
590
+ for (let r = 0; r < tenantRoles.length; r++) {
591
+ if (!this.roles.includes(tenantRoles[r])) {
592
+ this.roles.push(tenantRoles[r]);
593
+ }
594
+ }
595
+ }
596
+
597
+ // TenantInvoice permissions for DevBilling role
598
+ if (this.roles.includes(Role.DevBilling)) {
599
+ const tenantInvoiceRoles = [
600
+ Role.TenantInvoice_access,
601
+ Role.TenantInvoice_search,
602
+ Role.TenantInvoice_create,
603
+ Role.TenantInvoice_update,
604
+ Role.TenantInvoice_delete,
605
+ Role.TenantInvoice_draft,
606
+ Role.TenantInvoice_void,
607
+ Role.TenantInvoice_confirm,
608
+ Role.TenantInvoice_print,
609
+ ];
610
+ for (let r = 0; r < tenantInvoiceRoles.length; r++) {
611
+ if (!this.roles.includes(tenantInvoiceRoles[r])) {
612
+ this.roles.push(tenantInvoiceRoles[r]);
613
+ }
614
+ }
615
+ }
616
+
581
617
  this.moreProps = this.setMoreProps(userProfile);
582
618
  // this.package = userProfile['package'];
583
619
  // this.appintegration = await this.setAppIntegration();
@@ -1123,6 +1159,40 @@ export class UserContext extends UserContextInfo {
1123
1159
  }
1124
1160
  }
1125
1161
 
1162
+ if (this.roles.includes(Role.DevSupport)) {
1163
+ const tenantRoles = [
1164
+ Role.Tenant_access,
1165
+ Role.Tenant_search,
1166
+ Role.Tenant_create,
1167
+ Role.Tenant_update,
1168
+ Role.Tenant_delete,
1169
+ ];
1170
+ for (let r = 0; r < tenantRoles.length; r++) {
1171
+ if (!this.roles.includes(tenantRoles[r])) {
1172
+ this.roles.push(tenantRoles[r]);
1173
+ }
1174
+ }
1175
+ }
1176
+
1177
+ if (this.roles.includes(Role.DevBilling)) {
1178
+ const tenantInvoiceRoles = [
1179
+ Role.TenantInvoice_access,
1180
+ Role.TenantInvoice_search,
1181
+ Role.TenantInvoice_create,
1182
+ Role.TenantInvoice_update,
1183
+ Role.TenantInvoice_delete,
1184
+ Role.TenantInvoice_draft,
1185
+ Role.TenantInvoice_void,
1186
+ Role.TenantInvoice_confirm,
1187
+ Role.TenantInvoice_print,
1188
+ ];
1189
+ for (let r = 0; r < tenantInvoiceRoles.length; r++) {
1190
+ if (!this.roles.includes(tenantInvoiceRoles[r])) {
1191
+ this.roles.push(tenantInvoiceRoles[r]);
1192
+ }
1193
+ }
1194
+ }
1195
+
1126
1196
  this.moreProps = this.setMoreProps(userProfile);
1127
1197
  } else {
1128
1198
  this.logger.debug(`User ${this.uid} not exists in tenant (${this.tenantId})`);
@@ -1221,54 +1291,44 @@ export class UserContext extends UserContextInfo {
1221
1291
  return isodate;
1222
1292
  }
1223
1293
 
1294
+ addTransactionStep(action: string, collection: string, id: string[], data: any[]) {
1295
+ this.transSteps.push({ action: action, collection: collection, id: id, data: data });
1296
+ }
1224
1297
 
1225
- addTransactionStep (action:string,collection:string,id:string[], data:any[]) {
1226
- this.transSteps.push({action:action,collection:collection,id:id,data:data})
1227
- }
1228
-
1229
-
1230
- inTransaction(){
1231
- if(process.env.MONGO_TRANS==='false')
1232
- return this.isTransaction
1233
- else
1234
- return this.dbsession && this.dbsession.inTransaction() ? true : false
1298
+ inTransaction() {
1299
+ if (process.env.MONGO_TRANS === 'false') return this.isTransaction;
1300
+ else return this.dbsession && this.dbsession.inTransaction() ? true : false;
1235
1301
  }
1236
- startTransaction(){
1237
- if(process.env.MONGO_TRANS==='false'){
1238
- this.isTransaction=true
1239
- this.transSteps=[]
1240
-
1241
-
1242
- }else{
1243
- this.dbsession.startTransaction({ readConcern: { level: 'snapshot' }, writeConcern: { w: 'majority' }, readPreference: 'primary' });
1302
+ startTransaction() {
1303
+ if (process.env.MONGO_TRANS === 'false') {
1304
+ this.isTransaction = true;
1305
+ this.transSteps = [];
1306
+ } else {
1307
+ this.dbsession.startTransaction({ readConcern: { level: 'snapshot' }, writeConcern: { w: 'majority' }, readPreference: 'primary' });
1244
1308
  }
1245
1309
  }
1246
- async commitTransaction(){
1247
- if(process.env.MONGO_TRANS==='false'){
1248
- this.isTransaction=false
1249
- this.transSteps=[]
1250
- }else{
1251
- if(this.dbsession.inTransaction())
1252
- await this.dbsession.commitTransaction()
1310
+ async commitTransaction() {
1311
+ if (process.env.MONGO_TRANS === 'false') {
1312
+ this.isTransaction = false;
1313
+ this.transSteps = [];
1314
+ } else {
1315
+ if (this.dbsession.inTransaction()) await this.dbsession.commitTransaction();
1253
1316
  }
1254
1317
  }
1255
- async rollBackTransaction(dbService:SimpleAppDbRevertService){
1256
- if(process.env.MONGO_TRANS==='false'){
1257
- await dbService.revertSteps(this.transSteps)
1258
- this.isTransaction=false
1259
- this.transSteps=[]
1260
-
1261
- }else{
1262
- if(this.dbsession.inTransaction())
1263
- await this.dbsession.abortTransaction()
1318
+ async rollBackTransaction(dbService: SimpleAppDbRevertService) {
1319
+ if (process.env.MONGO_TRANS === 'false') {
1320
+ await dbService.revertSteps(this.transSteps);
1321
+ this.isTransaction = false;
1322
+ this.transSteps = [];
1323
+ } else {
1324
+ if (this.dbsession.inTransaction()) await this.dbsession.abortTransaction();
1264
1325
  }
1265
1326
  }
1266
- async endSession(){
1267
- await this.dbsession.endSession()
1327
+ async endSession() {
1328
+ await this.dbsession.endSession();
1268
1329
  }
1269
1330
  }
1270
1331
 
1271
-
1272
1332
  // type StepData = {action:string,collection:string,id:string[],data:any[]}
1273
1333
  /**
1274
1334
  * Define a type for userinfo
@@ -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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"}