corexxx 1.0.142 → 1.0.148
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/dist/dassert.d.ts +39 -10
- package/dist/dassert.js +74 -41
- package/dist/dassert.js.map +1 -1
- package/dist/dnetwork.d.ts +5 -2
- package/dist/dnetwork.js +150 -47
- package/dist/dnetwork.js.map +1 -1
- package/package.json +1 -1
- package/src/dassert.ts +136 -37
- package/src/dnetwork.ts +186 -66
package/dist/dassert.d.ts
CHANGED
|
@@ -1,12 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DError - Extended Error class with error codes and metadata
|
|
3
|
+
*
|
|
4
|
+
* Provides a custom error class that extends Error with:
|
|
5
|
+
* - Error codes for categorization
|
|
6
|
+
* - Error metadata for additional context
|
|
7
|
+
* - Backward compatibility with standard Error
|
|
8
|
+
*/
|
|
9
|
+
export declare class DError extends Error {
|
|
10
|
+
code: string;
|
|
11
|
+
metadata?: Record<string, any>;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
constructor(message: string, code?: string, metadata?: Record<string, any>);
|
|
14
|
+
/**
|
|
15
|
+
* Convert error to JSON for logging/serialization
|
|
16
|
+
*/
|
|
17
|
+
toJSON(): {
|
|
18
|
+
name: string;
|
|
19
|
+
message: string;
|
|
20
|
+
code: string;
|
|
21
|
+
metadata: Record<string, any> | undefined;
|
|
22
|
+
timestamp: number;
|
|
23
|
+
stack: string | undefined;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Convert error to string representation
|
|
27
|
+
*/
|
|
28
|
+
toString(): string;
|
|
29
|
+
}
|
|
1
30
|
export declare namespace dassert {
|
|
2
|
-
function verifyOrThrow(cond: boolean, msg: string): void;
|
|
3
|
-
function verifyNotNullAndEmpty(data: any, msg: string): void;
|
|
4
|
-
function verifyOrCrash(cond: boolean, msg?: string): void;
|
|
5
|
-
function assertNotEmpty(data: string, msg?: string): void;
|
|
6
|
-
function getOrThrow(cond: boolean, msg: string): true;
|
|
7
|
-
function verifyNotNullAndUndef(data: any, msg: string): void;
|
|
8
|
-
function verifyObject(data: any, msg: string): void;
|
|
9
|
-
function verifyArray(data: any, msg: string): void;
|
|
10
|
-
function verifyString(data: any, msg: string): void;
|
|
11
|
-
function verifyValidItem(item: string, arr: string[]): void;
|
|
31
|
+
function verifyOrThrow(cond: boolean, msg: string, code?: string): void;
|
|
32
|
+
function verifyNotNullAndEmpty(data: any, msg: string, code?: string): void;
|
|
33
|
+
function verifyOrCrash(cond: boolean, msg?: string, code?: string): void;
|
|
34
|
+
function assertNotEmpty(data: string, msg?: string, code?: string): void;
|
|
35
|
+
function getOrThrow(cond: boolean, msg: string, code?: string): true;
|
|
36
|
+
function verifyNotNullAndUndef(data: any, msg: string, code?: string): void;
|
|
37
|
+
function verifyObject(data: any, msg: string, code?: string): void;
|
|
38
|
+
function verifyArray(data: any, msg: string, code?: string): void;
|
|
39
|
+
function verifyString(data: any, msg: string, code?: string): void;
|
|
40
|
+
function verifyValidItem(item: string, arr: string[], code?: string): void;
|
|
12
41
|
}
|
package/dist/dassert.js
CHANGED
|
@@ -1,87 +1,120 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* DError - Extended Error class with error codes and metadata
|
|
4
|
+
*
|
|
5
|
+
* Provides a custom error class that extends Error with:
|
|
6
|
+
* - Error codes for categorization
|
|
7
|
+
* - Error metadata for additional context
|
|
8
|
+
* - Backward compatibility with standard Error
|
|
9
|
+
*/
|
|
5
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.dassert = void 0;
|
|
7
|
-
|
|
11
|
+
exports.dassert = exports.DError = void 0;
|
|
12
|
+
class DError extends Error {
|
|
13
|
+
constructor(message, code = "UNKNOWN_ERROR", metadata) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "DError";
|
|
16
|
+
this.code = code;
|
|
17
|
+
this.metadata = metadata;
|
|
18
|
+
this.timestamp = Date.now();
|
|
19
|
+
// Maintain proper prototype chain
|
|
20
|
+
Object.setPrototypeOf(this, DError.prototype);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert error to JSON for logging/serialization
|
|
24
|
+
*/
|
|
25
|
+
toJSON() {
|
|
26
|
+
return {
|
|
27
|
+
name: this.name,
|
|
28
|
+
message: this.message,
|
|
29
|
+
code: this.code,
|
|
30
|
+
metadata: this.metadata,
|
|
31
|
+
timestamp: this.timestamp,
|
|
32
|
+
stack: this.stack,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Convert error to string representation
|
|
37
|
+
*/
|
|
38
|
+
toString() {
|
|
39
|
+
return `[${this.code}] ${this.message}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.DError = DError;
|
|
8
43
|
var dassert;
|
|
9
44
|
(function (dassert) {
|
|
10
|
-
function verifyOrThrow(cond, msg) {
|
|
45
|
+
function verifyOrThrow(cond, msg, code = "VERIFICATION_FAILED") {
|
|
11
46
|
if (!cond) {
|
|
12
|
-
throw
|
|
47
|
+
throw new DError(msg, code);
|
|
13
48
|
}
|
|
14
49
|
}
|
|
15
50
|
dassert.verifyOrThrow = verifyOrThrow;
|
|
16
|
-
function verifyNotNullAndEmpty(data, msg) {
|
|
17
|
-
if (
|
|
18
|
-
|
|
51
|
+
function verifyNotNullAndEmpty(data, msg, code = "NULL_OR_EMPTY_ERROR") {
|
|
52
|
+
if (data == null ||
|
|
53
|
+
data === undefined ||
|
|
54
|
+
(typeof data === "object" && Object.keys(data).length === 0)) {
|
|
55
|
+
throw new DError(msg, code, { data });
|
|
19
56
|
}
|
|
20
57
|
// empty string
|
|
21
|
-
if (
|
|
22
|
-
throw
|
|
58
|
+
if (typeof data === "string" && data.trim().length === 0) {
|
|
59
|
+
throw new DError(msg, code, { data });
|
|
23
60
|
}
|
|
24
61
|
// empty array
|
|
25
|
-
if (
|
|
26
|
-
throw
|
|
27
|
-
}
|
|
28
|
-
// empty object
|
|
29
|
-
if (underscore_1.default.isObject(data) && Object.keys(data).length == 0) {
|
|
30
|
-
throw Error(msg);
|
|
62
|
+
if (Array.isArray(data) && data.length === 0) {
|
|
63
|
+
throw new DError(msg, code, { data });
|
|
31
64
|
}
|
|
32
65
|
}
|
|
33
66
|
dassert.verifyNotNullAndEmpty = verifyNotNullAndEmpty;
|
|
34
|
-
function verifyOrCrash(cond, msg = "Verify and crash called") {
|
|
67
|
+
function verifyOrCrash(cond, msg = "Verify and crash called", code = "CRASH_ERROR") {
|
|
35
68
|
if (!cond) {
|
|
36
|
-
throw new
|
|
69
|
+
throw new DError(msg, code);
|
|
37
70
|
}
|
|
38
71
|
}
|
|
39
72
|
dassert.verifyOrCrash = verifyOrCrash;
|
|
40
|
-
function assertNotEmpty(data, msg = "Data is empty which I am not expecting") {
|
|
41
|
-
if (data == null || data
|
|
42
|
-
throw new
|
|
73
|
+
function assertNotEmpty(data, msg = "Data is empty which I am not expecting", code = "EMPTY_DATA_ERROR") {
|
|
74
|
+
if (data == null || data === undefined || data.length === 0) {
|
|
75
|
+
throw new DError(msg, code, { data });
|
|
43
76
|
}
|
|
44
77
|
}
|
|
45
78
|
dassert.assertNotEmpty = assertNotEmpty;
|
|
46
|
-
function getOrThrow(cond, msg) {
|
|
79
|
+
function getOrThrow(cond, msg, code = "GET_OR_THROW_ERROR") {
|
|
47
80
|
if (!cond) {
|
|
48
|
-
throw
|
|
81
|
+
throw new DError(msg, code);
|
|
49
82
|
}
|
|
50
83
|
else {
|
|
51
84
|
return cond;
|
|
52
85
|
}
|
|
53
86
|
}
|
|
54
87
|
dassert.getOrThrow = getOrThrow;
|
|
55
|
-
function verifyNotNullAndUndef(data, msg) {
|
|
88
|
+
function verifyNotNullAndUndef(data, msg, code = "NULL_OR_UNDEFINED_ERROR") {
|
|
56
89
|
if (data == null || data === undefined) {
|
|
57
|
-
throw
|
|
90
|
+
throw new DError(msg, code, { data });
|
|
58
91
|
}
|
|
59
92
|
}
|
|
60
93
|
dassert.verifyNotNullAndUndef = verifyNotNullAndUndef;
|
|
61
|
-
function verifyObject(data, msg) {
|
|
62
|
-
if (
|
|
63
|
-
throw
|
|
94
|
+
function verifyObject(data, msg, code = "NOT_OBJECT_ERROR") {
|
|
95
|
+
if (Array.isArray(data)) {
|
|
96
|
+
throw new DError(msg, code, { data, type: "array" });
|
|
64
97
|
}
|
|
65
|
-
if (
|
|
66
|
-
throw
|
|
98
|
+
if (typeof data !== "object" || data === null) {
|
|
99
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
67
100
|
}
|
|
68
101
|
}
|
|
69
102
|
dassert.verifyObject = verifyObject;
|
|
70
|
-
function verifyArray(data, msg) {
|
|
71
|
-
if (!
|
|
72
|
-
throw
|
|
103
|
+
function verifyArray(data, msg, code = "NOT_ARRAY_ERROR") {
|
|
104
|
+
if (!Array.isArray(data)) {
|
|
105
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
73
106
|
}
|
|
74
107
|
}
|
|
75
108
|
dassert.verifyArray = verifyArray;
|
|
76
|
-
function verifyString(data, msg) {
|
|
77
|
-
if (
|
|
78
|
-
throw
|
|
109
|
+
function verifyString(data, msg, code = "NOT_STRING_ERROR") {
|
|
110
|
+
if (typeof data !== "string") {
|
|
111
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
79
112
|
}
|
|
80
113
|
}
|
|
81
114
|
dassert.verifyString = verifyString;
|
|
82
|
-
function verifyValidItem(item, arr) {
|
|
83
|
-
if (arr.
|
|
84
|
-
throw
|
|
115
|
+
function verifyValidItem(item, arr, code = "INVALID_ITEM_ERROR") {
|
|
116
|
+
if (!arr.includes(item)) {
|
|
117
|
+
throw new DError(`Invalid value <${item}>, The input value must belong to ${JSON.stringify(arr)}`, code, { item, validItems: arr });
|
|
85
118
|
}
|
|
86
119
|
}
|
|
87
120
|
dassert.verifyValidItem = verifyValidItem;
|
package/dist/dassert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dassert.js","sourceRoot":"","sources":["../src/dassert.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dassert.js","sourceRoot":"","sources":["../src/dassert.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,MAAa,MAAO,SAAQ,KAAK;IAK/B,YACE,OAAe,EACf,OAAe,eAAe,EAC9B,QAA8B;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5B,kCAAkC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;CACF;AAxCD,wBAwCC;AAED,IAAiB,OAAO,CA2HvB;AA3HD,WAAiB,OAAO;IACtB,SAAgB,aAAa,CAC3B,IAAa,EACb,GAAW,EACX,OAAe,qBAAqB;QAEpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IARe,qBAAa,gBAQ5B,CAAA;IAED,SAAgB,qBAAqB,CACnC,IAAS,EACT,GAAW,EACX,OAAe,qBAAqB;QAEpC,IACE,IAAI,IAAI,IAAI;YACZ,IAAI,KAAK,SAAS;YAClB,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5D,CAAC;YACD,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,eAAe;QACf,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,cAAc;QACd,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IApBe,6BAAqB,wBAoBpC,CAAA;IAED,SAAgB,aAAa,CAC3B,IAAa,EACb,MAAc,yBAAyB,EACvC,OAAe,aAAa;QAE5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IARe,qBAAa,gBAQ5B,CAAA;IAED,SAAgB,cAAc,CAC5B,IAAY,EACZ,MAAc,wCAAwC,EACtD,OAAe,kBAAkB;QAEjC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IARe,sBAAc,iBAQ7B,CAAA;IAED,SAAgB,UAAU,CACxB,IAAa,EACb,GAAW,EACX,OAAe,oBAAoB;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAVe,kBAAU,aAUzB,CAAA;IAED,SAAgB,qBAAqB,CACnC,IAAS,EACT,GAAW,EACX,OAAe,yBAAyB;QAExC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IARe,6BAAqB,wBAQpC,CAAA;IAED,SAAgB,YAAY,CAC1B,IAAS,EACT,GAAW,EACX,OAAe,kBAAkB;QAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAXe,oBAAY,eAW3B,CAAA;IAED,SAAgB,WAAW,CACzB,IAAS,EACT,GAAW,EACX,OAAe,iBAAiB;QAEhC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IARe,mBAAW,cAQ1B,CAAA;IAED,SAAgB,YAAY,CAC1B,IAAS,EACT,GAAW,EACX,OAAe,kBAAkB;QAEjC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IARe,oBAAY,eAQ3B,CAAA;IAED,SAAgB,eAAe,CAC7B,IAAY,EACZ,GAAa,EACb,OAAe,oBAAoB;QAEnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,MAAM,CACd,kBAAkB,IAAI,qCAAqC,IAAI,CAAC,SAAS,CACvE,GAAG,CACJ,EAAE,EACH,IAAI,EACJ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAde,uBAAe,kBAc9B,CAAA;AACH,CAAC,EA3HgB,OAAO,uBAAP,OAAO,QA2HvB"}
|
package/dist/dnetwork.d.ts
CHANGED
|
@@ -7,12 +7,15 @@
|
|
|
7
7
|
* - All responses are checked for HTTP success
|
|
8
8
|
* - JSON responses are parsed and returned as objects
|
|
9
9
|
* - SimpleStore helpers for common API patterns
|
|
10
|
+
* - Detailed error handling for network issues
|
|
10
11
|
*/
|
|
11
12
|
import { AxiosRequestConfig } from "axios";
|
|
13
|
+
import { DError } from "./dassert";
|
|
12
14
|
import { TObject } from "./dtypes";
|
|
13
|
-
export declare class NetworkError<T = any> extends
|
|
15
|
+
export declare class NetworkError<T = any> extends DError {
|
|
14
16
|
data?: T;
|
|
15
|
-
|
|
17
|
+
statusCode?: number;
|
|
18
|
+
constructor(message: string, code?: string, data?: T, statusCode?: number);
|
|
16
19
|
}
|
|
17
20
|
export declare namespace dnetwork {
|
|
18
21
|
/**
|
package/dist/dnetwork.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* - All responses are checked for HTTP success
|
|
9
9
|
* - JSON responses are parsed and returned as objects
|
|
10
10
|
* - SimpleStore helpers for common API patterns
|
|
11
|
+
* - Detailed error handling for network issues
|
|
11
12
|
*/
|
|
12
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -27,26 +28,80 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
27
28
|
const dassert_1 = require("./dassert");
|
|
28
29
|
const dlog_1 = require("./dlog");
|
|
29
30
|
// Custom error class for network-related errors
|
|
30
|
-
class NetworkError extends
|
|
31
|
-
constructor(message, data) {
|
|
32
|
-
super(message);
|
|
31
|
+
class NetworkError extends dassert_1.DError {
|
|
32
|
+
constructor(message, code = "NETWORK_ERROR", data, statusCode) {
|
|
33
|
+
super(message, code, { data, statusCode });
|
|
33
34
|
this.name = "NetworkError";
|
|
34
35
|
this.data = data;
|
|
35
|
-
|
|
36
|
+
this.statusCode = statusCode;
|
|
37
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
exports.NetworkError = NetworkError;
|
|
39
41
|
var dnetwork;
|
|
40
42
|
(function (dnetwork) {
|
|
43
|
+
/**
|
|
44
|
+
* Helper function to categorize and handle axios errors
|
|
45
|
+
*/
|
|
46
|
+
function handleAxiosError(error, url) {
|
|
47
|
+
var _a, _b, _c;
|
|
48
|
+
let code = "NETWORK_ERROR";
|
|
49
|
+
let message = "Unknown network error";
|
|
50
|
+
if (error.code === "ECONNABORTED") {
|
|
51
|
+
code = "TIMEOUT_ERROR";
|
|
52
|
+
message = `Request timeout. The server took too long to respond.`;
|
|
53
|
+
}
|
|
54
|
+
else if (error.code === "ENOTFOUND" || error.code === "ECONNREFUSED") {
|
|
55
|
+
code = "SERVER_UNREACHABLE";
|
|
56
|
+
message = `Server unreachable. Check your internet connection or DNS settings.`;
|
|
57
|
+
}
|
|
58
|
+
else if (error.code === "ENETUNREACH") {
|
|
59
|
+
code = "NO_INTERNET";
|
|
60
|
+
message = `No internet connection. Unable to reach ${url}.`;
|
|
61
|
+
}
|
|
62
|
+
else if (error.response && error.response.status >= 500) {
|
|
63
|
+
code = "SERVER_ERROR_5XX";
|
|
64
|
+
message = `Server error (${error.response.status}) : ${error.response.statusText}`;
|
|
65
|
+
}
|
|
66
|
+
else if (error.response && error.response.status === 404) {
|
|
67
|
+
code = "NOT_FOUND";
|
|
68
|
+
message = `Resource not found (404) `;
|
|
69
|
+
}
|
|
70
|
+
else if (error.response && error.response.status === 403) {
|
|
71
|
+
code = "FORBIDDEN";
|
|
72
|
+
message = `Access forbidden (403) `;
|
|
73
|
+
}
|
|
74
|
+
else if (error.message === "Network Error") {
|
|
75
|
+
code = "NETWORK_UNREACHABLE";
|
|
76
|
+
message = `Network is unreachable `;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
message = error.message || "Unknown error occurred";
|
|
80
|
+
}
|
|
81
|
+
dlog_1.dlog.e(`[Network Error] ${message}`, {
|
|
82
|
+
url,
|
|
83
|
+
code,
|
|
84
|
+
status: (_a = error.response) === null || _a === void 0 ? void 0 : _a.status,
|
|
85
|
+
});
|
|
86
|
+
throw new NetworkError(message, code, (_b = error.response) === null || _b === void 0 ? void 0 : _b.data, (_c = error.response) === null || _c === void 0 ? void 0 : _c.status);
|
|
87
|
+
}
|
|
41
88
|
/**
|
|
42
89
|
* Perform a GET request and return the response data.
|
|
43
90
|
*/
|
|
44
91
|
function get(url, config) {
|
|
45
92
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
93
|
+
try {
|
|
94
|
+
dlog_1.dlog.d(`GET ${url}`);
|
|
95
|
+
const result = yield axios_1.default.get(url, config);
|
|
96
|
+
dassert_1.dassert.verifyOrThrow(result.status >= 200 && result.status < 300, `GET request to URL ${url} failed with status ${result.status}`, "HTTP_STATUS_ERROR");
|
|
97
|
+
return result.data;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
101
|
+
handleAxiosError(error, url);
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
50
105
|
});
|
|
51
106
|
}
|
|
52
107
|
dnetwork.get = get;
|
|
@@ -55,15 +110,23 @@ var dnetwork;
|
|
|
55
110
|
*/
|
|
56
111
|
function getJson(url, config) {
|
|
57
112
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
const res = yield get(url, config);
|
|
59
|
-
if (typeof res === "object" && res !== null) {
|
|
60
|
-
return res;
|
|
61
|
-
}
|
|
62
113
|
try {
|
|
63
|
-
|
|
114
|
+
const res = yield get(url, config);
|
|
115
|
+
if (typeof res === "object" && res !== null) {
|
|
116
|
+
return res;
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
return JSON.parse(res);
|
|
120
|
+
}
|
|
121
|
+
catch (_a) {
|
|
122
|
+
throw new NetworkError("Response is not valid JSON", "JSON_PARSE_ERROR", res);
|
|
123
|
+
}
|
|
64
124
|
}
|
|
65
|
-
catch (
|
|
66
|
-
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
127
|
+
handleAxiosError(error, url);
|
|
128
|
+
}
|
|
129
|
+
throw error;
|
|
67
130
|
}
|
|
68
131
|
});
|
|
69
132
|
}
|
|
@@ -73,10 +136,18 @@ var dnetwork;
|
|
|
73
136
|
*/
|
|
74
137
|
function post(url, data, config) {
|
|
75
138
|
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
139
|
+
try {
|
|
140
|
+
dlog_1.dlog.d(`POST ${url}`, data);
|
|
141
|
+
const result = yield axios_1.default.post(url, data, config);
|
|
142
|
+
dassert_1.dassert.verifyOrThrow(result.status >= 200 && result.status < 300, `POST request to URL ${url} failed with status ${result.status}`, "HTTP_STATUS_ERROR");
|
|
143
|
+
return result.data;
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
147
|
+
handleAxiosError(error, url);
|
|
148
|
+
}
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
80
151
|
});
|
|
81
152
|
}
|
|
82
153
|
dnetwork.post = post;
|
|
@@ -85,15 +156,23 @@ var dnetwork;
|
|
|
85
156
|
*/
|
|
86
157
|
function postJson(url, data, config) {
|
|
87
158
|
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
-
const res = yield post(url, data, config);
|
|
89
|
-
if (typeof res === "object" && res !== null) {
|
|
90
|
-
return res;
|
|
91
|
-
}
|
|
92
159
|
try {
|
|
93
|
-
|
|
160
|
+
const res = yield post(url, data, config);
|
|
161
|
+
if (typeof res === "object" && res !== null) {
|
|
162
|
+
return res;
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
return JSON.parse(res);
|
|
166
|
+
}
|
|
167
|
+
catch (_a) {
|
|
168
|
+
throw new NetworkError("Response is not valid JSON", "JSON_PARSE_ERROR", res);
|
|
169
|
+
}
|
|
94
170
|
}
|
|
95
|
-
catch (
|
|
96
|
-
|
|
171
|
+
catch (error) {
|
|
172
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
173
|
+
handleAxiosError(error, url);
|
|
174
|
+
}
|
|
175
|
+
throw error;
|
|
97
176
|
}
|
|
98
177
|
});
|
|
99
178
|
}
|
|
@@ -103,16 +182,24 @@ var dnetwork;
|
|
|
103
182
|
*/
|
|
104
183
|
function getSimpleStore(url, config) {
|
|
105
184
|
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
185
|
+
try {
|
|
186
|
+
dlog_1.dlog.d(`GET ${url}`);
|
|
187
|
+
const response = yield axios_1.default.get(url, config);
|
|
188
|
+
const jsondata = response.data;
|
|
189
|
+
if (jsondata.status === "success") {
|
|
190
|
+
dlog_1.dlog.d("fetch success");
|
|
191
|
+
return jsondata;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
dlog_1.dlog.e(`GET failed: ${url}`, jsondata);
|
|
195
|
+
throw new NetworkError(jsondata.msg || "SimpleStore request failed", "SIMPLESTORE_ERROR", jsondata);
|
|
196
|
+
}
|
|
112
197
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
200
|
+
handleAxiosError(error, url);
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
116
203
|
}
|
|
117
204
|
});
|
|
118
205
|
}
|
|
@@ -122,16 +209,24 @@ var dnetwork;
|
|
|
122
209
|
*/
|
|
123
210
|
function postSimpleStore(url, data, config) {
|
|
124
211
|
return __awaiter(this, void 0, void 0, function* () {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
212
|
+
try {
|
|
213
|
+
dlog_1.dlog.d(`POST ${url}`, data);
|
|
214
|
+
const response = yield axios_1.default.post(url, data, config);
|
|
215
|
+
const jsondata = response.data;
|
|
216
|
+
if (jsondata.status === "success") {
|
|
217
|
+
dlog_1.dlog.d("POST success");
|
|
218
|
+
return jsondata;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
dlog_1.dlog.e(`POST failed: ${url}`, jsondata);
|
|
222
|
+
throw new NetworkError(jsondata.msg || "SimpleStore request failed", "SIMPLESTORE_ERROR", jsondata);
|
|
223
|
+
}
|
|
131
224
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
227
|
+
handleAxiosError(error, url);
|
|
228
|
+
}
|
|
229
|
+
throw error;
|
|
135
230
|
}
|
|
136
231
|
});
|
|
137
232
|
}
|
|
@@ -141,9 +236,17 @@ var dnetwork;
|
|
|
141
236
|
*/
|
|
142
237
|
function getAsFakeBrowser(url, config) {
|
|
143
238
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
239
|
+
try {
|
|
240
|
+
const headers = Object.assign({ "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36" }, ((config === null || config === void 0 ? void 0 : config.headers) || {}));
|
|
241
|
+
const resp = yield axios_1.default.get(url, Object.assign(Object.assign({}, config), { headers }));
|
|
242
|
+
return resp.data;
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
246
|
+
handleAxiosError(error, url);
|
|
247
|
+
}
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
147
250
|
});
|
|
148
251
|
}
|
|
149
252
|
dnetwork.getAsFakeBrowser = getAsFakeBrowser;
|
package/dist/dnetwork.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dnetwork.js","sourceRoot":"","sources":["../src/dnetwork.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"dnetwork.js","sourceRoot":"","sources":["../src/dnetwork.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/dassert.ts
CHANGED
|
@@ -1,76 +1,175 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* DError - Extended Error class with error codes and metadata
|
|
3
|
+
*
|
|
4
|
+
* Provides a custom error class that extends Error with:
|
|
5
|
+
* - Error codes for categorization
|
|
6
|
+
* - Error metadata for additional context
|
|
7
|
+
* - Backward compatibility with standard Error
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export class DError extends Error {
|
|
11
|
+
public code: string;
|
|
12
|
+
public metadata?: Record<string, any>;
|
|
13
|
+
public timestamp: number;
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
message: string,
|
|
17
|
+
code: string = "UNKNOWN_ERROR",
|
|
18
|
+
metadata?: Record<string, any>
|
|
19
|
+
) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = "DError";
|
|
22
|
+
this.code = code;
|
|
23
|
+
this.metadata = metadata;
|
|
24
|
+
this.timestamp = Date.now();
|
|
25
|
+
|
|
26
|
+
// Maintain proper prototype chain
|
|
27
|
+
Object.setPrototypeOf(this, DError.prototype);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Convert error to JSON for logging/serialization
|
|
32
|
+
*/
|
|
33
|
+
toJSON() {
|
|
34
|
+
return {
|
|
35
|
+
name: this.name,
|
|
36
|
+
message: this.message,
|
|
37
|
+
code: this.code,
|
|
38
|
+
metadata: this.metadata,
|
|
39
|
+
timestamp: this.timestamp,
|
|
40
|
+
stack: this.stack,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Convert error to string representation
|
|
46
|
+
*/
|
|
47
|
+
toString(): string {
|
|
48
|
+
return `[${this.code}] ${this.message}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
2
52
|
export namespace dassert {
|
|
3
|
-
export function verifyOrThrow(
|
|
53
|
+
export function verifyOrThrow(
|
|
54
|
+
cond: boolean,
|
|
55
|
+
msg: string,
|
|
56
|
+
code: string = "VERIFICATION_FAILED"
|
|
57
|
+
) {
|
|
4
58
|
if (!cond) {
|
|
5
|
-
throw
|
|
59
|
+
throw new DError(msg, code);
|
|
6
60
|
}
|
|
7
61
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
62
|
+
|
|
63
|
+
export function verifyNotNullAndEmpty(
|
|
64
|
+
data: any,
|
|
65
|
+
msg: string,
|
|
66
|
+
code: string = "NULL_OR_EMPTY_ERROR"
|
|
67
|
+
) {
|
|
68
|
+
if (
|
|
69
|
+
data == null ||
|
|
70
|
+
data === undefined ||
|
|
71
|
+
(typeof data === "object" && Object.keys(data).length === 0)
|
|
72
|
+
) {
|
|
73
|
+
throw new DError(msg, code, { data });
|
|
11
74
|
}
|
|
12
75
|
// empty string
|
|
13
|
-
if (
|
|
14
|
-
throw
|
|
76
|
+
if (typeof data === "string" && data.trim().length === 0) {
|
|
77
|
+
throw new DError(msg, code, { data });
|
|
15
78
|
}
|
|
16
79
|
// empty array
|
|
17
|
-
if (
|
|
18
|
-
throw
|
|
19
|
-
}
|
|
20
|
-
// empty object
|
|
21
|
-
if (_.isObject(data) && Object.keys(data).length == 0) {
|
|
22
|
-
throw Error(msg);
|
|
80
|
+
if (Array.isArray(data) && data.length === 0) {
|
|
81
|
+
throw new DError(msg, code, { data });
|
|
23
82
|
}
|
|
24
83
|
}
|
|
25
84
|
|
|
26
|
-
export function verifyOrCrash(
|
|
85
|
+
export function verifyOrCrash(
|
|
86
|
+
cond: boolean,
|
|
87
|
+
msg: string = "Verify and crash called",
|
|
88
|
+
code: string = "CRASH_ERROR"
|
|
89
|
+
) {
|
|
27
90
|
if (!cond) {
|
|
28
|
-
throw new
|
|
91
|
+
throw new DError(msg, code);
|
|
29
92
|
}
|
|
30
93
|
}
|
|
31
94
|
|
|
32
|
-
export function assertNotEmpty(
|
|
33
|
-
|
|
34
|
-
|
|
95
|
+
export function assertNotEmpty(
|
|
96
|
+
data: string,
|
|
97
|
+
msg: string = "Data is empty which I am not expecting",
|
|
98
|
+
code: string = "EMPTY_DATA_ERROR"
|
|
99
|
+
) {
|
|
100
|
+
if (data == null || data === undefined || data.length === 0) {
|
|
101
|
+
throw new DError(msg, code, { data });
|
|
35
102
|
}
|
|
36
103
|
}
|
|
37
|
-
|
|
104
|
+
|
|
105
|
+
export function getOrThrow(
|
|
106
|
+
cond: boolean,
|
|
107
|
+
msg: string,
|
|
108
|
+
code: string = "GET_OR_THROW_ERROR"
|
|
109
|
+
) {
|
|
38
110
|
if (!cond) {
|
|
39
|
-
throw
|
|
111
|
+
throw new DError(msg, code);
|
|
40
112
|
} else {
|
|
41
113
|
return cond;
|
|
42
114
|
}
|
|
43
115
|
}
|
|
44
116
|
|
|
45
|
-
export function verifyNotNullAndUndef(
|
|
117
|
+
export function verifyNotNullAndUndef(
|
|
118
|
+
data: any,
|
|
119
|
+
msg: string,
|
|
120
|
+
code: string = "NULL_OR_UNDEFINED_ERROR"
|
|
121
|
+
) {
|
|
46
122
|
if (data == null || data === undefined) {
|
|
47
|
-
throw
|
|
123
|
+
throw new DError(msg, code, { data });
|
|
48
124
|
}
|
|
49
125
|
}
|
|
50
126
|
|
|
51
|
-
export function verifyObject(
|
|
52
|
-
|
|
53
|
-
|
|
127
|
+
export function verifyObject(
|
|
128
|
+
data: any,
|
|
129
|
+
msg: string,
|
|
130
|
+
code: string = "NOT_OBJECT_ERROR"
|
|
131
|
+
) {
|
|
132
|
+
if (Array.isArray(data)) {
|
|
133
|
+
throw new DError(msg, code, { data, type: "array" });
|
|
54
134
|
}
|
|
55
|
-
if (
|
|
56
|
-
throw
|
|
135
|
+
if (typeof data !== "object" || data === null) {
|
|
136
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
57
137
|
}
|
|
58
138
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
139
|
+
|
|
140
|
+
export function verifyArray(
|
|
141
|
+
data: any,
|
|
142
|
+
msg: string,
|
|
143
|
+
code: string = "NOT_ARRAY_ERROR"
|
|
144
|
+
) {
|
|
145
|
+
if (!Array.isArray(data)) {
|
|
146
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
62
147
|
}
|
|
63
148
|
}
|
|
64
149
|
|
|
65
|
-
export function verifyString(
|
|
66
|
-
|
|
67
|
-
|
|
150
|
+
export function verifyString(
|
|
151
|
+
data: any,
|
|
152
|
+
msg: string,
|
|
153
|
+
code: string = "NOT_STRING_ERROR"
|
|
154
|
+
) {
|
|
155
|
+
if (typeof data !== "string") {
|
|
156
|
+
throw new DError(msg, code, { data, type: typeof data });
|
|
68
157
|
}
|
|
69
158
|
}
|
|
70
159
|
|
|
71
|
-
export function verifyValidItem(
|
|
72
|
-
|
|
73
|
-
|
|
160
|
+
export function verifyValidItem(
|
|
161
|
+
item: string,
|
|
162
|
+
arr: string[],
|
|
163
|
+
code: string = "INVALID_ITEM_ERROR"
|
|
164
|
+
) {
|
|
165
|
+
if (!arr.includes(item)) {
|
|
166
|
+
throw new DError(
|
|
167
|
+
`Invalid value <${item}>, The input value must belong to ${JSON.stringify(
|
|
168
|
+
arr
|
|
169
|
+
)}`,
|
|
170
|
+
code,
|
|
171
|
+
{ item, validItems: arr }
|
|
172
|
+
);
|
|
74
173
|
}
|
|
75
174
|
}
|
|
76
175
|
}
|
package/src/dnetwork.ts
CHANGED
|
@@ -7,40 +7,101 @@
|
|
|
7
7
|
* - All responses are checked for HTTP success
|
|
8
8
|
* - JSON responses are parsed and returned as objects
|
|
9
9
|
* - SimpleStore helpers for common API patterns
|
|
10
|
+
* - Detailed error handling for network issues
|
|
10
11
|
*/
|
|
11
12
|
|
|
12
|
-
import axios, { AxiosRequestConfig } from "axios";
|
|
13
|
-
import { dassert } from "./dassert";
|
|
13
|
+
import axios, { AxiosError, AxiosRequestConfig } from "axios";
|
|
14
|
+
import { dassert, DError } from "./dassert";
|
|
14
15
|
import { dlog } from "./dlog";
|
|
15
16
|
import { TObject } from "./dtypes";
|
|
16
17
|
|
|
17
18
|
// Custom error class for network-related errors
|
|
18
|
-
export class NetworkError<T = any> extends
|
|
19
|
+
export class NetworkError<T = any> extends DError {
|
|
19
20
|
data?: T;
|
|
21
|
+
statusCode?: number;
|
|
20
22
|
|
|
21
|
-
constructor(
|
|
22
|
-
|
|
23
|
+
constructor(
|
|
24
|
+
message: string,
|
|
25
|
+
code: string = "NETWORK_ERROR",
|
|
26
|
+
data?: T,
|
|
27
|
+
statusCode?: number,
|
|
28
|
+
) {
|
|
29
|
+
super(message, code, { data, statusCode });
|
|
23
30
|
this.name = "NetworkError";
|
|
24
31
|
this.data = data;
|
|
25
|
-
|
|
32
|
+
this.statusCode = statusCode;
|
|
33
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
26
34
|
}
|
|
27
35
|
}
|
|
28
36
|
|
|
29
37
|
export namespace dnetwork {
|
|
38
|
+
/**
|
|
39
|
+
* Helper function to categorize and handle axios errors
|
|
40
|
+
*/
|
|
41
|
+
function handleAxiosError(error: AxiosError, url: string): never {
|
|
42
|
+
let code = "NETWORK_ERROR";
|
|
43
|
+
let message = "Unknown network error";
|
|
44
|
+
|
|
45
|
+
if (error.code === "ECONNABORTED") {
|
|
46
|
+
code = "TIMEOUT_ERROR";
|
|
47
|
+
message = `Request timeout. The server took too long to respond.`;
|
|
48
|
+
} else if (error.code === "ENOTFOUND" || error.code === "ECONNREFUSED") {
|
|
49
|
+
code = "SERVER_UNREACHABLE";
|
|
50
|
+
message = `Server unreachable. Check your internet connection or DNS settings.`;
|
|
51
|
+
} else if (error.code === "ENETUNREACH") {
|
|
52
|
+
code = "NO_INTERNET";
|
|
53
|
+
message = `No internet connection. Unable to reach ${url}.`;
|
|
54
|
+
} else if (error.response && error.response.status >= 500) {
|
|
55
|
+
code = "SERVER_ERROR_5XX";
|
|
56
|
+
message = `Server error (${error.response.status}) : ${error.response.statusText}`;
|
|
57
|
+
} else if (error.response && error.response.status === 404) {
|
|
58
|
+
code = "NOT_FOUND";
|
|
59
|
+
message = `Resource not found (404) `;
|
|
60
|
+
} else if (error.response && error.response.status === 403) {
|
|
61
|
+
code = "FORBIDDEN";
|
|
62
|
+
message = `Access forbidden (403) `;
|
|
63
|
+
} else if (error.message === "Network Error") {
|
|
64
|
+
code = "NETWORK_UNREACHABLE";
|
|
65
|
+
message = `Network is unreachable `;
|
|
66
|
+
} else {
|
|
67
|
+
message = error.message || "Unknown error occurred";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
dlog.e(`[Network Error] ${message}`, {
|
|
71
|
+
url,
|
|
72
|
+
code,
|
|
73
|
+
status: error.response?.status,
|
|
74
|
+
});
|
|
75
|
+
throw new NetworkError(
|
|
76
|
+
message,
|
|
77
|
+
code,
|
|
78
|
+
error.response?.data,
|
|
79
|
+
error.response?.status,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
30
83
|
/**
|
|
31
84
|
* Perform a GET request and return the response data.
|
|
32
85
|
*/
|
|
33
86
|
export async function get(
|
|
34
87
|
url: string,
|
|
35
|
-
config?: AxiosRequestConfig
|
|
88
|
+
config?: AxiosRequestConfig,
|
|
36
89
|
): Promise<any> {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
90
|
+
try {
|
|
91
|
+
dlog.d(`GET ${url}`);
|
|
92
|
+
const result = await axios.get(url, config);
|
|
93
|
+
dassert.verifyOrThrow(
|
|
94
|
+
result.status >= 200 && result.status < 300,
|
|
95
|
+
`GET request to URL ${url} failed with status ${result.status}`,
|
|
96
|
+
"HTTP_STATUS_ERROR",
|
|
97
|
+
);
|
|
98
|
+
return result.data;
|
|
99
|
+
} catch (error) {
|
|
100
|
+
if (axios.isAxiosError(error)) {
|
|
101
|
+
handleAxiosError(error, url);
|
|
102
|
+
}
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
44
105
|
}
|
|
45
106
|
|
|
46
107
|
/**
|
|
@@ -48,16 +109,27 @@ export namespace dnetwork {
|
|
|
48
109
|
*/
|
|
49
110
|
export async function getJson(
|
|
50
111
|
url: string,
|
|
51
|
-
config?: AxiosRequestConfig
|
|
112
|
+
config?: AxiosRequestConfig,
|
|
52
113
|
): Promise<object> {
|
|
53
|
-
const res = await get(url, config);
|
|
54
|
-
if (typeof res === "object" && res !== null) {
|
|
55
|
-
return res;
|
|
56
|
-
}
|
|
57
114
|
try {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
115
|
+
const res = await get(url, config);
|
|
116
|
+
if (typeof res === "object" && res !== null) {
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
return JSON.parse(res);
|
|
121
|
+
} catch {
|
|
122
|
+
throw new NetworkError(
|
|
123
|
+
"Response is not valid JSON",
|
|
124
|
+
"JSON_PARSE_ERROR",
|
|
125
|
+
res,
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
} catch (error) {
|
|
129
|
+
if (axios.isAxiosError(error)) {
|
|
130
|
+
handleAxiosError(error, url);
|
|
131
|
+
}
|
|
132
|
+
throw error;
|
|
61
133
|
}
|
|
62
134
|
}
|
|
63
135
|
|
|
@@ -67,15 +139,23 @@ export namespace dnetwork {
|
|
|
67
139
|
export async function post(
|
|
68
140
|
url: string,
|
|
69
141
|
data: any,
|
|
70
|
-
config?: AxiosRequestConfig
|
|
142
|
+
config?: AxiosRequestConfig,
|
|
71
143
|
): Promise<any> {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
144
|
+
try {
|
|
145
|
+
dlog.d(`POST ${url}`, data);
|
|
146
|
+
const result = await axios.post(url, data, config);
|
|
147
|
+
dassert.verifyOrThrow(
|
|
148
|
+
result.status >= 200 && result.status < 300,
|
|
149
|
+
`POST request to URL ${url} failed with status ${result.status}`,
|
|
150
|
+
"HTTP_STATUS_ERROR",
|
|
151
|
+
);
|
|
152
|
+
return result.data;
|
|
153
|
+
} catch (error) {
|
|
154
|
+
if (axios.isAxiosError(error)) {
|
|
155
|
+
handleAxiosError(error, url);
|
|
156
|
+
}
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
79
159
|
}
|
|
80
160
|
|
|
81
161
|
/**
|
|
@@ -84,16 +164,27 @@ export namespace dnetwork {
|
|
|
84
164
|
export async function postJson(
|
|
85
165
|
url: string,
|
|
86
166
|
data: TObject,
|
|
87
|
-
config?: AxiosRequestConfig
|
|
167
|
+
config?: AxiosRequestConfig,
|
|
88
168
|
): Promise<object> {
|
|
89
|
-
const res = await post(url, data, config);
|
|
90
|
-
if (typeof res === "object" && res !== null) {
|
|
91
|
-
return res;
|
|
92
|
-
}
|
|
93
169
|
try {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
170
|
+
const res = await post(url, data, config);
|
|
171
|
+
if (typeof res === "object" && res !== null) {
|
|
172
|
+
return res;
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
return JSON.parse(res);
|
|
176
|
+
} catch {
|
|
177
|
+
throw new NetworkError(
|
|
178
|
+
"Response is not valid JSON",
|
|
179
|
+
"JSON_PARSE_ERROR",
|
|
180
|
+
res,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
} catch (error) {
|
|
184
|
+
if (axios.isAxiosError(error)) {
|
|
185
|
+
handleAxiosError(error, url);
|
|
186
|
+
}
|
|
187
|
+
throw error;
|
|
97
188
|
}
|
|
98
189
|
}
|
|
99
190
|
|
|
@@ -102,17 +193,28 @@ export namespace dnetwork {
|
|
|
102
193
|
*/
|
|
103
194
|
export async function getSimpleStore(
|
|
104
195
|
url: string,
|
|
105
|
-
config?: AxiosRequestConfig
|
|
196
|
+
config?: AxiosRequestConfig,
|
|
106
197
|
): Promise<any> {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
198
|
+
try {
|
|
199
|
+
dlog.d(`GET ${url}`);
|
|
200
|
+
const response = await axios.get(url, config);
|
|
201
|
+
const jsondata = response.data;
|
|
202
|
+
if (jsondata.status === "success") {
|
|
203
|
+
dlog.d("fetch success");
|
|
204
|
+
return jsondata;
|
|
205
|
+
} else {
|
|
206
|
+
dlog.e(`GET failed: ${url}`, jsondata);
|
|
207
|
+
throw new NetworkError(
|
|
208
|
+
jsondata.msg || "SimpleStore request failed",
|
|
209
|
+
"SIMPLESTORE_ERROR",
|
|
210
|
+
jsondata,
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
} catch (error) {
|
|
214
|
+
if (axios.isAxiosError(error)) {
|
|
215
|
+
handleAxiosError(error, url);
|
|
216
|
+
}
|
|
217
|
+
throw error;
|
|
116
218
|
}
|
|
117
219
|
}
|
|
118
220
|
|
|
@@ -122,17 +224,28 @@ export namespace dnetwork {
|
|
|
122
224
|
export async function postSimpleStore(
|
|
123
225
|
url: string,
|
|
124
226
|
data: TObject,
|
|
125
|
-
config?: AxiosRequestConfig
|
|
227
|
+
config?: AxiosRequestConfig,
|
|
126
228
|
): Promise<any> {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
229
|
+
try {
|
|
230
|
+
dlog.d(`POST ${url}`, data);
|
|
231
|
+
const response = await axios.post(url, data, config);
|
|
232
|
+
const jsondata = response.data;
|
|
233
|
+
if (jsondata.status === "success") {
|
|
234
|
+
dlog.d("POST success");
|
|
235
|
+
return jsondata;
|
|
236
|
+
} else {
|
|
237
|
+
dlog.e(`POST failed: ${url}`, jsondata);
|
|
238
|
+
throw new NetworkError(
|
|
239
|
+
jsondata.msg || "SimpleStore request failed",
|
|
240
|
+
"SIMPLESTORE_ERROR",
|
|
241
|
+
jsondata,
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
} catch (error) {
|
|
245
|
+
if (axios.isAxiosError(error)) {
|
|
246
|
+
handleAxiosError(error, url);
|
|
247
|
+
}
|
|
248
|
+
throw error;
|
|
136
249
|
}
|
|
137
250
|
}
|
|
138
251
|
|
|
@@ -141,14 +254,21 @@ export namespace dnetwork {
|
|
|
141
254
|
*/
|
|
142
255
|
export async function getAsFakeBrowser(
|
|
143
256
|
url: string,
|
|
144
|
-
config?: AxiosRequestConfig
|
|
257
|
+
config?: AxiosRequestConfig,
|
|
145
258
|
): Promise<any> {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
"
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
259
|
+
try {
|
|
260
|
+
const headers = {
|
|
261
|
+
"user-agent":
|
|
262
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36",
|
|
263
|
+
...(config?.headers || {}),
|
|
264
|
+
};
|
|
265
|
+
const resp = await axios.get(url, { ...config, headers });
|
|
266
|
+
return resp.data;
|
|
267
|
+
} catch (error) {
|
|
268
|
+
if (axios.isAxiosError(error)) {
|
|
269
|
+
handleAxiosError(error, url);
|
|
270
|
+
}
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
153
273
|
}
|
|
154
274
|
}
|