kui-utils 0.0.24 → 0.0.25

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/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DependencyList } from 'react';
3
+ import { Loader as Loader$1 } from 'kui-utils';
3
4
 
4
5
  declare function useForkRef<Instance>(...refs: Array<React.Ref<Instance> | undefined>): React.RefCallback<Instance> | null;
5
6
 
@@ -152,6 +153,13 @@ declare const toNumber: (value?: string | number | null | undefined) => number |
152
153
 
153
154
  declare const updateQueryParams: (newLink: string) => void;
154
155
 
156
+ declare function addToIndexDBWithQueue(db: any, storeName: string, data: any, loader: Loader$1): void;
157
+ declare const readFromIndexDB: (db: any, name: string, loader: Loader$1) => Promise<any>;
158
+ declare const initIndexDB: (dbName: string, onupgradeneeded: (db: any) => void, loader: Loader$1, setIndexDB: (db: any) => void) => void;
159
+ declare const addIndexDBStore: (db: any, name: string) => void;
160
+ declare const clearIndexStore: (db: any, name: string) => void;
161
+ declare const clearIndexStores: (db: any, stores: string[]) => void;
162
+
155
163
  declare type CookieOptions = {
156
164
  path?: string;
157
165
  "max-age"?: number;
@@ -208,4 +216,4 @@ declare class KUIUtilsSettings {
208
216
  }
209
217
  declare const kuiUtilsSettings: KUIUtilsSettings;
210
218
 
211
- export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
219
+ export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, ObjectType, PaginationRes, Paginator, PhoneParams, ResHandlerParams, SortOrder, SortingFilter, Values, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, _default as countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
package/index.js CHANGED
@@ -2,7 +2,8 @@ import * as React from 'react';
2
2
  import { useState, useMemo, useEffect } from 'react';
3
3
  import _ from 'lodash';
4
4
  import { useLocation } from 'react-router-dom';
5
- import { makeAutoObservable } from 'mobx';
5
+ import { isObservable, toJS, makeAutoObservable } from 'mobx';
6
+ import { DateTime } from 'luxon';
6
7
 
7
8
  function setRef(ref, value) {
8
9
  if (typeof ref === "function") {
@@ -2018,6 +2019,110 @@ var updateQueryParams = function (newLink) {
2018
2019
  window.history.pushState({ route: route }, "", route);
2019
2020
  };
2020
2021
 
2022
+ function cleanObjectForIndexDB(value) {
2023
+ if (typeof value === "undefined")
2024
+ return null;
2025
+ if (value instanceof File)
2026
+ return value;
2027
+ if (value instanceof DateTime)
2028
+ return value.toISO();
2029
+ if (isObservable(value)) {
2030
+ return cleanObjectForIndexDB(toJS(value));
2031
+ }
2032
+ if (Array.isArray(value)) {
2033
+ return value.map(function (item) { return cleanObjectForIndexDB(item); });
2034
+ }
2035
+ if (value !== null && typeof value === "object") {
2036
+ var plainObject = {};
2037
+ // eslint-disable-next-line no-restricted-syntax
2038
+ for (var key in value) {
2039
+ // eslint-disable-next-line no-prototype-builtins
2040
+ if (value.hasOwnProperty(key)) {
2041
+ var objectValue = value[key];
2042
+ if (typeof objectValue !== "function" && objectValue !== undefined) {
2043
+ plainObject[key] = cleanObjectForIndexDB(objectValue);
2044
+ }
2045
+ }
2046
+ }
2047
+ return plainObject;
2048
+ }
2049
+ return value;
2050
+ }
2051
+ var transactionQueue = Promise.resolve();
2052
+ function addToIndexDBWithQueue(db, storeName, data, loader) {
2053
+ transactionQueue = transactionQueue
2054
+ .then(function () {
2055
+ return new Promise(function (resolve, reject) {
2056
+ if (db && db.objectStoreNames.contains(storeName) && data) {
2057
+ var transaction = db.transaction(storeName, "readwrite");
2058
+ var store = transaction.objectStore(storeName);
2059
+ // eslint-disable-next-line no-param-reassign
2060
+ data.id = 1;
2061
+ var formattedData = cleanObjectForIndexDB(data);
2062
+ var request_1 = store.put(formattedData);
2063
+ request_1.onsuccess = function () {
2064
+ resolve(request_1);
2065
+ };
2066
+ request_1.onerror = function () {
2067
+ loader.setError("Не удалось сохранить данные в локальное хранилище");
2068
+ reject();
2069
+ };
2070
+ }
2071
+ });
2072
+ })
2073
+ .catch(function (error) {
2074
+ console.error("Ошибка в очереди транзакций:", error);
2075
+ });
2076
+ }
2077
+ var readFromIndexDB = function (db, name, loader) { return __awaiter(void 0, void 0, void 0, function () {
2078
+ var transaction, request_2;
2079
+ return __generator(this, function (_a) {
2080
+ if (db.objectStoreNames.contains(name)) {
2081
+ transaction = db.transaction(name, "readonly").objectStore(name);
2082
+ request_2 = transaction.getAll();
2083
+ return [2 /*return*/, new Promise(function (resolve, reject) {
2084
+ request_2.onerror = function () {
2085
+ reject();
2086
+ loader.setError("Не удалось сохранить данные в локальное хранилище");
2087
+ };
2088
+ request_2.onsuccess = function () {
2089
+ var _a;
2090
+ resolve((_a = request_2.result) === null || _a === void 0 ? void 0 : _a[0]);
2091
+ };
2092
+ })];
2093
+ }
2094
+ return [2 /*return*/, null];
2095
+ });
2096
+ }); };
2097
+ var initIndexDB = function (dbName, onupgradeneeded, loader, setIndexDB) {
2098
+ var dbRequest = indexedDB.open(dbName, 1);
2099
+ dbRequest.onerror = function () {
2100
+ loader.setError("Ошибка при открытии хранилища на устройстве. Данные не будут сохраняться локально");
2101
+ };
2102
+ dbRequest.onsuccess = function () {
2103
+ var db = dbRequest.result;
2104
+ setIndexDB(db);
2105
+ };
2106
+ dbRequest.onupgradeneeded = function () { return onupgradeneeded(dbRequest.result); };
2107
+ };
2108
+ var addIndexDBStore = function (db, name) {
2109
+ if (db && !db.objectStoreNames.contains(name)) {
2110
+ db.createObjectStore(name, { keyPath: "id" });
2111
+ }
2112
+ };
2113
+ var clearIndexStore = function (db, name) {
2114
+ if (db) {
2115
+ var transaction = db.transaction(name, "readwrite");
2116
+ var objectStore = transaction.objectStore(name);
2117
+ objectStore.clear();
2118
+ }
2119
+ };
2120
+ var clearIndexStores = function (db, stores) {
2121
+ Array.from(stores).forEach(function (name) {
2122
+ clearIndexStore(db, name);
2123
+ });
2124
+ };
2125
+
2021
2126
  function setCookie(name, value, options) {
2022
2127
  if (options === void 0) { options = {}; }
2023
2128
  var cookieOptions = __assign({ path: "/" }, options);
@@ -2335,5 +2440,5 @@ var simplePasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{10,
2335
2440
  var mediumPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{12,}$/;
2336
2441
  var strongPasswordRegExp = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{14,}$/;
2337
2442
 
2338
- export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addLeadZero, addToArrayByCondition, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
2443
+ export { Editor, kuiUtilsSettings as KUIUtilsSettings, Loader, MultistepForm, Paginator, SortingFilter, accountRegExp, addIndexDBStore, addLeadZero, addToArrayByCondition, addToIndexDBWithQueue, applyMask, bicRegExp, callPromises, carNumberRegExp, checkIsIOS, cleanEmptyFields, clearIndexStore, clearIndexStores, clearNotValidFields, copyInfo, corrAccountRegExp, countries, cropText, dateRegExp, declineByNumber, deleteCookie, emailRegExp, formatError, generateFormDataBody, getChangedValue, getCookie, getFileNameFromFile, getFileNameFromUrl, getNestedData, getPhoneNumberFromPhoneParams, getPhoneParamsFromString, initIndexDB, innRegExp, isValidWithMaskExp, mediumPasswordRegExp, monthYearRegExp, phoneRegExp, promisesWithCallback, readFromIndexDB, resHandler, setCookie, simplePasswordRegExp, strongPasswordRegExp, swiftRegExp, toNumber, updateQueryParams, useDebounce, useForkRef, useTabIndex, useToggle, useWindowWidth };
2339
2444
  //# sourceMappingURL=index.js.map