@futdevpro/fsm-dynamo 1.9.9 → 1.9.12

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 (173) hide show
  1. package/.github/workflows/main.yml +196 -0
  2. package/HOWTO.md +15 -15
  3. package/README.md +17 -17
  4. package/build/_collections/constants/country-divisions.const.d.ts +1 -1
  5. package/build/_collections/constants/country-divisions.const.d.ts.map +1 -1
  6. package/build/_collections/constants/country-divisions.const.js +2 -2
  7. package/build/_collections/constants/country-divisions.const.js.map +1 -1
  8. package/build/_collections/constants/courtry-isos.const.d.ts +1 -1
  9. package/build/_collections/constants/courtry-isos.const.d.ts.map +1 -1
  10. package/build/_collections/constants/courtry-isos.const.js +2 -2
  11. package/build/_collections/constants/courtry-isos.const.js.map +1 -1
  12. package/build/_collections/constants/error-defaults.const.d.ts +1 -1
  13. package/build/_collections/constants/error-defaults.const.d.ts.map +1 -1
  14. package/build/_collections/constants/module-settings/usage-module-settings.const.js +1 -1
  15. package/build/_collections/constants/pipe-transforms.const.js +12 -12
  16. package/build/_collections/constants/pipe-transforms.const.js.map +1 -1
  17. package/build/_collections/utils/pipe-transforms/division-pipe.util.js +1 -1
  18. package/build/_collections/utils/pipe-transforms/division-pipe.util.js.map +1 -1
  19. package/build/_collections/utils/pipe-transforms/list-pipe.util.d.ts.map +1 -1
  20. package/build/_collections/utils/pipe-transforms/list-pipe.util.js.map +1 -1
  21. package/build/_collections/utils/pipe-transforms/range-pipe.util.d.ts +2 -2
  22. package/build/_collections/utils/pipe-transforms/range-pipe.util.d.ts.map +1 -1
  23. package/build/_collections/utils/pipe-transforms/range-pipe.util.js +11 -11
  24. package/build/_collections/utils/pipe-transforms/range-pipe.util.js.map +1 -1
  25. package/build/_collections/utils/regions.util.d.ts.map +1 -1
  26. package/build/_collections/utils/regions.util.js +3 -0
  27. package/build/_collections/utils/regions.util.js.map +1 -1
  28. package/build/_enums/range-pipe-setting.enum.d.ts +1 -1
  29. package/build/_enums/range-pipe-setting.enum.d.ts.map +1 -1
  30. package/build/_enums/range-pipe-setting.enum.js +12 -12
  31. package/build/_enums/range-pipe-setting.enum.js.map +1 -1
  32. package/build/_models/control-models/error.control-model.js +1 -1
  33. package/build/_models/control-models/error.control-model.js.map +1 -1
  34. package/build/_models/control-models/error.control-model.spec.js +25 -6
  35. package/build/_models/control-models/error.control-model.spec.js.map +1 -1
  36. package/build/_models/interfaces/index.d.ts +3 -0
  37. package/build/_models/interfaces/index.d.ts.map +1 -1
  38. package/build/_models/interfaces/index.js +3 -0
  39. package/build/_models/interfaces/index.js.map +1 -1
  40. package/build/_models/interfaces/pipe-transforms.interface.d.ts +2 -2
  41. package/build/_models/interfaces/pipe-transforms.interface.d.ts.map +1 -1
  42. package/futdevpro-fsm-dynamo-01.09.12.tgz +0 -0
  43. package/nodemon.json +11 -11
  44. package/package.json +151 -151
  45. package/src/_collections/assets/location/country-codes-ISO-3166.json +3239 -3239
  46. package/src/_collections/assets/location/country-divisions-ISO-3166-all-list.json +19035 -19035
  47. package/src/_collections/assets/location/country-divisions-ISO-3166.json +4993 -4993
  48. package/src/_collections/assets/location/country-phone-codes.json +1203 -1203
  49. package/src/_collections/constants/country-divisions.const.ts +9 -9
  50. package/src/_collections/constants/courtry-isos.const.ts +8 -8
  51. package/src/_collections/constants/error-defaults.const.ts +11 -11
  52. package/src/_collections/constants/index.ts +15 -15
  53. package/src/_collections/constants/module-settings/custom-data-module-settings.const.ts +15 -15
  54. package/src/_collections/constants/module-settings/index.ts +8 -8
  55. package/src/_collections/constants/module-settings/test-module-settings.const.ts +19 -19
  56. package/src/_collections/constants/module-settings/usage-module-settings.const.ts +19 -19
  57. package/src/_collections/constants/pipe-transforms.const.ts +35 -35
  58. package/src/_collections/constants/times.const.ts +8 -8
  59. package/src/_collections/index.ts +6 -6
  60. package/src/_collections/utils/array.util.spec.ts +39 -39
  61. package/src/_collections/utils/array.util.ts +137 -137
  62. package/src/_collections/utils/index.ts +18 -18
  63. package/src/_collections/utils/location.util.ts +55 -55
  64. package/src/_collections/utils/log.util.ts +239 -239
  65. package/src/_collections/utils/math/box-bounds.util.ts +85 -85
  66. package/src/_collections/utils/math/index.ts +5 -5
  67. package/src/_collections/utils/math/math.util.ts +53 -53
  68. package/src/_collections/utils/math/random.util.ts +80 -80
  69. package/src/_collections/utils/math/trigonometry.util.ts +73 -73
  70. package/src/_collections/utils/math/vector2.util.ts +197 -197
  71. package/src/_collections/utils/pipe-transforms/country-pipe.util.ts +18 -18
  72. package/src/_collections/utils/pipe-transforms/custom-pipe.util.ts +9 -9
  73. package/src/_collections/utils/pipe-transforms/division-pipe.util.ts +20 -20
  74. package/src/_collections/utils/pipe-transforms/index.ts +15 -15
  75. package/src/_collections/utils/pipe-transforms/list-pipe.util.ts +10 -14
  76. package/src/_collections/utils/pipe-transforms/multi-pipe-pipe.util.ts +160 -160
  77. package/src/_collections/utils/pipe-transforms/obj-key-pipe.util.ts +9 -9
  78. package/src/_collections/utils/pipe-transforms/range-pipe.util.ts +94 -94
  79. package/src/_collections/utils/pipe-transforms/region-pipe.util.ts +18 -18
  80. package/src/_collections/utils/pipe-transforms/replace-pipe.util.ts +11 -11
  81. package/src/_collections/utils/pipe-transforms/slider-pipe.util.ts +20 -20
  82. package/src/_collections/utils/pipe-transforms/smart-replace-pipe.util.ts +71 -71
  83. package/src/_collections/utils/regex/index.ts +4 -4
  84. package/src/_collections/utils/regex/password-regex.util.ts +52 -52
  85. package/src/_collections/utils/regex/regex.util.ts +6 -6
  86. package/src/_collections/utils/regex/username-regex.util.ts +33 -33
  87. package/src/_collections/utils/regions.util.ts +100 -97
  88. package/src/_collections/utils/round-list.util.ts +44 -44
  89. package/src/_collections/utils/shared.static-service.ts +177 -177
  90. package/src/_collections/utils/time.util.spec.ts +50 -50
  91. package/src/_collections/utils/time.util.ts +219 -219
  92. package/src/_collections/utils/type-cloning-facility.util.ts +121 -121
  93. package/src/_collections/utils/utilities.util.ts +130 -130
  94. package/src/_enums/basic-property-type.enum.ts +9 -9
  95. package/src/_enums/data-model-type.enum.ts +13 -13
  96. package/src/_enums/day-of-week.enum.ts +28 -28
  97. package/src/_enums/error-level.enum.ts +17 -17
  98. package/src/_enums/index.ts +16 -16
  99. package/src/_enums/location/index.ts +3 -3
  100. package/src/_enums/location/region.enum.ts +9 -9
  101. package/src/_enums/location/sub-region.enum.ts +26 -26
  102. package/src/_enums/location/subdivision-region-type.enum.ts +44 -44
  103. package/src/_enums/log-style.enum.ts +30 -30
  104. package/src/_enums/month.enum.ts +16 -16
  105. package/src/_enums/pipe.enum.ts +45 -45
  106. package/src/_enums/range-pipe-setting.enum.ts +11 -11
  107. package/src/_enums/time/day-of-week.enum.ts +28 -28
  108. package/src/_enums/time/index.ts +3 -3
  109. package/src/_enums/time/month.enum.ts +16 -16
  110. package/src/_enums/time/relative-date.enum.ts +13 -13
  111. package/src/_models/control-models/daily-usage-data.control-model.ts +21 -21
  112. package/src/_models/control-models/data-model-params.control-model.ts +39 -39
  113. package/src/_models/control-models/data-property-params.control-model.ts +106 -106
  114. package/src/_models/control-models/error.control-model.spec.ts +753 -716
  115. package/src/_models/control-models/error.control-model.ts +722 -722
  116. package/src/_models/control-models/index.ts +10 -10
  117. package/src/_models/control-models/poll.control-model.ts +113 -113
  118. package/src/_models/control-models/range-value.control-model.ts +142 -142
  119. package/src/_models/control-models/usage-action.control-model.ts +15 -15
  120. package/src/_models/control-models/usage-data.control-model.ts +20 -20
  121. package/src/_models/data-models/custom-data.data-model.ts +28 -28
  122. package/src/_models/data-models/index.ts +5 -5
  123. package/src/_models/data-models/metadata.data-model.ts +83 -83
  124. package/src/_models/data-models/usage-session.data-model.ts +53 -53
  125. package/src/_models/index.ts +12 -12
  126. package/src/_models/interfaces/error-defaults.interface.ts +11 -11
  127. package/src/_models/interfaces/index.ts +11 -8
  128. package/src/_models/interfaces/location/country-division.interface.ts +7 -7
  129. package/src/_models/interfaces/location/country-iso.interface.ts +21 -21
  130. package/src/_models/interfaces/location/country-phone-code.interface.ts +7 -7
  131. package/src/_models/interfaces/location/division-collection.interface.ts +10 -10
  132. package/src/_models/interfaces/location/division-region-data.interface.ts +8 -8
  133. package/src/_models/interfaces/location/geo-ip-location.interface.ts +26 -26
  134. package/src/_models/interfaces/location/index.ts +10 -10
  135. package/src/_models/interfaces/location/location-coordinates.interface.ts +5 -5
  136. package/src/_models/interfaces/multi-pipe-settings.type.ts +7 -7
  137. package/src/_models/interfaces/paged.interface.ts +11 -11
  138. package/src/_models/interfaces/pipe-transforms.interface.ts +29 -29
  139. package/src/_models/interfaces/random-weight.interface.ts +7 -7
  140. package/src/_models/interfaces/route-settings.interface.ts +11 -11
  141. package/src/_modules/collections.index.ts +2 -2
  142. package/src/_modules/constants.index.ts +2 -2
  143. package/src/_modules/custom-data-module.index.ts +6 -6
  144. package/src/_modules/data-modules.index.ts +9 -9
  145. package/src/_modules/enums.index.ts +2 -2
  146. package/src/_modules/error-module.index.ts +8 -8
  147. package/src/_modules/location.index.ts +15 -15
  148. package/src/_modules/models.index.ts +2 -2
  149. package/src/_modules/shared-service.index.ts +9 -9
  150. package/src/_modules/test-module.index.ts +5 -5
  151. package/src/_modules/usage-module.index.ts +10 -10
  152. package/tsconfig.json +29 -29
  153. package/tslint.json +153 -153
  154. package/build/_enums/region.enum.d.ts +0 -8
  155. package/build/_enums/region.enum.d.ts.map +0 -1
  156. package/build/_enums/region.enum.js +0 -12
  157. package/build/_enums/region.enum.js.map +0 -1
  158. package/build/_enums/relative-date.enum.d.ts +0 -9
  159. package/build/_enums/relative-date.enum.d.ts.map +0 -1
  160. package/build/_enums/relative-date.enum.js +0 -13
  161. package/build/_enums/relative-date.enum.js.map +0 -1
  162. package/build/_enums/sub-region.enum.d.ts +0 -20
  163. package/build/_enums/sub-region.enum.d.ts.map +0 -1
  164. package/build/_enums/sub-region.enum.js +0 -24
  165. package/build/_enums/sub-region.enum.js.map +0 -1
  166. package/build/_enums/subdivision-region-type.enum.d.ts +0 -41
  167. package/build/_enums/subdivision-region-type.enum.d.ts.map +0 -1
  168. package/build/_enums/subdivision-region-type.enum.js +0 -46
  169. package/build/_enums/subdivision-region-type.enum.js.map +0 -1
  170. package/src/_enums/region.enum.ts +0 -9
  171. package/src/_enums/relative-date.enum.ts +0 -13
  172. package/src/_enums/sub-region.enum.ts +0 -26
  173. package/src/_enums/subdivision-region-type.enum.ts +0 -44
@@ -1,722 +1,722 @@
1
- import { DynamoFM_error_defaults } from '../../_collections/constants/error-defaults.const';
2
- import { DynamoFM_ErrorLevel } from '../../_enums';
3
- import { DynamoFM_Log } from '../../_collections/utils/log.util';
4
- import { DynamoFM_Metadata } from '../data-models/metadata.data-model';
5
-
6
- export type DFM_Error = DynamoFM_Error;
7
-
8
- export interface DynamoFM_Error_Settings {
9
- _id?: string;
10
-
11
- handled?: boolean;
12
- status?: number;
13
-
14
- errorCode?: string;
15
- message?: string;
16
- userMessage?: string;
17
- userMessageTranslateCode?: string;
18
- addECToUserMsg?: boolean;
19
-
20
- error?: DynamoFM_AnyError;
21
- errors?: DynamoFM_AnyError[];
22
-
23
- issuer?: string;
24
- issuerSystem?: string;
25
- issuerService?: string;
26
-
27
- level?: DynamoFM_ErrorLevel;
28
-
29
- levelUpThis?: boolean;
30
- additionalContent?: any;
31
- confidentialContent?: any;
32
-
33
- modestLog?: boolean;
34
- log?: boolean;
35
-
36
- __created?: Date;
37
- __createdBy?: string;
38
- __lastModified?: Date;
39
- __lastModifiedBy?: string;
40
- __v?: number;
41
- }
42
-
43
- export type DynamoFM_AnyError = Error | DynamoFM_Error;
44
-
45
- export class DynamoFM_Error extends DynamoFM_Metadata {
46
- readonly flag = 'DYNAMO-ERROR-OBJECT-v2';
47
-
48
- _errorCode?: string;
49
- _errorCodes?: string[] = [];
50
-
51
- /** contains all sub error messages, in reversed order */
52
- _message?: string;
53
- _messages?: string[] = [];
54
-
55
- __userMessage?: string;
56
- /** contains all sub error messages, in reversed order */
57
- __userMessages?: string[] = [];
58
- __userMessageTranslateCode?: string;
59
-
60
- ___handled?: boolean;
61
- ___status?: number;
62
-
63
- ___issuer?: string;
64
- ___issuerSystem?: string;
65
- ___issuerService?: string;
66
-
67
- error?: DynamoFM_AnyError;
68
- errors?: DynamoFM_AnyError[] = [];
69
-
70
- level?: DynamoFM_ErrorLevel;
71
-
72
- levelUpThis?: boolean;
73
- additionalContent?: any = {};
74
- confidentialContent?: any = {};
75
-
76
- constructor(
77
- set?: DynamoFM_Error_Settings
78
- ) {
79
- super(
80
- set,
81
- {
82
- issuer: set?.issuerService ??
83
- (set?.error as DynamoFM_Error)?.___issuerService ??
84
- DynamoFM_error_defaults.issuerService,
85
- }
86
- );
87
-
88
- try {
89
- if (!set) {
90
- set = {};
91
- }
92
-
93
- /** set simple properties */
94
- this.___handled = Boolean(set?.handled ?? (set?.error as DynamoFM_Error)?.___handled);
95
- this.___status = set?.status ?? (set?.error as DynamoFM_Error)?.___status;
96
- this.___issuer = set?.issuer ??
97
- (set?.error as DynamoFM_Error)?.___issuer ??
98
- DynamoFM_error_defaults.issuer;
99
- this.___issuerSystem = set?.issuerSystem ??
100
- (set?.error as DynamoFM_Error)?.___issuerSystem ??
101
- DynamoFM_error_defaults.issuerSystem;
102
- this.___issuerService = set?.issuerService ??
103
- (set?.error as DynamoFM_Error)?.___issuerService ??
104
- DynamoFM_error_defaults.issuerService;
105
-
106
- this.level = set?.level ?? (set?.error as DynamoFM_Error)?.level ?? DynamoFM_ErrorLevel.error;
107
-
108
- this.levelUpThis = set?.levelUpThis;
109
-
110
- if (set?.additionalContent && (set?.error as DynamoFM_Error)?.additionalContent) {
111
- this.additionalContent = {
112
- ...(set?.error as DynamoFM_Error)?.additionalContent,
113
- ...set.additionalContent,
114
- };
115
- } else if (set?.additionalContent) {
116
- this.additionalContent = set.additionalContent;
117
- } else if ((set?.error as DynamoFM_Error)?.additionalContent) {
118
- this.additionalContent = (set?.error as DynamoFM_Error)?.additionalContent;
119
- }
120
-
121
- if (set?.confidentialContent && (set?.error as DynamoFM_Error)?.confidentialContent) {
122
- this.confidentialContent = {
123
- ...(set?.error as DynamoFM_Error)?.confidentialContent,
124
- ...set.confidentialContent,
125
- };
126
- } else if (set?.confidentialContent) {
127
- this.confidentialContent = set.confidentialContent;
128
- } else if ((set?.error as DynamoFM_Error)?.confidentialContent) {
129
- this.confidentialContent = (set?.error as DynamoFM_Error)?.confidentialContent;
130
- }
131
-
132
- /** set default error code */
133
- if (!set.errorCode) {
134
- set.errorCode = DynamoFM_error_defaults.errorCode;
135
- }
136
-
137
- /** set default error (self defined) */
138
- if (!set?.error) {
139
- set.error = new Error();
140
- const errorStack: string[] = set.error.stack.split('\n');
141
-
142
- errorStack.splice(1, 1);
143
- set.error.stack = errorStack.join('\n');
144
- }
145
-
146
- /** set errorCodes */
147
- let previousErrorCodes: string[] = [];
148
-
149
- if ((set?.error as DynamoFM_Error)?._errorCodes) {
150
- previousErrorCodes.push(...((set?.error as DynamoFM_Error)?._errorCodes ?? []));
151
- }
152
-
153
- if (!set.errorCode) {
154
- set.errorCode = DynamoFM_error_defaults.errorCode;
155
- }
156
- previousErrorCodes = previousErrorCodes.filter(
157
- (code: string): boolean => code !== set.errorCode
158
- );
159
- this._errorCodes = [ ...previousErrorCodes, set?.errorCode ].filter(Boolean);
160
-
161
- /** bring up non NTS and non default first error */
162
- const filteredErrorCodes: string[] = this._errorCodes.filter(
163
- (code: string): boolean =>
164
- code && code !== DynamoFM_error_defaults.errorCode && !code.includes('NTS-')
165
- );
166
-
167
- this._errorCode = filteredErrorCodes[0] ?? this._errorCodes?.[0];
168
- const highlightedErrorCodeIndex: number = this._errorCodes.findIndex(
169
- (code: string): boolean => code === filteredErrorCodes?.[0]
170
- );
171
-
172
- /** set message */
173
- if (!set.message) {
174
- if (typeof set?.error === 'string') {
175
- /** string error */
176
- set.message = set.error;
177
- } else if (
178
- !(set?.error as DynamoFM_Error)?.flag?.includes('DYNAMO') &&
179
- (set?.error as Error)?.message
180
- ) {
181
- /** simple - non-dynamo - error */
182
- set.message = (set?.error as Error)?.message;
183
- } else if ((set.error as Error).stack) {
184
- /** error not defined - self defining */
185
- const posFull = (set.error as Error).stack.split('\n')?.[1]?.split('\\');
186
-
187
- set.message = DynamoFM_error_defaults.message + '; ' + posFull[posFull.length - 1];
188
- }
189
- }
190
- /** set messages */
191
- let previousMessages: string[] = [];
192
-
193
- if ((set?.error as DynamoFM_Error)?._messages) {
194
- previousMessages.push(...((set?.error as DynamoFM_Error)?._messages ?? []));
195
- } else if ((set?.error as Error)?.message) {
196
- previousErrorCodes.push((set?.error as Error)?.message);
197
- }
198
- previousMessages = previousMessages.filter(
199
- (msg: string): boolean => msg !== set.message
200
- );
201
- this._messages = [ ...previousMessages, set?.message, ].filter(Boolean);
202
-
203
- if (
204
- -1 < highlightedErrorCodeIndex &&
205
- this._messages[highlightedErrorCodeIndex] &&
206
- this._messages[highlightedErrorCodeIndex] !== DynamoFM_error_defaults.message
207
- ) {
208
- this._message = this._messages[highlightedErrorCodeIndex];
209
- } else {
210
- this._message = this._messages?.[0];
211
- }
212
-
213
- /** set userMessages */
214
- let previousUserMessages: string[] = [];
215
-
216
- if ((set?.error as DynamoFM_Error)?.__userMessages) {
217
- previousUserMessages.push(...((set?.error as DynamoFM_Error)?.__userMessages ?? []));
218
- }
219
-
220
- if (!set.userMessage) {
221
- set.userMessage = DynamoFM_error_defaults.userMessage;
222
- }
223
-
224
- if (
225
- set.addECToUserMsg &&
226
- set.userMessage !== DynamoFM_error_defaults.userMessage &&
227
- set.errorCode
228
- ) {
229
- set.userMessage += `\nErrorCode: ${set.errorCode}`;
230
- }
231
- previousUserMessages = previousUserMessages.filter(
232
- (msg: string): boolean => msg !== set.userMessage
233
- );
234
- this.__userMessages = [ ...previousUserMessages, set?.userMessage ].filter(Boolean);
235
-
236
- if (
237
- -1 < highlightedErrorCodeIndex &&
238
- this.__userMessages[highlightedErrorCodeIndex] &&
239
- this.__userMessages[highlightedErrorCodeIndex] !== DynamoFM_error_defaults.userMessage
240
- ) {
241
- this.__userMessage = this.__userMessages[highlightedErrorCodeIndex];
242
- } else {
243
- this.__userMessage = this.__userMessages.filter(
244
- (msg: string): boolean => msg && msg !== DynamoFM_error_defaults.userMessage
245
- )?.[0];
246
- }
247
-
248
- /** set userMessageTranslateCode */
249
- set.userMessageTranslateCode =
250
- set?.userMessageTranslateCode ??
251
- (set?.error as DynamoFM_Error)?.__userMessageTranslateCode;
252
-
253
- /** set errors */
254
- let previousErrors: DynamoFM_AnyError[] = [];
255
-
256
- if ((set?.error as DynamoFM_Error)?.errors?.length) {
257
- previousErrors.push(...(set.error as DynamoFM_Error).errors);
258
- } else if (typeof (set?.error as DynamoFM_Error)?.errors == 'object') {
259
- this.additionalContent.errors = (set?.error as DynamoFM_Error).errors;
260
- }
261
- previousErrors = previousErrors.filter(
262
- (error: DynamoFM_AnyError): boolean => error !== set.error
263
- );
264
- this.errors = [ ...previousErrors, set?.error ].filter(Boolean);
265
-
266
- if (set?.errors) {
267
- if (0 < this.errors.length) {
268
- this.errors.push(...(set.errors ?? []));
269
- } else {
270
- this.errors.push(
271
- new Error('there are multiple errors. check errors after this one'),
272
- ...(set.errors ?? []),
273
- );
274
- }
275
- }
276
- this.error = this.errors?.[0];
277
- this.errors.map((error: DynamoFM_AnyError): any => {
278
- if ((error as DynamoFM_Error)?.flag?.includes('DYNAMO')) {
279
- const subError = { ...(error ?? {}) };
280
-
281
- if ((subError as DynamoFM_Error)?.errors) {
282
- delete (subError as DynamoFM_Error).errors;
283
- }
284
-
285
- return subError;
286
- }
287
- });
288
-
289
- if (set?.modestLog) {
290
- console.error(this._message ?? this.__userMessage ?? this.error);
291
- }
292
-
293
- if (set?.log) {
294
- console.error(this);
295
- }
296
- } catch (error) {
297
- DynamoFM_Log.error(
298
- '\n\nInternal Dynamo ERROR: Failed to create DynamoFM_Error...' +
299
- '\nerror:\n', error,
300
- '\n\ntrace:', new Error(),
301
- '\n\nset:', set,
302
- '\n\n'
303
- );
304
- }
305
- }
306
-
307
- getErrorSimplified(): DynamoFM_Error {
308
- const error: DynamoFM_Error = { ...this };
309
-
310
- delete error.errors;
311
-
312
- if ((error.error as DynamoFM_Error)?.error) {
313
- delete (error.error as DynamoFM_Error).error;
314
- }
315
-
316
- if ((error.error as DynamoFM_Error)?.errors) {
317
- delete (error.error as DynamoFM_Error).errors;
318
- }
319
-
320
- return error;
321
- }
322
-
323
- getErrorsFlat(): DynamoFM_Error {
324
- const error: DynamoFM_Error = { ...this };
325
-
326
- if ((error.error as DynamoFM_Error)?.error) {
327
- delete (error.error as DynamoFM_Error).error;
328
- }
329
-
330
- if ((error.error as DynamoFM_Error)?.errors) {
331
- delete (error.error as DynamoFM_Error).errors;
332
- }
333
-
334
- error.errors.map((err: DynamoFM_Error): void => {
335
- const subError = { ...(err ?? {}) };
336
-
337
- if (subError.errors) {
338
- delete subError.errors;
339
- }
340
-
341
- if ((subError.error as DynamoFM_Error)?.errors) {
342
- delete (subError.error as DynamoFM_Error).errors;
343
- }
344
-
345
- if ((subError.error as DynamoFM_Error)?.error) {
346
- delete (subError.error as DynamoFM_Error).error;
347
- }
348
- });
349
-
350
- return error;
351
- }
352
- }
353
-
354
- /*
355
-
356
- // //
357
- // RESPONSE STATUS //
358
- // //
359
-
360
- 1XX informational response
361
-
362
- 100 Continue
363
- 101 Switching Protocols
364
- 102 Processing
365
- 103 Early Hints
366
-
367
-
368
- 2XX success
369
-
370
- 200 OK
371
- 201 Created
372
- 202 Accepted
373
- 203 Non-Authoritative Information
374
- 204 No Content
375
- 205 Reset Content
376
- 206 Partial Content
377
- 207 Multi-Status
378
- 208 Already Reported
379
- 226 IM Used
380
-
381
-
382
- 3XX redirection
383
-
384
- 300 Multiple Choices
385
- 301 Moved Permanently
386
- 302 Found
387
- 303 See Other
388
- 304 Not Modified
389
- 305 Use Proxy
390
- 306 Switch Proxy
391
- 307 Temporary Redirect
392
- 308 Permanent Redirect
393
-
394
-
395
- 4XX client errors
396
-
397
- 400 Bad Request
398
- 401 Unauthorized
399
- 402 Payment Required
400
- 403 Forbidden
401
- 404 Not Found
402
- 405 Method Not Allowed
403
- 406 Not Acceptable
404
- 407 Proxy Authentication Required
405
- 408 Request Timeout
406
- 409 Conflict
407
- 410 Gone
408
- 411 Length Required
409
- 412 Precondition Failed
410
- 413 Payload Too Large
411
- 414 URI Too Long
412
- 415 Unsupported Media Type
413
- 416 Range Not Satisfiable
414
- 417 Expectation Failed
415
- 418 I'm a teapot
416
- 421 Misdirected Request
417
- 422 Unprocessable Entity
418
- 423 Locked
419
- 424 Failed Dependency
420
- 425 Too Early
421
- 426 Upgrade Required
422
- 428 Precondition Required
423
- 429 Too Many Requests
424
- 431 Request Header Fields Too Large
425
- 451 Unavailable For Legal Reasons
426
-
427
-
428
- 5XX server errors
429
-
430
- 500 Internal Server Error
431
- 501 Not Implemented
432
- 502 Bad Gateway
433
- 503 Service Unavailable
434
- 504 Gateway Timeout
435
- 505 HTTP Version Not Supported
436
- 506 Variant Also Negotiates
437
- 507 Insufficient Storage
438
- 508 Loop Detected
439
- 510 Not Extended
440
- 511 Network Authentication Required
441
-
442
-
443
- Unofficial codes
444
-
445
- 103 Checkpoint
446
- 218 This is fine (Apache Web Server)
447
- 419 Page Expired (Laravel Framework)
448
- 420 Enhance Your Calm (Twitter)
449
- 430 Request Header Fields Too Large (Shopify)
450
- 450 Blocked by Windows Parental Controls (Microsoft)
451
- 498 Invalid Token (Esri)
452
- 499 Token Required (Esri)
453
- 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)
454
- 526 Invalid SSL Certificate
455
- 529 Site is overloaded
456
- 530 Site is frozen
457
- 598 (Informal convention) Network read timeout error
458
-
459
- 440 Login Time-out
460
- 449 Retry With
461
- 451 Redirect
462
-
463
- 444 No Response
464
- 494 Request header too large
465
- 495 SSL Certificate Error
466
- 496 SSL Certificate Required
467
- 497 HTTP Request Sent to HTTPS Port
468
- 499 Client Closed Request
469
-
470
- 520 Web Server Returned an any Error
471
- 521 Web Server Is Down
472
- 522 Connection Timed Out
473
- 523 Origin Is Unreachable
474
- 524 A Timeout Occurred
475
- 525 SSL Handshake Failed
476
- 526 Invalid SSL Certificate
477
- 527 Railgun Error
478
-
479
- 530
480
-
481
- 460
482
- 463
483
-
484
- */
485
-
486
-
487
-
488
-
489
- /**
490
- * Returns the average of two numbers.
491
- *
492
- * @remarks
493
- * This method is part of the {@link core-library#Statistics | Statistics subsystem}.
494
- *
495
- * @param x - The first input number
496
- * @param y - The second input number
497
- * @returns The arithmetic mean of `x` and `y`
498
- *
499
- * @beta
500
- * @returns true if the specified tag is surrounded with `{`
501
- * and `}` characters.
502
- *
503
- * @example
504
- * Prints "true" for `{@link}` but "false" for `@internal`:
505
- * ```ts
506
- * console.log(isInlineTag('{@link}'));
507
- * console.log(isInlineTag('@internal'));
508
- * ```
509
- *
510
- *
511
- * @alpha
512
- * v
513
- * sadfas d
514
- * fs
515
- * daf
516
- * d as
517
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
518
- * a
519
- * @beta
520
- * v
521
- * sadfas d
522
- * fs
523
- * daf
524
- * d as
525
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
526
- * b
527
- * @decorator
528
- * v
529
- * sadfas d
530
- * fs
531
- * daf
532
- * d as
533
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
534
- * dc
535
- * @deprecated
536
- * v
537
- * sadfas d
538
- * fs
539
- * daf
540
- * d as
541
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
542
- * dp
543
- * @defaultValue
544
- * v
545
- * sadfas d
546
- * fs
547
- * daf
548
- * d as
549
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
550
- * dv
551
- * @eventProperty
552
- * v
553
- * sadfas d
554
- * fs
555
- * daf
556
- * d as
557
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
558
- * ep
559
- * @example
560
- * v
561
- * sadfas d
562
- * fs
563
- * daf
564
- * d as
565
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
566
- * ex
567
- * @experimental
568
- * v
569
- * sadfas d
570
- * fs
571
- * daf
572
- * d as
573
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
574
- * exp
575
- * @inheritDoc
576
- * v
577
- * sadfas d
578
- * fs
579
- * daf
580
- * d as
581
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
582
- * in
583
- * @internal
584
- * v
585
- * sadfas d
586
- * fs
587
- * daf
588
- * d as
589
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
590
- * int
591
- * @label
592
- * v
593
- * sadfas d
594
- * fs
595
- * daf
596
- * d as
597
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
598
- * lab
599
- * @link
600
- * v
601
- * sadfas d
602
- * fs
603
- * daf
604
- * d as
605
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
606
- * li
607
- * @override
608
- * v
609
- * sadfas d
610
- * fs
611
- * daf
612
- * d as
613
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
614
- * v
615
- * sadfas d
616
- * fs
617
- * daf
618
- * d as
619
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
620
- * ov
621
- * @packageDocumentation
622
- * v
623
- * sadfas d
624
- * fs
625
- * daf
626
- * d as
627
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
628
- * pad
629
- * @param
630
- * v
631
- * sadfas d
632
- * fs
633
- * daf
634
- * d as
635
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
636
- * par
637
- * @privateRemarks
638
- * v
639
- * sadfas d
640
- * fs
641
- * daf
642
- * d as
643
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
644
- * pr
645
- * @public
646
- * v
647
- * sadfas d
648
- * fs
649
- * daf
650
- * d as
651
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
652
- * p
653
- * @readonly
654
- * v
655
- * sadfas d
656
- * fs
657
- * daf
658
- * d as
659
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
660
- * re
661
- * @remarks
662
- * v
663
- * sadfas d
664
- * fs
665
- * daf
666
- * d as
667
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
668
- * rem
669
- * @returns
670
- * v
671
- * sadfas d
672
- * fs
673
- * daf
674
- * d as
675
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
676
- * ret
677
- * @sealed
678
- * v
679
- * sadfas d
680
- * fs
681
- * daf
682
- * d as
683
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
684
- * sea
685
- * @see
686
- * v
687
- * sadfas d
688
- * fs
689
- * daf
690
- * d as
691
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
692
- * see
693
- * @throws
694
- * v
695
- * sadfas d
696
- * fs
697
- * daf
698
- * d as
699
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
700
- * th
701
- * @typeParam
702
- * v
703
- * sadfas d
704
- * fs
705
- * daf
706
- * d as
707
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
708
- * typ
709
- * @virtual
710
- * v
711
- * sadfas d
712
- * fs
713
- * daf
714
- * d as
715
- * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
716
- *
717
- *
718
- * @see {@link http://example.com/@internal LINK}
719
- * @see {@link http://example.com/@internal http://example.com/@internal}
720
- */
721
- export interface TestDocumentationComments {}
722
-
1
+ import { DynamoFM_error_defaults } from '../../_collections/constants/error-defaults.const';
2
+ import { DynamoFM_ErrorLevel } from '../../_enums';
3
+ import { DynamoFM_Log } from '../../_collections/utils/log.util';
4
+ import { DynamoFM_Metadata } from '../data-models/metadata.data-model';
5
+
6
+ export type DFM_Error = DynamoFM_Error;
7
+
8
+ export interface DynamoFM_Error_Settings {
9
+ _id?: string;
10
+
11
+ handled?: boolean;
12
+ status?: number;
13
+
14
+ errorCode?: string;
15
+ message?: string;
16
+ userMessage?: string;
17
+ userMessageTranslateCode?: string;
18
+ addECToUserMsg?: boolean;
19
+
20
+ error?: DynamoFM_AnyError;
21
+ errors?: DynamoFM_AnyError[];
22
+
23
+ issuer?: string;
24
+ issuerSystem?: string;
25
+ issuerService?: string;
26
+
27
+ level?: DynamoFM_ErrorLevel;
28
+
29
+ levelUpThis?: boolean;
30
+ additionalContent?: any;
31
+ confidentialContent?: any;
32
+
33
+ modestLog?: boolean;
34
+ log?: boolean;
35
+
36
+ __created?: Date;
37
+ __createdBy?: string;
38
+ __lastModified?: Date;
39
+ __lastModifiedBy?: string;
40
+ __v?: number;
41
+ }
42
+
43
+ export type DynamoFM_AnyError = Error | DynamoFM_Error;
44
+
45
+ export class DynamoFM_Error extends DynamoFM_Metadata {
46
+ readonly flag = 'DYNAMO-ERROR-OBJECT-v2';
47
+
48
+ _errorCode?: string;
49
+ _errorCodes?: string[] = [];
50
+
51
+ /** contains all sub error messages, in reversed order */
52
+ _message?: string;
53
+ _messages?: string[] = [];
54
+
55
+ __userMessage?: string;
56
+ /** contains all sub error messages, in reversed order */
57
+ __userMessages?: string[] = [];
58
+ __userMessageTranslateCode?: string;
59
+
60
+ ___handled?: boolean;
61
+ ___status?: number;
62
+
63
+ ___issuer?: string;
64
+ ___issuerSystem?: string;
65
+ ___issuerService?: string;
66
+
67
+ error?: DynamoFM_AnyError;
68
+ errors?: DynamoFM_AnyError[] = [];
69
+
70
+ level?: DynamoFM_ErrorLevel;
71
+
72
+ levelUpThis?: boolean;
73
+ additionalContent?: any = {};
74
+ confidentialContent?: any = {};
75
+
76
+ constructor(
77
+ set?: DynamoFM_Error_Settings
78
+ ) {
79
+ super(
80
+ set,
81
+ {
82
+ issuer: set?.issuerService ??
83
+ (set?.error as DynamoFM_Error)?.___issuerService ??
84
+ DynamoFM_error_defaults.issuerService,
85
+ }
86
+ );
87
+
88
+ try {
89
+ if (!set) {
90
+ set = {};
91
+ }
92
+
93
+ /** set simple properties */
94
+ this.___handled = Boolean(set?.handled ?? (set?.error as DynamoFM_Error)?.___handled);
95
+ this.___status = set?.status ?? (set?.error as DynamoFM_Error)?.___status;
96
+ this.___issuer = set?.issuer ??
97
+ (set?.error as DynamoFM_Error)?.___issuer ??
98
+ DynamoFM_error_defaults.issuer;
99
+ this.___issuerSystem = set?.issuerSystem ??
100
+ (set?.error as DynamoFM_Error)?.___issuerSystem ??
101
+ DynamoFM_error_defaults.issuerSystem;
102
+ this.___issuerService = set?.issuerService ??
103
+ (set?.error as DynamoFM_Error)?.___issuerService ??
104
+ DynamoFM_error_defaults.issuerService;
105
+
106
+ this.level = set?.level ?? (set?.error as DynamoFM_Error)?.level ?? DynamoFM_ErrorLevel.error;
107
+
108
+ this.levelUpThis = set?.levelUpThis;
109
+
110
+ if (set?.additionalContent && (set?.error as DynamoFM_Error)?.additionalContent) {
111
+ this.additionalContent = {
112
+ ...(set?.error as DynamoFM_Error)?.additionalContent,
113
+ ...set.additionalContent,
114
+ };
115
+ } else if (set?.additionalContent) {
116
+ this.additionalContent = set.additionalContent;
117
+ } else if ((set?.error as DynamoFM_Error)?.additionalContent) {
118
+ this.additionalContent = (set?.error as DynamoFM_Error)?.additionalContent;
119
+ }
120
+
121
+ if (set?.confidentialContent && (set?.error as DynamoFM_Error)?.confidentialContent) {
122
+ this.confidentialContent = {
123
+ ...(set?.error as DynamoFM_Error)?.confidentialContent,
124
+ ...set.confidentialContent,
125
+ };
126
+ } else if (set?.confidentialContent) {
127
+ this.confidentialContent = set.confidentialContent;
128
+ } else if ((set?.error as DynamoFM_Error)?.confidentialContent) {
129
+ this.confidentialContent = (set?.error as DynamoFM_Error)?.confidentialContent;
130
+ }
131
+
132
+ /** set default error code */
133
+ if (!set.errorCode) {
134
+ set.errorCode = DynamoFM_error_defaults.errorCode;
135
+ }
136
+
137
+ /** set default error (self defined) */
138
+ if (!set?.error) {
139
+ set.error = new Error();
140
+ const errorStack: string[] = set.error.stack.split('\n');
141
+
142
+ errorStack.splice(1, 1);
143
+ set.error.stack = errorStack.join('\n');
144
+ }
145
+
146
+ /** set errorCodes */
147
+ let previousErrorCodes: string[] = [];
148
+
149
+ if ((set?.error as DynamoFM_Error)?._errorCodes) {
150
+ previousErrorCodes.push(...((set?.error as DynamoFM_Error)?._errorCodes ?? []));
151
+ }
152
+
153
+ if (!set.errorCode) {
154
+ set.errorCode = DynamoFM_error_defaults.errorCode;
155
+ }
156
+ previousErrorCodes = previousErrorCodes.filter(
157
+ (code: string): boolean => code !== set.errorCode
158
+ );
159
+ this._errorCodes = [ ...previousErrorCodes, set?.errorCode ].filter(Boolean);
160
+
161
+ /** bring up non NTS and non default first error */
162
+ const filteredErrorCodes: string[] = this._errorCodes.filter(
163
+ (code: string): boolean =>
164
+ code && code !== DynamoFM_error_defaults.errorCode && !code.includes('NTS-')
165
+ );
166
+
167
+ this._errorCode = filteredErrorCodes[0] ?? this._errorCodes?.[0];
168
+ const highlightedErrorCodeIndex: number = this._errorCodes.findIndex(
169
+ (code: string): boolean => code === filteredErrorCodes?.[0]
170
+ );
171
+
172
+ /** set message */
173
+ if (!set.message) {
174
+ if (typeof set?.error === 'string') {
175
+ /** string error */
176
+ set.message = set.error;
177
+ } else if (
178
+ !(set?.error as DynamoFM_Error)?.flag?.includes('DYNAMO') &&
179
+ (set?.error as Error)?.message
180
+ ) {
181
+ /** simple - non-dynamo - error */
182
+ set.message = (set?.error as Error)?.message;
183
+ } else if ((set.error as Error).stack) {
184
+ /** error not defined - self defining */
185
+ const posFull: string[] = (set.error as Error).stack.split('\n')?.[1]?.split('\\');
186
+
187
+ set.message = DynamoFM_error_defaults.message + '; ' + posFull[posFull.length - 1];
188
+ }
189
+ }
190
+ /** set messages */
191
+ let previousMessages: string[] = [];
192
+
193
+ if ((set?.error as DynamoFM_Error)?._messages) {
194
+ previousMessages.push(...((set?.error as DynamoFM_Error)?._messages ?? []));
195
+ } else if ((set?.error as Error)?.message) {
196
+ previousErrorCodes.push((set?.error as Error)?.message);
197
+ }
198
+ previousMessages = previousMessages.filter(
199
+ (msg: string): boolean => msg !== set.message
200
+ );
201
+ this._messages = [ ...previousMessages, set?.message ].filter(Boolean);
202
+
203
+ if (
204
+ -1 < highlightedErrorCodeIndex &&
205
+ this._messages[highlightedErrorCodeIndex] &&
206
+ this._messages[highlightedErrorCodeIndex] !== DynamoFM_error_defaults.message
207
+ ) {
208
+ this._message = this._messages[highlightedErrorCodeIndex];
209
+ } else {
210
+ this._message = this._messages?.[0];
211
+ }
212
+
213
+ /** set userMessages */
214
+ let previousUserMessages: string[] = [];
215
+
216
+ if ((set?.error as DynamoFM_Error)?.__userMessages) {
217
+ previousUserMessages.push(...((set?.error as DynamoFM_Error)?.__userMessages ?? []));
218
+ }
219
+
220
+ if (!set.userMessage) {
221
+ set.userMessage = DynamoFM_error_defaults.userMessage;
222
+ }
223
+
224
+ if (
225
+ set.addECToUserMsg &&
226
+ set.userMessage !== DynamoFM_error_defaults.userMessage &&
227
+ set.errorCode
228
+ ) {
229
+ set.userMessage += `\nErrorCode: ${set.errorCode}`;
230
+ }
231
+ previousUserMessages = previousUserMessages.filter(
232
+ (msg: string): boolean => msg !== set.userMessage
233
+ );
234
+ this.__userMessages = [ ...previousUserMessages, set?.userMessage ].filter(Boolean);
235
+
236
+ if (
237
+ -1 < highlightedErrorCodeIndex &&
238
+ this.__userMessages[highlightedErrorCodeIndex] &&
239
+ this.__userMessages[highlightedErrorCodeIndex] !== DynamoFM_error_defaults.userMessage
240
+ ) {
241
+ this.__userMessage = this.__userMessages[highlightedErrorCodeIndex];
242
+ } else {
243
+ this.__userMessage = this.__userMessages.filter(
244
+ (msg: string): boolean => msg && msg !== DynamoFM_error_defaults.userMessage
245
+ )?.[0];
246
+ }
247
+
248
+ /** set userMessageTranslateCode */
249
+ set.userMessageTranslateCode =
250
+ set?.userMessageTranslateCode ??
251
+ (set?.error as DynamoFM_Error)?.__userMessageTranslateCode;
252
+
253
+ /** set errors */
254
+ let previousErrors: DynamoFM_AnyError[] = [];
255
+
256
+ if ((set?.error as DynamoFM_Error)?.errors?.length) {
257
+ previousErrors.push(...(set.error as DynamoFM_Error).errors);
258
+ } else if (typeof (set?.error as DynamoFM_Error)?.errors == 'object') {
259
+ this.additionalContent.errors = (set?.error as DynamoFM_Error).errors;
260
+ }
261
+ previousErrors = previousErrors.filter(
262
+ (error: DynamoFM_AnyError): boolean => error !== set.error
263
+ );
264
+ this.errors = [ ...previousErrors, set?.error ].filter(Boolean);
265
+
266
+ if (set?.errors) {
267
+ if (0 < this.errors.length) {
268
+ this.errors.push(...(set.errors ?? []));
269
+ } else {
270
+ this.errors.push(
271
+ new Error('there are multiple errors. check errors after this one'),
272
+ ...(set.errors ?? []),
273
+ );
274
+ }
275
+ }
276
+ this.error = this.errors?.[0];
277
+ this.errors.map((error: DynamoFM_AnyError): any => {
278
+ if ((error as DynamoFM_Error)?.flag?.includes('DYNAMO')) {
279
+ const subError = { ...(error ?? {}) };
280
+
281
+ if ((subError as DynamoFM_Error)?.errors) {
282
+ delete (subError as DynamoFM_Error).errors;
283
+ }
284
+
285
+ return subError;
286
+ }
287
+ });
288
+
289
+ if (set?.modestLog) {
290
+ console.error(this._message ?? this.__userMessage ?? this.error);
291
+ }
292
+
293
+ if (set?.log) {
294
+ console.error(this);
295
+ }
296
+ } catch (error) {
297
+ DynamoFM_Log.error(
298
+ '\n\nInternal Dynamo ERROR: Failed to create DynamoFM_Error...' +
299
+ '\nerror:\n', error,
300
+ '\n\ntrace:', new Error(),
301
+ '\n\nset:', set,
302
+ '\n\n'
303
+ );
304
+ }
305
+ }
306
+
307
+ getErrorSimplified(): DynamoFM_Error {
308
+ const error: DynamoFM_Error = { ...this };
309
+
310
+ delete error.errors;
311
+
312
+ if ((error.error as DynamoFM_Error)?.error) {
313
+ delete (error.error as DynamoFM_Error).error;
314
+ }
315
+
316
+ if ((error.error as DynamoFM_Error)?.errors) {
317
+ delete (error.error as DynamoFM_Error).errors;
318
+ }
319
+
320
+ return error;
321
+ }
322
+
323
+ getErrorsFlat(): DynamoFM_Error {
324
+ const error: DynamoFM_Error = { ...this };
325
+
326
+ if ((error.error as DynamoFM_Error)?.error) {
327
+ delete (error.error as DynamoFM_Error).error;
328
+ }
329
+
330
+ if ((error.error as DynamoFM_Error)?.errors) {
331
+ delete (error.error as DynamoFM_Error).errors;
332
+ }
333
+
334
+ error.errors.map((err: DynamoFM_Error): void => {
335
+ const subError = { ...(err ?? {}) };
336
+
337
+ if (subError.errors) {
338
+ delete subError.errors;
339
+ }
340
+
341
+ if ((subError.error as DynamoFM_Error)?.errors) {
342
+ delete (subError.error as DynamoFM_Error).errors;
343
+ }
344
+
345
+ if ((subError.error as DynamoFM_Error)?.error) {
346
+ delete (subError.error as DynamoFM_Error).error;
347
+ }
348
+ });
349
+
350
+ return error;
351
+ }
352
+ }
353
+
354
+ /*
355
+
356
+ // //
357
+ // RESPONSE STATUS //
358
+ // //
359
+
360
+ 1XX informational response
361
+
362
+ 100 Continue
363
+ 101 Switching Protocols
364
+ 102 Processing
365
+ 103 Early Hints
366
+
367
+
368
+ 2XX success
369
+
370
+ 200 OK
371
+ 201 Created
372
+ 202 Accepted
373
+ 203 Non-Authoritative Information
374
+ 204 No Content
375
+ 205 Reset Content
376
+ 206 Partial Content
377
+ 207 Multi-Status
378
+ 208 Already Reported
379
+ 226 IM Used
380
+
381
+
382
+ 3XX redirection
383
+
384
+ 300 Multiple Choices
385
+ 301 Moved Permanently
386
+ 302 Found
387
+ 303 See Other
388
+ 304 Not Modified
389
+ 305 Use Proxy
390
+ 306 Switch Proxy
391
+ 307 Temporary Redirect
392
+ 308 Permanent Redirect
393
+
394
+
395
+ 4XX client errors
396
+
397
+ 400 Bad Request
398
+ 401 Unauthorized
399
+ 402 Payment Required
400
+ 403 Forbidden
401
+ 404 Not Found
402
+ 405 Method Not Allowed
403
+ 406 Not Acceptable
404
+ 407 Proxy Authentication Required
405
+ 408 Request Timeout
406
+ 409 Conflict
407
+ 410 Gone
408
+ 411 Length Required
409
+ 412 Precondition Failed
410
+ 413 Payload Too Large
411
+ 414 URI Too Long
412
+ 415 Unsupported Media Type
413
+ 416 Range Not Satisfiable
414
+ 417 Expectation Failed
415
+ 418 I'm a teapot
416
+ 421 Misdirected Request
417
+ 422 Unprocessable Entity
418
+ 423 Locked
419
+ 424 Failed Dependency
420
+ 425 Too Early
421
+ 426 Upgrade Required
422
+ 428 Precondition Required
423
+ 429 Too Many Requests
424
+ 431 Request Header Fields Too Large
425
+ 451 Unavailable For Legal Reasons
426
+
427
+
428
+ 5XX server errors
429
+
430
+ 500 Internal Server Error
431
+ 501 Not Implemented
432
+ 502 Bad Gateway
433
+ 503 Service Unavailable
434
+ 504 Gateway Timeout
435
+ 505 HTTP Version Not Supported
436
+ 506 Variant Also Negotiates
437
+ 507 Insufficient Storage
438
+ 508 Loop Detected
439
+ 510 Not Extended
440
+ 511 Network Authentication Required
441
+
442
+
443
+ Unofficial codes
444
+
445
+ 103 Checkpoint
446
+ 218 This is fine (Apache Web Server)
447
+ 419 Page Expired (Laravel Framework)
448
+ 420 Enhance Your Calm (Twitter)
449
+ 430 Request Header Fields Too Large (Shopify)
450
+ 450 Blocked by Windows Parental Controls (Microsoft)
451
+ 498 Invalid Token (Esri)
452
+ 499 Token Required (Esri)
453
+ 509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)
454
+ 526 Invalid SSL Certificate
455
+ 529 Site is overloaded
456
+ 530 Site is frozen
457
+ 598 (Informal convention) Network read timeout error
458
+
459
+ 440 Login Time-out
460
+ 449 Retry With
461
+ 451 Redirect
462
+
463
+ 444 No Response
464
+ 494 Request header too large
465
+ 495 SSL Certificate Error
466
+ 496 SSL Certificate Required
467
+ 497 HTTP Request Sent to HTTPS Port
468
+ 499 Client Closed Request
469
+
470
+ 520 Web Server Returned an any Error
471
+ 521 Web Server Is Down
472
+ 522 Connection Timed Out
473
+ 523 Origin Is Unreachable
474
+ 524 A Timeout Occurred
475
+ 525 SSL Handshake Failed
476
+ 526 Invalid SSL Certificate
477
+ 527 Railgun Error
478
+
479
+ 530
480
+
481
+ 460
482
+ 463
483
+
484
+ */
485
+
486
+
487
+
488
+
489
+ /**
490
+ * Returns the average of two numbers.
491
+ *
492
+ * @remarks
493
+ * This method is part of the {@link core-library#Statistics | Statistics subsystem}.
494
+ *
495
+ * @param x - The first input number
496
+ * @param y - The second input number
497
+ * @returns The arithmetic mean of `x` and `y`
498
+ *
499
+ * @beta
500
+ * @returns true if the specified tag is surrounded with `{`
501
+ * and `}` characters.
502
+ *
503
+ * @example
504
+ * Prints "true" for `{@link}` but "false" for `@internal`:
505
+ * ```ts
506
+ * console.log(isInlineTag('{@link}'));
507
+ * console.log(isInlineTag('@internal'));
508
+ * ```
509
+ *
510
+ *
511
+ * @alpha
512
+ * v
513
+ * sadfas d
514
+ * fs
515
+ * daf
516
+ * d as
517
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
518
+ * a
519
+ * @beta
520
+ * v
521
+ * sadfas d
522
+ * fs
523
+ * daf
524
+ * d as
525
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
526
+ * b
527
+ * @decorator
528
+ * v
529
+ * sadfas d
530
+ * fs
531
+ * daf
532
+ * d as
533
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
534
+ * dc
535
+ * @deprecated
536
+ * v
537
+ * sadfas d
538
+ * fs
539
+ * daf
540
+ * d as
541
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
542
+ * dp
543
+ * @defaultValue
544
+ * v
545
+ * sadfas d
546
+ * fs
547
+ * daf
548
+ * d as
549
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
550
+ * dv
551
+ * @eventProperty
552
+ * v
553
+ * sadfas d
554
+ * fs
555
+ * daf
556
+ * d as
557
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
558
+ * ep
559
+ * @example
560
+ * v
561
+ * sadfas d
562
+ * fs
563
+ * daf
564
+ * d as
565
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
566
+ * ex
567
+ * @experimental
568
+ * v
569
+ * sadfas d
570
+ * fs
571
+ * daf
572
+ * d as
573
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
574
+ * exp
575
+ * @inheritDoc
576
+ * v
577
+ * sadfas d
578
+ * fs
579
+ * daf
580
+ * d as
581
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
582
+ * in
583
+ * @internal
584
+ * v
585
+ * sadfas d
586
+ * fs
587
+ * daf
588
+ * d as
589
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
590
+ * int
591
+ * @label
592
+ * v
593
+ * sadfas d
594
+ * fs
595
+ * daf
596
+ * d as
597
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
598
+ * lab
599
+ * @link
600
+ * v
601
+ * sadfas d
602
+ * fs
603
+ * daf
604
+ * d as
605
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
606
+ * li
607
+ * @override
608
+ * v
609
+ * sadfas d
610
+ * fs
611
+ * daf
612
+ * d as
613
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
614
+ * v
615
+ * sadfas d
616
+ * fs
617
+ * daf
618
+ * d as
619
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
620
+ * ov
621
+ * @packageDocumentation
622
+ * v
623
+ * sadfas d
624
+ * fs
625
+ * daf
626
+ * d as
627
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
628
+ * pad
629
+ * @param
630
+ * v
631
+ * sadfas d
632
+ * fs
633
+ * daf
634
+ * d as
635
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
636
+ * par
637
+ * @privateRemarks
638
+ * v
639
+ * sadfas d
640
+ * fs
641
+ * daf
642
+ * d as
643
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
644
+ * pr
645
+ * @public
646
+ * v
647
+ * sadfas d
648
+ * fs
649
+ * daf
650
+ * d as
651
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
652
+ * p
653
+ * @readonly
654
+ * v
655
+ * sadfas d
656
+ * fs
657
+ * daf
658
+ * d as
659
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
660
+ * re
661
+ * @remarks
662
+ * v
663
+ * sadfas d
664
+ * fs
665
+ * daf
666
+ * d as
667
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
668
+ * rem
669
+ * @returns
670
+ * v
671
+ * sadfas d
672
+ * fs
673
+ * daf
674
+ * d as
675
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
676
+ * ret
677
+ * @sealed
678
+ * v
679
+ * sadfas d
680
+ * fs
681
+ * daf
682
+ * d as
683
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
684
+ * sea
685
+ * @see
686
+ * v
687
+ * sadfas d
688
+ * fs
689
+ * daf
690
+ * d as
691
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
692
+ * see
693
+ * @throws
694
+ * v
695
+ * sadfas d
696
+ * fs
697
+ * daf
698
+ * d as
699
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
700
+ * th
701
+ * @typeParam
702
+ * v
703
+ * sadfas d
704
+ * fs
705
+ * daf
706
+ * d as
707
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
708
+ * typ
709
+ * @virtual
710
+ * v
711
+ * sadfas d
712
+ * fs
713
+ * daf
714
+ * d as
715
+ * dafs // asd sa `sadf ` sadf asd******* asdf asd f asd
716
+ *
717
+ *
718
+ * @see {@link http://example.com/@internal LINK}
719
+ * @see {@link http://example.com/@internal http://example.com/@internal}
720
+ */
721
+ export interface TestDocumentationComments {}
722
+