diff --git a/App.tsx b/App.tsx
index ceefccc..4b0aa2c 100644
--- a/App.tsx
+++ b/App.tsx
@@ -70,8 +70,6 @@ export default function App() {
});
}
- const { width } = Dimensions.get('window');
-
return (
)
diff --git a/MakeCommitment.tsx b/MakeCommitment.tsx
index 49b1953..583534a 100644
--- a/MakeCommitment.tsx
+++ b/MakeCommitment.tsx
@@ -1,20 +1,22 @@
import React, { Component } from "react";
-import { View, StyleSheet, Image, Text, Button, TouchableOpacity, TextInput } from "react-native";
+import { View, Text, TouchableOpacity, TextInput } from "react-native";
import { ethers, utils } from 'ethers';
import abi from './abi.json'
import daiAbi from './daiAbi.json'
import { Dimensions } from 'react-native';
import DropDownPicker from 'react-native-dropdown-picker';
-
-export default class MakeCommitment extends Component <{next: any, account: any, code: any}, {txSent: Boolean, loading: Boolean, distance: Number, stake: Number, activity: {}, activities: any}> {
+export default class MakeCommitment extends Component <{next: any, account: any, code: any}, {txSent: Boolean, loading: Boolean, distance: Number, stake: Number, daysToStart: Number, duration: Number, activity: {}, activities: any}> {
contract: any;
daiContract: any;
+
constructor(props) {
super(props);
this.state = {
distance: 0,
stake: 0,
+ daysToStart: 0,
+ duration: 0,
loading: false,
txSent: false,
activity: {},
@@ -41,7 +43,6 @@ export default class MakeCommitment extends Component <{next: any, account: any,
this.contract = contract.connect(wallet);
this.daiContract = daiContract.connect(wallet);
-
let activities = [];
let exists = true;
let index = 0;
@@ -82,24 +83,46 @@ export default class MakeCommitment extends Component <{next: any, account: any,
this.setState({activities: formattedActivities, activity: formattedActivities[0]})
}
+ addDays = (date: Date, days: number) => {
+ const result = new Date(date);
+ result.setDate(result.getDate() + days);
+ return result;
+ }
+
+ calculateStart = (_daysToStart: number) => {
+ const result = _daysToStart === 0 ?
+ new Date() :
+ this.addDays(new Date(), _daysToStart)
+ result.setHours(0,0,0,0); //start at next day 00:00
+ return result;
+ }
+
+ calculateEnd = (_startTime: Date, _duration: number) => {
+ const result = this.addDays(_startTime, _duration)
+ result.setHours(24,0,0,0); //give until end of day
+ return result;
+ }
+
async createCommitment() {
const distanceInMiles = Math.floor(this.state.distance);
- const startTime = Math.ceil(new Date().getTime() / 1000) + 60;
+ const startTime = this.calculateStart(this.state.daysToStart);
+ const startTimestamp = Math.ceil(startTime.valueOf() /1000); //to seconds
+ const endTimestamp = Math.ceil(this.calculateEnd(startTime, this.state.duration).valueOf() /1000); //to seconds
+
const stakeAmount = utils.parseEther(this.state.stake.toString());
this.setState({loading: true})
const allowance = await this.daiContract.allowance(this.props.account.signingKey.address, '0x251B6f95F6A17D2aa350456f616a84b733380eBE');
if(allowance.gte(stakeAmount)) {
- await this.contract.depositAndCommit(this.state.activity, distanceInMiles * 100, startTime, stakeAmount, stakeAmount, String(this.props.code.athlete.id), {gasLimit: 5000000});
+ await this.contract.depositAndCommit(this.state.activity, distanceInMiles * 100, startTimestamp, endTimestamp, stakeAmount, stakeAmount, String(this.props.code.athlete.id), {gasLimit: 5000000});
} else {
await this.daiContract.approve('0x251B6f95F6A17D2aa350456f616a84b733380eBE', stakeAmount)
- await this.contract.depositAndCommit(this.state.activity, distanceInMiles * 100, startTime, stakeAmount, stakeAmount, String(this.props.code.athlete.id), {gasLimit: 5000000});
+ await this.contract.depositAndCommit(this.state.activity, distanceInMiles * 100, startTimestamp, endTimestamp, stakeAmount, stakeAmount, String(this.props.code.athlete.id), {gasLimit: 5000000});
}
this.setState({loading: false, txSent: true})
}
-
getActivityName() {
return this.state.activities.find((act: any) => act.value === this.state.activity).label;
}
@@ -147,10 +170,20 @@ export default class MakeCommitment extends Component <{next: any, account: any,
- Deadline:
- 2 Days
+ Starting in
+
+ this.setState({daysToStart: Number(text)})}> day(s)
+
-
+
+ for
+
+ this.setState({duration: Number(text)})}> day(s)
+
+
+
+
+
{this.state.stake} Dai
- Deadline:
- 2 Days
+ Starting in
+ {this.state.daysToStart} day(s)
+
+
+ for
+ {this.state.duration} day(s)
- View on Etherscan
this.props.next(7)}>
+ onPress={() => this.props.next(6)}>
Track Progress
}
diff --git a/Track.tsx b/Track.tsx
index 43eec0f..f6654c4 100644
--- a/Track.tsx
+++ b/Track.tsx
@@ -134,7 +134,7 @@ export default class Track extends Component <{next: any, account: any, code: st
console.log(this.props.account.signingKey.address)
await contractWithSigner.requestActivityDistance(this.props.account.signingKey.address, '0x1cf7D49BE7e0c6AC30dEd720623490B64F572E17', 'd8fcf41ee8984d3b8b0eae7b74eca7dd', {gasLimit: 500000});
this.setState({loading: false})
- this.props.next(8)
+ this.props.next(7)
} catch (error) {
console.log(error)
this.setState({loading: false})
diff --git a/Wallet.tsx b/Wallet.tsx
index 33ac91e..732e804 100644
--- a/Wallet.tsx
+++ b/Wallet.tsx
@@ -49,7 +49,7 @@ export default class Wallet extends Component <{next: any, account: any}, {balan
try {
const commitment = await commitPoolContract.commitments(this.props.account.signingKey.address);
if(commitment.exists){
- this.props.next(7)
+ this.props.next(6)
} else {
this.props.next(5)
}
diff --git a/abi.json b/abi.json
index 7dbba43..c2bccc7 100644
--- a/abi.json
+++ b/abi.json
@@ -1,810 +1,821 @@
[
{
- "inputs": [
- {
- "internalType": "string[]",
- "name": "_activityList",
- "type": "string[]"
- },
- {
- "internalType": "address",
- "name": "_oracleAddress",
- "type": "address"
- },
- {
- "internalType": "address",
- "name": "_token",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "constructor"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "string",
- "name": "name",
- "type": "string"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "activityKey",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "address",
- "name": "oracle",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "allowed",
- "type": "bool"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "exists",
- "type": "bool"
- }
- ],
- "name": "ActivityUpdated",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "ChainlinkCancelled",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "ChainlinkFulfilled",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "ChainlinkRequested",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "address",
- "name": "committer",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "met",
- "type": "bool"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "amountPenalized",
- "type": "uint256"
- }
- ],
- "name": "CommitmentEnded",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "address",
- "name": "committer",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "Deposit",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "address",
- "name": "committer",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "string",
- "name": "activityName",
- "type": "string"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "goalValue",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "startTime",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "endTime",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "stake",
- "type": "uint256"
- }
- ],
- "name": "NewCommitment",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "previousOwner",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "newOwner",
- "type": "address"
- }
- ],
- "name": "OwnershipTransferred",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "requestId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "distance",
- "type": "uint256"
- }
- ],
- "name": "RequestActivityDistanceFulfilled",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": false,
- "internalType": "address",
- "name": "committer",
- "type": "address"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "Withdrawal",
- "type": "event"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "name": "activities",
- "outputs": [
- {
- "internalType": "string",
- "name": "name",
- "type": "string"
- },
- {
- "internalType": "address",
- "name": "oracle",
- "type": "address"
- },
- {
- "internalType": "bool",
- "name": "allowed",
- "type": "bool"
- },
- {
- "internalType": "bool",
- "name": "exists",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "name": "activityKeyList",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_requestId",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "_payment",
- "type": "uint256"
- },
- {
- "internalType": "bytes4",
- "name": "_callbackFunctionId",
- "type": "bytes4"
- },
- {
- "internalType": "uint256",
- "name": "_expiration",
- "type": "uint256"
- }
- ],
- "name": "cancelRequest",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "name": "commitments",
- "outputs": [
- {
- "internalType": "address",
- "name": "committer",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "activityKey",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "goalValue",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "startTime",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "endTime",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "stake",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "reportedValue",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "lastActivityUpdate",
- "type": "uint256"
- },
- {
- "internalType": "bool",
- "name": "met",
- "type": "bool"
- },
- {
- "internalType": "string",
- "name": "userId",
- "type": "string"
- },
- {
- "internalType": "bool",
- "name": "exists",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "name": "committerBalances",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "uint256",
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "deposit",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "_goalValue",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "_startTime",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "_stake",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "_depositAmount",
- "type": "uint256"
- },
- {
- "internalType": "string",
- "name": "_userId",
- "type": "string"
- }
- ],
- "name": "depositAndCommit",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- }
- ],
- "name": "disableActivity",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_requestId",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "_distance",
- "type": "uint256"
- }
- ],
- "name": "fulfillActivityDistance",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- }
- ],
- "name": "getActivityName",
- "outputs": [
- {
- "internalType": "string",
- "name": "activityName",
- "type": "string"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "getChainlinkToken",
- "outputs": [
- {
- "internalType": "address",
- "name": "tokenAddress",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "name": "jobAddresses",
- "outputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "_goalValue",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "_startTime",
- "type": "uint256"
- },
- {
- "internalType": "uint256",
- "name": "_stake",
- "type": "uint256"
- },
- {
- "internalType": "string",
- "name": "_userId",
- "type": "string"
- }
- ],
- "name": "makeCommitment",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "owner",
- "outputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "uint256",
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "ownerWithdraw",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "committer",
- "type": "address"
- }
- ],
- "name": "processCommitment",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "processCommitmentUser",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "renounceOwnership",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "_committer",
- "type": "address"
- },
- {
- "internalType": "address",
- "name": "_oracle",
- "type": "address"
- },
- {
- "internalType": "string",
- "name": "_jobId",
- "type": "string"
- }
- ],
- "name": "requestActivityDistance",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "slashedBalance",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "token",
- "outputs": [
- {
- "internalType": "contract IERC20",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "totalCommitterBalance",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "newOwner",
- "type": "address"
- }
- ],
- "name": "transferOwnership",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- },
- {
- "internalType": "bool",
- "name": "_allowed",
- "type": "bool"
- }
- ],
- "name": "updateActivityAllowed",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "_activityKey",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "_oracleAddress",
- "type": "address"
- }
- ],
- "name": "updateActivityOracle",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "uint256",
- "name": "amount",
- "type": "uint256"
- }
- ],
- "name": "withdraw",
- "outputs": [
- {
- "internalType": "bool",
- "name": "success",
- "type": "bool"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "withdrawLink",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
+ "inputs": [
+ {
+ "internalType": "string[]",
+ "name": "_activityList",
+ "type": "string[]"
+ },
+ {
+ "internalType": "address",
+ "name": "_oracleAddress",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_token",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "activityKey",
+ "type": "bytes32"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oracle",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "allowed",
+ "type": "bool"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "exists",
+ "type": "bool"
+ }
+ ],
+ "name": "ActivityUpdated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "id",
+ "type": "bytes32"
+ }
+ ],
+ "name": "ChainlinkCancelled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "id",
+ "type": "bytes32"
+ }
+ ],
+ "name": "ChainlinkFulfilled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "id",
+ "type": "bytes32"
+ }
+ ],
+ "name": "ChainlinkRequested",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bool",
+ "name": "met",
+ "type": "bool"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amountPenalized",
+ "type": "uint256"
+ }
+ ],
+ "name": "CommitmentEnded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Deposit",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "activityName",
+ "type": "string"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "goalValue",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "startTime",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "endTime",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "stake",
+ "type": "uint256"
+ }
+ ],
+ "name": "NewCommitment",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "requestId",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "uint256",
+ "name": "distance",
+ "type": "uint256"
+ }
+ ],
+ "name": "RequestActivityDistanceFulfilled",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "Withdrawal",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "activities",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "oracle",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "allowed",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "exists",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "activityKeyList",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_requestId",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_payment",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bytes4",
+ "name": "_callbackFunctionId",
+ "type": "bytes4"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_expiration",
+ "type": "uint256"
+ }
+ ],
+ "name": "cancelRequest",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "commitments",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "activityKey",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "goalValue",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "startTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "endTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "stake",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "reportedValue",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "lastActivityUpdate",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "met",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "userId",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "exists",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "committerBalances",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "deposit",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_goalValue",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_startTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_endTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_stake",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_depositAmount",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "_userId",
+ "type": "string"
+ }
+ ],
+ "name": "depositAndCommit",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ }
+ ],
+ "name": "disableActivity",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_requestId",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_distance",
+ "type": "uint256"
+ }
+ ],
+ "name": "fulfillActivityDistance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getActivityName",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "activityName",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "getChainlinkToken",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "tokenAddress",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "jobAddresses",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_goalValue",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_startTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_endTime",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_stake",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "_userId",
+ "type": "string"
+ }
+ ],
+ "name": "makeCommitment",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "ownerWithdraw",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "committer",
+ "type": "address"
+ }
+ ],
+ "name": "processCommitment",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "processCommitmentUser",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_committer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "_oracle",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "_jobId",
+ "type": "string"
+ }
+ ],
+ "name": "requestActivityDistance",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "slashedBalance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "token",
+ "outputs": [
+ {
+ "internalType": "contract IERC20",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalCommitterBalance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bool",
+ "name": "_allowed",
+ "type": "bool"
+ }
+ ],
+ "name": "updateActivityAllowed",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "_activityKey",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "_oracleAddress",
+ "type": "address"
+ }
+ ],
+ "name": "updateActivityOracle",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "withdraw",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "success",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "withdrawLink",
+ "outputs": [],
+ "stateMutability": "nonpayable",
+ "type": "function"
}
-]
\ No newline at end of file
+ ]
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 6fac36a..7467340 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1091,9 +1091,9 @@
}
},
"@babel/runtime": {
- "version": "7.11.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
- "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+ "version": "7.12.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
+ "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -4131,6 +4131,22 @@
"resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
"integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0="
},
+ "airbnb-prop-types": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz",
+ "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==",
+ "requires": {
+ "array.prototype.find": "^2.1.1",
+ "function.prototype.name": "^1.1.2",
+ "is-regex": "^1.1.0",
+ "object-is": "^1.1.2",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.2",
+ "prop-types": "^15.7.2",
+ "prop-types-exact": "^1.2.0",
+ "react-is": "^16.13.1"
+ }
+ },
"ajv": {
"version": "6.12.3",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
@@ -4291,6 +4307,62 @@
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
},
+ "array.prototype.find": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz",
+ "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==",
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.4"
+ }
+ },
+ "array.prototype.flat": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz",
+ "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.1"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.18.0-next.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
+ "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.2",
+ "is-negative-zero": "^2.0.0",
+ "is-regex": "^1.1.1",
+ "object-inspect": "^1.8.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.1",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
+ "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA=="
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ }
+ }
+ },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -5013,6 +5085,11 @@
}
}
},
+ "brcast": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz",
+ "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg=="
+ },
"brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
@@ -5119,6 +5196,15 @@
"unset-value": "^1.0.0"
}
},
+ "call-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz",
+ "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.0"
+ }
+ },
"caller-callsite": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
@@ -5415,6 +5501,11 @@
}
}
},
+ "consolidated-events": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz",
+ "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ=="
+ },
"convert-source-map": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
@@ -5764,6 +5855,19 @@
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz",
"integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs="
},
+ "direction": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
+ "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ=="
+ },
+ "document.contains": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz",
+ "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==",
+ "requires": {
+ "define-properties": "^1.1.3"
+ }
+ },
"dom-serializer": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
@@ -5883,6 +5987,15 @@
"resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.2.tgz",
"integrity": "sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg=="
},
+ "enzyme-shallow-equal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz",
+ "integrity": "sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==",
+ "requires": {
+ "has": "^1.0.3",
+ "object-is": "^1.1.2"
+ }
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -7098,6 +7211,59 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
+ "function.prototype.name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.3.tgz",
+ "integrity": "sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.1",
+ "functions-have-names": "^1.2.1"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.18.0-next.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
+ "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.2",
+ "is-negative-zero": "^2.0.0",
+ "is-regex": "^1.1.1",
+ "object-inspect": "^1.8.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.1",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
+ "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA=="
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ }
+ }
+ },
+ "functions-have-names": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.2.tgz",
+ "integrity": "sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA=="
+ },
"gensync": {
"version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
@@ -7108,6 +7274,16 @@
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
+ "get-intrinsic": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz",
+ "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
"get-package-type": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
@@ -7153,6 +7329,15 @@
"path-is-absolute": "^1.0.0"
}
},
+ "global-cache": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz",
+ "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==",
+ "requires": {
+ "define-properties": "^1.1.2",
+ "is-symbol": "^1.0.1"
+ }
+ },
"globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -7679,6 +7864,11 @@
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz",
"integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw=="
},
+ "is-negative-zero": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w=="
+ },
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -7751,6 +7941,11 @@
"has-symbols": "^1.0.1"
}
},
+ "is-touch-device": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz",
+ "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw=="
+ },
"is-typed-array": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.3.tgz",
@@ -12042,9 +12237,9 @@
}
},
"moment": {
- "version": "2.27.0",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz",
- "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ=="
+ "version": "2.29.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+ "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
},
"ms": {
"version": "2.0.0",
@@ -12306,6 +12501,54 @@
"object-keys": "^1.0.11"
}
},
+ "object.entries": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz",
+ "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.1",
+ "has": "^1.0.3"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.18.0-next.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
+ "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.2",
+ "is-negative-zero": "^2.0.0",
+ "is-regex": "^1.1.1",
+ "object-inspect": "^1.8.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.1",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
+ "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA=="
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ }
+ }
+ },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -12314,6 +12557,54 @@
"isobject": "^3.0.1"
}
},
+ "object.values": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz",
+ "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.1",
+ "has": "^1.0.3"
+ },
+ "dependencies": {
+ "es-abstract": {
+ "version": "1.18.0-next.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz",
+ "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==",
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.2.2",
+ "is-negative-zero": "^2.0.0",
+ "is-regex": "^1.1.1",
+ "object-inspect": "^1.8.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.1",
+ "string.prototype.trimend": "^1.0.1",
+ "string.prototype.trimstart": "^1.0.1"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz",
+ "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA=="
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ }
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -12699,6 +12990,16 @@
"react-is": "^16.8.1"
}
},
+ "prop-types-exact": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz",
+ "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==",
+ "requires": {
+ "has": "^1.0.3",
+ "object.assign": "^4.1.0",
+ "reflect.ownkeys": "^0.2.0"
+ }
+ },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -12863,15 +13164,23 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA=="
},
+ "raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "requires": {
+ "performance-now": "^2.1.0"
+ }
+ },
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"react": {
- "version": "16.11.0",
- "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz",
- "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==",
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
+ "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
@@ -12887,6 +13196,28 @@
"react-dom": "^16.8.6"
}
},
+ "react-dates": {
+ "version": "21.8.0",
+ "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-21.8.0.tgz",
+ "integrity": "sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==",
+ "requires": {
+ "airbnb-prop-types": "^2.15.0",
+ "consolidated-events": "^1.1.1 || ^2.0.0",
+ "enzyme-shallow-equal": "^1.0.0",
+ "is-touch-device": "^1.0.1",
+ "lodash": "^4.1.1",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "raf": "^3.4.1",
+ "react-moment-proptypes": "^1.6.0",
+ "react-outside-click-handler": "^1.2.4",
+ "react-portal": "^4.2.0",
+ "react-with-direction": "^1.3.1",
+ "react-with-styles": "^4.1.0",
+ "react-with-styles-interface-css": "^6.0.0"
+ }
+ },
"react-devtools-core": {
"version": "4.8.2",
"resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.8.2.tgz",
@@ -12897,14 +13228,25 @@
}
},
"react-dom": {
- "version": "16.11.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.11.0.tgz",
- "integrity": "sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA==",
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
+ "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "scheduler": "^0.17.0"
+ "scheduler": "^0.19.1"
+ },
+ "dependencies": {
+ "scheduler": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
+ "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1"
+ }
+ }
}
},
"react-is": {
@@ -12912,6 +13254,14 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "react-moment-proptypes": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.7.0.tgz",
+ "integrity": "sha512-ZbOn/P4u469WEGAw5hgkS/E+g1YZqdves2BjYsLluJobzUZCtManhjHiZKjniBVT7MSHM6D/iKtRVzlXVv3ikA==",
+ "requires": {
+ "moment": ">=1.6.0"
+ }
+ },
"react-native": {
"version": "0.62.2",
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.62.2.tgz",
@@ -13383,6 +13733,26 @@
}
}
},
+ "react-outside-click-handler": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz",
+ "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==",
+ "requires": {
+ "airbnb-prop-types": "^2.15.0",
+ "consolidated-events": "^1.1.1 || ^2.0.0",
+ "document.contains": "^1.0.1",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2"
+ }
+ },
+ "react-portal": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.1.tgz",
+ "integrity": "sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==",
+ "requires": {
+ "prop-types": "^15.5.8"
+ }
+ },
"react-refresh": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
@@ -13405,6 +13775,67 @@
"resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz",
"integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q=="
},
+ "react-with-direction": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.3.1.tgz",
+ "integrity": "sha512-aGcM21ZzhqeXFvDCfPj0rVNYuaVXfTz5D3Rbn0QMz/unZe+CCiLHthrjQWO7s6qdfXORgYFtmS7OVsRgSk5LXQ==",
+ "requires": {
+ "airbnb-prop-types": "^2.10.0",
+ "brcast": "^2.0.2",
+ "deepmerge": "^1.5.2",
+ "direction": "^1.0.2",
+ "hoist-non-react-statics": "^3.3.0",
+ "object.assign": "^4.1.0",
+ "object.values": "^1.0.4",
+ "prop-types": "^15.6.2"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
+ },
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "react-with-styles": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-4.1.0.tgz",
+ "integrity": "sha512-zp05fyA6XFetqr07ox/a0bCFyEj//gUozI9cC1GW59zaGJ38STnxYvzotutgpzMyHOd7TFW9ZiZeBKjsYaS+RQ==",
+ "requires": {
+ "airbnb-prop-types": "^2.14.0",
+ "hoist-non-react-statics": "^3.2.1",
+ "object.assign": "^4.1.0",
+ "prop-types": "^15.7.2",
+ "react-with-direction": "^1.3.1"
+ },
+ "dependencies": {
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ }
+ }
+ }
+ },
+ "react-with-styles-interface-css": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz",
+ "integrity": "sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==",
+ "requires": {
+ "array.prototype.flat": "^1.2.1",
+ "global-cache": "^1.2.1"
+ }
+ },
"read-pkg": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
@@ -13532,6 +13963,11 @@
"integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==",
"dev": true
},
+ "reflect.ownkeys": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz",
+ "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA="
+ },
"regenerate": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz",
diff --git a/package.json b/package.json
index 875d5c4..66d0d12 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
"test": "jest"
},
"dependencies": {
+ "@babel/runtime": "^7.12.5",
"axios": "^0.19.2",
"dotenv": "^8.2.0",
"ethers": "^5.0.8",
@@ -20,10 +21,11 @@
"expo-status-bar": "^1.0.0",
"expo-updates": "~0.2.8",
"expo-web-browser": "^8.3.1",
- "moment": "^2.27.0",
- "react": "~16.11.0",
+ "moment": "^2.29.1",
+ "react": "^16.14.0",
"react-circle-progress-bar": "^0.1.4",
- "react-dom": "~16.11.0",
+ "react-dates": "^21.8.0",
+ "react-dom": "^16.14.0",
"react-native": "~0.62.2",
"react-native-circular-progress": "^1.3.6",
"react-native-confetti-cannon": "^1.5.1",
@@ -39,6 +41,7 @@
"react-native-unimodules": "~0.10.0",
"react-native-web": "~0.11.7",
"react-native-webview": "9.4.0",
+ "react-with-direction": "^1.3.1",
"strava": "^0.0.2",
"strava-v3": "^2.0.5",
"sync-storage": "^0.4.2",
diff --git a/yarn.lock b/yarn.lock
index a585be5..50ec2ff 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1821,6 +1821,13 @@
sudo-prompt "^9.0.0"
wcwidth "^1.0.1"
+"@react-native-community/datetimepicker@2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-2.4.0.tgz#6b3cf050f507f9b70d31d5a572e1153bb5bd50c9"
+ integrity sha512-ZXPwNAQt4T66PTL20l2nSEbtsn6vtsvFqdYWBfx8aaNKBoCPDygR6SsYzWcIoexKH5wmX0zctSzIsryl+Gtngg==
+ dependencies:
+ invariant "^2.2.4"
+
"@sinonjs/commons@^1.7.0":
version "1.8.1"
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217"