@savers_app/react-native-sdk 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +508 -0
- package/lib/module/@types/@react-native-async-storage__async-storage.d.js +2 -0
- package/lib/module/@types/@react-native-async-storage__async-storage.d.js.map +1 -0
- package/lib/module/@types/@react-native-community__geolocation.d.js +2 -0
- package/lib/module/@types/@react-native-community__geolocation.d.js.map +1 -0
- package/lib/module/@types/react-native-aes-gcm-crypto.d.js +2 -0
- package/lib/module/@types/react-native-aes-gcm-crypto.d.js.map +1 -0
- package/lib/module/@types/react-native-device-info.d.js +2 -0
- package/lib/module/@types/react-native-device-info.d.js.map +1 -0
- package/lib/module/core/runtime.js +67 -0
- package/lib/module/core/runtime.js.map +1 -0
- package/lib/module/data/models/apiResponse.js +19 -0
- package/lib/module/data/models/apiResponse.js.map +1 -0
- package/lib/module/data/models/onboardingModel.js +67 -0
- package/lib/module/data/models/onboardingModel.js.map +1 -0
- package/lib/module/data/network/apiClient.js +109 -0
- package/lib/module/data/network/apiClient.js.map +1 -0
- package/lib/module/data/network/apiEndpoints.js +6 -0
- package/lib/module/data/network/apiEndpoints.js.map +1 -0
- package/lib/module/data/network/apiExceptionHandler.js +16 -0
- package/lib/module/data/network/apiExceptionHandler.js.map +1 -0
- package/lib/module/data/network/apiRepository.js +70 -0
- package/lib/module/data/network/apiRepository.js.map +1 -0
- package/lib/module/data/network/apiService.js +66 -0
- package/lib/module/data/network/apiService.js.map +1 -0
- package/lib/module/data/network/dataTypeUtils.js +77 -0
- package/lib/module/data/network/dataTypeUtils.js.map +1 -0
- package/lib/module/data/network/interceptors/authInterceptor.js +69 -0
- package/lib/module/data/network/interceptors/authInterceptor.js.map +1 -0
- package/lib/module/data/network/interceptors/errorInterceptor.js +15 -0
- package/lib/module/data/network/interceptors/errorInterceptor.js.map +1 -0
- package/lib/module/data/network/interceptors/loggingInterceptor.js +17 -0
- package/lib/module/data/network/interceptors/loggingInterceptor.js.map +1 -0
- package/lib/module/data/network/interceptors/networkInterceptor.js +22 -0
- package/lib/module/data/network/interceptors/networkInterceptor.js.map +1 -0
- package/lib/module/data/network/interceptors/retryInterceptor.js +22 -0
- package/lib/module/data/network/interceptors/retryInterceptor.js.map +1 -0
- package/lib/module/data/storage/asyncStorageManager.js +50 -0
- package/lib/module/data/storage/asyncStorageManager.js.map +1 -0
- package/lib/module/data/storage/deviceIdManager.js +45 -0
- package/lib/module/data/storage/deviceIdManager.js.map +1 -0
- package/lib/module/data/storage/keysManager.js +70 -0
- package/lib/module/data/storage/keysManager.js.map +1 -0
- package/lib/module/data/storage/locationManager.js +30 -0
- package/lib/module/data/storage/locationManager.js.map +1 -0
- package/lib/module/data/storage/sessionManager.js +12 -0
- package/lib/module/data/storage/sessionManager.js.map +1 -0
- package/lib/module/data/storage/storageKeys.js +7 -0
- package/lib/module/data/storage/storageKeys.js.map +1 -0
- package/lib/module/data/storage/storageManager.js +76 -0
- package/lib/module/data/storage/storageManager.js.map +1 -0
- package/lib/module/index.js +20 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/services/device/location.js +47 -0
- package/lib/module/services/device/location.js.map +1 -0
- package/lib/module/services/navigation/dialPad.js +29 -0
- package/lib/module/services/navigation/dialPad.js.map +1 -0
- package/lib/module/services/navigation/goBackNavigation.js +22 -0
- package/lib/module/services/navigation/goBackNavigation.js.map +1 -0
- package/lib/module/services/navigation/openBrowser.js +8 -0
- package/lib/module/services/navigation/openBrowser.js.map +1 -0
- package/lib/module/services/navigation/openMap.js +26 -0
- package/lib/module/services/navigation/openMap.js.map +1 -0
- package/lib/module/services/permissions/permissionManager.js +28 -0
- package/lib/module/services/permissions/permissionManager.js.map +1 -0
- package/lib/module/services/url/urlGenerator.js +90 -0
- package/lib/module/services/url/urlGenerator.js.map +1 -0
- package/lib/module/services/webview/messageHandler.js +69 -0
- package/lib/module/services/webview/messageHandler.js.map +1 -0
- package/lib/module/utils/dependencyManager.js +51 -0
- package/lib/module/utils/dependencyManager.js.map +1 -0
- package/lib/module/utils/encryption.js +43 -0
- package/lib/module/utils/encryption.js.map +1 -0
- package/lib/module/utils/errors.js +9 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/logger.js +14 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/platformManager.js +14 -0
- package/lib/module/utils/platformManager.js.map +1 -0
- package/lib/module/utils/validator.js +26 -0
- package/lib/module/utils/validator.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/core/runtime.d.ts +10 -0
- package/lib/typescript/src/core/runtime.d.ts.map +1 -0
- package/lib/typescript/src/data/models/apiResponse.d.ts +9 -0
- package/lib/typescript/src/data/models/apiResponse.d.ts.map +1 -0
- package/lib/typescript/src/data/models/onboardingModel.d.ts +24 -0
- package/lib/typescript/src/data/models/onboardingModel.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiClient.d.ts +17 -0
- package/lib/typescript/src/data/network/apiClient.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiEndpoints.d.ts +4 -0
- package/lib/typescript/src/data/network/apiEndpoints.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiExceptionHandler.d.ts +3 -0
- package/lib/typescript/src/data/network/apiExceptionHandler.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiRepository.d.ts +19 -0
- package/lib/typescript/src/data/network/apiRepository.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiService.d.ts +19 -0
- package/lib/typescript/src/data/network/apiService.d.ts.map +1 -0
- package/lib/typescript/src/data/network/dataTypeUtils.d.ts +10 -0
- package/lib/typescript/src/data/network/dataTypeUtils.d.ts.map +1 -0
- package/lib/typescript/src/data/network/interceptors/authInterceptor.d.ts +13 -0
- package/lib/typescript/src/data/network/interceptors/authInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/data/network/interceptors/errorInterceptor.d.ts +4 -0
- package/lib/typescript/src/data/network/interceptors/errorInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/data/network/interceptors/loggingInterceptor.d.ts +5 -0
- package/lib/typescript/src/data/network/interceptors/loggingInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/data/network/interceptors/networkInterceptor.d.ts +4 -0
- package/lib/typescript/src/data/network/interceptors/networkInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/data/network/interceptors/retryInterceptor.d.ts +7 -0
- package/lib/typescript/src/data/network/interceptors/retryInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/asyncStorageManager.d.ts +13 -0
- package/lib/typescript/src/data/storage/asyncStorageManager.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/deviceIdManager.d.ts +2 -0
- package/lib/typescript/src/data/storage/deviceIdManager.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/keysManager.d.ts +29 -0
- package/lib/typescript/src/data/storage/keysManager.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/locationManager.d.ts +21 -0
- package/lib/typescript/src/data/storage/locationManager.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/sessionManager.d.ts +3 -0
- package/lib/typescript/src/data/storage/sessionManager.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/storageKeys.d.ts +5 -0
- package/lib/typescript/src/data/storage/storageKeys.d.ts.map +1 -0
- package/lib/typescript/src/data/storage/storageManager.d.ts +16 -0
- package/lib/typescript/src/data/storage/storageManager.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +18 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/services/device/location.d.ts +8 -0
- package/lib/typescript/src/services/device/location.d.ts.map +1 -0
- package/lib/typescript/src/services/navigation/dialPad.d.ts +3 -0
- package/lib/typescript/src/services/navigation/dialPad.d.ts.map +1 -0
- package/lib/typescript/src/services/navigation/goBackNavigation.d.ts +4 -0
- package/lib/typescript/src/services/navigation/goBackNavigation.d.ts.map +1 -0
- package/lib/typescript/src/services/navigation/openBrowser.d.ts +2 -0
- package/lib/typescript/src/services/navigation/openBrowser.d.ts.map +1 -0
- package/lib/typescript/src/services/navigation/openMap.d.ts +2 -0
- package/lib/typescript/src/services/navigation/openMap.d.ts.map +1 -0
- package/lib/typescript/src/services/permissions/permissionManager.d.ts +4 -0
- package/lib/typescript/src/services/permissions/permissionManager.d.ts.map +1 -0
- package/lib/typescript/src/services/url/urlGenerator.d.ts +43 -0
- package/lib/typescript/src/services/url/urlGenerator.d.ts.map +1 -0
- package/lib/typescript/src/services/webview/messageHandler.d.ts +2 -0
- package/lib/typescript/src/services/webview/messageHandler.d.ts.map +1 -0
- package/lib/typescript/src/utils/dependencyManager.d.ts +31 -0
- package/lib/typescript/src/utils/dependencyManager.d.ts.map +1 -0
- package/lib/typescript/src/utils/encryption.d.ts +5 -0
- package/lib/typescript/src/utils/encryption.d.ts.map +1 -0
- package/lib/typescript/src/utils/errors.d.ts +4 -0
- package/lib/typescript/src/utils/errors.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +6 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/platformManager.d.ts +4 -0
- package/lib/typescript/src/utils/platformManager.d.ts.map +1 -0
- package/lib/typescript/src/utils/validator.d.ts +4 -0
- package/lib/typescript/src/utils/validator.d.ts.map +1 -0
- package/package.json +176 -0
- package/src/@types/@react-native-async-storage__async-storage.d.ts +7 -0
- package/src/@types/@react-native-community__geolocation.d.ts +18 -0
- package/src/@types/react-native-aes-gcm-crypto.d.ts +22 -0
- package/src/@types/react-native-device-info.d.ts +3 -0
- package/src/core/runtime.ts +80 -0
- package/src/data/models/apiResponse.ts +28 -0
- package/src/data/models/onboardingModel.ts +99 -0
- package/src/data/network/apiClient.ts +148 -0
- package/src/data/network/apiEndpoints.ts +3 -0
- package/src/data/network/apiExceptionHandler.ts +16 -0
- package/src/data/network/apiRepository.ts +106 -0
- package/src/data/network/apiService.ts +72 -0
- package/src/data/network/dataTypeUtils.ts +78 -0
- package/src/data/network/interceptors/authInterceptor.ts +77 -0
- package/src/data/network/interceptors/errorInterceptor.ts +13 -0
- package/src/data/network/interceptors/loggingInterceptor.ts +16 -0
- package/src/data/network/interceptors/networkInterceptor.ts +20 -0
- package/src/data/network/interceptors/retryInterceptor.ts +24 -0
- package/src/data/storage/asyncStorageManager.ts +56 -0
- package/src/data/storage/deviceIdManager.ts +46 -0
- package/src/data/storage/keysManager.ts +89 -0
- package/src/data/storage/locationManager.ts +39 -0
- package/src/data/storage/sessionManager.ts +11 -0
- package/src/data/storage/storageKeys.ts +4 -0
- package/src/data/storage/storageManager.ts +83 -0
- package/src/index.tsx +17 -0
- package/src/services/device/location.ts +51 -0
- package/src/services/navigation/dialPad.ts +39 -0
- package/src/services/navigation/goBackNavigation.ts +22 -0
- package/src/services/navigation/openBrowser.ts +6 -0
- package/src/services/navigation/openMap.ts +39 -0
- package/src/services/permissions/permissionManager.ts +33 -0
- package/src/services/url/urlGenerator.ts +132 -0
- package/src/services/webview/messageHandler.ts +48 -0
- package/src/utils/dependencyManager.ts +82 -0
- package/src/utils/encryption.ts +58 -0
- package/src/utils/errors.ts +6 -0
- package/src/utils/logger.ts +11 -0
- package/src/utils/platformManager.ts +14 -0
- package/src/utils/validator.ts +29 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Utilities / Helpers
|
|
4
|
+
import { resolveNativeDependencies } from "../../utils/dependencyManager.js";
|
|
5
|
+
function ensureStorage() {
|
|
6
|
+
const {
|
|
7
|
+
AsyncStorage
|
|
8
|
+
} = resolveNativeDependencies();
|
|
9
|
+
if (!AsyncStorage) throw new Error('ASYNC_STORAGE_NOT_AVAILABLE');
|
|
10
|
+
return AsyncStorage;
|
|
11
|
+
}
|
|
12
|
+
export async function storageGet(key) {
|
|
13
|
+
const storage = ensureStorage();
|
|
14
|
+
return storage.getItem(key);
|
|
15
|
+
}
|
|
16
|
+
export async function storageSet(key, value) {
|
|
17
|
+
const storage = ensureStorage();
|
|
18
|
+
await storage.setItem(key, value);
|
|
19
|
+
}
|
|
20
|
+
export async function storageRemove(key) {
|
|
21
|
+
const storage = ensureStorage();
|
|
22
|
+
if (typeof storage.removeItem === 'function') {
|
|
23
|
+
await storage.removeItem(key);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
throw new Error('ASYNC_STORAGE_REMOVE_NOT_SUPPORTED');
|
|
27
|
+
}
|
|
28
|
+
export async function storageGetJSON(key) {
|
|
29
|
+
const raw = await storageGet(key);
|
|
30
|
+
if (!raw) return undefined;
|
|
31
|
+
try {
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
} catch {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function storageSetJSON(key, value) {
|
|
38
|
+
await storageSet(key, JSON.stringify(value));
|
|
39
|
+
}
|
|
40
|
+
export function createStorageNamespace(ns) {
|
|
41
|
+
const prefix = ns ? `${ns}:` : '';
|
|
42
|
+
return {
|
|
43
|
+
get: key => storageGet(prefix + key),
|
|
44
|
+
set: (key, value) => storageSet(prefix + key, value),
|
|
45
|
+
remove: key => storageRemove(prefix + key),
|
|
46
|
+
getJSON: key => storageGetJSON(prefix + key),
|
|
47
|
+
setJSON: (key, value) => storageSetJSON(prefix + key, value)
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=asyncStorageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["resolveNativeDependencies","ensureStorage","AsyncStorage","Error","storageGet","key","storage","getItem","storageSet","value","setItem","storageRemove","removeItem","storageGetJSON","raw","undefined","JSON","parse","storageSetJSON","stringify","createStorageNamespace","ns","prefix","get","set","remove","getJSON","setJSON"],"sourceRoot":"../../../../src","sources":["data/storage/asyncStorageManager.ts"],"mappings":";;AAAA;AACA,SAASA,yBAAyB,QAAQ,kCAA+B;AAEzE,SAASC,aAAaA,CAAA,EAAG;EACvB,MAAM;IAAEC;EAAa,CAAC,GAAGF,yBAAyB,CAAC,CAAC;EACpD,IAAI,CAACE,YAAY,EAAE,MAAM,IAAIC,KAAK,CAAC,6BAA6B,CAAC;EACjE,OAAOD,YAAY;AACrB;AAEA,OAAO,eAAeE,UAAUA,CAACC,GAAW,EAA0B;EACpE,MAAMC,OAAO,GAAGL,aAAa,CAAC,CAAC;EAC/B,OAAOK,OAAO,CAACC,OAAO,CAACF,GAAG,CAAC;AAC7B;AAEA,OAAO,eAAeG,UAAUA,CAACH,GAAW,EAAEI,KAAa,EAAiB;EAC1E,MAAMH,OAAO,GAAGL,aAAa,CAAC,CAAC;EAC/B,MAAMK,OAAO,CAACI,OAAO,CAACL,GAAG,EAAEI,KAAK,CAAC;AACnC;AAEA,OAAO,eAAeE,aAAaA,CAACN,GAAW,EAAiB;EAC9D,MAAMC,OAAO,GAAGL,aAAa,CAAC,CAAC;EAC/B,IAAI,OAAOK,OAAO,CAACM,UAAU,KAAK,UAAU,EAAE;IAC5C,MAAMN,OAAO,CAACM,UAAU,CAACP,GAAG,CAAC;IAC7B;EACF;EACA,MAAM,IAAIF,KAAK,CAAC,oCAAoC,CAAC;AACvD;AAEA,OAAO,eAAeU,cAAcA,CAAIR,GAAW,EAA0B;EAC3E,MAAMS,GAAG,GAAG,MAAMV,UAAU,CAACC,GAAG,CAAC;EACjC,IAAI,CAACS,GAAG,EAAE,OAAOC,SAAS;EAC1B,IAAI;IACF,OAAOC,IAAI,CAACC,KAAK,CAACH,GAAG,CAAC;EACxB,CAAC,CAAC,MAAM;IACN,OAAOC,SAAS;EAClB;AACF;AAEA,OAAO,eAAeG,cAAcA,CAClCb,GAAW,EACXI,KAAc,EACC;EACf,MAAMD,UAAU,CAACH,GAAG,EAAEW,IAAI,CAACG,SAAS,CAACV,KAAK,CAAC,CAAC;AAC9C;AAEA,OAAO,SAASW,sBAAsBA,CAACC,EAAU,EAAE;EACjD,MAAMC,MAAM,GAAGD,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,EAAE;EACjC,OAAO;IACLE,GAAG,EAAGlB,GAAW,IAAKD,UAAU,CAACkB,MAAM,GAAGjB,GAAG,CAAC;IAC9CmB,GAAG,EAAEA,CAACnB,GAAW,EAAEI,KAAa,KAAKD,UAAU,CAACc,MAAM,GAAGjB,GAAG,EAAEI,KAAK,CAAC;IACpEgB,MAAM,EAAGpB,GAAW,IAAKM,aAAa,CAACW,MAAM,GAAGjB,GAAG,CAAC;IACpDqB,OAAO,EAAMrB,GAAW,IAAKQ,cAAc,CAAIS,MAAM,GAAGjB,GAAG,CAAC;IAC5DsB,OAAO,EAAEA,CAACtB,GAAW,EAAEI,KAAc,KACnCS,cAAc,CAACI,MAAM,GAAGjB,GAAG,EAAEI,KAAK;EACtC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Storage Utilities
|
|
4
|
+
import { storageGet, storageSet } from "./asyncStorageManager.js";
|
|
5
|
+
import { SDK_DEVICE_ID } from "./storageKeys.js";
|
|
6
|
+
|
|
7
|
+
// Utilities / Helpers
|
|
8
|
+
import { resolveNativeDependencies } from "../../utils/dependencyManager.js";
|
|
9
|
+
let cachedDeviceId = null;
|
|
10
|
+
async function getFromStorage() {
|
|
11
|
+
const key = SDK_DEVICE_ID;
|
|
12
|
+
try {
|
|
13
|
+
const existing = await storageGet(key);
|
|
14
|
+
return existing ?? null;
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function saveToStorage(id) {
|
|
20
|
+
const key = SDK_DEVICE_ID;
|
|
21
|
+
try {
|
|
22
|
+
await storageSet(key, id);
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
export async function getDeviceId() {
|
|
26
|
+
if (cachedDeviceId) return cachedDeviceId;
|
|
27
|
+
const stored = await getFromStorage();
|
|
28
|
+
if (stored) {
|
|
29
|
+
cachedDeviceId = stored;
|
|
30
|
+
return stored;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const {
|
|
34
|
+
DeviceInfo
|
|
35
|
+
} = resolveNativeDependencies();
|
|
36
|
+
if (DeviceInfo?.getUniqueId) {
|
|
37
|
+
const uniqueId = await DeviceInfo.getUniqueId();
|
|
38
|
+
cachedDeviceId = uniqueId;
|
|
39
|
+
await saveToStorage(uniqueId);
|
|
40
|
+
return uniqueId;
|
|
41
|
+
}
|
|
42
|
+
} catch {}
|
|
43
|
+
throw new Error('DEVICE_ID_UNAVAILABLE: install react-native-device-info or provide a custom id');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=deviceIdManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["storageGet","storageSet","SDK_DEVICE_ID","resolveNativeDependencies","cachedDeviceId","getFromStorage","key","existing","saveToStorage","id","getDeviceId","stored","DeviceInfo","getUniqueId","uniqueId","Error"],"sourceRoot":"../../../../src","sources":["data/storage/deviceIdManager.ts"],"mappings":";;AAAA;AACA,SAASA,UAAU,EAAEC,UAAU,QAAQ,0BAAuB;AAC9D,SAASC,aAAa,QAAQ,kBAAe;;AAE7C;AACA,SAASC,yBAAyB,QAAQ,kCAA+B;AAEzE,IAAIC,cAA6B,GAAG,IAAI;AAExC,eAAeC,cAAcA,CAAA,EAA2B;EACtD,MAAMC,GAAG,GAAGJ,aAAa;EACzB,IAAI;IACF,MAAMK,QAAQ,GAAG,MAAMP,UAAU,CAACM,GAAG,CAAC;IACtC,OAAOC,QAAQ,IAAI,IAAI;EACzB,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,eAAeC,aAAaA,CAACC,EAAU,EAAiB;EACtD,MAAMH,GAAG,GAAGJ,aAAa;EACzB,IAAI;IACF,MAAMD,UAAU,CAACK,GAAG,EAAEG,EAAE,CAAC;EAC3B,CAAC,CAAC,MAAM,CAAC;AACX;AAEA,OAAO,eAAeC,WAAWA,CAAA,EAAoB;EACnD,IAAIN,cAAc,EAAE,OAAOA,cAAc;EACzC,MAAMO,MAAM,GAAG,MAAMN,cAAc,CAAC,CAAC;EACrC,IAAIM,MAAM,EAAE;IACVP,cAAc,GAAGO,MAAM;IACvB,OAAOA,MAAM;EACf;EACA,IAAI;IACF,MAAM;MAAEC;IAAW,CAAC,GAAGT,yBAAyB,CAAC,CAAC;IAClD,IAAIS,UAAU,EAAEC,WAAW,EAAE;MAC3B,MAAMC,QAAQ,GAAG,MAAMF,UAAU,CAACC,WAAW,CAAC,CAAC;MAC/CT,cAAc,GAAGU,QAAQ;MACzB,MAAMN,aAAa,CAACM,QAAQ,CAAC;MAC7B,OAAOA,QAAQ;IACjB;EACF,CAAC,CAAC,MAAM,CAAC;EACT,MAAM,IAAIC,KAAK,CACb,gFACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class KeysManager {
|
|
4
|
+
apiKey = null;
|
|
5
|
+
encryptionKey = null;
|
|
6
|
+
pRefCode = null;
|
|
7
|
+
authMode = null;
|
|
8
|
+
setApiKey(apiKey) {
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
}
|
|
11
|
+
getApiKey() {
|
|
12
|
+
return this.apiKey ?? null;
|
|
13
|
+
}
|
|
14
|
+
setEncryptionKey(encryptionKey) {
|
|
15
|
+
this.encryptionKey = encryptionKey;
|
|
16
|
+
}
|
|
17
|
+
getEncryptionKey() {
|
|
18
|
+
return this.encryptionKey ?? null;
|
|
19
|
+
}
|
|
20
|
+
setPRefCode(pRefCode) {
|
|
21
|
+
this.pRefCode = pRefCode;
|
|
22
|
+
}
|
|
23
|
+
getPRefCode() {
|
|
24
|
+
return this.pRefCode ?? null;
|
|
25
|
+
}
|
|
26
|
+
setAuthMode(authMode) {
|
|
27
|
+
this.authMode = authMode;
|
|
28
|
+
}
|
|
29
|
+
getAuthMode() {
|
|
30
|
+
return this.authMode ?? null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const keysManager = new KeysManager();
|
|
34
|
+
export const setApiKey = async apiKey => {
|
|
35
|
+
keysManager.setApiKey(apiKey);
|
|
36
|
+
};
|
|
37
|
+
export async function getApiKey() {
|
|
38
|
+
return keysManager.getApiKey() ?? '-';
|
|
39
|
+
}
|
|
40
|
+
export const setEncryptionKey = async encryptionKey => {
|
|
41
|
+
keysManager.setEncryptionKey(encryptionKey);
|
|
42
|
+
};
|
|
43
|
+
export async function getEncryptionKey() {
|
|
44
|
+
return keysManager.getEncryptionKey() ?? '-';
|
|
45
|
+
}
|
|
46
|
+
export function getApiKeySync() {
|
|
47
|
+
return keysManager.getApiKey();
|
|
48
|
+
}
|
|
49
|
+
export function getEncryptionKeySync() {
|
|
50
|
+
return keysManager.getEncryptionKey();
|
|
51
|
+
}
|
|
52
|
+
export const setPRefCode = async pRefCode => {
|
|
53
|
+
keysManager.setPRefCode(pRefCode);
|
|
54
|
+
};
|
|
55
|
+
export async function getPRefCode() {
|
|
56
|
+
return keysManager.getPRefCode() ?? '-';
|
|
57
|
+
}
|
|
58
|
+
export function getPRefCodeSync() {
|
|
59
|
+
return keysManager.getPRefCode();
|
|
60
|
+
}
|
|
61
|
+
export const setAuthMode = async authMode => {
|
|
62
|
+
keysManager.setAuthMode(authMode);
|
|
63
|
+
};
|
|
64
|
+
export async function getAuthMode() {
|
|
65
|
+
return keysManager.getAuthMode() ?? '-';
|
|
66
|
+
}
|
|
67
|
+
export function getAuthModeSync() {
|
|
68
|
+
return keysManager.getAuthMode();
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=keysManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["KeysManager","apiKey","encryptionKey","pRefCode","authMode","setApiKey","getApiKey","setEncryptionKey","getEncryptionKey","setPRefCode","getPRefCode","setAuthMode","getAuthMode","keysManager","getApiKeySync","getEncryptionKeySync","getPRefCodeSync","getAuthModeSync"],"sourceRoot":"../../../../src","sources":["data/storage/keysManager.ts"],"mappings":";;AAAA,MAAMA,WAAW,CAAC;EACRC,MAAM,GAAkB,IAAI;EAC5BC,aAAa,GAAkB,IAAI;EACnCC,QAAQ,GAAkB,IAAI;EAC9BC,QAAQ,GAAkB,IAAI;EAEtCC,SAASA,CAACJ,MAAc,EAAQ;IAC9B,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAEAK,SAASA,CAAA,EAAkB;IACzB,OAAO,IAAI,CAACL,MAAM,IAAI,IAAI;EAC5B;EAEAM,gBAAgBA,CAACL,aAAqB,EAAQ;IAC5C,IAAI,CAACA,aAAa,GAAGA,aAAa;EACpC;EAEAM,gBAAgBA,CAAA,EAAkB;IAChC,OAAO,IAAI,CAACN,aAAa,IAAI,IAAI;EACnC;EAEAO,WAAWA,CAACN,QAAgB,EAAQ;IAClC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAEAO,WAAWA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAACP,QAAQ,IAAI,IAAI;EAC9B;EAEAQ,WAAWA,CAACP,QAAgB,EAAQ;IAClC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC1B;EAEAQ,WAAWA,CAAA,EAAkB;IAC3B,OAAO,IAAI,CAACR,QAAQ,IAAI,IAAI;EAC9B;AACF;AAEA,OAAO,MAAMS,WAAW,GAAG,IAAIb,WAAW,CAAC,CAAC;AAE5C,OAAO,MAAMK,SAAS,GAAG,MAAOJ,MAAc,IAAoB;EAChEY,WAAW,CAACR,SAAS,CAACJ,MAAM,CAAC;AAC/B,CAAC;AAED,OAAO,eAAeK,SAASA,CAAA,EAAoB;EACjD,OAAOO,WAAW,CAACP,SAAS,CAAC,CAAC,IAAI,GAAG;AACvC;AAEA,OAAO,MAAMC,gBAAgB,GAAG,MAC9BL,aAAqB,IACH;EAClBW,WAAW,CAACN,gBAAgB,CAACL,aAAa,CAAC;AAC7C,CAAC;AACD,OAAO,eAAeM,gBAAgBA,CAAA,EAAoB;EACxD,OAAOK,WAAW,CAACL,gBAAgB,CAAC,CAAC,IAAI,GAAG;AAC9C;AAEA,OAAO,SAASM,aAAaA,CAAA,EAAkB;EAC7C,OAAOD,WAAW,CAACP,SAAS,CAAC,CAAC;AAChC;AAEA,OAAO,SAASS,oBAAoBA,CAAA,EAAkB;EACpD,OAAOF,WAAW,CAACL,gBAAgB,CAAC,CAAC;AACvC;AAEA,OAAO,MAAMC,WAAW,GAAG,MAAON,QAAgB,IAAoB;EACpEU,WAAW,CAACJ,WAAW,CAACN,QAAQ,CAAC;AACnC,CAAC;AAED,OAAO,eAAeO,WAAWA,CAAA,EAAoB;EACnD,OAAOG,WAAW,CAACH,WAAW,CAAC,CAAC,IAAI,GAAG;AACzC;AAEA,OAAO,SAASM,eAAeA,CAAA,EAAkB;EAC/C,OAAOH,WAAW,CAACH,WAAW,CAAC,CAAC;AAClC;AAEA,OAAO,MAAMC,WAAW,GAAG,MAAOP,QAAgB,IAAoB;EACpES,WAAW,CAACF,WAAW,CAACP,QAAQ,CAAC;AACnC,CAAC;AAED,OAAO,eAAeQ,WAAWA,CAAA,EAAoB;EACnD,OAAOC,WAAW,CAACD,WAAW,CAAC,CAAC,IAAI,GAAG;AACzC;AAEA,OAAO,SAASK,eAAeA,CAAA,EAAkB;EAC/C,OAAOJ,WAAW,CAACD,WAAW,CAAC,CAAC;AAClC","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class LocationManager {
|
|
4
|
+
lat = null;
|
|
5
|
+
lng = null;
|
|
6
|
+
setCoordinates(lat, lng) {
|
|
7
|
+
this.lat = lat;
|
|
8
|
+
this.lng = lng;
|
|
9
|
+
}
|
|
10
|
+
getCoordinates() {
|
|
11
|
+
if (this.lat === null || this.lng === null) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
lat: this.lat,
|
|
16
|
+
lng: this.lng
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export const locationManager = new LocationManager();
|
|
21
|
+
export const setLocationCoordinates = async (lat, lng) => {
|
|
22
|
+
locationManager.setCoordinates(lat, lng);
|
|
23
|
+
};
|
|
24
|
+
export async function getLocationCoordinates() {
|
|
25
|
+
return locationManager.getCoordinates();
|
|
26
|
+
}
|
|
27
|
+
export function getLocationCoordinatesSync() {
|
|
28
|
+
return locationManager.getCoordinates();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=locationManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LocationManager","lat","lng","setCoordinates","getCoordinates","locationManager","setLocationCoordinates","getLocationCoordinates","getLocationCoordinatesSync"],"sourceRoot":"../../../../src","sources":["data/storage/locationManager.ts"],"mappings":";;AAAA,MAAMA,eAAe,CAAC;EACZC,GAAG,GAAkB,IAAI;EACzBC,GAAG,GAAkB,IAAI;EAEjCC,cAAcA,CAACF,GAAW,EAAEC,GAAW,EAAQ;IAC7C,IAAI,CAACD,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,GAAG,GAAGA,GAAG;EAChB;EAEAE,cAAcA,CAAA,EAAwC;IACpD,IAAI,IAAI,CAACH,GAAG,KAAK,IAAI,IAAI,IAAI,CAACC,GAAG,KAAK,IAAI,EAAE;MAC1C,OAAO,IAAI;IACb;IACA,OAAO;MAAED,GAAG,EAAE,IAAI,CAACA,GAAG;MAAEC,GAAG,EAAE,IAAI,CAACA;IAAI,CAAC;EACzC;AACF;AAEA,OAAO,MAAMG,eAAe,GAAG,IAAIL,eAAe,CAAC,CAAC;AAEpD,OAAO,MAAMM,sBAAsB,GAAG,MAAAA,CACpCL,GAAW,EACXC,GAAW,KACO;EAClBG,eAAe,CAACF,cAAc,CAACF,GAAG,EAAEC,GAAG,CAAC;AAC1C,CAAC;AAED,OAAO,eAAeK,sBAAsBA,CAAA,EAGlC;EACR,OAAOF,eAAe,CAACD,cAAc,CAAC,CAAC;AACzC;AAEA,OAAO,SAASI,0BAA0BA,CAAA,EAGjC;EACP,OAAOH,eAAe,CAACD,cAAc,CAAC,CAAC;AACzC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Storage Utilities
|
|
4
|
+
import { storageSet, storageGet } from "./asyncStorageManager.js";
|
|
5
|
+
import { SDK_SESSION_ID } from "./storageKeys.js";
|
|
6
|
+
export const setSessionId = async sessionId => {
|
|
7
|
+
await storageSet(SDK_SESSION_ID, sessionId);
|
|
8
|
+
};
|
|
9
|
+
export const getSessionId = async () => {
|
|
10
|
+
return storageGet(SDK_SESSION_ID);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=sessionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["storageSet","storageGet","SDK_SESSION_ID","setSessionId","sessionId","getSessionId"],"sourceRoot":"../../../../src","sources":["data/storage/sessionManager.ts"],"mappings":";;AAAA;AACA,SAASA,UAAU,EAAEC,UAAU,QAAQ,0BAAuB;AAC9D,SAASC,cAAc,QAAQ,kBAAe;AAE9C,OAAO,MAAMC,YAAY,GAAG,MAAOC,SAAiB,IAAK;EACvD,MAAMJ,UAAU,CAACE,cAAc,EAAEE,SAAS,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,YAAY,GAAG,MAAAA,CAAA,KAAoC;EAC9D,OAAOJ,UAAU,CAACC,cAAc,CAAC;AACnC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export const SAVERS_API_KEY = 'SAVERS_API_KEY';
|
|
4
|
+
export const SAVERS_ENCRYPTION_KEY = 'SAVERS_ENCRYPTION_KEY';
|
|
5
|
+
export const SDK_SESSION_ID = 'SDK_SESSION_ID';
|
|
6
|
+
export const SDK_DEVICE_ID = 'SDK_DEVICE_ID';
|
|
7
|
+
//# sourceMappingURL=storageKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SAVERS_API_KEY","SAVERS_ENCRYPTION_KEY","SDK_SESSION_ID","SDK_DEVICE_ID"],"sourceRoot":"../../../../src","sources":["data/storage/storageKeys.ts"],"mappings":";;AAAA,OAAO,MAAMA,cAAc,GAAG,gBAAgB;AAC9C,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAC5D,OAAO,MAAMC,cAAc,GAAG,gBAAgB;AAC9C,OAAO,MAAMC,aAAa,GAAG,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Storage Utilities
|
|
4
|
+
import { storageGet, storageSet, storageRemove } from "./asyncStorageManager.js";
|
|
5
|
+
const cachePrefix = 'cache_';
|
|
6
|
+
const userIdKey = 'userId';
|
|
7
|
+
const isOnboardingSkipedKey = 'isOnboardingSkipedKey';
|
|
8
|
+
const isAuthSkipedKey = 'isAuthSkipedKey';
|
|
9
|
+
const authSkippedTimestampKey = 'authSkippedTimestamp';
|
|
10
|
+
const userSelectedLocationKey = 'userSelectedLocation';
|
|
11
|
+
const browsingModeKey = 'browsingMode';
|
|
12
|
+
export const StorageKeys = {
|
|
13
|
+
userId: userIdKey,
|
|
14
|
+
isOnboardingSkiped: isOnboardingSkipedKey,
|
|
15
|
+
isAuthSkiped: isAuthSkipedKey,
|
|
16
|
+
authSkippedTimestamp: authSkippedTimestampKey,
|
|
17
|
+
userSelectedLocation: userSelectedLocationKey,
|
|
18
|
+
browsingMode: browsingModeKey
|
|
19
|
+
};
|
|
20
|
+
export async function save(key, value) {
|
|
21
|
+
const fullKey = cachePrefix + key;
|
|
22
|
+
let dataToSave;
|
|
23
|
+
if (typeof value === 'string') {
|
|
24
|
+
dataToSave = value;
|
|
25
|
+
} else {
|
|
26
|
+
try {
|
|
27
|
+
dataToSave = JSON.stringify(value);
|
|
28
|
+
} catch {
|
|
29
|
+
dataToSave = String(value);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
await storageSet(fullKey, dataToSave);
|
|
33
|
+
}
|
|
34
|
+
export async function get(key) {
|
|
35
|
+
const fullKey = cachePrefix + key;
|
|
36
|
+
const raw = await storageGet(fullKey);
|
|
37
|
+
if (raw === null) return null;
|
|
38
|
+
if (raw.startsWith('{') || raw.startsWith('[')) {
|
|
39
|
+
try {
|
|
40
|
+
return JSON.parse(raw);
|
|
41
|
+
} catch {
|
|
42
|
+
return raw;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return raw;
|
|
46
|
+
}
|
|
47
|
+
export async function clear(key) {
|
|
48
|
+
const fullKey = cachePrefix + key;
|
|
49
|
+
await storageRemove(fullKey);
|
|
50
|
+
}
|
|
51
|
+
export async function clearAll() {
|
|
52
|
+
// Not supported by asyncStorageManager wrapper yet, would need extension.
|
|
53
|
+
// For now, we'll leave it as a TODO or implement using low level if exposed,
|
|
54
|
+
// but better to remove direct dependency on @react-native-async-storage/async-storage
|
|
55
|
+
// to support the unified approach.
|
|
56
|
+
// However, asyncStorageManager hides the implementation.
|
|
57
|
+
// Let's rely on the fact that clearAll was mainly for cache.
|
|
58
|
+
console.warn('clearAll not fully supported in unified storage yet');
|
|
59
|
+
}
|
|
60
|
+
export async function saveAuthSkippedTime() {
|
|
61
|
+
const timestamp = new Date().toISOString();
|
|
62
|
+
await save(authSkippedTimestampKey, timestamp);
|
|
63
|
+
}
|
|
64
|
+
export async function getAuthSkippedTime() {
|
|
65
|
+
const data = await get(authSkippedTimestampKey);
|
|
66
|
+
if (typeof data === 'string') {
|
|
67
|
+
try {
|
|
68
|
+
return new Date(data);
|
|
69
|
+
} catch {}
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
export async function clearAuthSkippedTime() {
|
|
74
|
+
await clear(authSkippedTimestampKey);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=storageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["storageGet","storageSet","storageRemove","cachePrefix","userIdKey","isOnboardingSkipedKey","isAuthSkipedKey","authSkippedTimestampKey","userSelectedLocationKey","browsingModeKey","StorageKeys","userId","isOnboardingSkiped","isAuthSkiped","authSkippedTimestamp","userSelectedLocation","browsingMode","save","key","value","fullKey","dataToSave","JSON","stringify","String","get","raw","startsWith","parse","clear","clearAll","console","warn","saveAuthSkippedTime","timestamp","Date","toISOString","getAuthSkippedTime","data","clearAuthSkippedTime"],"sourceRoot":"../../../../src","sources":["data/storage/storageManager.ts"],"mappings":";;AAAA;AACA,SAASA,UAAU,EAAEC,UAAU,EAAEC,aAAa,QAAQ,0BAAuB;AAE7E,MAAMC,WAAW,GAAG,QAAQ;AAE5B,MAAMC,SAAS,GAAG,QAAQ;AAC1B,MAAMC,qBAAqB,GAAG,uBAAuB;AACrD,MAAMC,eAAe,GAAG,iBAAiB;AACzC,MAAMC,uBAAuB,GAAG,sBAAsB;AACtD,MAAMC,uBAAuB,GAAG,sBAAsB;AACtD,MAAMC,eAAe,GAAG,cAAc;AAEtC,OAAO,MAAMC,WAAW,GAAG;EACzBC,MAAM,EAAEP,SAAS;EACjBQ,kBAAkB,EAAEP,qBAAqB;EACzCQ,YAAY,EAAEP,eAAe;EAC7BQ,oBAAoB,EAAEP,uBAAuB;EAC7CQ,oBAAoB,EAAEP,uBAAuB;EAC7CQ,YAAY,EAAEP;AAChB,CAAC;AAED,OAAO,eAAeQ,IAAIA,CAACC,GAAW,EAAEC,KAAU,EAAiB;EACjE,MAAMC,OAAO,GAAGjB,WAAW,GAAGe,GAAG;EACjC,IAAIG,UAAkB;EACtB,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;IAC7BE,UAAU,GAAGF,KAAK;EACpB,CAAC,MAAM;IACL,IAAI;MACFE,UAAU,GAAGC,IAAI,CAACC,SAAS,CAACJ,KAAK,CAAC;IACpC,CAAC,CAAC,MAAM;MACNE,UAAU,GAAGG,MAAM,CAACL,KAAK,CAAC;IAC5B;EACF;EACA,MAAMlB,UAAU,CAACmB,OAAO,EAAEC,UAAU,CAAC;AACvC;AAEA,OAAO,eAAeI,GAAGA,CAACP,GAAW,EAAgB;EACnD,MAAME,OAAO,GAAGjB,WAAW,GAAGe,GAAG;EACjC,MAAMQ,GAAG,GAAG,MAAM1B,UAAU,CAACoB,OAAO,CAAC;EACrC,IAAIM,GAAG,KAAK,IAAI,EAAE,OAAO,IAAI;EAC7B,IAAIA,GAAG,CAACC,UAAU,CAAC,GAAG,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,GAAG,CAAC,EAAE;IAC9C,IAAI;MACF,OAAOL,IAAI,CAACM,KAAK,CAACF,GAAG,CAAC;IACxB,CAAC,CAAC,MAAM;MACN,OAAOA,GAAG;IACZ;EACF;EACA,OAAOA,GAAG;AACZ;AAEA,OAAO,eAAeG,KAAKA,CAACX,GAAW,EAAiB;EACtD,MAAME,OAAO,GAAGjB,WAAW,GAAGe,GAAG;EACjC,MAAMhB,aAAa,CAACkB,OAAO,CAAC;AAC9B;AAEA,OAAO,eAAeU,QAAQA,CAAA,EAAkB;EAC9C;EACA;EACA;EACA;EACA;EACA;EACAC,OAAO,CAACC,IAAI,CAAC,qDAAqD,CAAC;AACrE;AAEA,OAAO,eAAeC,mBAAmBA,CAAA,EAAkB;EACzD,MAAMC,SAAS,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC1C,MAAMnB,IAAI,CAACV,uBAAuB,EAAE2B,SAAS,CAAC;AAChD;AAEA,OAAO,eAAeG,kBAAkBA,CAAA,EAAyB;EAC/D,MAAMC,IAAI,GAAG,MAAMb,GAAG,CAAClB,uBAAuB,CAAC;EAC/C,IAAI,OAAO+B,IAAI,KAAK,QAAQ,EAAE;IAC5B,IAAI;MACF,OAAO,IAAIH,IAAI,CAACG,IAAI,CAAC;IACvB,CAAC,CAAC,MAAM,CAAC;EACX;EACA,OAAO,IAAI;AACb;AAEA,OAAO,eAAeC,oBAAoBA,CAAA,EAAkB;EAC1D,MAAMV,KAAK,CAACtB,uBAAuB,CAAC;AACtC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export * from "./services/navigation/openMap.js";
|
|
4
|
+
export * from "./services/navigation/goBackNavigation.js";
|
|
5
|
+
export * from "./services/permissions/permissionManager.js";
|
|
6
|
+
export * from "./utils/platformManager.js";
|
|
7
|
+
export * from "./utils/errors.js";
|
|
8
|
+
export * from "./utils/logger.js";
|
|
9
|
+
export * from "./utils/validator.js";
|
|
10
|
+
export * from "./services/webview/messageHandler.js";
|
|
11
|
+
export * from "./data/storage/deviceIdManager.js";
|
|
12
|
+
export * from "./services/navigation/dialPad.js";
|
|
13
|
+
export * from "./services/navigation/openBrowser.js";
|
|
14
|
+
export * from "./data/storage/sessionManager.js";
|
|
15
|
+
export * from "./services/url/urlGenerator.js";
|
|
16
|
+
export * from "./data/network/apiService.js";
|
|
17
|
+
export * from "./core/runtime.js";
|
|
18
|
+
export * from "./data/storage/keysManager.js";
|
|
19
|
+
export * from "./data/storage/locationManager.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,kCAA+B;AAC7C,cAAc,2CAAwC;AACtD,cAAc,6CAA0C;AACxD,cAAc,4BAAyB;AACvC,cAAc,mBAAgB;AAC9B,cAAc,mBAAgB;AAC9B,cAAc,sBAAmB;AACjC,cAAc,sCAAmC;AACjD,cAAc,mCAAgC;AAC9C,cAAc,kCAA+B;AAC7C,cAAc,sCAAmC;AACjD,cAAc,kCAA+B;AAC7C,cAAc,gCAA6B;AAC3C,cAAc,8BAA2B;AACzC,cAAc,mBAAgB;AAC9B,cAAc,+BAA4B;AAC1C,cAAc,mCAAgC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Platform Utilities
|
|
4
|
+
import { isAndroid } from "../../utils/platformManager.js";
|
|
5
|
+
import { resolveNativeDependencies } from "../../utils/dependencyManager.js";
|
|
6
|
+
|
|
7
|
+
// Permissions
|
|
8
|
+
import { ensureLocationPermission } from "../permissions/permissionManager.js";
|
|
9
|
+
let locationProvider;
|
|
10
|
+
export function setLocationProvider(provider) {
|
|
11
|
+
locationProvider = provider;
|
|
12
|
+
}
|
|
13
|
+
export const fetchLocation = async () => {
|
|
14
|
+
const {
|
|
15
|
+
Geolocation
|
|
16
|
+
} = resolveNativeDependencies();
|
|
17
|
+
if (!Geolocation) {
|
|
18
|
+
throw new Error('GEOLOCATION_NOT_LINKED: install and link @react-native-community/geolocation');
|
|
19
|
+
}
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
Geolocation.getCurrentPosition(pos => resolve({
|
|
22
|
+
lat: pos.coords.latitude,
|
|
23
|
+
lng: pos.coords.longitude
|
|
24
|
+
}), err => reject(err), {
|
|
25
|
+
enableHighAccuracy: true,
|
|
26
|
+
timeout: 10000
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export async function getDeviceLocation() {
|
|
31
|
+
if (locationProvider) {
|
|
32
|
+
return locationProvider();
|
|
33
|
+
}
|
|
34
|
+
if (isAndroid()) {
|
|
35
|
+
const granted = await ensureLocationPermission();
|
|
36
|
+
if (!granted) {
|
|
37
|
+
throw new Error('LOCATION_PERMISSION_DENIED');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const loc = await fetchLocation();
|
|
42
|
+
return loc;
|
|
43
|
+
} catch {
|
|
44
|
+
throw new Error('LOCATION_UNAVAILABLE');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isAndroid","resolveNativeDependencies","ensureLocationPermission","locationProvider","setLocationProvider","provider","fetchLocation","Geolocation","Error","Promise","resolve","reject","getCurrentPosition","pos","lat","coords","latitude","lng","longitude","err","enableHighAccuracy","timeout","getDeviceLocation","granted","loc"],"sourceRoot":"../../../../src","sources":["services/device/location.ts"],"mappings":";;AAAA;AACA,SAASA,SAAS,QAAQ,gCAA6B;AACvD,SAASC,yBAAyB,QAAQ,kCAA+B;;AAEzE;AACA,SAASC,wBAAwB,QAAQ,qCAAkC;AAI3E,IAAIC,gBAAyE;AAE7E,OAAO,SAASC,mBAAmBA,CACjCC,QAAmD,EAC7C;EACNF,gBAAgB,GAAGE,QAAQ;AAC7B;AAEA,OAAO,MAAMC,aAAa,GAAG,MAAAA,CAAA,KAAqC;EAChE,MAAM;IAAEC;EAAY,CAAC,GAAGN,yBAAyB,CAAC,CAAC;EACnD,IAAI,CAACM,WAAW,EAAE;IAChB,MAAM,IAAIC,KAAK,CACb,8EACF,CAAC;EACH;EACA,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCJ,WAAW,CAACK,kBAAkB,CAC3BC,GAAwD,IACvDH,OAAO,CAAC;MAAEI,GAAG,EAAED,GAAG,CAACE,MAAM,CAACC,QAAQ;MAAEC,GAAG,EAAEJ,GAAG,CAACE,MAAM,CAACG;IAAU,CAAC,CAAC,EACjEC,GAAY,IAAKR,MAAM,CAACQ,GAAG,CAAC,EAC7B;MAAEC,kBAAkB,EAAE,IAAI;MAAEC,OAAO,EAAE;IAAM,CAC7C,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,eAAeC,iBAAiBA,CAAA,EAAwC;EAC7E,IAAInB,gBAAgB,EAAE;IACpB,OAAOA,gBAAgB,CAAC,CAAC;EAC3B;EACA,IAAIH,SAAS,CAAC,CAAC,EAAE;IACf,MAAMuB,OAAO,GAAG,MAAMrB,wBAAwB,CAAC,CAAC;IAChD,IAAI,CAACqB,OAAO,EAAE;MACZ,MAAM,IAAIf,KAAK,CAAC,4BAA4B,CAAC;IAC/C;EACF;EACA,IAAI;IACF,MAAMgB,GAAG,GAAG,MAAMlB,aAAa,CAAC,CAAC;IACjC,OAAOkB,GAAG;EACZ,CAAC,CAAC,MAAM;IACN,MAAM,IAAIhB,KAAK,CAAC,sBAAsB,CAAC;EACzC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Linking, Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Utilities / Validators
|
|
7
|
+
import { isValidPhoneNumber } from "../../utils/validator.js";
|
|
8
|
+
export const callPhone = async phone => {
|
|
9
|
+
if (!isValidPhoneNumber(phone)) {
|
|
10
|
+
throw new Error('INVALID_PHONE_NUMBER');
|
|
11
|
+
}
|
|
12
|
+
const url = Platform.OS === 'ios' ? `telprompt:${phone}` // iOS preferred
|
|
13
|
+
: `tel:${phone}`;
|
|
14
|
+
try {
|
|
15
|
+
await Linking.openURL(url);
|
|
16
|
+
} catch {
|
|
17
|
+
throw new Error('CALL_NOT_SUPPORTED');
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export async function openDialPad(phone) {
|
|
21
|
+
const url = Platform.OS === 'ios' ? phone ? `telprompt:${phone}` : 'tel:' // open empty dial pad
|
|
22
|
+
: phone ? `tel:${phone}` : 'tel:';
|
|
23
|
+
try {
|
|
24
|
+
await Linking.openURL(url);
|
|
25
|
+
} catch {
|
|
26
|
+
throw new Error('DIAL_PAD_NOT_SUPPORTED');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=dialPad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","Platform","isValidPhoneNumber","callPhone","phone","Error","url","OS","openURL","openDialPad"],"sourceRoot":"../../../../src","sources":["services/navigation/dialPad.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,cAAc;;AAEhD;AACA,SAASC,kBAAkB,QAAQ,0BAAuB;AAE1D,OAAO,MAAMC,SAAS,GAAG,MAAOC,KAAa,IAAoB;EAC/D,IAAI,CAACF,kBAAkB,CAACE,KAAK,CAAC,EAAE;IAC9B,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,MAAMC,GAAG,GACPL,QAAQ,CAACM,EAAE,KAAK,KAAK,GACjB,aAAaH,KAAK,EAAE,CAAC;EAAA,EACrB,OAAOA,KAAK,EAAE;EAEpB,IAAI;IACF,MAAMJ,OAAO,CAACQ,OAAO,CAACF,GAAG,CAAC;EAC5B,CAAC,CAAC,MAAM;IACN,MAAM,IAAID,KAAK,CAAC,oBAAoB,CAAC;EACvC;AACF,CAAC;AAED,OAAO,eAAeI,WAAWA,CAACL,KAAc,EAAiB;EAC/D,MAAME,GAAG,GACPL,QAAQ,CAACM,EAAE,KAAK,KAAK,GACjBH,KAAK,GACH,aAAaA,KAAK,EAAE,GACpB,MAAM,CAAC;EAAA,EACTA,KAAK,GACL,OAAOA,KAAK,EAAE,GACd,MAAM;EAEZ,IAAI;IACF,MAAMJ,OAAO,CAACQ,OAAO,CAACF,GAAG,CAAC;EAC5B,CAAC,CAAC,MAAM;IACN,MAAM,IAAID,KAAK,CAAC,wBAAwB,CAAC;EAC3C;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { BackHandler, Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Navigation / Routing
|
|
7
|
+
import { createNavigationContainerRef } from '@react-navigation/native';
|
|
8
|
+
export const navigationRef = createNavigationContainerRef();
|
|
9
|
+
export function closeCurrentScreen() {
|
|
10
|
+
if (navigationRef.isReady() && navigationRef.canGoBack()) {
|
|
11
|
+
navigationRef.goBack();
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
export function closeCurrentScreenSafe() {
|
|
17
|
+
const closed = closeCurrentScreen();
|
|
18
|
+
if (!closed && Platform.OS === 'android') {
|
|
19
|
+
BackHandler.exitApp();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=goBackNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BackHandler","Platform","createNavigationContainerRef","navigationRef","closeCurrentScreen","isReady","canGoBack","goBack","closeCurrentScreenSafe","closed","OS","exitApp"],"sourceRoot":"../../../../src","sources":["services/navigation/goBackNavigation.ts"],"mappings":";;AAAA;AACA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,cAAc;;AAEpD;AACA,SAASC,4BAA4B,QAAQ,0BAA0B;AAEvE,OAAO,MAAMC,aAAa,GAAGD,4BAA4B,CAAC,CAAC;AAE3D,OAAO,SAASE,kBAAkBA,CAAA,EAAY;EAC5C,IAAID,aAAa,CAACE,OAAO,CAAC,CAAC,IAAIF,aAAa,CAACG,SAAS,CAAC,CAAC,EAAE;IACxDH,aAAa,CAACI,MAAM,CAAC,CAAC;IACtB,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,OAAO,SAASC,sBAAsBA,CAAA,EAAS;EAC7C,MAAMC,MAAM,GAAGL,kBAAkB,CAAC,CAAC;EACnC,IAAI,CAACK,MAAM,IAAIR,QAAQ,CAACS,EAAE,KAAK,SAAS,EAAE;IACxCV,WAAW,CAACW,OAAO,CAAC,CAAC;EACvB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","openBrowser","url","openURL"],"sourceRoot":"../../../../src","sources":["services/navigation/openBrowser.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,QAAQ,cAAc;AAEtC,OAAO,eAAeC,WAAWA,CAACC,GAAW,EAAiB;EAC5D,MAAMF,OAAO,CAACG,OAAO,CAACD,GAAG,CAAC;AAC5B","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Linking } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Utilities / Helpers
|
|
7
|
+
import { isMapAppAvailable, isValidCoordinates } from "../../utils/validator.js";
|
|
8
|
+
|
|
9
|
+
// Platform / Environment helpers
|
|
10
|
+
import { isIOS } from "../../utils/platformManager.js";
|
|
11
|
+
export async function openMap(lat, lng, label) {
|
|
12
|
+
if (!isValidCoordinates(lat, lng)) {
|
|
13
|
+
throw new Error('INVALID_COORDINATES');
|
|
14
|
+
}
|
|
15
|
+
const iosUrl = `maps:0,0?q=${encodeURIComponent(label ?? '')}@${lat},${lng}`;
|
|
16
|
+
const androidUrl = `geo:0,0?q=${lat},${lng}${label ? `(${encodeURIComponent(label)})` : ''}`;
|
|
17
|
+
const deepLink = isIOS() ? iosUrl : androidUrl;
|
|
18
|
+
const available = await isMapAppAvailable();
|
|
19
|
+
if (available) {
|
|
20
|
+
await Linking.openURL(deepLink);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const browserUrl = isIOS() ? `https://maps.apple.com/?q=${encodeURIComponent(label ?? '')}&ll=${lat},${lng}` : `https://www.google.com/maps/search/?api=1&query=${lat},${lng}${label ? `&query_place_id=${encodeURIComponent(label)}` : ''}`;
|
|
24
|
+
await Linking.openURL(browserUrl);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=openMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","isMapAppAvailable","isValidCoordinates","isIOS","openMap","lat","lng","label","Error","iosUrl","encodeURIComponent","androidUrl","deepLink","available","openURL","browserUrl"],"sourceRoot":"../../../../src","sources":["services/navigation/openMap.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,QAAQ,cAAc;;AAEtC;AACA,SAASC,iBAAiB,EAAEC,kBAAkB,QAAQ,0BAAuB;;AAE7E;AACA,SAASC,KAAK,QAAQ,gCAA6B;AAEnD,OAAO,eAAeC,OAAOA,CAC3BC,GAAW,EACXC,GAAW,EACXC,KAAc,EACC;EACf,IAAI,CAACL,kBAAkB,CAACG,GAAG,EAAEC,GAAG,CAAC,EAAE;IACjC,MAAM,IAAIE,KAAK,CAAC,qBAAqB,CAAC;EACxC;EAEA,MAAMC,MAAM,GAAG,cAAcC,kBAAkB,CAACH,KAAK,IAAI,EAAE,CAAC,IAAIF,GAAG,IAAIC,GAAG,EAAE;EAC5E,MAAMK,UAAU,GAAG,aAAaN,GAAG,IAAIC,GAAG,GACxCC,KAAK,GAAG,IAAIG,kBAAkB,CAACH,KAAK,CAAC,GAAG,GAAG,EAAE,EAC7C;EACF,MAAMK,QAAQ,GAAGT,KAAK,CAAC,CAAC,GAAGM,MAAM,GAAGE,UAAU;EAE9C,MAAME,SAAS,GAAG,MAAMZ,iBAAiB,CAAC,CAAC;EAC3C,IAAIY,SAAS,EAAE;IACb,MAAMb,OAAO,CAACc,OAAO,CAACF,QAAQ,CAAC;IAC/B;EACF;EAEA,MAAMG,UAAU,GAAGZ,KAAK,CAAC,CAAC,GACtB,6BAA6BO,kBAAkB,CAC7CH,KAAK,IAAI,EACX,CAAC,OAAOF,GAAG,IAAIC,GAAG,EAAE,GACpB,mDAAmDD,GAAG,IAAIC,GAAG,GAC3DC,KAAK,GAAG,mBAAmBG,kBAAkB,CAACH,KAAK,CAAC,EAAE,GAAG,EAAE,EAC3D;EACN,MAAMP,OAAO,CAACc,OAAO,CAACC,UAAU,CAAC;AACnC","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Platform, PermissionsAndroid } from 'react-native';
|
|
5
|
+
export const requestPermission = async permission => {
|
|
6
|
+
if (Platform.OS === 'ios') return true;
|
|
7
|
+
const already = await PermissionsAndroid.check(permission);
|
|
8
|
+
if (already) return true;
|
|
9
|
+
const result = await PermissionsAndroid.request(permission);
|
|
10
|
+
if (result === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) return false;
|
|
11
|
+
return result === PermissionsAndroid.RESULTS.GRANTED;
|
|
12
|
+
};
|
|
13
|
+
export async function ensureLocationPermission() {
|
|
14
|
+
if (Platform.OS === 'ios') return true;
|
|
15
|
+
const fine = PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION;
|
|
16
|
+
const coarse = PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION;
|
|
17
|
+
const fineGranted = await PermissionsAndroid.check(fine);
|
|
18
|
+
const coarseGranted = await PermissionsAndroid.check(coarse);
|
|
19
|
+
if (fineGranted || coarseGranted) return true;
|
|
20
|
+
const res = await PermissionsAndroid.requestMultiple([fine, coarse]);
|
|
21
|
+
const fineOk = res[fine] === PermissionsAndroid.RESULTS.GRANTED;
|
|
22
|
+
const coarseOk = res[coarse] === PermissionsAndroid.RESULTS.GRANTED;
|
|
23
|
+
if (res[fine] === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN || res[coarse] === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return fineOk || coarseOk;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=permissionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","PermissionsAndroid","requestPermission","permission","OS","already","check","result","request","RESULTS","NEVER_ASK_AGAIN","GRANTED","ensureLocationPermission","fine","PERMISSIONS","ACCESS_FINE_LOCATION","coarse","ACCESS_COARSE_LOCATION","fineGranted","coarseGranted","res","requestMultiple","fineOk","coarseOk"],"sourceRoot":"../../../../src","sources":["services/permissions/permissionManager.ts"],"mappings":";;AAAA;AACA,SAASA,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAE3D,OAAO,MAAMC,iBAAiB,GAAG,MAC/BC,UAA4D,IACzD;EACH,IAAIH,QAAQ,CAACI,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EAEtC,MAAMC,OAAO,GAAG,MAAMJ,kBAAkB,CAACK,KAAK,CAACH,UAAU,CAAC;EAC1D,IAAIE,OAAO,EAAE,OAAO,IAAI;EACxB,MAAME,MAAM,GAAG,MAAMN,kBAAkB,CAACO,OAAO,CAACL,UAAU,CAAC;EAC3D,IAAII,MAAM,KAAKN,kBAAkB,CAACQ,OAAO,CAACC,eAAe,EAAE,OAAO,KAAK;EACvE,OAAOH,MAAM,KAAKN,kBAAkB,CAACQ,OAAO,CAACE,OAAO;AACtD,CAAC;AAED,OAAO,eAAeC,wBAAwBA,CAAA,EAAqB;EACjE,IAAIZ,QAAQ,CAACI,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EACtC,MAAMS,IAAI,GAAGZ,kBAAkB,CAACa,WAAW,CAACC,oBAAoB;EAChE,MAAMC,MAAM,GAAGf,kBAAkB,CAACa,WAAW,CAACG,sBAAsB;EACpE,MAAMC,WAAW,GAAG,MAAMjB,kBAAkB,CAACK,KAAK,CAACO,IAAI,CAAC;EACxD,MAAMM,aAAa,GAAG,MAAMlB,kBAAkB,CAACK,KAAK,CAACU,MAAM,CAAC;EAC5D,IAAIE,WAAW,IAAIC,aAAa,EAAE,OAAO,IAAI;EAC7C,MAAMC,GAAG,GAAG,MAAMnB,kBAAkB,CAACoB,eAAe,CAAC,CAACR,IAAI,EAAEG,MAAM,CAAC,CAAC;EACpE,MAAMM,MAAM,GAAGF,GAAG,CAACP,IAAI,CAAC,KAAKZ,kBAAkB,CAACQ,OAAO,CAACE,OAAO;EAC/D,MAAMY,QAAQ,GAAGH,GAAG,CAACJ,MAAM,CAAC,KAAKf,kBAAkB,CAACQ,OAAO,CAACE,OAAO;EACnE,IACES,GAAG,CAACP,IAAI,CAAC,KAAKZ,kBAAkB,CAACQ,OAAO,CAACC,eAAe,IACxDU,GAAG,CAACJ,MAAM,CAAC,KAAKf,kBAAkB,CAACQ,OAAO,CAACC,eAAe,EAC1D;IACA,OAAO,KAAK;EACd;EACA,OAAOY,MAAM,IAAIC,QAAQ;AAC3B","ignoreList":[]}
|