@krainovsd/js-helpers 0.7.1 → 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
@@ -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,16 +414,19 @@ 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
  }),
@@ -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/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};\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","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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"}
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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"}
@@ -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;;;;"}
package/lib/index.d.ts CHANGED
@@ -243,8 +243,10 @@ 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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/js-helpers",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "description": "Krainov helpers",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",