@savers_app/react-native-sandbox-sdk 1.2.6
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 +556 -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 +70 -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/models/tokenModel.js +25 -0
- package/lib/module/data/models/tokenModel.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 +7 -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 +84 -0
- package/lib/module/data/network/apiRepository.js.map +1 -0
- package/lib/module/data/network/apiService.js +102 -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 +72 -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/reactRefManager.js +22 -0
- package/lib/module/data/storage/reactRefManager.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 +19 -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 +42 -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 +94 -0
- package/lib/module/services/url/urlGenerator.js.map +1 -0
- package/lib/module/services/webview/messageHandler.js +72 -0
- package/lib/module/services/webview/messageHandler.js.map +1 -0
- package/lib/module/utils/config.js +34 -0
- package/lib/module/utils/config.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 +63 -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 +11 -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/models/tokenModel.d.ts +15 -0
- package/lib/typescript/src/data/models/tokenModel.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 +5 -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 +21 -0
- package/lib/typescript/src/data/network/apiRepository.d.ts.map +1 -0
- package/lib/typescript/src/data/network/apiService.d.ts +25 -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 +15 -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/reactRefManager.d.ts +11 -0
- package/lib/typescript/src/data/storage/reactRefManager.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 +3 -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 +44 -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/config.d.ts +5 -0
- package/lib/typescript/src/utils/config.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 +184 -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 +84 -0
- package/src/data/models/apiResponse.ts +28 -0
- package/src/data/models/onboardingModel.ts +97 -0
- package/src/data/models/tokenModel.ts +43 -0
- package/src/data/network/apiClient.ts +148 -0
- package/src/data/network/apiEndpoints.ts +4 -0
- package/src/data/network/apiExceptionHandler.ts +16 -0
- package/src/data/network/apiRepository.ts +130 -0
- package/src/data/network/apiService.ts +113 -0
- package/src/data/network/dataTypeUtils.ts +78 -0
- package/src/data/network/interceptors/authInterceptor.ts +86 -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/reactRefManager.ts +25 -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 +19 -0
- package/src/services/navigation/openBrowser.ts +6 -0
- package/src/services/navigation/openMap.ts +53 -0
- package/src/services/permissions/permissionManager.ts +33 -0
- package/src/services/url/urlGenerator.ts +140 -0
- package/src/services/webview/messageHandler.ts +45 -0
- package/src/utils/config.ts +35 -0
- package/src/utils/dependencyManager.ts +82 -0
- package/src/utils/encryption.ts +96 -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,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Linking } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Utilities / Helpers
|
|
7
|
+
import { 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
|
+
if (isIOS()) {
|
|
17
|
+
try {
|
|
18
|
+
await Linking.openURL(iosUrl);
|
|
19
|
+
return;
|
|
20
|
+
} catch {}
|
|
21
|
+
const browserUrl = `https://maps.apple.com/?q=${encodeURIComponent(label ?? '')}&ll=${lat},${lng}`;
|
|
22
|
+
await Linking.openURL(browserUrl);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const encLabel = label ? encodeURIComponent(label) : undefined;
|
|
26
|
+
const query = `${lat},${lng}${encLabel ? `(${encLabel})` : ''}`;
|
|
27
|
+
const candidates = [
|
|
28
|
+
// Prefer geo to show a pin at the destination (not navigation)
|
|
29
|
+
`geo:${lat},${lng}?q=${query}`, `geo:0,0?q=${query}`,
|
|
30
|
+
// Fallback to Google Maps custom scheme as a generic search/pin
|
|
31
|
+
`comgooglemaps://?q=${query}`];
|
|
32
|
+
for (const url of candidates) {
|
|
33
|
+
try {
|
|
34
|
+
await Linking.openURL(url);
|
|
35
|
+
return;
|
|
36
|
+
} catch {}
|
|
37
|
+
}
|
|
38
|
+
const browserQuery = label ? `${label} ${lat},${lng}` : `${lat},${lng}`;
|
|
39
|
+
const browserUrl = `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(browserQuery)}`;
|
|
40
|
+
await Linking.openURL(browserUrl);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=openMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","isValidCoordinates","isIOS","openMap","lat","lng","label","Error","iosUrl","encodeURIComponent","openURL","browserUrl","encLabel","undefined","query","candidates","url","browserQuery"],"sourceRoot":"../../../../src","sources":["services/navigation/openMap.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,QAAQ,cAAc;;AAEtC;AACA,SAASC,kBAAkB,QAAQ,0BAAuB;;AAE1D;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;EAE5E,IAAIH,KAAK,CAAC,CAAC,EAAE;IACX,IAAI;MACF,MAAMF,OAAO,CAACU,OAAO,CAACF,MAAM,CAAC;MAC7B;IACF,CAAC,CAAC,MAAM,CAAC;IACT,MAAMG,UAAU,GAAG,6BAA6BF,kBAAkB,CAChEH,KAAK,IAAI,EACX,CAAC,OAAOF,GAAG,IAAIC,GAAG,EAAE;IACpB,MAAML,OAAO,CAACU,OAAO,CAACC,UAAU,CAAC;IACjC;EACF;EAEA,MAAMC,QAAQ,GAAGN,KAAK,GAAGG,kBAAkB,CAACH,KAAK,CAAC,GAAGO,SAAS;EAC9D,MAAMC,KAAK,GAAG,GAAGV,GAAG,IAAIC,GAAG,GAAGO,QAAQ,GAAG,IAAIA,QAAQ,GAAG,GAAG,EAAE,EAAE;EAC/D,MAAMG,UAAU,GAAG;EACjB;EACA,OAAOX,GAAG,IAAIC,GAAG,MAAMS,KAAK,EAAE,EAC9B,aAAaA,KAAK,EAAE;EACpB;EACA,sBAAsBA,KAAK,EAAE,CAC9B;EACD,KAAK,MAAME,GAAG,IAAID,UAAU,EAAE;IAC5B,IAAI;MACF,MAAMf,OAAO,CAACU,OAAO,CAACM,GAAG,CAAC;MAC1B;IACF,CAAC,CAAC,MAAM,CAAC;EACX;EACA,MAAMC,YAAY,GAAGX,KAAK,GAAG,GAAGA,KAAK,IAAIF,GAAG,IAAIC,GAAG,EAAE,GAAG,GAAGD,GAAG,IAAIC,GAAG,EAAE;EACvE,MAAMM,UAAU,GAAG,mDAAmDF,kBAAkB,CACtFQ,YACF,CAAC,EAAE;EACH,MAAMjB,OAAO,CAACU,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":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Utilities / Helpers
|
|
4
|
+
import { SDKError } from "../../utils/errors.js";
|
|
5
|
+
import { aesEncrypt } from "../../utils/encryption.js";
|
|
6
|
+
|
|
7
|
+
// Storage / Session
|
|
8
|
+
import { getDeviceId } from "../../data/storage/deviceIdManager.js";
|
|
9
|
+
import { getSessionId } from "../../data/storage/sessionManager.js";
|
|
10
|
+
import { getLocationCoordinates } from "../../data/storage/locationManager.js";
|
|
11
|
+
import { getEncryptionKey, getPRefCode } from "../../data/storage/keysManager.js";
|
|
12
|
+
import { getBaseUrl } from "../../utils/config.js";
|
|
13
|
+
export function validateInput(input) {
|
|
14
|
+
const errors = [];
|
|
15
|
+
const auth = input.authType ?? 'PHONE';
|
|
16
|
+
if (!input.profile) errors.push('profile is mandatory');
|
|
17
|
+
if (!input.profile?.userId) errors.push('userId is mandatory');
|
|
18
|
+
if (!input.profile?.email) errors.push('email is mandatory');
|
|
19
|
+
if (!input.nonce) errors.push('nonce is mandatory');
|
|
20
|
+
const pv = input.profile?.pv;
|
|
21
|
+
const ev = input.profile?.ev;
|
|
22
|
+
if (typeof pv !== 'undefined' && pv !== '0' && pv !== '1') {
|
|
23
|
+
errors.push('pv must be 0 or 1');
|
|
24
|
+
}
|
|
25
|
+
if (typeof ev !== 'undefined' && ev !== '0' && ev !== '1') {
|
|
26
|
+
errors.push('ev must be 0 or 1');
|
|
27
|
+
}
|
|
28
|
+
if (!auth) errors.push('authType is mandatory');
|
|
29
|
+
if (auth === 'USERNAME' && !input.profile?.username) {
|
|
30
|
+
errors.push('username is mandatory for USERNAME authType');
|
|
31
|
+
}
|
|
32
|
+
if (auth === 'PHONE' && !input.profile?.phone) {
|
|
33
|
+
errors.push('phone is mandatory for PHONE authType');
|
|
34
|
+
}
|
|
35
|
+
const screenName = input.screen?.name;
|
|
36
|
+
if (screenName === 'OfrDetails') {
|
|
37
|
+
const attrs = input.screen?.attributes ?? [];
|
|
38
|
+
if (!attrs.length) {
|
|
39
|
+
errors.push('screen.attributes is mandatory when screen.name is OfrDetails');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
ok: errors.length === 0,
|
|
44
|
+
errors
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export async function generateUrl(input) {
|
|
48
|
+
const deviceId = await getDeviceId();
|
|
49
|
+
const storedLocation = await getLocationCoordinates();
|
|
50
|
+
const sessionId = await getSessionId();
|
|
51
|
+
const deviceInfo = storedLocation != null ? {
|
|
52
|
+
dId: deviceId,
|
|
53
|
+
location: storedLocation
|
|
54
|
+
} : {
|
|
55
|
+
dId: deviceId
|
|
56
|
+
};
|
|
57
|
+
const normalized = {
|
|
58
|
+
profile: input.profile,
|
|
59
|
+
screen: input.screen,
|
|
60
|
+
authType: input.authType ?? 'PHONE',
|
|
61
|
+
sessionId: sessionId ?? '',
|
|
62
|
+
deviceInfo,
|
|
63
|
+
nonce: input.nonce
|
|
64
|
+
};
|
|
65
|
+
const validation = validateInput({
|
|
66
|
+
...normalized,
|
|
67
|
+
deviceInfo: normalized.deviceInfo
|
|
68
|
+
});
|
|
69
|
+
if (!validation.ok) {
|
|
70
|
+
throw new SDKError(`Validation failed: ${validation.errors.join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
const payload = {
|
|
73
|
+
screen: normalized.screen ?? {
|
|
74
|
+
name: 'Explore'
|
|
75
|
+
},
|
|
76
|
+
profile: normalized.profile,
|
|
77
|
+
authType: normalized.authType,
|
|
78
|
+
deviceInfo: normalized.deviceInfo,
|
|
79
|
+
sessionId: normalized.sessionId,
|
|
80
|
+
nonce: normalized.nonce
|
|
81
|
+
};
|
|
82
|
+
const json = JSON.stringify(payload);
|
|
83
|
+
const key = await getEncryptionKey();
|
|
84
|
+
if (!key || key === '-') {
|
|
85
|
+
throw new SDKError('Encryption key is mandatory. Initialize SDK with encryptionKey.');
|
|
86
|
+
}
|
|
87
|
+
const encoded = await aesEncrypt(json, key);
|
|
88
|
+
const programCode = await getPRefCode();
|
|
89
|
+
if (!programCode || programCode === '-') {
|
|
90
|
+
throw new SDKError('pRefCode is mandatory. Initialize SDK with pRefCode.');
|
|
91
|
+
}
|
|
92
|
+
return `${getBaseUrl()}?pRefCode=${encodeURIComponent(programCode)}&qP=${encodeURIComponent(encoded)}`;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=urlGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SDKError","aesEncrypt","getDeviceId","getSessionId","getLocationCoordinates","getEncryptionKey","getPRefCode","getBaseUrl","validateInput","input","errors","auth","authType","profile","push","userId","email","nonce","pv","ev","username","phone","screenName","screen","name","attrs","attributes","length","ok","generateUrl","deviceId","storedLocation","sessionId","deviceInfo","dId","location","normalized","validation","join","payload","json","JSON","stringify","key","encoded","programCode","encodeURIComponent"],"sourceRoot":"../../../../src","sources":["services/url/urlGenerator.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { openMap } from "../navigation/openMap.js";
|
|
4
|
+
import { openDialPad } from "../navigation/dialPad.js";
|
|
5
|
+
import { openBrowser } from "../navigation/openBrowser.js";
|
|
6
|
+
import { closeCurrentScreenSafe } from "../navigation/goBackNavigation.js";
|
|
7
|
+
import { setSessionId } from "../../data/storage/sessionManager.js";
|
|
8
|
+
export function handleWebMessage(raw, postBack) {
|
|
9
|
+
let msg;
|
|
10
|
+
try {
|
|
11
|
+
msg = JSON.parse(raw);
|
|
12
|
+
} catch {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const action = msg?.action;
|
|
16
|
+
const payload = msg?.payload;
|
|
17
|
+
const reply = data => postBack?.(data);
|
|
18
|
+
(async () => {
|
|
19
|
+
try {
|
|
20
|
+
if (action === 'OPEN_MAP') {
|
|
21
|
+
const {
|
|
22
|
+
lat,
|
|
23
|
+
lng,
|
|
24
|
+
label
|
|
25
|
+
} = payload || {};
|
|
26
|
+
await openMap(lat, lng, label);
|
|
27
|
+
reply({
|
|
28
|
+
ok: true,
|
|
29
|
+
action
|
|
30
|
+
});
|
|
31
|
+
} else if (action === 'SHOW_DIAL_PAD') {
|
|
32
|
+
await openDialPad(payload?.number);
|
|
33
|
+
reply({
|
|
34
|
+
ok: true,
|
|
35
|
+
action
|
|
36
|
+
});
|
|
37
|
+
} else if (action === 'MERCHANT_PORTAL_REDIRECT') {
|
|
38
|
+
await openBrowser(payload?.url);
|
|
39
|
+
reply({
|
|
40
|
+
ok: true,
|
|
41
|
+
action
|
|
42
|
+
});
|
|
43
|
+
} else if (action === 'SESSION_ID') {
|
|
44
|
+
const {
|
|
45
|
+
sessionId
|
|
46
|
+
} = payload || {};
|
|
47
|
+
const id = await setSessionId(sessionId);
|
|
48
|
+
reply({
|
|
49
|
+
ok: true,
|
|
50
|
+
action,
|
|
51
|
+
sessionId: id
|
|
52
|
+
});
|
|
53
|
+
} else if (action === 'END_SESSION') {
|
|
54
|
+
closeCurrentScreenSafe();
|
|
55
|
+
// reply({ ok: true, action, closed });
|
|
56
|
+
} else {
|
|
57
|
+
reply({
|
|
58
|
+
ok: false,
|
|
59
|
+
error: 'UNKNOWN_ACTION',
|
|
60
|
+
action
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
} catch (e) {
|
|
64
|
+
reply({
|
|
65
|
+
ok: false,
|
|
66
|
+
error: e?.message ?? String(e),
|
|
67
|
+
action
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=messageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["openMap","openDialPad","openBrowser","closeCurrentScreenSafe","setSessionId","handleWebMessage","raw","postBack","msg","JSON","parse","action","payload","reply","data","lat","lng","label","ok","number","url","sessionId","id","error","e","message","String"],"sourceRoot":"../../../../src","sources":["services/webview/messageHandler.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,0BAAuB;AAC/C,SAASC,WAAW,QAAQ,0BAAuB;AACnD,SAASC,WAAW,QAAQ,8BAA2B;AACvD,SAASC,sBAAsB,QAAQ,mCAAgC;AACvE,SAASC,YAAY,QAAQ,sCAAmC;AAEhE,OAAO,SAASC,gBAAgBA,CAACC,GAAW,EAAEC,QAA8B,EAAE;EAC5E,IAAIC,GAAuC;EAC3C,IAAI;IACFA,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACJ,GAAG,CAAC;EACvB,CAAC,CAAC,MAAM;IACN;EACF;EACA,MAAMK,MAAM,GAAGH,GAAG,EAAEG,MAAM;EAC1B,MAAMC,OAAO,GAAGJ,GAAG,EAAEI,OAAO;EAE5B,MAAMC,KAAK,GAAIC,IAAS,IAAKP,QAAQ,GAAGO,IAAI,CAAC;EAE7C,CAAC,YAAY;IACX,IAAI;MACF,IAAIH,MAAM,KAAK,UAAU,EAAE;QACzB,MAAM;UAAEI,GAAG;UAAEC,GAAG;UAAEC;QAAM,CAAC,GAAGL,OAAO,IAAI,CAAC,CAAC;QACzC,MAAMZ,OAAO,CAACe,GAAG,EAAEC,GAAG,EAAEC,KAAK,CAAC;QAC9BJ,KAAK,CAAC;UAAEK,EAAE,EAAE,IAAI;UAAEP;QAAO,CAAC,CAAC;MAC7B,CAAC,MAAM,IAAIA,MAAM,KAAK,eAAe,EAAE;QACrC,MAAMV,WAAW,CAACW,OAAO,EAAEO,MAAM,CAAC;QAClCN,KAAK,CAAC;UAAEK,EAAE,EAAE,IAAI;UAAEP;QAAO,CAAC,CAAC;MAC7B,CAAC,MAAM,IAAIA,MAAM,KAAK,0BAA0B,EAAE;QAChD,MAAMT,WAAW,CAACU,OAAO,EAAEQ,GAAG,CAAC;QAC/BP,KAAK,CAAC;UAAEK,EAAE,EAAE,IAAI;UAAEP;QAAO,CAAC,CAAC;MAC7B,CAAC,MAAM,IAAIA,MAAM,KAAK,YAAY,EAAE;QAClC,MAAM;UAAEU;QAAU,CAAC,GAAGT,OAAO,IAAI,CAAC,CAAC;QACnC,MAAMU,EAAE,GAAG,MAAMlB,YAAY,CAACiB,SAAS,CAAC;QACxCR,KAAK,CAAC;UAAEK,EAAE,EAAE,IAAI;UAAEP,MAAM;UAAEU,SAAS,EAAEC;QAAG,CAAC,CAAC;MAC5C,CAAC,MAAM,IAAIX,MAAM,KAAK,aAAa,EAAE;QACnCR,sBAAsB,CAAC,CAAC;QACxB;MACF,CAAC,MAAM;QACLU,KAAK,CAAC;UAAEK,EAAE,EAAE,KAAK;UAAEK,KAAK,EAAE,gBAAgB;UAAEZ;QAAO,CAAC,CAAC;MACvD;IACF,CAAC,CAAC,OAAOa,CAAM,EAAE;MACfX,KAAK,CAAC;QAAEK,EAAE,EAAE,KAAK;QAAEK,KAAK,EAAEC,CAAC,EAAEC,OAAO,IAAIC,MAAM,CAACF,CAAC,CAAC;QAAEb;MAAO,CAAC,CAAC;IAC9D;EACF,CAAC,EAAE,CAAC;AACN","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// config.ts
|
|
4
|
+
|
|
5
|
+
// Default environment (build-time injected)
|
|
6
|
+
const injectedEnv = 'sandbox';
|
|
7
|
+
const DEFAULT_ENVIRONMENT = injectedEnv === 'production' ? 'production' : 'sandbox';
|
|
8
|
+
const ENV_URLS = {
|
|
9
|
+
sandbox: 'https://testm.saversapp.com/',
|
|
10
|
+
production: 'https://m.saversapp.com/'
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
// Current environment
|
|
14
|
+
let currentEnvironment = DEFAULT_ENVIRONMENT;
|
|
15
|
+
|
|
16
|
+
// Current base URL
|
|
17
|
+
let BASE_URL = ENV_URLS[currentEnvironment];
|
|
18
|
+
|
|
19
|
+
// Change environment
|
|
20
|
+
export const setEnvironment = env => {
|
|
21
|
+
currentEnvironment = env;
|
|
22
|
+
BASE_URL = ENV_URLS[env];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Get current environment
|
|
26
|
+
export const getEnvironment = () => {
|
|
27
|
+
return currentEnvironment;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Get base URL
|
|
31
|
+
export const getBaseUrl = () => {
|
|
32
|
+
return BASE_URL;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["injectedEnv","DEFAULT_ENVIRONMENT","ENV_URLS","sandbox","production","currentEnvironment","BASE_URL","setEnvironment","env","getEnvironment","getBaseUrl"],"sourceRoot":"../../../src","sources":["utils/config.ts"],"mappings":";;AAAA;;AAIA;AACA,MAAMA,WAAW,GAAG,SAAmB;AACvC,MAAMC,mBAAgC,GACpCD,WAAW,KAAK,YAAY,GAAG,YAAY,GAAG,SAAS;AAEzD,MAAME,QAAqC,GAAG;EAC5CC,OAAO,EAAE,8BAA8B;EACvCC,UAAU,EAAE;AACd,CAAC;;AAED;AACA,IAAIC,kBAA+B,GAAGJ,mBAAmB;;AAEzD;AACA,IAAIK,QAAgB,GAAGJ,QAAQ,CAACG,kBAAkB,CAAC;;AAEnD;AACA,OAAO,MAAME,cAAc,GAAIC,GAAgB,IAAK;EAClDH,kBAAkB,GAAGG,GAAG;EACxBF,QAAQ,GAAGJ,QAAQ,CAACM,GAAG,CAAC;AAC1B,CAAC;;AAED;AACA,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAmB;EAC/C,OAAOJ,kBAAkB;AAC3B,CAAC;;AAED;AACA,OAAO,MAAMK,UAAU,GAAGA,CAAA,KAAc;EACtC,OAAOJ,QAAQ;AACjB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
let AsyncStorage;
|
|
4
|
+
let Geolocation;
|
|
5
|
+
let DeviceInfo;
|
|
6
|
+
function loadAsyncStorage() {
|
|
7
|
+
try {
|
|
8
|
+
const mod = require('@react-native-async-storage/async-storage');
|
|
9
|
+
return mod?.default ?? mod;
|
|
10
|
+
} catch {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function loadGeolocation() {
|
|
15
|
+
try {
|
|
16
|
+
const mod = require('@react-native-community/geolocation');
|
|
17
|
+
return mod?.default ?? mod;
|
|
18
|
+
} catch {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function loadDeviceInfo() {
|
|
23
|
+
try {
|
|
24
|
+
const mod = require('react-native-device-info');
|
|
25
|
+
return mod?.default ?? mod;
|
|
26
|
+
} catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function resolveNativeDependencies() {
|
|
31
|
+
if (!AsyncStorage) AsyncStorage = loadAsyncStorage();
|
|
32
|
+
if (!Geolocation) Geolocation = loadGeolocation();
|
|
33
|
+
if (!DeviceInfo) DeviceInfo = loadDeviceInfo();
|
|
34
|
+
return {
|
|
35
|
+
AsyncStorage,
|
|
36
|
+
Geolocation,
|
|
37
|
+
DeviceInfo
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export const SDKRequirements = {
|
|
41
|
+
get asyncStorage() {
|
|
42
|
+
return Boolean(resolveNativeDependencies().AsyncStorage);
|
|
43
|
+
},
|
|
44
|
+
get geolocation() {
|
|
45
|
+
return Boolean(resolveNativeDependencies().Geolocation);
|
|
46
|
+
},
|
|
47
|
+
get deviceInfo() {
|
|
48
|
+
return Boolean(resolveNativeDependencies().DeviceInfo);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=dependencyManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AsyncStorage","Geolocation","DeviceInfo","loadAsyncStorage","mod","require","default","undefined","loadGeolocation","loadDeviceInfo","resolveNativeDependencies","SDKRequirements","asyncStorage","Boolean","geolocation","deviceInfo"],"sourceRoot":"../../../src","sources":["utils/dependencyManager.ts"],"mappings":";;AA6BA,IAAIA,YAAgC;AACpC,IAAIC,WAA8B;AAClC,IAAIC,UAA4B;AAEhC,SAASC,gBAAgBA,CAAA,EAAuB;EAC9C,IAAI;IACF,MAAMC,GAAG,GAAGC,OAAO,CAAC,2CAA2C,CAAC;IAChE,OAAOD,GAAG,EAAEE,OAAO,IAAIF,GAAG;EAC5B,CAAC,CAAC,MAAM;IACN,OAAOG,SAAS;EAClB;AACF;AAEA,SAASC,eAAeA,CAAA,EAAsB;EAC5C,IAAI;IACF,MAAMJ,GAAG,GAAGC,OAAO,CAAC,qCAAqC,CAAC;IAC1D,OAAOD,GAAG,EAAEE,OAAO,IAAIF,GAAG;EAC5B,CAAC,CAAC,MAAM;IACN,OAAOG,SAAS;EAClB;AACF;AAEA,SAASE,cAAcA,CAAA,EAAqB;EAC1C,IAAI;IACF,MAAML,GAAG,GAAGC,OAAO,CAAC,0BAA0B,CAAC;IAC/C,OAAOD,GAAG,EAAEE,OAAO,IAAIF,GAAG;EAC5B,CAAC,CAAC,MAAM;IACN,OAAOG,SAAS;EAClB;AACF;AAEA,OAAO,SAASG,yBAAyBA,CAAA,EAAG;EAC1C,IAAI,CAACV,YAAY,EAAEA,YAAY,GAAGG,gBAAgB,CAAC,CAAC;EACpD,IAAI,CAACF,WAAW,EAAEA,WAAW,GAAGO,eAAe,CAAC,CAAC;EACjD,IAAI,CAACN,UAAU,EAAEA,UAAU,GAAGO,cAAc,CAAC,CAAC;EAC9C,OAAO;IACLT,YAAY;IACZC,WAAW;IACXC;EACF,CAAC;AACH;AAEA,OAAO,MAAMS,eAAe,GAAG;EAC7B,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAOC,OAAO,CAACH,yBAAyB,CAAC,CAAC,CAACV,YAAY,CAAC;EAC1D,CAAC;EACD,IAAIc,WAAWA,CAAA,EAAG;IAChB,OAAOD,OAAO,CAACH,yBAAyB,CAAC,CAAC,CAACT,WAAW,CAAC;EACzD,CAAC;EACD,IAAIc,UAAUA,CAAA,EAAG;IACf,OAAOF,OAAO,CAACH,yBAAyB,CAAC,CAAC,CAACR,UAAU,CAAC;EACxD;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NativeModules } from 'react-native';
|
|
4
|
+
import AesGcmCrypto from 'react-native-aes-gcm-crypto';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Ensure native module is installed & linked
|
|
8
|
+
*/
|
|
9
|
+
function ensureAesAvailable() {
|
|
10
|
+
const nativeModule = NativeModules.AesGcmCrypto || NativeModules.RNAesGcmCrypto;
|
|
11
|
+
if (!AesGcmCrypto || !nativeModule) {
|
|
12
|
+
throw new Error('react-native-aes-gcm-crypto is not installed or linked correctly.\n\n' + 'Fix:\n' + '1. yarn add react-native-aes-gcm-crypto\n' + '2. cd ios && pod install\n' + '3. Rebuild the app\n');
|
|
13
|
+
}
|
|
14
|
+
if (typeof AesGcmCrypto.encrypt !== 'function') {
|
|
15
|
+
throw new Error('AES-GCM native functions unavailable. Please rebuild the app.');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function isBase64(input) {
|
|
19
|
+
return /^[A-Za-z0-9+/]+={0,2}$/.test(input);
|
|
20
|
+
}
|
|
21
|
+
function base64ByteLength(b64) {
|
|
22
|
+
const cleaned = b64.replace(/[=]+$/, '');
|
|
23
|
+
return Math.floor(cleaned.length * 3 / 4);
|
|
24
|
+
}
|
|
25
|
+
export async function aesEncrypt(text, key) {
|
|
26
|
+
ensureAesAvailable();
|
|
27
|
+
if (!isBase64(key) || base64ByteLength(key) !== 32) {
|
|
28
|
+
throw new Error('Encryption key must be base64-encoded 32-byte (256-bit) value');
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const {
|
|
32
|
+
iv,
|
|
33
|
+
tag,
|
|
34
|
+
content
|
|
35
|
+
} = await AesGcmCrypto.encrypt(text, false, key);
|
|
36
|
+
return base64Encrypt(`${iv}:${content}:${tag}`);
|
|
37
|
+
} catch (err) {
|
|
38
|
+
throw new Error(`AES encryption failed: ${err?.message || err}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function aesDecrypt(ciphertext, key) {
|
|
42
|
+
ensureAesAvailable();
|
|
43
|
+
if (!isBase64(key) || base64ByteLength(key) !== 32) {
|
|
44
|
+
throw new Error('Encryption key must be base64-encoded 32-byte (256-bit) value');
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const [iv = '', content = '', tag = ''] = ciphertext.split(':');
|
|
48
|
+
const decrypted = await AesGcmCrypto.decrypt(content, key, iv, tag, false);
|
|
49
|
+
return decrypted;
|
|
50
|
+
} catch (err) {
|
|
51
|
+
throw new Error(`AES decryption failed: ${err?.message || err}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function base64Encrypt(plain) {
|
|
55
|
+
const utf8 = encodeURIComponent(plain).replace(/%([0-9A-F]{2})/g, (_, p1) => String.fromCharCode(parseInt(p1, 16)));
|
|
56
|
+
return btoa(utf8);
|
|
57
|
+
}
|
|
58
|
+
export function base64Decrypt(encoded) {
|
|
59
|
+
const binary = atob(encoded);
|
|
60
|
+
const utf8 = binary.split('').map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('');
|
|
61
|
+
return decodeURIComponent(utf8);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=encryption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NativeModules","AesGcmCrypto","ensureAesAvailable","nativeModule","RNAesGcmCrypto","Error","encrypt","isBase64","input","test","base64ByteLength","b64","cleaned","replace","Math","floor","length","aesEncrypt","text","key","iv","tag","content","base64Encrypt","err","message","aesDecrypt","ciphertext","split","decrypted","decrypt","plain","utf8","encodeURIComponent","_","p1","String","fromCharCode","parseInt","btoa","base64Decrypt","encoded","binary","atob","map","c","charCodeAt","toString","slice","join","decodeURIComponent"],"sourceRoot":"../../../src","sources":["utils/encryption.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,cAAc;AAC5C,OAAOC,YAAY,MAAM,6BAA6B;;AAEtD;AACA;AACA;AACA,SAASC,kBAAkBA,CAAA,EAAG;EAC5B,MAAMC,YAAY,GAChBH,aAAa,CAACC,YAAY,IAAID,aAAa,CAACI,cAAc;EAE5D,IAAI,CAACH,YAAY,IAAI,CAACE,YAAY,EAAE;IAClC,MAAM,IAAIE,KAAK,CACb,uEAAuE,GACrE,QAAQ,GACR,2CAA2C,GAC3C,4BAA4B,GAC5B,sBACJ,CAAC;EACH;EAEA,IAAI,OAAOJ,YAAY,CAACK,OAAO,KAAK,UAAU,EAAE;IAC9C,MAAM,IAAID,KAAK,CACb,+DACF,CAAC;EACH;AACF;AAEA,SAASE,QAAQA,CAACC,KAAa,EAAW;EACxC,OAAO,wBAAwB,CAACC,IAAI,CAACD,KAAK,CAAC;AAC7C;AAEA,SAASE,gBAAgBA,CAACC,GAAW,EAAU;EAC7C,MAAMC,OAAO,GAAGD,GAAG,CAACE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;EACxC,OAAOC,IAAI,CAACC,KAAK,CAAEH,OAAO,CAACI,MAAM,GAAG,CAAC,GAAI,CAAC,CAAC;AAC7C;AAEA,OAAO,eAAeC,UAAUA,CAACC,IAAY,EAAEC,GAAW,EAAmB;EAC3EjB,kBAAkB,CAAC,CAAC;EAEpB,IAAI,CAACK,QAAQ,CAACY,GAAG,CAAC,IAAIT,gBAAgB,CAACS,GAAG,CAAC,KAAK,EAAE,EAAE;IAClD,MAAM,IAAId,KAAK,CACb,+DACF,CAAC;EACH;EAEA,IAAI;IACF,MAAM;MAAEe,EAAE;MAAEC,GAAG;MAAEC;IAAQ,CAAC,GAAG,MAAMrB,YAAY,CAACK,OAAO,CAACY,IAAI,EAAE,KAAK,EAAEC,GAAG,CAAC;IAEzE,OAAOI,aAAa,CAAC,GAAGH,EAAE,IAAIE,OAAO,IAAID,GAAG,EAAE,CAAC;EACjD,CAAC,CAAC,OAAOG,GAAQ,EAAE;IACjB,MAAM,IAAInB,KAAK,CAAC,0BAA0BmB,GAAG,EAAEC,OAAO,IAAID,GAAG,EAAE,CAAC;EAClE;AACF;AAEA,OAAO,eAAeE,UAAUA,CAC9BC,UAAkB,EAClBR,GAAW,EACM;EACjBjB,kBAAkB,CAAC,CAAC;EAEpB,IAAI,CAACK,QAAQ,CAACY,GAAG,CAAC,IAAIT,gBAAgB,CAACS,GAAG,CAAC,KAAK,EAAE,EAAE;IAClD,MAAM,IAAId,KAAK,CACb,+DACF,CAAC;EACH;EAEA,IAAI;IACF,MAAM,CAACe,EAAE,GAAG,EAAE,EAAEE,OAAO,GAAG,EAAE,EAAED,GAAG,GAAG,EAAE,CAAC,GAAGM,UAAU,CAACC,KAAK,CAAC,GAAG,CAAC;IAE/D,MAAMC,SAAS,GAAG,MAAM5B,YAAY,CAAC6B,OAAO,CAACR,OAAO,EAAEH,GAAG,EAAEC,EAAE,EAAEC,GAAG,EAAE,KAAK,CAAC;IAE1E,OAAOQ,SAAS;EAClB,CAAC,CAAC,OAAOL,GAAQ,EAAE;IACjB,MAAM,IAAInB,KAAK,CAAC,0BAA0BmB,GAAG,EAAEC,OAAO,IAAID,GAAG,EAAE,CAAC;EAClE;AACF;AAKA,OAAO,SAASD,aAAaA,CAACQ,KAAa,EAAU;EACnD,MAAMC,IAAI,GAAGC,kBAAkB,CAACF,KAAK,CAAC,CAAClB,OAAO,CAC5C,iBAAiB,EACjB,CAACqB,CAAC,EAAEC,EAAU,KAAKC,MAAM,CAACC,YAAY,CAACC,QAAQ,CAACH,EAAE,EAAE,EAAE,CAAC,CACzD,CAAC;EACD,OAAOI,IAAI,CAACP,IAAI,CAAC;AACnB;AAEA,OAAO,SAASQ,aAAaA,CAACC,OAAe,EAAU;EACrD,MAAMC,MAAM,GAAGC,IAAI,CAACF,OAAO,CAAC;EAC5B,MAAMT,IAAI,GAAGU,MAAM,CAChBd,KAAK,CAAC,EAAE,CAAC,CACTgB,GAAG,CAAEC,CAAC,IAAK,GAAG,GAAG,CAAC,IAAI,GAAGA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,EAAEC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACjEC,IAAI,CAAC,EAAE,CAAC;EACX,OAAOC,kBAAkB,CAAClB,IAAI,CAAC;AACjC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SDKError","Error","constructor","message","name"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":";;AAAA,OAAO,MAAMA,QAAQ,SAASC,KAAK,CAAC;EAClCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,UAAU;EACxB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["logger","info","args","console","warn","error"],"sourceRoot":"../../../src","sources":["utils/logger.ts"],"mappings":";;AAAA,OAAO,MAAMA,MAAM,GAAG;EACpBC,IAAI,EAAEA,CAAC,GAAGC,IAAe,KAAK;IAC5BC,OAAO,CAACF,IAAI,CAAC,GAAGC,IAAI,CAAC;EACvB,CAAC;EACDE,IAAI,EAAEA,CAAC,GAAGF,IAAe,KAAK;IAC5BC,OAAO,CAACC,IAAI,CAAC,GAAGF,IAAI,CAAC;EACvB,CAAC;EACDG,KAAK,EAAEA,CAAC,GAAGH,IAAe,KAAK;IAC7BC,OAAO,CAACE,KAAK,CAAC,GAAGH,IAAI,CAAC;EACxB;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Platform } from 'react-native';
|
|
5
|
+
export function isIOS() {
|
|
6
|
+
return Platform.OS === 'ios';
|
|
7
|
+
}
|
|
8
|
+
export function isAndroid() {
|
|
9
|
+
return Platform.OS === 'android';
|
|
10
|
+
}
|
|
11
|
+
export function platformVersion() {
|
|
12
|
+
return Number(Platform.Version);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=platformManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","isIOS","OS","isAndroid","platformVersion","Number","Version"],"sourceRoot":"../../../src","sources":["utils/platformManager.ts"],"mappings":";;AAAA;AACA,SAASA,QAAQ,QAAQ,cAAc;AAEvC,OAAO,SAASC,KAAKA,CAAA,EAAY;EAC/B,OAAOD,QAAQ,CAACE,EAAE,KAAK,KAAK;AAC9B;AAEA,OAAO,SAASC,SAASA,CAAA,EAAY;EACnC,OAAOH,QAAQ,CAACE,EAAE,KAAK,SAAS;AAClC;AAEA,OAAO,SAASE,eAAeA,CAAA,EAAW;EACxC,OAAOC,MAAM,CAACL,QAAQ,CAACM,OAAO,CAAC;AACjC","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// React Native Core
|
|
4
|
+
import { Linking } from 'react-native';
|
|
5
|
+
|
|
6
|
+
// Platform / Environment helpers
|
|
7
|
+
import { isIOS } from "./platformManager.js";
|
|
8
|
+
export function isValidPhoneNumber(input) {
|
|
9
|
+
if (!input) return false;
|
|
10
|
+
return /^\+?[0-9]{8,15}$/.test(input);
|
|
11
|
+
}
|
|
12
|
+
export async function isMapAppAvailable() {
|
|
13
|
+
if (isIOS()) {
|
|
14
|
+
// Apple Maps scheme
|
|
15
|
+
return Linking.canOpenURL('maps:0,0?q=test');
|
|
16
|
+
}
|
|
17
|
+
// Android geo scheme
|
|
18
|
+
return Linking.canOpenURL('geo:0,0?q=0,0');
|
|
19
|
+
}
|
|
20
|
+
export async function isValidCoordinates(lat, lng) {
|
|
21
|
+
if (!Number.isFinite(lat) || !Number.isFinite(lng)) return false;
|
|
22
|
+
if (lat < -90 || lat > 90) return false;
|
|
23
|
+
if (lng < -180 || lng > 180) return false;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","isIOS","isValidPhoneNumber","input","test","isMapAppAvailable","canOpenURL","isValidCoordinates","lat","lng","Number","isFinite"],"sourceRoot":"../../../src","sources":["utils/validator.ts"],"mappings":";;AAAA;AACA,SAASA,OAAO,QAAQ,cAAc;;AAEtC;AACA,SAASC,KAAK,QAAQ,sBAAmB;AAEzC,OAAO,SAASC,kBAAkBA,CAACC,KAAa,EAAW;EACzD,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;EACxB,OAAO,kBAAkB,CAACC,IAAI,CAACD,KAAK,CAAC;AACvC;AAEA,OAAO,eAAeE,iBAAiBA,CAAA,EAAqB;EAC1D,IAAIJ,KAAK,CAAC,CAAC,EAAE;IACX;IACA,OAAOD,OAAO,CAACM,UAAU,CAAC,iBAAiB,CAAC;EAC9C;EACA;EACA,OAAON,OAAO,CAACM,UAAU,CAAC,eAAe,CAAC;AAC5C;AAEA,OAAO,eAAeC,kBAAkBA,CACtCC,GAAW,EACXC,GAAW,EACO;EAClB,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACH,GAAG,CAAC,IAAI,CAACE,MAAM,CAACC,QAAQ,CAACF,GAAG,CAAC,EAAE,OAAO,KAAK;EAChE,IAAID,GAAG,GAAG,CAAC,EAAE,IAAIA,GAAG,GAAG,EAAE,EAAE,OAAO,KAAK;EACvC,IAAIC,GAAG,GAAG,CAAC,GAAG,IAAIA,GAAG,GAAG,GAAG,EAAE,OAAO,KAAK;EACzC,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function initializeSDK(providedKeys: {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
encryptionKey: string;
|
|
4
|
+
pRefCode: string;
|
|
5
|
+
authMode: string;
|
|
6
|
+
navigationRef: any;
|
|
7
|
+
}): void;
|
|
8
|
+
export declare const SaversAppSDK: {
|
|
9
|
+
initialized: typeof initializeSDK;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/core/runtime.ts"],"names":[],"mappings":"AAiBA,wBAAgB,aAAa,CAAC,YAAY,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC;CACpB,QAwDA;AAED,eAAO,MAAM,YAAY;;CAExB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ApiResponse<T> = {
|
|
2
|
+
data?: T | null;
|
|
3
|
+
status?: boolean;
|
|
4
|
+
message?: string;
|
|
5
|
+
fromCache: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function apiError(message?: string): ApiResponse<null>;
|
|
8
|
+
export declare function apiSuccess<T>(data: T, message?: string, fromCache?: boolean): ApiResponse<T>;
|
|
9
|
+
//# sourceMappingURL=apiResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiResponse.d.ts","sourceRoot":"","sources":["../../../../../src/data/models/apiResponse.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAO5D;AAED,wBAAgB,UAAU,CAAC,CAAC,EAC1B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,OAAO,GAClB,WAAW,CAAC,CAAC,CAAC,CAOhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type OnBoardingImage = {
|
|
2
|
+
id?: number | null;
|
|
3
|
+
url?: string | null;
|
|
4
|
+
};
|
|
5
|
+
export declare function onBoardingImageFromJson(json: Record<string, any>): OnBoardingImage;
|
|
6
|
+
export declare function onBoardingImageListFromJson(list: any[]): OnBoardingImage[];
|
|
7
|
+
export type OnBoardingThemeData = {
|
|
8
|
+
total?: number | null;
|
|
9
|
+
images?: OnBoardingImage[] | null;
|
|
10
|
+
};
|
|
11
|
+
export declare function onBoardingThemeFromJson(json: any): OnBoardingThemeData;
|
|
12
|
+
export type OnBoardingData = {
|
|
13
|
+
day?: OnBoardingThemeData | null;
|
|
14
|
+
night?: OnBoardingThemeData | null;
|
|
15
|
+
};
|
|
16
|
+
export declare function onBoardingDataFromJson(json: any): OnBoardingData;
|
|
17
|
+
export declare const images: (d?: OnBoardingData | null) => OnBoardingImage[] | null;
|
|
18
|
+
export declare const total: (d?: OnBoardingData | null) => number | null;
|
|
19
|
+
export declare const hasTotal: (d?: OnBoardingData | null) => boolean;
|
|
20
|
+
export declare const hasImages: (d?: OnBoardingData | null) => boolean;
|
|
21
|
+
export declare const imageCount: (d?: OnBoardingData | null) => number;
|
|
22
|
+
export declare const isValid: (d?: OnBoardingData | null) => boolean;
|
|
23
|
+
export declare const getImage: (d: OnBoardingData | null | undefined, index: number) => OnBoardingImage | null;
|
|
24
|
+
//# sourceMappingURL=onboardingModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboardingModel.d.ts","sourceRoot":"","sources":["../../../../../src/data/models/onboardingModel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,eAAe,CAKjB;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,eAAe,EAAE,CAU1E;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,GAAG,GAAG,mBAAmB,CActE;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAsBhE;AAED,eAAO,MAAM,MAAM,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,eAAe,EAAE,GAAG,IAC3B,CAAC;AAC7C,eAAO,MAAM,KAAK,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,MAAM,GAAG,IACjB,CAAC;AAC3C,eAAO,MAAM,QAAQ,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,OAClC,CAAC;AACpB,eAAO,MAAM,SAAS,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,OACT,CAAC;AAC9C,eAAO,MAAM,UAAU,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,MAC/B,CAAC;AACzB,eAAO,MAAM,OAAO,GAAI,IAAI,cAAc,GAAG,IAAI,KAAG,OAEX,CAAC;AAC1C,eAAO,MAAM,QAAQ,GACnB,GAAG,cAAc,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,MAAM,KACZ,eAAe,GAAG,IAIpB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type TokenResponse = {
|
|
2
|
+
token?: string | null;
|
|
3
|
+
statusCode?: number | null;
|
|
4
|
+
error?: string | null;
|
|
5
|
+
messages?: string[] | null;
|
|
6
|
+
};
|
|
7
|
+
export declare function tokenResponseFromJson(json: any): TokenResponse;
|
|
8
|
+
export declare const token: (d?: TokenResponse | null) => string | null;
|
|
9
|
+
export declare const hasToken: (d?: TokenResponse | null) => boolean;
|
|
10
|
+
export declare const isValid: (d?: TokenResponse | null) => boolean;
|
|
11
|
+
export declare const status: (d?: TokenResponse | null) => number | null;
|
|
12
|
+
export declare const error: (d?: TokenResponse | null) => string | null;
|
|
13
|
+
export declare const messages: (d?: TokenResponse | null) => string[] | null;
|
|
14
|
+
export declare const hasError: (d?: TokenResponse | null) => boolean;
|
|
15
|
+
//# sourceMappingURL=tokenModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenModel.d.ts","sourceRoot":"","sources":["../../../../../src/data/models/tokenModel.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,CAqB9D;AAED,eAAO,MAAM,KAAK,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,MAAM,GAAG,IACxC,CAAC;AACnB,eAAO,MAAM,QAAQ,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,OAChB,CAAC;AACrC,eAAO,MAAM,OAAO,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,OAAsB,CAAC;AAC1E,eAAO,MAAM,MAAM,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,MAAM,GAAG,IACpC,CAAC;AACxB,eAAO,MAAM,KAAK,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,MAAM,GAAG,IACxC,CAAC;AACnB,eAAO,MAAM,QAAQ,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,MAAM,EAAE,GAAG,IAC1C,CAAC;AACtB,eAAO,MAAM,QAAQ,GAAI,IAAI,aAAa,GAAG,IAAI,KAAG,OACqB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum Environment {
|
|
2
|
+
production = "production",
|
|
3
|
+
staging = "staging"
|
|
4
|
+
}
|
|
5
|
+
export declare class ApiClient {
|
|
6
|
+
private static readonly baseUrls;
|
|
7
|
+
private baseUrl;
|
|
8
|
+
private interceptors;
|
|
9
|
+
constructor(environment?: Environment);
|
|
10
|
+
get(endpoint: string, params?: Record<string, any>): Promise<any>;
|
|
11
|
+
post(endpoint: string, data?: any, params?: Record<string, any>): Promise<any>;
|
|
12
|
+
put(endpoint: string, data?: any, params?: Record<string, any>): Promise<any>;
|
|
13
|
+
delete(endpoint: string, data?: any, params?: Record<string, any>): Promise<any>;
|
|
14
|
+
private request;
|
|
15
|
+
private buildUrl;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=apiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiClient.d.ts","sourceRoot":"","sources":["../../../../../src/data/network/apiClient.ts"],"names":[],"mappings":"AAYA,oBAAY,WAAW;IACrB,UAAU,eAAe;IACzB,OAAO,YAAY;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAG9B;IAEF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAa;gBAErB,WAAW,GAAE,WAAoC;IAYvD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjE,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,GAAG,CAAC;IAIT,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,GAAG,CAAC;IAIT,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,GAAG,CAAC;YAID,OAAO;IAmErB,OAAO,CAAC,QAAQ;CAcjB"}
|