@emmvish/stable-request 1.0.6 → 1.0.8
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/README.md +18 -19
- package/dist/core/stable-api-gateway.d.ts.map +1 -1
- package/dist/core/stable-api-gateway.js +2 -15
- package/dist/core/stable-api-gateway.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utilities/extract-common-options.d.ts +3 -0
- package/dist/utilities/extract-common-options.d.ts.map +1 -0
- package/dist/utilities/extract-common-options.js +26 -0
- package/dist/utilities/extract-common-options.js.map +1 -0
- package/dist/utilities/extract-common-request-config-options.d.ts +3 -0
- package/dist/utilities/extract-common-request-config-options.d.ts.map +1 -0
- package/dist/utilities/extract-common-request-config-options.js +26 -0
- package/dist/utilities/extract-common-request-config-options.js.map +1 -0
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +1 -0
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/prepare-api-request-options.d.ts.map +1 -1
- package/dist/utilities/prepare-api-request-options.js +25 -15
- package/dist/utilities/prepare-api-request-options.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -112,9 +112,6 @@ const requests = [
|
|
|
112
112
|
id: 'create-user-1',
|
|
113
113
|
requestOptions: {
|
|
114
114
|
reqData: {
|
|
115
|
-
hostname: 'api.example.com',
|
|
116
|
-
path: '/users',
|
|
117
|
-
method: REQUEST_METHODS.POST,
|
|
118
115
|
body: { name: 'John Doe', email: 'john@example.com' }
|
|
119
116
|
}
|
|
120
117
|
}
|
|
@@ -123,9 +120,6 @@ const requests = [
|
|
|
123
120
|
id: 'create-user-2',
|
|
124
121
|
requestOptions: {
|
|
125
122
|
reqData: {
|
|
126
|
-
hostname: 'api.example.com',
|
|
127
|
-
path: '/users',
|
|
128
|
-
method: REQUEST_METHODS.POST,
|
|
129
123
|
body: { name: 'Jane Smith', email: 'jane@example.com' }
|
|
130
124
|
}
|
|
131
125
|
}
|
|
@@ -134,6 +128,11 @@ const requests = [
|
|
|
134
128
|
|
|
135
129
|
const results = await stableApiGateway(requests, {
|
|
136
130
|
concurrentExecution: true,
|
|
131
|
+
commonRequestData: {
|
|
132
|
+
hostname: 'api.example.com',
|
|
133
|
+
path: '/users',
|
|
134
|
+
method: REQUEST_METHODS.POST
|
|
135
|
+
},
|
|
137
136
|
commonResReq: true,
|
|
138
137
|
commonAttempts: 3,
|
|
139
138
|
commonWait: 1000,
|
|
@@ -582,7 +581,6 @@ const healthChecks = services.map(service => ({
|
|
|
582
581
|
requestOptions: {
|
|
583
582
|
reqData: {
|
|
584
583
|
hostname: `${service}.internal.example.com`,
|
|
585
|
-
path: '/health'
|
|
586
584
|
},
|
|
587
585
|
resReq: true,
|
|
588
586
|
attempts: 3,
|
|
@@ -592,6 +590,9 @@ const healthChecks = services.map(service => ({
|
|
|
592
590
|
|
|
593
591
|
const results = await stableApiGateway(healthChecks, {
|
|
594
592
|
concurrentExecution: true,
|
|
593
|
+
commonRequestData: {
|
|
594
|
+
path: '/health'
|
|
595
|
+
},
|
|
595
596
|
commonRetryStrategy: RETRY_STRATEGIES.LINEAR
|
|
596
597
|
});
|
|
597
598
|
|
|
@@ -638,9 +639,6 @@ const migrationRequests = records.map((record, index) => ({
|
|
|
638
639
|
id: `migrate-${record.id}`,
|
|
639
640
|
requestOptions: {
|
|
640
641
|
reqData: {
|
|
641
|
-
hostname: 'new-system.example.com',
|
|
642
|
-
path: '/import',
|
|
643
|
-
method: REQUEST_METHODS.POST,
|
|
644
642
|
body: record
|
|
645
643
|
},
|
|
646
644
|
resReq: true,
|
|
@@ -655,6 +653,11 @@ const migrationRequests = records.map((record, index) => ({
|
|
|
655
653
|
|
|
656
654
|
const results = await stableApiGateway(migrationRequests, {
|
|
657
655
|
concurrentExecution: true,
|
|
656
|
+
commonRequestData: {
|
|
657
|
+
hostname: 'new-system.example.com',
|
|
658
|
+
path: '/import',
|
|
659
|
+
method: REQUEST_METHODS.POST,
|
|
660
|
+
}
|
|
658
661
|
commonAttempts: 3,
|
|
659
662
|
commonWait: 1000,
|
|
660
663
|
commonRetryStrategy: RETRY_STRATEGIES.LINEAR,
|
|
@@ -707,10 +710,7 @@ const workflowSteps = [
|
|
|
707
710
|
id: 'step-1-init',
|
|
708
711
|
requestOptions: {
|
|
709
712
|
reqData: {
|
|
710
|
-
hostname: 'workflow.example.com',
|
|
711
713
|
path: '/init',
|
|
712
|
-
method: REQUEST_METHODS.POST,
|
|
713
|
-
body: { workflowId: 'wf-123' }
|
|
714
714
|
},
|
|
715
715
|
resReq: true
|
|
716
716
|
}
|
|
@@ -719,10 +719,7 @@ const workflowSteps = [
|
|
|
719
719
|
id: 'step-2-process',
|
|
720
720
|
requestOptions: {
|
|
721
721
|
reqData: {
|
|
722
|
-
hostname: 'workflow.example.com',
|
|
723
722
|
path: '/process',
|
|
724
|
-
method: REQUEST_METHODS.POST,
|
|
725
|
-
body: { workflowId: 'wf-123' }
|
|
726
723
|
},
|
|
727
724
|
resReq: true,
|
|
728
725
|
responseAnalyzer: async (reqConfig, data) => {
|
|
@@ -734,10 +731,7 @@ const workflowSteps = [
|
|
|
734
731
|
id: 'step-3-finalize',
|
|
735
732
|
requestOptions: {
|
|
736
733
|
reqData: {
|
|
737
|
-
hostname: 'workflow.example.com',
|
|
738
734
|
path: '/finalize',
|
|
739
|
-
method: REQUEST_METHODS.POST,
|
|
740
|
-
body: { workflowId: 'wf-123' }
|
|
741
735
|
},
|
|
742
736
|
resReq: true
|
|
743
737
|
}
|
|
@@ -747,6 +741,11 @@ const workflowSteps = [
|
|
|
747
741
|
const results = await stableApiGateway(workflowSteps, {
|
|
748
742
|
concurrentExecution: false, // Execute sequentially
|
|
749
743
|
stopOnFirstError: true, // Stop if any step fails
|
|
744
|
+
commonRequestData: {
|
|
745
|
+
hostname: 'workflow.example.com',
|
|
746
|
+
method: REQUEST_METHODS.POST,
|
|
747
|
+
body: { workflowId: 'wf-123' }
|
|
748
|
+
}
|
|
750
749
|
commonAttempts: 5,
|
|
751
750
|
commonWait: 2000,
|
|
752
751
|
commonRetryStrategy: RETRY_STRATEGIES.EXPONENTIAL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-api-gateway.d.ts","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EAGtB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"stable-api-gateway.d.ts","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EAGtB,MAAM,mBAAmB,CAAC;AAO3B,wBAAsB,gBAAgB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAChF,QAAQ,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAO,EACvE,OAAO,GAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAM,iFAqBvE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { executeConcurrently, executeSequentially } from '../utilities/index.js';
|
|
1
|
+
import { executeConcurrently, executeSequentially, extractCommonRequestConfigOptions as extractCommonOptions } from '../utilities/index.js';
|
|
2
2
|
export async function stableApiGateway(requests = [], options = {}) {
|
|
3
3
|
const { concurrentExecution = true, stopOnFirstError = false, } = options;
|
|
4
4
|
if (!Array.isArray(requests) || requests.length === 0) {
|
|
@@ -6,20 +6,7 @@ export async function stableApiGateway(requests = [], options = {}) {
|
|
|
6
6
|
}
|
|
7
7
|
const requestExecutionOptions = {
|
|
8
8
|
stopOnFirstError,
|
|
9
|
-
...(options
|
|
10
|
-
...(options.hasOwnProperty('commonResponseAnalyzer') && { commonResponseAnalyzer: options.commonResponseAnalyzer }),
|
|
11
|
-
...(options.hasOwnProperty('commonHandleErrors') && { commonHandleErrors: options.commonHandleErrors }),
|
|
12
|
-
...(options.hasOwnProperty('commonHandleSuccessfulAttemptData') && { commonHandleSuccessfulAttemptData: options.commonHandleSuccessfulAttemptData }),
|
|
13
|
-
...(options.hasOwnProperty('commonFinalErrorAnalyzer') && { commonFinalErrorAnalyzer: options.commonFinalErrorAnalyzer }),
|
|
14
|
-
...(options.hasOwnProperty('commonResReq') && { commonResReq: options.commonResReq }),
|
|
15
|
-
...(options.hasOwnProperty('commonAttempts') && { commonAttempts: options.commonAttempts }),
|
|
16
|
-
...(options.hasOwnProperty('commonPerformAllAttempts') && { commonPerformAllAttempts: options.commonPerformAllAttempts }),
|
|
17
|
-
...(options.hasOwnProperty('commonWait') && { commonWait: options.commonWait }),
|
|
18
|
-
...(options.hasOwnProperty('commonRetryStrategy') && { commonRetryStrategy: options.commonRetryStrategy }),
|
|
19
|
-
...(options.hasOwnProperty('commonLogAllErrors') && { commonLogAllErrors: options.commonLogAllErrors }),
|
|
20
|
-
...(options.hasOwnProperty('commonLogAllSuccessfulAttempts') && { commonLogAllSuccessfulAttempts: options.commonLogAllSuccessfulAttempts }),
|
|
21
|
-
...(options.hasOwnProperty('commonMaxSerializableChars') && { commonMaxSerializableChars: options.commonMaxSerializableChars }),
|
|
22
|
-
...(options.hasOwnProperty('commonTrialMode') && { commonTrialMode: options.commonTrialMode }),
|
|
9
|
+
...extractCommonOptions(options)
|
|
23
10
|
};
|
|
24
11
|
if (concurrentExecution) {
|
|
25
12
|
return executeConcurrently(requests, { ...requestExecutionOptions, stopOnFirstError: undefined });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stable-api-gateway.js","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"stable-api-gateway.js","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAMA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EACnB,iCAAiC,IAAI,oBAAoB,EAC5D,MAAM,uBAAuB,CAAC;AAE/B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAClC,WAAqE,EAAE,EACvE,UAAkE,EAAE;IAEpE,MAAM,EACF,mBAAmB,GAAG,IAAI,EAC1B,gBAAgB,GAAG,KAAK,GAC3B,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,uBAAuB,GAAgF;QACzG,gBAAgB;QAChB,GAAG,oBAAoB,CAAoC,OAAO,CAAC;KACtE,CAAA;IAED,IAAI,mBAAmB,EAAE,CAAC;QACtB,OAAO,mBAAmB,CAAoC,QAAQ,EAAG,EAAE,GAAG,uBAAuB,EAAE,gBAAgB,EAAE,SAAS,EAA6E,CAAC,CAAC;IACrN,CAAC;SAAM,CAAC;QACJ,OAAO,mBAAmB,CAAoC,QAAQ,EAAE,uBAAkG,CAAC,CAAC;IAChL,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { stableRequest, stableApiGateway } from './core/index.js';
|
|
2
2
|
export { INVALID_AXIOS_RESPONSES, REQUEST_METHODS, RESPONSE_ERRORS, RETRY_STRATEGIES, VALID_REQUEST_PROTOCOLS } from './enums/index.js';
|
|
3
3
|
export type { API_GATEWAY_OPTIONS, API_GATEWAY_REQUEST, API_GATEWAY_REQUEST_OPTIONS_TYPE, API_GATEWAY_RESPONSE, CONCURRENT_REQUEST_EXECUTION_OPTIONS, ERROR_LOG, ReqFnResponse, REQUEST_DATA, REQUEST_METHOD_TYPES, RETRY_STRATEGY_TYPES, SEQUENTIAL_REQUEST_EXECUTION_OPTIONS, STABLE_REQUEST, SUCCESSFUL_ATTEMPT_DATA, VALID_REQUEST_PROTOCOL_TYPES, TRIAL_MODE_OPTIONS } from './types/index.js';
|
|
4
|
-
export { delay, executeConcurrently, executeSequentially, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestOptions, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
4
|
+
export { delay, executeConcurrently, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestOptions, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,oCAAoC,EACpC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oCAAoC,EACpC,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,mBAAmB,EACnB,mBAAmB,EACnB,gCAAgC,EAChC,oBAAoB,EACpB,oCAAoC,EACpC,SAAS,EACT,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,oCAAoC,EACpC,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACH,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { stableRequest, stableApiGateway } from './core/index.js';
|
|
2
2
|
export { INVALID_AXIOS_RESPONSES, REQUEST_METHODS, RESPONSE_ERRORS, RETRY_STRATEGIES, VALID_REQUEST_PROTOCOLS } from './enums/index.js';
|
|
3
|
-
export { delay, executeConcurrently, executeSequentially, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestOptions, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
3
|
+
export { delay, executeConcurrently, executeSequentially, extractCommonRequestConfigOptions, generateAxiosRequestConfig, getNewDelayTime, isRetryableError, prepareApiRequestOptions, reqFn, safelyExecuteUnknownFunction, safelyStringify, validateTrialModeProbabilities } from './utilities/index.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAoB1B,OAAO,EACH,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,gBAAgB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACH,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAC;AAoB1B,OAAO,EACH,KAAK,EACL,mBAAmB,EACnB,mBAAmB,EACnB,iCAAiC,EACjC,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,EACL,4BAA4B,EAC5B,eAAe,EACf,8BAA8B,EACjC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { API_GATEWAY_OPTIONS } from '../types/index.js';
|
|
2
|
+
export declare function extractCommonOptions<RequestDataType = any, ResponseDataType = any>(options: API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>): Record<string, any>;
|
|
3
|
+
//# sourceMappingURL=extract-common-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-common-options.d.ts","sourceRoot":"","sources":["../../src/utilities/extract-common-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAgB,oBAAoB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC9E,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,uBA4BlE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function extractCommonOptions(options) {
|
|
2
|
+
const commonOptionKeys = [
|
|
3
|
+
'commonRequestData',
|
|
4
|
+
'commonResponseAnalyzer',
|
|
5
|
+
'commonHandleErrors',
|
|
6
|
+
'commonHandleSuccessfulAttemptData',
|
|
7
|
+
'commonFinalErrorAnalyzer',
|
|
8
|
+
'commonResReq',
|
|
9
|
+
'commonAttempts',
|
|
10
|
+
'commonPerformAllAttempts',
|
|
11
|
+
'commonWait',
|
|
12
|
+
'commonRetryStrategy',
|
|
13
|
+
'commonLogAllErrors',
|
|
14
|
+
'commonLogAllSuccessfulAttempts',
|
|
15
|
+
'commonMaxSerializableChars',
|
|
16
|
+
'commonTrialMode'
|
|
17
|
+
];
|
|
18
|
+
const extracted = {};
|
|
19
|
+
for (const key of commonOptionKeys) {
|
|
20
|
+
if (options.hasOwnProperty(key)) {
|
|
21
|
+
extracted[key] = options[key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return extracted;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=extract-common-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-common-options.js","sourceRoot":"","sources":["../../src/utilities/extract-common-options.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAChC,OAA+D;IAE/D,MAAM,gBAAgB,GAAqE;QACvF,mBAAmB;QACnB,wBAAwB;QACxB,oBAAoB;QACpB,mCAAmC;QACnC,0BAA0B;QAC1B,cAAc;QACd,gBAAgB;QAChB,0BAA0B;QAC1B,YAAY;QACZ,qBAAqB;QACrB,oBAAoB;QACpB,gCAAgC;QAChC,4BAA4B;QAC5B,iBAAiB;KACpB,CAAC;IAEF,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { API_GATEWAY_OPTIONS } from '../types/index.js';
|
|
2
|
+
export declare function extractCommonRequestConfigOptions<RequestDataType = any, ResponseDataType = any>(options: API_GATEWAY_OPTIONS<RequestDataType, ResponseDataType>): Record<string, any>;
|
|
3
|
+
//# sourceMappingURL=extract-common-request-config-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-common-request-config-options.d.ts","sourceRoot":"","sources":["../../src/utilities/extract-common-request-config-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,wBAAgB,iCAAiC,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAC3F,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,uBA4BlE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function extractCommonRequestConfigOptions(options) {
|
|
2
|
+
const commonOptionKeys = [
|
|
3
|
+
'commonRequestData',
|
|
4
|
+
'commonResponseAnalyzer',
|
|
5
|
+
'commonHandleErrors',
|
|
6
|
+
'commonHandleSuccessfulAttemptData',
|
|
7
|
+
'commonFinalErrorAnalyzer',
|
|
8
|
+
'commonResReq',
|
|
9
|
+
'commonAttempts',
|
|
10
|
+
'commonPerformAllAttempts',
|
|
11
|
+
'commonWait',
|
|
12
|
+
'commonRetryStrategy',
|
|
13
|
+
'commonLogAllErrors',
|
|
14
|
+
'commonLogAllSuccessfulAttempts',
|
|
15
|
+
'commonMaxSerializableChars',
|
|
16
|
+
'commonTrialMode'
|
|
17
|
+
];
|
|
18
|
+
const extracted = {};
|
|
19
|
+
for (const key of commonOptionKeys) {
|
|
20
|
+
if (options.hasOwnProperty(key)) {
|
|
21
|
+
extracted[key] = options[key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return extracted;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=extract-common-request-config-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-common-request-config-options.js","sourceRoot":"","sources":["../../src/utilities/extract-common-request-config-options.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iCAAiC,CAC7C,OAA+D;IAE/D,MAAM,gBAAgB,GAAqE;QACvF,mBAAmB;QACnB,wBAAwB;QACxB,oBAAoB;QACpB,mCAAmC;QACnC,0BAA0B;QAC1B,cAAc;QACd,gBAAgB;QAChB,0BAA0B;QAC1B,YAAY;QACZ,qBAAqB;QACrB,oBAAoB;QACpB,gCAAgC;QAChC,4BAA4B;QAC5B,iBAAiB;KACpB,CAAC;IAEF,MAAM,SAAS,GAAwB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { delay } from './delay.js';
|
|
2
2
|
export { executeConcurrently } from './execute-concurrently.js';
|
|
3
3
|
export { executeSequentially } from './execute-sequentially.js';
|
|
4
|
+
export { extractCommonRequestConfigOptions } from './extract-common-request-config-options.js';
|
|
4
5
|
export { generateAxiosRequestConfig } from './generate-axios-request-config.js';
|
|
5
6
|
export { getNewDelayTime } from './get-new-delay-time.js';
|
|
6
7
|
export { isRetryableError } from './is-retryable-error.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
|
package/dist/utilities/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { delay } from './delay.js';
|
|
2
2
|
export { executeConcurrently } from './execute-concurrently.js';
|
|
3
3
|
export { executeSequentially } from './execute-sequentially.js';
|
|
4
|
+
export { extractCommonRequestConfigOptions } from './extract-common-request-config-options.js';
|
|
4
5
|
export { generateAxiosRequestConfig } from './generate-axios-request-config.js';
|
|
5
6
|
export { getNewDelayTime } from './get-new-delay-time.js';
|
|
6
7
|
export { isRetryableError } from './is-retryable-error.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-api-request-options.d.ts","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,oCAAoC,EACpC,oCAAoC,EACpC,cAAc,EACjB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"prepare-api-request-options.d.ts","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,oCAAoC,EACpC,oCAAoC,EACpC,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAwB3B,wBAAgB,wBAAwB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAClF,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAC/D,6BAA6B,EAAE,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAC1E,oCAAoC,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACpG,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAapE"}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
|
+
const OPTION_MAPPINGS = [
|
|
2
|
+
{ localKey: 'resReq', commonKey: 'commonResReq', targetKey: 'resReq' },
|
|
3
|
+
{ localKey: 'attempts', commonKey: 'commonAttempts', targetKey: 'attempts' },
|
|
4
|
+
{ localKey: 'performAllAttempts', commonKey: 'commonPerformAllAttempts', targetKey: 'performAllAttempts' },
|
|
5
|
+
{ localKey: 'wait', commonKey: 'commonWait', targetKey: 'wait' },
|
|
6
|
+
{ localKey: 'retryStrategy', commonKey: 'commonRetryStrategy', targetKey: 'retryStrategy' },
|
|
7
|
+
{ localKey: 'logAllErrors', commonKey: 'commonLogAllErrors', targetKey: 'logAllErrors' },
|
|
8
|
+
{ localKey: 'logAllSuccessfulAttempts', commonKey: 'commonLogAllSuccessfulAttempts', targetKey: 'logAllSuccessfulAttempts' },
|
|
9
|
+
{ localKey: 'maxSerializableChars', commonKey: 'commonMaxSerializableChars', targetKey: 'maxSerializableChars' },
|
|
10
|
+
{ localKey: 'trialMode', commonKey: 'commonTrialMode', targetKey: 'trialMode' },
|
|
11
|
+
{ localKey: 'responseAnalyzer', commonKey: 'commonResponseAnalyzer', targetKey: 'responseAnalyzer' },
|
|
12
|
+
{ localKey: 'handleErrors', commonKey: 'commonHandleErrors', targetKey: 'handleErrors' },
|
|
13
|
+
{ localKey: 'handleSuccessfulAttemptData', commonKey: 'commonHandleSuccessfulAttemptData', targetKey: 'handleSuccessfulAttemptData' },
|
|
14
|
+
{ localKey: 'finalErrorAnalyzer', commonKey: 'commonFinalErrorAnalyzer', targetKey: 'finalErrorAnalyzer' },
|
|
15
|
+
];
|
|
1
16
|
export function prepareApiRequestOptions(request, commonRequestExecutionOptions) {
|
|
2
17
|
const { requestOptions: localOptions } = request;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
...(localOptions.hasOwnProperty('responseAnalyzer') ? { responseAnalyzer: localOptions.responseAnalyzer } : { responseAnalyzer: commonRequestExecutionOptions.commonResponseAnalyzer }),
|
|
14
|
-
...(localOptions.hasOwnProperty('handleErrors') ? { handleErrors: localOptions.handleErrors } : { handleErrors: commonRequestExecutionOptions.commonHandleErrors }),
|
|
15
|
-
...(localOptions.hasOwnProperty('handleSuccessfulAttemptData') ? { handleSuccessfulAttemptData: localOptions.handleSuccessfulAttemptData } : { handleSuccessfulAttemptData: commonRequestExecutionOptions.commonHandleSuccessfulAttemptData }),
|
|
16
|
-
...(localOptions.hasOwnProperty('finalErrorAnalyzer') ? { finalErrorAnalyzer: localOptions.finalErrorAnalyzer } : { finalErrorAnalyzer: commonRequestExecutionOptions.commonFinalErrorAnalyzer }),
|
|
17
|
-
};
|
|
18
|
+
const result = {};
|
|
19
|
+
for (const mapping of OPTION_MAPPINGS) {
|
|
20
|
+
if (localOptions.hasOwnProperty(mapping.localKey)) {
|
|
21
|
+
result[mapping.targetKey] = localOptions[mapping.localKey];
|
|
22
|
+
}
|
|
23
|
+
else if (commonRequestExecutionOptions.hasOwnProperty(mapping.commonKey)) {
|
|
24
|
+
result[mapping.targetKey] = commonRequestExecutionOptions[mapping.commonKey];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
18
28
|
}
|
|
19
29
|
//# sourceMappingURL=prepare-api-request-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-api-request-options.js","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare-api-request-options.js","sourceRoot":"","sources":["../../src/utilities/prepare-api-request-options.ts"],"names":[],"mappings":"AAaA,MAAM,eAAe,GAAoB;IACrC,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE;IACtE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE;IAC5E,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAA0B,EAAE,SAAS,EAAE,oBAAoB,EAAE;IAC1G,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;IAChE,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE;IAC3F,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAE;IACxF,EAAE,QAAQ,EAAE,0BAA0B,EAAE,SAAS,EAAE,gCAAgC,EAAE,SAAS,EAAE,0BAA0B,EAAE;IAC5H,EAAE,QAAQ,EAAE,sBAAsB,EAAE,SAAS,EAAE,4BAA4B,EAAE,SAAS,EAAE,sBAAsB,EAAE;IAChH,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE;IAC/E,EAAE,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,wBAAwB,EAAE,SAAS,EAAE,kBAAkB,EAAE;IACpG,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAE;IACxF,EAAE,QAAQ,EAAE,6BAA6B,EAAE,SAAS,EAAE,mCAAmC,EAAE,SAAS,EAAE,6BAA6B,EAAE;IACrI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,0BAA0B,EAAE,SAAS,EAAE,oBAAoB,EAAE;CAC7G,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACpC,OAA+D,EAC/D,6BACmG;IAEnG,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,YAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,6BAA6B,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,6BAAqC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,OAAO,MAA4E,CAAC;AACxF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emmvish/stable-request",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "stable-request is a TypeScript-first HTTP reliability framework that goes beyond status-code retries by validating response content, handling eventual consistency, coordinating batch workflows, and providing deep observability into every request attempt. It is designed for real-world distributed systems where HTTP success does not guarantee business success.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|