@futdevpro/nts-dynamo 1.9.15 → 1.9.16
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/.copilot/patterns.json +7 -7
- package/.github/workflows/main.yml +206 -0
- package/HOWTO.md +15 -15
- package/README.md +140 -140
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +2 -0
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/control-models/socket-event.control-model.js +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +1 -0
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/route/routing-module.service.d.ts +1 -0
- package/build/_services/route/routing-module.service.d.ts.map +1 -1
- package/build/_services/route/routing-module.service.js +17 -23
- package/build/_services/route/routing-module.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +4 -1
- package/build/_services/server/app.server.js.map +1 -1
- package/build/_services/socket/socket-client.service.d.ts.map +1 -1
- package/build/_services/socket/socket-client.service.js +1 -0
- package/build/_services/socket/socket-client.service.js.map +1 -1
- package/nodemon.json +17 -15
- package/package.json +5 -5
- package/src/_constants/global-settings.const.ts +27 -27
- package/src/_constants/index.ts +2 -2
- package/src/_constants/mocks/app-extended-server.mock.ts +198 -198
- package/src/_constants/mocks/app-params.mock.ts +9 -9
- package/src/_constants/mocks/app-server.mock.ts +185 -185
- package/src/_constants/mocks/auth-service.mock.ts +28 -28
- package/src/_constants/mocks/controller.mock.ts +16 -16
- package/src/_constants/mocks/data-model.mock.ts +83 -83
- package/src/_constants/mocks/email-service-collection.mock.ts +13 -13
- package/src/_constants/mocks/email-service.mock.ts +19 -19
- package/src/_constants/mocks/email-template.mock.html +14 -14
- package/src/_constants/mocks/endpoint.mock.ts +90 -90
- package/src/_constants/mocks/socket-client.mock.ts +43 -43
- package/src/_constants/mocks/socket-server.mock.ts +43 -43
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +15 -15
- package/src/_enums/http/http-call-type.enum.ts +12 -12
- package/src/_enums/http/http-response-type.enum.ts +7 -7
- package/src/_enums/http/socket-event-type.enum.ts +18 -18
- package/src/_enums/index.ts +13 -13
- package/src/_enums/predefined-data-types.enum.ts +27 -27
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_enums/socket-security.enum.ts +11 -11
- package/src/_models/control-models/api-call-params.control-model.ts +126 -126
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.ts +45 -45
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.ts +309 -307
- package/src/_models/control-models/http-settings.control-model.ts +29 -29
- package/src/_models/control-models/index.ts +13 -13
- package/src/_models/control-models/socket-client-service-params.control-model.ts +28 -28
- package/src/_models/control-models/socket-event.control-model.ts +150 -150
- package/src/_models/control-models/socket-presence.control-model.ts +207 -207
- package/src/_models/control-models/socket-server-service-params.control-model.ts +20 -20
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/index.ts +9 -9
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/global-service-settings.interface.ts +45 -45
- package/src/_models/interfaces/global-settings.interface.ts +83 -83
- package/src/_models/interfaces/index.ts +7 -7
- package/src/_models/interfaces/routing-module-settings.interface.ts +20 -20
- package/src/_models/types/db-filter.type.ts +108 -108
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_models/types/index.ts +5 -5
- package/src/_modules/api-service.index.ts +12 -12
- package/src/_modules/app-extended.index.ts +28 -28
- package/src/_modules/app.index.ts +24 -24
- package/src/_modules/auth.index.ts +7 -7
- package/src/_modules/constants.index.ts +2 -2
- package/src/_modules/controller.index.ts +10 -10
- package/src/_modules/custom-data/custom-data.controller.ts +69 -69
- package/src/_modules/custom-data/custom-data.data-service.ts +20 -20
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +23 -23
- package/src/_modules/custom-data/index.ts +6 -6
- package/src/_modules/custom-data-module.index.ts +2 -2
- package/src/_modules/data-service.index.ts +9 -9
- package/src/_modules/email.index.ts +8 -8
- package/src/_modules/enums.index.ts +2 -2
- package/src/_modules/extended.index.ts +8 -8
- package/src/_modules/models.index.ts +2 -2
- package/src/_modules/services.index.ts +2 -2
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +5 -5
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/test-module.index.ts +2 -2
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +7 -7
- package/src/_modules/usage/usage.controller.ts +120 -120
- package/src/_modules/usage/usage.data-service.ts +172 -172
- package/src/_modules/usage-module.index.ts +2 -2
- package/src/_services/base/data.service.ts +921 -921
- package/src/_services/base/db.service.spec.ts +32 -32
- package/src/_services/base/db.service.ts +1063 -1063
- package/src/_services/base/singleton.service.ts +21 -21
- package/src/_services/core/api.service.ts +453 -453
- package/src/_services/core/auth.service.ts +172 -172
- package/src/_services/core/email.service.ts +678 -678
- package/src/_services/core/global.service.ts +270 -269
- package/src/_services/core/service-collection.service.ts +5 -5
- package/src/_services/index.ts +23 -23
- package/src/_services/route/controller.service.ts +129 -129
- package/src/_services/route/routing-module.service.ts +293 -273
- package/src/_services/server/app-extended.server.spec.ts +76 -76
- package/src/_services/server/app-extended.server.ts +520 -520
- package/src/_services/server/app.server.spec.ts +67 -67
- package/src/_services/server/app.server.ts +1181 -1179
- package/src/_services/shared.service.spec.ts +19 -19
- package/src/_services/shared.static-service.ts +73 -73
- package/src/_services/socket/socket-client.service.ts +236 -235
- package/src/_services/socket/socket-server.service.spec.ts +11 -11
- package/src/_services/socket/socket-server.service.ts +761 -761
- package/src/index.ts +18 -18
- package/tsconfig.json +41 -41
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -1,207 +1,207 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
DynamoFM_AnyError, DynamoFM_Error, DynamoFM_Error_Settings, DynamoFM_Log
|
|
4
|
-
} from '@futdevpro/fsm-dynamo';
|
|
5
|
-
import * as SocketIO from 'socket.io';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* socket handling and clarification is under development
|
|
9
|
-
*/
|
|
10
|
-
export class DynamoNTS_SocketPresence {
|
|
11
|
-
/**
|
|
12
|
-
* this is the presence ID which is used to getand handle the presence
|
|
13
|
-
* usually the service master identifier such as userID
|
|
14
|
-
* */
|
|
15
|
-
issuerId: string;
|
|
16
|
-
serviceName?: string = 'unknown';
|
|
17
|
-
onDestroy?: (issuerId: string) => void = (): void => {};
|
|
18
|
-
|
|
19
|
-
defaultErrorUserMsg?: string =
|
|
20
|
-
`We encountered an unhandled Socket Error, ` +
|
|
21
|
-
`\nplease contact the responsible development team.`;
|
|
22
|
-
|
|
23
|
-
sockets: SocketIO.Socket[] = [];
|
|
24
|
-
|
|
25
|
-
constructor(
|
|
26
|
-
set: {
|
|
27
|
-
/**
|
|
28
|
-
* this is the presence ID which is used to get and set handle the presence/sockets
|
|
29
|
-
* usually the service master identifier such as userID
|
|
30
|
-
* */
|
|
31
|
-
issuerId: string,
|
|
32
|
-
serviceName?: string,
|
|
33
|
-
onDestroy?: (issuerId: string) => void,
|
|
34
|
-
|
|
35
|
-
defaultErrorUserMsg?: string,
|
|
36
|
-
sockets: SocketIO.Socket[],
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* this is the issuer ID which is used to register data changes,
|
|
40
|
-
* usually the main master identifier such as accountID
|
|
41
|
-
*/
|
|
42
|
-
issuer: string,
|
|
43
|
-
}
|
|
44
|
-
) {
|
|
45
|
-
if (!set?.issuerId) {
|
|
46
|
-
throw new DynamoFM_Error({
|
|
47
|
-
...this._getDefaultErrorSettings(
|
|
48
|
-
'constructor',
|
|
49
|
-
new Error(
|
|
50
|
-
`trying to create DynamoNTS_SocketPresence without a valid issuerId!` +
|
|
51
|
-
`\nset: ${JSON.stringify(set)}`
|
|
52
|
-
),
|
|
53
|
-
set?.issuer
|
|
54
|
-
),
|
|
55
|
-
|
|
56
|
-
errorCode: 'NTS-SD0-C00',
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
this.issuerId = set.issuerId;
|
|
61
|
-
|
|
62
|
-
if (set.serviceName) {
|
|
63
|
-
this.serviceName = set.serviceName;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (set.onDestroy) {
|
|
67
|
-
this.onDestroy = set.onDestroy;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (set.defaultErrorUserMsg) {
|
|
71
|
-
this.defaultErrorUserMsg = set.defaultErrorUserMsg;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (!set?.sockets?.length) {
|
|
75
|
-
throw new DynamoFM_Error({
|
|
76
|
-
...this._getDefaultErrorSettings(
|
|
77
|
-
'constructor',
|
|
78
|
-
new Error(
|
|
79
|
-
`trying to create DynamoNTS_SocketPresence without a single active socket!` +
|
|
80
|
-
`\nissuerId: ${this.issuerId}`
|
|
81
|
-
),
|
|
82
|
-
set?.issuer
|
|
83
|
-
),
|
|
84
|
-
|
|
85
|
-
errorCode: 'NTS-SD0-C01',
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
this.sockets = set.sockets;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Emits event on all sockets
|
|
94
|
-
* @param event
|
|
95
|
-
* @param content
|
|
96
|
-
*/
|
|
97
|
-
emitEvent?(event: string, content: any, issuer: string): void {
|
|
98
|
-
/* let anyFailed: boolean = false; */
|
|
99
|
-
const errors: any = [];
|
|
100
|
-
const inactiveSockets: SocketIO.Socket[] = [];
|
|
101
|
-
|
|
102
|
-
this.sockets.forEach((socket: SocketIO.Socket, index: number) => {
|
|
103
|
-
if (!socket.connected) {
|
|
104
|
-
DynamoFM_Log.warn(
|
|
105
|
-
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!` +
|
|
106
|
-
`\nERROR: socket[${socket.id}] is not connected! (it will be removed...)`
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
/* errors.push(
|
|
110
|
-
new DynamoFM_Error({
|
|
111
|
-
status: 500,
|
|
112
|
-
errorCode: 'NTS-SPC-EE1',
|
|
113
|
-
addECToUserMsg: true,
|
|
114
|
-
message:
|
|
115
|
-
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!`+
|
|
116
|
-
`\nERROR: socket[${socket.id}] is not connected!`,
|
|
117
|
-
userMessage: 'We encountered an unhandled Server Error, please contact the responsible development team.',
|
|
118
|
-
})
|
|
119
|
-
); */
|
|
120
|
-
|
|
121
|
-
inactiveSockets.push(socket);
|
|
122
|
-
socket?.disconnect(true);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
/* this.sockets.forEach((socket: SocketIO.Socket, index: number) => {
|
|
127
|
-
if (!socket) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (inactiveSockets.includes(socket) || !socket?.connected) {
|
|
131
|
-
socket.TRY RECONNECT
|
|
132
|
-
} */
|
|
133
|
-
|
|
134
|
-
this.sockets = this.sockets.filter(
|
|
135
|
-
(socket): boolean => !inactiveSockets.includes(socket) && socket?.connected
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
this.sockets.forEach((socket: SocketIO.Socket, index: number): void => {
|
|
139
|
-
const success: boolean = socket.emit(event, content, (error): void => {
|
|
140
|
-
DynamoFM_Log.error(
|
|
141
|
-
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!(0)` +
|
|
142
|
-
`\nerror:`, error
|
|
143
|
-
);
|
|
144
|
-
errors.push(error);
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
if (!success) {
|
|
148
|
-
DynamoFM_Log.error(
|
|
149
|
-
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!(1)`
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
if (0 < errors.length) {
|
|
155
|
-
throw new DynamoFM_Error({
|
|
156
|
-
...this._getDefaultErrorSettings(
|
|
157
|
-
'emitEvent',
|
|
158
|
-
new Error(
|
|
159
|
-
`Emitting event '${event}' on socket(s)(${this.serviceName}) failed!`+
|
|
160
|
-
`\n${errors.length} errors occured!`
|
|
161
|
-
),
|
|
162
|
-
issuer
|
|
163
|
-
),
|
|
164
|
-
|
|
165
|
-
status: 500,
|
|
166
|
-
errorCode: 'NTS-SPC-EE2',
|
|
167
|
-
additionalContent: {
|
|
168
|
-
inactiveSockets: inactiveSockets,
|
|
169
|
-
errors: errors,
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
} else if (this.sockets.length === 0) {
|
|
174
|
-
throw new DynamoFM_Error({
|
|
175
|
-
...this._getDefaultErrorSettings(
|
|
176
|
-
'emitEvent',
|
|
177
|
-
new Error(
|
|
178
|
-
`Emitting event '${event}' on socket(s)(${this.serviceName}) failed!`+
|
|
179
|
-
`\n No more sockets left connected!`
|
|
180
|
-
),
|
|
181
|
-
issuer
|
|
182
|
-
),
|
|
183
|
-
|
|
184
|
-
status: 404,
|
|
185
|
-
errorCode: 'NTS-SPC-EE3',
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
private _getDefaultErrorSettings(
|
|
191
|
-
fnName: string,
|
|
192
|
-
error: DynamoFM_AnyError,
|
|
193
|
-
issuer: string
|
|
194
|
-
): DynamoFM_Error_Settings {
|
|
195
|
-
return {
|
|
196
|
-
status: (error as DynamoFM_Error)?.___status ?? 406,
|
|
197
|
-
message: (error as Error)?.message ?? `${fnName} was UNSUCCESFUL (NTS; ${this.serviceName})`,
|
|
198
|
-
userMessage: (error as DynamoFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
|
|
199
|
-
issuerService: this.serviceName + ` (${this?.constructor?.name}-DynamoNTS_SocketPresence)`,
|
|
200
|
-
addECToUserMsg: !(error as DynamoFM_Error)?.__userMessage,
|
|
201
|
-
issuer: issuer,
|
|
202
|
-
error: error,
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
DynamoFM_AnyError, DynamoFM_Error, DynamoFM_Error_Settings, DynamoFM_Log
|
|
4
|
+
} from '@futdevpro/fsm-dynamo';
|
|
5
|
+
import * as SocketIO from 'socket.io';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* socket handling and clarification is under development
|
|
9
|
+
*/
|
|
10
|
+
export class DynamoNTS_SocketPresence {
|
|
11
|
+
/**
|
|
12
|
+
* this is the presence ID which is used to getand handle the presence
|
|
13
|
+
* usually the service master identifier such as userID
|
|
14
|
+
* */
|
|
15
|
+
issuerId: string;
|
|
16
|
+
serviceName?: string = 'unknown';
|
|
17
|
+
onDestroy?: (issuerId: string) => void = (): void => {};
|
|
18
|
+
|
|
19
|
+
defaultErrorUserMsg?: string =
|
|
20
|
+
`We encountered an unhandled Socket Error, ` +
|
|
21
|
+
`\nplease contact the responsible development team.`;
|
|
22
|
+
|
|
23
|
+
sockets: SocketIO.Socket[] = [];
|
|
24
|
+
|
|
25
|
+
constructor(
|
|
26
|
+
set: {
|
|
27
|
+
/**
|
|
28
|
+
* this is the presence ID which is used to get and set handle the presence/sockets
|
|
29
|
+
* usually the service master identifier such as userID
|
|
30
|
+
* */
|
|
31
|
+
issuerId: string,
|
|
32
|
+
serviceName?: string,
|
|
33
|
+
onDestroy?: (issuerId: string) => void,
|
|
34
|
+
|
|
35
|
+
defaultErrorUserMsg?: string,
|
|
36
|
+
sockets: SocketIO.Socket[],
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* this is the issuer ID which is used to register data changes,
|
|
40
|
+
* usually the main master identifier such as accountID
|
|
41
|
+
*/
|
|
42
|
+
issuer: string,
|
|
43
|
+
}
|
|
44
|
+
) {
|
|
45
|
+
if (!set?.issuerId) {
|
|
46
|
+
throw new DynamoFM_Error({
|
|
47
|
+
...this._getDefaultErrorSettings(
|
|
48
|
+
'constructor',
|
|
49
|
+
new Error(
|
|
50
|
+
`trying to create DynamoNTS_SocketPresence without a valid issuerId!` +
|
|
51
|
+
`\nset: ${JSON.stringify(set)}`
|
|
52
|
+
),
|
|
53
|
+
set?.issuer
|
|
54
|
+
),
|
|
55
|
+
|
|
56
|
+
errorCode: 'NTS-SD0-C00',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
this.issuerId = set.issuerId;
|
|
61
|
+
|
|
62
|
+
if (set.serviceName) {
|
|
63
|
+
this.serviceName = set.serviceName;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (set.onDestroy) {
|
|
67
|
+
this.onDestroy = set.onDestroy;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (set.defaultErrorUserMsg) {
|
|
71
|
+
this.defaultErrorUserMsg = set.defaultErrorUserMsg;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (!set?.sockets?.length) {
|
|
75
|
+
throw new DynamoFM_Error({
|
|
76
|
+
...this._getDefaultErrorSettings(
|
|
77
|
+
'constructor',
|
|
78
|
+
new Error(
|
|
79
|
+
`trying to create DynamoNTS_SocketPresence without a single active socket!` +
|
|
80
|
+
`\nissuerId: ${this.issuerId}`
|
|
81
|
+
),
|
|
82
|
+
set?.issuer
|
|
83
|
+
),
|
|
84
|
+
|
|
85
|
+
errorCode: 'NTS-SD0-C01',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
this.sockets = set.sockets;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Emits event on all sockets
|
|
94
|
+
* @param event
|
|
95
|
+
* @param content
|
|
96
|
+
*/
|
|
97
|
+
emitEvent?(event: string, content: any, issuer: string): void {
|
|
98
|
+
/* let anyFailed: boolean = false; */
|
|
99
|
+
const errors: any = [];
|
|
100
|
+
const inactiveSockets: SocketIO.Socket[] = [];
|
|
101
|
+
|
|
102
|
+
this.sockets.forEach((socket: SocketIO.Socket, index: number) => {
|
|
103
|
+
if (!socket.connected) {
|
|
104
|
+
DynamoFM_Log.warn(
|
|
105
|
+
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!` +
|
|
106
|
+
`\nERROR: socket[${socket.id}] is not connected! (it will be removed...)`
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
/* errors.push(
|
|
110
|
+
new DynamoFM_Error({
|
|
111
|
+
status: 500,
|
|
112
|
+
errorCode: 'NTS-SPC-EE1',
|
|
113
|
+
addECToUserMsg: true,
|
|
114
|
+
message:
|
|
115
|
+
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!`+
|
|
116
|
+
`\nERROR: socket[${socket.id}] is not connected!`,
|
|
117
|
+
userMessage: 'We encountered an unhandled Server Error, please contact the responsible development team.',
|
|
118
|
+
})
|
|
119
|
+
); */
|
|
120
|
+
|
|
121
|
+
inactiveSockets.push(socket);
|
|
122
|
+
socket?.disconnect(true);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
/* this.sockets.forEach((socket: SocketIO.Socket, index: number) => {
|
|
127
|
+
if (!socket) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (inactiveSockets.includes(socket) || !socket?.connected) {
|
|
131
|
+
socket.TRY RECONNECT
|
|
132
|
+
} */
|
|
133
|
+
|
|
134
|
+
this.sockets = this.sockets.filter(
|
|
135
|
+
(socket): boolean => !inactiveSockets.includes(socket) && socket?.connected
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
this.sockets.forEach((socket: SocketIO.Socket, index: number): void => {
|
|
139
|
+
const success: boolean = socket.emit(event, content, (error): void => {
|
|
140
|
+
DynamoFM_Log.error(
|
|
141
|
+
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!(0)` +
|
|
142
|
+
`\nerror:`, error
|
|
143
|
+
);
|
|
144
|
+
errors.push(error);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
if (!success) {
|
|
148
|
+
DynamoFM_Log.error(
|
|
149
|
+
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!(1)`
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
if (0 < errors.length) {
|
|
155
|
+
throw new DynamoFM_Error({
|
|
156
|
+
...this._getDefaultErrorSettings(
|
|
157
|
+
'emitEvent',
|
|
158
|
+
new Error(
|
|
159
|
+
`Emitting event '${event}' on socket(s)(${this.serviceName}) failed!`+
|
|
160
|
+
`\n${errors.length} errors occured!`
|
|
161
|
+
),
|
|
162
|
+
issuer
|
|
163
|
+
),
|
|
164
|
+
|
|
165
|
+
status: 500,
|
|
166
|
+
errorCode: 'NTS-SPC-EE2',
|
|
167
|
+
additionalContent: {
|
|
168
|
+
inactiveSockets: inactiveSockets,
|
|
169
|
+
errors: errors,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
} else if (this.sockets.length === 0) {
|
|
174
|
+
throw new DynamoFM_Error({
|
|
175
|
+
...this._getDefaultErrorSettings(
|
|
176
|
+
'emitEvent',
|
|
177
|
+
new Error(
|
|
178
|
+
`Emitting event '${event}' on socket(s)(${this.serviceName}) failed!`+
|
|
179
|
+
`\n No more sockets left connected!`
|
|
180
|
+
),
|
|
181
|
+
issuer
|
|
182
|
+
),
|
|
183
|
+
|
|
184
|
+
status: 404,
|
|
185
|
+
errorCode: 'NTS-SPC-EE3',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private _getDefaultErrorSettings(
|
|
191
|
+
fnName: string,
|
|
192
|
+
error: DynamoFM_AnyError,
|
|
193
|
+
issuer: string
|
|
194
|
+
): DynamoFM_Error_Settings {
|
|
195
|
+
return {
|
|
196
|
+
status: (error as DynamoFM_Error)?.___status ?? 406,
|
|
197
|
+
message: (error as Error)?.message ?? `${fnName} was UNSUCCESFUL (NTS; ${this.serviceName})`,
|
|
198
|
+
userMessage: (error as DynamoFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
|
|
199
|
+
issuerService: this.serviceName + ` (${this?.constructor?.name}-DynamoNTS_SocketPresence)`,
|
|
200
|
+
addECToUserMsg: !(error as DynamoFM_Error)?.__userMessage,
|
|
201
|
+
issuer: issuer,
|
|
202
|
+
error: error,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import { DynamoNTS_globalSettings } from '../../_constants/global-settings.const';
|
|
3
|
-
import { DynamoNTS_SocketSecurity } from '../../_enums/socket-security.enum';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* socket handling and clarification is under development
|
|
7
|
-
*/
|
|
8
|
-
export class DynamoNTS_SocketServerService_Params<T = any> {
|
|
9
|
-
name: string;
|
|
10
|
-
port: number;
|
|
11
|
-
security?: DynamoNTS_SocketSecurity;
|
|
12
|
-
|
|
13
|
-
constructor(
|
|
14
|
-
set: DynamoNTS_SocketServerService_Params<T>
|
|
15
|
-
) {
|
|
16
|
-
this.name = set.name;
|
|
17
|
-
this.port = set.port;
|
|
18
|
-
this.security = set.security ? set.security : DynamoNTS_globalSettings.defaultSocketSecurity;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
|
|
2
|
+
import { DynamoNTS_globalSettings } from '../../_constants/global-settings.const';
|
|
3
|
+
import { DynamoNTS_SocketSecurity } from '../../_enums/socket-security.enum';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* socket handling and clarification is under development
|
|
7
|
+
*/
|
|
8
|
+
export class DynamoNTS_SocketServerService_Params<T = any> {
|
|
9
|
+
name: string;
|
|
10
|
+
port: number;
|
|
11
|
+
security?: DynamoNTS_SocketSecurity;
|
|
12
|
+
|
|
13
|
+
constructor(
|
|
14
|
+
set: DynamoNTS_SocketServerService_Params<T>
|
|
15
|
+
) {
|
|
16
|
+
this.name = set.name;
|
|
17
|
+
this.port = set.port;
|
|
18
|
+
this.security = set.security ? set.security : DynamoNTS_globalSettings.defaultSocketSecurity;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export class DynamoNTS_SystemControl {
|
|
5
|
-
init: boolean = false;
|
|
6
|
-
started: boolean = false;
|
|
7
|
-
|
|
8
|
-
getReady(): boolean {
|
|
9
|
-
return this.init ? this.started : true;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export class DynamoNTS_SystemControl {
|
|
5
|
+
init: boolean = false;
|
|
6
|
+
started: boolean = false;
|
|
7
|
+
|
|
8
|
+
getReady(): boolean {
|
|
9
|
+
return this.init ? this.started : true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
package/src/_models/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
// INTERFACES
|
|
3
|
-
export * from './interfaces';
|
|
4
|
-
|
|
5
|
-
// CONTROL MODELS
|
|
6
|
-
export * from './control-models';
|
|
7
|
-
|
|
8
|
-
// TYPES
|
|
9
|
-
export * from './types';
|
|
1
|
+
|
|
2
|
+
// INTERFACES
|
|
3
|
+
export * from './interfaces';
|
|
4
|
+
|
|
5
|
+
// CONTROL MODELS
|
|
6
|
+
export * from './control-models';
|
|
7
|
+
|
|
8
|
+
// TYPES
|
|
9
|
+
export * from './types';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import * as FileSystem from 'fs';
|
|
3
|
-
|
|
4
|
-
export interface DynamoNTS_Certification_Settings {
|
|
5
|
-
keyPath: FileSystem.PathLike,
|
|
6
|
-
certPath: FileSystem.PathLike,
|
|
7
|
-
}
|
|
1
|
+
|
|
2
|
+
import * as FileSystem from 'fs';
|
|
3
|
+
|
|
4
|
+
export interface DynamoNTS_Certification_Settings {
|
|
5
|
+
keyPath: FileSystem.PathLike,
|
|
6
|
+
certPath: FileSystem.PathLike,
|
|
7
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { Request, Response } from 'express';
|
|
6
|
-
|
|
7
|
-
import { DynamoFM_DataModel_Params } from '@futdevpro/fsm-dynamo';
|
|
8
|
-
|
|
9
|
-
import { DynamoNTS_Service_Collection } from '../../_services/core/service-collection.service';
|
|
10
|
-
import { DynamoNTS_EmailService } from '../../_services/core/email.service';
|
|
11
|
-
import { DynamoNTS_AuthService } from '../../_services/core/auth.service';
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export interface DynamoNTS_GlobalService_Settings {
|
|
15
|
-
/**
|
|
16
|
-
* You need to setup your Own Auth Service extending the DynamoNTS_AuthService class
|
|
17
|
-
*/
|
|
18
|
-
authService: DynamoNTS_AuthService,
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* You can setup your Own Email Service extending the DynamoNTS_EmailServiceCollection class
|
|
22
|
-
*/
|
|
23
|
-
emailServiceCollection?: DynamoNTS_Service_Collection<DynamoNTS_EmailService>,
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* you can setup data tables by passing a DynamoFM_DataModel_Params list at this point
|
|
27
|
-
*/
|
|
28
|
-
dbModels?: DynamoFM_DataModel_Params[],
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* you can setup other services by passing a DynamoNTS_SingletonService list at this point
|
|
32
|
-
*/
|
|
33
|
-
/* simpleServicesCollection?: DynamoNTS_SimpleServiceCollection, */
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* you can setup socket services by passing a DynamoNTS_SocketServiceCollection list at this point
|
|
37
|
-
*/
|
|
38
|
-
/* socketServiceCollection?: DynamoNTS_SocketServiceCollection, */
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* you can setup global error handler by passing a function at this point
|
|
42
|
-
*/
|
|
43
|
-
errorHandler?: (err: any, req?: Request, res?: Response, issuer?: string) => Promise<void>,
|
|
44
|
-
}
|
|
45
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
import { Request, Response } from 'express';
|
|
6
|
+
|
|
7
|
+
import { DynamoFM_DataModel_Params } from '@futdevpro/fsm-dynamo';
|
|
8
|
+
|
|
9
|
+
import { DynamoNTS_Service_Collection } from '../../_services/core/service-collection.service';
|
|
10
|
+
import { DynamoNTS_EmailService } from '../../_services/core/email.service';
|
|
11
|
+
import { DynamoNTS_AuthService } from '../../_services/core/auth.service';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
export interface DynamoNTS_GlobalService_Settings {
|
|
15
|
+
/**
|
|
16
|
+
* You need to setup your Own Auth Service extending the DynamoNTS_AuthService class
|
|
17
|
+
*/
|
|
18
|
+
authService: DynamoNTS_AuthService,
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* You can setup your Own Email Service extending the DynamoNTS_EmailServiceCollection class
|
|
22
|
+
*/
|
|
23
|
+
emailServiceCollection?: DynamoNTS_Service_Collection<DynamoNTS_EmailService>,
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* you can setup data tables by passing a DynamoFM_DataModel_Params list at this point
|
|
27
|
+
*/
|
|
28
|
+
dbModels?: DynamoFM_DataModel_Params[],
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* you can setup other services by passing a DynamoNTS_SingletonService list at this point
|
|
32
|
+
*/
|
|
33
|
+
/* simpleServicesCollection?: DynamoNTS_SimpleServiceCollection, */
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* you can setup socket services by passing a DynamoNTS_SocketServiceCollection list at this point
|
|
37
|
+
*/
|
|
38
|
+
/* socketServiceCollection?: DynamoNTS_SocketServiceCollection, */
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* you can setup global error handler by passing a function at this point
|
|
42
|
+
*/
|
|
43
|
+
errorHandler?: (err: any, req?: Request, res?: Response, issuer?: string) => Promise<void>,
|
|
44
|
+
}
|
|
45
|
+
|