@krainovsd/js-helpers 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.cjs CHANGED
@@ -229,6 +229,10 @@ function dateFormat(date, format) {
229
229
  return dayjs(correctDate).format(format);
230
230
  }
231
231
 
232
+ function transformToDayjs(date) {
233
+ return dayjs(date);
234
+ }
235
+
232
236
  function transformToNumber(value) {
233
237
  let result;
234
238
  if (isString(value))
@@ -415,6 +419,8 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
415
419
  if (resultCb)
416
420
  resultCb(result);
417
421
  currentResponses++;
422
+ if (currentResponses === countRequests)
423
+ return void resolve(results);
418
424
  request(promiseGetter(++currentRequests), currentRequests);
419
425
  })
420
426
  .catch((error) => {
@@ -1653,14 +1659,16 @@ class ResponseError extends Error {
1653
1659
  status;
1654
1660
  code;
1655
1661
  description;
1656
- constructor({ message, status, description, code }) {
1662
+ headers;
1663
+ constructor({ message, status, description, code, headers }) {
1657
1664
  super(message);
1658
1665
  this.status = status;
1659
1666
  this.description = description;
1660
1667
  this.code = code;
1668
+ this.headers = headers;
1661
1669
  }
1662
1670
  }
1663
- function createRequestClientInstance(options = {}) {
1671
+ function createRequestClientInstance(options) {
1664
1672
  let executeMiddlewares;
1665
1673
  let executePostMiddlewares;
1666
1674
  function setMiddlewares({ activeMiddlewares = [], middlewareOptions = {}, customMiddlewares = [], activePostMiddlewares = [], postMiddlewaresOptions = {}, customPostMiddlewares = [], } = {}) {
@@ -1691,34 +1699,17 @@ function createRequestClientInstance(options = {}) {
1691
1699
  if (isObject(body) || isArray(body))
1692
1700
  preparedBody = JSON.stringify(preparedBody);
1693
1701
  }
1694
- let response;
1695
- if (IS_BROWSER || IS_JEST) {
1696
- response = await fetch(url, {
1697
- method,
1698
- body: preparedBody,
1699
- headers: {
1700
- ...(body instanceof FormData || !body
1701
- ? {}
1702
- : { "Content-Type": "application/json; charset=UTF-8" }),
1703
- ...headers,
1704
- },
1705
- signal: request.signal,
1706
- });
1707
- }
1708
- if (IS_NODE && !IS_JEST) {
1709
- const nodeFetch = (await import('node-fetch')).default;
1710
- response = await nodeFetch(url, {
1711
- method,
1712
- body: preparedBody,
1713
- headers: {
1714
- ...(body instanceof FormData || !body
1715
- ? {}
1716
- : { "Content-Type": "application/json; charset=UTF-8" }),
1717
- ...headers,
1718
- },
1719
- signal: request.signal,
1720
- });
1721
- }
1702
+ const response = await options.client(url, {
1703
+ method,
1704
+ body: preparedBody,
1705
+ headers: {
1706
+ ...(body instanceof FormData || !body
1707
+ ? {}
1708
+ : { "Content-Type": "application/json; charset=UTF-8" }),
1709
+ ...headers,
1710
+ },
1711
+ signal: request.signal,
1712
+ });
1722
1713
  await executePostMiddlewares(response);
1723
1714
  if (!response) {
1724
1715
  throw new Error("hasn't response");
@@ -1745,6 +1736,7 @@ function createRequestClientInstance(options = {}) {
1745
1736
  status: response.status,
1746
1737
  message: `HTTP error! Status: ${response.status}`,
1747
1738
  description: result,
1739
+ headers: Object.fromEntries(response.headers.entries()),
1748
1740
  });
1749
1741
  }
1750
1742
  if (request.downloadFile) {
@@ -1955,6 +1947,7 @@ exports.transformHEXtoRGB = transformHEXtoRGB;
1955
1947
  exports.transformRGBAtoRGB = transformRGBAtoRGB;
1956
1948
  exports.transformRGBtoRGBA = transformRGBtoRGBA;
1957
1949
  exports.transformToColor = transformToColor;
1950
+ exports.transformToDayjs = transformToDayjs;
1958
1951
  exports.transformToNumber = transformToNumber;
1959
1952
  exports.translit = translit;
1960
1953
  exports.trimUrl = trimUrl;
@@ -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/utils/get-caller-function-name.ts","../../src/lib/utils/translit.ts","../../src/lib/utils/join-paths.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/browser/get-query-values.ts","../../src/lib/api/constants.ts","../../src/lib/api/auth/token.ts","../../src/lib/api/auth/user.ts","../../src/lib/api/middlewares/auth-middleware.ts","../../src/lib/api/middlewares/auth-no-refresh-middleware.ts","../../src/lib/api/middlewares/console-middleware.ts","../../src/lib/api/middlewares/console-post-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 AuthNoRefresh: \"authNoRefresh\",\n Logger: \"logger\",\n} as const;\n\nexport const POST_API_MIDDLEWARES = {\n Logger: \"logger\",\n} as const;\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 = typeof process !== \"undefined\" && process?.versions?.bun != undefined;\n\nexport const IS_DENO =\n // @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 = typeof process !== \"undefined\" && process?.versions?.node != undefined;\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\ntype DateDifference = {\n type: DateType;\n firstDate: Date;\n secondDate?: Date;\n float?: boolean;\n};\n\nexport function dateDifference({\n firstDate,\n float = false,\n secondDate = new Date(),\n type,\n}: DateDifference) {\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 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","export function getCallerFunctionName() {\n try {\n const error = new Error();\n if (!error.stack) throw error;\n const stack = error.stack.split(\"\\n\");\n\n if (stack[2]) {\n const callerLine = stack[2].trim();\n const match = /at (\\w+)/.exec(callerLine);\n if (match) {\n return match[1];\n }\n }\n } catch {}\n\n return null;\n}\n","/* eslint-disable id-length */\nconst translitDict: Record<string, string> = {\n А: \"A\",\n Б: \"B\",\n В: \"V\",\n Г: \"G\",\n Д: \"D\",\n Е: \"E\",\n Ё: \"YO\",\n Ж: \"ZH\",\n З: \"Z\",\n И: \"I\",\n Й: \"Y\",\n К: \"K\",\n Л: \"L\",\n М: \"M\",\n Н: \"N\",\n О: \"O\",\n П: \"P\",\n Р: \"R\",\n С: \"S\",\n Т: \"T\",\n У: \"U\",\n Ф: \"F\",\n Х: \"KH\",\n Ц: \"TS\",\n Ч: \"CH\",\n Ш: \"SH\",\n Щ: \"SCH\",\n Ъ: \"\",\n Ы: \"Y\",\n Ь: \"\",\n Э: \"E\",\n Ю: \"YU\",\n Я: \"YA\",\n а: \"a\",\n б: \"b\",\n в: \"v\",\n г: \"g\",\n д: \"d\",\n е: \"e\",\n ё: \"yo\",\n ж: \"zh\",\n з: \"z\",\n и: \"i\",\n й: \"y\",\n к: \"k\",\n л: \"l\",\n м: \"m\",\n н: \"n\",\n о: \"o\",\n п: \"p\",\n р: \"r\",\n с: \"s\",\n т: \"t\",\n у: \"u\",\n ф: \"f\",\n х: \"kh\",\n ц: \"ts\",\n ч: \"ch\",\n ш: \"sh\",\n щ: \"sch\",\n ъ: \"\",\n ы: \"y\",\n ь: \"\",\n э: \"e\",\n ю: \"yu\",\n я: \"ya\",\n \" \": \"_\",\n A: \"A\",\n B: \"B\",\n C: \"C\",\n D: \"D\",\n E: \"E\",\n F: \"F\",\n G: \"G\",\n H: \"H\",\n I: \"I\",\n J: \"J\",\n K: \"K\",\n L: \"L\",\n M: \"M\",\n N: \"N\",\n O: \"O\",\n P: \"P\",\n Q: \"Q\",\n R: \"R\",\n S: \"S\",\n T: \"T\",\n U: \"U\",\n V: \"V\",\n W: \"W\",\n X: \"X\",\n Y: \"Y\",\n Z: \"Z\",\n a: \"a\",\n b: \"b\",\n c: \"c\",\n d: \"d\",\n e: \"e\",\n f: \"f\",\n g: \"g\",\n h: \"h\",\n i: \"i\",\n j: \"j\",\n k: \"k\",\n l: \"l\",\n m: \"m\",\n n: \"n\",\n o: \"o\",\n p: \"p\",\n q: \"q\",\n r: \"r\",\n s: \"s\",\n t: \"t\",\n u: \"u\",\n v: \"v\",\n w: \"w\",\n x: \"x\",\n y: \"y\",\n z: \"z\",\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n};\n\nexport function translit(text: string) {\n return text\n .split(\"\")\n .map((char) => translitDict[char] || \"\")\n .join(\"\");\n}\n","export function joinPaths(...parts: string[]) {\n return parts\n .reduce((result: string[], part) => {\n const trimedPart = part.trim().replace(/^\\/+|\\/+$/g, \"\");\n if (trimedPart.length > 0) result.push(trimedPart);\n\n return result;\n }, [])\n .join(\"/\");\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?.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?.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 { IS_BROWSER, IS_JEST } from \"../../constants\";\nimport { isArray, isString } from \"../typings\";\n\nexport function getQueryValues<K extends string>(\n keys: K[],\n): Record<K, string | string[] | undefined> | null {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const object: Record<K, string | string[] | undefined> = {} as Record<\n K,\n string | string[] | undefined\n >;\n\n const queries = window.location.search.substring(1).split(\"&\");\n for (const query of queries) {\n const [key, value] = query.split(\"=\");\n if (keys.includes(key as K) && value) {\n const prev = object[key as K];\n if (isArray(prev)) prev.push(value);\n else if (isString(prev)) object[key as K] = [prev, value];\n else object[key as K] = value;\n }\n }\n\n return object;\n}\n","export const RESPONSE_DATA_SYMBOL = Symbol(\"response data\");\n","import type {\n AuthMiddleWareOptions,\n AuthNoRefreshMiddleWareOptions,\n AuthTokenNoRefreshRequestOptions,\n AuthTokenRequestOptions,\n} from \"../../../types\";\nimport { getQueryValues } from \"../../browser\";\nimport { isArray, isNull, isNumber, isObject, isString, isUndefined } from \"../../typings\";\nimport { getByPath, waitUntil } from \"../../utils\";\n\nexport async function updateAuthToken(options: AuthMiddleWareOptions) {\n let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n const expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n\n if (!token || !expires || Date.now() > +expires) {\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n if (isNull(token)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(token)) {\n return void window.location.replace(options.errorUrl);\n }\n }\n\n return token;\n}\n\nexport async function getAuthToken(options: AuthTokenRequestOptions) {\n let status = 0;\n try {\n const response = await fetch(options.authTokenUrl, {\n method: \"GET\",\n });\n status = response.status;\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = (await response.json()) as Record<string, unknown>;\n\n try {\n const { expires, token } = transformData(\n result,\n options.pathToToken,\n options.pathToTokenExpires,\n );\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n localStorage.setItem(options.storageTokenName, token);\n\n return token;\n } catch {\n return undefined;\n }\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n\nfunction transformData(data: unknown, pathToToken: string, pathToTokenExpires: string) {\n if (!isObject(data)) throw new Error(\"Bad response data\");\n\n const token = getByPath(data, pathToToken);\n const expiresToken = getByPath(data, pathToTokenExpires);\n\n if ((!isString(expiresToken) && !isNumber(expiresToken)) || !isString(token))\n throw new Error(\"Bad response data\");\n\n return {\n expires: String(expiresToken),\n token,\n };\n}\n\nexport async function getAuthTokenNoRefresh(options: AuthTokenNoRefreshRequestOptions) {\n let waiting = true;\n const url = new URL(window.origin);\n url.searchParams.append(options.queryIsRefreshTokenName, \"true\");\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n\n if (!windowInstance) {\n windowInstance = window.open(url.toString());\n }\n\n if (!windowInstance) {\n if (options.onWindowOpenError) options.onWindowOpenError();\n\n return;\n }\n\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, 15000);\n\n await waitUntil(() => waiting);\n}\n\nexport function updateAuthTokenNoRefresh(options: AuthNoRefreshMiddleWareOptions) {\n let expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) expires = null;\n\n const queries = getQueryValues([options.queryTokenExpiresName, options.queryIsRefreshTokenName]);\n const refreshQuery = queries?.[options.queryIsRefreshTokenName];\n const expiresQuery = queries?.[options.queryTokenExpiresName];\n\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : false;\n const expiresFromQuery = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : false;\n\n if (!expires && expiresFromQuery) {\n expires = expiresFromQuery;\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) expires = null;\n }\n\n if (!expires) {\n window.location.replace(options.authUrl());\n\n return null;\n }\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n\n if (isRefresh) {\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.postMessage(true);\n channel.close();\n window.close();\n }\n\n if (expiresFromQuery) {\n const url = new URL(window.location.href);\n url.searchParams.delete(options.queryTokenExpiresName);\n window.location.replace(url.toString());\n\n return null;\n }\n\n return expires;\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 { AuthNoRefreshMiddleWareOptions, Middleware } from \"../../../types\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getAuthTokenNoRefresh } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthNoRefreshMiddleWare =\n (options: AuthNoRefreshMiddleWareOptions): Middleware =>\n async (request) => {\n if (!options.authUrl || !options.storageTokenExpiresName || !options.errorUrl) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !startWith(request.path, \"http\");\n\n if (request.token) {\n if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${request.token}`,\n };\n\n return;\n }\n\n if (isFetchingAccessToken) await waitUntil(() => isFetchingAccessToken);\n\n const expires = localStorage.getItem(options.storageTokenExpiresName);\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) {\n isFetchingAccessToken = true;\n await (options.tokenRequest ? options.tokenRequest() : getAuthTokenNoRefresh(options));\n isFetchingAccessToken = false;\n }\n const token = options.storageTokenName ? localStorage.getItem(options.storageTokenName) : null;\n\n if (!isSameOrigin && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n","import type { LoggerMiddlewareOptions, Middleware, RequestInterface } from \"../../../types\";\n\nexport function generateConsoleMiddleware(options: LoggerMiddlewareOptions = {}): Middleware {\n return (request) => {\n return new Promise((resolve) => {\n if (\n (options.filter &&\n !options.filter(request as RequestInterface<unknown, unknown, unknown, unknown>)) ||\n (options.filterHeaders && !options.filterHeaders(request.headers)) ||\n (options.filterMethod && !options.filterMethod(request.method)) ||\n (options.filterParams && !options.filterParams(request.params)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve(true);\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve(true);\n });\n };\n}\n","/* eslint-disable no-console */\nimport type { LoggerPostMiddlewareOptions, PostMiddleware } from \"../../../types\";\nimport { RESPONSE_DATA_SYMBOL } from \"../constants\";\n\nexport function generateConsolePostMiddleware(\n options: LoggerPostMiddlewareOptions = {},\n): PostMiddleware {\n return (response) => {\n return new Promise((resolve) => {\n void (async function logger() {\n try {\n if (\n !response ||\n (options.filter && !options.filter(response)) ||\n (options.filterStatus && !options.filterStatus(response.status)) ||\n (options.filterUrl && !options.filterUrl(response.url)) ||\n (options.filterHeaders && !options.filterHeaders(response.headers))\n ) {\n resolve(true);\n\n return;\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result;\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n\n Object.defineProperty(response, RESPONSE_DATA_SYMBOL, {\n value: result,\n writable: false,\n enumerable: false,\n configurable: true,\n });\n\n console.log({\n url: response.url,\n status: response.status,\n headers: response.headers,\n body: result,\n });\n\n resolve(true);\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve(true);\n }\n })().finally(() => {\n resolve(true);\n });\n });\n };\n}\n","import type { Response as NodeResponse } from \"node-fetch\";\nimport { API_MIDDLEWARES, IS_BROWSER, IS_JEST, POST_API_MIDDLEWARES } from \"../../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../../types\";\nimport { generateAuthMiddleWare } from \"./auth-middleware\";\nimport { generateAuthNoRefreshMiddleWare } from \"./auth-no-refresh-middleware\";\nimport { generateConsoleMiddleware } from \"./console-middleware\";\nimport { generateConsolePostMiddleware } from \"./console-post-middleware\";\n\nexport function generateMiddlewares(\n activeMiddlewares: ActiveMiddleware,\n middlewareOptions: MiddlewaresOptions,\n customMiddlewares: Middleware[],\n) {\n const selectedMiddlewares: Middleware[] = customMiddlewares;\n\n for (const key of activeMiddlewares) {\n switch (key) {\n case API_MIDDLEWARES.Auth: {\n if (middlewareOptions.auth && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(generateAuthMiddleWare(middlewareOptions.auth));\n continue;\n }\n case API_MIDDLEWARES.AuthNoRefresh: {\n if (middlewareOptions.authNoRefresh && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(\n generateAuthNoRefreshMiddleWare(middlewareOptions.authNoRefresh),\n );\n continue;\n }\n case API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));\n continue;\n }\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request);\n }\n\n resolve(1);\n })();\n });\n };\n}\n\nexport function generatePostMiddlewares(\n activePostMiddlewares: ActivePostMiddleware,\n postMiddlewaresOptions: PostMiddlewareOptions,\n customPostMiddlewares: PostMiddleware[],\n) {\n const selectedMiddlewares: PostMiddleware[] = customPostMiddlewares;\n\n for (const key of activePostMiddlewares) {\n switch (key) {\n case POST_API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));\n continue;\n }\n\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares(response: Response | NodeResponse | undefined) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(response);\n }\n\n resolve(1);\n })();\n });\n };\n}\n","import type { BodyInit as NodeBodyInit, Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER, IS_JEST, IS_NODE } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { RESPONSE_DATA_SYMBOL } from \"./constants\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n code?: number;\n\n description?: unknown;\n\n constructor({ message, status, description, code }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n this.code = code;\n }\n}\n\ntype CreateRequestClientInstance = {\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance = {}) {\n let executeMiddlewares: <T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: (response: Response | NodeResponse | undefined) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n }: CreateRequestClientInstance = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n let response: Response | NodeResponse | undefined;\n\n if (IS_BROWSER || IS_JEST) {\n response = await fetch(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n if (IS_NODE && !IS_JEST) {\n const nodeFetch = (await import(\"node-fetch\")).default;\n response = await nodeFetch(url, {\n method,\n body: preparedBody as NodeBodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n\n await executePostMiddlewares(response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {\n if (RESPONSE_DATA_SYMBOL in response) result = response[RESPONSE_DATA_SYMBOL];\n }\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n","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":["isFetchingAccessToken"],"mappings":"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A,GAAG,EAAE,GAAG;AACR,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAA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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/date/transform-to-dayjs.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/utils/get-caller-function-name.ts","../../src/lib/utils/translit.ts","../../src/lib/utils/join-paths.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/browser/get-query-values.ts","../../src/lib/api/constants.ts","../../src/lib/api/auth/token.ts","../../src/lib/api/auth/user.ts","../../src/lib/api/middlewares/auth-middleware.ts","../../src/lib/api/middlewares/auth-no-refresh-middleware.ts","../../src/lib/api/middlewares/console-middleware.ts","../../src/lib/api/middlewares/console-post-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 AuthNoRefresh: \"authNoRefresh\",\n Logger: \"logger\",\n} as const;\n\nexport const POST_API_MIDDLEWARES = {\n Logger: \"logger\",\n} as const;\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 = typeof process !== \"undefined\" && process?.versions?.bun != undefined;\n\nexport const IS_DENO =\n // @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 = typeof process !== \"undefined\" && process?.versions?.node != undefined;\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\ntype DateDifference = {\n type: DateType;\n firstDate: Date;\n secondDate?: Date;\n float?: boolean;\n};\n\nexport function dateDifference({\n firstDate,\n float = false,\n secondDate = new Date(),\n type,\n}: DateDifference) {\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 dayjs, { type Dayjs } from \"dayjs\";\n\nexport function transformToDayjs(date: Date | string | number): Dayjs {\n return dayjs(date);\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 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 if (currentResponses === countRequests) return void resolve(results);\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","export function getCallerFunctionName() {\n try {\n const error = new Error();\n if (!error.stack) throw error;\n const stack = error.stack.split(\"\\n\");\n\n if (stack[2]) {\n const callerLine = stack[2].trim();\n const match = /at (\\w+)/.exec(callerLine);\n if (match) {\n return match[1];\n }\n }\n } catch {}\n\n return null;\n}\n","/* eslint-disable id-length */\nconst translitDict: Record<string, string> = {\n А: \"A\",\n Б: \"B\",\n В: \"V\",\n Г: \"G\",\n Д: \"D\",\n Е: \"E\",\n Ё: \"YO\",\n Ж: \"ZH\",\n З: \"Z\",\n И: \"I\",\n Й: \"Y\",\n К: \"K\",\n Л: \"L\",\n М: \"M\",\n Н: \"N\",\n О: \"O\",\n П: \"P\",\n Р: \"R\",\n С: \"S\",\n Т: \"T\",\n У: \"U\",\n Ф: \"F\",\n Х: \"KH\",\n Ц: \"TS\",\n Ч: \"CH\",\n Ш: \"SH\",\n Щ: \"SCH\",\n Ъ: \"\",\n Ы: \"Y\",\n Ь: \"\",\n Э: \"E\",\n Ю: \"YU\",\n Я: \"YA\",\n а: \"a\",\n б: \"b\",\n в: \"v\",\n г: \"g\",\n д: \"d\",\n е: \"e\",\n ё: \"yo\",\n ж: \"zh\",\n з: \"z\",\n и: \"i\",\n й: \"y\",\n к: \"k\",\n л: \"l\",\n м: \"m\",\n н: \"n\",\n о: \"o\",\n п: \"p\",\n р: \"r\",\n с: \"s\",\n т: \"t\",\n у: \"u\",\n ф: \"f\",\n х: \"kh\",\n ц: \"ts\",\n ч: \"ch\",\n ш: \"sh\",\n щ: \"sch\",\n ъ: \"\",\n ы: \"y\",\n ь: \"\",\n э: \"e\",\n ю: \"yu\",\n я: \"ya\",\n \" \": \"_\",\n A: \"A\",\n B: \"B\",\n C: \"C\",\n D: \"D\",\n E: \"E\",\n F: \"F\",\n G: \"G\",\n H: \"H\",\n I: \"I\",\n J: \"J\",\n K: \"K\",\n L: \"L\",\n M: \"M\",\n N: \"N\",\n O: \"O\",\n P: \"P\",\n Q: \"Q\",\n R: \"R\",\n S: \"S\",\n T: \"T\",\n U: \"U\",\n V: \"V\",\n W: \"W\",\n X: \"X\",\n Y: \"Y\",\n Z: \"Z\",\n a: \"a\",\n b: \"b\",\n c: \"c\",\n d: \"d\",\n e: \"e\",\n f: \"f\",\n g: \"g\",\n h: \"h\",\n i: \"i\",\n j: \"j\",\n k: \"k\",\n l: \"l\",\n m: \"m\",\n n: \"n\",\n o: \"o\",\n p: \"p\",\n q: \"q\",\n r: \"r\",\n s: \"s\",\n t: \"t\",\n u: \"u\",\n v: \"v\",\n w: \"w\",\n x: \"x\",\n y: \"y\",\n z: \"z\",\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n};\n\nexport function translit(text: string) {\n return text\n .split(\"\")\n .map((char) => translitDict[char] || \"\")\n .join(\"\");\n}\n","export function joinPaths(...parts: string[]) {\n return parts\n .reduce((result: string[], part) => {\n const trimedPart = part.trim().replace(/^\\/+|\\/+$/g, \"\");\n if (trimedPart.length > 0) result.push(trimedPart);\n\n return result;\n }, [])\n .join(\"/\");\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?.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?.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 { IS_BROWSER, IS_JEST } from \"../../constants\";\nimport { isArray, isString } from \"../typings\";\n\nexport function getQueryValues<K extends string>(\n keys: K[],\n): Record<K, string | string[] | undefined> | null {\n if (!IS_BROWSER && !IS_JEST) return null;\n\n const object: Record<K, string | string[] | undefined> = {} as Record<\n K,\n string | string[] | undefined\n >;\n\n const queries = window.location.search.substring(1).split(\"&\");\n for (const query of queries) {\n const [key, value] = query.split(\"=\");\n if (keys.includes(key as K) && value) {\n const prev = object[key as K];\n if (isArray(prev)) prev.push(value);\n else if (isString(prev)) object[key as K] = [prev, value];\n else object[key as K] = value;\n }\n }\n\n return object;\n}\n","export const RESPONSE_DATA_SYMBOL = Symbol(\"response data\");\n","import type {\n AuthMiddleWareOptions,\n AuthNoRefreshMiddleWareOptions,\n AuthTokenNoRefreshRequestOptions,\n AuthTokenRequestOptions,\n} from \"../../../types\";\nimport { getQueryValues } from \"../../browser\";\nimport { isArray, isNull, isNumber, isObject, isString, isUndefined } from \"../../typings\";\nimport { getByPath, waitUntil } from \"../../utils\";\n\nexport async function updateAuthToken(options: AuthMiddleWareOptions) {\n let token: string | null | undefined = localStorage.getItem(options.storageTokenName);\n const expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n\n if (!token || !expires || Date.now() > +expires) {\n token = await (options.tokenRequest ? options.tokenRequest() : getAuthToken(options));\n if (isNull(token)) {\n return void window.location.replace(options.authUrl());\n }\n if (isUndefined(token)) {\n return void window.location.replace(options.errorUrl);\n }\n }\n\n return token;\n}\n\nexport async function getAuthToken(options: AuthTokenRequestOptions) {\n let status = 0;\n try {\n const response = await fetch(options.authTokenUrl, {\n method: \"GET\",\n });\n status = response.status;\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = (await response.json()) as Record<string, unknown>;\n\n try {\n const { expires, token } = transformData(\n result,\n options.pathToToken,\n options.pathToTokenExpires,\n );\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n localStorage.setItem(options.storageTokenName, token);\n\n return token;\n } catch {\n return undefined;\n }\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n\nfunction transformData(data: unknown, pathToToken: string, pathToTokenExpires: string) {\n if (!isObject(data)) throw new Error(\"Bad response data\");\n\n const token = getByPath(data, pathToToken);\n const expiresToken = getByPath(data, pathToTokenExpires);\n\n if ((!isString(expiresToken) && !isNumber(expiresToken)) || !isString(token))\n throw new Error(\"Bad response data\");\n\n return {\n expires: String(expiresToken),\n token,\n };\n}\n\nexport async function getAuthTokenNoRefresh(options: AuthTokenNoRefreshRequestOptions) {\n let waiting = true;\n const url = new URL(window.origin);\n url.searchParams.append(options.queryIsRefreshTokenName, \"true\");\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n\n if (!windowInstance) {\n windowInstance = window.open(url.toString());\n }\n\n if (!windowInstance) {\n if (options.onWindowOpenError) options.onWindowOpenError();\n\n return;\n }\n\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, 15000);\n\n await waitUntil(() => waiting);\n}\n\nexport function updateAuthTokenNoRefresh(options: AuthNoRefreshMiddleWareOptions) {\n let expires: string | null | undefined = localStorage.getItem(options.storageTokenExpiresName);\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) expires = null;\n\n const queries = getQueryValues([options.queryTokenExpiresName, options.queryIsRefreshTokenName]);\n const refreshQuery = queries?.[options.queryIsRefreshTokenName];\n const expiresQuery = queries?.[options.queryTokenExpiresName];\n\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : false;\n const expiresFromQuery = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : false;\n\n if (!expires && expiresFromQuery) {\n expires = expiresFromQuery;\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) expires = null;\n }\n\n if (!expires) {\n window.location.replace(options.authUrl());\n\n return null;\n }\n\n localStorage.setItem(options.storageTokenExpiresName, expires);\n\n if (isRefresh) {\n const channel = new BroadcastChannel(options.queryIsRefreshTokenName);\n channel.postMessage(true);\n channel.close();\n window.close();\n }\n\n if (expiresFromQuery) {\n const url = new URL(window.location.href);\n url.searchParams.delete(options.queryTokenExpiresName);\n window.location.replace(url.toString());\n\n return null;\n }\n\n return expires;\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 { AuthNoRefreshMiddleWareOptions, Middleware } from \"../../../types\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getAuthTokenNoRefresh } from \"../auth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateAuthNoRefreshMiddleWare =\n (options: AuthNoRefreshMiddleWareOptions): Middleware =>\n async (request) => {\n if (!options.authUrl || !options.storageTokenExpiresName || !options.errorUrl) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !startWith(request.path, \"http\");\n\n if (request.token) {\n if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${request.token}`,\n };\n\n return;\n }\n\n if (isFetchingAccessToken) await waitUntil(() => isFetchingAccessToken);\n\n const expires = localStorage.getItem(options.storageTokenExpiresName);\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) {\n isFetchingAccessToken = true;\n await (options.tokenRequest ? options.tokenRequest() : getAuthTokenNoRefresh(options));\n isFetchingAccessToken = false;\n }\n const token = options.storageTokenName ? localStorage.getItem(options.storageTokenName) : null;\n\n if (!isSameOrigin && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n","import type { LoggerMiddlewareOptions, Middleware, RequestInterface } from \"../../../types\";\n\nexport function generateConsoleMiddleware(options: LoggerMiddlewareOptions = {}): Middleware {\n return (request) => {\n return new Promise((resolve) => {\n if (\n (options.filter &&\n !options.filter(request as RequestInterface<unknown, unknown, unknown, unknown>)) ||\n (options.filterHeaders && !options.filterHeaders(request.headers)) ||\n (options.filterMethod && !options.filterMethod(request.method)) ||\n (options.filterParams && !options.filterParams(request.params)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve(true);\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve(true);\n });\n };\n}\n","/* eslint-disable no-console */\nimport type { LoggerPostMiddlewareOptions, PostMiddleware } from \"../../../types\";\nimport { RESPONSE_DATA_SYMBOL } from \"../constants\";\n\nexport function generateConsolePostMiddleware(\n options: LoggerPostMiddlewareOptions = {},\n): PostMiddleware {\n return (response) => {\n return new Promise((resolve) => {\n void (async function logger() {\n try {\n if (\n !response ||\n (options.filter && !options.filter(response)) ||\n (options.filterStatus && !options.filterStatus(response.status)) ||\n (options.filterUrl && !options.filterUrl(response.url)) ||\n (options.filterHeaders && !options.filterHeaders(response.headers))\n ) {\n resolve(true);\n\n return;\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result;\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n\n Object.defineProperty(response, RESPONSE_DATA_SYMBOL, {\n value: result,\n writable: false,\n enumerable: false,\n configurable: true,\n });\n\n console.log({\n url: response.url,\n status: response.status,\n headers: response.headers,\n body: result,\n });\n\n resolve(true);\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve(true);\n }\n })().finally(() => {\n resolve(true);\n });\n });\n };\n}\n","import type { Response as NodeResponse } from \"node-fetch\";\nimport { API_MIDDLEWARES, IS_BROWSER, IS_JEST, POST_API_MIDDLEWARES } from \"../../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../../types\";\nimport { generateAuthMiddleWare } from \"./auth-middleware\";\nimport { generateAuthNoRefreshMiddleWare } from \"./auth-no-refresh-middleware\";\nimport { generateConsoleMiddleware } from \"./console-middleware\";\nimport { generateConsolePostMiddleware } from \"./console-post-middleware\";\n\nexport function generateMiddlewares(\n activeMiddlewares: ActiveMiddleware,\n middlewareOptions: MiddlewaresOptions,\n customMiddlewares: Middleware[],\n) {\n const selectedMiddlewares: Middleware[] = customMiddlewares;\n\n for (const key of activeMiddlewares) {\n switch (key) {\n case API_MIDDLEWARES.Auth: {\n if (middlewareOptions.auth && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(generateAuthMiddleWare(middlewareOptions.auth));\n continue;\n }\n case API_MIDDLEWARES.AuthNoRefresh: {\n if (middlewareOptions.authNoRefresh && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(\n generateAuthNoRefreshMiddleWare(middlewareOptions.authNoRefresh),\n );\n continue;\n }\n case API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));\n continue;\n }\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request);\n }\n\n resolve(1);\n })();\n });\n };\n}\n\nexport function generatePostMiddlewares(\n activePostMiddlewares: ActivePostMiddleware,\n postMiddlewaresOptions: PostMiddlewareOptions,\n customPostMiddlewares: PostMiddleware[],\n) {\n const selectedMiddlewares: PostMiddleware[] = customPostMiddlewares;\n\n for (const key of activePostMiddlewares) {\n switch (key) {\n case POST_API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));\n continue;\n }\n\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares(response: Response | NodeResponse | undefined) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(response);\n }\n\n resolve(1);\n })();\n });\n };\n}\n","import type { Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { RESPONSE_DATA_SYMBOL } from \"./constants\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n headers?: Record<string, string>;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n code?: number;\n\n description?: unknown;\n\n headers?: Record<string, string>;\n\n constructor({ message, status, description, code, headers }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n this.code = code;\n this.headers = headers;\n }\n}\n\ntype CreateRequestClientInstance = {\n client: typeof fetch;\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance) {\n let executeMiddlewares: <T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: (response: Response | NodeResponse | undefined) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n }: Omit<CreateRequestClientInstance, \"client\"> = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n const response: Response | NodeResponse | undefined = await options.client(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n\n await executePostMiddlewares(response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {\n if (RESPONSE_DATA_SYMBOL in response) result = response[RESPONSE_DATA_SYMBOL];\n }\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n headers: Object.fromEntries(response.headers.entries()),\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n","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":["isFetchingAccessToken"],"mappings":"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AC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,EAAE;AACL,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,CAAC,EAAE,IAAI;AACP,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CA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"}
package/lib/esm/index.js CHANGED
@@ -22,6 +22,7 @@ export { isToday } from './lib/date/is-today.js';
22
22
  export { isTomorrow } from './lib/date/is-tomorrow.js';
23
23
  export { isYesterday } from './lib/date/is-yesterday.js';
24
24
  export { dateFormat } from './lib/date/date-format.js';
25
+ export { transformToDayjs } from './lib/date/transform-to-dayjs.js';
25
26
  export { waitUntil } from './lib/utils/wait-until.js';
26
27
  export { getByPath } from './lib/utils/get-by-path.js';
27
28
  export { fieldViewFormat } from './lib/utils/field-view-format.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { IS_BROWSER, IS_JEST, IS_NODE } from '../../constants/environment.js';
1
+ import { IS_BROWSER } from '../../constants/environment.js';
2
2
  import { downloadFile } from '../browser/download-file.js';
3
3
  import { isArray } from '../typings/is-array.js';
4
4
  import { isObject } from '../typings/is-object.js';
@@ -17,14 +17,16 @@ class ResponseError extends Error {
17
17
  status;
18
18
  code;
19
19
  description;
20
- constructor({ message, status, description, code }) {
20
+ headers;
21
+ constructor({ message, status, description, code, headers }) {
21
22
  super(message);
22
23
  this.status = status;
23
24
  this.description = description;
24
25
  this.code = code;
26
+ this.headers = headers;
25
27
  }
26
28
  }
27
- function createRequestClientInstance(options = {}) {
29
+ function createRequestClientInstance(options) {
28
30
  let executeMiddlewares;
29
31
  let executePostMiddlewares;
30
32
  function setMiddlewares({ activeMiddlewares = [], middlewareOptions = {}, customMiddlewares = [], activePostMiddlewares = [], postMiddlewaresOptions = {}, customPostMiddlewares = [], } = {}) {
@@ -55,34 +57,17 @@ function createRequestClientInstance(options = {}) {
55
57
  if (isObject(body) || isArray(body))
56
58
  preparedBody = JSON.stringify(preparedBody);
57
59
  }
58
- let response;
59
- if (IS_BROWSER || IS_JEST) {
60
- response = await fetch(url, {
61
- method,
62
- body: preparedBody,
63
- headers: {
64
- ...(body instanceof FormData || !body
65
- ? {}
66
- : { "Content-Type": "application/json; charset=UTF-8" }),
67
- ...headers,
68
- },
69
- signal: request.signal,
70
- });
71
- }
72
- if (IS_NODE && !IS_JEST) {
73
- const nodeFetch = (await import('node-fetch')).default;
74
- response = await nodeFetch(url, {
75
- method,
76
- body: preparedBody,
77
- headers: {
78
- ...(body instanceof FormData || !body
79
- ? {}
80
- : { "Content-Type": "application/json; charset=UTF-8" }),
81
- ...headers,
82
- },
83
- signal: request.signal,
84
- });
85
- }
60
+ const response = await options.client(url, {
61
+ method,
62
+ body: preparedBody,
63
+ headers: {
64
+ ...(body instanceof FormData || !body
65
+ ? {}
66
+ : { "Content-Type": "application/json; charset=UTF-8" }),
67
+ ...headers,
68
+ },
69
+ signal: request.signal,
70
+ });
86
71
  await executePostMiddlewares(response);
87
72
  if (!response) {
88
73
  throw new Error("hasn't response");
@@ -109,6 +94,7 @@ function createRequestClientInstance(options = {}) {
109
94
  status: response.status,
110
95
  message: `HTTP error! Status: ${response.status}`,
111
96
  description: result,
97
+ headers: Object.fromEntries(response.headers.entries()),
112
98
  });
113
99
  }
114
100
  if (request.downloadFile) {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sources":["../../../../src/lib/api/core.ts"],"sourcesContent":["import type { BodyInit as NodeBodyInit, Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER, IS_JEST, IS_NODE } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { RESPONSE_DATA_SYMBOL } from \"./constants\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n code?: number;\n\n description?: unknown;\n\n constructor({ message, status, description, code }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n this.code = code;\n }\n}\n\ntype CreateRequestClientInstance = {\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance = {}) {\n let executeMiddlewares: <T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: (response: Response | NodeResponse | undefined) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n }: CreateRequestClientInstance = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n let response: Response | NodeResponse | undefined;\n\n if (IS_BROWSER || IS_JEST) {\n response = await fetch(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n if (IS_NODE && !IS_JEST) {\n const nodeFetch = (await import(\"node-fetch\")).default;\n response = await nodeFetch(url, {\n method,\n body: preparedBody as NodeBodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n }\n\n await executePostMiddlewares(response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {\n if (RESPONSE_DATA_SYMBOL in response) result = response[RESPONSE_DATA_SYMBOL];\n }\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sources":["../../../../src/lib/api/core.ts"],"sourcesContent":["import type { Response as NodeResponse } from \"node-fetch\";\nimport { IS_BROWSER } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isArray, isObject } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { RESPONSE_DATA_SYMBOL } from \"./constants\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n headers?: Record<string, string>;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n code?: number;\n\n description?: unknown;\n\n headers?: Record<string, string>;\n\n constructor({ message, status, description, code, headers }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n this.code = code;\n this.headers = headers;\n }\n}\n\ntype CreateRequestClientInstance = {\n client: typeof fetch;\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance) {\n let executeMiddlewares: <T, Incoming, Body, Outcoming>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: (response: Response | NodeResponse | undefined) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n }: Omit<CreateRequestClientInstance, \"client\"> = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n responseWithStatus?: boolean,\n ): Promise<{ data: T; status: number; headers: Record<string, string> } | T> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(request.mock)\n : (request.mock as T);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n let preparedBody = body;\n\n if (body && !(preparedBody instanceof FormData)) {\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Body);\n }\n\n if (isObject(body) || isArray(body)) preparedBody = JSON.stringify(preparedBody) as Outcoming;\n }\n\n const response: Response | NodeResponse | undefined = await options.client(url, {\n method,\n body: preparedBody as BodyInit,\n headers: {\n ...(body instanceof FormData || !body\n ? {}\n : { \"Content-Type\": \"application/json; charset=UTF-8\" }),\n ...headers,\n },\n signal: request.signal,\n });\n\n await executePostMiddlewares(response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {\n if (RESPONSE_DATA_SYMBOL in response) result = response[RESPONSE_DATA_SYMBOL];\n }\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n headers: Object.fromEntries(response.headers.entries()),\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as T);\n }\n\n if (request.withoutResponse)\n return responseWithStatus\n ? {\n data: true as T,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (true as T);\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming;\n\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming;\n } else {\n result = (await response.blob()) as Incoming;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result)\n : (result as unknown as T);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<T> {\n return handleRequest(request, false) as Promise<T>;\n }\n\n async function requestApiWithMeta<T, Incoming = unknown, Body = unknown, Outcoming = unknown>(\n request: RequestInterface<T, Incoming, Body, Outcoming>,\n ): Promise<{ data: T; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: T;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import dayjs from 'dayjs';
2
+
3
+ function transformToDayjs(date) {
4
+ return dayjs(date);
5
+ }
6
+
7
+ export { transformToDayjs };
8
+ //# sourceMappingURL=transform-to-dayjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-to-dayjs.js","sources":["../../../../src/lib/date/transform-to-dayjs.ts"],"sourcesContent":["import dayjs, { type Dayjs } from \"dayjs\";\n\nexport function transformToDayjs(date: Date | string | number): Dayjs {\n return dayjs(date);\n}\n"],"names":[],"mappings":";;AAEM,SAAU,gBAAgB,CAAC,IAA4B,EAAA;AAC3D,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB;;;;"}
@@ -31,6 +31,8 @@ function limitStreamOfRequests({ countRequests, maxCountInParallel, promiseGette
31
31
  if (resultCb)
32
32
  resultCb(result);
33
33
  currentResponses++;
34
+ if (currentResponses === countRequests)
35
+ return void resolve(results);
34
36
  request(promiseGetter(++currentRequests), currentRequests);
35
37
  })
36
38
  .catch((error) => {
@@ -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 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;;;;"}
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 if (currentResponses === countRequests) return void resolve(results);\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;oBAClB,IAAI,gBAAgB,KAAK,aAAa;AAAE,wBAAA,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;oBAEpE,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
@@ -1,4 +1,5 @@
1
1
  import { Response as Response$1, Headers as Headers$1 } from 'node-fetch';
2
+ import { Dayjs } from 'dayjs';
2
3
 
3
4
  declare const DATE_TYPES: {
4
5
  readonly Days: "days";
@@ -135,6 +136,7 @@ type DateGetterRule = {
135
136
  increment: number;
136
137
  type: DateType;
137
138
  };
139
+ type DayJS = Dayjs;
138
140
 
139
141
  type FieldType = ValueOf<typeof FIELD_TYPES>;
140
142
 
@@ -145,14 +147,17 @@ type ResponseErrorOptions = {
145
147
  status: number;
146
148
  code?: number;
147
149
  description?: unknown;
150
+ headers?: Record<string, string>;
148
151
  };
149
152
  declare class ResponseError extends Error {
150
153
  status: number;
151
154
  code?: number;
152
155
  description?: unknown;
153
- constructor({ message, status, description, code }: ResponseErrorOptions);
156
+ headers?: Record<string, string>;
157
+ constructor({ message, status, description, code, headers }: ResponseErrorOptions);
154
158
  }
155
159
  type CreateRequestClientInstance = {
160
+ client: typeof fetch;
156
161
  activeMiddlewares?: ActiveMiddleware;
157
162
  middlewareOptions?: MiddlewaresOptions;
158
163
  customMiddlewares?: Middleware[];
@@ -164,14 +169,14 @@ type RequestInstance = {
164
169
  <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>): Promise<T>;
165
170
  setOptions: (options: CreateRequestClientInstance) => void;
166
171
  };
167
- declare function createRequestClientInstance(options?: CreateRequestClientInstance): {
172
+ declare function createRequestClientInstance(options: CreateRequestClientInstance): {
168
173
  requestApi: <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<T>;
169
174
  requestApiWithMeta: <T, Incoming = unknown, Body = unknown, Outcoming = unknown>(request: RequestInterface<T, Incoming, Body, Outcoming>) => Promise<{
170
175
  data: T;
171
176
  status: number;
172
177
  headers: Record<string, string>;
173
178
  }>;
174
- setMiddlewares: ({ activeMiddlewares, middlewareOptions, customMiddlewares, activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares, }?: CreateRequestClientInstance) => void;
179
+ setMiddlewares: ({ activeMiddlewares, middlewareOptions, customMiddlewares, activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares, }?: Omit<CreateRequestClientInstance, "client">) => void;
175
180
  };
176
181
 
177
182
  declare function updateAuthToken(options: AuthMiddleWareOptions): Promise<string | undefined>;
@@ -264,6 +269,8 @@ declare function isYesterday(date: Maybe<string | Date | number>): boolean;
264
269
 
265
270
  declare function dateFormat(date: Date | string | number, format: string): string;
266
271
 
272
+ declare function transformToDayjs(date: Date | string | number): Dayjs;
273
+
267
274
  declare const waitUntil: (condition: () => boolean, checkInterval?: number) => Promise<unknown>;
268
275
 
269
276
  declare function getByPath<T>(data: unknown, path?: string, defaultValue?: unknown): T;
@@ -344,4 +351,4 @@ declare function isUndefined(value: unknown): value is undefined;
344
351
 
345
352
  declare function isDate(value: unknown): value is Date;
346
353
 
347
- export { API_MIDDLEWARES, type ActiveMiddleware, type ActivePostMiddleware, type AuthMiddleWareOptions, type AuthNoRefreshMiddleWareOptions, type AuthTokenNoRefreshRequestOptions, type AuthTokenRequestOptions, type AuthUserRequestOptions, type AuthUserUpdateRequestOptions, COLOR_FORMATS, type ColorFormat, DATE_TYPES, type DateGetterRule, type DateType, FIELD_TYPES, type FieldType, IS_BROWSER, IS_BUN, IS_DENO, IS_JEST, IS_NODE, IS_WEB_WORKER, type LoggerMiddlewareOptions, type LoggerPostMiddlewareOptions, type Maybe, type Middleware, type MiddlewareType, type MiddlewaresOptions, POST_API_MIDDLEWARES, type ParamValueType, type ParamsType, type PositionPlacements, type PostMiddleware, type PostMiddlewareOptions, type PostMiddlewareType, type RequestInstance, type RequestInterface, type RequestMethod, ResponseError, type ValueOf, type VisiblePosition, arrayToMapByKey, buildQueryString, checkType, createRequestClientInstance, createURLWithParams, dateDifference, dateFormat, downloadFile, downloadJson, fieldViewFormat, getAuthToken, getAuthTokenNoRefresh, getAuthUser, getByPath, getCallerFunctionName, getColorFormat, getDateByRules, getFileNameFromHeader, getQueryValues, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, joinPaths, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, startWith, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToNumber, translit, trimUrl, updateAuthToken, updateAuthTokenNoRefresh, updateAuthUser, wait, waitUntil };
354
+ export { API_MIDDLEWARES, type ActiveMiddleware, type ActivePostMiddleware, type AuthMiddleWareOptions, type AuthNoRefreshMiddleWareOptions, type AuthTokenNoRefreshRequestOptions, type AuthTokenRequestOptions, type AuthUserRequestOptions, type AuthUserUpdateRequestOptions, COLOR_FORMATS, type ColorFormat, DATE_TYPES, type DateGetterRule, type DateType, type DayJS, FIELD_TYPES, type FieldType, IS_BROWSER, IS_BUN, IS_DENO, IS_JEST, IS_NODE, IS_WEB_WORKER, type LoggerMiddlewareOptions, type LoggerPostMiddlewareOptions, type Maybe, type Middleware, type MiddlewareType, type MiddlewaresOptions, POST_API_MIDDLEWARES, type ParamValueType, type ParamsType, type PositionPlacements, type PostMiddleware, type PostMiddlewareOptions, type PostMiddlewareType, type RequestInstance, type RequestInterface, type RequestMethod, ResponseError, type ValueOf, type VisiblePosition, arrayToMapByKey, buildQueryString, checkType, createRequestClientInstance, createURLWithParams, dateDifference, dateFormat, downloadFile, downloadJson, fieldViewFormat, getAuthToken, getAuthTokenNoRefresh, getAuthUser, getByPath, getCallerFunctionName, getColorFormat, getDateByRules, getFileNameFromHeader, getQueryValues, getRandomColor, getToday, getTomorrow, getVisiblePosition, getYesterday, isArray, isBoolean, isDate, isId, isNull, isNullable, isNumber, isObject, isString, isToday, isTomorrow, isUndefined, isYesterday, joinPaths, jsonParse, limitStreamOfRequests, randomNumber, randomString, readFile, setByPath, startWith, syncObjectValues, takeOpacityColors, transformHEXtoRGB, transformRGBAtoRGB, transformRGBtoRGBA, transformToColor, transformToDayjs, transformToNumber, translit, trimUrl, updateAuthToken, updateAuthTokenNoRefresh, updateAuthUser, wait, waitUntil };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krainovsd/js-helpers",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "Krainov helpers",
5
5
  "type": "module",
6
6
  "author": "KrainovSD <denislosev48@gmail.com>",