@krainovsd/js-helpers 0.7.0 → 0.7.2

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/cjs/index.cjs CHANGED
@@ -327,7 +327,7 @@ function buildQueryString(params) {
327
327
  }
328
328
 
329
329
  function createURLWithParams(options) {
330
- const url = options.baseURL.replace(/\/$/, "").replace(/\?$/, "");
330
+ const url = options.baseURL;
331
331
  if (!options.params) {
332
332
  return url;
333
333
  }
@@ -381,7 +381,7 @@ function getFileNameFromHeader(header) {
381
381
  return name ? decodeURI(name) : null;
382
382
  }
383
383
 
384
- function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount = 3, }) {
384
+ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount = 3, throwError, errorCb, }) {
385
385
  let isStopped = false;
386
386
  if (maxCountInParallel > countRequests)
387
387
  maxCountInParallel = countRequests;
@@ -414,22 +414,36 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
414
414
  currentResponses++;
415
415
  request(promiseGetter(++currentRequests), currentRequests);
416
416
  })
417
- .catch(() => {
417
+ .catch((error) => {
418
+ if (errorCb)
419
+ errorCb(error, position, tryCount);
418
420
  if (isStopped)
419
421
  return void resolve(results);
420
422
  if (refetchAfterError && maxTryCount > tryCount) {
421
- void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));
423
+ return void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));
422
424
  }
423
- else {
424
- currentResponses++;
425
- request(promiseGetter(++currentRequests), currentRequests);
425
+ if (throwError) {
426
+ throw error;
426
427
  }
428
+ currentResponses++;
429
+ request(promiseGetter(++currentRequests), currentRequests);
427
430
  });
428
431
  }
429
432
  }),
430
433
  };
431
434
  }
432
435
 
436
+ function startWith(string, mask) {
437
+ const maskSize = mask.length;
438
+ let pos = 0;
439
+ while (pos < maskSize) {
440
+ if (string.codePointAt(pos) !== mask.codePointAt(pos))
441
+ return false;
442
+ pos++;
443
+ }
444
+ return true;
445
+ }
446
+
433
447
  function downloadFile({ data, fileName, mimeType }) {
434
448
  if (!IS_BROWSER && !IS_JEST)
435
449
  return null;
@@ -1178,7 +1192,7 @@ const generateAuthMiddleWare = (options) => async (request) => {
1178
1192
  !options.errorUrl) {
1179
1193
  throw new Error("Auth middleware hasn't required options");
1180
1194
  }
1181
- const isSameOrigin = !request.path.includes("http") && !request.path.includes("https");
1195
+ const isSameOrigin = !startWith(request.path, "http");
1182
1196
  if (request.token) {
1183
1197
  if (!isSameOrigin)
1184
1198
  request.headers = {
@@ -1273,11 +1287,7 @@ function createRequestClientInstance({ activeMiddlewares, middlewareOptions, cus
1273
1287
  }
1274
1288
  await executeMiddlewares(request);
1275
1289
  const { method, body, path, params, headers } = request;
1276
- const trimedPath = path.replace(/^\//, "").replace(/\/$/, "");
1277
- const fullPath = trimedPath.includes("http") || trimedPath.includes("https")
1278
- ? trimedPath
1279
- : `${window.location.origin}/${trimedPath}`;
1280
- const url = createURLWithParams({ baseURL: fullPath, params });
1290
+ const url = createURLWithParams({ baseURL: path, params });
1281
1291
  let preparedBody = body;
1282
1292
  if (body && !(preparedBody instanceof FormData)) {
1283
1293
  if (request.transformOutcomingData) {
@@ -1518,6 +1528,7 @@ exports.randomNumber = randomNumber;
1518
1528
  exports.randomString = randomString;
1519
1529
  exports.readFile = readFile;
1520
1530
  exports.setByPath = setByPath;
1531
+ exports.startWith = startWith;
1521
1532
  exports.syncObjectValues = syncObjectValues;
1522
1533
  exports.takeOpacityColors = takeOpacityColors;
1523
1534
  exports.transformHEXtoRGB = transformHEXtoRGB;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/constants/date.ts","../../src/constants/api.ts","../../src/constants/environment.ts","../../src/constants/colors.ts","../../src/constants/fields.ts","../../src/lib/utils/wait-until.ts","../../src/lib/typings/check-type.ts","../../src/lib/typings/is-array.ts","../../src/lib/typings/is-boolean.ts","../../src/lib/typings/is-number.ts","../../src/lib/typings/is-string.ts","../../src/lib/typings/is-id.ts","../../src/lib/typings/is-null.ts","../../src/lib/typings/is-nullable.ts","../../src/lib/typings/is-object.ts","../../src/lib/typings/is-undefined.ts","../../src/lib/typings/is-date.ts","../../src/lib/utils/get-by-path.ts","../../src/lib/date/date-difference.ts","../../src/lib/date/get-date-by-rules.ts","../../src/lib/date/get-today.ts","../../src/lib/date/get-tomorrow.ts","../../src/lib/date/get-yesterday.ts","../../src/lib/date/is-today.ts","../../src/lib/date/is-tomorrow.ts","../../src/lib/date/is-yesterday.ts","../../src/lib/date/date-format.ts","../../src/lib/utils/transform-to-number.ts","../../src/lib/utils/field-view-format.ts","../../src/lib/utils/set-by-path.ts","../../src/lib/utils/json-parse.ts","../../src/lib/utils/random-string.ts","../../src/lib/utils/wait.ts","../../src/lib/utils/build-query-string.ts","../../src/lib/utils/create-url-with-params.ts","../../src/lib/utils/trim-url.ts","../../src/lib/utils/array-to-map-by-key.ts","../../src/lib/utils/sync-object-values.ts","../../src/lib/utils/random-number.ts","../../src/lib/utils/get-file-name-from-header.ts","../../src/lib/utils/limit-stream-of-requests.ts","../../src/lib/browser/download-file.ts","../../src/lib/browser/download-json.ts","../../src/lib/browser/read-file.ts","../../src/lib/browser/get-visible-position.ts","../../src/lib/api/auth/token.ts","../../src/lib/api/auth/user.ts","../../src/lib/api/middlewares/auth-middleware.ts","../../src/lib/api/middlewares/console-middleware.ts","../../src/lib/api/middlewares/index.ts","../../src/lib/api/core.ts","../../src/lib/colors/get-color-format.ts","../../src/lib/colors/transform-hex-to-rgb.ts","../../src/lib/colors/transform-rgb-to-rgba.ts","../../src/lib/colors/transform-rgba-to-rgb.ts","../../src/lib/colors/take-opacity-colors.ts","../../src/lib/colors/transform-to-color.ts","../../src/lib/colors/get-random-color.ts"],"sourcesContent":["export const DATE_TYPES = {\n Days: \"days\",\n Months: \"months\",\n Years: \"years\",\n Seconds: \"seconds\",\n Minutes: \"minutes\",\n Hours: \"hours\",\n} as const;\n","export const API_MIDDLEWARES = {\n Auth: \"auth\",\n Logger: \"logger\",\n} as const;\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nexport const IS_JEST = typeof process != \"undefined\" && process.env.JEST_WORKER_ID !== undefined;\n\nexport const IS_BUN =\n typeof process !== \"undefined\" && process.versions != null && process.versions.bun != null;\n\nexport const IS_DENO = // @ts-expect-error\n typeof Deno !== \"undefined\" &&\n // @ts-expect-error\n typeof Deno.version !== \"undefined\" &&\n // @ts-expect-error\n typeof Deno.version.deno !== \"undefined\";\n\nexport const IS_NODE =\n typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n\nexport const IS_WEB_WORKER =\n typeof self === \"object\" &&\n self.constructor &&\n self.constructor.name === \"DedicatedWorkerGlobalScope\";\n\nexport const IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n","export const COLOR_FORMATS = {\n Hex: \"HEX\",\n Rgb: \"RGB\",\n Rgba: \"RGBA\",\n Hsl: \"HSL\",\n} as const;\n","export const FIELD_TYPES = {\n Date: \"date\",\n Time: \"time\",\n DateTime: \"dateTime\",\n String: \"string\",\n Number: \"number\",\n Array: \"array\",\n} as const;\n","export const waitUntil = (condition: () => boolean, checkInterval = 100) => {\n return new Promise((resolve) => {\n const interval = setInterval(() => {\n if (condition()) return;\n clearInterval(interval);\n resolve(true);\n }, checkInterval);\n });\n};\n","export function checkType<R>(value: unknown, condition: boolean): value is R {\n if (condition) {\n return true;\n }\n\n return false;\n}\n","export function isArray(value: unknown): value is unknown[] {\n return Boolean(value && Array.isArray(value));\n}\n","export function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n","export function isNumber(value: unknown): value is number {\n return typeof value === \"number\" && !Number.isNaN(value);\n}\n","export function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n","import { isNumber } from \"./is-number\";\nimport { isString } from \"./is-string\";\n\nexport function isId(value: unknown): value is number | string {\n return isNumber(value) || isString(value);\n}\n","export function isNull(value: unknown): value is null {\n return value === null;\n}\n","export function isNullable(value: unknown): value is null | undefined {\n return typeof value === \"undefined\" || value === null;\n}\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n","export function isUndefined(value: unknown): value is undefined {\n return typeof value === \"undefined\";\n}\n","export function isDate(value: unknown): value is Date {\n if (value instanceof Date) return !Number.isNaN(value.valueOf());\n\n return false;\n}\n","import get from \"lodash/get\";\nimport { isArray, isObject, isString } from \"../typings\";\n\nexport function getByPath<T>(data: unknown, path?: string, defaultValue: unknown = undefined): T {\n if ((!isObject(data) && !isArray(data)) || !isString(path)) return defaultValue as T;\n\n return get(data, path, defaultValue) as T;\n}\n","import dayjs from \"dayjs\";\nimport type { DateType } from \"../../types\";\n\nexport function dateDifference(\n type: DateType,\n firstDate: Date,\n secondDate: Date = new Date(),\n float: boolean = false,\n) {\n const first = dayjs(firstDate);\n\n return first.diff(secondDate, type, float);\n}\n","import { DATE_TYPES } from \"../../constants\";\nimport { type DateGetterRule, type DateType } from \"../../types\";\n\nexport function getDateByRules(rules: DateGetterRule[], date: Date = new Date()) {\n let result = new Date(date);\n for (const rule of rules) {\n result = getDate(rule.increment, rule.type, result);\n }\n\n return result;\n}\n\nfunction getDate(increment: number, type: DateType, date: Date = new Date()) {\n const result = new Date(date);\n switch (type) {\n case DATE_TYPES.Days: {\n result.setDate(result.getDate() + increment);\n\n return result;\n }\n case DATE_TYPES.Months: {\n result.setMonth(result.getMonth() + increment);\n\n return result;\n }\n case DATE_TYPES.Years: {\n result.setFullYear(result.getFullYear() + increment);\n\n return result;\n }\n case DATE_TYPES.Seconds: {\n result.setSeconds(result.getSeconds() + increment);\n\n return result;\n }\n case DATE_TYPES.Minutes: {\n result.setMinutes(result.getMinutes() + increment);\n\n return result;\n }\n case DATE_TYPES.Hours: {\n result.setHours(result.getHours() + increment);\n\n return result;\n }\n default:\n return result;\n }\n}\n","export function getToday() {\n const startToday = new Date();\n startToday.setHours(0, 0, 0, 0);\n const endToday = new Date();\n endToday.setHours(23, 59, 59, 999);\n\n return { startToday, endToday };\n}\n","export function getTomorrow() {\n const tomorrow = new Date();\n tomorrow.setHours(0, 0, 0, 0);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n return tomorrow;\n}\n","export function getYesterday() {\n const yesterday = new Date();\n yesterday.setHours(0, 0, 0, 0);\n yesterday.setDate(yesterday.getDate() - 1);\n\n return yesterday;\n}\n","import dayjs from \"dayjs\";\nimport todayPlugin from \"dayjs/plugin/isToday\";\nimport type { Maybe } from \"../../types\";\n\ndayjs.extend(todayPlugin);\n\nexport function isToday(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isToday();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport tomorrowPlugin from \"dayjs/plugin/isTomorrow\";\nimport type { Maybe } from \"../../types\";\n\ndayjs.extend(tomorrowPlugin);\n\nexport function isTomorrow(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isTomorrow();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport yesterdayPlugin from \"dayjs/plugin/isYesterday\";\nimport { type Maybe } from \"../../types\";\n\ndayjs.extend(yesterdayPlugin);\n\nexport function isYesterday(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isYesterday();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport { isDate } from \"../typings\";\n\nexport function dateFormat(date: Date | string | number, format: string) {\n const correctDate = new Date(date);\n\n if (!isDate(correctDate)) return \"\";\n\n return dayjs(correctDate).format(format);\n}\n","import { isString } from \"../typings\";\n\nexport function transformToNumber(value: unknown) {\n let result: number | undefined;\n\n if (isString(value)) result = parseInt(value, 10);\n else result = Number(value);\n\n return Number.isNaN(result) ? 0 : result;\n}\n","import { FIELD_TYPES } from \"../../constants\";\nimport type { FieldType } from \"../../types\";\nimport { dateFormat } from \"../date\";\nimport { isArray, isBoolean, isDate, isNumber, isString } from \"../typings\";\nimport { transformToNumber } from \"./transform-to-number\";\n\nexport function fieldViewFormat(field: unknown, type: FieldType = \"string\") {\n switch (type) {\n case FIELD_TYPES.Array: {\n return isArray(field) ? field.join(\", \") : \"\";\n }\n case FIELD_TYPES.Date: {\n return isString(field) || isNumber(field) || isDate(field)\n ? dateFormat(field, \"DD.MM.YYYY\")\n : \"\";\n }\n case FIELD_TYPES.DateTime: {\n return isString(field) || isNumber(field) || isDate(field)\n ? dateFormat(field, \"DD.MM.YYYY HH:mm\")\n : \"\";\n }\n case FIELD_TYPES.Number: {\n return isString(field) || isNumber(field) || isBoolean(field)\n ? String(transformToNumber(field))\n : \"\";\n }\n case FIELD_TYPES.String: {\n return isString(field) || isNumber(field) || isBoolean(field) ? String(field) : \"\";\n }\n case FIELD_TYPES.Time: {\n return isString(field) || isNumber(field) || isDate(field) ? dateFormat(field, \"HH:mm\") : \"\";\n }\n default: {\n return isString(field) || isNumber(field) || isBoolean(field) ? String(field) : \"\";\n }\n }\n}\n","import set from \"lodash/set\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function setByPath(data: Record<string, unknown> | unknown[], path: string, value: unknown) {\n try {\n if (!isObject(data) && !isArray(data)) throw new Error(\"bad data\");\n\n set(data, path, value);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n }\n}\n","import { isString } from \"../typings\";\n\nexport function jsonParse<T>(json: unknown): T | null {\n if (!isString(json)) return null;\n\n try {\n return JSON.parse(json) as T;\n } catch {\n return null;\n }\n}\n","const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\nexport function randomString(length: number = 10, allowCharacters: string = characters) {\n let result = \"\";\n let counter = 0;\n\n while (counter < length) {\n result += allowCharacters.charAt(Math.floor(Math.random() * allowCharacters.length));\n counter += 1;\n }\n\n return result;\n}\n","export function wait(delay: number) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, delay);\n });\n}\n","import type { ParamsType } from \"../../types\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function buildQueryString(params: ParamsType): string {\n const queryString: string[] = [];\n\n for (const [key, value] of Object.entries(params)) {\n if (isObject(value) || value == undefined) continue;\n\n if (isArray(value)) {\n for (const item of value) {\n if (item != undefined && !isObject(item))\n queryString.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(item))}`);\n }\n } else {\n queryString.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n }\n\n return queryString.join(\"&\");\n}\n","import type { ParamsType } from \"../../types\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: ParamsType;\n};\n\nexport function createURLWithParams(options: CreateURLOptionsInterface): string {\n const url = options.baseURL.replace(/\\/$/, \"\").replace(/\\?$/, \"\");\n\n if (!options.params) {\n return url;\n }\n\n const queryString = buildQueryString(options.params);\n\n return `${url}?${queryString}`;\n}\n","export function trimUrl(url: string) {\n return url.replace(/^\\//, \"\").replace(/\\/$/, \"\");\n}\n","import { isId } from \"../typings\";\n\nexport function arrayToMapByKey<T extends Record<string, unknown>>(\n array: T[],\n key: keyof T,\n): Record<string, T> {\n const map: Record<string, T> = {};\n\n for (const item of array) {\n const keyValue = item[key] as unknown;\n if (isId(keyValue)) map[keyValue] = item;\n }\n\n return map;\n}\n","import { isUndefined } from \"../typings\";\nimport { getByPath } from \"./get-by-path\";\nimport { setByPath } from \"./set-by-path\";\n\nexport function syncObjectValues(\n oldObj: Record<string, unknown>,\n newObj: Record<string, unknown>,\n exception: string[] = [],\n) {\n for (const field in newObj) {\n if (exception.includes(field)) continue;\n\n const oldValue = getByPath(oldObj, field, undefined);\n const newValue = getByPath(newObj, field, undefined);\n\n if (isUndefined(oldValue) || isUndefined(newValue)) continue;\n if (oldValue === newValue) continue;\n\n setByPath(oldObj, field, newValue);\n }\n}\n","export function randomNumber(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min) + min);\n}\n","const filenameVariables = [\"filename=\", \"filename*=UTF-8''\"];\n\nexport function getFileNameFromHeader(header: string) {\n const name = header\n .split(\";\")\n .find((info) => ~info.indexOf(filenameVariables[0]) || ~info.indexOf(filenameVariables[1]))\n ?.replace(filenameVariables[0], \"\")\n ?.replace(filenameVariables[1], \"\")\n ?.replace(/\"/g, \"\")\n ?.trim();\n\n return name ? decodeURI(name) : null;\n}\n","import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T>, position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (currentResponses === countRequests) return void resolve(results);\n if (position > countRequests || promise == undefined) return;\n\n promise\n .then((result) => {\n if (isStopped) return void resolve(results);\n\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n currentResponses++;\n\n request(promiseGetter(++currentRequests), currentRequests);\n })\n .catch(() => {\n if (isStopped) return void resolve(results);\n\n if (refetchAfterError && maxTryCount > tryCount) {\n void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));\n } else {\n currentResponses++;\n request(promiseGetter(++currentRequests), currentRequests);\n }\n });\n }\n }),\n };\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\nimport { getFileNameFromHeader } from \"../utils\";\n\ntype DownloadFileOptions = {\n data: Blob;\n fileName: string;\n mimeType: string;\n};\n\nexport function downloadFile({ data, fileName, mimeType }: DownloadFileOptions) {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const name = getFileNameFromHeader(fileName);\n if (!name) throw new Error(\"Bad filename\");\n\n const blob = new Blob([data], {\n type: mimeType,\n });\n\n const downloadUrl = window.URL.createObjectURL(blob);\n\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.download = name;\n link.href = downloadUrl;\n\n document.body.appendChild(link);\n link.click();\n\n document.body.removeChild(link);\n link.remove();\n window.URL.revokeObjectURL(downloadUrl);\n\n return null;\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function downloadJson(data: unknown, name: string) {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const url = `data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(data))}`;\n\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.download = name;\n link.href = url;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n link.remove();\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function readFile(file: File) {\n return new Promise((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(null);\n\n return;\n }\n\n const reader = new FileReader();\n reader.readAsText(file);\n\n reader.onload = () => {\n resolve(reader.result);\n };\n\n reader.onerror = () => {\n resolve(null);\n };\n });\n}\n","export type PositionPlacements =\n | \"bottom-center\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"right-center\"\n | \"right-top\"\n | \"right-bottom\"\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"left-center\"\n | \"left-top\"\n | \"left-bottom\"\n | \"flex\";\n\nexport type VisiblePosition = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n placement: PositionPlacements;\n};\n\ntype InitialPosition = {\n targetNode?: HTMLElement;\n position?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\ntype GetVisiblePositionOptions = {\n node: HTMLElement;\n visibleArea?: HTMLElement;\n initialPosition?: InitialPosition;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n};\nexport function getVisiblePosition({\n initialPosition,\n node,\n visibleArea,\n placement = \"bottom-center\",\n stepX = placement === \"bottom-center\" ||\n placement === \"bottom-left\" ||\n placement === \"bottom-right\" ||\n placement === \"top-left\" ||\n placement === \"top-center\" ||\n placement === \"top-right\"\n ? 0\n : 10,\n stepY = placement === \"left-bottom\" ||\n placement === \"left-center\" ||\n placement === \"left-top\" ||\n placement === \"right-bottom\" ||\n placement === \"right-top\" ||\n placement === \"right-center\"\n ? 0\n : 10,\n flex,\n}: GetVisiblePositionOptions): VisiblePosition {\n const windowWidth = document.documentElement.clientWidth;\n const windowHeight = document.documentElement.clientHeight;\n let xStart = 0;\n let xEnd = windowWidth;\n let yStart = 0;\n let yEnd = windowHeight;\n\n if (visibleArea) {\n const { top, left, height, width } = visibleArea.getBoundingClientRect();\n xStart = left;\n xEnd = left + width;\n yStart = top;\n yEnd = top + height;\n }\n\n let targetHeight = 0;\n let targetWidth = 0;\n\n let {\n top: targetTopPosition,\n left: targetLeftPosition,\n height: nodeHeight,\n width: nodeWidth,\n } = node.getBoundingClientRect();\n\n if (initialPosition && initialPosition.targetNode) {\n const {\n top: childTop,\n left: childLeft,\n height,\n width,\n } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = childTop;\n targetLeftPosition = childLeft;\n }\n if (initialPosition && initialPosition.position) {\n if (initialPosition.position.x) {\n targetLeftPosition = initialPosition.position.x;\n }\n if (initialPosition.position.y) {\n targetTopPosition = initialPosition.position.y;\n }\n if (initialPosition.position.height) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width) {\n targetWidth = initialPosition.position.width;\n }\n }\n\n function isCompletelyVisibleX(left: number) {\n const endXPosition = nodeWidth + left;\n\n return xStart <= left && xEnd >= endXPosition;\n }\n function isCompletelyVisibleY(top: number) {\n const endYPosition = nodeHeight + top;\n\n return yStart <= top && yEnd >= endYPosition;\n }\n\n let correctLeft: number | null = targetLeftPosition;\n let correctTop: number | null = targetTopPosition;\n\n const { x, y } = getStartPositions({\n targetHeight,\n targetWidth,\n targetLeftPosition,\n nodeHeight,\n nodeWidth,\n stepX,\n stepY,\n targetTopPosition,\n });\n switch (placement) {\n case \"bottom-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = x.right;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = x.right;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = x.right;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = x.left;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = x.left;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = x.left;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n }\n}\n\ntype GetStartPositions = {\n targetWidth: number;\n targetHeight: number;\n nodeWidth: number;\n nodeHeight: number;\n targetLeftPosition: number;\n targetTopPosition: number;\n stepY: number;\n stepX: number;\n};\ntype XPositions = \"bottomCenter\" | \"bottomLeft\" | \"bottomRight\" | \"right\" | \"left\";\ntype YPosition = \"rightCenter\" | \"rightTop\" | \"rightBottom\" | \"bottom\" | \"top\";\n\nfunction getStartPositions({\n targetHeight,\n targetWidth,\n nodeHeight,\n nodeWidth,\n targetLeftPosition,\n targetTopPosition,\n stepX,\n stepY,\n}: GetStartPositions) {\n const childBottomCenter = targetWidth ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const childBottom = targetHeight ? targetTopPosition + targetHeight : targetTopPosition;\n const childRightCenter = targetHeight ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n bottomCenter: childBottomCenter - nodeWidth / 2 + stepX,\n bottomRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n bottomLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: childBottom + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n rightCenter: childRightCenter - nodeHeight / 2 + stepY,\n rightBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n rightTop: targetTopPosition + stepY,\n };\n\n return { x, y };\n}\n\ntype GetFlexVisiblePosition = {\n isCompletelyVisibleY: (top: number) => boolean;\n isCompletelyVisibleX: (left: number) => boolean;\n initialLeft: number;\n initialTop: number;\n xEnd: number;\n yEnd: number;\n nodeWidth: number;\n nodeHeight: number;\n};\n\nfunction getFlexVisiblePosition({\n initialLeft,\n initialTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n}: GetFlexVisiblePosition): VisiblePosition {\n if (!isCompletelyVisibleY(initialTop)) {\n initialTop = yEnd - nodeHeight;\n }\n if (!isCompletelyVisibleX(initialLeft)) {\n initialLeft = xEnd - nodeWidth;\n }\n\n return {\n top: initialTop,\n left: initialLeft,\n bottom: yEnd - initialTop - nodeHeight,\n right: xEnd - initialLeft - nodeWidth,\n placement: \"flex\",\n };\n}\n","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","import type { AuthUserRequestOptions, AuthUserUpdateRequestOptions } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\n\nexport async function updateAuthUser<User extends Record<string, unknown>>(\n options: AuthUserUpdateRequestOptions<User>,\n) {\n const userInfo = await (options.userRequest ? options.userRequest() : getAuthUser<User>(options));\n if (isNull(userInfo)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(userInfo)) {\n return void window.location.replace(options.errorUrl);\n }\n\n return userInfo;\n}\n\nexport async function getAuthUser<User extends Record<string, unknown>>(\n options: AuthUserRequestOptions,\n): Promise<User | null | undefined> {\n let status = 0;\n try {\n const response = await fetch(options.authUserUrl, {\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 User;\n\n return result;\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n","import type { AuthMiddleWareOptions, Middleware } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\nimport { waitUntil } from \"../../utils\";\nimport { getAuthToken } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthMiddleWare =\n (options: AuthMiddleWareOptions): Middleware =>\n async (request) => {\n if (\n !options.authTokenUrl ||\n !options.authUrl ||\n !options.storageTokenExpiresName ||\n !options.storageTokenName ||\n !options.pathToTokenExpires ||\n !options.pathToToken ||\n !options.errorUrl\n ) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !request.path.includes(\"http\") && !request.path.includes(\"https\");\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 let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n\n if (!expires || Date.now() > +expires || !token) {\n isFetchingAccessToken = true;\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n isFetchingAccessToken = false;\n\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 if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n","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","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","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 const trimedPath = path.replace(/^\\//, \"\").replace(/\\/$/, \"\");\n const fullPath =\n trimedPath.includes(\"http\") || trimedPath.includes(\"https\")\n ? trimedPath\n : `${window.location.origin}/${trimedPath}`;\n\n const url = createURLWithParams({ baseURL: fullPath, 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\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\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","import { COLOR_FORMATS } from \"../../constants\";\n\nexport function getColorFormat(color: string) {\n if (color.startsWith(\"#\")) {\n return COLOR_FORMATS.Hex;\n }\n if (color.startsWith(\"rgba\")) {\n return COLOR_FORMATS.Rgba;\n }\n if (color.startsWith(\"rgb\")) {\n return COLOR_FORMATS.Rgb;\n }\n if (color.startsWith(\"hsl\")) {\n return COLOR_FORMATS.Hsl;\n }\n}\n","export function transformHEXtoRGB(hex: string) {\n return `rgb(${hex.match(/\\w\\w/g)?.map((x) => +`0x${x}`)})`;\n}\n","export function transformRGBtoRGBA(rgb: string, opacity: number) {\n const code = rgb.match(/\\d+/g);\n code?.push(String(opacity / 100));\n\n return `rgba(${code?.join(\",\")})`;\n}\n","export function transformRGBAtoRGB(rgba: string) {\n const code = rgba.match(/\\d+/g);\n code?.splice(3);\n\n return `rgb(${code?.join(\",\")})`;\n}\n","import { COLOR_FORMATS } from \"../../constants\";\nimport { getColorFormat } from \"./get-color-format\";\nimport { transformHEXtoRGB } from \"./transform-hex-to-rgb\";\nimport { transformRGBtoRGBA } from \"./transform-rgb-to-rgba\";\nimport { transformRGBAtoRGB } from \"./transform-rgba-to-rgb\";\n\nexport function takeOpacityColors(color: string | undefined, opacities: number[]) {\n let rgbColor = color;\n\n if (!rgbColor) return [];\n\n if (getColorFormat(rgbColor) === COLOR_FORMATS.Hex) {\n rgbColor = transformHEXtoRGB(rgbColor);\n } else if (getColorFormat(rgbColor) === COLOR_FORMATS.Rgba) {\n rgbColor = transformRGBAtoRGB(rgbColor);\n }\n\n if (getColorFormat(rgbColor) !== COLOR_FORMATS.Rgb) return [];\n\n return [...opacities.map((opacity) => transformRGBtoRGBA(rgbColor, opacity))];\n}\n","import { COLOR_FORMATS } from \"../../constants\";\nimport type { ColorFormat } from \"../../types\";\nimport { isString } from \"../typings\";\nimport { getColorFormat } from \"./get-color-format\";\n\nexport function transformToColor(\n currentColor: unknown,\n defaultColor: string = \"black\",\n defaultFormat: ColorFormat = COLOR_FORMATS.Hex,\n) {\n if (!isString(currentColor)) return defaultColor;\n\n let correctColor = currentColor;\n\n if (!getColorFormat(correctColor)) {\n switch (defaultFormat) {\n case COLOR_FORMATS.Hex: {\n correctColor = `#${correctColor}`;\n break;\n }\n case COLOR_FORMATS.Rgb: {\n correctColor = `rgb(${correctColor})`;\n break;\n }\n case COLOR_FORMATS.Rgba: {\n correctColor = `rgba(${correctColor})`;\n break;\n }\n case COLOR_FORMATS.Hsl: {\n correctColor = `hsl(${correctColor})`;\n break;\n }\n default: {\n correctColor = `#${correctColor}`;\n break;\n }\n }\n }\n\n return correctColor;\n}\n","export function getRandomColor() {\n const randomColor = Math.floor(Math.random() * 16777215).toString(16);\n\n return `#${randomColor.padStart(6, \"0\")}`;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/constants/date.ts","../../src/constants/api.ts","../../src/constants/environment.ts","../../src/constants/colors.ts","../../src/constants/fields.ts","../../src/lib/utils/wait-until.ts","../../src/lib/typings/check-type.ts","../../src/lib/typings/is-array.ts","../../src/lib/typings/is-boolean.ts","../../src/lib/typings/is-number.ts","../../src/lib/typings/is-string.ts","../../src/lib/typings/is-id.ts","../../src/lib/typings/is-null.ts","../../src/lib/typings/is-nullable.ts","../../src/lib/typings/is-object.ts","../../src/lib/typings/is-undefined.ts","../../src/lib/typings/is-date.ts","../../src/lib/utils/get-by-path.ts","../../src/lib/date/date-difference.ts","../../src/lib/date/get-date-by-rules.ts","../../src/lib/date/get-today.ts","../../src/lib/date/get-tomorrow.ts","../../src/lib/date/get-yesterday.ts","../../src/lib/date/is-today.ts","../../src/lib/date/is-tomorrow.ts","../../src/lib/date/is-yesterday.ts","../../src/lib/date/date-format.ts","../../src/lib/utils/transform-to-number.ts","../../src/lib/utils/field-view-format.ts","../../src/lib/utils/set-by-path.ts","../../src/lib/utils/json-parse.ts","../../src/lib/utils/random-string.ts","../../src/lib/utils/wait.ts","../../src/lib/utils/build-query-string.ts","../../src/lib/utils/create-url-with-params.ts","../../src/lib/utils/trim-url.ts","../../src/lib/utils/array-to-map-by-key.ts","../../src/lib/utils/sync-object-values.ts","../../src/lib/utils/random-number.ts","../../src/lib/utils/get-file-name-from-header.ts","../../src/lib/utils/limit-stream-of-requests.ts","../../src/lib/utils/start-with.ts","../../src/lib/browser/download-file.ts","../../src/lib/browser/download-json.ts","../../src/lib/browser/read-file.ts","../../src/lib/browser/get-visible-position.ts","../../src/lib/api/auth/token.ts","../../src/lib/api/auth/user.ts","../../src/lib/api/middlewares/auth-middleware.ts","../../src/lib/api/middlewares/console-middleware.ts","../../src/lib/api/middlewares/index.ts","../../src/lib/api/core.ts","../../src/lib/colors/get-color-format.ts","../../src/lib/colors/transform-hex-to-rgb.ts","../../src/lib/colors/transform-rgb-to-rgba.ts","../../src/lib/colors/transform-rgba-to-rgb.ts","../../src/lib/colors/take-opacity-colors.ts","../../src/lib/colors/transform-to-color.ts","../../src/lib/colors/get-random-color.ts"],"sourcesContent":["export const DATE_TYPES = {\n Days: \"days\",\n Months: \"months\",\n Years: \"years\",\n Seconds: \"seconds\",\n Minutes: \"minutes\",\n Hours: \"hours\",\n} as const;\n","export const API_MIDDLEWARES = {\n Auth: \"auth\",\n Logger: \"logger\",\n} as const;\n","/* eslint-disable no-restricted-globals */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\nexport const IS_JEST = typeof process != \"undefined\" && process.env.JEST_WORKER_ID !== undefined;\n\nexport const IS_BUN =\n typeof process !== \"undefined\" && process.versions != null && process.versions.bun != null;\n\nexport const IS_DENO = // @ts-expect-error\n typeof Deno !== \"undefined\" &&\n // @ts-expect-error\n typeof Deno.version !== \"undefined\" &&\n // @ts-expect-error\n typeof Deno.version.deno !== \"undefined\";\n\nexport const IS_NODE =\n typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n\nexport const IS_WEB_WORKER =\n typeof self === \"object\" &&\n self.constructor &&\n self.constructor.name === \"DedicatedWorkerGlobalScope\";\n\nexport const IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n","export const COLOR_FORMATS = {\n Hex: \"HEX\",\n Rgb: \"RGB\",\n Rgba: \"RGBA\",\n Hsl: \"HSL\",\n} as const;\n","export const FIELD_TYPES = {\n Date: \"date\",\n Time: \"time\",\n DateTime: \"dateTime\",\n String: \"string\",\n Number: \"number\",\n Array: \"array\",\n} as const;\n","export const waitUntil = (condition: () => boolean, checkInterval = 100) => {\n return new Promise((resolve) => {\n const interval = setInterval(() => {\n if (condition()) return;\n clearInterval(interval);\n resolve(true);\n }, checkInterval);\n });\n};\n","export function checkType<R>(value: unknown, condition: boolean): value is R {\n if (condition) {\n return true;\n }\n\n return false;\n}\n","export function isArray(value: unknown): value is unknown[] {\n return Boolean(value && Array.isArray(value));\n}\n","export function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n","export function isNumber(value: unknown): value is number {\n return typeof value === \"number\" && !Number.isNaN(value);\n}\n","export function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n","import { isNumber } from \"./is-number\";\nimport { isString } from \"./is-string\";\n\nexport function isId(value: unknown): value is number | string {\n return isNumber(value) || isString(value);\n}\n","export function isNull(value: unknown): value is null {\n return value === null;\n}\n","export function isNullable(value: unknown): value is null | undefined {\n return typeof value === \"undefined\" || value === null;\n}\n","export function isObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n","export function isUndefined(value: unknown): value is undefined {\n return typeof value === \"undefined\";\n}\n","export function isDate(value: unknown): value is Date {\n if (value instanceof Date) return !Number.isNaN(value.valueOf());\n\n return false;\n}\n","import get from \"lodash/get\";\nimport { isArray, isObject, isString } from \"../typings\";\n\nexport function getByPath<T>(data: unknown, path?: string, defaultValue: unknown = undefined): T {\n if ((!isObject(data) && !isArray(data)) || !isString(path)) return defaultValue as T;\n\n return get(data, path, defaultValue) as T;\n}\n","import dayjs from \"dayjs\";\nimport type { DateType } from \"../../types\";\n\nexport function dateDifference(\n type: DateType,\n firstDate: Date,\n secondDate: Date = new Date(),\n float: boolean = false,\n) {\n const first = dayjs(firstDate);\n\n return first.diff(secondDate, type, float);\n}\n","import { DATE_TYPES } from \"../../constants\";\nimport { type DateGetterRule, type DateType } from \"../../types\";\n\nexport function getDateByRules(rules: DateGetterRule[], date: Date = new Date()) {\n let result = new Date(date);\n for (const rule of rules) {\n result = getDate(rule.increment, rule.type, result);\n }\n\n return result;\n}\n\nfunction getDate(increment: number, type: DateType, date: Date = new Date()) {\n const result = new Date(date);\n switch (type) {\n case DATE_TYPES.Days: {\n result.setDate(result.getDate() + increment);\n\n return result;\n }\n case DATE_TYPES.Months: {\n result.setMonth(result.getMonth() + increment);\n\n return result;\n }\n case DATE_TYPES.Years: {\n result.setFullYear(result.getFullYear() + increment);\n\n return result;\n }\n case DATE_TYPES.Seconds: {\n result.setSeconds(result.getSeconds() + increment);\n\n return result;\n }\n case DATE_TYPES.Minutes: {\n result.setMinutes(result.getMinutes() + increment);\n\n return result;\n }\n case DATE_TYPES.Hours: {\n result.setHours(result.getHours() + increment);\n\n return result;\n }\n default:\n return result;\n }\n}\n","export function getToday() {\n const startToday = new Date();\n startToday.setHours(0, 0, 0, 0);\n const endToday = new Date();\n endToday.setHours(23, 59, 59, 999);\n\n return { startToday, endToday };\n}\n","export function getTomorrow() {\n const tomorrow = new Date();\n tomorrow.setHours(0, 0, 0, 0);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n return tomorrow;\n}\n","export function getYesterday() {\n const yesterday = new Date();\n yesterday.setHours(0, 0, 0, 0);\n yesterday.setDate(yesterday.getDate() - 1);\n\n return yesterday;\n}\n","import dayjs from \"dayjs\";\nimport todayPlugin from \"dayjs/plugin/isToday\";\nimport type { Maybe } from \"../../types\";\n\ndayjs.extend(todayPlugin);\n\nexport function isToday(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isToday();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport tomorrowPlugin from \"dayjs/plugin/isTomorrow\";\nimport type { Maybe } from \"../../types\";\n\ndayjs.extend(tomorrowPlugin);\n\nexport function isTomorrow(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isTomorrow();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport yesterdayPlugin from \"dayjs/plugin/isYesterday\";\nimport { type Maybe } from \"../../types\";\n\ndayjs.extend(yesterdayPlugin);\n\nexport function isYesterday(date: Maybe<string | Date | number>) {\n try {\n return dayjs(date).isYesterday();\n } catch {\n return false;\n }\n}\n","import dayjs from \"dayjs\";\nimport { isDate } from \"../typings\";\n\nexport function dateFormat(date: Date | string | number, format: string) {\n const correctDate = new Date(date);\n\n if (!isDate(correctDate)) return \"\";\n\n return dayjs(correctDate).format(format);\n}\n","import { isString } from \"../typings\";\n\nexport function transformToNumber(value: unknown) {\n let result: number | undefined;\n\n if (isString(value)) result = parseInt(value, 10);\n else result = Number(value);\n\n return Number.isNaN(result) ? 0 : result;\n}\n","import { FIELD_TYPES } from \"../../constants\";\nimport type { FieldType } from \"../../types\";\nimport { dateFormat } from \"../date\";\nimport { isArray, isBoolean, isDate, isNumber, isString } from \"../typings\";\nimport { transformToNumber } from \"./transform-to-number\";\n\nexport function fieldViewFormat(field: unknown, type: FieldType = \"string\") {\n switch (type) {\n case FIELD_TYPES.Array: {\n return isArray(field) ? field.join(\", \") : \"\";\n }\n case FIELD_TYPES.Date: {\n return isString(field) || isNumber(field) || isDate(field)\n ? dateFormat(field, \"DD.MM.YYYY\")\n : \"\";\n }\n case FIELD_TYPES.DateTime: {\n return isString(field) || isNumber(field) || isDate(field)\n ? dateFormat(field, \"DD.MM.YYYY HH:mm\")\n : \"\";\n }\n case FIELD_TYPES.Number: {\n return isString(field) || isNumber(field) || isBoolean(field)\n ? String(transformToNumber(field))\n : \"\";\n }\n case FIELD_TYPES.String: {\n return isString(field) || isNumber(field) || isBoolean(field) ? String(field) : \"\";\n }\n case FIELD_TYPES.Time: {\n return isString(field) || isNumber(field) || isDate(field) ? dateFormat(field, \"HH:mm\") : \"\";\n }\n default: {\n return isString(field) || isNumber(field) || isBoolean(field) ? String(field) : \"\";\n }\n }\n}\n","import set from \"lodash/set\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function setByPath(data: Record<string, unknown> | unknown[], path: string, value: unknown) {\n try {\n if (!isObject(data) && !isArray(data)) throw new Error(\"bad data\");\n\n set(data, path, value);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn(error);\n }\n}\n","import { isString } from \"../typings\";\n\nexport function jsonParse<T>(json: unknown): T | null {\n if (!isString(json)) return null;\n\n try {\n return JSON.parse(json) as T;\n } catch {\n return null;\n }\n}\n","const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\nexport function randomString(length: number = 10, allowCharacters: string = characters) {\n let result = \"\";\n let counter = 0;\n\n while (counter < length) {\n result += allowCharacters.charAt(Math.floor(Math.random() * allowCharacters.length));\n counter += 1;\n }\n\n return result;\n}\n","export function wait(delay: number) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, delay);\n });\n}\n","import type { ParamsType } from \"../../types\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function buildQueryString(params: ParamsType): string {\n const queryString: string[] = [];\n\n for (const [key, value] of Object.entries(params)) {\n if (isObject(value) || value == undefined) continue;\n\n if (isArray(value)) {\n for (const item of value) {\n if (item != undefined && !isObject(item))\n queryString.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(item))}`);\n }\n } else {\n queryString.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n }\n\n return queryString.join(\"&\");\n}\n","import type { ParamsType } from \"../../types\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: ParamsType;\n};\n\nexport function createURLWithParams(options: CreateURLOptionsInterface): string {\n const url = options.baseURL;\n\n if (!options.params) {\n return url;\n }\n\n const queryString = buildQueryString(options.params);\n\n return `${url}?${queryString}`;\n}\n","export function trimUrl(url: string) {\n return url.replace(/^\\//, \"\").replace(/\\/$/, \"\");\n}\n","import { isId } from \"../typings\";\n\nexport function arrayToMapByKey<T extends Record<string, unknown>>(\n array: T[],\n key: keyof T,\n): Record<string, T> {\n const map: Record<string, T> = {};\n\n for (const item of array) {\n const keyValue = item[key] as unknown;\n if (isId(keyValue)) map[keyValue] = item;\n }\n\n return map;\n}\n","import { isUndefined } from \"../typings\";\nimport { getByPath } from \"./get-by-path\";\nimport { setByPath } from \"./set-by-path\";\n\nexport function syncObjectValues(\n oldObj: Record<string, unknown>,\n newObj: Record<string, unknown>,\n exception: string[] = [],\n) {\n for (const field in newObj) {\n if (exception.includes(field)) continue;\n\n const oldValue = getByPath(oldObj, field, undefined);\n const newValue = getByPath(newObj, field, undefined);\n\n if (isUndefined(oldValue) || isUndefined(newValue)) continue;\n if (oldValue === newValue) continue;\n\n setByPath(oldObj, field, newValue);\n }\n}\n","export function randomNumber(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n\n return Math.floor(Math.random() * (max - min) + min);\n}\n","const filenameVariables = [\"filename=\", \"filename*=UTF-8''\"];\n\nexport function getFileNameFromHeader(header: string) {\n const name = header\n .split(\";\")\n .find((info) => ~info.indexOf(filenameVariables[0]) || ~info.indexOf(filenameVariables[1]))\n ?.replace(filenameVariables[0], \"\")\n ?.replace(filenameVariables[1], \"\")\n ?.replace(/\"/g, \"\")\n ?.trim();\n\n return name ? decodeURI(name) : null;\n}\n","import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n throwError?: boolean;\n errorCb?: (error: unknown, position: number, tryCount: number) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n throwError,\n errorCb,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T>, position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (currentResponses === countRequests) return void resolve(results);\n if (position > countRequests || promise == undefined) return;\n\n promise\n .then((result) => {\n if (isStopped) return void resolve(results);\n\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n currentResponses++;\n\n request(promiseGetter(++currentRequests), currentRequests);\n })\n .catch((error: unknown) => {\n if (errorCb) errorCb(error, position, tryCount);\n\n if (isStopped) return void resolve(results);\n\n if (refetchAfterError && maxTryCount > tryCount) {\n return void wait(1000).then(() =>\n request(promiseGetter(position), position, tryCount + 1),\n );\n }\n\n if (throwError) {\n throw error;\n }\n\n currentResponses++;\n request(promiseGetter(++currentRequests), currentRequests);\n });\n }\n }),\n };\n}\n","export function startWith(string: string, mask: string) {\n const maskSize = mask.length;\n let pos = 0;\n\n while (pos < maskSize) {\n if (string.codePointAt(pos) !== mask.codePointAt(pos)) return false;\n pos++;\n }\n\n return true;\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\nimport { getFileNameFromHeader } from \"../utils\";\n\ntype DownloadFileOptions = {\n data: Blob;\n fileName: string;\n mimeType: string;\n};\n\nexport function downloadFile({ data, fileName, mimeType }: DownloadFileOptions) {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const name = getFileNameFromHeader(fileName);\n if (!name) throw new Error(\"Bad filename\");\n\n const blob = new Blob([data], {\n type: mimeType,\n });\n\n const downloadUrl = window.URL.createObjectURL(blob);\n\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.download = name;\n link.href = downloadUrl;\n\n document.body.appendChild(link);\n link.click();\n\n document.body.removeChild(link);\n link.remove();\n window.URL.revokeObjectURL(downloadUrl);\n\n return null;\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function downloadJson(data: unknown, name: string) {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const url = `data:text/json;charset=utf-8,${encodeURIComponent(JSON.stringify(data))}`;\n\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.download = name;\n link.href = url;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n link.remove();\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function readFile(file: File) {\n return new Promise((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(null);\n\n return;\n }\n\n const reader = new FileReader();\n reader.readAsText(file);\n\n reader.onload = () => {\n resolve(reader.result);\n };\n\n reader.onerror = () => {\n resolve(null);\n };\n });\n}\n","export type PositionPlacements =\n | \"bottom-center\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"right-center\"\n | \"right-top\"\n | \"right-bottom\"\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"left-center\"\n | \"left-top\"\n | \"left-bottom\"\n | \"flex\";\n\nexport type VisiblePosition = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n placement: PositionPlacements;\n};\n\ntype InitialPosition = {\n targetNode?: HTMLElement;\n position?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n};\ntype GetVisiblePositionOptions = {\n node: HTMLElement;\n visibleArea?: HTMLElement;\n initialPosition?: InitialPosition;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n};\nexport function getVisiblePosition({\n initialPosition,\n node,\n visibleArea,\n placement = \"bottom-center\",\n stepX = placement === \"bottom-center\" ||\n placement === \"bottom-left\" ||\n placement === \"bottom-right\" ||\n placement === \"top-left\" ||\n placement === \"top-center\" ||\n placement === \"top-right\"\n ? 0\n : 10,\n stepY = placement === \"left-bottom\" ||\n placement === \"left-center\" ||\n placement === \"left-top\" ||\n placement === \"right-bottom\" ||\n placement === \"right-top\" ||\n placement === \"right-center\"\n ? 0\n : 10,\n flex,\n}: GetVisiblePositionOptions): VisiblePosition {\n const windowWidth = document.documentElement.clientWidth;\n const windowHeight = document.documentElement.clientHeight;\n let xStart = 0;\n let xEnd = windowWidth;\n let yStart = 0;\n let yEnd = windowHeight;\n\n if (visibleArea) {\n const { top, left, height, width } = visibleArea.getBoundingClientRect();\n xStart = left;\n xEnd = left + width;\n yStart = top;\n yEnd = top + height;\n }\n\n let targetHeight = 0;\n let targetWidth = 0;\n\n let {\n top: targetTopPosition,\n left: targetLeftPosition,\n height: nodeHeight,\n width: nodeWidth,\n } = node.getBoundingClientRect();\n\n if (initialPosition && initialPosition.targetNode) {\n const {\n top: childTop,\n left: childLeft,\n height,\n width,\n } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = childTop;\n targetLeftPosition = childLeft;\n }\n if (initialPosition && initialPosition.position) {\n if (initialPosition.position.x) {\n targetLeftPosition = initialPosition.position.x;\n }\n if (initialPosition.position.y) {\n targetTopPosition = initialPosition.position.y;\n }\n if (initialPosition.position.height) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width) {\n targetWidth = initialPosition.position.width;\n }\n }\n\n function isCompletelyVisibleX(left: number) {\n const endXPosition = nodeWidth + left;\n\n return xStart <= left && xEnd >= endXPosition;\n }\n function isCompletelyVisibleY(top: number) {\n const endYPosition = nodeHeight + top;\n\n return yStart <= top && yEnd >= endYPosition;\n }\n\n let correctLeft: number | null = targetLeftPosition;\n let correctTop: number | null = targetTopPosition;\n\n const { x, y } = getStartPositions({\n targetHeight,\n targetWidth,\n targetLeftPosition,\n nodeHeight,\n nodeWidth,\n stepX,\n stepY,\n targetTopPosition,\n });\n switch (placement) {\n case \"bottom-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"bottom-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"bottom-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"bottom-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = y.top;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = x.right;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = x.right;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"right-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = x.right;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"right-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"right-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = x.left;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = x.bottomCenter;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = x.bottomLeft;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomRight)) {\n placement = \"top-right\";\n correctLeft = x.bottomRight;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = x.bottomRight;\n correctTop = y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.bottomCenter)) {\n placement = \"top-center\";\n correctLeft = x.bottomCenter;\n } else if (isCompletelyVisibleX(x.bottomLeft)) {\n placement = \"top-left\";\n correctLeft = x.bottomLeft;\n }\n }\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = y.bottom;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = x.left;\n correctTop = y.rightBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = x.left;\n correctTop = y.rightCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightTop)) {\n placement = \"left-top\";\n correctTop = y.rightTop;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = x.left;\n correctTop = y.rightTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!isCompletelyVisibleY(correctTop)) {\n if (isCompletelyVisibleY(y.rightCenter)) {\n placement = \"left-center\";\n correctTop = y.rightCenter;\n } else if (isCompletelyVisibleY(y.rightBottom)) {\n placement = \"left-bottom\";\n correctTop = y.rightBottom;\n }\n }\n if (!isCompletelyVisibleX(correctLeft)) {\n if (isCompletelyVisibleX(x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = x.right;\n }\n }\n\n if (flex && (!isCompletelyVisibleX(correctLeft) || !isCompletelyVisibleY(correctTop))) {\n return getFlexVisiblePosition({\n initialLeft: correctLeft,\n initialTop: correctTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n right: xEnd - correctLeft - nodeWidth,\n bottom: yEnd - correctTop - nodeHeight,\n placement,\n };\n }\n }\n}\n\ntype GetStartPositions = {\n targetWidth: number;\n targetHeight: number;\n nodeWidth: number;\n nodeHeight: number;\n targetLeftPosition: number;\n targetTopPosition: number;\n stepY: number;\n stepX: number;\n};\ntype XPositions = \"bottomCenter\" | \"bottomLeft\" | \"bottomRight\" | \"right\" | \"left\";\ntype YPosition = \"rightCenter\" | \"rightTop\" | \"rightBottom\" | \"bottom\" | \"top\";\n\nfunction getStartPositions({\n targetHeight,\n targetWidth,\n nodeHeight,\n nodeWidth,\n targetLeftPosition,\n targetTopPosition,\n stepX,\n stepY,\n}: GetStartPositions) {\n const childBottomCenter = targetWidth ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const childBottom = targetHeight ? targetTopPosition + targetHeight : targetTopPosition;\n const childRightCenter = targetHeight ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n bottomCenter: childBottomCenter - nodeWidth / 2 + stepX,\n bottomRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n bottomLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: childBottom + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n rightCenter: childRightCenter - nodeHeight / 2 + stepY,\n rightBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n rightTop: targetTopPosition + stepY,\n };\n\n return { x, y };\n}\n\ntype GetFlexVisiblePosition = {\n isCompletelyVisibleY: (top: number) => boolean;\n isCompletelyVisibleX: (left: number) => boolean;\n initialLeft: number;\n initialTop: number;\n xEnd: number;\n yEnd: number;\n nodeWidth: number;\n nodeHeight: number;\n};\n\nfunction getFlexVisiblePosition({\n initialLeft,\n initialTop,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n}: GetFlexVisiblePosition): VisiblePosition {\n if (!isCompletelyVisibleY(initialTop)) {\n initialTop = yEnd - nodeHeight;\n }\n if (!isCompletelyVisibleX(initialLeft)) {\n initialLeft = xEnd - nodeWidth;\n }\n\n return {\n top: initialTop,\n left: initialLeft,\n bottom: yEnd - initialTop - nodeHeight,\n right: xEnd - initialLeft - nodeWidth,\n placement: \"flex\",\n };\n}\n","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","import type { AuthUserRequestOptions, AuthUserUpdateRequestOptions } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\n\nexport async function updateAuthUser<User extends Record<string, unknown>>(\n options: AuthUserUpdateRequestOptions<User>,\n) {\n const userInfo = await (options.userRequest ? options.userRequest() : getAuthUser<User>(options));\n if (isNull(userInfo)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(userInfo)) {\n return void window.location.replace(options.errorUrl);\n }\n\n return userInfo;\n}\n\nexport async function getAuthUser<User extends Record<string, unknown>>(\n options: AuthUserRequestOptions,\n): Promise<User | null | undefined> {\n let status = 0;\n try {\n const response = await fetch(options.authUserUrl, {\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 User;\n\n return result;\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n","import type { AuthMiddleWareOptions, Middleware } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getAuthToken } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthMiddleWare =\n (options: AuthMiddleWareOptions): Middleware =>\n async (request) => {\n if (\n !options.authTokenUrl ||\n !options.authUrl ||\n !options.storageTokenExpiresName ||\n !options.storageTokenName ||\n !options.pathToTokenExpires ||\n !options.pathToToken ||\n !options.errorUrl\n ) {\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 let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n\n if (!expires || Date.now() > +expires || !token) {\n isFetchingAccessToken = true;\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n isFetchingAccessToken = false;\n\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 if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n","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","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","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\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\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","import { COLOR_FORMATS } from \"../../constants\";\n\nexport function getColorFormat(color: string) {\n if (color.startsWith(\"#\")) {\n return COLOR_FORMATS.Hex;\n }\n if (color.startsWith(\"rgba\")) {\n return COLOR_FORMATS.Rgba;\n }\n if (color.startsWith(\"rgb\")) {\n return COLOR_FORMATS.Rgb;\n }\n if (color.startsWith(\"hsl\")) {\n return COLOR_FORMATS.Hsl;\n }\n}\n","export function transformHEXtoRGB(hex: string) {\n return `rgb(${hex.match(/\\w\\w/g)?.map((x) => +`0x${x}`)})`;\n}\n","export function transformRGBtoRGBA(rgb: string, opacity: number) {\n const code = rgb.match(/\\d+/g);\n code?.push(String(opacity / 100));\n\n return `rgba(${code?.join(\",\")})`;\n}\n","export function transformRGBAtoRGB(rgba: string) {\n const code = rgba.match(/\\d+/g);\n code?.splice(3);\n\n return `rgb(${code?.join(\",\")})`;\n}\n","import { COLOR_FORMATS } from \"../../constants\";\nimport { getColorFormat } from \"./get-color-format\";\nimport { transformHEXtoRGB } from \"./transform-hex-to-rgb\";\nimport { transformRGBtoRGBA } from \"./transform-rgb-to-rgba\";\nimport { transformRGBAtoRGB } from \"./transform-rgba-to-rgb\";\n\nexport function takeOpacityColors(color: string | undefined, opacities: number[]) {\n let rgbColor = color;\n\n if (!rgbColor) return [];\n\n if (getColorFormat(rgbColor) === COLOR_FORMATS.Hex) {\n rgbColor = transformHEXtoRGB(rgbColor);\n } else if (getColorFormat(rgbColor) === COLOR_FORMATS.Rgba) {\n rgbColor = transformRGBAtoRGB(rgbColor);\n }\n\n if (getColorFormat(rgbColor) !== COLOR_FORMATS.Rgb) return [];\n\n return [...opacities.map((opacity) => transformRGBtoRGBA(rgbColor, opacity))];\n}\n","import { COLOR_FORMATS } from \"../../constants\";\nimport type { ColorFormat } from \"../../types\";\nimport { isString } from \"../typings\";\nimport { getColorFormat } from \"./get-color-format\";\n\nexport function transformToColor(\n currentColor: unknown,\n defaultColor: string = \"black\",\n defaultFormat: ColorFormat = COLOR_FORMATS.Hex,\n) {\n if (!isString(currentColor)) return defaultColor;\n\n let correctColor = currentColor;\n\n if (!getColorFormat(correctColor)) {\n switch (defaultFormat) {\n case COLOR_FORMATS.Hex: {\n correctColor = `#${correctColor}`;\n break;\n }\n case COLOR_FORMATS.Rgb: {\n correctColor = `rgb(${correctColor})`;\n break;\n }\n case COLOR_FORMATS.Rgba: {\n correctColor = `rgba(${correctColor})`;\n break;\n }\n case COLOR_FORMATS.Hsl: {\n correctColor = `hsl(${correctColor})`;\n break;\n }\n default: {\n correctColor = `#${correctColor}`;\n break;\n }\n }\n }\n\n return correctColor;\n}\n","export function getRandomColor() {\n const randomColor = Math.floor(Math.random() * 16777215).toString(16);\n\n return `#${randomColor.padStart(6, \"0\")}`;\n}\n"],"names":[],"mappings":"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"}
package/lib/esm/index.js CHANGED
@@ -37,6 +37,7 @@ export { syncObjectValues } from './lib/utils/sync-object-values.js';
37
37
  export { randomNumber } from './lib/utils/random-number.js';
38
38
  export { getFileNameFromHeader } from './lib/utils/get-file-name-from-header.js';
39
39
  export { limitStreamOfRequests } from './lib/utils/limit-stream-of-requests.js';
40
+ export { startWith } from './lib/utils/start-with.js';
40
41
  export { checkType } from './lib/typings/check-type.js';
41
42
  export { isArray } from './lib/typings/is-array.js';
42
43
  export { isBoolean } from './lib/typings/is-boolean.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -37,11 +37,7 @@ function createRequestClientInstance({ activeMiddlewares, middlewareOptions, cus
37
37
  }
38
38
  await executeMiddlewares(request);
39
39
  const { method, body, path, params, headers } = request;
40
- const trimedPath = path.replace(/^\//, "").replace(/\/$/, "");
41
- const fullPath = trimedPath.includes("http") || trimedPath.includes("https")
42
- ? trimedPath
43
- : `${window.location.origin}/${trimedPath}`;
44
- const url = createURLWithParams({ baseURL: fullPath, params });
40
+ const url = createURLWithParams({ baseURL: path, params });
45
41
  let preparedBody = body;
46
42
  if (body && !(preparedBody instanceof FormData)) {
47
43
  if (request.transformOutcomingData) {
@@ -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 const trimedPath = path.replace(/^\\//, \"\").replace(/\\/$/, \"\");\n const fullPath =\n trimedPath.includes(\"http\") || trimedPath.includes(\"https\")\n ? trimedPath\n : `${window.location.origin}/${trimedPath}`;\n\n const url = createURLWithParams({ baseURL: fullPath, 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\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\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 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\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\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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"}
@@ -8,6 +8,7 @@ import '../../date/is-today.js';
8
8
  import '../../date/is-tomorrow.js';
9
9
  import '../../date/is-yesterday.js';
10
10
  import 'lodash/set';
11
+ import { startWith } from '../../utils/start-with.js';
11
12
  import { getAuthToken } from '../auth/token.js';
12
13
 
13
14
  let isFetchingAccessToken = false;
@@ -21,7 +22,7 @@ const generateAuthMiddleWare = (options) => async (request) => {
21
22
  !options.errorUrl) {
22
23
  throw new Error("Auth middleware hasn't required options");
23
24
  }
24
- const isSameOrigin = !request.path.includes("http") && !request.path.includes("https");
25
+ const isSameOrigin = !startWith(request.path, "http");
25
26
  if (request.token) {
26
27
  if (!isSameOrigin)
27
28
  request.headers = {
@@ -1 +1 @@
1
- {"version":3,"file":"auth-middleware.js","sources":["../../../../../src/lib/api/middlewares/auth-middleware.ts"],"sourcesContent":["import type { AuthMiddleWareOptions, Middleware } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\nimport { waitUntil } from \"../../utils\";\nimport { getAuthToken } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthMiddleWare =\n (options: AuthMiddleWareOptions): Middleware =>\n async (request) => {\n if (\n !options.authTokenUrl ||\n !options.authUrl ||\n !options.storageTokenExpiresName ||\n !options.storageTokenName ||\n !options.pathToTokenExpires ||\n !options.pathToToken ||\n !options.errorUrl\n ) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !request.path.includes(\"http\") && !request.path.includes(\"https\");\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 let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n\n if (!expires || Date.now() > +expires || !token) {\n isFetchingAccessToken = true;\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n isFetchingAccessToken = false;\n\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 if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n"],"names":[],"mappings":";;;;;;;;;;;;AAKA,IAAI,qBAAqB,GAAG,KAAK;AAE1B,MAAM,sBAAsB,GACjC,CAAC,OAA8B,KAC/B,OAAO,OAAO,KAAI;IAChB,IACE,CAAC,OAAO,CAAC,YAAY;QACrB,CAAC,OAAO,CAAC,OAAO;QAChB,CAAC,OAAO,CAAC,uBAAuB;QAChC,CAAC,OAAO,CAAC,gBAAgB;QACzB,CAAC,OAAO,CAAC,kBAAkB;QAC3B,CAAC,OAAO,CAAC,WAAW;AACpB,QAAA,CAAC,OAAO,CAAC,QAAQ,EACjB;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;;IAG5D,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAEtF,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,KAAK,GAA8B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAErF,IAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE;QAC/C,qBAAqB,GAAG,IAAI;QAC5B,KAAK,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACrF,qBAAqB,GAAG,KAAK;AAE7B,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,IAAI,CAAC,YAAY;QACf,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,OAAO,CAAC,OAAO;YAClB,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;SACjC;AACL;;;;"}
1
+ {"version":3,"file":"auth-middleware.js","sources":["../../../../../src/lib/api/middlewares/auth-middleware.ts"],"sourcesContent":["import type { AuthMiddleWareOptions, Middleware } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getAuthToken } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthMiddleWare =\n (options: AuthMiddleWareOptions): Middleware =>\n async (request) => {\n if (\n !options.authTokenUrl ||\n !options.authUrl ||\n !options.storageTokenExpiresName ||\n !options.storageTokenName ||\n !options.pathToTokenExpires ||\n !options.pathToToken ||\n !options.errorUrl\n ) {\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 let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n\n if (!expires || Date.now() > +expires || !token) {\n isFetchingAccessToken = true;\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n isFetchingAccessToken = false;\n\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 if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n"],"names":[],"mappings":";;;;;;;;;;;;;AAKA,IAAI,qBAAqB,GAAG,KAAK;AAE1B,MAAM,sBAAsB,GACjC,CAAC,OAA8B,KAC/B,OAAO,OAAO,KAAI;IAChB,IACE,CAAC,OAAO,CAAC,YAAY;QACrB,CAAC,OAAO,CAAC,OAAO;QAChB,CAAC,OAAO,CAAC,uBAAuB;QAChC,CAAC,OAAO,CAAC,gBAAgB;QACzB,CAAC,OAAO,CAAC,kBAAkB;QAC3B,CAAC,OAAO,CAAC,WAAW;AACpB,QAAA,CAAC,OAAO,CAAC,QAAQ,EACjB;AACA,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,KAAK,GAA8B,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAErF,IAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE;QAC/C,qBAAqB,GAAG,IAAI;QAC5B,KAAK,GAAG,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACrF,qBAAqB,GAAG,KAAK;AAE7B,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,IAAI,CAAC,YAAY;QACf,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,OAAO,CAAC,OAAO;YAClB,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;SACjC;AACL;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { buildQueryString } from './build-query-string.js';
2
2
 
3
3
  function createURLWithParams(options) {
4
- const url = options.baseURL.replace(/\/$/, "").replace(/\?$/, "");
4
+ const url = options.baseURL;
5
5
  if (!options.params) {
6
6
  return url;
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-url-with-params.js","sources":["../../../../src/lib/utils/create-url-with-params.ts"],"sourcesContent":["import type { ParamsType } from \"../../types\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: ParamsType;\n};\n\nexport function createURLWithParams(options: CreateURLOptionsInterface): string {\n const url = options.baseURL.replace(/\\/$/, \"\").replace(/\\?$/, \"\");\n\n if (!options.params) {\n return url;\n }\n\n const queryString = buildQueryString(options.params);\n\n return `${url}?${queryString}`;\n}\n"],"names":[],"mappings":";;AAQM,SAAU,mBAAmB,CAAC,OAAkC,EAAA;AACpE,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAEjE,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,QAAA,OAAO,GAAG;;IAGZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;AAEpD,IAAA,OAAO,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,WAAW,EAAE;AAChC;;;;"}
1
+ {"version":3,"file":"create-url-with-params.js","sources":["../../../../src/lib/utils/create-url-with-params.ts"],"sourcesContent":["import type { ParamsType } from \"../../types\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: ParamsType;\n};\n\nexport function createURLWithParams(options: CreateURLOptionsInterface): string {\n const url = options.baseURL;\n\n if (!options.params) {\n return url;\n }\n\n const queryString = buildQueryString(options.params);\n\n return `${url}?${queryString}`;\n}\n"],"names":[],"mappings":";;AAQM,SAAU,mBAAmB,CAAC,OAAkC,EAAA;AACpE,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO;AAE3B,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,QAAA,OAAO,GAAG;;IAGZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;AAEpD,IAAA,OAAO,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,WAAW,EAAE;AAChC;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { wait } from './wait.js';
2
2
 
3
- function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount = 3, }) {
3
+ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount = 3, throwError, errorCb, }) {
4
4
  let isStopped = false;
5
5
  if (maxCountInParallel > countRequests)
6
6
  maxCountInParallel = countRequests;
@@ -33,16 +33,19 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
33
33
  currentResponses++;
34
34
  request(promiseGetter(++currentRequests), currentRequests);
35
35
  })
36
- .catch(() => {
36
+ .catch((error) => {
37
+ if (errorCb)
38
+ errorCb(error, position, tryCount);
37
39
  if (isStopped)
38
40
  return void resolve(results);
39
41
  if (refetchAfterError && maxTryCount > tryCount) {
40
- void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));
42
+ return void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));
41
43
  }
42
- else {
43
- currentResponses++;
44
- request(promiseGetter(++currentRequests), currentRequests);
44
+ if (throwError) {
45
+ throw error;
45
46
  }
47
+ currentResponses++;
48
+ request(promiseGetter(++currentRequests), currentRequests);
46
49
  });
47
50
  }
48
51
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"limit-stream-of-requests.js","sources":["../../../../src/lib/utils/limit-stream-of-requests.ts"],"sourcesContent":["import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T>, position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (currentResponses === countRequests) return void resolve(results);\n if (position > countRequests || promise == undefined) return;\n\n promise\n .then((result) => {\n if (isStopped) return void resolve(results);\n\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n currentResponses++;\n\n request(promiseGetter(++currentRequests), currentRequests);\n })\n .catch(() => {\n if (isStopped) return void resolve(results);\n\n if (refetchAfterError && maxTryCount > tryCount) {\n void wait(1000).then(() => request(promiseGetter(position), position, tryCount + 1));\n } else {\n currentResponses++;\n request(promiseGetter(++currentRequests), currentRequests);\n }\n });\n }\n }),\n };\n}\n"],"names":[],"mappings":";;SAYgB,qBAAqB,CAAI,EACvC,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,WAAW,GAAG,CAAC,GACiB,EAAA;IAChC,IAAI,SAAS,GAAG,KAAK;IAErB,IAAI,kBAAkB,GAAG,aAAa;QAAE,kBAAkB,GAAG,aAAa;IAE1E,OAAO;QACL,MAAM,EAAE,MAAK;YACX,SAAS,GAAG,IAAI;SACjB;AACD,QAAA,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC/B,IAAI,eAAe,GAAG,CAAC;YACvB,IAAI,gBAAgB,GAAG,CAAC;YACxB,MAAM,OAAO,GAAQ,EAAE;AAEvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;gBAC3C,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;;AAG5D,YAAA,SAAS,OAAO,CAAC,OAAmB,EAAE,QAAgB,EAAE,WAAmB,CAAC,EAAA;AAC1E,gBAAA,IAAI,SAAS;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;gBAC3C,IAAI,gBAAgB,KAAK,aAAa;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACpE,gBAAA,IAAI,QAAQ,GAAG,aAAa,IAAI,OAAO,IAAI,SAAS;oBAAE;gBAEtD;AACG,qBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACf,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,aAAa;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,oBAAA,IAAI,QAAQ;wBAAE,QAAQ,CAAC,MAAM,CAAC;AAC9B,oBAAA,gBAAgB,EAAE;oBAElB,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;AAC5D,iBAAC;qBACA,KAAK,CAAC,MAAK;AACV,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,iBAAiB,IAAI,WAAW,GAAG,QAAQ,EAAE;wBAC/C,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;;yBAC/E;AACL,wBAAA,gBAAgB,EAAE;wBAClB,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;;AAE9D,iBAAC,CAAC;;AAER,SAAC,CAAC;KACH;AACH;;;;"}
1
+ {"version":3,"file":"limit-stream-of-requests.js","sources":["../../../../src/lib/utils/limit-stream-of-requests.ts"],"sourcesContent":["import { wait } from \"./wait\";\n\ntype LimitStreamOfRequestsOptions<T> = {\n countRequests: number;\n maxCountInParallel: number;\n promiseGetter: (count: number) => Promise<T>;\n refetchAfterError?: boolean;\n maxTryCount?: number;\n collectResult?: boolean;\n resultCb?: (result: T) => void;\n throwError?: boolean;\n errorCb?: (error: unknown, position: number, tryCount: number) => void;\n};\n\nexport function limitStreamOfRequests<T>({\n countRequests,\n maxCountInParallel,\n promiseGetter,\n refetchAfterError,\n resultCb,\n collectResult,\n maxTryCount = 3,\n throwError,\n errorCb,\n}: LimitStreamOfRequestsOptions<T>): { promise: Promise<T[]>; cancel: () => void } {\n let isStopped = false;\n\n if (maxCountInParallel > countRequests) maxCountInParallel = countRequests;\n\n return {\n cancel: () => {\n isStopped = true;\n },\n promise: new Promise((resolve) => {\n let currentRequests = 0;\n let currentResponses = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(promiseGetter(++currentRequests), currentRequests);\n }\n\n function request(promise: Promise<T>, position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (currentResponses === countRequests) return void resolve(results);\n if (position > countRequests || promise == undefined) return;\n\n promise\n .then((result) => {\n if (isStopped) return void resolve(results);\n\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n currentResponses++;\n\n request(promiseGetter(++currentRequests), currentRequests);\n })\n .catch((error: unknown) => {\n if (errorCb) errorCb(error, position, tryCount);\n\n if (isStopped) return void resolve(results);\n\n if (refetchAfterError && maxTryCount > tryCount) {\n return void wait(1000).then(() =>\n request(promiseGetter(position), position, tryCount + 1),\n );\n }\n\n if (throwError) {\n throw error;\n }\n\n currentResponses++;\n request(promiseGetter(++currentRequests), currentRequests);\n });\n }\n }),\n };\n}\n"],"names":[],"mappings":";;AAcM,SAAU,qBAAqB,CAAI,EACvC,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,WAAW,GAAG,CAAC,EACf,UAAU,EACV,OAAO,GACyB,EAAA;IAChC,IAAI,SAAS,GAAG,KAAK;IAErB,IAAI,kBAAkB,GAAG,aAAa;QAAE,kBAAkB,GAAG,aAAa;IAE1E,OAAO;QACL,MAAM,EAAE,MAAK;YACX,SAAS,GAAG,IAAI;SACjB;AACD,QAAA,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC/B,IAAI,eAAe,GAAG,CAAC;YACvB,IAAI,gBAAgB,GAAG,CAAC;YACxB,MAAM,OAAO,GAAQ,EAAE;AAEvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;gBAC3C,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;;AAG5D,YAAA,SAAS,OAAO,CAAC,OAAmB,EAAE,QAAgB,EAAE,WAAmB,CAAC,EAAA;AAC1E,gBAAA,IAAI,SAAS;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;gBAC3C,IAAI,gBAAgB,KAAK,aAAa;AAAE,oBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AACpE,gBAAA,IAAI,QAAQ,GAAG,aAAa,IAAI,OAAO,IAAI,SAAS;oBAAE;gBAEtD;AACG,qBAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACf,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,aAAa;AAAE,wBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,oBAAA,IAAI,QAAQ;wBAAE,QAAQ,CAAC,MAAM,CAAC;AAC9B,oBAAA,gBAAgB,EAAE;oBAElB,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;AAC5D,iBAAC;AACA,qBAAA,KAAK,CAAC,CAAC,KAAc,KAAI;AACxB,oBAAA,IAAI,OAAO;AAAE,wBAAA,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAE/C,oBAAA,IAAI,SAAS;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;AAE3C,oBAAA,IAAI,iBAAiB,IAAI,WAAW,GAAG,QAAQ,EAAE;wBAC/C,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAC1B,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CACzD;;oBAGH,IAAI,UAAU,EAAE;AACd,wBAAA,MAAM,KAAK;;AAGb,oBAAA,gBAAgB,EAAE;oBAClB,OAAO,CAAC,aAAa,CAAC,EAAE,eAAe,CAAC,EAAE,eAAe,CAAC;AAC5D,iBAAC,CAAC;;AAER,SAAC,CAAC;KACH;AACH;;;;"}
@@ -0,0 +1,13 @@
1
+ function startWith(string, mask) {
2
+ const maskSize = mask.length;
3
+ let pos = 0;
4
+ while (pos < maskSize) {
5
+ if (string.codePointAt(pos) !== mask.codePointAt(pos))
6
+ return false;
7
+ pos++;
8
+ }
9
+ return true;
10
+ }
11
+
12
+ export { startWith };
13
+ //# sourceMappingURL=start-with.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-with.js","sources":["../../../../src/lib/utils/start-with.ts"],"sourcesContent":["export function startWith(string: string, mask: string) {\n const maskSize = mask.length;\n let pos = 0;\n\n while (pos < maskSize) {\n if (string.codePointAt(pos) !== mask.codePointAt(pos)) return false;\n pos++;\n }\n\n return true;\n}\n"],"names":[],"mappings":"AAAgB,SAAA,SAAS,CAAC,MAAc,EAAE,IAAY,EAAA;AACpD,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM;IAC5B,IAAI,GAAG,GAAG,CAAC;AAEX,IAAA,OAAO,GAAG,GAAG,QAAQ,EAAE;AACrB,QAAA,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;AACnE,QAAA,GAAG,EAAE;;AAGP,IAAA,OAAO,IAAI;AACb;;;;"}
package/lib/index.d.ts CHANGED
@@ -243,12 +243,16 @@ type LimitStreamOfRequestsOptions<T> = {
243
243
  maxTryCount?: number;
244
244
  collectResult?: boolean;
245
245
  resultCb?: (result: T) => void;
246
+ throwError?: boolean;
247
+ errorCb?: (error: unknown, position: number, tryCount: number) => void;
246
248
  };
247
- declare function limitStreamOfRequests<T>({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount, }: LimitStreamOfRequestsOptions<T>): {
249
+ declare function limitStreamOfRequests<T>({ countRequests, maxCountInParallel, promiseGetter, refetchAfterError, resultCb, collectResult, maxTryCount, throwError, errorCb, }: LimitStreamOfRequestsOptions<T>): {
248
250
  promise: Promise<T[]>;
249
251
  cancel: () => void;
250
252
  };
251
253
 
254
+ declare function startWith(string: string, mask: string): boolean;
255
+
252
256
  declare function checkType<R>(value: unknown, condition: boolean): value is R;
253
257
 
254
258
  declare function isArray(value: unknown): value is unknown[];
@@ -271,4 +275,4 @@ declare function isUndefined(value: unknown): value is undefined;
271
275
 
272
276
  declare function isDate(value: unknown): value is Date;
273
277
 
274
- 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, getColorFormat, getDateByRules, getFileNameFromHeader, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToNumber, trimUrl, updateAuthToken, updateAuthUser, wait, waitUntil };
278
+ 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, getColorFormat, getDateByRules, getFileNameFromHeader, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, startWith, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToNumber, trimUrl, updateAuthToken, updateAuthUser, wait, waitUntil };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/js-helpers",
3
- "version": "0.7.0",
3
+ "version": "0.7.2",
4
4
  "description": "Krainov helpers",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",