mirror of
https://github.com/Blockchain-Powered-eSIM/eSIM-Wallet.git
synced 2026-01-09 10:27:58 -05:00
get-esim-skeleton
This commit is contained in:
@@ -8,25 +8,37 @@
|
||||
import React, {useEffect, useRef, useState} from 'react';
|
||||
import {
|
||||
NativeModules,
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
TouchableOpacity,
|
||||
PermissionsAndroid,
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
TouchableOpacity,
|
||||
PermissionsAndroid,
|
||||
} from 'react-native';
|
||||
|
||||
import { Button } from './components/Button';
|
||||
import { Modal } from './components/Modal';
|
||||
import { getData } from './endpoints/api_handles';
|
||||
import {Button} from './components/Button';
|
||||
import {Modal} from './components/Modal';
|
||||
import {getData} from './endpoints/api_handles';
|
||||
var RNFS = require('react-native-fs');
|
||||
|
||||
import {MMKVLoader, useMMKVStorage} from 'react-native-mmkv-storage';
|
||||
|
||||
import axios from 'axios';
|
||||
|
||||
// import dotenv from 'dotenv';
|
||||
// dotenv.config({path: '../../.env'});
|
||||
|
||||
module.exports;
|
||||
|
||||
interface ILog {
|
||||
command: string;
|
||||
result: any;
|
||||
command: string;
|
||||
result: any;
|
||||
}
|
||||
|
||||
interface Plan {
|
||||
id: number;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export default function App() {
|
||||
@@ -35,15 +47,115 @@ export default function App() {
|
||||
const [identifier, setIdentifier] = useState('');
|
||||
const [encryptedKey, setEncryptedKey] = useState('');
|
||||
const [isKeyModalVisible, setIsKeyModalVisible] = useState(false);
|
||||
const [isTransactionModalVisible, setIsTransactionModalVisible] = useState(false);
|
||||
const [isTransactionModalVisible, setIsTransactionModalVisible] =
|
||||
useState(false);
|
||||
const [data, setData] = useState(null);
|
||||
const [error, setError] = useState(null);
|
||||
const [permissionsGranted, setPermissionsGranted] = useState(false);
|
||||
|
||||
const storageObj = new MMKVLoader().initialize();
|
||||
const DEVICE_IDENTIFIER = "deviceIDKey";
|
||||
const EC_PUBLIC_KEY = "ecPubKey";
|
||||
const ENCRYPTED_EC_PRIVATE_KEY = "encryptPrivKey";
|
||||
const appAlias = "TestAPP";
|
||||
|
||||
const [isPlanModalVisible, setPlanModalVisibility] = useState(false);
|
||||
const [isConfirmModalVisible, setConfirmModalVisibility] = useState(false);
|
||||
const [eSIMPlans, setEsimPlans] = useState<Plan[]>([]);
|
||||
const [selectedPlan, setSelectedPlan] = useState(null);
|
||||
|
||||
const [orgData, setOrgData] = useState<any>(null);
|
||||
const [isOrgModalVisible, setIsOrgModalVisible] = useState(false);
|
||||
|
||||
const DEVICE_IDENTIFIER = 'deviceIDKey';
|
||||
const EC_PUBLIC_KEY = 'ecPubKey';
|
||||
const ENCRYPTED_EC_PRIVATE_KEY = 'encryptPrivKey';
|
||||
const appAlias = 'TestAPP';
|
||||
|
||||
const fetchOrgData = async () => {
|
||||
try {
|
||||
const config = {
|
||||
method: 'get',
|
||||
maxBodyLength: Infinity,
|
||||
url: 'https://api.esim-go.com/v2.3/organisation',
|
||||
headers: {
|
||||
'X-API-Key': process.env.eSIM_GO_API_KEY, // Replace with your actual API key
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
};
|
||||
|
||||
const response = await axios.request(config); // Await Axios request
|
||||
const orgDetail = response.data?.organisations[0]?.productDescription;
|
||||
|
||||
// console.log(JSON.stringify(response.data));
|
||||
console.log(orgDetail);
|
||||
setOrgData(orgDetail);
|
||||
setIsOrgModalVisible(true);
|
||||
} catch (error) {
|
||||
console.error('Error fetching organization data:', error);
|
||||
}
|
||||
};
|
||||
|
||||
const handleBuyESIM = async () => {
|
||||
// const plans = await getCatalogue();
|
||||
// Using test values for eSIM plans instead of fetching from an API
|
||||
const testPlans = [
|
||||
{id: 1, description: 'Plan A - 5GB for $10'},
|
||||
{id: 2, description: 'Plan B - 10GB for $15'},
|
||||
{id: 3, description: 'Plan C - Unlimited for $25'},
|
||||
];
|
||||
setEsimPlans(testPlans);
|
||||
setPlanModalVisibility(true);
|
||||
};
|
||||
|
||||
const handlePlanSelection = (selectedPlan: Plan) => {
|
||||
setSelectedPlan(selectedPlan);
|
||||
setPlanModalVisibility(false);
|
||||
setConfirmModalVisibility(true);
|
||||
};
|
||||
|
||||
// Inside the handleConfirmPurchase function
|
||||
const handleConfirmPurchase = () => {
|
||||
if (selectedPlan) {
|
||||
console.log('Purchasing:', selectedPlan);
|
||||
|
||||
// Prepare data for the API request
|
||||
let data = JSON.stringify({
|
||||
bundles: [
|
||||
{
|
||||
name: selectedPlan.description, // Assuming the plan description is the name
|
||||
startTime: new Date().toISOString(), // Assuming the purchase time is the current time
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
// Configure the API request
|
||||
let config = {
|
||||
method: 'post',
|
||||
maxBodyLength: Infinity,
|
||||
url: 'https://api.esim-go.com/v2.3/esims/apply',
|
||||
headers: {
|
||||
'X-API-Key': 'process.env.eSIM_GO_API_KEY', // Replace 'YOUR_API_KEY' with your actual API key
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: data,
|
||||
};
|
||||
|
||||
// Make the API request
|
||||
axios
|
||||
.request(config)
|
||||
.then(response => {
|
||||
console.log('Purchase successful:', response.data);
|
||||
setConfirmModalVisibility(false); // Close the confirmation modal
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error purchasing eSIM:', error);
|
||||
// Handle error scenario, display error message to the user, etc.
|
||||
});
|
||||
} else {
|
||||
console.error('No plan selected.');
|
||||
}
|
||||
};
|
||||
|
||||
const handleCancelPurchase = () => {
|
||||
setConfirmModalVisibility(false);
|
||||
};
|
||||
|
||||
const toggleModalVisibility = () => {
|
||||
setIsModalVisible(visible => !visible);
|
||||
@@ -56,6 +168,7 @@ export default function App() {
|
||||
const toggleTransactionModalVisibility = () => {
|
||||
setIsTransactionModalVisible(visible => !visible);
|
||||
};
|
||||
|
||||
// Store and retrieve data
|
||||
// TODO: Handle other datatypes
|
||||
const storeData = (key, value) => {
|
||||
@@ -78,23 +191,23 @@ export default function App() {
|
||||
const requestPhoneStatePermission = async () => {
|
||||
try {
|
||||
await PermissionsAndroid.requestMultiple([
|
||||
PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE,
|
||||
PermissionsAndroid.PERMISSIONS.READ_PHONE_NUMBERS,
|
||||
PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE,
|
||||
PermissionsAndroid.PERMISSIONS.READ_PHONE_NUMBERS,
|
||||
]).then(result => {
|
||||
if (
|
||||
result['android.permission.READ_PHONE_STATE'] &&
|
||||
result['android.permission.READ_PHONE_NUMBERS'] === 'granted'
|
||||
) {
|
||||
this.setState({permissionsGranted: true});
|
||||
result['android.permission.READ_PHONE_STATE'] &&
|
||||
result['android.permission.READ_PHONE_NUMBERS'] === 'granted'
|
||||
) {
|
||||
this.setState({permissionsGranted: true});
|
||||
} else if (
|
||||
result['android.permission.READ_PHONE_STATE'] ||
|
||||
result['android.permission.READ_PHONE_NUMBERS'] === 'never_ask_again'
|
||||
) {
|
||||
this.refs.toast.show(
|
||||
result['android.permission.READ_PHONE_STATE'] ||
|
||||
result['android.permission.READ_PHONE_NUMBERS'] === 'never_ask_again'
|
||||
) {
|
||||
this.refs.toast.show(
|
||||
'Please Go into Settings -> Applications -> APP_NAME -> Permissions and Allow permissions to continue',
|
||||
);
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
@@ -115,24 +228,23 @@ export default function App() {
|
||||
// }, []);
|
||||
|
||||
useEffect(() => {
|
||||
console.log('UseEffect Asking permission');
|
||||
(async () => {
|
||||
await requestPhoneStatePermission();
|
||||
})();
|
||||
}, []);
|
||||
console.log('UseEffect Asking permission');
|
||||
(async () => {
|
||||
await requestPhoneStatePermission();
|
||||
})();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
if (!isModalVisible) return;
|
||||
const id = await getUniqueIdentifier();
|
||||
setIdentifier(id);
|
||||
})();
|
||||
}, [isModalVisible]);
|
||||
(async () => {
|
||||
if (!isModalVisible) return;
|
||||
const id = await getUniqueIdentifier();
|
||||
setIdentifier(id);
|
||||
})();
|
||||
}, [isModalVisible]);
|
||||
|
||||
const getUniqueIdentifier = async () => {
|
||||
try {
|
||||
const androidID =
|
||||
await NativeModules.IdentityManager.getAndroidID();
|
||||
const androidID = await NativeModules.IdentityManager.getAndroidID();
|
||||
console.log('Android_ID: ', androidID);
|
||||
|
||||
const retrievedHash = retrieveData(DEVICE_IDENTIFIER);
|
||||
@@ -147,7 +259,7 @@ export default function App() {
|
||||
return retrieveData(DEVICE_IDENTIFIER);
|
||||
} else {
|
||||
return retrieveData(DEVICE_IDENTIFIER);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('error: ', error);
|
||||
}
|
||||
@@ -161,13 +273,13 @@ export default function App() {
|
||||
const privateKey = retrieveData(ENCRYPTED_EC_PRIVATE_KEY);
|
||||
console.log('Encrypted EC Private Key: ', privateKey);
|
||||
|
||||
if (publicKey == null || privateKey == null){
|
||||
if (publicKey == null || privateKey == null) {
|
||||
const {ecPublicKey, encrypted_key, msg} =
|
||||
await NativeModules.KeyStore.generateAndStoreECKeyPair(
|
||||
appAlias,
|
||||
'Test123',
|
||||
RNFS.DownloadDirectoryPath,
|
||||
);
|
||||
appAlias,
|
||||
'Test123',
|
||||
RNFS.DownloadDirectoryPath,
|
||||
);
|
||||
console.log('EC Public Key: ', ecPublicKey);
|
||||
console.log(msg);
|
||||
console.log('Encrypted Private Key: ', encrypted_key);
|
||||
@@ -186,14 +298,17 @@ export default function App() {
|
||||
}
|
||||
};
|
||||
|
||||
const getECPrivateKey = async() => {
|
||||
const getECPrivateKey = async () => {
|
||||
try {
|
||||
const private_key = await NativeModules.KeyStore.retrieveECPrivateKey(retrieveData(ENCRYPTED_EC_PRIVATE_KEY), appAlias);
|
||||
const private_key = await NativeModules.KeyStore.retrieveECPrivateKey(
|
||||
retrieveData(ENCRYPTED_EC_PRIVATE_KEY),
|
||||
appAlias,
|
||||
);
|
||||
return private_key;
|
||||
} catch (error) {
|
||||
console.log('Error: ', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleKMM = async () => {
|
||||
try {
|
||||
@@ -201,16 +316,16 @@ export default function App() {
|
||||
console.log(mnemonic);
|
||||
|
||||
const fileName = await NativeModules.ECKeyManager.generateAndSaveWallet(
|
||||
mnemonic,
|
||||
'Test123',
|
||||
RNFS.DownloadDirectoryPath,
|
||||
);
|
||||
mnemonic,
|
||||
'Test123',
|
||||
RNFS.DownloadDirectoryPath,
|
||||
);
|
||||
console.log('fileName: ', fileName);
|
||||
|
||||
const address = await NativeModules.ECKeyManager.loadCredentialsFromFile(
|
||||
'Test123',
|
||||
`${RNFS.DownloadDirectoryPath}/${fileName}`,
|
||||
);
|
||||
'Test123',
|
||||
`${RNFS.DownloadDirectoryPath}/${fileName}`,
|
||||
);
|
||||
console.log('address: ', address);
|
||||
} catch (error) {
|
||||
console.log('Error: ', error);
|
||||
@@ -232,16 +347,16 @@ export default function App() {
|
||||
|
||||
const transactionHash =
|
||||
await NativeModules.ECTransactionManager.initiateTransaction(
|
||||
privateKey,
|
||||
walletPassword,
|
||||
to,
|
||||
from,
|
||||
value,
|
||||
calldata,
|
||||
gasPrice,
|
||||
gasLimit,
|
||||
nonce,
|
||||
);
|
||||
privateKey,
|
||||
walletPassword,
|
||||
to,
|
||||
from,
|
||||
value,
|
||||
calldata,
|
||||
gasPrice,
|
||||
gasLimit,
|
||||
nonce,
|
||||
);
|
||||
|
||||
console.log('Transaction hash:', transactionHash);
|
||||
toggleTransactionModalVisibility();
|
||||
@@ -251,67 +366,118 @@ export default function App() {
|
||||
};
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={styles.container}>
|
||||
<Text style={styles.title}>eSIM Wallet app</Text>
|
||||
<View style={styles.separator} />
|
||||
<Button title="Fetch Unique ID" onPress={toggleModalVisibility} />
|
||||
<Modal isVisible={isModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Device Data" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{identifier}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Device Data" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{identifier}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
<Button title="Generate EC KeyPair" onPress={generateKeyStore} />
|
||||
<Modal isVisible={isKeyModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Encrypted Private Key" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{encryptedKey}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleKeyModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Encrypted Private Key" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{encryptedKey}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleKeyModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
<Button title="Sign Transaction" onPress={handleSignTransaction} />
|
||||
<Modal isVisible={isTransactionModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Transaction Details" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{"TEST-Tx"}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleTransactionModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Transaction Details" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{'TEST-Tx'}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Back" onPress={toggleTransactionModalVisibility} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
</View>
|
||||
);
|
||||
<Button title="Buy eSIM" onPress={handleBuyESIM} />
|
||||
{/* Modal for displaying eSIM plans */}
|
||||
<Modal isVisible={isPlanModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Select eSIM Plan" />
|
||||
<Modal.Body>
|
||||
{eSIMPlans.map((testPlans, index) => (
|
||||
<TouchableOpacity
|
||||
key={index}
|
||||
onPress={() => handlePlanSelection(testPlans)}>
|
||||
<Text style={styles.planText}>{testPlans.description}</Text>
|
||||
</TouchableOpacity>
|
||||
))}
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button
|
||||
title="Close"
|
||||
onPress={() => setPlanModalVisibility(false)}
|
||||
/>
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
{/* Modal for confirming the purchase */}
|
||||
<Modal isVisible={isConfirmModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Confirm The Purchase" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>
|
||||
Do you want to buy{' '}
|
||||
{selectedPlan ? selectedPlan.description : 'this eSIM plan'}?
|
||||
</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Yes" onPress={handleConfirmPurchase} />
|
||||
<Button title="No" onPress={handleCancelPurchase} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
{/* Modal for fetching org details */}
|
||||
<Button title="Org" onPress={fetchOrgData} />
|
||||
<Modal isVisible={isOrgModalVisible}>
|
||||
<Modal.Container>
|
||||
<Modal.Header title="Organization Data" />
|
||||
<Modal.Body>
|
||||
<Text style={styles.text}>{JSON.stringify(orgData, null, 2)}</Text>
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button title="Close" onPress={() => setIsOrgModalVisible(false)} />
|
||||
</Modal.Footer>
|
||||
</Modal.Container>
|
||||
</Modal>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
title: {
|
||||
fontSize: 20,
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
text: {
|
||||
fontSize: 16,
|
||||
fontWeight: '400',
|
||||
textAlign: 'center',
|
||||
},
|
||||
separator: {
|
||||
marginVertical: 30,
|
||||
height: 1,
|
||||
width: '80%',
|
||||
},
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
title: {
|
||||
fontSize: 20,
|
||||
fontWeight: 'bold',
|
||||
},
|
||||
text: {
|
||||
fontSize: 16,
|
||||
fontWeight: '400',
|
||||
textAlign: 'center',
|
||||
},
|
||||
separator: {
|
||||
marginVertical: 30,
|
||||
height: 1,
|
||||
width: '80%',
|
||||
},
|
||||
});
|
||||
|
||||
@@ -3,10 +3,7 @@ import axios from 'axios';
|
||||
require('dotenv').config();
|
||||
|
||||
// Configuration
|
||||
const { API_BASE_URL,
|
||||
ESIMGO_ENDPOINT,
|
||||
WALLET_ENDPOINT
|
||||
} = process.env;
|
||||
const {API_BASE_URL, ESIMGO_ENDPOINT, WALLET_ENDPOINT} = process.env;
|
||||
|
||||
const PROVIDER_SERVICE_URL = `$(API_BASE_URL)/$(ESIMGO_ENDPOINT)`;
|
||||
const WALLET_SERVICE_URL = `$(API_BASE_URL)/$(WALLET_ENDPOINT)`;
|
||||
@@ -28,22 +25,22 @@ const providerAPI = axios.create({
|
||||
});
|
||||
|
||||
// Functions to handle requests and responses to endpoints
|
||||
export const getData = async (userId) => {
|
||||
export const getData = async userId => {
|
||||
try {
|
||||
const response = await walletAPI.get('/getData/$(userId)');
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error("Error fetching data:", error);
|
||||
console.error('Error fetching data:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
export const getCatalogue = async (userId) => {
|
||||
export const getCatalogue = async () => {
|
||||
try {
|
||||
const response = await providerAPI.get('/catalogue');
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error("Error fetching eSIMGo Catalogue:", error);
|
||||
console.error('Error fetching eSIMGo Catalogue:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
6
next.conf.js
Normal file
6
next.conf.js
Normal file
@@ -0,0 +1,6 @@
|
||||
require('dotenv').config();
|
||||
module.exports = {
|
||||
env: {
|
||||
eSIM_GO_API_KEY: process.env.eSIM_GO_API_KEY,
|
||||
},
|
||||
};
|
||||
474
package-lock.json
generated
474
package-lock.json
generated
@@ -8,10 +8,11 @@
|
||||
"name": "eSIM-Wallet",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"axios": "^1.6.8",
|
||||
"axios": "^1.7.2",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-register": "^6.26.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"dotenv-webpack": "^8.1.0",
|
||||
"react": "18.2.0",
|
||||
"react-native": "0.73.6",
|
||||
"react-native-fs": "^2.20.0",
|
||||
@@ -26,6 +27,7 @@
|
||||
"@react-native/eslint-config": "0.73.2",
|
||||
"@react-native/metro-config": "0.73.5",
|
||||
"@react-native/typescript-config": "0.73.1",
|
||||
"@types/dotenv-webpack": "^7.0.7",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react-test-renderer": "18.3.0",
|
||||
"babel-jest": "^29.7.0",
|
||||
@@ -4386,6 +4388,40 @@
|
||||
"@babel/types": "^7.20.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/dotenv-webpack": {
|
||||
"version": "7.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/dotenv-webpack/-/dotenv-webpack-7.0.7.tgz",
|
||||
"integrity": "sha512-tltVokFUeYuSjNmHc6N892Asu/JIQcnH2iUF5A29/VKqv9opq6KlrmnKd/Lt/bBikV/z0YN2K0kguTwWirYCMQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"tapable": "^2.2.0",
|
||||
"webpack": "^5"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/eslint": {
|
||||
"version": "8.56.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz",
|
||||
"integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==",
|
||||
"dependencies": {
|
||||
"@types/estree": "*",
|
||||
"@types/json-schema": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/eslint-scope": {
|
||||
"version": "3.7.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
|
||||
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
|
||||
"dependencies": {
|
||||
"@types/eslint": "*",
|
||||
"@types/estree": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
|
||||
},
|
||||
"node_modules/@types/graceful-fs": {
|
||||
"version": "4.1.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
|
||||
@@ -4419,8 +4455,7 @@
|
||||
"node_modules/@types/json-schema": {
|
||||
"version": "7.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
||||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.11.30",
|
||||
@@ -4784,6 +4819,147 @@
|
||||
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@webassemblyjs/ast": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
|
||||
"integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/helper-numbers": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/floating-point-hex-parser": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
|
||||
"integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw=="
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-api-error": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
|
||||
"integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q=="
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-buffer": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
|
||||
"integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw=="
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-numbers": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
|
||||
"integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/floating-point-hex-parser": "1.11.6",
|
||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
|
||||
"integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA=="
|
||||
},
|
||||
"node_modules/@webassemblyjs/helper-wasm-section": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
|
||||
"integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/ieee754": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
|
||||
"integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
|
||||
"dependencies": {
|
||||
"@xtuc/ieee754": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/leb128": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
|
||||
"integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
|
||||
"dependencies": {
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/utf8": {
|
||||
"version": "1.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
|
||||
"integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA=="
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-edit": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
|
||||
"integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-section": "1.12.1",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
||||
"@webassemblyjs/wasm-opt": "1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "1.12.1",
|
||||
"@webassemblyjs/wast-printer": "1.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-gen": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
|
||||
"integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/ieee754": "1.11.6",
|
||||
"@webassemblyjs/leb128": "1.11.6",
|
||||
"@webassemblyjs/utf8": "1.11.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-opt": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
|
||||
"integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "1.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wasm-parser": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
|
||||
"integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
||||
"@webassemblyjs/ieee754": "1.11.6",
|
||||
"@webassemblyjs/leb128": "1.11.6",
|
||||
"@webassemblyjs/utf8": "1.11.6"
|
||||
}
|
||||
},
|
||||
"node_modules/@webassemblyjs/wast-printer": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
|
||||
"integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
|
||||
"dependencies": {
|
||||
"@webassemblyjs/ast": "1.12.1",
|
||||
"@xtuc/long": "4.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@xtuc/ieee754": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
||||
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
|
||||
},
|
||||
"node_modules/@xtuc/long": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
|
||||
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
|
||||
},
|
||||
"node_modules/abort-controller": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
||||
@@ -4818,6 +4994,14 @@
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-import-assertions": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
|
||||
"integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
|
||||
"peerDependencies": {
|
||||
"acorn": "^8"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-jsx": {
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
||||
@@ -4831,7 +5015,6 @@
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
@@ -4843,6 +5026,14 @@
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/ajv-keywords": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||
"peerDependencies": {
|
||||
"ajv": "^6.9.1"
|
||||
}
|
||||
},
|
||||
"node_modules/anser": {
|
||||
"version": "1.4.10",
|
||||
"resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
|
||||
@@ -5134,9 +5325,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.6.8",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
|
||||
"integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
|
||||
"integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.0",
|
||||
@@ -6130,6 +6321,14 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/chrome-trace-event": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
|
||||
"integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/chromium-edge-launcher": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz",
|
||||
@@ -7165,6 +7364,36 @@
|
||||
"url": "https://dotenvx.com"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-defaults": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz",
|
||||
"integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==",
|
||||
"dependencies": {
|
||||
"dotenv": "^8.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-defaults/node_modules/dotenv": {
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
|
||||
"integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv-webpack": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-8.1.0.tgz",
|
||||
"integrity": "sha512-owK1JcsPkIobeqjVrk6h7jPED/W6ZpdFsMPR+5ursB7/SdgDyO+VzAU+szK8C8u3qUhtENyYnj8eyXMR5kkGag==",
|
||||
"dependencies": {
|
||||
"dotenv-defaults": "^2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"webpack": "^4 || ^5"
|
||||
}
|
||||
},
|
||||
"node_modules/dtrace-provider": {
|
||||
"version": "0.8.8",
|
||||
"resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz",
|
||||
@@ -7262,6 +7491,18 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/enhanced-resolve": {
|
||||
"version": "5.16.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz",
|
||||
"integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.4",
|
||||
"tapable": "^2.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/envinfo": {
|
||||
"version": "7.11.1",
|
||||
"resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz",
|
||||
@@ -7407,6 +7648,11 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/es-module-lexer": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.3.tgz",
|
||||
"integrity": "sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg=="
|
||||
},
|
||||
"node_modules/es-object-atoms": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
|
||||
@@ -7723,7 +7969,6 @@
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
|
||||
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^4.1.1"
|
||||
@@ -7736,7 +7981,6 @@
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
|
||||
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
@@ -8008,7 +8252,6 @@
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
|
||||
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"estraverse": "^5.2.0"
|
||||
},
|
||||
@@ -8020,7 +8263,6 @@
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
|
||||
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
@@ -8058,6 +8300,14 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/events": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
|
||||
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
|
||||
"engines": {
|
||||
"node": ">=0.8.x"
|
||||
}
|
||||
},
|
||||
"node_modules/execa": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
||||
@@ -8117,8 +8367,7 @@
|
||||
"node_modules/fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||
"dev": true
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"node_modules/fast-diff": {
|
||||
"version": "1.3.0",
|
||||
@@ -8157,8 +8406,7 @@
|
||||
"node_modules/fast-json-stable-stringify": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||
},
|
||||
"node_modules/fast-levenshtein": {
|
||||
"version": "2.0.6",
|
||||
@@ -8638,6 +8886,11 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/glob-to-regexp": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
|
||||
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
@@ -11419,14 +11672,12 @@
|
||||
"node_modules/json-parse-even-better-errors": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
|
||||
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
||||
"dev": true
|
||||
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
|
||||
},
|
||||
"node_modules/json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"node_modules/json-stable-stringify-without-jsonify": {
|
||||
"version": "1.0.1",
|
||||
@@ -11542,6 +11793,14 @@
|
||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
|
||||
"engines": {
|
||||
"node": ">=6.11.5"
|
||||
}
|
||||
},
|
||||
"node_modules/locate-path": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
|
||||
@@ -13169,7 +13428,6 @@
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
||||
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
@@ -13218,6 +13476,14 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"node_modules/randombytes": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "^5.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
@@ -13863,6 +14129,23 @@
|
||||
"loose-envify": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/schema-utils": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
|
||||
"integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.8",
|
||||
"ajv": "^6.12.5",
|
||||
"ajv-keywords": "^3.5.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
@@ -13950,6 +14233,14 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/serialize-javascript": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
|
||||
"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
|
||||
"dependencies": {
|
||||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/serve-static": {
|
||||
"version": "1.15.0",
|
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
|
||||
@@ -14396,6 +14687,14 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/telnet-client": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/telnet-client/-/telnet-client-1.2.8.tgz",
|
||||
@@ -14478,6 +14777,74 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
"version": "5.3.10",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
|
||||
"integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": "^0.3.20",
|
||||
"jest-worker": "^27.4.5",
|
||||
"schema-utils": "^3.1.1",
|
||||
"serialize-javascript": "^6.0.1",
|
||||
"terser": "^5.26.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"webpack": "^5.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@swc/core": {
|
||||
"optional": true
|
||||
},
|
||||
"esbuild": {
|
||||
"optional": true
|
||||
},
|
||||
"uglify-js": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/jest-worker": {
|
||||
"version": "27.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
|
||||
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"merge-stream": "^2.0.0",
|
||||
"supports-color": "^8.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin/node_modules/supports-color": {
|
||||
"version": "8.1.1",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
|
||||
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/supports-color?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/terser/node_modules/commander": {
|
||||
"version": "2.20.3",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||
@@ -14868,7 +15235,6 @@
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
@@ -14942,6 +15308,18 @@
|
||||
"makeerror": "1.0.12"
|
||||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
|
||||
"integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
|
||||
"dependencies": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/wcwidth": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
|
||||
@@ -14955,6 +15333,60 @@
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.91.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
|
||||
"integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==",
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.3",
|
||||
"@types/estree": "^1.0.5",
|
||||
"@webassemblyjs/ast": "^1.12.1",
|
||||
"@webassemblyjs/wasm-edit": "^1.12.1",
|
||||
"@webassemblyjs/wasm-parser": "^1.12.1",
|
||||
"acorn": "^8.7.1",
|
||||
"acorn-import-assertions": "^1.9.0",
|
||||
"browserslist": "^4.21.10",
|
||||
"chrome-trace-event": "^1.0.2",
|
||||
"enhanced-resolve": "^5.16.0",
|
||||
"es-module-lexer": "^1.2.1",
|
||||
"eslint-scope": "5.1.1",
|
||||
"events": "^3.2.0",
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"json-parse-even-better-errors": "^2.3.1",
|
||||
"loader-runner": "^4.2.0",
|
||||
"mime-types": "^2.1.27",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^3.2.0",
|
||||
"tapable": "^2.1.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"watchpack": "^2.4.1",
|
||||
"webpack-sources": "^3.2.3"
|
||||
},
|
||||
"bin": {
|
||||
"webpack": "bin/webpack.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"webpack-cli": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/webpack-sources": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/whatwg-fetch": {
|
||||
"version": "3.6.20",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
|
||||
|
||||
@@ -14,10 +14,11 @@
|
||||
"test:unit": "jest"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.6.8",
|
||||
"axios": "^1.7.2",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"babel-register": "^6.26.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"dotenv-webpack": "^8.1.0",
|
||||
"react": "18.2.0",
|
||||
"react-native": "0.73.6",
|
||||
"react-native-fs": "^2.20.0",
|
||||
@@ -32,6 +33,7 @@
|
||||
"@react-native/eslint-config": "0.73.2",
|
||||
"@react-native/metro-config": "0.73.5",
|
||||
"@react-native/typescript-config": "0.73.1",
|
||||
"@types/dotenv-webpack": "^7.0.7",
|
||||
"@types/react": "^18.3.1",
|
||||
"@types/react-test-renderer": "18.3.0",
|
||||
"babel-jest": "^29.7.0",
|
||||
|
||||
Reference in New Issue
Block a user