@krainovsd/js-helpers 0.8.1 → 0.10.0

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/lib/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { ResponseError, createRequestClientInstance } from './lib/api/core.js';
2
- export { getAuthToken, updateAuthToken } from './lib/api/auth/token.js';
2
+ export { getAuthToken, getAuthTokenNoRefresh, updateAuthToken, updateAuthTokenNoRefresh } from './lib/api/auth/token.js';
3
3
  export { getAuthUser, updateAuthUser } from './lib/api/auth/user.js';
4
4
  export { downloadFile } from './lib/browser/download-file.js';
5
5
  export { downloadJson } from './lib/browser/download-json.js';
@@ -53,7 +53,7 @@ export { isString } from './lib/typings/is-string.js';
53
53
  export { isUndefined } from './lib/typings/is-undefined.js';
54
54
  export { isDate } from './lib/typings/is-date.js';
55
55
  export { DATE_TYPES } from './constants/date.js';
56
- export { API_MIDDLEWARES } from './constants/api.js';
56
+ export { API_MIDDLEWARES, POST_API_MIDDLEWARES } from './constants/api.js';
57
57
  export { IS_BROWSER, IS_BUN, IS_DENO, IS_JEST, IS_NODE, IS_WEB_WORKER } from './constants/environment.js';
58
58
  export { COLOR_FORMATS } from './constants/colors.js';
59
59
  export { FIELD_TYPES } from './constants/fields.js';
@@ -3,6 +3,7 @@ import { isString } from '../../typings/is-string.js';
3
3
  import { isNull } from '../../typings/is-null.js';
4
4
  import { isObject } from '../../typings/is-object.js';
5
5
  import { isUndefined } from '../../typings/is-undefined.js';
6
+ import { waitUntil } from '../../utils/wait-until.js';
6
7
  import { getByPath } from '../../utils/get-by-path.js';
7
8
  import '../../../constants/environment.js';
8
9
  import 'dayjs';
@@ -10,6 +11,7 @@ import '../../date/is-today.js';
10
11
  import '../../date/is-tomorrow.js';
11
12
  import '../../date/is-yesterday.js';
12
13
  import 'lodash/set';
14
+ import { wait } from '../../utils/wait.js';
13
15
 
14
16
  async function updateAuthToken(options) {
15
17
  let token = localStorage.getItem(options.storageTokenName);
@@ -64,6 +66,76 @@ function transformData(data, pathToToken, pathToTokenExpires) {
64
66
  token,
65
67
  };
66
68
  }
69
+ async function getAuthTokenNoRefresh(options) {
70
+ let waiting = true;
71
+ const url = new URL(window.origin);
72
+ url.searchParams.append(options.queryTokenExpiresName, "true");
73
+ let windowInstance = window.open(url.toString(), "_blank", "width=800,height=600,left=100,top=100");
74
+ if (!windowInstance) {
75
+ windowInstance = window.open(url.toString());
76
+ }
77
+ if (!windowInstance) {
78
+ if (options.onWindowOpenError)
79
+ options.onWindowOpenError();
80
+ return;
81
+ }
82
+ const channel = new BroadcastChannel(options.queryIsRefreshTokenName);
83
+ channel.onmessage = () => {
84
+ if (waiting) {
85
+ waiting = false;
86
+ channel.close();
87
+ }
88
+ };
89
+ setTimeout(() => {
90
+ if (waiting) {
91
+ waiting = false;
92
+ channel.close();
93
+ }
94
+ if (windowInstance && !windowInstance.closed) {
95
+ windowInstance.close();
96
+ }
97
+ }, 15000);
98
+ await waitUntil(() => waiting);
99
+ }
100
+ async function updateAuthTokenNoRefresh(options) {
101
+ let expires = localStorage.getItem(options.storageTokenExpiresName);
102
+ if (expires && !Number.isNaN(+expires) && Date.now() > +expires)
103
+ expires = null;
104
+ let hasExpiresQuery = false;
105
+ if (!expires) {
106
+ const queries = window.location.search.substring(1).split("&");
107
+ for (const query of queries) {
108
+ const [key, value] = query.split("=");
109
+ if (key === options.queryTokenExpiresName && value) {
110
+ expires = value;
111
+ hasExpiresQuery = true;
112
+ break;
113
+ }
114
+ }
115
+ if (expires && !Number.isNaN(+expires) && Date.now() > +expires)
116
+ expires = null;
117
+ }
118
+ if (!expires) {
119
+ return void window.location.replace(options.authUrl());
120
+ }
121
+ localStorage.setItem(options.storageTokenExpiresName, expires);
122
+ const queries = window.location.search.substring(1).split("&");
123
+ for (const query of queries) {
124
+ const [key, value] = query.split("=");
125
+ if (key === options.queryIsRefreshTokenName && value === "true") {
126
+ const channel = new BroadcastChannel(options.queryIsRefreshTokenName);
127
+ channel.postMessage(true);
128
+ channel.close();
129
+ window.close();
130
+ }
131
+ }
132
+ if (hasExpiresQuery) {
133
+ const url = new URL(window.location.href);
134
+ url.searchParams.delete(options.queryTokenExpiresName);
135
+ window.location.replace(url.toString());
136
+ await wait(300);
137
+ }
138
+ }
67
139
 
68
- export { getAuthToken, updateAuthToken };
140
+ export { getAuthToken, getAuthTokenNoRefresh, updateAuthToken, updateAuthTokenNoRefresh };
69
141
  //# sourceMappingURL=token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sources":["../../../../../src/lib/api/auth/token.ts"],"sourcesContent":["import type { AuthMiddleWareOptions, AuthTokenRequestOptions } from \"../../../types\";\nimport { isNull, isNumber, isObject, isString, isUndefined } from \"../../typings\";\nimport { getByPath } from \"../../utils\";\n\nexport async function updateAuthToken(options: AuthMiddleWareOptions) {\n let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n const expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n\n if (!token || !expires || Date.now() > +expires) {\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n if (isNull(token)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(token)) {\n return void window.location.replace(options.errorUrl);\n }\n }\n\n return token;\n}\n\nexport async function getAuthToken(options: AuthTokenRequestOptions) {\n let status = 0;\n try {\n const response = await fetch(options.authTokenUrl, {\n method: \"GET\",\n });\n status = response.status;\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = (await response.json()) as Record<string, unknown>;\n\n try {\n const { expires, token } = transformData(\n result,\n options.pathToToken,\n options.pathToTokenExpires,\n );\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n localStorage.setItem(options.storageTokenName, token);\n\n return token;\n } catch {\n return undefined;\n }\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n\nfunction transformData(data: unknown, pathToToken: string, pathToTokenExpires: string) {\n if (!isObject(data)) throw new Error(\"Bad response data\");\n\n const token = getByPath(data, pathToToken);\n const expiresToken = getByPath(data, pathToTokenExpires);\n\n if ((!isString(expiresToken) && !isNumber(expiresToken)) || !isString(token))\n throw new Error(\"Bad response data\");\n\n return {\n expires: String(expiresToken),\n token,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIO,eAAe,eAAe,CAAC,OAA8B,EAAA;IAClE,IAAI,KAAK,GAA8B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACrF,MAAM,OAAO,GAA8B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAEhG,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE;QAC/C,KAAK,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AACrF,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;AACjB,YAAA,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;;AAExD,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;;;AAIzD,IAAA,OAAO,KAAK;AACd;AAEO,eAAe,YAAY,CAAC,OAAgC,EAAA;IACjE,IAAI,MAAM,GAAG,CAAC;AACd,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;AACjD,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;AACF,QAAA,MAAM,GAAG,QAAQ,CAAC,MAAM;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC;;QAG3D,MAAM,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B;AAEjE,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,aAAa,CACtC,MAAM,EACN,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,kBAAkB,CAC3B;YAED,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;YAC9D,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC;AAErD,YAAA,OAAO,KAAK;;AACZ,QAAA,MAAM;AACN,YAAA,OAAO,SAAS;;;AAElB,IAAA,MAAM;QACN,IAAI,MAAM,IAAI,GAAG;AAAE,YAAA,OAAO,SAAS;AAEnC,QAAA,OAAO,IAAI;;AAEf;AAEA,SAAS,aAAa,CAAC,IAAa,EAAE,WAAmB,EAAE,kBAA0B,EAAA;AACnF,IAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;IAEzD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC;IAC1C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC;AAExD,IAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1E,QAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;IAEtC,OAAO;AACL,QAAA,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC;QAC7B,KAAK;KACN;AACH;;;;"}
1
+ {"version":3,"file":"token.js","sources":["../../../../../src/lib/api/auth/token.ts"],"sourcesContent":["import type {\n AuthMiddleWareOptions,\n AuthNoRefreshMiddleWareOptions,\n AuthTokenNoRefreshRequestOptions,\n AuthTokenRequestOptions,\n} from \"../../../types\";\nimport { isNull, isNumber, isObject, isString, isUndefined } from \"../../typings\";\nimport { getByPath, wait, waitUntil } from \"../../utils\";\n\nexport async function updateAuthToken(options: AuthMiddleWareOptions) {\n let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n const expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n\n if (!token || !expires || Date.now() > +expires) {\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n if (isNull(token)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(token)) {\n return void window.location.replace(options.errorUrl);\n }\n }\n\n return token;\n}\n\nexport async function getAuthToken(options: AuthTokenRequestOptions) {\n let status = 0;\n try {\n const response = await fetch(options.authTokenUrl, {\n method: \"GET\",\n });\n status = response.status;\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = (await response.json()) as Record<string, unknown>;\n\n try {\n const { expires, token } = transformData(\n result,\n options.pathToToken,\n options.pathToTokenExpires,\n );\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n localStorage.setItem(options.storageTokenName, token);\n\n return token;\n } catch {\n return undefined;\n }\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n\nfunction transformData(data: unknown, pathToToken: string, pathToTokenExpires: string) {\n if (!isObject(data)) throw new Error(\"Bad response data\");\n\n const token = getByPath(data, pathToToken);\n const expiresToken = getByPath(data, pathToTokenExpires);\n\n if ((!isString(expiresToken) && !isNumber(expiresToken)) || !isString(token))\n throw new Error(\"Bad response data\");\n\n return {\n expires: String(expiresToken),\n token,\n };\n}\n\nexport async function getAuthTokenNoRefresh(options: AuthTokenNoRefreshRequestOptions) {\n let waiting = true;\n const url = new URL(window.origin);\n url.searchParams.append(options.queryTokenExpiresName, \"true\");\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n\n if (!windowInstance) {\n windowInstance = window.open(url.toString());\n }\n\n if (!windowInstance) {\n if (options.onWindowOpenError) options.onWindowOpenError();\n\n return;\n }\n\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, 15000);\n\n await waitUntil(() => waiting);\n}\n\nexport async function updateAuthTokenNoRefresh(options: AuthNoRefreshMiddleWareOptions) {\n let expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n if (expires && !Number.isNaN(+expires) && Date.now() > +expires) expires = null;\n let hasExpiresQuery = false;\n\n if (!expires) {\n const queries = window.location.search.substring(1).split(\"&\");\n for (const query of queries) {\n const [key, value] = query.split(\"=\");\n if (key === options.queryTokenExpiresName && value) {\n expires = value;\n hasExpiresQuery = true;\n break;\n }\n }\n if (expires && !Number.isNaN(+expires) && Date.now() > +expires) expires = null;\n }\n\n if (!expires) {\n return void window.location.replace(options.authUrl());\n }\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n\n const queries = window.location.search.substring(1).split(\"&\");\n for (const query of queries) {\n const [key, value] = query.split(\"=\");\n if (key === options.queryIsRefreshTokenName && value === \"true\") {\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.postMessage(true);\n channel.close();\n window.close();\n }\n }\n\n if (hasExpiresQuery) {\n const url = new URL(window.location.href);\n url.searchParams.delete(options.queryTokenExpiresName);\n window.location.replace(url.toString());\n\n await wait(300);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import '../date/is-yesterday.js';
10
10
  import 'lodash/set';
11
11
  import { wait } from '../utils/wait.js';
12
12
  import { createURLWithParams } from '../utils/create-url-with-params.js';
13
- import { generateMiddlewares } from './middlewares/index.js';
13
+ import { generateMiddlewares, generatePostMiddlewares } from './middlewares/index.js';
14
14
 
15
15
  class ResponseError extends Error {
16
16
  status;
@@ -21,8 +21,14 @@ class ResponseError extends Error {
21
21
  this.description = description;
22
22
  }
23
23
  }
24
- function createRequestClientInstance({ activeMiddlewares, middlewareOptions, customMiddlewares, } = {}) {
25
- const executeMiddlewares = generateMiddlewares(activeMiddlewares || [], middlewareOptions || {}, customMiddlewares || []);
24
+ function createRequestClientInstance(options = {}) {
25
+ let executeMiddlewares;
26
+ let executePostMiddlewares;
27
+ function setMiddlewares({ activeMiddlewares = [], middlewareOptions = {}, customMiddlewares = [], activePostMiddlewares = [], postMiddlewaresOptions = {}, customPostMiddlewares = [], } = {}) {
28
+ executeMiddlewares = generateMiddlewares(activeMiddlewares, middlewareOptions, customMiddlewares);
29
+ executePostMiddlewares = generatePostMiddlewares(activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares);
30
+ }
31
+ setMiddlewares(options);
26
32
  async function handleRequest(request, responseWithStatus) {
27
33
  if (request.delay) {
28
34
  await wait(request.delay);
@@ -74,13 +80,29 @@ function createRequestClientInstance({ activeMiddlewares, middlewareOptions, cus
74
80
  signal: request.signal,
75
81
  });
76
82
  }
83
+ await executePostMiddlewares(response);
77
84
  if (!response) {
78
85
  throw new Error("hasn't response");
79
86
  }
80
87
  if (!response.ok) {
88
+ let result;
89
+ try {
90
+ const contentType = response.headers.get("content-type");
91
+ if (contentType?.includes?.("text")) {
92
+ result = await response.text();
93
+ }
94
+ else if (contentType?.includes?.("json")) {
95
+ result = await response.json();
96
+ }
97
+ else {
98
+ result = await response.blob();
99
+ }
100
+ }
101
+ catch { }
81
102
  throw new ResponseError({
82
103
  status: response.status,
83
104
  message: `HTTP error! Status: ${response.status}`,
105
+ description: result,
84
106
  });
85
107
  }
86
108
  if (request.downloadFile) {
@@ -142,6 +164,7 @@ function createRequestClientInstance({ activeMiddlewares, middlewareOptions, cus
142
164
  return {
143
165
  requestApi,
144
166
  requestApiWithMeta,
167
+ setMiddlewares,
145
168
  };
146
169
  }
147
170
 
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sources":["../../../../src/lib/api/core.ts"],"sourcesContent":["import type { BodyInit as NodeBodyInit, Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER, IS_JEST, IS_NODE } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n Middleware,\n MiddlewaresOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { generateMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n description?: string;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n description?: string;\n\n constructor({ message, status, description }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n }\n}\n\ntype CreateRequestClientInstance = {\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n};\n\nexport function createRequestClientInstance({\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n}: CreateRequestClientInstance = {}) {\n const executeMiddlewares = generateMiddlewares(\n activeMiddlewares || [],\n middlewareOptions || {},\n customMiddlewares || [],\n );\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n let response: Response | NodeResponse | undefined;\n\n if (IS_BROWSER || IS_JEST) {\n response = await fetch(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n if (IS_NODE && !IS_JEST) {\n const nodeFetch = (await import(\"node-fetch\")).default;\n response = await nodeFetch(url, {\n method,\n body: preparedBody as NodeBodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sources":["../../../../src/lib/api/core.ts"],"sourcesContent":["import type { BodyInit as NodeBodyInit, Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER, IS_JEST, IS_NODE } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n description?: unknown;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n description?: unknown;\n\n constructor({ message, status, description }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n }\n}\n\ntype CreateRequestClientInstance = {\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance = {}) {\n let executeMiddlewares: <T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: (response: Response | NodeResponse | undefined) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n }: CreateRequestClientInstance = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n let response: Response | NodeResponse | undefined;\n\n if (IS_BROWSER || IS_JEST) {\n response = await fetch(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n if (IS_NODE && !IS_JEST) {\n const nodeFetch = (await import(\"node-fetch\")).default;\n response = await nodeFetch(url, {\n method,\n body: preparedBody as NodeBodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n\n await executePostMiddlewares(response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {}\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { waitUntil } from '../../utils/wait-until.js';
2
+ import 'lodash/get';
3
+ import '../../../constants/environment.js';
4
+ import 'dayjs';
5
+ import '../../date/is-today.js';
6
+ import '../../date/is-tomorrow.js';
7
+ import '../../date/is-yesterday.js';
8
+ import 'lodash/set';
9
+ import { startWith } from '../../utils/start-with.js';
10
+ import { getAuthTokenNoRefresh } from '../auth/token.js';
11
+
12
+ let isFetchingAccessToken = false;
13
+ const generateAuthNoRefreshMiddleWare = (options) => async (request) => {
14
+ if (!options.authUrl || !options.storageTokenExpiresName || !options.errorUrl) {
15
+ throw new Error("Auth middleware hasn't required options");
16
+ }
17
+ const isSameOrigin = !startWith(request.path, "http");
18
+ if (request.token) {
19
+ if (!isSameOrigin)
20
+ request.headers = {
21
+ ...request.headers,
22
+ Authorization: `Bearer ${request.token}`,
23
+ };
24
+ return;
25
+ }
26
+ if (isFetchingAccessToken)
27
+ await waitUntil(() => isFetchingAccessToken);
28
+ const expires = localStorage.getItem(options.storageTokenExpiresName);
29
+ if (!expires) {
30
+ isFetchingAccessToken = true;
31
+ await (options.tokenRequest ? options.tokenRequest() : getAuthTokenNoRefresh(options));
32
+ isFetchingAccessToken = false;
33
+ }
34
+ const token = options.storageTokenName ? localStorage.getItem(options.storageTokenName) : null;
35
+ if (!isSameOrigin && token)
36
+ request.headers = {
37
+ ...request.headers,
38
+ Authorization: `Bearer ${token}`,
39
+ };
40
+ };
41
+
42
+ export { generateAuthNoRefreshMiddleWare };
43
+ //# sourceMappingURL=auth-no-refresh-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-no-refresh-middleware.js","sources":["../../../../../src/lib/api/middlewares/auth-no-refresh-middleware.ts"],"sourcesContent":["import type { AuthNoRefreshMiddleWareOptions, Middleware } from \"../../../types\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getAuthTokenNoRefresh } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthNoRefreshMiddleWare =\n (options: AuthNoRefreshMiddleWareOptions): Middleware =>\n async (request) => {\n if (!options.authUrl || !options.storageTokenExpiresName || !options.errorUrl) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !startWith(request.path, \"http\");\n\n if (request.token) {\n if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${request.token}`,\n };\n\n return;\n }\n\n if (isFetchingAccessToken) await waitUntil(() => isFetchingAccessToken);\n\n const expires = localStorage.getItem(options.storageTokenExpiresName);\n if (!expires) {\n isFetchingAccessToken = true;\n await (options.tokenRequest ? options.tokenRequest() : getAuthTokenNoRefresh(options));\n isFetchingAccessToken = false;\n }\n const token = options.storageTokenName ? localStorage.getItem(options.storageTokenName) : null;\n\n if (!isSameOrigin && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n"],"names":[],"mappings":";;;;;;;;;;;AAIA,IAAI,qBAAqB,GAAG,KAAK;AAE1B,MAAM,+BAA+B,GAC1C,CAAC,OAAuC,KACxC,OAAO,OAAO,KAAI;AAChB,IAAA,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC7E,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;;IAG5D,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAErD,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,YAAY;YACf,OAAO,CAAC,OAAO,GAAG;gBAChB,GAAG,OAAO,CAAC,OAAO;AAClB,gBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,KAAK,CAAE,CAAA;aACzC;QAEH;;AAGF,IAAA,IAAI,qBAAqB;AAAE,QAAA,MAAM,SAAS,CAAC,MAAM,qBAAqB,CAAC;IAEvE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACrE,IAAI,CAAC,OAAO,EAAE;QACZ,qBAAqB,GAAG,IAAI;AAC5B,QAAA,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtF,qBAAqB,GAAG,KAAK;;IAE/B,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAE9F,IAAI,CAAC,YAAY,IAAI,KAAK;QACxB,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,OAAO,CAAC,OAAO;YAClB,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;SACjC;AACL;;;;"}
@@ -1,10 +1,21 @@
1
- const consoleMiddleware = (response) => {
2
- return new Promise((resolve) => {
3
- // eslint-disable-next-line no-console
4
- console.log(response);
5
- resolve(true);
6
- });
7
- };
1
+ function generateConsoleMiddleware(options = {}) {
2
+ return (request) => {
3
+ return new Promise((resolve) => {
4
+ if ((options.filter &&
5
+ !options.filter(request)) ||
6
+ (options.filterHeaders && !options.filterHeaders(request.headers)) ||
7
+ (options.filterMethod && !options.filterMethod(request.method)) ||
8
+ (options.filterParams && !options.filterParams(request.params)) ||
9
+ (options.filterPath && !options.filterPath(request.path))) {
10
+ resolve(true);
11
+ return;
12
+ }
13
+ // eslint-disable-next-line no-console
14
+ console.log(request);
15
+ resolve(true);
16
+ });
17
+ };
18
+ }
8
19
 
9
- export { consoleMiddleware };
20
+ export { generateConsoleMiddleware };
10
21
  //# sourceMappingURL=console-middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console-middleware.js","sources":["../../../../../src/lib/api/middlewares/console-middleware.ts"],"sourcesContent":["import type { Middleware } from \"../../../types\";\n\nexport const consoleMiddleware: Middleware = (response) => {\n return new Promise((resolve) => {\n // eslint-disable-next-line no-console\n console.log(response);\n resolve(true);\n });\n};\n"],"names":[],"mappings":"AAEa,MAAA,iBAAiB,GAAe,CAAC,QAAQ,KAAI;AACxD,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;AAE7B,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC;AACf,KAAC,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"console-middleware.js","sources":["../../../../../src/lib/api/middlewares/console-middleware.ts"],"sourcesContent":["import type { LoggerMiddlewareOptions, Middleware, RequestInterface } from \"../../../types\";\n\nexport function generateConsoleMiddleware(options: LoggerMiddlewareOptions = {}): Middleware {\n return (request) => {\n return new Promise((resolve) => {\n if (\n (options.filter &&\n !options.filter(request as RequestInterface<unknown, unknown, unknown, unknown>)) ||\n (options.filterHeaders && !options.filterHeaders(request.headers)) ||\n (options.filterMethod && !options.filterMethod(request.method)) ||\n (options.filterParams && !options.filterParams(request.params)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve(true);\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve(true);\n });\n };\n}\n"],"names":[],"mappings":"AAEgB,SAAA,yBAAyB,CAAC,OAAA,GAAmC,EAAE,EAAA;IAC7E,OAAO,CAAC,OAAO,KAAI;AACjB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IACE,CAAC,OAAO,CAAC,MAAM;AACb,gBAAA,CAAC,OAAO,CAAC,MAAM,CAAC,OAA+D,CAAC;AAClF,iBAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClE,iBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACzD;gBACA,OAAO,CAAC,IAAI,CAAC;gBAEb;;;AAGF,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
@@ -0,0 +1,47 @@
1
+ function generateConsolePostMiddleware(options = {}) {
2
+ return (response) => {
3
+ return new Promise((resolve) => {
4
+ void (async function logger() {
5
+ try {
6
+ if (!response ||
7
+ (options.filter && !options.filter(response)) ||
8
+ (options.filterStatus && !options.filterStatus(response.status)) ||
9
+ (options.filterUrl && !options.filterUrl(response.url)) ||
10
+ (options.filterHeaders && !options.filterHeaders(response.headers))) {
11
+ resolve(true);
12
+ return;
13
+ }
14
+ const contentType = response.headers.get("content-type");
15
+ let result;
16
+ if (contentType?.includes?.("text")) {
17
+ result = await response.text();
18
+ }
19
+ else if (contentType?.includes?.("json")) {
20
+ result = await response.json();
21
+ }
22
+ else {
23
+ result = await response.blob();
24
+ }
25
+ console.log({
26
+ url: response.url,
27
+ status: response.status,
28
+ headers: response.headers,
29
+ body: result,
30
+ });
31
+ resolve(true);
32
+ }
33
+ catch {
34
+ if (response) {
35
+ console.log({ url: response.url, status: response.status, headers: response.headers });
36
+ }
37
+ resolve(true);
38
+ }
39
+ })().finally(() => {
40
+ resolve(true);
41
+ });
42
+ });
43
+ };
44
+ }
45
+
46
+ export { generateConsolePostMiddleware };
47
+ //# sourceMappingURL=console-post-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-post-middleware.js","sources":["../../../../../src/lib/api/middlewares/console-post-middleware.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { LoggerPostMiddlewareOptions, PostMiddleware } from \"../../../types\";\n\nexport function generateConsolePostMiddleware(\n options: LoggerPostMiddlewareOptions = {},\n): PostMiddleware {\n return (response) => {\n return new Promise((resolve) => {\n void (async function logger() {\n try {\n if (\n !response ||\n (options.filter && !options.filter(response)) ||\n (options.filterStatus && !options.filterStatus(response.status)) ||\n (options.filterUrl && !options.filterUrl(response.url)) ||\n (options.filterHeaders && !options.filterHeaders(response.headers))\n ) {\n resolve(true);\n\n return;\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result;\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n\n console.log({\n url: response.url,\n status: response.status,\n headers: response.headers,\n body: result,\n });\n\n resolve(true);\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve(true);\n }\n })().finally(() => {\n resolve(true);\n });\n });\n };\n}\n"],"names":[],"mappings":"AAGgB,SAAA,6BAA6B,CAC3C,OAAA,GAAuC,EAAE,EAAA;IAEzC,OAAO,CAAC,QAAQ,KAAI;AAClB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,eAAe,MAAM,GAAA;AACzB,gBAAA,IAAI;AACF,oBAAA,IACE,CAAC,QAAQ;yBACR,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7C,yBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,yBAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,yBAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EACnE;wBACA,OAAO,CAAC,IAAI,CAAC;wBAEb;;oBAGF,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACxD,oBAAA,IAAI,MAAM;oBACV,IAAI,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE;AACnC,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;yBACzB,IAAI,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE;AAC1C,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;yBACzB;AACL,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;oBAGhC,OAAO,CAAC,GAAG,CAAC;wBACV,GAAG,EAAE,QAAQ,CAAC,GAAG;wBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC;;AACb,gBAAA,MAAM;oBACN,IAAI,QAAQ,EAAE;wBACZ,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;;oBAGxF,OAAO,CAAC,IAAI,CAAC;;AAEjB,aAAC,GAAG,CAAC,OAAO,CAAC,MAAK;gBAChB,OAAO,CAAC,IAAI,CAAC;AACf,aAAC,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
@@ -1,7 +1,9 @@
1
- import { API_MIDDLEWARES } from '../../../constants/api.js';
1
+ import { API_MIDDLEWARES, POST_API_MIDDLEWARES } from '../../../constants/api.js';
2
2
  import { IS_BROWSER, IS_JEST } from '../../../constants/environment.js';
3
3
  import { generateAuthMiddleWare } from './auth-middleware.js';
4
- import { consoleMiddleware } from './console-middleware.js';
4
+ import { generateAuthNoRefreshMiddleWare } from './auth-no-refresh-middleware.js';
5
+ import { generateConsoleMiddleware } from './console-middleware.js';
6
+ import { generateConsolePostMiddleware } from './console-post-middleware.js';
5
7
 
6
8
  function generateMiddlewares(activeMiddlewares, middlewareOptions, customMiddlewares) {
7
9
  const selectedMiddlewares = customMiddlewares;
@@ -12,8 +14,13 @@ function generateMiddlewares(activeMiddlewares, middlewareOptions, customMiddlew
12
14
  selectedMiddlewares.push(generateAuthMiddleWare(middlewareOptions.auth));
13
15
  continue;
14
16
  }
17
+ case API_MIDDLEWARES.AuthNoRefresh: {
18
+ if (middlewareOptions.authNoRefresh && (IS_BROWSER || IS_JEST))
19
+ selectedMiddlewares.push(generateAuthNoRefreshMiddleWare(middlewareOptions.authNoRefresh));
20
+ continue;
21
+ }
15
22
  case API_MIDDLEWARES.Logger: {
16
- selectedMiddlewares.push(consoleMiddleware);
23
+ selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));
17
24
  continue;
18
25
  }
19
26
  default: {
@@ -33,6 +40,31 @@ function generateMiddlewares(activeMiddlewares, middlewareOptions, customMiddlew
33
40
  });
34
41
  };
35
42
  }
43
+ function generatePostMiddlewares(activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares) {
44
+ const selectedMiddlewares = customPostMiddlewares;
45
+ for (const key of activePostMiddlewares) {
46
+ switch (key) {
47
+ case POST_API_MIDDLEWARES.Logger: {
48
+ selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));
49
+ continue;
50
+ }
51
+ default: {
52
+ continue;
53
+ }
54
+ }
55
+ }
56
+ return function executeMiddlewares(response) {
57
+ return new Promise((resolve) => {
58
+ void (async () => {
59
+ for (const middleware of selectedMiddlewares) {
60
+ // eslint-disable-next-line no-await-in-loop
61
+ await middleware(response);
62
+ }
63
+ resolve(1);
64
+ })();
65
+ });
66
+ };
67
+ }
36
68
 
37
- export { generateMiddlewares };
69
+ export { generateMiddlewares, generatePostMiddlewares };
38
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/api/middlewares/index.ts"],"sourcesContent":["import { API_MIDDLEWARES, IS_BROWSER, IS_JEST } from \"../../../constants\";\nimport type {\n ActiveMiddleware,\n Middleware,\n MiddlewaresOptions,\n RequestInterface,\n} from \"../../../types\";\nimport { generateAuthMiddleWare } from \"./auth-middleware\";\nimport { consoleMiddleware } from \"./console-middleware\";\n\nexport function generateMiddlewares(\n activeMiddlewares: ActiveMiddleware,\n middlewareOptions: MiddlewaresOptions,\n customMiddlewares: Middleware[],\n) {\n const selectedMiddlewares: Middleware[] = customMiddlewares;\n\n for (const key of activeMiddlewares) {\n switch (key) {\n case API_MIDDLEWARES.Auth: {\n if (middlewareOptions.auth && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(generateAuthMiddleWare(middlewareOptions.auth));\n continue;\n }\n case API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(consoleMiddleware);\n continue;\n }\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request);\n }\n\n resolve(1);\n })();\n });\n };\n}\n"],"names":[],"mappings":";;;;;SAUgB,mBAAmB,CACjC,iBAAmC,EACnC,iBAAqC,EACrC,iBAA+B,EAAA;IAE/B,MAAM,mBAAmB,GAAiB,iBAAiB;AAE3D,IAAA,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;QACnC,QAAQ,GAAG;AACT,YAAA,KAAK,eAAe,CAAC,IAAI,EAAE;gBACzB,IAAI,iBAAiB,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC;oBACnD,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC1E;;AAEF,YAAA,KAAK,eAAe,CAAC,MAAM,EAAE;AAC3B,gBAAA,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC3C;;YAEF,SAAS;gBACP;;;;IAKN,OAAO,SAAS,kBAAkB,CAChC,OAAuD,EAAA;AAEvD,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,YAAW;AACf,gBAAA,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;;AAE5C,oBAAA,MAAM,UAAU,CAAC,OAAO,CAAC;;gBAG3B,OAAO,CAAC,CAAC,CAAC;aACX,GAAG;AACN,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/lib/api/middlewares/index.ts"],"sourcesContent":["import type { Response as NodeResponse } from \"node-fetch\";\nimport { API_MIDDLEWARES, IS_BROWSER, IS_JEST, POST_API_MIDDLEWARES } from \"../../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../../types\";\nimport { generateAuthMiddleWare } from \"./auth-middleware\";\nimport { generateAuthNoRefreshMiddleWare } from \"./auth-no-refresh-middleware\";\nimport { generateConsoleMiddleware } from \"./console-middleware\";\nimport { generateConsolePostMiddleware } from \"./console-post-middleware\";\n\nexport function generateMiddlewares(\n activeMiddlewares: ActiveMiddleware,\n middlewareOptions: MiddlewaresOptions,\n customMiddlewares: Middleware[],\n) {\n const selectedMiddlewares: Middleware[] = customMiddlewares;\n\n for (const key of activeMiddlewares) {\n switch (key) {\n case API_MIDDLEWARES.Auth: {\n if (middlewareOptions.auth && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(generateAuthMiddleWare(middlewareOptions.auth));\n continue;\n }\n case API_MIDDLEWARES.AuthNoRefresh: {\n if (middlewareOptions.authNoRefresh && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(\n generateAuthNoRefreshMiddleWare(middlewareOptions.authNoRefresh),\n );\n continue;\n }\n case API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));\n continue;\n }\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request);\n }\n\n resolve(1);\n })();\n });\n };\n}\n\nexport function generatePostMiddlewares(\n activePostMiddlewares: ActivePostMiddleware,\n postMiddlewaresOptions: PostMiddlewareOptions,\n customPostMiddlewares: PostMiddleware[],\n) {\n const selectedMiddlewares: PostMiddleware[] = customPostMiddlewares;\n\n for (const key of activePostMiddlewares) {\n switch (key) {\n case POST_API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));\n continue;\n }\n\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares(response: Response | NodeResponse | undefined) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(response);\n }\n\n resolve(1);\n })();\n });\n };\n}\n"],"names":[],"mappings":";;;;;;;SAgBgB,mBAAmB,CACjC,iBAAmC,EACnC,iBAAqC,EACrC,iBAA+B,EAAA;IAE/B,MAAM,mBAAmB,GAAiB,iBAAiB;AAE3D,IAAA,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;QACnC,QAAQ,GAAG;AACT,YAAA,KAAK,eAAe,CAAC,IAAI,EAAE;gBACzB,IAAI,iBAAiB,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC;oBACnD,mBAAmB,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC1E;;AAEF,YAAA,KAAK,eAAe,CAAC,aAAa,EAAE;gBAClC,IAAI,iBAAiB,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC;oBAC5D,mBAAmB,CAAC,IAAI,CACtB,+BAA+B,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACjE;gBACH;;AAEF,YAAA,KAAK,eAAe,CAAC,MAAM,EAAE;gBAC3B,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC7E;;YAEF,SAAS;gBACP;;;;IAKN,OAAO,SAAS,kBAAkB,CAChC,OAAuD,EAAA;AAEvD,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,YAAW;AACf,gBAAA,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;;AAE5C,oBAAA,MAAM,UAAU,CAAC,OAAO,CAAC;;gBAG3B,OAAO,CAAC,CAAC,CAAC;aACX,GAAG;AACN,SAAC,CAAC;AACJ,KAAC;AACH;SAEgB,uBAAuB,CACrC,qBAA2C,EAC3C,sBAA6C,EAC7C,qBAAuC,EAAA;IAEvC,MAAM,mBAAmB,GAAqB,qBAAqB;AAEnE,IAAA,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE;QACvC,QAAQ,GAAG;AACT,YAAA,KAAK,oBAAoB,CAAC,MAAM,EAAE;gBAChC,mBAAmB,CAAC,IAAI,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACtF;;YAGF,SAAS;gBACP;;;;IAKN,OAAO,SAAS,kBAAkB,CAAC,QAA6C,EAAA;AAC9E,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,YAAW;AACf,gBAAA,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;;AAE5C,oBAAA,MAAM,UAAU,CAAC,QAAQ,CAAC;;gBAG5B,OAAO,CAAC,CAAC,CAAC;aACX,GAAG;AACN,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { Response as Response$1, Headers as Headers$1 } from 'node-fetch';
2
+
1
3
  declare const DATE_TYPES: {
2
4
  readonly Days: "days";
3
5
  readonly Months: "months";
@@ -9,6 +11,10 @@ declare const DATE_TYPES: {
9
11
 
10
12
  declare const API_MIDDLEWARES: {
11
13
  readonly Auth: "auth";
14
+ readonly AuthNoRefresh: "authNoRefresh";
15
+ readonly Logger: "logger";
16
+ };
17
+ declare const POST_API_MIDDLEWARES: {
12
18
  readonly Logger: "logger";
13
19
  };
14
20
 
@@ -40,9 +46,10 @@ type ValueOf<T> = T extends {} ? T[keyof T] : unknown;
40
46
 
41
47
  type ParamValueType = string | number | boolean;
42
48
  type ParamsType = Record<string, ParamValueType | ParamValueType[] | null | undefined>;
49
+ type RequestMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
43
50
  interface RequestInterface<T, Incoming, Body, Outcoming> {
44
51
  path: string;
45
- method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
52
+ method: RequestMethod;
46
53
  body?: Body | Outcoming;
47
54
  params?: ParamsType;
48
55
  headers?: Record<string, string | undefined>;
@@ -56,6 +63,18 @@ interface RequestInterface<T, Incoming, Body, Outcoming> {
56
63
  signal?: AbortSignal;
57
64
  }
58
65
  type Middleware = <T, Incoming, Body, Outcoming>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<unknown>;
66
+ type PostMiddleware = (response: Response | Response$1 | undefined) => Promise<unknown>;
67
+ type PostMiddlewareType = ValueOf<typeof POST_API_MIDDLEWARES>;
68
+ type ActivePostMiddleware = PostMiddlewareType[];
69
+ type LoggerPostMiddlewareOptions = {
70
+ filter?: (response: Response | Response$1 | undefined) => boolean;
71
+ filterStatus?: (status: number) => boolean;
72
+ filterUrl?: (url: string) => boolean;
73
+ filterHeaders?: (headers: Headers | Headers$1) => boolean;
74
+ };
75
+ type PostMiddlewareOptions = {
76
+ logger?: LoggerPostMiddlewareOptions;
77
+ };
59
78
  type MiddlewareType = ValueOf<typeof API_MIDDLEWARES>;
60
79
  type ActiveMiddleware = MiddlewareType[];
61
80
  type AuthMiddleWareOptions = {
@@ -68,8 +87,17 @@ type AuthMiddleWareOptions = {
68
87
  pathToTokenExpires: string;
69
88
  tokenRequest?: () => Promise<string | null | undefined>;
70
89
  };
90
+ type LoggerMiddlewareOptions = {
91
+ filter?: (request: RequestInterface<unknown, unknown, unknown, unknown>) => boolean;
92
+ filterPath?: (path: string) => boolean;
93
+ filterMethod?: (method: RequestMethod) => boolean;
94
+ filterParams?: (params?: ParamsType) => boolean;
95
+ filterHeaders?: (headers?: Record<string, string | undefined>) => boolean;
96
+ };
71
97
  type MiddlewaresOptions = {
72
98
  auth?: AuthMiddleWareOptions;
99
+ authNoRefresh?: AuthNoRefreshMiddleWareOptions;
100
+ logger?: LoggerMiddlewareOptions;
73
101
  };
74
102
  type AuthUserUpdateRequestOptions<User extends Record<string, unknown>> = AuthUserRequestOptions & {
75
103
  userRequest?: () => Promise<User | null | undefined>;
@@ -86,6 +114,22 @@ type AuthTokenRequestOptions = {
86
114
  pathToToken: string;
87
115
  pathToTokenExpires: string;
88
116
  };
117
+ type AuthTokenNoRefreshRequestOptions = {
118
+ storageTokenExpiresName: string;
119
+ queryIsRefreshTokenName: string;
120
+ queryTokenExpiresName: string;
121
+ onWindowOpenError?: () => void;
122
+ };
123
+ type AuthNoRefreshMiddleWareOptions = {
124
+ errorUrl: string;
125
+ authUrl: () => string;
126
+ storageTokenName?: string;
127
+ storageTokenExpiresName: string;
128
+ queryTokenExpiresName: string;
129
+ queryIsRefreshTokenName: string;
130
+ tokenRequest?: () => Promise<string | null | undefined>;
131
+ onWindowOpenError?: () => void;
132
+ };
89
133
 
90
134
  type DateType = ValueOf<typeof DATE_TYPES>;
91
135
  type DateGetterRule = {
@@ -100,29 +144,39 @@ type ColorFormat = ValueOf<typeof COLOR_FORMATS>;
100
144
  type ResponseErrorOptions = {
101
145
  message: string;
102
146
  status: number;
103
- description?: string;
147
+ description?: unknown;
104
148
  };
105
149
  declare class ResponseError extends Error {
106
150
  status: number;
107
- description?: string;
151
+ description?: unknown;
108
152
  constructor({ message, status, description }: ResponseErrorOptions);
109
153
  }
110
154
  type CreateRequestClientInstance = {
111
155
  activeMiddlewares?: ActiveMiddleware;
112
156
  middlewareOptions?: MiddlewaresOptions;
113
157
  customMiddlewares?: Middleware[];
158
+ activePostMiddlewares?: ActivePostMiddleware;
159
+ postMiddlewaresOptions?: PostMiddlewareOptions;
160
+ customPostMiddlewares?: PostMiddleware[];
161
+ };
162
+ type RequestInstance = {
163
+ <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>): Promise<T>;
164
+ setOptions: (options: CreateRequestClientInstance) => void;
114
165
  };
115
- declare function createRequestClientInstance({ activeMiddlewares, middlewareOptions, customMiddlewares, }?: CreateRequestClientInstance): {
166
+ declare function createRequestClientInstance(options?: CreateRequestClientInstance): {
116
167
  requestApi: <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<T>;
117
168
  requestApiWithMeta: <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<{
118
169
  data: T;
119
170
  status: number;
120
171
  headers: Record<string, string>;
121
172
  }>;
173
+ setMiddlewares: ({ activeMiddlewares, middlewareOptions, customMiddlewares, activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares, }?: CreateRequestClientInstance) => void;
122
174
  };
123
175
 
124
176
  declare function updateAuthToken(options: AuthMiddleWareOptions): Promise<string | undefined>;
125
177
  declare function getAuthToken(options: AuthTokenRequestOptions): Promise<string | null | undefined>;
178
+ declare function getAuthTokenNoRefresh(options: AuthTokenNoRefreshRequestOptions): Promise<void>;
179
+ declare function updateAuthTokenNoRefresh(options: AuthNoRefreshMiddleWareOptions): Promise<undefined>;
126
180
 
127
181
  declare function updateAuthUser<User extends Record<string, unknown>>(options: AuthUserUpdateRequestOptions<User>): Promise<User | undefined>;
128
182
  declare function getAuthUser<User extends Record<string, unknown>>(options: AuthUserRequestOptions): Promise<User | null | undefined>;
@@ -281,4 +335,4 @@ declare function isUndefined(value: unknown): value is undefined;
281
335
 
282
336
  declare function isDate(value: unknown): value is Date;
283
337
 
284
- export { API_MIDDLEWARES, type ActiveMiddleware, type AuthMiddleWareOptions, type AuthTokenRequestOptions, type AuthUserRequestOptions, type AuthUserUpdateRequestOptions, COLOR_FORMATS, type ColorFormat, DATE_TYPES, type DateGetterRule, type DateType, FIELD_TYPES, type FieldType, IS_BROWSER, IS_BUN, IS_DENO, IS_JEST, IS_NODE, IS_WEB_WORKER, type Maybe, type Middleware, type MiddlewareType, type MiddlewaresOptions, type ParamValueType, type ParamsType, type PositionPlacements, type RequestInterface, ResponseError, type ValueOf, type VisiblePosition, arrayToMapByKey, buildQueryString, checkType, createRequestClientInstance, createURLWithParams, dateDifference, dateFormat, downloadFile, downloadJson, fieldViewFormat, getAuthToken, getAuthUser, getByPath, getCallerFunctionName, getColorFormat, getDateByRules, getFileNameFromHeader, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, joinPaths, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, startWith, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToNumber, translit, trimUrl, updateAuthToken, updateAuthUser, wait, waitUntil };
338
+ export { API_MIDDLEWARES, type ActiveMiddleware, type ActivePostMiddleware, type AuthMiddleWareOptions, type AuthNoRefreshMiddleWareOptions, type AuthTokenNoRefreshRequestOptions, type AuthTokenRequestOptions, type AuthUserRequestOptions, type AuthUserUpdateRequestOptions, COLOR_FORMATS, type ColorFormat, DATE_TYPES, type DateGetterRule, type DateType, FIELD_TYPES, type FieldType, IS_BROWSER, IS_BUN, IS_DENO, IS_JEST, IS_NODE, IS_WEB_WORKER, type LoggerMiddlewareOptions, type LoggerPostMiddlewareOptions, type Maybe, type Middleware, type MiddlewareType, type MiddlewaresOptions, POST_API_MIDDLEWARES, type ParamValueType, type ParamsType, type PositionPlacements, type PostMiddleware, type PostMiddlewareOptions, type PostMiddlewareType, type RequestInstance, type RequestInterface, type RequestMethod, ResponseError, type ValueOf, type VisiblePosition, arrayToMapByKey, buildQueryString, checkType, createRequestClientInstance, createURLWithParams, dateDifference, dateFormat, downloadFile, downloadJson, fieldViewFormat, getAuthToken, getAuthTokenNoRefresh, getAuthUser, getByPath, getCallerFunctionName, getColorFormat, getDateByRules, getFileNameFromHeader, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, joinPaths, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, startWith, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToNumber, translit, trimUrl, updateAuthToken, updateAuthTokenNoRefresh, updateAuthUser, wait, waitUntil };