@futdevpro/nts-dynamo 1.7.4 → 1.7.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.
Files changed (51) hide show
  1. package/lib/_constants/mocks/app-extended-server.mock.d.ts +4 -4
  2. package/lib/_constants/mocks/app-extended-server.mock.d.ts.map +1 -1
  3. package/lib/_constants/mocks/app-server.mock.d.ts +5 -5
  4. package/lib/_constants/mocks/app-server.mock.d.ts.map +1 -1
  5. package/lib/_constants/mocks/socket-server.mock.d.ts.map +1 -1
  6. package/lib/_constants/mocks/socket-server.mock.js +3 -2
  7. package/lib/_constants/mocks/socket-server.mock.js.map +1 -1
  8. package/lib/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  9. package/lib/_models/control-models/endpoint-params.control-model.js +2 -2
  10. package/lib/_models/control-models/endpoint-params.control-model.js.map +1 -1
  11. package/lib/_models/{interfaces/port-settings.interface.d.ts → control-models/http-settings.control-model.d.ts} +3 -3
  12. package/lib/_models/control-models/http-settings.control-model.d.ts.map +1 -0
  13. package/lib/_models/{interfaces/port-settings.interface.js → control-models/http-settings.control-model.js} +4 -4
  14. package/lib/_models/control-models/http-settings.control-model.js.map +1 -0
  15. package/lib/_models/control-models/socket-presence.control-model.d.ts +8 -1
  16. package/lib/_models/control-models/socket-presence.control-model.d.ts.map +1 -1
  17. package/lib/_models/control-models/socket-presence.control-model.js +3 -3
  18. package/lib/_models/control-models/socket-presence.control-model.js.map +1 -1
  19. package/lib/_models/interfaces/index.d.ts +1 -1
  20. package/lib/_models/interfaces/index.d.ts.map +1 -1
  21. package/lib/_models/interfaces/index.js +1 -1
  22. package/lib/_models/interfaces/index.js.map +1 -1
  23. package/lib/_modules/app-extended.index.d.ts +1 -1
  24. package/lib/_modules/app-extended.index.d.ts.map +1 -1
  25. package/lib/_modules/app-extended.index.js +1 -1
  26. package/lib/_modules/app-extended.index.js.map +1 -1
  27. package/lib/_modules/app.index.d.ts +1 -1
  28. package/lib/_modules/app.index.d.ts.map +1 -1
  29. package/lib/_modules/app.index.js +1 -1
  30. package/lib/_modules/app.index.js.map +1 -1
  31. package/lib/_services/server/app-extended.server.js +1 -1
  32. package/lib/_services/server/app-extended.server.js.map +1 -1
  33. package/lib/_services/server/app.server.d.ts +7 -38
  34. package/lib/_services/server/app.server.d.ts.map +1 -1
  35. package/lib/_services/server/app.server.js +33 -11
  36. package/lib/_services/server/app.server.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/src/_constants/mocks/app-extended-server.mock.ts +4 -4
  40. package/src/_constants/mocks/app-server.mock.ts +5 -5
  41. package/src/_constants/mocks/socket-server.mock.ts +3 -2
  42. package/src/_models/control-models/endpoint-params.control-model.ts +7 -4
  43. package/src/_models/{interfaces/port-settings.interface.ts → control-models/http-settings.control-model.ts} +2 -2
  44. package/src/_models/control-models/socket-presence.control-model.ts +13 -5
  45. package/src/_models/interfaces/index.ts +1 -1
  46. package/src/_modules/app-extended.index.ts +1 -1
  47. package/src/_modules/app.index.ts +1 -1
  48. package/src/_services/server/app-extended.server.ts +1 -1
  49. package/src/_services/server/app.server.ts +46 -50
  50. package/lib/_models/interfaces/port-settings.interface.d.ts.map +0 -1
  51. package/lib/_models/interfaces/port-settings.interface.js.map +0 -1
@@ -5,7 +5,7 @@ import { customDataModelParams } from '@futdevpro/fsm-dynamo/custom-data-module'
5
5
 
6
6
  import { DynamoNTS_AppParams } from '../../_models/control-models/app-params.control-model';
7
7
  import { DynamoNTS_GlobalServiceSettings } from '../../_models/interfaces/global-service-settings.interface';
8
- import { DynamoNTS_PortSettings } from '../../_models/interfaces/port-settings.interface';
8
+ import { DynamoNTS_HttpSettings } from '../../_models/control-models/http-settings.control-model';
9
9
  import { getTestRoutingModule } from '../../_modules/test';
10
10
  import { getUsageRoutingModule } from '../../_modules/usage';
11
11
  import { DynamoNTS_SingletonService } from '../../_services';
@@ -40,7 +40,7 @@ export class DynamoNTS_AppExtendedBase_Mock extends DynamoNTS_AppExtended {
40
40
  };
41
41
  }
42
42
 
43
- getPortSettings(): DynamoNTS_PortSettings {
43
+ getPortSettings(): DynamoNTS_HttpSettings {
44
44
  return {};
45
45
  }
46
46
 
@@ -89,7 +89,7 @@ export class DynamoNTS_AppExtendedFull_Mock extends DynamoNTS_AppExtended {
89
89
  };
90
90
  }
91
91
 
92
- getPortSettings(): DynamoNTS_PortSettings {
92
+ getPortSettings(): DynamoNTS_HttpSettings {
93
93
  return {
94
94
  httpPort: 53535,
95
95
  };
@@ -159,7 +159,7 @@ export class DynamoNTS_AppWbMock_Mock extends DynamoNTS_AppExtended {
159
159
  };
160
160
  }
161
161
 
162
- getPortSettings(): DynamoNTS_PortSettings {
162
+ getPortSettings(): DynamoNTS_HttpSettings {
163
163
  return {
164
164
  httpPort: 53535,
165
165
  };
@@ -5,7 +5,7 @@ import { customDataModelParams } from '@futdevpro/fsm-dynamo/custom-data-module'
5
5
 
6
6
  import { DynamoNTS_AppParams } from '../../_models/control-models/app-params.control-model';
7
7
  import { DynamoNTS_GlobalServiceSettings } from '../../_models/interfaces/global-service-settings.interface';
8
- import { DynamoNTS_PortSettings } from '../../_models/interfaces/port-settings.interface';
8
+ import { DynamoNTS_HttpSettings } from '../../_models/control-models/http-settings.control-model';
9
9
  import { getTestRoutingModule } from '../../_modules/test';
10
10
  import { getUsageRoutingModule } from '../../_modules/usage';
11
11
  import { DynamoNTS_SingletonService } from '../../_services';
@@ -34,7 +34,7 @@ export class DynamoNTS_AppBase_Mock extends DynamoNTS_App {
34
34
  };
35
35
  }
36
36
 
37
- getPortSettings(): DynamoNTS_PortSettings {
37
+ getPortSettings(): DynamoNTS_HttpSettings {
38
38
  return {};
39
39
  }
40
40
 
@@ -79,7 +79,7 @@ export class DynamoNTS_AppFull_Mock extends DynamoNTS_App {
79
79
  };
80
80
  }
81
81
 
82
- getPortSettings(): DynamoNTS_PortSettings {
82
+ getPortSettings(): DynamoNTS_HttpSettings {
83
83
  return {
84
84
  httpPort: 10101,
85
85
  };
@@ -114,7 +114,7 @@ export class DynamoNTS_AppTEST_Mock extends DynamoNTS_App {
114
114
  overrides: {
115
115
  getAppParams?(): DynamoNTS_AppParams;
116
116
  getGlobalServiceCollection?(): DynamoNTS_GlobalServiceSettings;
117
- getPortSettings?(): DynamoNTS_PortSettings;
117
+ getPortSettings?(): DynamoNTS_HttpSettings;
118
118
  getRoutingModules?(): DynamoNTS_RoutingModule[];
119
119
  getRootServices?(): Promise<DynamoNTS_SingletonService[]>;
120
120
  }
@@ -161,7 +161,7 @@ export class DynamoNTS_AppTEST_Mock extends DynamoNTS_App {
161
161
  };
162
162
  }
163
163
 
164
- getPortSettings(): DynamoNTS_PortSettings {
164
+ getPortSettings(): DynamoNTS_HttpSettings {
165
165
  return {
166
166
  httpPort: 10203,
167
167
  };
@@ -26,8 +26,9 @@ export class DynamoNTS_SocketServer_Mock extends DynamoNTS_SocketServerService<D
26
26
  protected async getPresenceFromSubscrioptionEventContent(socketSubscription: any, socket: Socket): Promise<DynamoNTS_SocketPresence> {
27
27
  return new DynamoNTS_SocketPresence({
28
28
  issuerId: socketSubscription.issuerId,
29
- sockets: [ socket ]
30
- }, 'ISSUER');
29
+ sockets: [ socket ],
30
+ issuer: 'ISSUER socketServer_Mock',
31
+ });
31
32
  }
32
33
  }
33
34
 
@@ -185,9 +185,11 @@ export class DynamoNTS_EndpointParams{
185
185
  }
186
186
  } catch (error) {
187
187
  Dynamo_Log.error(
188
- 'UNCATCHED getFullExecution ERROR',
188
+ `UNCATCHED endpoint ERROR (${this.name}, ${this.endpoint})`,
189
+ '\nError:', error,
189
190
  '\nRequest:', req,
190
- '\nResponse:', res, error, issuer
191
+ '\nResponse:', res,
192
+ '\nissuer:', issuer
191
193
  );
192
194
  }
193
195
  };
@@ -234,10 +236,11 @@ export class DynamoNTS_EndpointParams{
234
236
  }
235
237
  }
236
238
  } catch (error) {
237
- Dynamo_Log.error(
239
+ Dynamo_Log.H_error(
238
240
  `\n\nDYNAMO MULTILEVEL ERROR:DynamoNTS_EndpointParams: error: (${this.name}, ${this.endpoint})` +
239
241
  `\n(DYNAMO MULTILEVEL ERROR means, that the ERRORHANDLING is ALSO FAILED, and the error message was not sent.)` +
240
- `\nERROR:`, error, '\n'
242
+ `\nERROR:`, error,
243
+ '\n'
241
244
  );
242
245
  }
243
246
  }
@@ -1,6 +1,6 @@
1
1
 
2
2
  import * as BodyParser from 'body-parser';
3
- export class DynamoNTS_PortSettings {
3
+ export class DynamoNTS_HttpSettings {
4
4
  httpPort?: number;
5
5
  httpsPort?: number;
6
6
 
@@ -20,7 +20,7 @@ export class DynamoNTS_PortSettings {
20
20
  };
21
21
 
22
22
  constructor(
23
- set: DynamoNTS_PortSettings
23
+ set: DynamoNTS_HttpSettings
24
24
  ) {
25
25
  Object.assign(this, set);
26
26
  }
@@ -17,8 +17,16 @@ export class DynamoNTS_SocketPresence {
17
17
  sockets?: SocketIO.Socket[] = [];
18
18
 
19
19
  constructor(
20
- set: DynamoNTS_SocketPresence,
21
- issuer: string
20
+ set: {
21
+ issuerId: string,
22
+ serviceName?: string,
23
+ onDestroy?: (issuerId: string) => void,
24
+
25
+ defaultErrorUserMsg?: string,
26
+ sockets?: SocketIO.Socket[],
27
+
28
+ issuer: string,
29
+ },
22
30
  ) {
23
31
  if (!set?.issuerId) {
24
32
  throw new Dynamo_Error({
@@ -28,7 +36,7 @@ export class DynamoNTS_SocketPresence {
28
36
  `trying to create DynamoNTS_SocketPresence without a valid issuerId!` +
29
37
  `\nset: ${JSON.stringify(set)}`
30
38
  ),
31
- issuer
39
+ set?.issuer
32
40
  ),
33
41
 
34
42
  errorCode: 'NTS-SD0-C00',
@@ -55,7 +63,7 @@ export class DynamoNTS_SocketPresence {
55
63
  `trying to create DynamoNTS_SocketPresence without a single active socket!` +
56
64
  `\nissuerId: ${this.issuerId}`
57
65
  ),
58
- issuer
66
+ set?.issuer
59
67
  ),
60
68
 
61
69
  errorCode: 'NTS-SD0-C01',
@@ -149,7 +157,7 @@ export class DynamoNTS_SocketPresence {
149
157
  }
150
158
  }
151
159
 
152
- private _getDefaultErrorSettings?(fnName: string, error: Error | Dynamo_Error, issuer: string) {
160
+ private _getDefaultErrorSettings(fnName: string, error: Error | Dynamo_Error, issuer: string) {
153
161
  return {
154
162
  status: (error as Dynamo_Error)?.___status ?? 406,
155
163
  message: (error as Error)?.message ?? `${fnName} was UNSUCCESFUL (NTS; ${this.serviceName})`,
@@ -1,7 +1,7 @@
1
1
 
2
2
  // INTERFACES
3
3
  export * from './global-service-settings.interface';
4
- export * from './port-settings.interface';
4
+ export * from '../control-models/http-settings.control-model';
5
5
  export * from './certification-settings.interface';
6
6
  export * from './global-settings.interface';
7
7
  export * from './routing-module-settings.interface';
@@ -9,7 +9,7 @@ export * from '../_services/socket/socket-server.service';
9
9
 
10
10
  // INTERFACES
11
11
  export * from '../_models/interfaces/global-service-settings.interface';
12
- export * from '../_models/interfaces/port-settings.interface';
12
+ export * from '../_models/control-models/http-settings.control-model';
13
13
  export * from '../_models/interfaces/certification-settings.interface';
14
14
  export * from '../_models/interfaces/global-settings.interface';
15
15
  export * from '../_models/interfaces/routing-module-settings.interface';
@@ -7,7 +7,7 @@ export * from '../_services/shared.static-service';
7
7
 
8
8
  // INTERFACES
9
9
  export * from '../_models/interfaces/global-service-settings.interface';
10
- export * from '../_models/interfaces/port-settings.interface';
10
+ export * from '../_models/control-models/http-settings.control-model';
11
11
  export * from '../_models/interfaces/certification-settings.interface';
12
12
  export * from '../_models/interfaces/global-settings.interface';
13
13
  export * from '../_models/interfaces/routing-module-settings.interface';
@@ -383,7 +383,7 @@ export abstract class DynamoNTS_AppExtended extends DynamoNTS_App {
383
383
  (mod: DynamoNTS_SocketServerService<any>) => mod.port === service.port
384
384
  );
385
385
 
386
- if (1 < existingPorts.length || this.ports.httpPort === service.port || this.ports.httpsPort === service.port) {
386
+ if (1 < existingPorts.length || this.portSettings.httpPort === service.port || this.portSettings.httpsPort === service.port) {
387
387
  let error = new Error(`PORT DUPLICATION: ${service.port}`);
388
388
  let errorStack: string[] = error.stack.split('\n');
389
389
  errorStack.splice(1, 4);
@@ -7,15 +7,13 @@ import * as Https from 'https';
7
7
  import * as FileSystem from 'fs';
8
8
  import * as BodyParser from 'body-parser';
9
9
 
10
- import { ErrorRequestHandler } from 'express';
11
-
12
10
  import { Dynamo_Array, Dynamo_Error, dynamo_error_default, Dynamo_Log, second, wait } from '@futdevpro/fsm-dynamo';
13
11
 
14
12
  import { DynamoNTS_SingletonService } from '../base/singleton.service';
15
13
  import { DynamoNTS_RouteSecurity } from '../../_enums/route-security.enum';
16
14
  import { DynamoNTS_RoutingModule } from '../route/routing-module.service';
17
15
  import { DynamoNTS_GlobalService } from '../core/global.service';
18
- import { DynamoNTS_PortSettings } from '../../_models/interfaces/port-settings.interface';
16
+ import { DynamoNTS_HttpSettings } from '../../_models/control-models/http-settings.control-model';
19
17
  import { DynamoNTS_CertificationSettings } from '../../_models/interfaces/certification-settings.interface';
20
18
  import { DynamoNTS_GlobalServiceSettings } from '../../_models/interfaces/global-service-settings.interface';
21
19
  import { dynamoNTS_globalSettings } from '../../_constants/global-settings.const';
@@ -197,8 +195,8 @@ export abstract class DynamoNTS_App extends DynamoNTS_SingletonService {
197
195
  private _security: DynamoNTS_RouteSecurity;
198
196
  protected get security(): DynamoNTS_RouteSecurity { return this._security; }
199
197
 
200
- protected _portSettings: DynamoNTS_PortSettings;
201
- protected get ports(): DynamoNTS_PortSettings { return this._portSettings; }
198
+ protected _portSettings: DynamoNTS_HttpSettings;
199
+ protected get portSettings(): DynamoNTS_HttpSettings { return this._portSettings; }
202
200
 
203
201
  private _cert?: DynamoNTS_CertificationSettings;
204
202
  protected get cert(): DynamoNTS_CertificationSettings { return this._cert; }
@@ -745,11 +743,50 @@ export abstract class DynamoNTS_App extends DynamoNTS_SingletonService {
745
743
  }
746
744
  }
747
745
 
746
+ private async expressErrorHandling(err, req, res, next): Promise<void> {
747
+ try {
748
+ if (err) {
749
+ if (DynamoNTS_GlobalService.globalErrorHandler) {
750
+ Dynamo_Log.error('unhandled express ERROR (must be a parsing error...)');
751
+ await DynamoNTS_GlobalService.globalErrorHandler?.(err, req, res);
752
+ } else {
753
+ Dynamo_Log.error('unhandled express ERROR (must be a parsing error...)', err);
754
+ }
755
+ } else {
756
+ Dynamo_Log.H_error(
757
+ 'WTF??? express error; without error?...' +
758
+ '\nerr:', err,
759
+ '\nreq:', req,
760
+ '\nres:', res
761
+ );
762
+ }
763
+
764
+ res.status(err?.status || 500);
765
+ res.render('error', {
766
+ message: err?.message,
767
+ });
768
+ res.send(err);
769
+ } catch (error) {
770
+ Dynamo_Log.H_error(
771
+ 'MULTILEVEL ERROR (expressErrorHandling)....', error
772
+ );
773
+
774
+ res.status(err?.status || 500);
775
+ res.render('error', {
776
+ message: err?.message,
777
+ });
778
+ res.send(err);
779
+ }
780
+ }
781
+
748
782
  /**
749
783
  *
750
784
  */
751
785
  private async mountSecureRoutes (): Promise<void> {
752
786
  if (this.logFn && this.deepLog) console.log('\nfn:. mountSecureRoutes');
787
+
788
+ this.openExpress.use(this.expressErrorHandling);
789
+
753
790
  await Dynamo_Array.asyncForEach(this._routingModules, async (module: DynamoNTS_RoutingModule) => {
754
791
  if (module.security !== DynamoNTS_RouteSecurity.open) {
755
792
  if (this.logSetup) {
@@ -789,16 +826,7 @@ export abstract class DynamoNTS_App extends DynamoNTS_SingletonService {
789
826
  private async mountOpenRoutes(): Promise<void> {
790
827
  if (this.logFn && this.deepLog) console.log('\nfn:. mountOpenRoutes');
791
828
 
792
- this.openExpress.use((err, req, res, next) => {
793
- if (err) {
794
- Dynamo_Log.error('openExpress ERROR', err);
795
- DynamoNTS_GlobalService.globalErrorHandler?.(err, req, res);
796
- } else {
797
- Dynamo_Log.H_error('WTF', err, req, res);
798
- }
799
-
800
- next();
801
- })
829
+ this.openExpress.use(this.expressErrorHandling);
802
830
 
803
831
  await Dynamo_Array.asyncForEach(this._routingModules, async (module: DynamoNTS_RoutingModule) => {
804
832
  if (module.security !== DynamoNTS_RouteSecurity.secure) {
@@ -875,51 +903,19 @@ export abstract class DynamoNTS_App extends DynamoNTS_SingletonService {
875
903
  }
876
904
 
877
905
  /**
878
- * #OUTDATED
879
- * Setting up App params, and preparing project global settings
880
- * You must setup app params in this function like this:
881
- *
882
- * @example
883
- * setupAppParams(): void {
884
- * this.params = new DynamoBEAppParams({
885
- * name: 'Sample Server',
886
- * title: 'A BIG nice header that will be logged on start',
887
- * version: version,
888
- * dbName: 'sampleapp',
889
- * });
890
- *
891
- * DBE_Global_S.setGlobalSettings({
892
- * defaultRouteSecurity: DynamoBERouteSecurity.secure,
893
- * logSetup: true,
894
- * });
895
- * }
906
+ * MISSING Description (TODO)
896
907
  */
897
908
  abstract getAppParams(): DynamoNTS_AppParams;
898
909
 
899
910
  /**
900
- * #OUTDATED
901
- * Setting up DBServices
902
- * You must setup globalServiceCollection and dbServices in this function
903
- *
904
- * @example
905
- * setGlobalServiceCollection(): void {
906
- * DBE_Global_S.setServices({
907
- * authService: AuthService.getInstance(),
908
- * emailServiceCollection: EmailServiceCollectionService.getInstance(),
909
- * dbModels: [
910
- * accountModelParams,
911
- * projectModelParams,
912
- * ...
913
- * ]
914
- * });
915
- * }
911
+ * MISSING Description (TODO)
916
912
  */
917
913
  abstract getGlobalServiceCollection(): DynamoNTS_GlobalServiceSettings;
918
914
 
919
915
  /**
920
916
  * MISSING Description (TODO)
921
917
  */
922
- abstract getPortSettings(): DynamoNTS_PortSettings;
918
+ abstract getPortSettings(): DynamoNTS_HttpSettings;
923
919
 
924
920
  /**
925
921
  * MISSING Description (TODO)
@@ -1 +0,0 @@
1
- {"version":3,"file":"port-settings.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/port-settings.interface.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,qBAAa,sBAAsB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,kBAAkB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAG/C;IACF,gBAAgB,CAAC,EAAE,UAAU,CAAC,WAAW,CAEvC;IACF,mBAAmB,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAGhD;IACF,iBAAiB,CAAC,EAAE,UAAU,CAAC,WAAW,CAExC;gBAGA,GAAG,EAAE,sBAAsB;CAI9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"port-settings.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/port-settings.interface.ts"],"names":[],"mappings":";;;AAEA,MAAa,sBAAsB;IACjC,QAAQ,CAAU;IAClB,SAAS,CAAU;IAEnB,kBAAkB,GAAkC;QAClD,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,gBAAgB,GAA4B;QAC1C,KAAK,EAAE,MAAM;KACd,CAAC;IACF,mBAAmB,GAAkC;QACnD,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,IAAI;KACf,CAAC;IACF,iBAAiB,GAA4B;QAC3C,KAAK,EAAE,MAAM;KACd,CAAC;IAEF,YACE,GAA2B;QAE3B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;CACF;AAxBD,wDAwBC"}