@krainovsd/js-helpers 0.19.0-beta.7 → 0.19.0-beta.9
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 +5 -4
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/esm/api/oauth.js +5 -4
- package/lib/esm/api/oauth.js.map +1 -1
- package/package.json +1 -1
package/lib/cjs/index.cjs
CHANGED
|
@@ -2126,8 +2126,8 @@ function executeAfterHandlers(handlers, request, response) {
|
|
|
2126
2126
|
function createOauthProvider(opts = {}) {
|
|
2127
2127
|
const { refreshTokenWindowUrl = window.origin, closeObserveSubWindowInterval = 500, waitSubWindow = 15000, loginUrl = undefined, logoutUrl = undefined, clearPageUrl = OAUTH_CLEAR_PAGE_URL, errorPageUrl = OAUTH_ERROR_PAGE_URL, logoutPageUrl = OAUTH_LOGOUT_PAGE_URL, afterClearPageUrl = "/", expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME, tokenStorageName = OAUTH_TOKEN_STORAGE_NAME, expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME, tokenRequest = undefined, forceSetToken = false, subWindow = true, refreshToken = false, } = opts;
|
|
2128
2128
|
let processing = false;
|
|
2129
|
-
function
|
|
2130
|
-
return Date.now() + (expires - 30);
|
|
2129
|
+
function getExpiresDate(expires) {
|
|
2130
|
+
return Date.now() + (expires - 30) * 1000;
|
|
2131
2131
|
}
|
|
2132
2132
|
function checkExpires(expires) {
|
|
2133
2133
|
return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;
|
|
@@ -2234,7 +2234,8 @@ function createOauthProvider(opts = {}) {
|
|
|
2234
2234
|
if (tokenInfo) {
|
|
2235
2235
|
localStorage.setItem(tokenStorageName, tokenInfo.token);
|
|
2236
2236
|
if (tokenInfo.expires !== 0) {
|
|
2237
|
-
|
|
2237
|
+
tokenInfo.expires = getExpiresDate(tokenInfo.expires);
|
|
2238
|
+
localStorage.setItem(expiresTokenStorageName, String(tokenInfo.expires));
|
|
2238
2239
|
}
|
|
2239
2240
|
}
|
|
2240
2241
|
return tokenInfo;
|
|
@@ -2272,7 +2273,7 @@ function createOauthProvider(opts = {}) {
|
|
|
2272
2273
|
? expiresQuery[expiresQuery.length - 1]
|
|
2273
2274
|
: null;
|
|
2274
2275
|
if (checkExpires(expires)) {
|
|
2275
|
-
localStorage.setItem(expiresTokenStorageName, expires);
|
|
2276
|
+
localStorage.setItem(expiresTokenStorageName, String(getExpiresDate(+expires)));
|
|
2276
2277
|
if (tokenRequest) {
|
|
2277
2278
|
const tokenInfo = await tokenRequest();
|
|
2278
2279
|
if (tokenInfo != undefined) {
|
package/lib/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/constants/errors.ts","../../src/constants/environment.ts","../../src/constants/index.ts","../../src/lib/utils/wait-until.ts","../../src/lib/date/date-difference.ts","../../src/lib/date/get-date-by-rules.ts","../../src/lib/date/get-today.ts","../../src/lib/date/is-today.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/typings/is-primitive.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/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-queries.ts","../../src/lib/utils/trim-url.ts","../../src/lib/utils/array-to-map-by-key.ts","../../src/lib/lodash/get-by-path.ts","../../src/lib/lodash/set-by-path.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/utils/speed-test.ts","../../src/lib/utils/create-global-id.ts","../../src/lib/utils/create-local-id-generator.ts","../../src/lib/utils/declination.ts","../../src/lib/utils/async-loop.ts","../../src/lib/utils/random-base64.ts","../../src/lib/utils/random-hex.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/browser/exec-animation.ts","../../src/lib/browser/copy-to-clipboard.ts","../../src/lib/browser/extract-queries.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","../../src/lib/lodash/type.ts","../../src/lib/lodash/clone-deep.ts","../../src/lib/lodash/debounce.ts","../../src/lib/lodash/difference.ts","../../src/lib/lodash/difference-by.ts","../../src/lib/lodash/difference-with.ts","../../src/lib/lodash/is-equal.ts","../../src/lib/lodash/throttle.ts","../../src/api/api.constants.ts","../../src/api/api.ts","../../src/api/oauth.ts","../../src/api/after/logger-after-handler.ts","../../src/api/before/logger-before-handler.ts"],"sourcesContent":["import type { RequestHeader } from \"../api\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n headers?: RequestHeader;\n};\n\nexport class ResponseError extends Error {\n status: number;\n code?: number;\n description?: unknown;\n headers?: RequestHeader;\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","/* 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 * from \"./errors\";\nexport * from \"./environment\";\n\nexport const COLOR_FORMATS = {\n Hex: \"HEX\",\n Rgb: \"RGB\",\n Rgba: \"RGBA\",\n Hsl: \"HSL\",\n} as const;\n\nexport 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\nexport 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","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","import type { Maybe } from \"../../types\";\n\nexport function isToday(date: Maybe<string | Date | number>) {\n if (date == undefined) return false;\n\n try {\n const checkedDate = new Date(date);\n const now = new Date();\n\n return (\n ((checkedDate.getFullYear() << 16) |\n (checkedDate.getMonth() << 8) |\n checkedDate.getDate()) ===\n ((now.getFullYear() << 16) | (now.getMonth() << 8) | now.getDate())\n );\n } catch {\n return false;\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","export function isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\n const type = typeof value;\n\n return value == undefined || (type != \"object\" && type != \"function\");\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 { 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\";\nexport function randomString(length: number = 16, 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 { RequestQuery } from \"../../api\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function buildQueryString(params: RequestQuery): 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 { RequestQuery } from \"../../api\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: RequestQuery;\n};\n\nexport function createURLWithQueries(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","/* eslint-disable max-depth */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { isArray, isObject, isString } from \"../typings\";\n\nconst startArray = \"[\".codePointAt(0)!;\nconst endArray = \"]\".codePointAt(0)!;\nconst separator = \".\".codePointAt(0)!;\nconst numbers = new Set(\n [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].map((n) => n.codePointAt(0)!),\n);\nexport function getByPath<T, D = undefined>(\n data: unknown,\n path: string | undefined,\n defaultValue?: D,\n): T | D {\n if (!isString(path) || (!isObject(data) && !isArray(data))) return defaultValue as D;\n\n let cursor = 0;\n let pathStart = 0;\n let arrayPathStart = -1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let extractedData: any = data;\n\n try {\n while (cursor < path.length) {\n const char = path.codePointAt(cursor)!;\n\n if (char === separator) {\n arrayPathStart = -1;\n if (pathStart === cursor) {\n pathStart++;\n } else {\n if (extractedData == undefined || typeof extractedData !== \"object\")\n return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, cursor)];\n\n pathStart = cursor + 1;\n }\n /** start array path if not started yet */\n } else if (char === startArray && arrayPathStart === -1) {\n arrayPathStart = cursor;\n /** end array if its started min 2 char ago */\n } else if (char === endArray && arrayPathStart !== -1 && cursor - arrayPathStart > 1) {\n /** before array was an object path */\n if (pathStart < arrayPathStart) {\n if (extractedData == undefined || typeof extractedData !== \"object\")\n return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, arrayPathStart)];\n }\n\n const index = +path.slice(arrayPathStart + 1, cursor);\n if (!Array.isArray(extractedData)) return defaultValue as D;\n extractedData = extractedData[index];\n\n arrayPathStart = -1;\n pathStart = cursor + 1;\n\n /** if array started but char is not number */\n } else if (arrayPathStart !== -1 && !numbers.has(char)) {\n arrayPathStart = -1;\n }\n cursor++;\n }\n\n if (pathStart < path.length) {\n if (extractedData == undefined || typeof extractedData !== \"object\") return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, cursor)];\n }\n } catch {\n return defaultValue as D;\n }\n\n if (extractedData === undefined) {\n return defaultValue as D;\n }\n\n return extractedData as T;\n}\n","/* eslint-disable max-depth */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { isArray, isObject } from \"../typings\";\nimport { isString } from \"../typings\";\n\nconst startArray = \"[\".codePointAt(0)!;\nconst endArray = \"]\".codePointAt(0)!;\nconst separator = \".\".codePointAt(0)!;\nconst numbers = new Set(\n [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].map((n) => n.codePointAt(0)!),\n);\nexport function setByPath(data: unknown, path: string | undefined, settableValue: unknown) {\n if (!isString(path) || (!isObject(data) && !isArray(data))) return false;\n\n let cursor = 0;\n let pathStart = 0;\n let arrayPathStart = -1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let extractedData: any = data;\n let prevPath: string | number | undefined;\n\n try {\n while (cursor < path.length) {\n const char = path.codePointAt(cursor)!;\n /** get */\n if (char === separator) {\n arrayPathStart = -1;\n if (pathStart === cursor) {\n pathStart++;\n } else {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n\n if (cursor === path.length - 1) {\n extractedData[path.slice(pathStart, cursor)] = settableValue;\n } else {\n const currentPath = path.slice(pathStart, cursor);\n const extractedValue = extractedData[currentPath];\n if (extractedValue == undefined) {\n prevPath = currentPath;\n } else {\n extractedData = extractedValue;\n }\n pathStart = cursor + 1;\n }\n }\n\n /** start array path if not started yet */\n } else if (char === startArray && arrayPathStart === -1) {\n arrayPathStart = cursor;\n /** end array if its started min 2 char ago */\n } else if (char === endArray && arrayPathStart !== -1 && cursor - arrayPathStart > 1) {\n /** before array was an object path */\n if (pathStart < arrayPathStart) {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n const currentPath = path.slice(pathStart, arrayPathStart);\n const extractedValue = extractedData[currentPath];\n if (extractedValue == undefined) {\n prevPath = currentPath;\n } else {\n extractedData = extractedValue;\n }\n }\n\n if (prevPath) {\n const array: unknown[] = [];\n extractedData[prevPath] = array;\n extractedData = array;\n }\n const index = +path.slice(arrayPathStart + 1, cursor);\n if (cursor === path.length - 1) {\n extractedData[index] = settableValue;\n } else {\n const extractedValue = extractedData[index];\n if (extractedValue == undefined) {\n prevPath = index;\n } else {\n extractedData = extractedValue;\n }\n }\n arrayPathStart = -1;\n pathStart = cursor + 1;\n\n /** if array started but char is not number */\n } else if (arrayPathStart !== -1 && !numbers.has(char)) {\n arrayPathStart = -1;\n }\n cursor++;\n }\n\n if (pathStart < path.length) {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n extractedData[path.slice(pathStart, cursor)] = settableValue;\n }\n } catch {\n return false;\n }\n\n return true;\n}\n","import { getByPath } from \"../lodash/get-by-path\";\nimport { setByPath } from \"../lodash/set-by-path\";\nimport { isUndefined } from \"../typings\";\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(\n min: number = Number.MIN_SAFE_INTEGER,\n max: number = Number.MAX_SAFE_INTEGER,\n) {\n min = Math.ceil(min);\n max = Math.floor(max + 1);\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 tryDelay?: 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 tryDelay = 1000,\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, reject) => {\n let requestsAmount = 0;\n let responsesAmount = 0;\n let requestInProgress = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(++requestsAmount);\n }\n\n function request(position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (responsesAmount === countRequests) return void resolve(results);\n if (position > countRequests) {\n if (requestInProgress === 0) {\n return void resolve(results);\n }\n\n return;\n }\n const promise = promiseGetter(position);\n requestInProgress++;\n Promise.resolve(promise)\n .then((result) => {\n requestInProgress--;\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n responsesAmount++;\n request(++requestsAmount);\n })\n .catch((error: unknown) => {\n requestInProgress--;\n if (errorCb) errorCb(error, position, tryCount);\n if (refetchAfterError && maxTryCount > tryCount) {\n return void wait(tryDelay).then(() => request(position, tryCount + 1));\n }\n if (throwError) {\n reject(error);\n }\n responsesAmount++;\n request(++requestsAmount);\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","const 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","type SpeedTestOptions = {\n name: string;\n iterations?: number;\n type?: \"time\" | \"performance\";\n};\n\nexport function speedTest<T>(cb: (i: number) => T, opts: SpeedTestOptions): T {\n const { name, iterations = 10000, type = \"performance\" } = opts;\n let result: T | undefined;\n\n if (type === \"performance\") {\n const start = performance.now();\n\n if (iterations <= 1) {\n result = cb(0);\n } else {\n for (let i = 0; i < iterations; i++) {\n result = cb(i);\n }\n }\n\n const end = performance.now();\n // eslint-disable-next-line no-console\n console.log(`${name}: `, end - start);\n } else {\n // eslint-disable-next-line no-console\n console.time(name);\n\n if (iterations <= 1) {\n result = cb(0);\n } else {\n for (let i = 0; i < iterations; i++) {\n result = cb(i);\n }\n }\n\n // eslint-disable-next-line no-console\n console.timeEnd(name);\n }\n\n return result as T;\n}\n","let id = 0;\n\nexport function createGlobalId() {\n return id++;\n}\n","import { createGlobalId } from \"./create-global-id\";\n\nexport function createLocalIdGenerator(): () => number {\n let localLastId = 0;\n const globalLastId = createGlobalId() << 14;\n\n return function generateId() {\n return (globalLastId | localLastId++) >>> 0;\n };\n}\n","export function declination(value: number, words: [string, string, string]) {\n value = Math.abs(value) % 100;\n const num = value % 10;\n if (value > 10 && value < 20) return words[2];\n if (num > 1 && num < 5) return words[1];\n if (num == 1) return words[0];\n\n return words[2];\n}\n","import { wait } from \"./wait\";\n\ntype AsyncLoopOptions = {\n syncOperations?: number;\n start?: number;\n};\nexport async function asyncLoop(\n cb: (index: number) => void,\n length: number,\n { start = 0, syncOperations = 10000 }: AsyncLoopOptions = {},\n) {\n let index = start;\n\n while (index < start + syncOperations && index < length) {\n cb(index);\n index++;\n }\n\n if (index < length) {\n await wait(0);\n\n return asyncLoop(cb, length, { start: index, syncOperations });\n }\n}\n","export function randomBase64(byteLength = 8) {\n const randomBytes = new Uint8Array(byteLength);\n window.crypto.getRandomValues(randomBytes);\n\n let binaryString = \"\";\n for (let i = 0; i < byteLength; i++) {\n binaryString += String.fromCharCode(randomBytes[i]);\n }\n\n return btoa(binaryString).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/[=]+$/, \"\");\n}\n","export function randomHex(byteLength = 8) {\n const randomBytes = new Uint8Array(byteLength);\n window.crypto.getRandomValues(randomBytes);\n\n let result = \"\";\n for (let i = 0; i < byteLength; i++) {\n result += randomBytes[i].toString(16).padStart(2, \"0\");\n }\n\n return result;\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","type XPositions = \"insideCenter\" | \"insideLeft\" | \"insideRight\" | \"right\" | \"left\";\ntype YPosition = \"insideCenter\" | \"insideTop\" | \"insideBottom\" | \"bottom\" | \"top\";\n\nexport 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 InitialVisiblePosition = {\n top: number;\n left: 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 initialPosition?: InitialPosition;\n visibleArea?: HTMLElement;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n nested?: 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 nested,\n}: GetVisiblePositionOptions): VisiblePosition {\n /** Viewport Variables */\n const totalHeight = document.body.scrollHeight;\n const totalWidth = document.body.scrollWidth;\n const viewport = visibleArea ?? document.body;\n const scrollTop = document.body.scrollTop;\n const scrollLeft = document.body.scrollLeft;\n const rect = viewport.getBoundingClientRect();\n const viewportWidth = viewport.clientWidth;\n const viewportHeight = viewport.clientHeight;\n const xStart = visibleArea ? viewport.offsetLeft - viewport.scrollLeft : Math.abs(rect.left);\n const xEnd = xStart + viewportWidth;\n const yStart = visibleArea ? viewport.offsetTop : Math.abs(rect.top);\n const yEnd = yStart + viewportHeight;\n\n /** Target Variables */\n let targetHeight = 0;\n let targetWidth = 0;\n let targetTopPosition = 0;\n let targetLeftPosition = 0;\n\n /** Not bounding because not need scale */\n const nodeHeight = node.clientHeight;\n const nodeWidth = node.clientWidth;\n\n if (initialPosition?.targetNode) {\n const { top, left, height, width } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = top + scrollTop;\n targetLeftPosition = left + scrollLeft;\n }\n if (initialPosition?.position) {\n if (initialPosition.position.x != undefined) {\n targetLeftPosition = initialPosition.position.x + scrollLeft;\n }\n if (initialPosition.position.y != undefined) {\n targetTopPosition = initialPosition.position.y + scrollTop;\n }\n if (initialPosition.position.height != undefined) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width != undefined) {\n targetWidth = initialPosition.position.width;\n }\n }\n\n /** Inherit Position */\n let inheritLeft = 0;\n let inheritTop = 0;\n let inheritHeight = 0;\n let inheritWidth = 0;\n if (nested) {\n const {\n left = 0,\n top = 0,\n height = 0,\n width = 0,\n } = node.parentElement?.getBoundingClientRect?.() ?? {};\n inheritLeft = left + scrollLeft;\n inheritTop = top + scrollTop;\n inheritHeight = height;\n inheritWidth = width;\n }\n\n /** Initial Position */\n const targetXCenter =\n targetWidth != undefined ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const targetYCenter =\n targetHeight != undefined ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n const targetYEnd =\n targetHeight != undefined ? targetTopPosition + targetHeight : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n insideCenter: targetXCenter - nodeWidth / 2 + stepX,\n insideRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n insideLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: targetYEnd + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n insideCenter: targetYCenter - nodeHeight / 2 + stepY,\n insideBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n insideTop: targetTopPosition + stepY,\n };\n /** Find visible position */\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 visiblePositions = processVisiblePositions({\n targetLeftPosition,\n targetTopPosition,\n x,\n y,\n placement,\n flex,\n nodeHeight,\n nodeWidth,\n xEnd,\n xStart,\n yEnd,\n yStart,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n });\n if (\n flex &&\n (!isCompletelyVisibleX(visiblePositions.left) || !isCompletelyVisibleY(visiblePositions.top))\n ) {\n visiblePositions = getFlexVisiblePosition({\n initialLeft: visiblePositions.left,\n initialTop: visiblePositions.top,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n visiblePositions.left -= inheritLeft;\n visiblePositions.top -= inheritTop;\n\n return {\n placement: visiblePositions.placement,\n left: visiblePositions.left,\n top: visiblePositions.top,\n bottom: nested\n ? inheritHeight - (visiblePositions.top + nodeHeight)\n : totalHeight - (visiblePositions.top + nodeHeight),\n right: nested\n ? inheritWidth - (visiblePositions.left + nodeWidth)\n : totalWidth - (visiblePositions.left + nodeWidth),\n };\n}\n\ntype ProcessVisiblePositions = {\n placement: Exclude<PositionPlacements, \"flex\">;\n x: Record<XPositions, number>;\n y: Record<YPosition, number>;\n targetLeftPosition: number;\n targetTopPosition: number;\n nodeWidth: number;\n nodeHeight: number;\n xStart: number;\n xEnd: number;\n yStart: number;\n yEnd: number;\n flex: boolean | undefined;\n isCompletelyVisibleX: (position: number) => boolean;\n isCompletelyVisibleY: (position: number) => boolean;\n};\nfunction processVisiblePositions(opts: ProcessVisiblePositions): InitialVisiblePosition {\n let correctLeft: number | null = opts.targetLeftPosition;\n let correctTop: number | null = opts.targetTopPosition;\n\n switch (opts.placement) {\n case \"bottom-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n placement: opts.placement,\n };\n }\n }\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): InitialVisiblePosition {\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 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","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function execAnimation(\n element: HTMLElement | null | undefined,\n className: string,\n autoCloseDelay: number = 700,\n) {\n return new Promise((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(true);\n\n return;\n }\n\n if (!element) {\n resolve(true);\n\n return;\n }\n\n const timerId = setTimeout(() => {\n resolve(true);\n }, autoCloseDelay);\n\n element.addEventListener(\n \"animationend\",\n () => {\n resolve(true);\n element?.classList?.remove?.(className);\n clearTimeout(timerId);\n },\n {\n once: true,\n },\n );\n element.classList.add(className);\n });\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function copyToClipboard(textToCopy: string) {\n return new Promise<boolean>((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(false);\n\n return;\n }\n\n try {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard\n .writeText(textToCopy)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n\n return;\n }\n\n const textArea = document.createElement(\"textarea\");\n textArea.value = textToCopy;\n textArea.style.position = \"fixed\";\n textArea.style.left = \"-999999px\";\n textArea.style.top = \"-999999px\";\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const result = document.execCommand(\"copy\");\n textArea.remove();\n\n resolve(result);\n } catch {\n resolve(false);\n }\n });\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function extractQueries() {\n const queryMap: Record<string, string[] | undefined> = {};\n if (!IS_BROWSER && !IS_JEST) return queryMap;\n\n const queryString = document.location.search;\n queryString\n .replace(/^\\?/, \"\")\n .split(\"&\")\n .forEach((query) => {\n const [key, value] = query.split(\"=\", 2);\n\n queryMap[key] ??= [];\n const prev = queryMap[key];\n prev.push(value);\n });\n\n return queryMap;\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","export function type(value: unknown) {\n return value === null\n ? \"Null\"\n : value === undefined\n ? \"Undefined\"\n : Object.prototype.toString.call(value).slice(8, -1);\n}\n","import { isPrimitive } from \"../typings\";\nimport { type } from \"./type\";\n\nexport function cloneDeep<T>(value: T): T {\n if (isPrimitive(value)) {\n return value;\n }\n\n function copy(copiedValue: object) {\n for (const key in value as object) {\n if (Object.hasOwn(value as object, key)) {\n (copiedValue as Record<string, unknown>)[key] = cloneDeep(\n (value as Record<string, unknown>)[key],\n );\n }\n }\n\n return copiedValue;\n }\n\n switch (type(value)) {\n case \"Object\":\n return copy(Object.create(Object.getPrototypeOf(value) as object) as object) as T;\n case \"Array\":\n return copy(Array((value as unknown[]).length)) as T;\n case \"Date\":\n return new Date((value as Date).valueOf()) as T;\n case \"RegExp\":\n return cloneRegExp(value as RegExp) as T;\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n return (value as Int8Array).slice() as T;\n default:\n return value;\n }\n}\n\nfunction cloneRegExp(pattern: RegExp) {\n return new RegExp(\n pattern.source,\n pattern.flags\n ? pattern.flags\n : (pattern.global ? \"g\" : \"\") +\n (pattern.ignoreCase ? \"i\" : \"\") +\n (pattern.multiline ? \"m\" : \"\") +\n (pattern.sticky ? \"y\" : \"\") +\n (pattern.unicode ? \"u\" : \"\") +\n (pattern.dotAll ? \"s\" : \"\"),\n );\n}\n","export function debounce<TArgs extends unknown[]>(\n func: (...args: TArgs) => unknown,\n delay: number,\n) {\n let timer: NodeJS.Timeout | undefined;\n let active = true;\n\n const debounced = (...args: TArgs) => {\n if (active) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n if (active) {\n func(...args);\n }\n timer = undefined;\n }, delay);\n } else {\n func(...args);\n }\n };\n debounced.isPending = () => {\n return timer !== undefined;\n };\n debounced.cancel = () => {\n active = false;\n };\n debounced.flush = (...args: TArgs) => {\n func(...args);\n };\n\n return debounced;\n}\n","export function difference<T extends string | number | boolean | null | undefined>(\n first: T[],\n second: T[],\n): T[] {\n let idx = 0;\n const out: T[] = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(second[i]);\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(first[idx])) {\n out[out.length] = first[idx];\n }\n idx += 1;\n }\n\n return out;\n}\n","export function differenceBy<T extends Record<string, unknown>>(\n first: T[],\n second: T[],\n key: keyof T,\n): T[] {\n let idx = 0;\n const out = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(second[i][key]);\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(first[idx][key])) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n\n return out;\n}\n","export function differenceWith<T = unknown>(\n first: T[],\n second: T[],\n extractPrimitive: (el: T) => string | number | boolean | undefined | null,\n): T[] {\n let idx = 0;\n const out = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(extractPrimitive(second[i]));\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(extractPrimitive(first[idx]))) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n\n return out;\n}\n","import { isObject } from \"../typings\";\n\nexport function isEqual(aVal: unknown, bVal: unknown) {\n if (aVal === bVal) return true;\n\n if (\n aVal == undefined ||\n bVal == undefined ||\n typeof aVal !== \"object\" ||\n typeof bVal !== \"object\"\n ) {\n return aVal === bVal;\n }\n\n if (aVal instanceof Date && bVal instanceof Date) {\n return aVal.getTime() === bVal.getTime();\n }\n\n if (aVal instanceof RegExp && bVal instanceof RegExp) {\n return aVal.toString() === bVal.toString();\n }\n\n if (aVal.constructor !== bVal.constructor) {\n return false;\n }\n\n if (Array.isArray(aVal) && Array.isArray(bVal)) {\n if (aVal.length !== bVal.length) return false;\n for (let i = 0; i < aVal.length; i++) {\n if (!isEqual(aVal[i], bVal[i])) return false;\n }\n\n return true;\n }\n\n if (isObject(aVal) && isObject(bVal)) {\n const keysA = Object.keys(aVal);\n const keysB = Object.keys(bVal);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!isEqual(aVal[key], bVal[key])) return false;\n }\n }\n\n return true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function throttle<TArgs extends any[]>(func: (...args: TArgs) => any, interval: number) {\n let ready = true;\n let timer: NodeJS.Timeout | undefined;\n\n const throttled = (...args: TArgs) => {\n if (!ready) return;\n func(...args);\n ready = false;\n timer = setTimeout(() => {\n ready = true;\n timer = undefined;\n }, interval);\n };\n\n throttled.isThrottled = () => {\n return timer !== undefined;\n };\n\n return throttled;\n}\n","export const RESPONSE_DATA_SYMBOL = Symbol(\"response data\");\nexport const REQUEST_ERROR = {\n Http: \"http\",\n Network: \"network\",\n Timeout: \"timeout\",\n Abort: \"abort\",\n Validation: \"validation\",\n Cache: \"cache\",\n Unknown: \"unknown\",\n Disabled: \"disabled\",\n} as const;\n\nclass OauthState {\n private _fetching: boolean = false;\n\n get fetching() {\n return this._fetching;\n }\n\n set fetching(value: boolean) {\n this._fetching = value;\n }\n}\nexport const OAUTH_STATE = new OauthState();\nexport const OAUTH_TOKEN_STORAGE_NAME = \"session_token\";\nexport const OAUTH_TOKEN_EXPIRES_STORAGE_NAME = \"session_token_expires\";\nexport const OAUTH_REFRESH_QUERY = \"only_session_refresh\";\nexport const OAUTH_ERROR_PAGE_URL = \"/error\";\nexport const OAUTH_CLEAR_PAGE_URL = \"/clear\";\nexport const OAUTH_LOGOUT_PAGE_URL = \"/logout\";\n","import type {\n HeadersInit,\n BodyInit as NodeBodyInit,\n RequestInfo as NodeRequestInfo,\n RequestInit as NodeRequestInit,\n Response as NodeResponse,\n} from \"node-fetch\";\nimport { IS_BROWSER, ResponseError } from \"../constants\";\nimport { createURLWithQueries, downloadFile, isArray, isString, wait } from \"../lib\";\nimport { REQUEST_ERROR, RESPONSE_DATA_SYMBOL } from \"./api.constants\";\nimport type {\n AfterHandler,\n BeforeHandler,\n CreateRequestClientInstance,\n RefetchAfterAuthFn,\n RequestError,\n RequestInterface,\n} from \"./api.types\";\n\nexport function createFetchClient(options: CreateRequestClientInstance) {\n let client:\n | ((url: URL | NodeRequestInfo, init?: NodeRequestInit) => Promise<NodeResponse>)\n | typeof fetch = options.client;\n let beforeHandlers: BeforeHandler[] | undefined = options.beforeHandlers;\n let afterHandlers: AfterHandler[] | undefined = options.afterHandlers;\n let retries: number[] | undefined = options.retries;\n let timeout: number | undefined = options.timeout;\n let refetchAfterAuthGlobal: RefetchAfterAuthFn | undefined = options.refetchAfterAuth;\n let enabled: boolean = options.enabled ?? true;\n\n function recreate(options: CreateRequestClientInstance) {\n if (\"client\" in options) {\n client = options.client;\n }\n if (\"beforeHandlers\" in options) {\n beforeHandlers = options.beforeHandlers;\n }\n if (\"afterHandlers\" in options) {\n afterHandlers = options.afterHandlers;\n }\n if (\"retries\" in options) {\n retries = options.retries;\n }\n if (\"timeout\" in options) {\n timeout = options.timeout;\n }\n if (\"refetchAfterAuth\" in options) {\n refetchAfterAuthGlobal = options.refetchAfterAuth;\n }\n if (\"enabled\" in options) {\n enabled = options.enabled ?? true;\n }\n }\n\n async function handleRequest<\n IncomingApi = unknown,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | {\n data: ResponseError;\n error: RequestError;\n response: Response | NodeResponse | null;\n }\n | { data: Incoming; error: null; response: Response | NodeResponse | null }\n > {\n if (!enabled) {\n return {\n response: null,\n data: new ResponseError({ message: \"requests disabled\", status: 0 }),\n error: REQUEST_ERROR.Disabled,\n };\n }\n\n const timeoutController = new AbortController();\n const requestController = new AbortController();\n const requestTimeout = request.timeout ?? timeout;\n const requestRetries = request.retries ?? retries;\n\n try {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const mock: unknown =\n typeof request.mock === \"function\" ? (request.mock as () => Incoming)() : request.mock;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(mock as IncomingApi)\n : (mock as Incoming);\n\n return { data: transformedResult, error: null, response: null };\n }\n\n if (requestTimeout != undefined && requestTimeout != 0) {\n setTimeout(() => {\n if (requestController.signal.aborted) return;\n timeoutController.abort();\n }, requestTimeout);\n timeoutController.signal.addEventListener(\"abort\", () => requestController.abort(), {\n once: true,\n signal: requestController.signal,\n });\n }\n if (request.signal) {\n request.signal.addEventListener(\"abort\", () => requestController.abort(), {\n once: true,\n signal: requestController.signal,\n });\n }\n\n {\n let handlers: BeforeHandler[] = [];\n if (request.beforeHandlers) {\n handlers = request.beforeHandlers;\n } else if (beforeHandlers) {\n handlers = beforeHandlers;\n }\n if (request.additionalBeforeHandlers) {\n handlers = handlers.concat(request.additionalBeforeHandlers);\n }\n\n if (handlers.length > 0) {\n await executeBeforeHandlers(handlers, request);\n }\n }\n\n const { method, body, path, queries, headers = {} } = request;\n let refetchAfterAuth: RefetchAfterAuthFn | undefined = refetchAfterAuthGlobal;\n if (\"refetchAfterAuth\" in request) {\n refetchAfterAuth = request.refetchAfterAuth;\n }\n\n const url = createURLWithQueries({ baseURL: path, params: queries });\n let [, requestContentType] =\n Object.entries(headers).find(([header]) => header.toLowerCase() === \"content-type\") ?? [];\n if (isArray(requestContentType)) {\n requestContentType = requestContentType[0];\n }\n\n let preparedBody: OutcomingApi = body as OutcomingApi;\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Outcoming);\n }\n\n if (\n requestContentType == undefined &&\n !(preparedBody instanceof FormData) &&\n preparedBody !== undefined &&\n !isString(preparedBody)\n ) {\n headers[\"content-type\"] = \"application/json; charset=UTF-8\";\n }\n\n if (\n ((requestContentType == undefined && !isString(preparedBody)) ||\n requestContentType?.toLowerCase()?.includes(\"json\")) &&\n preparedBody !== undefined &&\n !(preparedBody instanceof FormData)\n ) {\n preparedBody = JSON.stringify(preparedBody) as OutcomingApi;\n }\n const response: Response | NodeResponse | undefined = await client(url, {\n method,\n body: preparedBody as ((BodyInit | null) & NodeBodyInit) | undefined,\n headers: headers as globalThis.HeadersInit & HeadersInit,\n signal: requestController.signal as\n | (AbortSignal & NodeRequestInit[\"signal\"])\n | null\n | undefined,\n cache: request.cache,\n credentials: request.credentials,\n integrity: request.integrity,\n keepalive: request.keepalive,\n mode: request.mode,\n priority: request.priority,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n compress: request.compress,\n follow: request.follow,\n });\n\n {\n let handlers: AfterHandler[] = [];\n if (request.afterHandlers) {\n handlers = request.afterHandlers;\n } else if (afterHandlers) {\n handlers = afterHandlers;\n }\n if (request.additionalAfterHandlers) {\n handlers = handlers.concat(request.additionalAfterHandlers);\n }\n\n if (handlers.length > 0) {\n await executeAfterHandlers(handlers, request, response);\n }\n }\n\n if (!response.ok) {\n if (response.status === 304) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Cache,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n });\n request.onError?.(REQUEST_ERROR.Cache, error);\n\n return { data: error, error: REQUEST_ERROR.Cache, response };\n }\n /** if you need observe other than only 401 status, you can override some statuses in after handler middleware to 401 */\n if (response.status === 401 && refetchAfterAuth) {\n const newRequest = await refetchAfterAuth(request);\n\n return await handleRequest({ ...newRequest, refetchAfterAuth: false });\n }\n\n if (request.defaultResponse) {\n const defaultResponse: unknown =\n typeof request.defaultResponse === \"function\"\n ? (request.defaultResponse as () => Incoming)()\n : request.defaultResponse;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(defaultResponse as IncomingApi)\n : (defaultResponse as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response: null,\n };\n }\n if (requestRetries && requestRetries.length > 0) {\n await wait(requestRetries[0]);\n\n return await handleRequest({ ...request, retries: requestRetries.slice(1) });\n }\n\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (RESPONSE_DATA_SYMBOL in response) {\n result = response[RESPONSE_DATA_SYMBOL];\n } else if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {}\n\n const error = new ResponseError({\n status: response.status,\n message: REQUEST_ERROR.Http,\n description: result,\n headers: Object.fromEntries(response.headers.entries()),\n });\n request.onError?.(REQUEST_ERROR.Http, error);\n\n return {\n data: error,\n error: REQUEST_ERROR.Http,\n response,\n };\n }\n\n if (request.download) {\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) {\n console.warn(\"couldn't download file because content-type header is not exist\");\n } else if (!fileName) {\n console.warn(\"couldn't download file because content-disposition header is not exist\");\n }\n\n if (IS_BROWSER && mimeType && fileName)\n downloadFile({\n data: data as Blob,\n fileName,\n mimeType,\n });\n\n return {\n data: data as Incoming,\n error: null,\n response,\n };\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming | IncomingApi = undefined as Incoming | IncomingApi;\n\n if (RESPONSE_DATA_SYMBOL in response) {\n result = response[RESPONSE_DATA_SYMBOL] as Incoming | IncomingApi;\n } else if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming | IncomingApi;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming | IncomingApi;\n } else {\n result = (await response.blob()) as Incoming | IncomingApi;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result as IncomingApi)\n : (result as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response,\n };\n } catch (err: unknown) {\n if (request.defaultResponse) {\n const defaultResponse: unknown =\n typeof request.defaultResponse === \"function\"\n ? (request.defaultResponse as () => Incoming)()\n : request.defaultResponse;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(defaultResponse as IncomingApi)\n : (defaultResponse as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response: null,\n };\n }\n if (requestRetries && requestRetries.length > 0 && request?.signal?.aborted !== true) {\n await wait(requestRetries[0]);\n\n return await handleRequest({ ...request, retries: requestRetries.slice(1) });\n }\n\n if (err instanceof TypeError) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Network,\n status: 0,\n description: String(err.message),\n });\n request.onError?.(REQUEST_ERROR.Network, error);\n\n return { data: error, error: REQUEST_ERROR.Network, response: null };\n }\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (timeoutController.signal.aborted) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Timeout,\n status: 0,\n });\n request.onError?.(REQUEST_ERROR.Timeout, error);\n\n return { data: error, error: REQUEST_ERROR.Timeout, response: null };\n }\n\n const error = new ResponseError({\n message: REQUEST_ERROR.Abort,\n status: 0,\n });\n request.onError?.(REQUEST_ERROR.Abort, error);\n\n return { data: error, error: REQUEST_ERROR.Abort, response: null };\n }\n\n const error = new ResponseError({\n message: REQUEST_ERROR.Unknown,\n status: 0,\n description: String(err),\n });\n request.onError?.(REQUEST_ERROR.Unknown, error);\n\n return { data: error, error: REQUEST_ERROR.Unknown, response: null };\n } finally {\n requestController.abort();\n }\n }\n\n async function requestWithArrayResponse<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | [ResponseError, RequestError, Response | NodeResponse | null]\n | [Incoming, null, Response | NodeResponse | null]\n > {\n const response = await handleRequest(request);\n\n return [response.data, response.error, response.response] as\n | [ResponseError, RequestError, Response | NodeResponse | null]\n | [Incoming, null, Response | NodeResponse | null];\n }\n\n async function requestWithObjectResponse<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | {\n data: ResponseError;\n error: RequestError;\n response: Response | NodeResponse | null;\n }\n | { data: Incoming; error: null; response: Response | NodeResponse | null }\n > {\n return handleRequest(request);\n }\n\n return {\n requestWithArrayResponse,\n requestWithObjectResponse,\n recreate,\n };\n}\n\nfunction executeBeforeHandlers<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n>(\n handlers: BeforeHandler[],\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n) {\n return new Promise((resolve) => {\n void (async () => {\n for (const handler of handlers) {\n await handler(request);\n }\n\n resolve(1);\n })();\n });\n}\n\nfunction executeAfterHandlers<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n>(\n handlers: AfterHandler[],\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n response: Response | NodeResponse | undefined,\n) {\n return new Promise((resolve) => {\n void (async () => {\n for (const handler of handlers) {\n await handler(request, response);\n }\n\n resolve(1);\n })();\n });\n}\n","import { getQueryValues, isArray, isString, startWith, wait, waitUntil } from \"../lib\";\nimport {\n OAUTH_CLEAR_PAGE_URL,\n OAUTH_ERROR_PAGE_URL,\n OAUTH_LOGOUT_PAGE_URL,\n OAUTH_REFRESH_QUERY,\n OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n OAUTH_TOKEN_STORAGE_NAME,\n} from \"./api.constants\";\nimport type { OauthOptions, RequestInterface } from \"./api.types\";\n\nexport function createOauthProvider(opts: OauthOptions = {}) {\n const {\n refreshTokenWindowUrl = window.origin,\n closeObserveSubWindowInterval = 500,\n waitSubWindow = 15000,\n loginUrl = undefined,\n logoutUrl = undefined,\n clearPageUrl = OAUTH_CLEAR_PAGE_URL,\n errorPageUrl = OAUTH_ERROR_PAGE_URL,\n logoutPageUrl = OAUTH_LOGOUT_PAGE_URL,\n afterClearPageUrl = \"/\",\n expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenStorageName = OAUTH_TOKEN_STORAGE_NAME,\n expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenRequest = undefined,\n forceSetToken = false,\n subWindow = true,\n refreshToken = false,\n } = opts;\n let processing = false;\n\n function getExpires(expires: number) {\n return Date.now() + (expires - 30);\n }\n function checkExpires(expires: null | undefined | string | number): expires is number | string {\n return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;\n }\n\n async function refetchAfterRefreshFlow<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>> {\n if (processing) {\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = true;\n if (refreshToken && tokenRequest) {\n const tokenInfo = await startRefreshFlow();\n if (tokenInfo == undefined) {\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n\n async function startLoginFlowInSubWindow() {\n processing = true;\n let waiting = true;\n const url = new URL(\n typeof refreshTokenWindowUrl === \"function\" ? refreshTokenWindowUrl() : refreshTokenWindowUrl,\n );\n // added only refresh tag to autoclose window after flow\n url.searchParams.append(OAUTH_REFRESH_QUERY, \"true\");\n\n // try open window with both of action\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n windowInstance ??= window.open(url.toString(), \"_blank\");\n\n if (windowInstance) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n const windowCloseObserver = setInterval(() => {\n if (windowInstance.closed) {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n }\n }, closeObserveSubWindowInterval);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, waitSubWindow);\n } else {\n if (\"onSubWindowOpenError\" in opts) opts.onSubWindowOpenError?.();\n else {\n await startLoginFlow();\n }\n waiting = false;\n\n return;\n }\n\n await waitUntil(() => waiting);\n processing = false;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLoginFlow(\n loginUrlArg: (() => string) | string | undefined = loginUrl,\n delay: number = 2000,\n ) {\n loginUrlArg ??= `/api/v1/auth?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}&comeback_path=${window.location.pathname}${encodeURIComponent(window.location.search)}`;\n window.location.replace(typeof loginUrlArg === \"function\" ? loginUrlArg() : loginUrlArg);\n await wait(delay);\n return null;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLogoutFlow(\n logoutUrlArg: (() => string) | string | undefined = logoutUrl,\n delay: number = 2000,\n ) {\n logoutUrlArg ??= `/api/v1/auth/logout?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}`;\n window.location.replace(typeof logoutUrlArg === \"function\" ? logoutUrlArg() : logoutUrlArg);\n await wait(delay);\n return null;\n }\n\n async function startRefreshFlow() {\n const tokenInfo = await tokenRequest?.();\n if (tokenInfo) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n if (tokenInfo.expires !== 0) {\n localStorage.setItem(expiresTokenStorageName, String(getExpires(tokenInfo.expires)));\n }\n }\n return tokenInfo;\n }\n\n // Processing an oauth flow: extract expires, get token, close sub windows, check if logout/clear/error url\n async function register(): Promise<boolean> {\n if (window.location.pathname === logoutPageUrl) {\n await startLogoutFlow();\n return false;\n }\n if (window.location.pathname === clearPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n window.location.replace(afterClearPageUrl);\n return false;\n }\n if (window.location.pathname === errorPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n return false;\n }\n\n const queries = getQueryValues([expiresTokenQueryName, OAUTH_REFRESH_QUERY]);\n\n const refreshQuery = queries?.[OAUTH_REFRESH_QUERY];\n const expiresQuery = queries?.[expiresTokenQueryName];\n\n /** Is OnlyRefresh window */\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : null;\n /** Expires token */\n const expires = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : null;\n\n if (checkExpires(expires)) {\n localStorage.setItem(expiresTokenStorageName, expires);\n if (tokenRequest) {\n const tokenInfo = await tokenRequest();\n if (tokenInfo != undefined) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n }\n }\n\n /** Close if OnlyRefresh window */\n if (isRefresh) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n channel.postMessage(true);\n channel.close();\n window.close();\n return false;\n }\n\n /** Delete expires query */\n const url = new URL(window.location.href);\n url.searchParams.delete(expiresTokenQueryName);\n window.location.replace(url.toString());\n return false;\n }\n\n return true;\n }\n\n async function beforeHandlerCheckExpires<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n const expires = localStorage.getItem(expiresTokenStorageName);\n if (checkExpires(expires)) {\n return;\n }\n await refetchAfterRefreshFlow(request);\n }\n\n async function beforeHandlerSetToken<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n if (processing) await waitUntil(() => processing);\n\n const token = request.token ?? localStorage.getItem(tokenStorageName);\n const isSameOrigin =\n request.path.includes(window.location.origin) || !startWith(request.path, \"http\");\n if ((!isSameOrigin || forceSetToken) && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n return {\n startRefreshFlow,\n startLoginFlowInSubWindow,\n startLoginFlow,\n startLogoutFlow,\n refetchAfterRefreshFlow,\n beforeHandlerSetToken,\n beforeHandlerCheckExpires,\n register,\n get isServicePage() {\n return [errorPageUrl, clearPageUrl, logoutPageUrl].some(\n (u) => document.location.pathname === u,\n );\n },\n get processing() {\n return processing;\n },\n get token() {\n return localStorage.getItem(tokenStorageName);\n },\n get expires() {\n const expires = localStorage.getItem(expiresTokenStorageName);\n return expires == undefined ? null : Number.isNaN(+expires) ? null : +expires;\n },\n get expired() {\n const expiresStr = localStorage.getItem(expiresTokenStorageName);\n const expires =\n expiresStr == undefined ? null : Number.isNaN(+expiresStr) ? null : +expiresStr;\n return expires == undefined ? true : Date.now() > expires;\n },\n };\n}\n","/* eslint-disable no-console */\nimport type { Headers as NodeHeaders, Response as NodeResponse } from \"node-fetch\";\nimport { RESPONSE_DATA_SYMBOL } from \"../api.constants\";\nimport type { AfterHandler } from \"../api.types\";\n\nexport type LoggerAfterHandlerOptions = {\n filter?: (response: Response | NodeResponse | undefined) => boolean;\n filterStatus?: (status: number) => boolean;\n filterUrl?: (url: string) => boolean;\n filterHeaders?: (headers: Headers | NodeHeaders) => boolean;\n};\n\nexport function loggerAfterHandler(options: LoggerAfterHandlerOptions = {}): AfterHandler {\n return (request, 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();\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();\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve();\n }\n })().finally(() => {\n resolve();\n });\n });\n };\n}\n","import type {\n BeforeHandler,\n RequestHeader,\n RequestInterface,\n RequestMethod,\n RequestQuery,\n} from \"../api.types\";\n\nexport type LoggerBeforeHandlerOptions = {\n filter?: (request: RequestInterface<unknown, unknown, unknown, unknown>) => boolean;\n filterPath?: (path: string) => boolean;\n filterMethod?: (method: RequestMethod) => boolean;\n filterParams?: (params?: RequestQuery) => boolean;\n filterHeaders?: (headers?: RequestHeader) => boolean;\n};\n\nexport function loggerBeforeHandler(options: LoggerBeforeHandlerOptions = {}): BeforeHandler {\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.queries)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve();\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve();\n });\n };\n}\n"],"names":["startArray","endArray","separator","numbers"],"mappings":"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,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,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/constants/errors.ts","../../src/constants/environment.ts","../../src/constants/index.ts","../../src/lib/utils/wait-until.ts","../../src/lib/date/date-difference.ts","../../src/lib/date/get-date-by-rules.ts","../../src/lib/date/get-today.ts","../../src/lib/date/is-today.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/typings/is-primitive.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/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-queries.ts","../../src/lib/utils/trim-url.ts","../../src/lib/utils/array-to-map-by-key.ts","../../src/lib/lodash/get-by-path.ts","../../src/lib/lodash/set-by-path.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/utils/speed-test.ts","../../src/lib/utils/create-global-id.ts","../../src/lib/utils/create-local-id-generator.ts","../../src/lib/utils/declination.ts","../../src/lib/utils/async-loop.ts","../../src/lib/utils/random-base64.ts","../../src/lib/utils/random-hex.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/browser/exec-animation.ts","../../src/lib/browser/copy-to-clipboard.ts","../../src/lib/browser/extract-queries.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","../../src/lib/lodash/type.ts","../../src/lib/lodash/clone-deep.ts","../../src/lib/lodash/debounce.ts","../../src/lib/lodash/difference.ts","../../src/lib/lodash/difference-by.ts","../../src/lib/lodash/difference-with.ts","../../src/lib/lodash/is-equal.ts","../../src/lib/lodash/throttle.ts","../../src/api/api.constants.ts","../../src/api/api.ts","../../src/api/oauth.ts","../../src/api/after/logger-after-handler.ts","../../src/api/before/logger-before-handler.ts"],"sourcesContent":["import type { RequestHeader } from \"../api\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n headers?: RequestHeader;\n};\n\nexport class ResponseError extends Error {\n status: number;\n code?: number;\n description?: unknown;\n headers?: RequestHeader;\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","/* 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 * from \"./errors\";\nexport * from \"./environment\";\n\nexport const COLOR_FORMATS = {\n Hex: \"HEX\",\n Rgb: \"RGB\",\n Rgba: \"RGBA\",\n Hsl: \"HSL\",\n} as const;\n\nexport 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\nexport 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","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","import type { Maybe } from \"../../types\";\n\nexport function isToday(date: Maybe<string | Date | number>) {\n if (date == undefined) return false;\n\n try {\n const checkedDate = new Date(date);\n const now = new Date();\n\n return (\n ((checkedDate.getFullYear() << 16) |\n (checkedDate.getMonth() << 8) |\n checkedDate.getDate()) ===\n ((now.getFullYear() << 16) | (now.getMonth() << 8) | now.getDate())\n );\n } catch {\n return false;\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","export function isPrimitive(value: unknown): value is string | number | boolean | null | undefined {\n const type = typeof value;\n\n return value == undefined || (type != \"object\" && type != \"function\");\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 { 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\";\nexport function randomString(length: number = 16, 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 { RequestQuery } from \"../../api\";\nimport { isArray, isObject } from \"../typings\";\n\nexport function buildQueryString(params: RequestQuery): 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 { RequestQuery } from \"../../api\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: RequestQuery;\n};\n\nexport function createURLWithQueries(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","/* eslint-disable max-depth */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { isArray, isObject, isString } from \"../typings\";\n\nconst startArray = \"[\".codePointAt(0)!;\nconst endArray = \"]\".codePointAt(0)!;\nconst separator = \".\".codePointAt(0)!;\nconst numbers = new Set(\n [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].map((n) => n.codePointAt(0)!),\n);\nexport function getByPath<T, D = undefined>(\n data: unknown,\n path: string | undefined,\n defaultValue?: D,\n): T | D {\n if (!isString(path) || (!isObject(data) && !isArray(data))) return defaultValue as D;\n\n let cursor = 0;\n let pathStart = 0;\n let arrayPathStart = -1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let extractedData: any = data;\n\n try {\n while (cursor < path.length) {\n const char = path.codePointAt(cursor)!;\n\n if (char === separator) {\n arrayPathStart = -1;\n if (pathStart === cursor) {\n pathStart++;\n } else {\n if (extractedData == undefined || typeof extractedData !== \"object\")\n return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, cursor)];\n\n pathStart = cursor + 1;\n }\n /** start array path if not started yet */\n } else if (char === startArray && arrayPathStart === -1) {\n arrayPathStart = cursor;\n /** end array if its started min 2 char ago */\n } else if (char === endArray && arrayPathStart !== -1 && cursor - arrayPathStart > 1) {\n /** before array was an object path */\n if (pathStart < arrayPathStart) {\n if (extractedData == undefined || typeof extractedData !== \"object\")\n return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, arrayPathStart)];\n }\n\n const index = +path.slice(arrayPathStart + 1, cursor);\n if (!Array.isArray(extractedData)) return defaultValue as D;\n extractedData = extractedData[index];\n\n arrayPathStart = -1;\n pathStart = cursor + 1;\n\n /** if array started but char is not number */\n } else if (arrayPathStart !== -1 && !numbers.has(char)) {\n arrayPathStart = -1;\n }\n cursor++;\n }\n\n if (pathStart < path.length) {\n if (extractedData == undefined || typeof extractedData !== \"object\") return defaultValue as D;\n extractedData = extractedData[path.slice(pathStart, cursor)];\n }\n } catch {\n return defaultValue as D;\n }\n\n if (extractedData === undefined) {\n return defaultValue as D;\n }\n\n return extractedData as T;\n}\n","/* eslint-disable max-depth */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { isArray, isObject } from \"../typings\";\nimport { isString } from \"../typings\";\n\nconst startArray = \"[\".codePointAt(0)!;\nconst endArray = \"]\".codePointAt(0)!;\nconst separator = \".\".codePointAt(0)!;\nconst numbers = new Set(\n [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"].map((n) => n.codePointAt(0)!),\n);\nexport function setByPath(data: unknown, path: string | undefined, settableValue: unknown) {\n if (!isString(path) || (!isObject(data) && !isArray(data))) return false;\n\n let cursor = 0;\n let pathStart = 0;\n let arrayPathStart = -1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let extractedData: any = data;\n let prevPath: string | number | undefined;\n\n try {\n while (cursor < path.length) {\n const char = path.codePointAt(cursor)!;\n /** get */\n if (char === separator) {\n arrayPathStart = -1;\n if (pathStart === cursor) {\n pathStart++;\n } else {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n\n if (cursor === path.length - 1) {\n extractedData[path.slice(pathStart, cursor)] = settableValue;\n } else {\n const currentPath = path.slice(pathStart, cursor);\n const extractedValue = extractedData[currentPath];\n if (extractedValue == undefined) {\n prevPath = currentPath;\n } else {\n extractedData = extractedValue;\n }\n pathStart = cursor + 1;\n }\n }\n\n /** start array path if not started yet */\n } else if (char === startArray && arrayPathStart === -1) {\n arrayPathStart = cursor;\n /** end array if its started min 2 char ago */\n } else if (char === endArray && arrayPathStart !== -1 && cursor - arrayPathStart > 1) {\n /** before array was an object path */\n if (pathStart < arrayPathStart) {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n const currentPath = path.slice(pathStart, arrayPathStart);\n const extractedValue = extractedData[currentPath];\n if (extractedValue == undefined) {\n prevPath = currentPath;\n } else {\n extractedData = extractedValue;\n }\n }\n\n if (prevPath) {\n const array: unknown[] = [];\n extractedData[prevPath] = array;\n extractedData = array;\n }\n const index = +path.slice(arrayPathStart + 1, cursor);\n if (cursor === path.length - 1) {\n extractedData[index] = settableValue;\n } else {\n const extractedValue = extractedData[index];\n if (extractedValue == undefined) {\n prevPath = index;\n } else {\n extractedData = extractedValue;\n }\n }\n arrayPathStart = -1;\n pathStart = cursor + 1;\n\n /** if array started but char is not number */\n } else if (arrayPathStart !== -1 && !numbers.has(char)) {\n arrayPathStart = -1;\n }\n cursor++;\n }\n\n if (pathStart < path.length) {\n if (prevPath) {\n const object = {};\n extractedData[prevPath] = object;\n extractedData = object;\n }\n extractedData[path.slice(pathStart, cursor)] = settableValue;\n }\n } catch {\n return false;\n }\n\n return true;\n}\n","import { getByPath } from \"../lodash/get-by-path\";\nimport { setByPath } from \"../lodash/set-by-path\";\nimport { isUndefined } from \"../typings\";\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(\n min: number = Number.MIN_SAFE_INTEGER,\n max: number = Number.MAX_SAFE_INTEGER,\n) {\n min = Math.ceil(min);\n max = Math.floor(max + 1);\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 tryDelay?: 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 tryDelay = 1000,\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, reject) => {\n let requestsAmount = 0;\n let responsesAmount = 0;\n let requestInProgress = 0;\n const results: T[] = [];\n\n for (let i = 0; i < maxCountInParallel; i++) {\n request(++requestsAmount);\n }\n\n function request(position: number, tryCount: number = 1) {\n if (isStopped) return void resolve(results);\n if (responsesAmount === countRequests) return void resolve(results);\n if (position > countRequests) {\n if (requestInProgress === 0) {\n return void resolve(results);\n }\n\n return;\n }\n const promise = promiseGetter(position);\n requestInProgress++;\n Promise.resolve(promise)\n .then((result) => {\n requestInProgress--;\n if (collectResult) results.push(result);\n if (resultCb) resultCb(result);\n responsesAmount++;\n request(++requestsAmount);\n })\n .catch((error: unknown) => {\n requestInProgress--;\n if (errorCb) errorCb(error, position, tryCount);\n if (refetchAfterError && maxTryCount > tryCount) {\n return void wait(tryDelay).then(() => request(position, tryCount + 1));\n }\n if (throwError) {\n reject(error);\n }\n responsesAmount++;\n request(++requestsAmount);\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","const 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","type SpeedTestOptions = {\n name: string;\n iterations?: number;\n type?: \"time\" | \"performance\";\n};\n\nexport function speedTest<T>(cb: (i: number) => T, opts: SpeedTestOptions): T {\n const { name, iterations = 10000, type = \"performance\" } = opts;\n let result: T | undefined;\n\n if (type === \"performance\") {\n const start = performance.now();\n\n if (iterations <= 1) {\n result = cb(0);\n } else {\n for (let i = 0; i < iterations; i++) {\n result = cb(i);\n }\n }\n\n const end = performance.now();\n // eslint-disable-next-line no-console\n console.log(`${name}: `, end - start);\n } else {\n // eslint-disable-next-line no-console\n console.time(name);\n\n if (iterations <= 1) {\n result = cb(0);\n } else {\n for (let i = 0; i < iterations; i++) {\n result = cb(i);\n }\n }\n\n // eslint-disable-next-line no-console\n console.timeEnd(name);\n }\n\n return result as T;\n}\n","let id = 0;\n\nexport function createGlobalId() {\n return id++;\n}\n","import { createGlobalId } from \"./create-global-id\";\n\nexport function createLocalIdGenerator(): () => number {\n let localLastId = 0;\n const globalLastId = createGlobalId() << 14;\n\n return function generateId() {\n return (globalLastId | localLastId++) >>> 0;\n };\n}\n","export function declination(value: number, words: [string, string, string]) {\n value = Math.abs(value) % 100;\n const num = value % 10;\n if (value > 10 && value < 20) return words[2];\n if (num > 1 && num < 5) return words[1];\n if (num == 1) return words[0];\n\n return words[2];\n}\n","import { wait } from \"./wait\";\n\ntype AsyncLoopOptions = {\n syncOperations?: number;\n start?: number;\n};\nexport async function asyncLoop(\n cb: (index: number) => void,\n length: number,\n { start = 0, syncOperations = 10000 }: AsyncLoopOptions = {},\n) {\n let index = start;\n\n while (index < start + syncOperations && index < length) {\n cb(index);\n index++;\n }\n\n if (index < length) {\n await wait(0);\n\n return asyncLoop(cb, length, { start: index, syncOperations });\n }\n}\n","export function randomBase64(byteLength = 8) {\n const randomBytes = new Uint8Array(byteLength);\n window.crypto.getRandomValues(randomBytes);\n\n let binaryString = \"\";\n for (let i = 0; i < byteLength; i++) {\n binaryString += String.fromCharCode(randomBytes[i]);\n }\n\n return btoa(binaryString).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/[=]+$/, \"\");\n}\n","export function randomHex(byteLength = 8) {\n const randomBytes = new Uint8Array(byteLength);\n window.crypto.getRandomValues(randomBytes);\n\n let result = \"\";\n for (let i = 0; i < byteLength; i++) {\n result += randomBytes[i].toString(16).padStart(2, \"0\");\n }\n\n return result;\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","type XPositions = \"insideCenter\" | \"insideLeft\" | \"insideRight\" | \"right\" | \"left\";\ntype YPosition = \"insideCenter\" | \"insideTop\" | \"insideBottom\" | \"bottom\" | \"top\";\n\nexport 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 InitialVisiblePosition = {\n top: number;\n left: 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 initialPosition?: InitialPosition;\n visibleArea?: HTMLElement;\n placement?: Exclude<PositionPlacements, \"flex\">;\n stepX?: number;\n stepY?: number;\n flex?: boolean;\n nested?: 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 nested,\n}: GetVisiblePositionOptions): VisiblePosition {\n /** Viewport Variables */\n const totalHeight = document.body.scrollHeight;\n const totalWidth = document.body.scrollWidth;\n const viewport = visibleArea ?? document.body;\n const scrollTop = document.body.scrollTop;\n const scrollLeft = document.body.scrollLeft;\n const rect = viewport.getBoundingClientRect();\n const viewportWidth = viewport.clientWidth;\n const viewportHeight = viewport.clientHeight;\n const xStart = visibleArea ? viewport.offsetLeft - viewport.scrollLeft : Math.abs(rect.left);\n const xEnd = xStart + viewportWidth;\n const yStart = visibleArea ? viewport.offsetTop : Math.abs(rect.top);\n const yEnd = yStart + viewportHeight;\n\n /** Target Variables */\n let targetHeight = 0;\n let targetWidth = 0;\n let targetTopPosition = 0;\n let targetLeftPosition = 0;\n\n /** Not bounding because not need scale */\n const nodeHeight = node.clientHeight;\n const nodeWidth = node.clientWidth;\n\n if (initialPosition?.targetNode) {\n const { top, left, height, width } = initialPosition.targetNode.getBoundingClientRect();\n targetHeight = height;\n targetWidth = width;\n targetTopPosition = top + scrollTop;\n targetLeftPosition = left + scrollLeft;\n }\n if (initialPosition?.position) {\n if (initialPosition.position.x != undefined) {\n targetLeftPosition = initialPosition.position.x + scrollLeft;\n }\n if (initialPosition.position.y != undefined) {\n targetTopPosition = initialPosition.position.y + scrollTop;\n }\n if (initialPosition.position.height != undefined) {\n targetHeight = initialPosition.position.height;\n }\n if (initialPosition.position.width != undefined) {\n targetWidth = initialPosition.position.width;\n }\n }\n\n /** Inherit Position */\n let inheritLeft = 0;\n let inheritTop = 0;\n let inheritHeight = 0;\n let inheritWidth = 0;\n if (nested) {\n const {\n left = 0,\n top = 0,\n height = 0,\n width = 0,\n } = node.parentElement?.getBoundingClientRect?.() ?? {};\n inheritLeft = left + scrollLeft;\n inheritTop = top + scrollTop;\n inheritHeight = height;\n inheritWidth = width;\n }\n\n /** Initial Position */\n const targetXCenter =\n targetWidth != undefined ? targetLeftPosition + targetWidth / 2 : targetLeftPosition;\n const targetYCenter =\n targetHeight != undefined ? targetTopPosition + targetHeight / 2 : targetTopPosition;\n const targetYEnd =\n targetHeight != undefined ? targetTopPosition + targetHeight : targetTopPosition;\n\n const x: Record<XPositions, number> = {\n insideCenter: targetXCenter - nodeWidth / 2 + stepX,\n insideRight: targetLeftPosition + targetWidth + stepX - nodeWidth,\n insideLeft: targetLeftPosition + stepX,\n left: targetLeftPosition - nodeWidth - stepX,\n right: targetLeftPosition + targetWidth + stepX,\n };\n\n const y: Record<YPosition, number> = {\n bottom: targetYEnd + stepY,\n top: targetTopPosition - stepY - nodeHeight,\n insideCenter: targetYCenter - nodeHeight / 2 + stepY,\n insideBottom: targetTopPosition + targetHeight - nodeHeight + stepY,\n insideTop: targetTopPosition + stepY,\n };\n /** Find visible position */\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 visiblePositions = processVisiblePositions({\n targetLeftPosition,\n targetTopPosition,\n x,\n y,\n placement,\n flex,\n nodeHeight,\n nodeWidth,\n xEnd,\n xStart,\n yEnd,\n yStart,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n });\n if (\n flex &&\n (!isCompletelyVisibleX(visiblePositions.left) || !isCompletelyVisibleY(visiblePositions.top))\n ) {\n visiblePositions = getFlexVisiblePosition({\n initialLeft: visiblePositions.left,\n initialTop: visiblePositions.top,\n isCompletelyVisibleX,\n isCompletelyVisibleY,\n nodeHeight,\n nodeWidth,\n xEnd,\n yEnd,\n });\n }\n\n visiblePositions.left -= inheritLeft;\n visiblePositions.top -= inheritTop;\n\n return {\n placement: visiblePositions.placement,\n left: visiblePositions.left,\n top: visiblePositions.top,\n bottom: nested\n ? inheritHeight - (visiblePositions.top + nodeHeight)\n : totalHeight - (visiblePositions.top + nodeHeight),\n right: nested\n ? inheritWidth - (visiblePositions.left + nodeWidth)\n : totalWidth - (visiblePositions.left + nodeWidth),\n };\n}\n\ntype ProcessVisiblePositions = {\n placement: Exclude<PositionPlacements, \"flex\">;\n x: Record<XPositions, number>;\n y: Record<YPosition, number>;\n targetLeftPosition: number;\n targetTopPosition: number;\n nodeWidth: number;\n nodeHeight: number;\n xStart: number;\n xEnd: number;\n yStart: number;\n yEnd: number;\n flex: boolean | undefined;\n isCompletelyVisibleX: (position: number) => boolean;\n isCompletelyVisibleY: (position: number) => boolean;\n};\nfunction processVisiblePositions(opts: ProcessVisiblePositions): InitialVisiblePosition {\n let correctLeft: number | null = opts.targetLeftPosition;\n let correctTop: number | null = opts.targetTopPosition;\n\n switch (opts.placement) {\n case \"bottom-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-center\";\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"bottom-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"bottom-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.bottom;\n let placement: PositionPlacements = \"bottom-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"bottom-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"bottom-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.top)) {\n placement = placement.replace(\"bottom\", \"top\") as PositionPlacements;\n correctTop = opts.y.top;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-bottom\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"right-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-center\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"right-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"right-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"right-top\": {\n correctLeft = opts.x.right;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"right-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"right-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"right-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.left)) {\n placement = placement.replace(\"right\", \"left\") as PositionPlacements;\n correctLeft = opts.x.left;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-center\": {\n correctLeft = opts.x.insideCenter;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-center\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-left\": {\n correctLeft = opts.x.insideLeft;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-left\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideRight)) {\n placement = \"top-right\";\n correctLeft = opts.x.insideRight;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"top-right\": {\n correctLeft = opts.x.insideRight;\n correctTop = opts.y.top;\n let placement: PositionPlacements = \"top-right\";\n\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.insideCenter)) {\n placement = \"top-center\";\n correctLeft = opts.x.insideCenter;\n } else if (opts.isCompletelyVisibleX(opts.x.insideLeft)) {\n placement = \"top-left\";\n correctLeft = opts.x.insideLeft;\n }\n }\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.bottom)) {\n placement = placement.replace(\"top\", \"bottom\") as PositionPlacements;\n correctTop = opts.y.bottom;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-bottom\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideBottom;\n let placement: PositionPlacements = \"left-bottom\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-center\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideCenter;\n let placement: PositionPlacements = \"left-center\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideTop)) {\n placement = \"left-top\";\n correctTop = opts.y.insideTop;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n case \"left-top\": {\n correctLeft = opts.x.left;\n correctTop = opts.y.insideTop;\n let placement: PositionPlacements = \"left-top\";\n\n if (!opts.isCompletelyVisibleY(correctTop)) {\n if (opts.isCompletelyVisibleY(opts.y.insideCenter)) {\n placement = \"left-center\";\n correctTop = opts.y.insideCenter;\n } else if (opts.isCompletelyVisibleY(opts.y.insideBottom)) {\n placement = \"left-bottom\";\n correctTop = opts.y.insideBottom;\n }\n }\n if (!opts.isCompletelyVisibleX(correctLeft)) {\n if (opts.isCompletelyVisibleX(opts.x.right)) {\n placement = placement.replace(\"left\", \"right\") as PositionPlacements;\n\n correctLeft = opts.x.right;\n }\n }\n\n return {\n top: correctTop,\n left: correctLeft,\n placement,\n };\n }\n default: {\n return {\n top: correctTop,\n left: correctLeft,\n placement: opts.placement,\n };\n }\n }\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): InitialVisiblePosition {\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 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","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function execAnimation(\n element: HTMLElement | null | undefined,\n className: string,\n autoCloseDelay: number = 700,\n) {\n return new Promise((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(true);\n\n return;\n }\n\n if (!element) {\n resolve(true);\n\n return;\n }\n\n const timerId = setTimeout(() => {\n resolve(true);\n }, autoCloseDelay);\n\n element.addEventListener(\n \"animationend\",\n () => {\n resolve(true);\n element?.classList?.remove?.(className);\n clearTimeout(timerId);\n },\n {\n once: true,\n },\n );\n element.classList.add(className);\n });\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function copyToClipboard(textToCopy: string) {\n return new Promise<boolean>((resolve) => {\n if (!IS_BROWSER && !IS_JEST) {\n resolve(false);\n\n return;\n }\n\n try {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard\n .writeText(textToCopy)\n .then(() => resolve(true))\n .catch(() => resolve(false));\n\n return;\n }\n\n const textArea = document.createElement(\"textarea\");\n textArea.value = textToCopy;\n textArea.style.position = \"fixed\";\n textArea.style.left = \"-999999px\";\n textArea.style.top = \"-999999px\";\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const result = document.execCommand(\"copy\");\n textArea.remove();\n\n resolve(result);\n } catch {\n resolve(false);\n }\n });\n}\n","import { IS_BROWSER, IS_JEST } from \"../../constants\";\n\nexport function extractQueries() {\n const queryMap: Record<string, string[] | undefined> = {};\n if (!IS_BROWSER && !IS_JEST) return queryMap;\n\n const queryString = document.location.search;\n queryString\n .replace(/^\\?/, \"\")\n .split(\"&\")\n .forEach((query) => {\n const [key, value] = query.split(\"=\", 2);\n\n queryMap[key] ??= [];\n const prev = queryMap[key];\n prev.push(value);\n });\n\n return queryMap;\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","export function type(value: unknown) {\n return value === null\n ? \"Null\"\n : value === undefined\n ? \"Undefined\"\n : Object.prototype.toString.call(value).slice(8, -1);\n}\n","import { isPrimitive } from \"../typings\";\nimport { type } from \"./type\";\n\nexport function cloneDeep<T>(value: T): T {\n if (isPrimitive(value)) {\n return value;\n }\n\n function copy(copiedValue: object) {\n for (const key in value as object) {\n if (Object.hasOwn(value as object, key)) {\n (copiedValue as Record<string, unknown>)[key] = cloneDeep(\n (value as Record<string, unknown>)[key],\n );\n }\n }\n\n return copiedValue;\n }\n\n switch (type(value)) {\n case \"Object\":\n return copy(Object.create(Object.getPrototypeOf(value) as object) as object) as T;\n case \"Array\":\n return copy(Array((value as unknown[]).length)) as T;\n case \"Date\":\n return new Date((value as Date).valueOf()) as T;\n case \"RegExp\":\n return cloneRegExp(value as RegExp) as T;\n case \"Int8Array\":\n case \"Uint8Array\":\n case \"Uint8ClampedArray\":\n case \"Int16Array\":\n case \"Uint16Array\":\n case \"Int32Array\":\n case \"Uint32Array\":\n case \"Float32Array\":\n case \"Float64Array\":\n case \"BigInt64Array\":\n case \"BigUint64Array\":\n return (value as Int8Array).slice() as T;\n default:\n return value;\n }\n}\n\nfunction cloneRegExp(pattern: RegExp) {\n return new RegExp(\n pattern.source,\n pattern.flags\n ? pattern.flags\n : (pattern.global ? \"g\" : \"\") +\n (pattern.ignoreCase ? \"i\" : \"\") +\n (pattern.multiline ? \"m\" : \"\") +\n (pattern.sticky ? \"y\" : \"\") +\n (pattern.unicode ? \"u\" : \"\") +\n (pattern.dotAll ? \"s\" : \"\"),\n );\n}\n","export function debounce<TArgs extends unknown[]>(\n func: (...args: TArgs) => unknown,\n delay: number,\n) {\n let timer: NodeJS.Timeout | undefined;\n let active = true;\n\n const debounced = (...args: TArgs) => {\n if (active) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n if (active) {\n func(...args);\n }\n timer = undefined;\n }, delay);\n } else {\n func(...args);\n }\n };\n debounced.isPending = () => {\n return timer !== undefined;\n };\n debounced.cancel = () => {\n active = false;\n };\n debounced.flush = (...args: TArgs) => {\n func(...args);\n };\n\n return debounced;\n}\n","export function difference<T extends string | number | boolean | null | undefined>(\n first: T[],\n second: T[],\n): T[] {\n let idx = 0;\n const out: T[] = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(second[i]);\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(first[idx])) {\n out[out.length] = first[idx];\n }\n idx += 1;\n }\n\n return out;\n}\n","export function differenceBy<T extends Record<string, unknown>>(\n first: T[],\n second: T[],\n key: keyof T,\n): T[] {\n let idx = 0;\n const out = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(second[i][key]);\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(first[idx][key])) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n\n return out;\n}\n","export function differenceWith<T = unknown>(\n first: T[],\n second: T[],\n extractPrimitive: (el: T) => string | number | boolean | undefined | null,\n): T[] {\n let idx = 0;\n const out = [];\n const toFilterOut = new Set();\n\n for (let i = 0; i < second.length; i += 1) {\n toFilterOut.add(extractPrimitive(second[i]));\n }\n\n while (idx < first.length) {\n if (!toFilterOut.has(extractPrimitive(first[idx]))) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n\n return out;\n}\n","import { isObject } from \"../typings\";\n\nexport function isEqual(aVal: unknown, bVal: unknown) {\n if (aVal === bVal) return true;\n\n if (\n aVal == undefined ||\n bVal == undefined ||\n typeof aVal !== \"object\" ||\n typeof bVal !== \"object\"\n ) {\n return aVal === bVal;\n }\n\n if (aVal instanceof Date && bVal instanceof Date) {\n return aVal.getTime() === bVal.getTime();\n }\n\n if (aVal instanceof RegExp && bVal instanceof RegExp) {\n return aVal.toString() === bVal.toString();\n }\n\n if (aVal.constructor !== bVal.constructor) {\n return false;\n }\n\n if (Array.isArray(aVal) && Array.isArray(bVal)) {\n if (aVal.length !== bVal.length) return false;\n for (let i = 0; i < aVal.length; i++) {\n if (!isEqual(aVal[i], bVal[i])) return false;\n }\n\n return true;\n }\n\n if (isObject(aVal) && isObject(bVal)) {\n const keysA = Object.keys(aVal);\n const keysB = Object.keys(bVal);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!isEqual(aVal[key], bVal[key])) return false;\n }\n }\n\n return true;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function throttle<TArgs extends any[]>(func: (...args: TArgs) => any, interval: number) {\n let ready = true;\n let timer: NodeJS.Timeout | undefined;\n\n const throttled = (...args: TArgs) => {\n if (!ready) return;\n func(...args);\n ready = false;\n timer = setTimeout(() => {\n ready = true;\n timer = undefined;\n }, interval);\n };\n\n throttled.isThrottled = () => {\n return timer !== undefined;\n };\n\n return throttled;\n}\n","export const RESPONSE_DATA_SYMBOL = Symbol(\"response data\");\nexport const REQUEST_ERROR = {\n Http: \"http\",\n Network: \"network\",\n Timeout: \"timeout\",\n Abort: \"abort\",\n Validation: \"validation\",\n Cache: \"cache\",\n Unknown: \"unknown\",\n Disabled: \"disabled\",\n} as const;\n\nclass OauthState {\n private _fetching: boolean = false;\n\n get fetching() {\n return this._fetching;\n }\n\n set fetching(value: boolean) {\n this._fetching = value;\n }\n}\nexport const OAUTH_STATE = new OauthState();\nexport const OAUTH_TOKEN_STORAGE_NAME = \"session_token\";\nexport const OAUTH_TOKEN_EXPIRES_STORAGE_NAME = \"session_token_expires\";\nexport const OAUTH_REFRESH_QUERY = \"only_session_refresh\";\nexport const OAUTH_ERROR_PAGE_URL = \"/error\";\nexport const OAUTH_CLEAR_PAGE_URL = \"/clear\";\nexport const OAUTH_LOGOUT_PAGE_URL = \"/logout\";\n","import type {\n HeadersInit,\n BodyInit as NodeBodyInit,\n RequestInfo as NodeRequestInfo,\n RequestInit as NodeRequestInit,\n Response as NodeResponse,\n} from \"node-fetch\";\nimport { IS_BROWSER, ResponseError } from \"../constants\";\nimport { createURLWithQueries, downloadFile, isArray, isString, wait } from \"../lib\";\nimport { REQUEST_ERROR, RESPONSE_DATA_SYMBOL } from \"./api.constants\";\nimport type {\n AfterHandler,\n BeforeHandler,\n CreateRequestClientInstance,\n RefetchAfterAuthFn,\n RequestError,\n RequestInterface,\n} from \"./api.types\";\n\nexport function createFetchClient(options: CreateRequestClientInstance) {\n let client:\n | ((url: URL | NodeRequestInfo, init?: NodeRequestInit) => Promise<NodeResponse>)\n | typeof fetch = options.client;\n let beforeHandlers: BeforeHandler[] | undefined = options.beforeHandlers;\n let afterHandlers: AfterHandler[] | undefined = options.afterHandlers;\n let retries: number[] | undefined = options.retries;\n let timeout: number | undefined = options.timeout;\n let refetchAfterAuthGlobal: RefetchAfterAuthFn | undefined = options.refetchAfterAuth;\n let enabled: boolean = options.enabled ?? true;\n\n function recreate(options: CreateRequestClientInstance) {\n if (\"client\" in options) {\n client = options.client;\n }\n if (\"beforeHandlers\" in options) {\n beforeHandlers = options.beforeHandlers;\n }\n if (\"afterHandlers\" in options) {\n afterHandlers = options.afterHandlers;\n }\n if (\"retries\" in options) {\n retries = options.retries;\n }\n if (\"timeout\" in options) {\n timeout = options.timeout;\n }\n if (\"refetchAfterAuth\" in options) {\n refetchAfterAuthGlobal = options.refetchAfterAuth;\n }\n if (\"enabled\" in options) {\n enabled = options.enabled ?? true;\n }\n }\n\n async function handleRequest<\n IncomingApi = unknown,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | {\n data: ResponseError;\n error: RequestError;\n response: Response | NodeResponse | null;\n }\n | { data: Incoming; error: null; response: Response | NodeResponse | null }\n > {\n if (!enabled) {\n return {\n response: null,\n data: new ResponseError({ message: \"requests disabled\", status: 0 }),\n error: REQUEST_ERROR.Disabled,\n };\n }\n\n const timeoutController = new AbortController();\n const requestController = new AbortController();\n const requestTimeout = request.timeout ?? timeout;\n const requestRetries = request.retries ?? retries;\n\n try {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const mock: unknown =\n typeof request.mock === \"function\" ? (request.mock as () => Incoming)() : request.mock;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(mock as IncomingApi)\n : (mock as Incoming);\n\n return { data: transformedResult, error: null, response: null };\n }\n\n if (requestTimeout != undefined && requestTimeout != 0) {\n setTimeout(() => {\n if (requestController.signal.aborted) return;\n timeoutController.abort();\n }, requestTimeout);\n timeoutController.signal.addEventListener(\"abort\", () => requestController.abort(), {\n once: true,\n signal: requestController.signal,\n });\n }\n if (request.signal) {\n request.signal.addEventListener(\"abort\", () => requestController.abort(), {\n once: true,\n signal: requestController.signal,\n });\n }\n\n {\n let handlers: BeforeHandler[] = [];\n if (request.beforeHandlers) {\n handlers = request.beforeHandlers;\n } else if (beforeHandlers) {\n handlers = beforeHandlers;\n }\n if (request.additionalBeforeHandlers) {\n handlers = handlers.concat(request.additionalBeforeHandlers);\n }\n\n if (handlers.length > 0) {\n await executeBeforeHandlers(handlers, request);\n }\n }\n\n const { method, body, path, queries, headers = {} } = request;\n let refetchAfterAuth: RefetchAfterAuthFn | undefined = refetchAfterAuthGlobal;\n if (\"refetchAfterAuth\" in request) {\n refetchAfterAuth = request.refetchAfterAuth;\n }\n\n const url = createURLWithQueries({ baseURL: path, params: queries });\n let [, requestContentType] =\n Object.entries(headers).find(([header]) => header.toLowerCase() === \"content-type\") ?? [];\n if (isArray(requestContentType)) {\n requestContentType = requestContentType[0];\n }\n\n let preparedBody: OutcomingApi = body as OutcomingApi;\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Outcoming);\n }\n\n if (\n requestContentType == undefined &&\n !(preparedBody instanceof FormData) &&\n preparedBody !== undefined &&\n !isString(preparedBody)\n ) {\n headers[\"content-type\"] = \"application/json; charset=UTF-8\";\n }\n\n if (\n ((requestContentType == undefined && !isString(preparedBody)) ||\n requestContentType?.toLowerCase()?.includes(\"json\")) &&\n preparedBody !== undefined &&\n !(preparedBody instanceof FormData)\n ) {\n preparedBody = JSON.stringify(preparedBody) as OutcomingApi;\n }\n const response: Response | NodeResponse | undefined = await client(url, {\n method,\n body: preparedBody as ((BodyInit | null) & NodeBodyInit) | undefined,\n headers: headers as globalThis.HeadersInit & HeadersInit,\n signal: requestController.signal as\n | (AbortSignal & NodeRequestInit[\"signal\"])\n | null\n | undefined,\n cache: request.cache,\n credentials: request.credentials,\n integrity: request.integrity,\n keepalive: request.keepalive,\n mode: request.mode,\n priority: request.priority,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n compress: request.compress,\n follow: request.follow,\n });\n\n {\n let handlers: AfterHandler[] = [];\n if (request.afterHandlers) {\n handlers = request.afterHandlers;\n } else if (afterHandlers) {\n handlers = afterHandlers;\n }\n if (request.additionalAfterHandlers) {\n handlers = handlers.concat(request.additionalAfterHandlers);\n }\n\n if (handlers.length > 0) {\n await executeAfterHandlers(handlers, request, response);\n }\n }\n\n if (!response.ok) {\n if (response.status === 304) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Cache,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n });\n request.onError?.(REQUEST_ERROR.Cache, error);\n\n return { data: error, error: REQUEST_ERROR.Cache, response };\n }\n /** if you need observe other than only 401 status, you can override some statuses in after handler middleware to 401 */\n if (response.status === 401 && refetchAfterAuth) {\n const newRequest = await refetchAfterAuth(request);\n\n return await handleRequest({ ...newRequest, refetchAfterAuth: false });\n }\n\n if (request.defaultResponse) {\n const defaultResponse: unknown =\n typeof request.defaultResponse === \"function\"\n ? (request.defaultResponse as () => Incoming)()\n : request.defaultResponse;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(defaultResponse as IncomingApi)\n : (defaultResponse as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response: null,\n };\n }\n if (requestRetries && requestRetries.length > 0) {\n await wait(requestRetries[0]);\n\n return await handleRequest({ ...request, retries: requestRetries.slice(1) });\n }\n\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (RESPONSE_DATA_SYMBOL in response) {\n result = response[RESPONSE_DATA_SYMBOL];\n } else if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {}\n\n const error = new ResponseError({\n status: response.status,\n message: REQUEST_ERROR.Http,\n description: result,\n headers: Object.fromEntries(response.headers.entries()),\n });\n request.onError?.(REQUEST_ERROR.Http, error);\n\n return {\n data: error,\n error: REQUEST_ERROR.Http,\n response,\n };\n }\n\n if (request.download) {\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) {\n console.warn(\"couldn't download file because content-type header is not exist\");\n } else if (!fileName) {\n console.warn(\"couldn't download file because content-disposition header is not exist\");\n }\n\n if (IS_BROWSER && mimeType && fileName)\n downloadFile({\n data: data as Blob,\n fileName,\n mimeType,\n });\n\n return {\n data: data as Incoming,\n error: null,\n response,\n };\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming | IncomingApi = undefined as Incoming | IncomingApi;\n\n if (RESPONSE_DATA_SYMBOL in response) {\n result = response[RESPONSE_DATA_SYMBOL] as Incoming | IncomingApi;\n } else if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming | IncomingApi;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming | IncomingApi;\n } else {\n result = (await response.blob()) as Incoming | IncomingApi;\n }\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result as IncomingApi)\n : (result as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response,\n };\n } catch (err: unknown) {\n if (request.defaultResponse) {\n const defaultResponse: unknown =\n typeof request.defaultResponse === \"function\"\n ? (request.defaultResponse as () => Incoming)()\n : request.defaultResponse;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(defaultResponse as IncomingApi)\n : (defaultResponse as Incoming);\n\n return {\n data: transformedResult,\n error: null,\n response: null,\n };\n }\n if (requestRetries && requestRetries.length > 0 && request?.signal?.aborted !== true) {\n await wait(requestRetries[0]);\n\n return await handleRequest({ ...request, retries: requestRetries.slice(1) });\n }\n\n if (err instanceof TypeError) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Network,\n status: 0,\n description: String(err.message),\n });\n request.onError?.(REQUEST_ERROR.Network, error);\n\n return { data: error, error: REQUEST_ERROR.Network, response: null };\n }\n\n if (err instanceof Error && err.name === \"AbortError\") {\n if (timeoutController.signal.aborted) {\n const error = new ResponseError({\n message: REQUEST_ERROR.Timeout,\n status: 0,\n });\n request.onError?.(REQUEST_ERROR.Timeout, error);\n\n return { data: error, error: REQUEST_ERROR.Timeout, response: null };\n }\n\n const error = new ResponseError({\n message: REQUEST_ERROR.Abort,\n status: 0,\n });\n request.onError?.(REQUEST_ERROR.Abort, error);\n\n return { data: error, error: REQUEST_ERROR.Abort, response: null };\n }\n\n const error = new ResponseError({\n message: REQUEST_ERROR.Unknown,\n status: 0,\n description: String(err),\n });\n request.onError?.(REQUEST_ERROR.Unknown, error);\n\n return { data: error, error: REQUEST_ERROR.Unknown, response: null };\n } finally {\n requestController.abort();\n }\n }\n\n async function requestWithArrayResponse<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | [ResponseError, RequestError, Response | NodeResponse | null]\n | [Incoming, null, Response | NodeResponse | null]\n > {\n const response = await handleRequest(request);\n\n return [response.data, response.error, response.response] as\n | [ResponseError, RequestError, Response | NodeResponse | null]\n | [Incoming, null, Response | NodeResponse | null];\n }\n\n async function requestWithObjectResponse<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<\n | {\n data: ResponseError;\n error: RequestError;\n response: Response | NodeResponse | null;\n }\n | { data: Incoming; error: null; response: Response | NodeResponse | null }\n > {\n return handleRequest(request);\n }\n\n return {\n requestWithArrayResponse,\n requestWithObjectResponse,\n recreate,\n };\n}\n\nfunction executeBeforeHandlers<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n>(\n handlers: BeforeHandler[],\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n) {\n return new Promise((resolve) => {\n void (async () => {\n for (const handler of handlers) {\n await handler(request);\n }\n\n resolve(1);\n })();\n });\n}\n\nfunction executeAfterHandlers<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n>(\n handlers: AfterHandler[],\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n response: Response | NodeResponse | undefined,\n) {\n return new Promise((resolve) => {\n void (async () => {\n for (const handler of handlers) {\n await handler(request, response);\n }\n\n resolve(1);\n })();\n });\n}\n","import { getQueryValues, isArray, isString, startWith, wait, waitUntil } from \"../lib\";\nimport {\n OAUTH_CLEAR_PAGE_URL,\n OAUTH_ERROR_PAGE_URL,\n OAUTH_LOGOUT_PAGE_URL,\n OAUTH_REFRESH_QUERY,\n OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n OAUTH_TOKEN_STORAGE_NAME,\n} from \"./api.constants\";\nimport type { OauthOptions, RequestInterface } from \"./api.types\";\n\nexport function createOauthProvider(opts: OauthOptions = {}) {\n const {\n refreshTokenWindowUrl = window.origin,\n closeObserveSubWindowInterval = 500,\n waitSubWindow = 15000,\n loginUrl = undefined,\n logoutUrl = undefined,\n clearPageUrl = OAUTH_CLEAR_PAGE_URL,\n errorPageUrl = OAUTH_ERROR_PAGE_URL,\n logoutPageUrl = OAUTH_LOGOUT_PAGE_URL,\n afterClearPageUrl = \"/\",\n expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenStorageName = OAUTH_TOKEN_STORAGE_NAME,\n expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenRequest = undefined,\n forceSetToken = false,\n subWindow = true,\n refreshToken = false,\n } = opts;\n let processing = false;\n\n function getExpiresDate(expires: number) {\n return Date.now() + (expires - 30) * 1000;\n }\n function checkExpires(expires: null | undefined | string | number): expires is number | string {\n return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;\n }\n\n async function refetchAfterRefreshFlow<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>> {\n if (processing) {\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = true;\n if (refreshToken && tokenRequest) {\n const tokenInfo = await startRefreshFlow();\n if (tokenInfo == undefined) {\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n\n async function startLoginFlowInSubWindow() {\n processing = true;\n let waiting = true;\n const url = new URL(\n typeof refreshTokenWindowUrl === \"function\" ? refreshTokenWindowUrl() : refreshTokenWindowUrl,\n );\n // added only refresh tag to autoclose window after flow\n url.searchParams.append(OAUTH_REFRESH_QUERY, \"true\");\n\n // try open window with both of action\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n windowInstance ??= window.open(url.toString(), \"_blank\");\n\n if (windowInstance) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n const windowCloseObserver = setInterval(() => {\n if (windowInstance.closed) {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n }\n }, closeObserveSubWindowInterval);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, waitSubWindow);\n } else {\n if (\"onSubWindowOpenError\" in opts) opts.onSubWindowOpenError?.();\n else {\n await startLoginFlow();\n }\n waiting = false;\n\n return;\n }\n\n await waitUntil(() => waiting);\n processing = false;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLoginFlow(\n loginUrlArg: (() => string) | string | undefined = loginUrl,\n delay: number = 2000,\n ) {\n loginUrlArg ??= `/api/v1/auth?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}&comeback_path=${window.location.pathname}${encodeURIComponent(window.location.search)}`;\n window.location.replace(typeof loginUrlArg === \"function\" ? loginUrlArg() : loginUrlArg);\n await wait(delay);\n return null;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLogoutFlow(\n logoutUrlArg: (() => string) | string | undefined = logoutUrl,\n delay: number = 2000,\n ) {\n logoutUrlArg ??= `/api/v1/auth/logout?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}`;\n window.location.replace(typeof logoutUrlArg === \"function\" ? logoutUrlArg() : logoutUrlArg);\n await wait(delay);\n return null;\n }\n\n async function startRefreshFlow() {\n const tokenInfo = await tokenRequest?.();\n if (tokenInfo) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n if (tokenInfo.expires !== 0) {\n tokenInfo.expires = getExpiresDate(tokenInfo.expires);\n localStorage.setItem(expiresTokenStorageName, String(tokenInfo.expires));\n }\n }\n return tokenInfo;\n }\n\n // Processing an oauth flow: extract expires, get token, close sub windows, check if logout/clear/error url\n async function register(): Promise<boolean> {\n if (window.location.pathname === logoutPageUrl) {\n await startLogoutFlow();\n return false;\n }\n if (window.location.pathname === clearPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n window.location.replace(afterClearPageUrl);\n return false;\n }\n if (window.location.pathname === errorPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n return false;\n }\n\n const queries = getQueryValues([expiresTokenQueryName, OAUTH_REFRESH_QUERY]);\n\n const refreshQuery = queries?.[OAUTH_REFRESH_QUERY];\n const expiresQuery = queries?.[expiresTokenQueryName];\n\n /** Is OnlyRefresh window */\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : null;\n /** Expires token */\n const expires = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : null;\n\n if (checkExpires(expires)) {\n localStorage.setItem(expiresTokenStorageName, String(getExpiresDate(+expires)));\n if (tokenRequest) {\n const tokenInfo = await tokenRequest();\n if (tokenInfo != undefined) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n }\n }\n\n /** Close if OnlyRefresh window */\n if (isRefresh) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n channel.postMessage(true);\n channel.close();\n window.close();\n return false;\n }\n\n /** Delete expires query */\n const url = new URL(window.location.href);\n url.searchParams.delete(expiresTokenQueryName);\n window.location.replace(url.toString());\n return false;\n }\n\n return true;\n }\n\n async function beforeHandlerCheckExpires<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n const expires = localStorage.getItem(expiresTokenStorageName);\n if (checkExpires(expires)) {\n return;\n }\n await refetchAfterRefreshFlow(request);\n }\n\n async function beforeHandlerSetToken<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n if (processing) await waitUntil(() => processing);\n\n const token = request.token ?? localStorage.getItem(tokenStorageName);\n const isSameOrigin =\n request.path.includes(window.location.origin) || !startWith(request.path, \"http\");\n if ((!isSameOrigin || forceSetToken) && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n return {\n startRefreshFlow,\n startLoginFlowInSubWindow,\n startLoginFlow,\n startLogoutFlow,\n refetchAfterRefreshFlow,\n beforeHandlerSetToken,\n beforeHandlerCheckExpires,\n register,\n get isServicePage() {\n return [errorPageUrl, clearPageUrl, logoutPageUrl].some(\n (u) => document.location.pathname === u,\n );\n },\n get processing() {\n return processing;\n },\n get token() {\n return localStorage.getItem(tokenStorageName);\n },\n get expires() {\n const expires = localStorage.getItem(expiresTokenStorageName);\n return expires == undefined ? null : Number.isNaN(+expires) ? null : +expires;\n },\n get expired() {\n const expiresStr = localStorage.getItem(expiresTokenStorageName);\n const expires =\n expiresStr == undefined ? null : Number.isNaN(+expiresStr) ? null : +expiresStr;\n return expires == undefined ? true : Date.now() > expires;\n },\n };\n}\n","/* eslint-disable no-console */\nimport type { Headers as NodeHeaders, Response as NodeResponse } from \"node-fetch\";\nimport { RESPONSE_DATA_SYMBOL } from \"../api.constants\";\nimport type { AfterHandler } from \"../api.types\";\n\nexport type LoggerAfterHandlerOptions = {\n filter?: (response: Response | NodeResponse | undefined) => boolean;\n filterStatus?: (status: number) => boolean;\n filterUrl?: (url: string) => boolean;\n filterHeaders?: (headers: Headers | NodeHeaders) => boolean;\n};\n\nexport function loggerAfterHandler(options: LoggerAfterHandlerOptions = {}): AfterHandler {\n return (request, 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();\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();\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve();\n }\n })().finally(() => {\n resolve();\n });\n });\n };\n}\n","import type {\n BeforeHandler,\n RequestHeader,\n RequestInterface,\n RequestMethod,\n RequestQuery,\n} from \"../api.types\";\n\nexport type LoggerBeforeHandlerOptions = {\n filter?: (request: RequestInterface<unknown, unknown, unknown, unknown>) => boolean;\n filterPath?: (path: string) => boolean;\n filterMethod?: (method: RequestMethod) => boolean;\n filterParams?: (params?: RequestQuery) => boolean;\n filterHeaders?: (headers?: RequestHeader) => boolean;\n};\n\nexport function loggerBeforeHandler(options: LoggerBeforeHandlerOptions = {}): BeforeHandler {\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.queries)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve();\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve();\n });\n };\n}\n"],"names":["startArray","endArray","separator","numbers"],"mappings":"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,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,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA,GAAG,EAAE,GAAG;AACR,IAAA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"}
|
package/lib/esm/api/oauth.js
CHANGED
|
@@ -13,8 +13,8 @@ import { OAUTH_CLEAR_PAGE_URL, OAUTH_ERROR_PAGE_URL, OAUTH_LOGOUT_PAGE_URL, OAUT
|
|
|
13
13
|
function createOauthProvider(opts = {}) {
|
|
14
14
|
const { refreshTokenWindowUrl = window.origin, closeObserveSubWindowInterval = 500, waitSubWindow = 15000, loginUrl = undefined, logoutUrl = undefined, clearPageUrl = OAUTH_CLEAR_PAGE_URL, errorPageUrl = OAUTH_ERROR_PAGE_URL, logoutPageUrl = OAUTH_LOGOUT_PAGE_URL, afterClearPageUrl = "/", expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME, tokenStorageName = OAUTH_TOKEN_STORAGE_NAME, expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME, tokenRequest = undefined, forceSetToken = false, subWindow = true, refreshToken = false, } = opts;
|
|
15
15
|
let processing = false;
|
|
16
|
-
function
|
|
17
|
-
return Date.now() + (expires - 30);
|
|
16
|
+
function getExpiresDate(expires) {
|
|
17
|
+
return Date.now() + (expires - 30) * 1000;
|
|
18
18
|
}
|
|
19
19
|
function checkExpires(expires) {
|
|
20
20
|
return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;
|
|
@@ -121,7 +121,8 @@ function createOauthProvider(opts = {}) {
|
|
|
121
121
|
if (tokenInfo) {
|
|
122
122
|
localStorage.setItem(tokenStorageName, tokenInfo.token);
|
|
123
123
|
if (tokenInfo.expires !== 0) {
|
|
124
|
-
|
|
124
|
+
tokenInfo.expires = getExpiresDate(tokenInfo.expires);
|
|
125
|
+
localStorage.setItem(expiresTokenStorageName, String(tokenInfo.expires));
|
|
125
126
|
}
|
|
126
127
|
}
|
|
127
128
|
return tokenInfo;
|
|
@@ -159,7 +160,7 @@ function createOauthProvider(opts = {}) {
|
|
|
159
160
|
? expiresQuery[expiresQuery.length - 1]
|
|
160
161
|
: null;
|
|
161
162
|
if (checkExpires(expires)) {
|
|
162
|
-
localStorage.setItem(expiresTokenStorageName, expires);
|
|
163
|
+
localStorage.setItem(expiresTokenStorageName, String(getExpiresDate(+expires)));
|
|
163
164
|
if (tokenRequest) {
|
|
164
165
|
const tokenInfo = await tokenRequest();
|
|
165
166
|
if (tokenInfo != undefined) {
|
package/lib/esm/api/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sources":["../../../src/api/oauth.ts"],"sourcesContent":["import { getQueryValues, isArray, isString, startWith, wait, waitUntil } from \"../lib\";\nimport {\n OAUTH_CLEAR_PAGE_URL,\n OAUTH_ERROR_PAGE_URL,\n OAUTH_LOGOUT_PAGE_URL,\n OAUTH_REFRESH_QUERY,\n OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n OAUTH_TOKEN_STORAGE_NAME,\n} from \"./api.constants\";\nimport type { OauthOptions, RequestInterface } from \"./api.types\";\n\nexport function createOauthProvider(opts: OauthOptions = {}) {\n const {\n refreshTokenWindowUrl = window.origin,\n closeObserveSubWindowInterval = 500,\n waitSubWindow = 15000,\n loginUrl = undefined,\n logoutUrl = undefined,\n clearPageUrl = OAUTH_CLEAR_PAGE_URL,\n errorPageUrl = OAUTH_ERROR_PAGE_URL,\n logoutPageUrl = OAUTH_LOGOUT_PAGE_URL,\n afterClearPageUrl = \"/\",\n expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenStorageName = OAUTH_TOKEN_STORAGE_NAME,\n expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenRequest = undefined,\n forceSetToken = false,\n subWindow = true,\n refreshToken = false,\n } = opts;\n let processing = false;\n\n function getExpires(expires: number) {\n return Date.now() + (expires - 30);\n }\n function checkExpires(expires: null | undefined | string | number): expires is number | string {\n return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;\n }\n\n async function refetchAfterRefreshFlow<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>> {\n if (processing) {\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = true;\n if (refreshToken && tokenRequest) {\n const tokenInfo = await startRefreshFlow();\n if (tokenInfo == undefined) {\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n\n async function startLoginFlowInSubWindow() {\n processing = true;\n let waiting = true;\n const url = new URL(\n typeof refreshTokenWindowUrl === \"function\" ? refreshTokenWindowUrl() : refreshTokenWindowUrl,\n );\n // added only refresh tag to autoclose window after flow\n url.searchParams.append(OAUTH_REFRESH_QUERY, \"true\");\n\n // try open window with both of action\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n windowInstance ??= window.open(url.toString(), \"_blank\");\n\n if (windowInstance) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n const windowCloseObserver = setInterval(() => {\n if (windowInstance.closed) {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n }\n }, closeObserveSubWindowInterval);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, waitSubWindow);\n } else {\n if (\"onSubWindowOpenError\" in opts) opts.onSubWindowOpenError?.();\n else {\n await startLoginFlow();\n }\n waiting = false;\n\n return;\n }\n\n await waitUntil(() => waiting);\n processing = false;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLoginFlow(\n loginUrlArg: (() => string) | string | undefined = loginUrl,\n delay: number = 2000,\n ) {\n loginUrlArg ??= `/api/v1/auth?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}&comeback_path=${window.location.pathname}${encodeURIComponent(window.location.search)}`;\n window.location.replace(typeof loginUrlArg === \"function\" ? loginUrlArg() : loginUrlArg);\n await wait(delay);\n return null;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLogoutFlow(\n logoutUrlArg: (() => string) | string | undefined = logoutUrl,\n delay: number = 2000,\n ) {\n logoutUrlArg ??= `/api/v1/auth/logout?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}`;\n window.location.replace(typeof logoutUrlArg === \"function\" ? logoutUrlArg() : logoutUrlArg);\n await wait(delay);\n return null;\n }\n\n async function startRefreshFlow() {\n const tokenInfo = await tokenRequest?.();\n if (tokenInfo) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n if (tokenInfo.expires !== 0) {\n localStorage.setItem(expiresTokenStorageName, String(getExpires(tokenInfo.expires)));\n }\n }\n return tokenInfo;\n }\n\n // Processing an oauth flow: extract expires, get token, close sub windows, check if logout/clear/error url\n async function register(): Promise<boolean> {\n if (window.location.pathname === logoutPageUrl) {\n await startLogoutFlow();\n return false;\n }\n if (window.location.pathname === clearPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n window.location.replace(afterClearPageUrl);\n return false;\n }\n if (window.location.pathname === errorPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n return false;\n }\n\n const queries = getQueryValues([expiresTokenQueryName, OAUTH_REFRESH_QUERY]);\n\n const refreshQuery = queries?.[OAUTH_REFRESH_QUERY];\n const expiresQuery = queries?.[expiresTokenQueryName];\n\n /** Is OnlyRefresh window */\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : null;\n /** Expires token */\n const expires = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : null;\n\n if (checkExpires(expires)) {\n localStorage.setItem(expiresTokenStorageName, expires);\n if (tokenRequest) {\n const tokenInfo = await tokenRequest();\n if (tokenInfo != undefined) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n }\n }\n\n /** Close if OnlyRefresh window */\n if (isRefresh) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n channel.postMessage(true);\n channel.close();\n window.close();\n return false;\n }\n\n /** Delete expires query */\n const url = new URL(window.location.href);\n url.searchParams.delete(expiresTokenQueryName);\n window.location.replace(url.toString());\n return false;\n }\n\n return true;\n }\n\n async function beforeHandlerCheckExpires<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n const expires = localStorage.getItem(expiresTokenStorageName);\n if (checkExpires(expires)) {\n return;\n }\n await refetchAfterRefreshFlow(request);\n }\n\n async function beforeHandlerSetToken<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n if (processing) await waitUntil(() => processing);\n\n const token = request.token ?? localStorage.getItem(tokenStorageName);\n const isSameOrigin =\n request.path.includes(window.location.origin) || !startWith(request.path, \"http\");\n if ((!isSameOrigin || forceSetToken) && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n return {\n startRefreshFlow,\n startLoginFlowInSubWindow,\n startLoginFlow,\n startLogoutFlow,\n refetchAfterRefreshFlow,\n beforeHandlerSetToken,\n beforeHandlerCheckExpires,\n register,\n get isServicePage() {\n return [errorPageUrl, clearPageUrl, logoutPageUrl].some(\n (u) => document.location.pathname === u,\n );\n },\n get processing() {\n return processing;\n },\n get token() {\n return localStorage.getItem(tokenStorageName);\n },\n get expires() {\n const expires = localStorage.getItem(expiresTokenStorageName);\n return expires == undefined ? null : Number.isNaN(+expires) ? null : +expires;\n },\n get expired() {\n const expiresStr = localStorage.getItem(expiresTokenStorageName);\n const expires =\n expiresStr == undefined ? null : Number.isNaN(+expiresStr) ? null : +expiresStr;\n return expires == undefined ? true : Date.now() > expires;\n },\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAWgB,SAAA,mBAAmB,CAAC,IAAA,GAAqB,EAAE,EAAA;AACzD,IAAA,MAAM,EACJ,qBAAqB,GAAG,MAAM,CAAC,MAAM,EACrC,6BAA6B,GAAG,GAAG,EACnC,aAAa,GAAG,KAAK,EACrB,QAAQ,GAAG,SAAS,EACpB,SAAS,GAAG,SAAS,EACrB,YAAY,GAAG,oBAAoB,EACnC,YAAY,GAAG,oBAAoB,EACnC,aAAa,GAAG,qBAAqB,EACrC,iBAAiB,GAAG,GAAG,EACvB,qBAAqB,GAAG,gCAAgC,EACxD,gBAAgB,GAAG,wBAAwB,EAC3C,uBAAuB,GAAG,gCAAgC,EAC1D,YAAY,GAAG,SAAS,EACxB,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,IAAI,EAChB,YAAY,GAAG,KAAK,GACrB,GAAG,IAAI;IACR,IAAI,UAAU,GAAG,KAAK;IAEtB,SAAS,UAAU,CAAC,OAAe,EAAA;QACjC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;;IAEpC,SAAS,YAAY,CAAC,OAA2C,EAAA;QAC/D,OAAO,OAAO,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO;;IAGjF,eAAe,uBAAuB,CAMpC,OAAyE,EAAA;QAEzE,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,qBAAqB,CAAC,OAAO,CAAC;AACpC,YAAA,OAAO,OAAO;;QAEhB,UAAU,GAAG,IAAI;AACjB,QAAA,IAAI,YAAY,IAAI,YAAY,EAAE;AAChC,YAAA,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE;AAC1C,YAAA,IAAI,SAAS,IAAI,SAAS,EAAE;gBAC1B,IAAI,SAAS,EAAE;oBACb,MAAM,yBAAyB,EAAE;;qBAC5B;oBACL,MAAM,cAAc,EAAE;;gBAExB,UAAU,GAAG,KAAK;AAClB,gBAAA,MAAM,qBAAqB,CAAC,OAAO,CAAC;AACpC,gBAAA,OAAO,OAAO;;YAEhB,UAAU,GAAG,KAAK;AAClB,YAAA,MAAM,qBAAqB,CAAC,OAAO,CAAC;AACpC,YAAA,OAAO,OAAO;;QAEhB,IAAI,SAAS,EAAE;YACb,MAAM,yBAAyB,EAAE;;aAC5B;YACL,MAAM,cAAc,EAAE;;QAExB,UAAU,GAAG,KAAK;AAClB,QAAA,MAAM,qBAAqB,CAAC,OAAO,CAAC;AACpC,QAAA,OAAO,OAAO;;AAGhB,IAAA,eAAe,yBAAyB,GAAA;QACtC,UAAU,GAAG,IAAI;QACjB,IAAI,OAAO,GAAG,IAAI;AAClB,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,OAAO,qBAAqB,KAAK,UAAU,GAAG,qBAAqB,EAAE,GAAG,qBAAqB,CAC9F;;QAED,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC;;AAGpD,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,IAAI,CAC9B,GAAG,CAAC,QAAQ,EAAE,EACd,QAAQ,EACR,uCAAuC,CACxC;AACD,QAAA,cAAc,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC;QAExD,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,CAAC;AACzD,YAAA,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAK;AAC3C,gBAAA,IAAI,cAAc,CAAC,MAAM,EAAE;oBACzB,IAAI,OAAO,EAAE;wBACX,OAAO,GAAG,KAAK;wBACf,OAAO,CAAC,KAAK,EAAE;wBACf,aAAa,CAAC,mBAAmB,CAAC;;;aAGvC,EAAE,6BAA6B,CAAC;AACjC,YAAA,OAAO,CAAC,SAAS,GAAG,MAAK;gBACvB,IAAI,OAAO,EAAE;oBACX,OAAO,GAAG,KAAK;oBACf,OAAO,CAAC,KAAK,EAAE;oBACf,aAAa,CAAC,mBAAmB,CAAC;;AAEtC,aAAC;YACD,UAAU,CAAC,MAAK;gBACd,IAAI,OAAO,EAAE;oBACX,OAAO,GAAG,KAAK;oBACf,OAAO,CAAC,KAAK,EAAE;oBACf,aAAa,CAAC,mBAAmB,CAAC;;AAEpC,gBAAA,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;oBAC5C,cAAc,CAAC,KAAK,EAAE;;aAEzB,EAAE,aAAa,CAAC;;aACZ;YACL,IAAI,sBAAsB,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,oBAAoB,IAAI;iBAC5D;gBACH,MAAM,cAAc,EAAE;;YAExB,OAAO,GAAG,KAAK;YAEf;;AAGF,QAAA,MAAM,SAAS,CAAC,MAAM,OAAO,CAAC;QAC9B,UAAU,GAAG,KAAK;;;AAIpB,IAAA,eAAe,cAAc,CAC3B,cAAmD,QAAQ,EAC3D,QAAgB,IAAI,EAAA;AAEpB,QAAA,WAAW,KAAK,CAAkC,+BAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAG,EAAA,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1N,QAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC;AACxF,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC;AACjB,QAAA,OAAO,IAAI;;;AAIb,IAAA,eAAe,eAAe,CAC5B,eAAoD,SAAS,EAC7D,QAAgB,IAAI,EAAA;QAEpB,YAAY,KAAK,yCAAyC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAkB,eAAA,EAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA,CAAE;AAC3I,QAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,YAAY,KAAK,UAAU,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC;AAC3F,QAAA,MAAM,IAAI,CAAC,KAAK,CAAC;AACjB,QAAA,OAAO,IAAI;;AAGb,IAAA,eAAe,gBAAgB,GAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,MAAM,YAAY,IAAI;QACxC,IAAI,SAAS,EAAE;YACb,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC;AACvD,YAAA,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;AAC3B,gBAAA,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;;;AAGxF,QAAA,OAAO,SAAS;;;AAIlB,IAAA,eAAe,QAAQ,GAAA;QACrB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,aAAa,EAAE;YAC9C,MAAM,eAAe,EAAE;AACvB,YAAA,OAAO,KAAK;;QAEd,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC7C,YAAA,YAAY,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAChD,YAAA,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACzC,YAAA,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC1C,YAAA,OAAO,KAAK;;QAEd,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC7C,YAAA,YAAY,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAChD,YAAA,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACzC,YAAA,OAAO,KAAK;;QAGd,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;AAE5E,QAAA,MAAM,YAAY,GAAG,OAAO,GAAG,mBAAmB,CAAC;AACnD,QAAA,MAAM,YAAY,GAAG,OAAO,GAAG,qBAAqB,CAAC;;AAGrD,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY;cACnC,YAAY,KAAK;AACnB,cAAE,OAAO,CAAC,YAAY;kBAClB,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;kBAC1C,IAAI;;AAEV,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY;AACnC,cAAE;AACF,cAAE,OAAO,CAAC,YAAY;kBAClB,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;kBACpC,IAAI;AAEV,QAAA,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;YACtD,IAAI,YAAY,EAAE;AAChB,gBAAA,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE;AACtC,gBAAA,IAAI,SAAS,IAAI,SAAS,EAAE;oBAC1B,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC;;;;YAK3D,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,mBAAmB,CAAC;AACzD,gBAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBACzB,OAAO,CAAC,KAAK,EAAE;gBACf,MAAM,CAAC,KAAK,EAAE;AACd,gBAAA,OAAO,KAAK;;;YAId,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzC,YAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC;YAC9C,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvC,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;IAGb,eAAe,yBAAyB,CAKtC,OAAyE,EAAA;QACzE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAC7D,QAAA,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE;YACzB;;AAEF,QAAA,MAAM,uBAAuB,CAAC,OAAO,CAAC;;IAGxC,eAAe,qBAAqB,CAKlC,OAAyE,EAAA;AACzE,QAAA,IAAI,UAAU;AAAE,YAAA,MAAM,SAAS,CAAC,MAAM,UAAU,CAAC;AAEjD,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACrE,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AACnF,QAAA,IAAI,CAAC,CAAC,YAAY,IAAI,aAAa,KAAK,KAAK;YAC3C,OAAO,CAAC,OAAO,GAAG;gBAChB,GAAG,OAAO,CAAC,OAAO;gBAClB,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;aACjC;;IAGL,OAAO;QACL,gBAAgB;QAChB,yBAAyB;QACzB,cAAc;QACd,eAAe;QACf,uBAAuB;QACvB,qBAAqB;QACrB,yBAAyB;QACzB,QAAQ;AACR,QAAA,IAAI,aAAa,GAAA;YACf,OAAO,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,IAAI,CACrD,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,CACxC;SACF;AACD,QAAA,IAAI,UAAU,GAAA;AACZ,YAAA,OAAO,UAAU;SAClB;AACD,QAAA,IAAI,KAAK,GAAA;AACP,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC9C;AACD,QAAA,IAAI,OAAO,GAAA;YACT,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC;YAC7D,OAAO,OAAO,IAAI,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO;SAC9E;AACD,QAAA,IAAI,OAAO,GAAA;YACT,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC;AAChE,YAAA,MAAM,OAAO,GACX,UAAU,IAAI,SAAS,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU;AACjF,YAAA,OAAO,OAAO,IAAI,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;SAC1D;KACF;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"oauth.js","sources":["../../../src/api/oauth.ts"],"sourcesContent":["import { getQueryValues, isArray, isString, startWith, wait, waitUntil } from \"../lib\";\nimport {\n OAUTH_CLEAR_PAGE_URL,\n OAUTH_ERROR_PAGE_URL,\n OAUTH_LOGOUT_PAGE_URL,\n OAUTH_REFRESH_QUERY,\n OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n OAUTH_TOKEN_STORAGE_NAME,\n} from \"./api.constants\";\nimport type { OauthOptions, RequestInterface } from \"./api.types\";\n\nexport function createOauthProvider(opts: OauthOptions = {}) {\n const {\n refreshTokenWindowUrl = window.origin,\n closeObserveSubWindowInterval = 500,\n waitSubWindow = 15000,\n loginUrl = undefined,\n logoutUrl = undefined,\n clearPageUrl = OAUTH_CLEAR_PAGE_URL,\n errorPageUrl = OAUTH_ERROR_PAGE_URL,\n logoutPageUrl = OAUTH_LOGOUT_PAGE_URL,\n afterClearPageUrl = \"/\",\n expiresTokenQueryName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenStorageName = OAUTH_TOKEN_STORAGE_NAME,\n expiresTokenStorageName = OAUTH_TOKEN_EXPIRES_STORAGE_NAME,\n tokenRequest = undefined,\n forceSetToken = false,\n subWindow = true,\n refreshToken = false,\n } = opts;\n let processing = false;\n\n function getExpiresDate(expires: number) {\n return Date.now() + (expires - 30) * 1000;\n }\n function checkExpires(expires: null | undefined | string | number): expires is number | string {\n return expires != undefined && !Number.isNaN(+expires) && Date.now() < +expires;\n }\n\n async function refetchAfterRefreshFlow<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>> {\n if (processing) {\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = true;\n if (refreshToken && tokenRequest) {\n const tokenInfo = await startRefreshFlow();\n if (tokenInfo == undefined) {\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n if (subWindow) {\n await startLoginFlowInSubWindow();\n } else {\n await startLoginFlow();\n }\n processing = false;\n await beforeHandlerSetToken(request);\n return request;\n }\n\n async function startLoginFlowInSubWindow() {\n processing = true;\n let waiting = true;\n const url = new URL(\n typeof refreshTokenWindowUrl === \"function\" ? refreshTokenWindowUrl() : refreshTokenWindowUrl,\n );\n // added only refresh tag to autoclose window after flow\n url.searchParams.append(OAUTH_REFRESH_QUERY, \"true\");\n\n // try open window with both of action\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n windowInstance ??= window.open(url.toString(), \"_blank\");\n\n if (windowInstance) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n const windowCloseObserver = setInterval(() => {\n if (windowInstance.closed) {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n }\n }, closeObserveSubWindowInterval);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, waitSubWindow);\n } else {\n if (\"onSubWindowOpenError\" in opts) opts.onSubWindowOpenError?.();\n else {\n await startLoginFlow();\n }\n waiting = false;\n\n return;\n }\n\n await waitUntil(() => waiting);\n processing = false;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLoginFlow(\n loginUrlArg: (() => string) | string | undefined = loginUrl,\n delay: number = 2000,\n ) {\n loginUrlArg ??= `/api/v1/auth?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}&comeback_path=${window.location.pathname}${encodeURIComponent(window.location.search)}`;\n window.location.replace(typeof loginUrlArg === \"function\" ? loginUrlArg() : loginUrlArg);\n await wait(delay);\n return null;\n }\n\n // Trigger an oauth flow through some proxy server\n async function startLogoutFlow(\n logoutUrlArg: (() => string) | string | undefined = logoutUrl,\n delay: number = 2000,\n ) {\n logoutUrlArg ??= `/api/v1/auth/logout?frontend_protocol=${window.location.protocol.replace(\":\", \"\")}&frontend_host=${window.location.host}`;\n window.location.replace(typeof logoutUrlArg === \"function\" ? logoutUrlArg() : logoutUrlArg);\n await wait(delay);\n return null;\n }\n\n async function startRefreshFlow() {\n const tokenInfo = await tokenRequest?.();\n if (tokenInfo) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n if (tokenInfo.expires !== 0) {\n tokenInfo.expires = getExpiresDate(tokenInfo.expires);\n localStorage.setItem(expiresTokenStorageName, String(tokenInfo.expires));\n }\n }\n return tokenInfo;\n }\n\n // Processing an oauth flow: extract expires, get token, close sub windows, check if logout/clear/error url\n async function register(): Promise<boolean> {\n if (window.location.pathname === logoutPageUrl) {\n await startLogoutFlow();\n return false;\n }\n if (window.location.pathname === clearPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n window.location.replace(afterClearPageUrl);\n return false;\n }\n if (window.location.pathname === errorPageUrl) {\n localStorage.removeItem(expiresTokenStorageName);\n localStorage.removeItem(tokenStorageName);\n return false;\n }\n\n const queries = getQueryValues([expiresTokenQueryName, OAUTH_REFRESH_QUERY]);\n\n const refreshQuery = queries?.[OAUTH_REFRESH_QUERY];\n const expiresQuery = queries?.[expiresTokenQueryName];\n\n /** Is OnlyRefresh window */\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : null;\n /** Expires token */\n const expires = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : null;\n\n if (checkExpires(expires)) {\n localStorage.setItem(expiresTokenStorageName, String(getExpiresDate(+expires)));\n if (tokenRequest) {\n const tokenInfo = await tokenRequest();\n if (tokenInfo != undefined) {\n localStorage.setItem(tokenStorageName, tokenInfo.token);\n }\n }\n\n /** Close if OnlyRefresh window */\n if (isRefresh) {\n const channel = new BroadcastChannel(OAUTH_REFRESH_QUERY);\n channel.postMessage(true);\n channel.close();\n window.close();\n return false;\n }\n\n /** Delete expires query */\n const url = new URL(window.location.href);\n url.searchParams.delete(expiresTokenQueryName);\n window.location.replace(url.toString());\n return false;\n }\n\n return true;\n }\n\n async function beforeHandlerCheckExpires<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n const expires = localStorage.getItem(expiresTokenStorageName);\n if (checkExpires(expires)) {\n return;\n }\n await refetchAfterRefreshFlow(request);\n }\n\n async function beforeHandlerSetToken<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<void> {\n if (processing) await waitUntil(() => processing);\n\n const token = request.token ?? localStorage.getItem(tokenStorageName);\n const isSameOrigin =\n request.path.includes(window.location.origin) || !startWith(request.path, \"http\");\n if ((!isSameOrigin || forceSetToken) && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n return {\n startRefreshFlow,\n startLoginFlowInSubWindow,\n startLoginFlow,\n startLogoutFlow,\n refetchAfterRefreshFlow,\n beforeHandlerSetToken,\n beforeHandlerCheckExpires,\n register,\n get isServicePage() {\n return [errorPageUrl, clearPageUrl, logoutPageUrl].some(\n (u) => document.location.pathname === u,\n );\n },\n get processing() {\n return processing;\n },\n get token() {\n return localStorage.getItem(tokenStorageName);\n },\n get expires() {\n const expires = localStorage.getItem(expiresTokenStorageName);\n return expires == undefined ? null : Number.isNaN(+expires) ? null : +expires;\n },\n get expired() {\n const expiresStr = localStorage.getItem(expiresTokenStorageName);\n const expires =\n expiresStr == undefined ? null : Number.isNaN(+expiresStr) ? null : +expiresStr;\n return expires == undefined ? true : Date.now() > expires;\n },\n };\n}\n"],"names":[],"mappings":"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"}
|