@futdevpro/fsm-dynamo 1.5.56 → 1.5.59

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 (111) hide show
  1. package/lib/_constants/error-defaults.const.d.ts +3 -0
  2. package/lib/_constants/error-defaults.const.d.ts.map +1 -0
  3. package/lib/_constants/error-defaults.const.js +12 -0
  4. package/lib/_constants/error-defaults.const.js.map +1 -0
  5. package/lib/_constants/index.d.ts +1 -0
  6. package/lib/_constants/index.d.ts.map +1 -1
  7. package/lib/_constants/index.js +1 -0
  8. package/lib/_constants/index.js.map +1 -1
  9. package/lib/_enums/basic-property-type.enum.d.ts +1 -1
  10. package/lib/_enums/basic-property-type.enum.d.ts.map +1 -1
  11. package/lib/_enums/basic-property-type.enum.js +9 -9
  12. package/lib/_enums/basic-property-type.enum.js.map +1 -1
  13. package/lib/_enums/data-model-type.enum.d.ts +1 -1
  14. package/lib/_enums/data-model-type.enum.d.ts.map +1 -1
  15. package/lib/_enums/data-model-type.enum.js +7 -7
  16. package/lib/_enums/data-model-type.enum.js.map +1 -1
  17. package/lib/_enums/log-style.enum.d.ts +1 -1
  18. package/lib/_enums/log-style.enum.d.ts.map +1 -1
  19. package/lib/_enums/log-style.enum.js +27 -27
  20. package/lib/_enums/log-style.enum.js.map +1 -1
  21. package/lib/_enums/region.enum.d.ts +1 -1
  22. package/lib/_enums/region.enum.d.ts.map +1 -1
  23. package/lib/_enums/region.enum.js +9 -9
  24. package/lib/_enums/region.enum.js.map +1 -1
  25. package/lib/_enums/sub-region.enum.d.ts +1 -1
  26. package/lib/_enums/sub-region.enum.d.ts.map +1 -1
  27. package/lib/_enums/sub-region.enum.js +21 -21
  28. package/lib/_enums/sub-region.enum.js.map +1 -1
  29. package/lib/_enums/subdivision-region-type.enum.d.ts +1 -1
  30. package/lib/_enums/subdivision-region-type.enum.d.ts.map +1 -1
  31. package/lib/_enums/subdivision-region-type.enum.js +42 -42
  32. package/lib/_enums/subdivision-region-type.enum.js.map +1 -1
  33. package/lib/_models/control-models/data-params.control-model.d.ts +2 -2
  34. package/lib/_models/control-models/data-params.control-model.d.ts.map +1 -1
  35. package/lib/_models/control-models/data-params.control-model.js +2 -2
  36. package/lib/_models/control-models/data-params.control-model.js.map +1 -1
  37. package/lib/_models/control-models/data-property-params.control-model.d.ts +2 -2
  38. package/lib/_models/control-models/data-property-params.control-model.d.ts.map +1 -1
  39. package/lib/_models/control-models/data-property-params.control-model.js +5 -5
  40. package/lib/_models/control-models/data-property-params.control-model.js.map +1 -1
  41. package/lib/_models/control-models/error.control-model.d.ts +26 -17
  42. package/lib/_models/control-models/error.control-model.d.ts.map +1 -1
  43. package/lib/_models/control-models/error.control-model.js +70 -88
  44. package/lib/_models/control-models/error.control-model.js.map +1 -1
  45. package/lib/_models/control-models/error.control-model.spec.d.ts +2 -0
  46. package/lib/_models/control-models/error.control-model.spec.d.ts.map +1 -0
  47. package/lib/_models/control-models/error.control-model.spec.js +272 -0
  48. package/lib/_models/control-models/error.control-model.spec.js.map +1 -0
  49. package/lib/_models/control-models/poll.control-model.d.ts.map +1 -1
  50. package/lib/_models/control-models/poll.control-model.js +0 -2
  51. package/lib/_models/control-models/poll.control-model.js.map +1 -1
  52. package/lib/_models/data-models/metadata.data-model.d.ts +7 -1
  53. package/lib/_models/data-models/metadata.data-model.d.ts.map +1 -1
  54. package/lib/_models/data-models/metadata.data-model.js +39 -3
  55. package/lib/_models/data-models/metadata.data-model.js.map +1 -1
  56. package/lib/_models/interfaces/error-defaults.interface.d.ts +9 -0
  57. package/lib/_models/interfaces/error-defaults.interface.d.ts.map +1 -0
  58. package/lib/_models/interfaces/error-defaults.interface.js +3 -0
  59. package/lib/_models/interfaces/error-defaults.interface.js.map +1 -0
  60. package/lib/_models/interfaces/index.d.ts +1 -0
  61. package/lib/_models/interfaces/index.d.ts.map +1 -1
  62. package/lib/_models/interfaces/index.js +1 -0
  63. package/lib/_models/interfaces/index.js.map +1 -1
  64. package/lib/_models/interfaces/location/country-iso.interface.d.ts +4 -4
  65. package/lib/_models/interfaces/location/country-iso.interface.d.ts.map +1 -1
  66. package/lib/_models/interfaces/location/division-region-data.interface.d.ts +2 -2
  67. package/lib/_models/interfaces/location/division-region-data.interface.d.ts.map +1 -1
  68. package/lib/_modules/error-module.index.d.ts +2 -0
  69. package/lib/_modules/error-module.index.d.ts.map +1 -1
  70. package/lib/_modules/error-module.index.js +2 -0
  71. package/lib/_modules/error-module.index.js.map +1 -1
  72. package/lib/_utils/array.util.d.ts +2 -2
  73. package/lib/_utils/array.util.d.ts.map +1 -1
  74. package/lib/_utils/array.util.js +2 -2
  75. package/lib/_utils/array.util.js.map +1 -1
  76. package/lib/_utils/log.util.d.ts +5 -3
  77. package/lib/_utils/log.util.d.ts.map +1 -1
  78. package/lib/_utils/log.util.js +23 -12
  79. package/lib/_utils/log.util.js.map +1 -1
  80. package/lib/_utils/regions.util.d.ts +2 -2
  81. package/lib/_utils/regions.util.d.ts.map +1 -1
  82. package/lib/_utils/regions.util.js.map +1 -1
  83. package/lib/_utils/utilities.util.d.ts +4 -0
  84. package/lib/_utils/utilities.util.d.ts.map +1 -1
  85. package/lib/_utils/utilities.util.js +5 -1
  86. package/lib/_utils/utilities.util.js.map +1 -1
  87. package/lib/tsconfig.tsbuildinfo +156 -92
  88. package/package.json +1 -1
  89. package/src/_constants/error-defaults.const.ts +11 -0
  90. package/src/_constants/index.ts +1 -0
  91. package/src/_enums/basic-property-type.enum.ts +1 -1
  92. package/src/_enums/data-model-type.enum.ts +1 -1
  93. package/src/_enums/log-style.enum.ts +1 -1
  94. package/src/_enums/region.enum.ts +1 -1
  95. package/src/_enums/sub-region.enum.ts +1 -1
  96. package/src/_enums/subdivision-region-type.enum.ts +1 -1
  97. package/src/_models/control-models/data-params.control-model.ts +4 -4
  98. package/src/_models/control-models/data-property-params.control-model.ts +7 -7
  99. package/src/_models/control-models/error.control-model.spec.ts +345 -0
  100. package/src/_models/control-models/error.control-model.ts +106 -110
  101. package/src/_models/control-models/poll.control-model.ts +0 -2
  102. package/src/_models/data-models/metadata.data-model.ts +49 -4
  103. package/src/_models/interfaces/error-defaults.interface.ts +11 -0
  104. package/src/_models/interfaces/index.ts +1 -0
  105. package/src/_models/interfaces/location/country-iso.interface.ts +4 -4
  106. package/src/_models/interfaces/location/division-region-data.interface.ts +2 -2
  107. package/src/_modules/error-module.index.ts +2 -0
  108. package/src/_utils/array.util.ts +6 -4
  109. package/src/_utils/log.util.ts +30 -17
  110. package/src/_utils/regions.util.ts +3 -3
  111. package/src/_utils/utilities.util.ts +6 -2
@@ -0,0 +1,345 @@
1
+
2
+
3
+ import { Dynamo_Error_default } from '../../_constants/error-defaults.const';
4
+ import { Dynamo_Log } from '../../_utils/log.util';
5
+ import { Dynamo_Error } from './error.control-model';
6
+
7
+ describe('Dynamo_Error;', () => {
8
+ let error_base: Error;
9
+ let error_0: Dynamo_Error;
10
+ let error_stack_1: Dynamo_Error;
11
+ let error_stack_2: Dynamo_Error;
12
+ let error_selfDefined: Dynamo_Error;
13
+
14
+ const message_base: string = '-TEST ERROR: something failed!-';
15
+ const message_1: string = 'TEST ERROR MSG (1)';
16
+ const message_2: string = 'TEST ERROR MSG (2)';
17
+ const message_selfDefined: string = Dynamo_Error_default.message + '; error.control-model.spec.js:55:29';
18
+
19
+ const errorCode_0: string = 'ASD-ASD-001';
20
+ const errorCode_1: string = 'ASD-ASD-002';
21
+ const errorCode_2: string = 'ASD-ASD-003';
22
+
23
+ const userMessage_0: string = 'Dynamo_Error TEST was TEST! (0)';
24
+ const userMessage_2: string = 'Dynamo_Error TEST was TEST! (2)';
25
+
26
+ const userMessageResult_0: string = userMessage_0 + `\nErrorCode: ${errorCode_0}`;
27
+ const userMessageResult_2: string = userMessage_2 + `\nErrorCode: ${errorCode_2}`;
28
+
29
+ const issuer: string = 'Dynamo_Error TEST User'
30
+ const issuerSystem: string = 'Dynamo_FSM TEST';
31
+ const issuerService_0: string = 'Service-0';
32
+ const issuerService_1: string = 'Service-1';
33
+
34
+ const log: boolean = false;
35
+ /* const log: boolean = true; */
36
+
37
+ beforeEach(async () => {
38
+ error_base = new Error(message_base);
39
+
40
+ error_0 = new Dynamo_Error({
41
+ userMessage: userMessage_0,
42
+ addECToUserMsg: true,
43
+ errorCode: errorCode_0,
44
+ issuerSystem: issuerSystem,
45
+ issuer: issuer,
46
+ issuerService: issuerService_0,
47
+ error: error_base,
48
+ });
49
+
50
+ error_stack_1 = new Dynamo_Error({
51
+ message: message_1,
52
+ errorCode: errorCode_1,
53
+ issuerService: issuerService_1,
54
+ error: error_0,
55
+ });
56
+
57
+ error_stack_2 = new Dynamo_Error({
58
+ message: message_2,
59
+ userMessage: userMessage_2,
60
+ addECToUserMsg: true,
61
+ handled: true,
62
+ errorCode: errorCode_2,
63
+ error: error_stack_1,
64
+ });
65
+
66
+ error_selfDefined = new Dynamo_Error();
67
+ });
68
+
69
+ if (log) afterAll(async () => {
70
+ Dynamo_Log.testLog(
71
+ 'afterAll, error_stack_2:', error_stack_2, '\n\nselfDefined:', error_selfDefined
72
+ );
73
+ });
74
+
75
+ describe('should be defined;', () => {
76
+ it('error object', () => {
77
+ expect(error_0).toBeDefined();
78
+ });
79
+
80
+ it('error stack object', () => {
81
+ expect(error_stack_1).toBeDefined();
82
+ });
83
+
84
+ it('greater error stack object', () => {
85
+ expect(error_stack_2).toBeDefined();
86
+ });
87
+
88
+ it('self defined error object', () => {
89
+ expect(error_selfDefined).toBeDefined();
90
+ });
91
+ });
92
+
93
+ describe('should be instance of Dynamo_Error;', () => {
94
+ it('error as Dynamo_Error object', () => {
95
+ expect(error_0).toBeInstanceOf(Dynamo_Error);
96
+ });
97
+
98
+ it('error stack as Dynamo_Error object', () => {
99
+ expect(error_stack_1).toBeInstanceOf(Dynamo_Error);
100
+ });
101
+
102
+ it('greater error stack as Dynamo_Error object', () => {
103
+ expect(error_stack_2).toBeInstanceOf(Dynamo_Error);
104
+ });
105
+
106
+ it('self defined error as Dynamo_Error object', () => {
107
+ expect(error_selfDefined).toBeInstanceOf(Dynamo_Error);
108
+ });
109
+ });
110
+
111
+ describe('should have the proper _errorCode;', () => {
112
+ it('on error_0', () => {
113
+ expect(error_0._errorCode).toBe(errorCode_0);
114
+ });
115
+
116
+ it('on error_stack_1', () => {
117
+ expect(error_stack_1._errorCode).toBe(errorCode_1);
118
+ });
119
+
120
+ it('on error_stack_2', () => {
121
+ expect(error_stack_2._errorCode).toBe(errorCode_2);
122
+ });
123
+
124
+ it('on self defined error', () => {
125
+ expect(error_selfDefined._errorCode).toBe(Dynamo_Error_default.errorCode);
126
+ });
127
+ });
128
+
129
+ describe('should have the proper _message;', () => {
130
+ it('on error_0', () => {
131
+ expect(error_0._message).toBe(message_base);
132
+ });
133
+
134
+ it('on error_stack_1', () => {
135
+ expect(error_stack_1._message).toBe(message_1);
136
+ });
137
+
138
+ it('on error_stack_2', () => {
139
+ expect(error_stack_2._message).toBe(message_2);
140
+ });
141
+
142
+ it('on self defined error', () => {
143
+ expect(error_selfDefined._message).toBe(message_selfDefined);
144
+ });
145
+ });
146
+
147
+ describe('should have the proper __userMessage;', () => {
148
+ it('on error_0', () => {
149
+ expect(error_0.__userMessage).toBe(userMessageResult_0);
150
+ });
151
+
152
+ it('on error_stack_1', () => {
153
+ expect(error_stack_1.__userMessage).toBe(userMessageResult_0);
154
+ });
155
+
156
+ it('on error_stack_2', () => {
157
+ expect(error_stack_2.__userMessage).toBe(userMessageResult_2);
158
+ });
159
+
160
+ it('on self defined error', () => {
161
+ expect(error_selfDefined.__userMessage).toBeUndefined();
162
+ });
163
+ });
164
+
165
+ describe('should have proper error;', () => {
166
+ it('on error_0', () => {
167
+ expect(error_0.error).toBe(error_base);
168
+ });
169
+
170
+ it('on error_stack_1', () => {
171
+ expect(error_stack_1.error).toBe(error_0);
172
+ });
173
+
174
+ it('on error_stack_2', () => {
175
+ expect(error_stack_2.error).toBe(error_stack_1);
176
+ });
177
+
178
+ it('on self defined error', () => {
179
+ expect(error_selfDefined.error).toBeUndefined();
180
+ });
181
+ });
182
+
183
+ describe('should have proper handled;', () => {
184
+ it('on error_0', () => {
185
+ expect(error_0.___handled).toBe(false);
186
+ });
187
+
188
+ it('on error_stack_1', () => {
189
+ expect(error_stack_1.___handled).toBe(false);
190
+ });
191
+
192
+ it('on error_stack_2', () => {
193
+ expect(error_stack_2.___handled).toBe(true);
194
+ });
195
+
196
+ it('on self defined error', () => {
197
+ expect(error_selfDefined.___handled).toBe(false);
198
+ });
199
+ });
200
+
201
+ describe('should have status: undefined;', () => {
202
+ it('on error_0', () => {
203
+ expect(error_0.___status).toBe(undefined);
204
+ });
205
+
206
+ it('on error_stack_1', () => {
207
+ expect(error_stack_1.___status).toBe(undefined);
208
+ });
209
+
210
+ it('on error_stack_2', () => {
211
+ expect(error_stack_2.___status).toBe(undefined);
212
+ });
213
+
214
+ it('on self defined error', () => {
215
+ expect(error_selfDefined.___status).toBe(undefined);
216
+ });
217
+ });
218
+
219
+ describe('should have the proper _errorCodes;', () => {
220
+ it('on error_0', () => {
221
+ expect(error_0._errorCodes).toEqual([ errorCode_0 ]);
222
+ });
223
+
224
+ it('on error_stack_1', () => {
225
+ expect(error_stack_1._errorCodes).toEqual([ errorCode_1, errorCode_0 ]);
226
+ });
227
+
228
+ it('on error_stack_2', () => {
229
+ expect(error_stack_2._errorCodes).toEqual([ errorCode_2, errorCode_1, errorCode_0 ]);
230
+ });
231
+
232
+ it('on self defined error', () => {
233
+ expect(error_selfDefined._errorCodes).toEqual([ Dynamo_Error_default.errorCode ]);
234
+ });
235
+ });
236
+
237
+ describe('should have the proper _messages;', () => {
238
+ it('on error_0', () => {
239
+ expect(error_0._messages).toEqual([ message_base ]);
240
+ });
241
+
242
+ it('on error_stack_1', () => {
243
+ expect(error_stack_1._messages).toEqual([ message_1, message_base ]);
244
+ });
245
+
246
+ it('on error_stack_2', () => {
247
+ expect(error_stack_2._messages).toEqual([ message_2, message_1, message_base ]);
248
+ });
249
+
250
+ it('on self defined error', () => {
251
+ expect(error_selfDefined._messages).toEqual([ message_selfDefined ]);
252
+ });
253
+ });
254
+
255
+ describe('should have the proper __userMessages;', () => {
256
+ it('on error_0', () => {
257
+ expect(error_0.__userMessages).toEqual([ userMessageResult_0 ]);
258
+ });
259
+
260
+ it('on error_stack_1', () => {
261
+ expect(error_stack_1.__userMessages).toEqual([ Dynamo_Error_default.userMessage, userMessageResult_0 ]);
262
+ });
263
+
264
+ it('on error_stack_2', () => {
265
+ expect(error_stack_2.__userMessages).toEqual([ userMessageResult_2, Dynamo_Error_default.userMessage, userMessageResult_0 ]);
266
+ });
267
+
268
+ it('on self defined error', () => {
269
+ expect(error_selfDefined.__userMessages).toEqual([ Dynamo_Error_default.userMessage ]);
270
+ });
271
+ });
272
+
273
+ describe('should have the proper errors;', () => {
274
+ it('on error_0', () => {
275
+ expect(error_0.errors).toEqual([ error_base ]);
276
+ });
277
+
278
+ it('on error_stack_1', () => {
279
+ expect(error_stack_1.errors).toEqual([ error_0, error_base ]);
280
+ });
281
+
282
+ it('on error_stack_2', () => {
283
+ expect(error_stack_2.errors).toEqual([ error_stack_1, error_0, error_base ]);
284
+ });
285
+
286
+ it('on self defined error', () => {
287
+ expect(error_selfDefined.errors).toEqual([]);
288
+ });
289
+ });
290
+
291
+ describe('should have the proper issuer;', () => {
292
+ it('on error_0', () => {
293
+ expect(error_0.___issuer).toBe(issuer);
294
+ });
295
+
296
+ it('on error_stack_1', () => {
297
+ expect(error_stack_1.___issuer).toBe(issuer);
298
+ });
299
+
300
+ it('on error_stack_2', () => {
301
+ expect(error_stack_2.___issuer).toBe(issuer);
302
+ });
303
+
304
+ it('on self defined error', () => {
305
+ expect(error_selfDefined.___issuer).toBe(Dynamo_Error_default.issuer);
306
+ });
307
+ });
308
+
309
+ describe('should have the proper issuerSystem;', () => {
310
+ it('on error_0', () => {
311
+ expect(error_0.___issuerSystem).toBe(issuerSystem);
312
+ });
313
+
314
+ it('on error_stack_1', () => {
315
+ expect(error_stack_1.___issuerSystem).toBe(issuerSystem);
316
+ });
317
+
318
+ it('on error_stack_2', () => {
319
+ expect(error_stack_2.___issuerSystem).toBe(issuerSystem);
320
+ });
321
+
322
+ it('on self defined error', () => {
323
+ expect(error_selfDefined.___issuerSystem).toBe(Dynamo_Error_default.issuerSystem);
324
+ });
325
+ });
326
+
327
+ describe('should have the proper issuerService;', () => {
328
+ it('on error_0', () => {
329
+ expect(error_0.___issuerService).toBe(issuerService_0);
330
+ });
331
+
332
+ it('on error_stack_1', () => {
333
+ expect(error_stack_1.___issuerService).toBe(issuerService_1);
334
+ });
335
+
336
+ it('on error_stack_2', () => {
337
+ expect(error_stack_2.___issuerService).toBe(issuerService_1);
338
+ });
339
+
340
+ it('on self defined error', () => {
341
+ expect(error_selfDefined.___issuerService).toBe(Dynamo_Error_default.issuerService);
342
+ });
343
+ });
344
+ });
345
+
@@ -1,155 +1,151 @@
1
-
1
+ import { Dynamo_Error_default } from '../../_constants/error-defaults.const';
2
+ import { Dynamo_Log } from '../../_utils/log.util';
3
+ import { Dynamo_Metadata } from '../data-models/metadata.data-model';
2
4
 
3
5
  export type D_Error = Dynamo_Error;
4
- export class Dynamo_Error {
5
- readonly flag = 'DYNAMO ERROR OBJECT';
6
- handled: boolean;
7
- status: number;
8
6
 
9
- errorCode: string;
10
- errorCodes: string[] = [];
7
+ export class Dynamo_Error extends Dynamo_Metadata {
8
+ readonly flag = 'DYNAMO-ERROR-OBJECT-v2';
9
+
10
+ _errorCode: string;
11
+ _errorCodes: string[] = [];
12
+
13
+ _message: string;
14
+ _messages: string[] = [];
15
+
16
+ __userMessage: string;
17
+ __userMessages: string[] = [];
11
18
 
12
- error: any;
13
- errors: any[] = [];
19
+ ___handled: boolean;
20
+ ___status: number;
14
21
 
15
- message: string;
16
- messages: string[] = [];
22
+ ___issuer: string;
23
+ ___issuerSystem: string;
24
+ ___issuerService: string;
17
25
 
18
- userMessage: string;
19
- userMessages: string[] = [];
26
+ error: Error | Dynamo_Error;
27
+ errors: (Error | Dynamo_Error)[] = [];
20
28
 
21
29
  constructor(
22
30
  set?: {
23
- handled?: boolean;
24
- status?: number,
25
-
26
- errorCode?: string;
27
- errorCodes?: string[];
31
+ _id?: string,
28
32
 
29
- error?: any,
30
- errors?: any[],
33
+ handled?: boolean,
34
+ status?: number,
31
35
 
36
+ errorCode?: string,
32
37
  message?: string,
33
- messages?: string[],
34
-
35
38
  userMessage?: string,
36
- userMessages?: string[],
37
39
  addECToUserMsg?: boolean,
40
+
41
+ error?: Error | Dynamo_Error,
42
+
43
+ issuer?: string,
44
+ issuerSystem?: string,
45
+ issuerService?: string,
38
46
 
39
47
  modestLog?: boolean,
40
48
  log?: boolean,
49
+
50
+ __created?: Date,
51
+ __createdBy?: string,
52
+ __lastModified?: Date,
53
+ __lastModifiedBy?: string,
54
+ __v?: number,
41
55
  }
42
56
  ) {
57
+ super(set, { issuer: set?.issuerService ?? (set?.error as Dynamo_Error)?.___issuerService ?? Dynamo_Error_default.issuerService });
58
+
43
59
  try {
44
- this.handled = !!set.handled;
60
+ if (!set) {
61
+ set = {};
62
+ }
45
63
 
46
- if (set) {
47
- this.status = set.status ?? set?.error?.status;
64
+ /** set simple properties */
65
+ this.___handled = Boolean(set?.handled ?? (set?.error as Dynamo_Error)?.___handled);
66
+ this.___status = set?.status ?? (set?.error as Dynamo_Error)?.___status;
48
67
 
49
- if (set.errorCode) {
50
- this.errorCodes.push(set.errorCode);
51
- }
52
- if (set.message) {
53
- this.messages.push(set.message);
54
- }
55
- if (set.userMessage) {
56
- this.userMessages.push(set.userMessage);
57
- }
68
+ this.___issuer = set?.issuer ?? (set?.error as Dynamo_Error)?.___issuer ?? Dynamo_Error_default.issuer;
69
+ this.___issuerSystem = set?.issuerSystem ?? (set?.error as Dynamo_Error)?.___issuerSystem ?? Dynamo_Error_default.issuerSystem;
70
+ this.___issuerService = set?.issuerService ?? (set?.error as Dynamo_Error)?.___issuerService ?? Dynamo_Error_default.issuerService;
58
71
 
59
- if (set.error) {
60
- if (set.error.error) {
61
- this.errors.push(set.error.error);
62
- }
63
-
64
- if (set.error.errors) {
65
- if (Array.isArray(set.error.errors)) {
66
- this.errors.push(...set.error.errors);
67
- } else {
68
- this.errors.push(set.error.errors);
69
- }
70
- }
71
-
72
- if (set.error.errorCode) {
73
- this.errorCodes.push(set.error.errorCode);
74
- }
75
- if (set.error.errorCodes) {
76
- if (Array.isArray(set.error.errorCodes)) {
77
- this.errorCodes.push(...set.error.errorCodes);
78
- } else {
79
- this.errorCodes.push(set.error.errorCodes);
80
- }
81
- }
82
-
83
- if (set.error.message) {
84
- this.messages.push(set.error.message);
85
- } else if (set.error._message) {
86
- this.messages.push(set.error._message);
87
- }
88
- if (set.error.messages) {
89
- if (Array.isArray(set.error.messages)) {
90
- if (set.error.messages[0] == this.messages[0]) {
91
- set.error.messages.shift();
92
- }
93
- this.messages.push(...set.error.messages);
94
- } else {
95
- this.messages.push(set.error.messages);
96
- }
97
- }
98
-
99
- if (set.error.userMessage) {
100
- this.userMessages.push(set.error.userMessage);
101
- }
102
- if (set.error.userMessages) {
103
- if (Array.isArray(set.error.userMessages)) {
104
- /* if (set.error.userMessages[0] == this.userMessages[0]) {
105
- set.error.userMessages.shift();
106
- } */
107
- this.userMessages.push(...set.error.userMessages);
108
- } else {
109
- this.userMessages.push(set.error.userMessages);
110
- }
111
- }
112
- }
72
+ /** set default error code */
73
+ if (!set.errorCode) {
74
+ set.errorCode = Dynamo_Error_default.errorCode;
113
75
  }
114
76
 
115
- this.errorCode = set?.errorCode ?? this.errorCodes[0];
116
- this.userMessage = set?.userMessage ?? this.userMessages[0];
117
- this.message = set?.message ?? this.messages[0];
118
- this.error = set?.error ?? this.errors[0] ?? new Error(this.message);
119
-
120
- if (0 < this.errorCodes.length && this.errorCode === this.errorCodes[0]) {
121
- this.errorCodes.shift();
77
+ /** set errorCodes */
78
+ const previousErrorCodes: string[] = [];
79
+ if ((set?.error as Dynamo_Error)?._errorCodes) {
80
+ previousErrorCodes.push(...(set?.error as Dynamo_Error)?._errorCodes);
122
81
  }
123
- if (0 < this.userMessages.length && this.userMessage === this.userMessages[0]) {
124
- this.userMessages.shift();
82
+ if (!set.errorCode) {
83
+ set.errorCode = Dynamo_Error_default.errorCode;
125
84
  }
126
- if (0 < this.messages.length && this.message === this.messages[0]) {
127
- this.messages.shift();
85
+ this._errorCodes = [ set?.errorCode, ...previousErrorCodes ].filter(Boolean);
86
+ this._errorCode = this._errorCodes?.[0];
87
+
88
+ /** set message */
89
+ if (!set.message) {
90
+ /** simple - non-dynamo - error */
91
+ if (!(set?.error as Dynamo_Error)?.flag?.includes('DYNAMO') && (set?.error as Error)?.message) {
92
+ set.message = (set?.error as Error)?.message;
93
+ } else {
94
+ /** error not defined */
95
+ const posFull = new Error().stack.split('\n')?.[2]?.split('\\');
96
+ set.message = Dynamo_Error_default.message + '; ' + posFull[posFull.length - 1];
97
+ }
128
98
  }
129
- if (0 < this.errors.length && this.error === this.errors[0]) {
130
- this.errors.shift();
99
+ /** set messages */
100
+ const previousMessages: string[] = [];
101
+ if ((set?.error as Dynamo_Error)?._messages) {
102
+ previousMessages.push(...(set?.error as Dynamo_Error)?._messages);
103
+ } else if ((set?.error as Error)?.message) {
104
+ previousErrorCodes.push((set?.error as Error)?.message);
131
105
  }
106
+ this._messages = [ set?.message, ...previousMessages ].filter(Boolean);
107
+ this._message = this._messages?.[0];
132
108
 
133
- if (set.addECToUserMsg) {
134
- this.userMessage += `\nErrorCode: ${this.errorCode}`
109
+ /** set userMessages */
110
+ const previousUserMessages: string[] = [];
111
+ if ((set?.error as Dynamo_Error)?.__userMessages) {
112
+ previousUserMessages.push(...(set?.error as Dynamo_Error)?.__userMessages);
113
+ }
114
+ if (!set.userMessage) {
115
+ set.userMessage = Dynamo_Error_default.userMessage;
135
116
  }
117
+ if (set.addECToUserMsg && set.errorCode) {
118
+ set.userMessage += `\nErrorCode: ${set.errorCode}`
119
+ }
120
+ this.__userMessages = [ set?.userMessage, ...previousUserMessages ].filter(Boolean);
121
+ this.__userMessage = this.__userMessages.filter((msg: string) => msg && msg !== Dynamo_Error_default.userMessage)?.[0];
136
122
 
123
+ /** set errors */
124
+ const previousErrors: (Error | Dynamo_Error)[] = [];
125
+ if ((set?.error as Dynamo_Error)?.errors) {
126
+ previousErrors.push(...(set?.error as Dynamo_Error)?.errors);
127
+ }
128
+ this.errors = [ set?.error, ...previousErrors ].filter(Boolean);
129
+ this.error = this.errors?.[0];
130
+
137
131
  if (set?.modestLog) {
138
- console.error(this.message ?? this.userMessage ?? this.error)
132
+ console.error(this._message ?? this.__userMessage ?? this.error)
139
133
  }
140
134
  if (set?.log) {
141
135
  console.error(this);
142
136
  }
143
137
  } catch (error) {
144
- console.error('Internal Dynamo ERROR: Failed to create Dynamo_Error...', error, set);
145
- /* throw new Error('Internal Dynamo ERROR: Failed to create Dynamo_Error...'); */
138
+ Dynamo_Log.error(
139
+ '\n\nInternal Dynamo ERROR: Failed to create Dynamo_Error...' +
140
+ '\nerror:\n', error,
141
+ '\n\ntrace:', new Error(),
142
+ '\n\nset:', set,
143
+ '\n\n'
144
+ );
146
145
  }
147
146
  }
148
147
  }
149
148
 
150
-
151
-
152
-
153
149
  /*
154
150
 
155
151
  // //
@@ -67,8 +67,6 @@ export class Dynamo_Poll<T> {
67
67
  }
68
68
  throw new Dynamo_Error({
69
69
  message: 'DYNAMO ERROR: \nDynamoPoll: pollDo was UNSUCCESSFUL',
70
- error: new Error(error),
71
- errors: [ error ]
72
70
  });
73
71
  });
74
72
  });
@@ -1,4 +1,4 @@
1
-
1
+ import { Dynamo_Error } from '../control-models';
2
2
 
3
3
  export type D_Metadata = Dynamo_Metadata;
4
4
  export type D_MetaD = Dynamo_Metadata;
@@ -12,14 +12,59 @@ export class Dynamo_Metadata {
12
12
  __v?: number;
13
13
 
14
14
  constructor(
15
- set?: Dynamo_Metadata
15
+ set?: Dynamo_Metadata,
16
+ forceInit?: {
17
+ id?: string,
18
+ issuer: string,
19
+ },
20
+ forceUpdate?: {
21
+ throwOnMissingId?: boolean,
22
+ issuer: string,
23
+ },
16
24
  ){
17
25
  if (set) {
18
26
  if (!set._id && set._id !== undefined) {
19
- delete set._id;
27
+ set._id = undefined;
28
+ }
29
+
30
+ this._id = set._id;
31
+ this.__created = set.__created;
32
+ this.__createdBy = set.__createdBy;
33
+ this.__lastModified = set.__lastModified;
34
+ this.__lastModifiedBy = set.__lastModifiedBy;
35
+ this.__v = set.__v;
36
+ }
37
+
38
+ if (forceInit?.issuer) {
39
+ if (!this._id && forceInit.id) {
40
+ this._id = forceInit.id;
41
+ }
42
+ if (!this.__created) {
43
+ this.__created = new Date();
20
44
  }
45
+ if (!this.__createdBy) {
46
+ this.__createdBy = forceInit.issuer;
47
+ }
48
+ if (!this.__lastModified) {
49
+ this.__lastModified = new Date();
50
+ }
51
+ if (!this.__lastModifiedBy) {
52
+ this.__lastModifiedBy = forceInit.issuer;
53
+ }
54
+ if (!this.__v) {
55
+ this.__v = 0;
56
+ }
57
+ }
21
58
 
22
- Object.assign(this, set);
59
+ if (forceUpdate?.issuer) {
60
+ if (!this._id && forceUpdate.throwOnMissingId) {
61
+ throw new Dynamo_Error({
62
+ message: `Dynamo_Metadata.constructor: missing _id`,
63
+ });
64
+ }
65
+ this.__lastModified = new Date();
66
+ this.__lastModifiedBy = forceUpdate.issuer;
67
+ this.__v = this.__v ? this.__v + 1 : 1;
23
68
  }
24
69
  }
25
70
  }
@@ -0,0 +1,11 @@
1
+
2
+
3
+ export interface Dynamo_Error_Defaults {
4
+ errorCode: string;
5
+ message: string;
6
+ userMessage: string;
7
+ issuer: string;
8
+ issuerService: string;
9
+ issuerSystem: string;
10
+ }
11
+