@metriport/shared 0.9.8-alpha.0 → 0.9.9
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/common/__tests__/retry.test.js +2 -2
- package/dist/common/__tests__/retry.test.js.map +1 -1
- package/dist/common/retry.d.ts +1 -0
- package/dist/common/retry.d.ts.map +1 -1
- package/dist/common/retry.js +8 -2
- package/dist/common/retry.js.map +1 -1
- package/dist/common/string.d.ts +1 -0
- package/dist/common/string.d.ts.map +1 -1
- package/dist/common/string.js +5 -1
- package/dist/common/string.js.map +1 -1
- package/dist/domain/contact/__tests__/demographics.test.d.ts +2 -0
- package/dist/domain/contact/__tests__/demographics.test.d.ts.map +1 -0
- package/dist/domain/contact/__tests__/demographics.test.js +46 -0
- package/dist/domain/contact/__tests__/demographics.test.js.map +1 -0
- package/dist/domain/contact/__tests__/phone.test.d.ts +2 -0
- package/dist/domain/contact/__tests__/phone.test.d.ts.map +1 -0
- package/dist/domain/contact/__tests__/phone.test.js +162 -0
- package/dist/domain/contact/__tests__/phone.test.js.map +1 -0
- package/dist/domain/contact/phone.d.ts +19 -0
- package/dist/domain/contact/phone.d.ts.map +1 -0
- package/dist/domain/contact/phone.js +49 -0
- package/dist/domain/contact/phone.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/net/__tests__/axios.d.ts +43 -0
- package/dist/net/__tests__/axios.d.ts.map +1 -0
- package/dist/net/__tests__/axios.js +103 -0
- package/dist/net/__tests__/axios.js.map +1 -0
- package/dist/net/__tests__/retry.test.js +246 -147
- package/dist/net/__tests__/retry.test.js.map +1 -1
- package/dist/net/error.d.ts +13 -8
- package/dist/net/error.d.ts.map +1 -1
- package/dist/net/error.js +11 -5
- package/dist/net/error.js.map +1 -1
- package/dist/net/retry.d.ts +2 -0
- package/dist/net/retry.d.ts.map +1 -1
- package/dist/net/retry.js +50 -5
- package/dist/net/retry.js.map +1 -1
- package/package.json +2 -2
package/dist/net/error.js
CHANGED
|
@@ -23,18 +23,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getNetworkErrorDetails = exports.networkTimeoutErrors = exports.axiosTimeoutErrorCodes = exports.nodeTimeoutErrorCodes = exports.nodeConnRefusedErrorCodes = void 0;
|
|
26
|
+
exports.getNetworkErrorDetails = exports.networkErrors = exports.networkTimeoutErrors = exports.axiosNetworkErrors = exports.axiosResponseErrorCodes = exports.axiosTimeoutErrorCodes = exports.nodeNetworkErrorCodes = exports.nodeTimeoutErrorCodes = exports.nodeConnRefusedErrorCodes = void 0;
|
|
27
27
|
const axios_1 = __importStar(require("axios"));
|
|
28
28
|
const shared_1 = require("../error/shared");
|
|
29
29
|
// https://nodejs.org/docs/latest-v18.x/api/errors.html#common-system-errors
|
|
30
30
|
exports.nodeConnRefusedErrorCodes = ["ECONNREFUSED", "ECONNRESET"];
|
|
31
31
|
exports.nodeTimeoutErrorCodes = ["ETIMEDOUT"];
|
|
32
|
-
|
|
33
|
-
exports.
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
exports.nodeNetworkErrorCodes = [
|
|
33
|
+
...exports.nodeConnRefusedErrorCodes,
|
|
34
|
+
...exports.nodeTimeoutErrorCodes,
|
|
35
|
+
"ENOTFOUND",
|
|
36
36
|
];
|
|
37
|
+
// Axios error codes that are timeout errors
|
|
38
|
+
exports.axiosTimeoutErrorCodes = [axios_1.AxiosError.ECONNABORTED, axios_1.AxiosError.ETIMEDOUT];
|
|
39
|
+
exports.axiosResponseErrorCodes = [axios_1.AxiosError.ERR_BAD_RESPONSE];
|
|
40
|
+
exports.axiosNetworkErrors = [...exports.axiosResponseErrorCodes, ...exports.axiosTimeoutErrorCodes];
|
|
41
|
+
// General Network errors
|
|
37
42
|
exports.networkTimeoutErrors = [...exports.nodeTimeoutErrorCodes, ...exports.axiosTimeoutErrorCodes];
|
|
43
|
+
exports.networkErrors = [...exports.nodeNetworkErrorCodes, ...exports.axiosNetworkErrors];
|
|
38
44
|
function getNetworkErrorDetails(error) {
|
|
39
45
|
const details = (0, shared_1.errorToString)(error);
|
|
40
46
|
if (axios_1.default.isAxiosError(error)) {
|
package/dist/net/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/net/error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,4CAAgD;AAEhD,4EAA4E;AAC/D,QAAA,yBAAyB,GAAG,CAAC,cAAc,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/net/error.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAC1C,4CAAgD;AAEhD,4EAA4E;AAC/D,QAAA,yBAAyB,GAAG,CAAC,cAAc,EAAE,YAAY,CAAU,CAAC;AAGpE,QAAA,qBAAqB,GAAG,CAAC,WAAW,CAAU,CAAC;AAG/C,QAAA,qBAAqB,GAAG;IACnC,GAAG,iCAAyB;IAC5B,GAAG,6BAAqB;IACxB,WAAW;CACH,CAAC;AAGX,4CAA4C;AAE/B,QAAA,sBAAsB,GAAG,CAAC,kBAAU,CAAC,YAAY,EAAE,kBAAU,CAAC,SAAS,CAAU,CAAC;AAGlF,QAAA,uBAAuB,GAAG,CAAC,kBAAU,CAAC,gBAAgB,CAAU,CAAC;AAGjE,QAAA,kBAAkB,GAAG,CAAC,GAAG,+BAAuB,EAAE,GAAG,8BAAsB,CAAU,CAAC;AAGnG,yBAAyB;AAEZ,QAAA,oBAAoB,GAAG,CAAC,GAAG,6BAAqB,EAAE,GAAG,8BAAsB,CAAC,CAAC;AAG7E,QAAA,aAAa,GAAG,CAAC,GAAG,6BAAqB,EAAE,GAAG,0BAAkB,CAAU,CAAC;AAGxF,SAAgB,sBAAsB,CAAC,KAAc;IAKnD,MAAM,OAAO,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,CAAC;IACrC,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;QAC7B,OAAO;YACL,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM;SAC/B,CAAC;KACH;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC;AAdD,wDAcC"}
|
package/dist/net/retry.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export type ExecuteWithNetworkRetriesOptions = Omit<ExecuteWithRetriesOptions<un
|
|
|
7
7
|
/** Whether to retry on timeout errors. Default is false. */
|
|
8
8
|
retryOnTimeout?: boolean;
|
|
9
9
|
};
|
|
10
|
+
export declare function getHttpStatusFromError(error: any): number | undefined;
|
|
11
|
+
export declare function getHttpCodeFromError(error: any): string | undefined;
|
|
10
12
|
/**
|
|
11
13
|
* Executes a function with retries and backoff with jitter. If the function throws a network
|
|
12
14
|
* error, it will retry up to maxAttempts-1, waiting between each retry.
|
package/dist/net/retry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/net/retry.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/net/retry.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,yBAAyB,EAE1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAwB,MAAM,SAAS,CAAC;AAK7D,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,yBAAyB,CAAC,OAAO,CAAC,EAClC,aAAa,CACd,GAAG;IACF,2EAA2E;IAC3E,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAgBF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAKrE;AAGD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAKnE;AA6BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,GAClD,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
|
package/dist/net/retry.js
CHANGED
|
@@ -3,21 +3,65 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.executeWithNetworkRetries = void 0;
|
|
6
|
+
exports.executeWithNetworkRetries = exports.getHttpCodeFromError = exports.getHttpStatusFromError = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const retry_1 = require("../common/retry");
|
|
9
9
|
const error_1 = require("./error");
|
|
10
|
+
const tooManyRequestsStatus = 429;
|
|
11
|
+
const tooManyRequestsMultiplier = 3;
|
|
10
12
|
const defaultOptions = {
|
|
11
13
|
...retry_1.defaultOptions,
|
|
12
14
|
initialDelay: 1000,
|
|
13
15
|
httpCodesToRetry: [
|
|
14
16
|
// https://nodejs.org/docs/latest-v18.x/api/errors.html#common-system-errors
|
|
15
17
|
"ECONNREFUSED",
|
|
16
|
-
"ECONNRESET",
|
|
18
|
+
"ECONNRESET",
|
|
19
|
+
"ENOTFOUND", // (DNS lookup failed): Indicates a DNS failure of either EAI_NODATA or EAI_NONAME. This is not a standard POSIX error.
|
|
17
20
|
],
|
|
18
|
-
httpStatusCodesToRetry: [
|
|
21
|
+
httpStatusCodesToRetry: [tooManyRequestsStatus],
|
|
19
22
|
retryOnTimeout: false,
|
|
20
23
|
};
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
function getHttpStatusFromError(error) {
|
|
26
|
+
if (!error)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (axios_1.default.isAxiosError(error))
|
|
29
|
+
return error.response?.status;
|
|
30
|
+
if ("cause" in error)
|
|
31
|
+
return getHttpStatusFromError(error.cause);
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
exports.getHttpStatusFromError = getHttpStatusFromError;
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
function getHttpCodeFromError(error) {
|
|
37
|
+
if (!error)
|
|
38
|
+
return undefined;
|
|
39
|
+
if (axios_1.default.isAxiosError(error))
|
|
40
|
+
return error.code;
|
|
41
|
+
if ("cause" in error)
|
|
42
|
+
return getHttpCodeFromError(error.cause);
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
exports.getHttpCodeFromError = getHttpCodeFromError;
|
|
46
|
+
/**
|
|
47
|
+
* Custom getTimeToWait function for network retries. Has special handling for 429 Too Many Requests. Else regular backoff.
|
|
48
|
+
* @param initialDelay The initial delay in milliseconds.
|
|
49
|
+
* @param backoffMultiplier The backoff multiplier.
|
|
50
|
+
* @param attempt The current attempt number.
|
|
51
|
+
* @param maxDelay The maximum delay in milliseconds.
|
|
52
|
+
* @param error The error that occurred.
|
|
53
|
+
* @returns The time to wait before the next retry.
|
|
54
|
+
*/
|
|
55
|
+
function networkGetTimeToWait({ initialDelay, backoffMultiplier, attempt, maxDelay, error, }) {
|
|
56
|
+
const status = getHttpStatusFromError(error);
|
|
57
|
+
const effectiveInitialDelay = status === tooManyRequestsStatus ? initialDelay * tooManyRequestsMultiplier : initialDelay;
|
|
58
|
+
return (0, retry_1.defaultGetTimeToWait)({
|
|
59
|
+
initialDelay: effectiveInitialDelay,
|
|
60
|
+
backoffMultiplier,
|
|
61
|
+
attempt,
|
|
62
|
+
maxDelay,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
21
65
|
/**
|
|
22
66
|
* Executes a function with retries and backoff with jitter. If the function throws a network
|
|
23
67
|
* error, it will retry up to maxAttempts-1, waiting between each retry.
|
|
@@ -45,12 +89,13 @@ async function executeWithNetworkRetries(fn, options) {
|
|
|
45
89
|
return (0, retry_1.executeWithRetries)(fn, {
|
|
46
90
|
...actualOptions,
|
|
47
91
|
shouldRetry: (_, error) => {
|
|
48
|
-
const networkCode =
|
|
49
|
-
const networkStatus =
|
|
92
|
+
const networkCode = getHttpCodeFromError(error);
|
|
93
|
+
const networkStatus = getHttpStatusFromError(error);
|
|
50
94
|
return ((networkCode && codesAsString.includes(networkCode)) ||
|
|
51
95
|
(networkStatus && httpStatusCodesToRetry.includes(networkStatus)) ||
|
|
52
96
|
false);
|
|
53
97
|
},
|
|
98
|
+
getTimeToWait: networkGetTimeToWait,
|
|
54
99
|
});
|
|
55
100
|
}
|
|
56
101
|
exports.executeWithNetworkRetries = executeWithNetworkRetries;
|
package/dist/net/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/net/retry.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/net/retry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metriport/shared",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.9",
|
|
4
4
|
"description": "Common code shared across packages - by Metriport Inc.",
|
|
5
5
|
"author": "Metriport Inc. <contact@metriport.com>",
|
|
6
6
|
"homepage": "https://metriport.com/",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@faker-js/faker": "^8.0.2"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "30fe06c5e833fa563b2f5f3a10487cc4269e2513"
|
|
62
62
|
}
|