diff --git a/client_core/network/README.md b/client_core/network/README.md
index 7ac8053..ae78ee6 100644
--- a/client_core/network/README.md
+++ b/client_core/network/README.md
@@ -35,7 +35,9 @@ Receives **1** argument - **Object** wit the next fields:
- `beforeParse` - **Function**. Triggered before request **Object** is beeing parsed
Has **1** argument:
- - **reqParams** - **ReqParams**. Concrete request's request params. (Read below)
+ - **reqParams** - **ReqParams**. Concrete request's request params. (Read below)
+
+ Returns **void | Promise**
- `beforeRequest` - **Function**. Preprocess mutable request data right before it passed to Fetch API
Has **1** argument:
@@ -50,7 +52,7 @@ Receives **1** argument - **Object** wit the next fields:
- `headers` - **Request** headers
- `signal` - **Request** signal
- Returns **false** | **void**. Return **false** to abort request execution
+ Returns **boolean | void | Promise**. Return **false** to abort request execution
- `afterRequest` - **Function**. Triggered after successful request was made
Has **2** arguments:
diff --git a/client_core/network/request/index.ts b/client_core/network/request/index.ts
index 15d25d7..68adf8e 100644
--- a/client_core/network/request/index.ts
+++ b/client_core/network/request/index.ts
@@ -1,4 +1,5 @@
import populateURLParams from '../../../common/populate_url_params'
+import isExists from '../../../common/is/exists'
import type { ReqData, ReqError, RequestParams, SetupParams } from './types'
@@ -107,6 +108,27 @@ async function extractResponseData(req: RequestParams, res: Response): Promise
+) {
+
+ const currentBeforeReqResult = beforeRequest?.(reqData)
+ let isAllowedToProcess: boolean | void = true
+
+ if (isExists(currentBeforeReqResult)) {
+ if (typeof currentBeforeReqResult == 'object') {
+ await currentBeforeReqResult.then(shouldProcess => {
+ isAllowedToProcess = shouldProcess
+ })
+
+ } else isAllowedToProcess = currentBeforeReqResult
+ }
+
+
+ return isAllowedToProcess
+}
+
const createApi = (setupParams: SetupParams = {}) => {
const {
@@ -137,11 +159,10 @@ const createApi = (setupParams: SetupParams = {}) => {
isSameReqPrevent && (reqKey = `${url}_${options.method}_${options.body}`)
- if (
- beforeRequest?.(reqData) !== false
- && req.beforeRequest?.(reqData) !== false
- ) {
+ const globalReqAllowed = await isAllowedToProcess(beforeRequest, reqData)
+ const isReqAllowed = globalReqAllowed && await isAllowedToProcess(req.beforeRequest, reqData)
+ if (isReqAllowed) {
try {
if (isSameReqPrevent) {
if (activeRequest.has(reqKey)) {
diff --git a/client_core/network/request/types.d.ts b/client_core/network/request/types.d.ts
index dde81fb..dbc62f7 100644
--- a/client_core/network/request/types.d.ts
+++ b/client_core/network/request/types.d.ts
@@ -103,7 +103,7 @@ type SetupParams = {
*
* @param reqData fetch api request params
*/
- beforeRequest?(reqData: ReqData): void | false
+ beforeRequest?(reqData: ReqData): void | boolean | Promise
/**
* Triggered after successful request was made
diff --git a/package-lock.json b/package-lock.json
index 1cf7089..86815b8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "siegel",
- "version": "0.14.91",
+ "version": "0.14.92",
"lockfileVersion": 3,
"requires": true,
"packages": {
diff --git a/package.json b/package.json
index 7fee31b..425696d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "siegel",
- "version": "0.14.91",
+ "version": "0.14.92",
"homepage": "https://siegel-qe3q.onrender.com",
"url": "https://github.com/CyberCookie/siegel",
"bugs": "https://github.com/CyberCookie/siegel/issues",
@@ -31,7 +31,7 @@
},
"engineStrict": true,
"engines": {
- "node": ">=16",
+ "node": ">= 16",
"npm": ">= 7"
},
"config": {