├── rsvpContract ├── .gitignore ├── .DS_Store ├── Forc.toml ├── Forc.lock ├── Cargo.toml ├── src │ ├── event_platform.sw │ └── main.sw ├── tests │ └── harness.rs └── Cargo.lock ├── frontend ├── src │ ├── react-app-env.d.ts │ ├── index.css │ ├── contracts │ │ ├── index.ts │ │ ├── common.d.ts │ │ ├── RsvpContractAbi.d.ts │ │ └── factories │ │ │ └── RsvpContractAbi__factory.ts │ ├── setupTests.ts │ ├── components │ │ ├── ConnectButton.js │ │ ├── Layout.js │ │ ├── CreateEvent.js │ │ ├── Header.js │ │ ├── DisplaySingleEvent.js │ │ └── Footer.js │ ├── pages │ │ └── ConnectRequest.tsx │ ├── App.test.tsx │ ├── reportWebVitals.ts │ ├── index.tsx │ ├── hooks │ │ ├── useIsConnected.tsx │ │ └── useFuelWeb3.tsx │ ├── App.css │ ├── logo.svg │ └── App.tsx ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── postcss.config.js ├── createWallet.js ├── tailwind.config.js ├── .gitignore ├── tsconfig.json ├── package.json └── README.md ├── .DS_Store └── README.md /rsvpContract/.gitignore: -------------------------------------------------------------------------------- 1 | out 2 | target 3 | -------------------------------------------------------------------------------- /frontend/src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camiinthisthang/learnsway-web3rsvp/HEAD/.DS_Store -------------------------------------------------------------------------------- /frontend/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /rsvpContract/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camiinthisthang/learnsway-web3rsvp/HEAD/rsvpContract/.DS_Store -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camiinthisthang/learnsway-web3rsvp/HEAD/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camiinthisthang/learnsway-web3rsvp/HEAD/frontend/public/logo192.png -------------------------------------------------------------------------------- /frontend/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/camiinthisthang/learnsway-web3rsvp/HEAD/frontend/public/logo512.png -------------------------------------------------------------------------------- /frontend/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /rsvpContract/Forc.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | authors = ["Camila Ramos"] 3 | entry = "main.sw" 4 | license = "Apache-2.0" 5 | name = "rsvpContract" 6 | 7 | [dependencies] 8 | -------------------------------------------------------------------------------- /frontend/createWallet.js: -------------------------------------------------------------------------------- 1 | /* const { Wallet } = require("fuels"); 2 | 3 | const wallet = Wallet.generate(); 4 | 5 | console.log("address", wallet.address.toString()); 6 | console.log("private key", wallet.privateKey);*/ -------------------------------------------------------------------------------- /frontend/tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./src/**/*.{js,jsx,ts,tsx}", 5 | ], 6 | theme: { 7 | extend: {}, 8 | }, 9 | plugins: [require('@tailwindcss/forms')], 10 | } 11 | -------------------------------------------------------------------------------- /frontend/src/contracts/index.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | export type { RsvpContractAbi } from "./RsvpContractAbi"; 5 | 6 | export { RsvpContractAbi__factory } from "./factories/RsvpContractAbi__factory"; 7 | -------------------------------------------------------------------------------- /frontend/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /frontend/src/components/ConnectButton.js: -------------------------------------------------------------------------------- 1 | import { useFuel } from "../hooks/useFuelWeb3"; 2 | 3 | export function ConnectRequest() { 4 | const [fuel] = useFuel(); 5 | 6 | return ( 7 |
8 | 9 |
10 | ) 11 | } -------------------------------------------------------------------------------- /frontend/src/pages/ConnectRequest.tsx: -------------------------------------------------------------------------------- 1 | import { useFuel } from "../hooks/useFuelWeb3"; 2 | 3 | export function ConnectRequest() { 4 | const [fuel] = useFuel(); 5 | 6 | return ( 7 |
8 | 9 |
10 | ) 11 | } -------------------------------------------------------------------------------- /frontend/src/App.test.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render, screen } from '@testing-library/react'; 3 | import App from './App'; 4 | 5 | test('renders learn react link', () => { 6 | render(); 7 | const linkElement = screen.getByText(/learn react/i); 8 | expect(linkElement).toBeInTheDocument(); 9 | }); 10 | -------------------------------------------------------------------------------- /rsvpContract/Forc.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = 'core' 3 | source = 'path+from-root-3CB3840D8F59CE00' 4 | 5 | [[package]] 6 | name = 'rsvpContract' 7 | source = 'member' 8 | dependencies = ['std'] 9 | 10 | [[package]] 11 | name = 'std' 12 | source = 'git+https://github.com/fuellabs/sway?rev#6b3ae49f934255d22ac1d31a179316f0e8749153' 13 | dependencies = ['core'] 14 | -------------------------------------------------------------------------------- /rsvpContract/Cargo.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "rsvpContract" 3 | version = "0.1.0" 4 | authors = ["Camila Ramos"] 5 | edition = "2021" 6 | license = "Apache-2.0" 7 | 8 | [dependencies] 9 | fuels = { version = "0.36", features = ["fuel-core-lib"] } 10 | tokio = { version = "1.12", features = ["rt", "macros"] } 11 | 12 | [[test]] 13 | harness = true 14 | name = "integration_tests" 15 | path = "tests/harness.rs" 16 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /frontend/src/components/Layout.js: -------------------------------------------------------------------------------- 1 | import Header from "./Header"; 2 | import Footer from "./Footer"; 3 | 4 | const Layout = ({ children, address }) => { 5 | return ( 6 |
7 |
8 |
{children}
9 |
10 |
11 | ); 12 | }; 13 | 14 | export default Layout; -------------------------------------------------------------------------------- /frontend/src/contracts/common.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | /* 5 | Enum from to mimic Sway Enum 6 | Requires at least one Key-Value but does not raise error on multiple pairs 7 | This is done in the abi-coder 8 | */ 9 | export type Enum }> = Partial & 10 | U[keyof U]; 11 | 12 | export type Option = T | undefined; 13 | -------------------------------------------------------------------------------- /frontend/src/reportWebVitals.ts: -------------------------------------------------------------------------------- 1 | import { ReportHandler } from 'web-vitals'; 2 | 3 | const reportWebVitals = (onPerfEntry?: ReportHandler) => { 4 | if (onPerfEntry && onPerfEntry instanceof Function) { 5 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 6 | getCLS(onPerfEntry); 7 | getFID(onPerfEntry); 8 | getFCP(onPerfEntry); 9 | getLCP(onPerfEntry); 10 | getTTFB(onPerfEntry); 11 | }); 12 | } 13 | }; 14 | 15 | export default reportWebVitals; 16 | -------------------------------------------------------------------------------- /frontend/src/components/CreateEvent.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState, useMemo } from "react"; 2 | import { useFuelWeb3 } from "../hooks/useFuelWeb3"; 3 | import { ConnectRequest } from "../pages/ConnectRequest"; 4 | import { Wallet, Provider, WalletLocked, bn } from "fuels"; 5 | export default function CreateEvent() { 6 | //-------------------------------------------------// 7 | //state variables to capture the creation of an event 8 | 9 | 10 | return ( 11 |
12 | 13 |
14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /frontend/src/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | const root = ReactDOM.createRoot( 8 | document.getElementById('root') as HTMLElement 9 | ); 10 | root.render( 11 | 12 | 13 | 14 | ); 15 | 16 | // If you want to start measuring performance in your app, pass a function 17 | // to log results (for example: reportWebVitals(console.log)) 18 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 19 | reportWebVitals(); 20 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /rsvpContract/src/event_platform.sw: -------------------------------------------------------------------------------- 1 | library event_platform; 2 | 3 | use std::{contract_id::ContractId, identity::Identity}; 4 | 5 | abi eventPlatform { 6 | #[storage(read, write)] 7 | fn create_event(max_capacity: u64, deposit: u64, event_name: str[10]) -> Event; 8 | 9 | #[storage(read, write, payable)] 10 | fn rsvp(event_id: u64) -> Event; 11 | 12 | #[storage(read)] 13 | fn get_rsvp(event_id: u64) -> Event; 14 | } 15 | 16 | // The Event structure is defined here to be used from other contracts when calling the ABI. 17 | pub struct Event { 18 | unique_id: u64, 19 | max_capacity: u64, 20 | deposit: u64, 21 | owner: Identity, 22 | name: str[10], 23 | num_of_rsvps: u64, 24 | } 25 | -------------------------------------------------------------------------------- /frontend/src/components/Header.js: -------------------------------------------------------------------------------- 1 | export default function Header({ address }) { 2 | return ( 3 |
4 |
5 |

6 | Web3RSVP 7 |

8 |
9 |
10 | 16 |
17 |
18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /frontend/src/hooks/useIsConnected.tsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react'; 2 | import { useFuel } from './useFuelWeb3'; 3 | 4 | export function useIsConnected() { 5 | const [fuel] = useFuel(); 6 | const [isConnected, setConnect] = useState(false); 7 | 8 | useEffect(() => { 9 | async function connect() { 10 | console.log('connection changed'); 11 | const accounts = await fuel.accounts(); 12 | console.log('accounts', accounts); 13 | //if length is 0 it means you're not connected 14 | setConnect(accounts.length > 0); 15 | } 16 | if (fuel) { 17 | connect(); 18 | } 19 | fuel?.on('connection', connect); 20 | return () => { 21 | fuel?.off('connection', connect) 22 | }; 23 | }, [fuel]); 24 | 25 | return isConnected; 26 | } -------------------------------------------------------------------------------- /frontend/src/hooks/useFuelWeb3.tsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect } from 'react'; 2 | import { Fuel } from '@fuel-wallet/sdk'; 3 | import { Provider } from 'fuels'; 4 | 5 | export type fuel = Fuel & { 6 | getProvider: () => Provider 7 | }; 8 | 9 | const globalWindow: Window & { 10 | fuel: fuel; 11 | } = typeof window !== 'undefined' ? window as any : ({} as any); 12 | 13 | // install FuelWeb3 and import as a package 14 | export function useFuel() { 15 | const [error, setError] = useState(''); 16 | const [isLoading, setLoading] = useState(true); 17 | const [fuel, setFuel] = useState( 18 | globalWindow.fuel 19 | ); 20 | 21 | useEffect(() => { 22 | const timeout = setTimeout(() => { 23 | if (globalWindow.fuel) { 24 | setFuel(globalWindow.fuel); 25 | } else { 26 | setError('fuel not detected on the window!'); 27 | } 28 | setLoading(false); 29 | }, 500); 30 | return () => clearTimeout(timeout); 31 | }, []); 32 | 33 | return [fuel, error, isLoading] as const; 34 | } -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@tailwindcss/forms": "^0.5.3", 7 | "@testing-library/jest-dom": "^5.16.5", 8 | "@testing-library/react": "^13.4.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "@types/jest": "^27.5.2", 11 | "@types/node": "^16.11.64", 12 | "@types/react": "^18.0.21", 13 | "@types/react-dom": "^18.0.6", 14 | "fuels": "^0.29.1", 15 | "react": "^18.2.0", 16 | "react-dom": "^18.2.0", 17 | "react-scripts": "5.0.1", 18 | "typescript": "^4.8.4", 19 | "web-vitals": "^2.1.4" 20 | }, 21 | "scripts": { 22 | "start": "react-scripts start", 23 | "build": "react-scripts build", 24 | "test": "react-scripts test", 25 | "eject": "react-scripts eject" 26 | }, 27 | "eslintConfig": { 28 | "extends": [ 29 | "react-app", 30 | "react-app/jest" 31 | ] 32 | }, 33 | "browserslist": { 34 | "production": [ 35 | ">0.2%", 36 | "not dead", 37 | "not op_mini all" 38 | ], 39 | "development": [ 40 | "last 1 chrome version", 41 | "last 1 firefox version", 42 | "last 1 safari version" 43 | ] 44 | }, 45 | "devDependencies": { 46 | "@fuel-wallet/sdk": "^0.4.0", 47 | "@fuel-wallet/types": "^0.4.0", 48 | "autoprefixer": "^10.4.13", 49 | "fuelchain": "^0.24.2", 50 | "postcss": "^8.4.19", 51 | "tailwindcss": "^3.2.4", 52 | "typechain-target-fuels": "^0.24.2" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `npm start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 13 | 14 | The page will reload if you make edits.\ 15 | You will also see any lint errors in the console. 16 | 17 | ### `npm test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `npm run build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `npm run eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 35 | 36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 39 | 40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | -------------------------------------------------------------------------------- /frontend/src/components/DisplaySingleEvent.js: -------------------------------------------------------------------------------- 1 | import {react} from "react"; 2 | 3 | export default function DisplaySingleEvent({eventName, deposit, eventId, numOfRsvps}) { 4 | return ( 5 |
6 |
7 |
8 |

9 | Success 🎉 10 |

11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
Your event name
21 |
{eventName}
22 |
23 |
24 |
Ticket Cost
25 |
{deposit} 26 | ETH 27 |
28 |
29 |
30 |
RSVPs
31 |
{numOfRsvps}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | ) 40 | } 41 | -------------------------------------------------------------------------------- /frontend/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | @media (prefers-reduced-motion: no-preference) { 17 | .App-logo { 18 | animation: App-logo-spin infinite 20s linear; 19 | } 20 | } 21 | 22 | .label { 23 | grid-column: 1/2; 24 | margin: 10px; 25 | } 26 | 27 | .input, .button { 28 | grid-column: 2 / 3; 29 | width: 250px; 30 | margin: 10px; 31 | } 32 | 33 | .button { 34 | color: white; 35 | height: 30px; 36 | background-color: black; 37 | } 38 | 39 | #createEventForm { 40 | display: grid; 41 | grid-template-columns: 250px 1fr; 42 | } 43 | 44 | .header { 45 | background-color: #00ff99; 46 | font-size: 1.4rem; 47 | height: 40px; 48 | text-align: center; 49 | justify-content: center; 50 | align-items: center; 51 | } 52 | 53 | .main { 54 | color: black; 55 | background-color: black; 56 | height: 100vh; 57 | display: block; 58 | text-align: center; 59 | overflow: scroll; 60 | } 61 | 62 | .form { 63 | margin: auto; 64 | margin-top: 10px; 65 | margin-bottom: 10px; 66 | width: 50%; 67 | display: grid; 68 | border-radius: 15px; 69 | background-color: #00ff99; 70 | text-align: center; 71 | justify-content: center; 72 | align-items: center; 73 | } 74 | 75 | .card { 76 | border-radius: 15px; 77 | background-color: #00ff99; 78 | width: 50%; 79 | margin: 15px; 80 | } 81 | 82 | .results { 83 | display: flex; 84 | } 85 | 86 | .App-header { 87 | background-color: #282c34; 88 | min-height: 100vh; 89 | display: flex; 90 | flex-direction: column; 91 | align-items: center; 92 | justify-content: center; 93 | font-size: calc(8px + 2vmin); 94 | color: white; 95 | } 96 | 97 | .rsvp { 98 | display: block; 99 | } 100 | 101 | .App-link { 102 | color: #61dafb; 103 | } 104 | 105 | @keyframes App-logo-spin { 106 | from { 107 | transform: rotate(0deg); 108 | } 109 | to { 110 | transform: rotate(360deg); 111 | } 112 | } 113 | @media (max-width:1025px) { 114 | .header { 115 | height: 60px; 116 | } 117 | .form { 118 | width: 100%; 119 | } 120 | .results{ 121 | font-size: 75%; 122 | } 123 | card { 124 | width: 100%; 125 | } 126 | #createEventForm { 127 | grid-template-columns: 90px 1fr; 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /frontend/src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/src/contracts/RsvpContractAbi.d.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import type { 6 | Interface, 7 | FunctionFragment, 8 | DecodedValue, 9 | Contract, 10 | BytesLike, 11 | BigNumberish, 12 | InvokeFunction, 13 | BN, 14 | } from "fuels"; 15 | 16 | import type { Enum, Option } from "./common"; 17 | 18 | export type AddressInput = { value: string }; 19 | 20 | export type AddressOutput = { value: string }; 21 | 22 | export type ContractIdInput = { value: string }; 23 | 24 | export type ContractIdOutput = { value: string }; 25 | 26 | export type EventInput = { 27 | unique_id: BigNumberish; 28 | max_capacity: BigNumberish; 29 | deposit: BigNumberish; 30 | owner: IdentityInput; 31 | name: string; 32 | num_of_rsvps: BigNumberish; 33 | }; 34 | 35 | export type EventOutput = { 36 | unique_id: BN; 37 | max_capacity: BN; 38 | deposit: BN; 39 | owner: IdentityOutput; 40 | name: string; 41 | num_of_rsvps: BN; 42 | }; 43 | 44 | export type IdentityInput = Enum<{ 45 | Address: AddressInput; 46 | ContractId: ContractIdInput; 47 | }>; 48 | 49 | export type IdentityOutput = Enum<{ 50 | Address: AddressOutput; 51 | ContractId: ContractIdOutput; 52 | }>; 53 | 54 | interface RsvpContractAbiInterface extends Interface { 55 | functions: { 56 | create_event: FunctionFragment; 57 | get_rsvp: FunctionFragment; 58 | rsvp: FunctionFragment; 59 | }; 60 | 61 | encodeFunctionData( 62 | functionFragment: "create_event", 63 | values: [BigNumberish, BigNumberish, string] 64 | ): Uint8Array; 65 | encodeFunctionData( 66 | functionFragment: "get_rsvp", 67 | values: [BigNumberish] 68 | ): Uint8Array; 69 | encodeFunctionData( 70 | functionFragment: "rsvp", 71 | values: [BigNumberish] 72 | ): Uint8Array; 73 | 74 | decodeFunctionData( 75 | functionFragment: "create_event", 76 | data: BytesLike 77 | ): DecodedValue; 78 | decodeFunctionData( 79 | functionFragment: "get_rsvp", 80 | data: BytesLike 81 | ): DecodedValue; 82 | decodeFunctionData(functionFragment: "rsvp", data: BytesLike): DecodedValue; 83 | } 84 | 85 | export class RsvpContractAbi extends Contract { 86 | interface: RsvpContractAbiInterface; 87 | functions: { 88 | create_event: InvokeFunction< 89 | [capacity: BigNumberish, price: BigNumberish, event_name: string], 90 | EventOutput 91 | >; 92 | 93 | get_rsvp: InvokeFunction<[event_id: BigNumberish], EventOutput>; 94 | 95 | rsvp: InvokeFunction<[event_id: BigNumberish], EventOutput>; 96 | }; 97 | } 98 | -------------------------------------------------------------------------------- /rsvpContract/src/main.sw: -------------------------------------------------------------------------------- 1 | contract; 2 | 3 | dep event_platform; 4 | use event_platform::*; 5 | 6 | use std::{ 7 | auth::msg_sender, 8 | constants::BASE_ASSET_ID, 9 | call_frames::msg_asset_id, 10 | context::{ 11 | this_balance, 12 | msg_amount, 13 | }, 14 | contract_id::ContractId, 15 | logging::log, 16 | result::Result, 17 | token::transfer, 18 | }; 19 | 20 | storage { 21 | events: StorageMap = StorageMap {}, 22 | event_id_counter: u64 = 0, 23 | } 24 | 25 | pub enum InvalidRSVPError { 26 | IncorrectAssetId: ContractId, 27 | NotEnoughTokens: u64, 28 | InvalidEventID: Identity, 29 | } 30 | 31 | impl eventPlatform for Contract { 32 | #[storage(read, write)] 33 | fn create_event(capacity: u64, price: u64, event_name: str[10]) -> Event { 34 | let campaign_id = storage.event_id_counter; 35 | let new_event = Event { 36 | unique_id: campaign_id, 37 | max_capacity: capacity, 38 | deposit: price, 39 | owner: msg_sender().unwrap(), 40 | name: event_name, 41 | num_of_rsvps: 0, 42 | }; 43 | 44 | storage.events.insert(campaign_id, new_event); 45 | storage.event_id_counter += 1; 46 | let mut selected_event: Option = storage.events.get(storage.event_id_counter - 1); 47 | selected_event.unwrap_or(new_event) 48 | } 49 | 50 | #[storage(read, write, payable)] 51 | fn rsvp(event_id: u64) -> Event { 52 | let sender = msg_sender().unwrap(); 53 | let asset_id = msg_asset_id(); 54 | let amount = msg_amount(); 55 | 56 | // get the event 57 | let mut selected_event = storage.events.get(event_id).unwrap(); 58 | 59 | // check to see if the eventId is greater than storage.event_id_counter, if 60 | // it is, revert 61 | require(selected_event.unique_id < storage.event_id_counter, InvalidRSVPError::InvalidEventID(sender)); 62 | // log(0); 63 | // check to see if the asset_id and amounts are correct, etc, if they aren't revert 64 | require(asset_id == BASE_ASSET_ID, InvalidRSVPError::IncorrectAssetId(asset_id)); 65 | // log(1); 66 | require(amount >= selected_event.deposit, InvalidRSVPError::NotEnoughTokens(amount)); 67 | // log(2); 68 | //send the payout 69 | transfer(amount, asset_id, selected_event.owner); 70 | 71 | // edit the event 72 | selected_event.num_of_rsvps += 1; 73 | storage.events.insert(event_id, selected_event); 74 | 75 | // return the event 76 | return selected_event; 77 | } 78 | 79 | #[storage(read)] 80 | fn get_rsvp(event_id: u64) -> Event { 81 | let selected_event = storage.events.get(event_id).unwrap(); 82 | return selected_event; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /frontend/src/components/Footer.js: -------------------------------------------------------------------------------- 1 | export default function Footer() { 2 | return ( 3 | 44 | ); 45 | } -------------------------------------------------------------------------------- /rsvpContract/tests/harness.rs: -------------------------------------------------------------------------------- 1 | use fuels::{prelude::*, tx::ContractId}; 2 | 3 | // Load abi from json 4 | abigen!(MyContract, "out/debug/rsvpContract-abi.json"); 5 | 6 | async fn get_contract_instance() -> (MyContract, ContractId, Vec) { 7 | // Launch a local network and deploy the contract 8 | let mut wallets = launch_custom_provider_and_get_wallets( 9 | WalletsConfig::new( 10 | Some(4), /* Single wallet */ 11 | Some(1), /* Single coin (UTXO) */ 12 | Some(1_000_000_000), /* Amount per coin */ 13 | ), 14 | None, 15 | ) 16 | .await; 17 | let wallet = wallets.pop().unwrap(); 18 | 19 | let id = Contract::deploy( 20 | "./out/debug/rsvpContract.bin", 21 | &wallet, 22 | TxParameters::default(), 23 | StorageConfiguration::with_storage_path(Some( 24 | "./out/debug/rsvpContract-storage_slots.json".to_string(), 25 | )), 26 | ) 27 | .await 28 | .unwrap(); 29 | 30 | let instance = MyContract::new(id.clone().to_string(), wallet); 31 | 32 | (instance, id.into(), wallets) 33 | } 34 | 35 | #[tokio::test] 36 | async fn can_create_event_and_rsvp() { 37 | let (instance, _id , wallets) = get_contract_instance().await; 38 | 39 | // Now you have an instance of your contract you can use to test each function 40 | 41 | 42 | // we can access some wallets for testing 43 | let wallet_1 = wallets.get(0).unwrap(); 44 | let wallet_2 = wallets.get(1).unwrap(); 45 | // let wallet_3 = wallets.get(2).unwrap(); 46 | 47 | // check the initial balances for the wallets 48 | let initial_balance_1: u64 = wallet_1.get_asset_balance(&BASE_ASSET_ID).await.unwrap(); 49 | let initial_balance_2: u64 = wallet_2.get_asset_balance(&BASE_ASSET_ID).await.unwrap(); 50 | 51 | println!("BALANCE 1: {:?}", initial_balance_1); 52 | println!("BALANCE 2: {:?}", initial_balance_2); 53 | 54 | // let's define some mock event details to use as paramenters for the create_event function 55 | let capacity: u64 = 10; 56 | let price: u64 = 25; 57 | let event_name: SizedAsciiString<10> = "sway_party".try_into().expect("Should have succeeded"); 58 | 59 | 60 | // make the first event 61 | let project_1 = instance 62 | .with_wallet(wallet_1.clone()) 63 | .unwrap() 64 | .methods() 65 | .create_event(capacity, price, event_name.clone()) 66 | .call() 67 | .await 68 | .unwrap(); 69 | 70 | println!("PROJECT 1: {:?}", project_1.value); 71 | // make sure the project details are correct 72 | assert!(project_1.value.max_capacity == capacity); 73 | assert!(project_1.value.deposit == price); 74 | assert!(project_1.value.name == event_name); 75 | 76 | // Bytes representation of the asset ID of the "base" asset used for gas fees. 77 | pub const BASE_ASSET_ID: AssetId = AssetId::new([0u8; 32]); 78 | 79 | // call params to send the event price 80 | let call_params = CallParameters::new(Some(price), Some(BASE_ASSET_ID), None); 81 | 82 | 83 | // RSVP to the first project from wallet 2 84 | let project_1_copy = instance 85 | .with_wallet(wallet_2.clone()) 86 | .unwrap() 87 | .methods() 88 | .rsvp(0) 89 | .append_variable_outputs(1) 90 | .call_params(call_params) 91 | .call() 92 | .await 93 | .unwrap(); 94 | 95 | println!("PROJECT 1 Copy: {:?}", project_1_copy.value); 96 | //check if the num_of_rsvps is incremented 97 | assert!(project_1_copy.value.num_of_rsvps == 1); 98 | 99 | // check if the event owner received the price amount 100 | let new_balance_1 = wallet_1.get_asset_balance(&BASE_ASSET_ID).await.unwrap(); 101 | let new_balance_2= wallet_2.get_asset_balance(&BASE_ASSET_ID).await.unwrap(); 102 | 103 | println!("BALANCE 1: {:?}", new_balance_1); 104 | println!("BALANCE 2: {:?}", new_balance_2); 105 | 106 | assert!(new_balance_1 == initial_balance_1 + price); 107 | assert!(new_balance_2 == initial_balance_2 - price); 108 | 109 | } 110 | -------------------------------------------------------------------------------- /frontend/src/contracts/factories/RsvpContractAbi__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | import type { Provider, BaseWalletLocked, AbstractAddress } from "fuels"; 6 | import { Interface, Contract } from "fuels"; 7 | import type { 8 | RsvpContractAbi, 9 | RsvpContractAbiInterface, 10 | } from "../RsvpContractAbi"; 11 | const _abi = { 12 | types: [ 13 | { 14 | typeId: 0, 15 | type: "()", 16 | components: [], 17 | typeParameters: null, 18 | }, 19 | { 20 | typeId: 1, 21 | type: "b256", 22 | components: null, 23 | typeParameters: null, 24 | }, 25 | { 26 | typeId: 2, 27 | type: "enum Identity", 28 | components: [ 29 | { 30 | name: "Address", 31 | type: 5, 32 | typeArguments: null, 33 | }, 34 | { 35 | name: "ContractId", 36 | type: 6, 37 | typeArguments: null, 38 | }, 39 | ], 40 | typeParameters: null, 41 | }, 42 | { 43 | typeId: 3, 44 | type: "enum InvalidRSVPError", 45 | components: [ 46 | { 47 | name: "IncorrectAssetId", 48 | type: 0, 49 | typeArguments: null, 50 | }, 51 | { 52 | name: "NotEnoughTokens", 53 | type: 0, 54 | typeArguments: null, 55 | }, 56 | { 57 | name: "InvalidEventID", 58 | type: 0, 59 | typeArguments: null, 60 | }, 61 | ], 62 | typeParameters: null, 63 | }, 64 | { 65 | typeId: 4, 66 | type: "str[10]", 67 | components: null, 68 | typeParameters: null, 69 | }, 70 | { 71 | typeId: 5, 72 | type: "struct Address", 73 | components: [ 74 | { 75 | name: "value", 76 | type: 1, 77 | typeArguments: null, 78 | }, 79 | ], 80 | typeParameters: null, 81 | }, 82 | { 83 | typeId: 6, 84 | type: "struct ContractId", 85 | components: [ 86 | { 87 | name: "value", 88 | type: 1, 89 | typeArguments: null, 90 | }, 91 | ], 92 | typeParameters: null, 93 | }, 94 | { 95 | typeId: 7, 96 | type: "struct Event", 97 | components: [ 98 | { 99 | name: "unique_id", 100 | type: 8, 101 | typeArguments: null, 102 | }, 103 | { 104 | name: "max_capacity", 105 | type: 8, 106 | typeArguments: null, 107 | }, 108 | { 109 | name: "deposit", 110 | type: 8, 111 | typeArguments: null, 112 | }, 113 | { 114 | name: "owner", 115 | type: 2, 116 | typeArguments: null, 117 | }, 118 | { 119 | name: "name", 120 | type: 4, 121 | typeArguments: null, 122 | }, 123 | { 124 | name: "num_of_rsvps", 125 | type: 8, 126 | typeArguments: null, 127 | }, 128 | ], 129 | typeParameters: null, 130 | }, 131 | { 132 | typeId: 8, 133 | type: "u64", 134 | components: null, 135 | typeParameters: null, 136 | }, 137 | ], 138 | functions: [ 139 | { 140 | inputs: [ 141 | { 142 | name: "capacity", 143 | type: 8, 144 | typeArguments: null, 145 | }, 146 | { 147 | name: "price", 148 | type: 8, 149 | typeArguments: null, 150 | }, 151 | { 152 | name: "event_name", 153 | type: 4, 154 | typeArguments: null, 155 | }, 156 | ], 157 | name: "create_event", 158 | output: { 159 | name: "", 160 | type: 7, 161 | typeArguments: null, 162 | }, 163 | attributes: [ 164 | { 165 | name: "storage", 166 | arguments: ["read", "write"], 167 | }, 168 | ], 169 | }, 170 | { 171 | inputs: [ 172 | { 173 | name: "event_id", 174 | type: 8, 175 | typeArguments: null, 176 | }, 177 | ], 178 | name: "get_rsvp", 179 | output: { 180 | name: "", 181 | type: 7, 182 | typeArguments: null, 183 | }, 184 | attributes: [ 185 | { 186 | name: "storage", 187 | arguments: ["read"], 188 | }, 189 | ], 190 | }, 191 | { 192 | inputs: [ 193 | { 194 | name: "event_id", 195 | type: 8, 196 | typeArguments: null, 197 | }, 198 | ], 199 | name: "rsvp", 200 | output: { 201 | name: "", 202 | type: 7, 203 | typeArguments: null, 204 | }, 205 | attributes: [ 206 | { 207 | name: "storage", 208 | arguments: ["read", "write"], 209 | }, 210 | ], 211 | }, 212 | ], 213 | loggedTypes: [ 214 | { 215 | logId: 0, 216 | loggedType: { 217 | name: "", 218 | type: 3, 219 | typeArguments: [], 220 | }, 221 | }, 222 | { 223 | logId: 1, 224 | loggedType: { 225 | name: "", 226 | type: 3, 227 | typeArguments: [], 228 | }, 229 | }, 230 | { 231 | logId: 2, 232 | loggedType: { 233 | name: "", 234 | type: 3, 235 | typeArguments: [], 236 | }, 237 | }, 238 | ], 239 | messagesTypes: [], 240 | configurables: [], 241 | }; 242 | 243 | export class RsvpContractAbi__factory { 244 | static readonly abi = _abi; 245 | static createInterface(): RsvpContractAbiInterface { 246 | return new Interface(_abi) as unknown as RsvpContractAbiInterface; 247 | } 248 | static connect( 249 | id: string | AbstractAddress, 250 | walletOrProvider: BaseWalletLocked | Provider 251 | ): RsvpContractAbi { 252 | return new Contract( 253 | id, 254 | _abi, 255 | walletOrProvider 256 | ) as unknown as RsvpContractAbi; 257 | } 258 | } 259 | -------------------------------------------------------------------------------- /frontend/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState, useMemo } from "react"; 2 | import { useFuel } from "./hooks/useFuelWeb3"; 3 | import { useIsConnected } from "./hooks/useIsConnected"; 4 | import { ConnectRequest } from "./pages/ConnectRequest"; 5 | import { WalletLocked, bn } from "fuels"; 6 | import { FuelWalletProvider } from "@fuel-wallet/sdk"; 7 | import Layout from "./components/Layout"; 8 | import DisplaySingleEvent from "./components/DisplaySingleEvent"; 9 | 10 | // Import the contract factory -- you can find the name in index.ts. 11 | // You can also do command + space and the compiler will suggest the correct name. 12 | import { RsvpContractAbi__factory } from "./contracts"; 13 | // The address of the contract deployed the Fuel testnet 14 | // const CONTRACT_ID = "0x32f10d6f296fbd07e16f24867a11aab9d979ad95f54b223efc0d5532360ef5e4"; 15 | const CONTRACT_ID = 16 | "0x0314f13ea8a2f710de1317d0f50d7ec299e60dc8fe17c26de765766a39c8b04c"; 17 | 18 | export default function App() { 19 | const isConnected = useIsConnected(); 20 | const [fuel] = useFuel(); 21 | const [loading, setLoading] = useState(false); 22 | const [provider, setProvider] = useState(); 23 | const [accounts, setAccounts] = useState>([]); 24 | 25 | useEffect(() => { 26 | async function getAccounts() { 27 | const accounts = await fuel.accounts(); 28 | const prov = await fuel.getProvider(); 29 | setAccounts(accounts); 30 | setProvider(prov); 31 | } 32 | if (fuel) getAccounts(); 33 | }, [fuel]); 34 | 35 | const [contract, wallet] = useMemo(() => { 36 | if (fuel && accounts[0]) { 37 | const wallet = new WalletLocked(accounts[0], provider); 38 | // Connects out Contract instance to the deployed contract 39 | // address using the given wallet. 40 | const contract = RsvpContractAbi__factory.connect(CONTRACT_ID, wallet); 41 | 42 | return [contract, wallet]; 43 | } 44 | return [null, null]; 45 | }, [fuel, accounts, isConnected]); 46 | 47 | //-----------------------------------------------// 48 | //state variables to capture the selection of an existing event to RSVP to 49 | const [eventName, setEventName] = useState(""); 50 | const [maxCap, setMaxCap] = useState(0); 51 | const [eventCreation, setEventCreation] = useState(false); 52 | const [rsvpConfirmed, setRSVPConfirmed] = useState(false); 53 | const [numOfRSVPs, setNumOfRSVPs] = useState(0); 54 | const [eventId, setEventId] = useState(""); 55 | const [eventDeposit, setEventDeposit] = useState(0); 56 | //-----------------------------------------------// 57 | //state variables to capture the creation of an event 58 | const [newEventName, setNewEventName] = useState(""); 59 | const [newEventMax, setNewEventMax] = useState(0); 60 | const [newEventDeposit, setNewEventDeposit] = useState(0); 61 | const [newEventID, setNewEventID] = useState(""); 62 | const [newEventRSVP, setNewEventRSVP] = useState(0); 63 | const [walletAddress, setWalletAddress] = useState(""); 64 | 65 | useEffect(() => { 66 | if (wallet) { 67 | console.log("Wallet address", wallet.address.toString()); 68 | setWalletAddress(wallet.address.toString()); 69 | wallet.getBalances().then((balances) => { 70 | const balancesFormatted = balances.map((balance) => { 71 | return [balance.assetId, balance.amount.format()]; 72 | }); 73 | console.log("Wallet balances", balancesFormatted); 74 | }); 75 | } 76 | }, [wallet]); 77 | 78 | if (!isConnected) { 79 | return ; 80 | } 81 | 82 | async function rsvpToEvent() { 83 | setLoading(true); 84 | try { 85 | console.log("RSVPing to event"); 86 | // Retrieve the current RSVP data 87 | const { value: eventData } = await contract!.functions 88 | .get_rsvp(eventId) 89 | .get(); 90 | const requiredAmountToRSVP = eventData.deposit.toString(); 91 | 92 | console.log("deposit required to rsvp", requiredAmountToRSVP.toString()); 93 | setEventId(eventData.unique_id.toString()); 94 | setMaxCap(eventData.max_capacity.toNumber()); 95 | setEventName(eventData.name.toString()); 96 | setEventDeposit(eventData.deposit.toNumber()); 97 | console.log("event name", eventData.name); 98 | console.log("event capacity", eventData.max_capacity.toString()); 99 | console.log("eventID", eventData.unique_id.toString()); 100 | 101 | // Create a transaction to RSVP to the event 102 | const { value: eventRSVP, transactionId } = await contract!.functions 103 | .rsvp(eventId) 104 | .callParams({ 105 | forward: [requiredAmountToRSVP], 106 | //variable outputs is when a transaction creates a new dynamic UTXO 107 | //for each transaction you do, you'll need another variable output 108 | //for now, you have to set it manually, but the TS team is working on an issue to set this automatically 109 | }) 110 | .txParams({ gasPrice: 1, variableOutputs: 1 }) 111 | .call(); 112 | 113 | console.log( 114 | "Transaction created", 115 | transactionId, 116 | `https://fuellabs.github.io/block-explorer-v2/transaction/${transactionId}` 117 | ); 118 | console.log("# of RSVPs", eventRSVP.num_of_rsvps.toString()); 119 | setNumOfRSVPs(eventRSVP.num_of_rsvps.toNumber()); 120 | setRSVPConfirmed(true); 121 | alert("rsvp successful"); 122 | } catch (err: any) { 123 | console.error(err); 124 | alert(err.message); 125 | } finally { 126 | setLoading(false); 127 | } 128 | } 129 | 130 | async function createEvent(e: any) { 131 | e.preventDefault(); 132 | setLoading(true); 133 | try { 134 | console.log("creating event"); 135 | const requiredDeposit = bn.parseUnits(newEventDeposit.toString()); 136 | console.log("requiredDeposit", requiredDeposit.toString()); 137 | const { value } = await contract!.functions 138 | .create_event(newEventMax, requiredDeposit, newEventName) 139 | .txParams({ gasPrice: 1 }) 140 | .call(); 141 | 142 | console.log("return of create event", value); 143 | console.log( 144 | "deposit value", 145 | bn.parseUnits(newEventDeposit.toString()).toString() 146 | ); 147 | console.log("event name", value.name); 148 | console.log("event capacity", value.max_capacity.toString()); 149 | console.log("eventID", value.unique_id.toString()); 150 | setNewEventID(value.unique_id.toString()); 151 | setEventCreation(true); 152 | alert("Event created"); 153 | } catch (err: any) { 154 | alert(err.message); 155 | } finally { 156 | setLoading(false); 157 | } 158 | } 159 | return ( 160 | 161 |
162 |
166 |
167 |
168 |
169 |

170 | Create events, manage ticket sales, and connect with your 171 | community. 172 |

173 |
174 |
175 |
176 |

Create a New Event

177 |
178 |
179 | 185 |
186 | setNewEventName(e.target.value)} 192 | placeholder="Enter event name" 193 | className="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" 194 | /> 195 |
196 |
197 | 198 |
199 | 205 |
206 | setNewEventMax(+e.target.value)} 209 | type="number" 210 | name="last-name" 211 | id="last-name" 212 | autoComplete="family-name" 213 | className="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" 214 | /> 215 |
216 |
217 |
218 | 224 |
225 | setNewEventDeposit(+e.target.value)} 228 | id="email" 229 | name="email" 230 | type="number" 231 | autoComplete="email" 232 | className="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:text-sm" 233 | /> 234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 | 247 |
248 |
249 |
250 |
254 |
255 |
256 |

RSVP To An Event

257 |
258 |
259 | 265 |
266 | setEventId(e.target.value)} 272 | placeholder="Enter event name" 273 | className="block w-full max-w-lg rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 sm:max-w-xs sm:text-sm" 274 | /> 275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 | 289 |
290 |
291 |
292 |
293 |
294 | {(eventCreation && newEventID != "0") && ( 295 | <> 296 | 302 | 303 | )} 304 |
305 |
306 | {rsvpConfirmed && ( 307 | <> 308 |
309 | 315 |
316 | 317 | )} 318 |
319 |
320 |
321 |
322 | ); 323 | } 324 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Building on Fuel with Sway - Web3RSVP 2 | 3 | In this workshop, we'll build a fullstack dapp on Fuel. 4 | 5 | This dapp is a bare-bones architectural reference for an event creation and management platform, similar to Eventbrite or Luma. Users can create a new event and RSVP to an existing event. This is the functionality we're going to build out in this workshop: 6 | 7 | - Create a function in the smart contract to create a new event 8 | - Create a function in the smart contract to RSVP to an existing event 9 | 10 | Screenshot 2023-02-08 at 7 33 34 PM 11 | 12 | Let's break down the tasks associated with each function: 13 | 14 | _In order to create a function to create a new event, the program will have to be able to handle the following:_ 15 | 16 | - the user should pass in the name of the event, a deposit amount for attendees to pay to be able to RSVP to the event, and the max capacity for the event. 17 | - Once a user passes this information in, our program should create an event, represented as a data structure called a `struct`. 18 | - Because this is an events platform, our program should be able to handle multiple events at once. Therefore, we need a mechanism to store multiple events. 19 | - To store multiple events, we will use a hash map, someimtes known as a hash table in other programming languages. This hash map will `map` a unique identifier, which we'll call an `eventId`, to an event (that is represented as a struct). 20 | 21 | _In order to create a function to handle a user RSVP'ing, or confirming their attendance to the event, our program will have to be able to handle the following_ 22 | 23 | - We should have a mechsnism to identify the event that the user wants to rsvp to 24 | 25 | _Some resources that may be helpful:_ 26 | 27 | - [Fuel Book](https://fuellabs.github.io/fuel-docs/master/) 28 | - [Sway Book](https://fuellabs.github.io/sway/v0.19.2/) 29 | - [Fuel discord](discord.gg/fuelnetwork) - get help 30 | 31 | ## Run this project locally 32 | 33 | In order to test out Web3RSVP locally, carry out the following steps: 34 | 35 | 1. Clone this repository and move into the root folder `learnsway-web3rsvp`: 36 | 37 | ```bash 38 | git clone https://github.com/camiinthisthang/learnsway-web3rsvp.git 39 | 40 | cd learnsway-web3rsvp 41 | ``` 42 | 43 | 2. Move into the `rsvpContract` folder and compile the contact files: 44 | 45 | ```bash 46 | cd rsvpContract 47 | 48 | forc build 49 | ``` 50 | 51 | 3. Deploy the contract using the `forc deploy` command: 52 | 53 | ```bash 54 | forc deploy --url https://node-beta-1.fuel.network/graphql --gas-price 1 55 | ``` 56 | 57 | > 💡 Note: Before you can carry out the next step, make sure you have the fuel wallet CLI installed and an active wallet account. Additionally, you will need test eth from the faucet to sign the transaction. You can get test tokens [here](https://faucet-beta-2.fuel.network/). 58 | 59 | 4. Enter the wallet address when prompted. 60 | 61 | 5. Copy the message to be signed. Let's assume that the message string is `X`. Run the following command in a separate terminal: 62 | 63 | ```bash 64 | forc wallet sign `X` `wallet account index` 65 | ``` 66 | 67 | So for instance, if your wallet account index is 0, the above command should look something like: 68 | 69 | ```bash 70 | forc wallet sign 16d7a8f9d15cfba1bd000d3f99cd4077dfa1fce2a6de83887afc3f739d6c84df 0 71 | ``` 72 | 73 | 6. Paste the returned signature in the previous terminal. Voila! Your contract has now been successfully deployed. 74 | 75 | 7. Move into the `frontend` folder to install dependencies and run the app locally: 76 | 77 | ```bash 78 | cd frontend 79 | 80 | npm install 81 | 82 | npm start 83 | ``` 84 | 85 | Awesome! You can now test out the app and play around with it locally to understand what you be learning to implement and how it should look like in the end. 86 | 87 | Now, let's go ahead and get started with building the app yourself! 88 | 89 | ## Installation 90 | 91 | 1. Install `cargo` using [`rustup`](https://www.rust-lang.org/tools/install) 92 | 93 | Mac and Linux: 94 | 95 | ```bash 96 | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 97 | ``` 98 | 99 | 2. Check for correct setup: 100 | 101 | ```bash 102 | $ cargo --version 103 | cargo 1.62.0 104 | ``` 105 | 106 | 3. Install `forc` using [`fuelup`](https://fuellabs.github.io/sway/v0.18.1/introduction/installation.html#installing-from-pre-compiled-binaries) 107 | 108 | Mac and Linux: 109 | 110 | ```bash 111 | curl --proto '=https' --tlsv1.2 -sSf \ 112 | https://fuellabs.github.io/fuelup/fuelup-init.sh | sh 113 | ``` 114 | 115 | 4. Check for correct setup: 116 | 117 | ```bash 118 | $ forc --version 119 | forc 0.26.0 120 | ``` 121 | 122 | ### Editor 123 | 124 | You are welcome to use your editor of choice. 125 | 126 | - [VSCode plugin](https://marketplace.visualstudio.com/items?itemName=FuelLabs.sway-vscode-plugin) 127 | - [Vim highlighting](https://github.com/FuelLabs/sway.vim) 128 | 129 | ## Getting Started 130 | 131 | This guide will walk developers through writing a smart contract in Sway, a simple test, deploying to Fuel, and building a frontend. 132 | 133 | Before we begin, it may be helpful to understand terminology that will used throughout the docs and how they relate to each other: 134 | 135 | - **Fuel**: the Fuel blockchain. 136 | - **FuelVM**: the virtual machine powering Fuel. 137 | - **Sway**: the domain-specific language crafted for the FuelVM; it is inspired by Rust. 138 | - **Forc**: the build system and package manager for Sway, similar to Cargo for Rust. 139 | 140 | ## Understand Sway Program Types 141 | 142 | There are four types of Sway programs: 143 | 144 | - `contract` 145 | - `predicate` 146 | - `script` 147 | - `library` 148 | 149 | Contracts, predicates, and scripts can produce artifacts usable on the blockchain, while a library is simply a project designed for code reuse and is not directly deployable. 150 | 151 | The main features of a smart contract that differentiate it from scripts or predicates are that it is callable and stateful. 152 | 153 | A script is runnable bytecode on the chain which can call contracts to perform some task. It does not represent ownership of any resources and it cannot be called by a contract. 154 | 155 | ## Create a new Fuel project 156 | 157 | **Start by creating a new, empty folder. We'll call it `learnsway-web3rsvp`.** 158 | 159 | ### Writing the Contract 160 | 161 | Then with `forc` installed, create a project inside of your `Web3RSVP` folder: 162 | 163 | ```sh 164 | $ cd Web3RSVP 165 | $ forc new eventPlatform 166 | To compile, use `forc build`, and to run tests use `forc test` 167 | 168 | --- 169 | ``` 170 | 171 | Here is the project that `Forc` has initialized: 172 | 173 | ```console 174 | $ tree learnsway-web3rsvp 175 | rsvpContract 176 | ├── Cargo.toml 177 | ├── Forc.toml 178 | ├── src 179 | │ └── main.sw 180 | └── tests 181 | └── harness.rs 182 | ``` 183 | 184 | ## Defining the ABI 185 | 186 | First, we'll define the ABI. An ABI defines an interface, and there is no function body in the ABI. A contract must either define or import an ABI declaration and implement it. It is considered best practice to define your ABI in a separate library and import it into your contract because this allows callers of the contract to import and use the ABI in scripts to call your contract. 187 | 188 | To define the ABI as a library, we'll create a new file in the `src` folder. Create a new file named `event_platform.sw` 189 | 190 | Here is what your project structure should look like now: 191 | Here is the project that `Forc` has initialized: 192 | 193 | ```console 194 | rsvpContract 195 | ├── Cargo.toml 196 | ├── Forc.toml 197 | ├── src 198 | │ └── main.sw 199 | │ └── event_platform.sw 200 | └── tests 201 | └── harness.rs 202 | ``` 203 | 204 | Add the following code to your ABI file, `event_platform.sw`: 205 | 206 | ```rust 207 | library event_platform; 208 | 209 | use std::{ 210 | identity::Identity, 211 | contract_id::ContractId, 212 | }; 213 | 214 | abi eventPlatform { 215 | #[storage(read, write)] 216 | fn create_event(max_capacity: u64, deposit: u64, event_name: str[10]) -> Event; 217 | 218 | #[storage(read, write)] 219 | fn rsvp(event_id: u64) -> Event; 220 | } 221 | 222 | // defining the struct here because it would be used by other developers who would be importing this ABI 223 | pub struct Event { 224 | unique_id: u64, 225 | max_capacity: u64, 226 | deposit: u64, 227 | owner: Identity, 228 | name: str[10], 229 | num_of_rsvps: u64, 230 | } 231 | 232 | ``` 233 | 234 | Now, in the `main.sw` file, we'll implement these functions. This is where you will write out the function bodies. Here is what your `main.sw` file should look like: 235 | 236 | ```rust 237 | contract; 238 | 239 | dep event_platform; 240 | use event_platform::*; 241 | 242 | use std::{ 243 | chain::auth::{AuthError, msg_sender}, 244 | constants::BASE_ASSET_ID, 245 | context::{ 246 | call_frames::msg_asset_id, 247 | msg_amount, 248 | this_balance, 249 | }, 250 | contract_id::ContractId, 251 | identity::Identity, 252 | logging::log, 253 | result::Result, 254 | storage::StorageMap, 255 | token::transfer, 256 | }; 257 | 258 | storage { 259 | events: StorageMap = StorageMap {}, 260 | event_id_counter: u64 = 0, 261 | } 262 | 263 | impl eventPlatform for Contract { 264 | #[storage(read, write)] 265 | fn create_event(capacity: u64, price: u64, event_name: str[10]) -> Event { 266 | let campaign_id = storage.event_id_counter; 267 | let new_event = Event { 268 | unique_id: campaign_id, 269 | max_capacity: capacity, 270 | deposit: price, 271 | owner: msg_sender().unwrap(), 272 | name: event_name, 273 | num_of_rsvps: 0, 274 | }; 275 | 276 | storage.events.insert(campaign_id, new_event); 277 | storage.event_id_counter += 1; 278 | let mut selectedEvent = storage.events.get(storage.event_id_counter - 1); 279 | return selectedEvent; 280 | } 281 | 282 | #[storage(read, write)] 283 | fn rsvp(event_id: u64) -> Event { 284 | let sender = msg_sender().unwrap(); 285 | let asset_id = msg_asset_id(); 286 | let amount = msg_amount(); 287 | 288 | // get the event 289 | //variables are immutable by default, so you need to use the mut keyword 290 | let mut selected_event = storage.events.get(event_id); 291 | 292 | // check to see if the eventId is greater than storage.event_id_counter, if 293 | // it is, revert 294 | require(selected_event.unique_id < storage.event_id_counter, InvalidRSVPError::InvalidEventID); 295 | 296 | // check to see if the asset_id and amounts are correct, etc, if they aren't revert 297 | require(asset_id == BASE_ASSET_ID, InvalidRSVPError::IncorrectAssetId); 298 | require(amount >= selected_event.deposit, InvalidRSVPError::NotEnoughTokens); 299 | 300 | //send the payout from the msg_sender to the owner of the selected event 301 | transfer(amount, asset_id, selected_event.owner); 302 | 303 | // edit the event 304 | selected_event.num_of_rsvps += 1; 305 | storage.events.insert(event_id, selected_event); 306 | 307 | // return the event 308 | return selected_event; 309 | } 310 | } 311 | ``` 312 | 313 | ### Build the Contract 314 | 315 | From inside the `learnsway-web3rsvp/rsvpContract` directory, run the following command to build your contract: 316 | 317 | ```console 318 | $ forc build 319 | Compiled library "core". 320 | Compiled library "std". 321 | Compiled contract "rsvpContract". 322 | Bytecode size is 224 bytes. 323 | ``` 324 | 325 | ### Deploy the Contract 326 | 327 | It's now time to deploy the contract to the testnet. We will show how to do this using `forc` from the command line, but you can also do it using the [Rust SDK](https://github.com/FuelLabs/fuels-rs#deploying-a-sway-contract) or the [TypeScript SDK](https://github.com/FuelLabs/fuels-ts/#deploying-contracts). 328 | 329 | In order to deploy a contract, you need to have a wallet to sign the transaction and coins to pay for gas. First, we'll create a wallet. 330 | 331 | ### Install the Wallet CLI 332 | 333 | Follow [these steps to set up a wallet and create an account](https://github.com/FuelLabs/forc-wallet#forc-wallet). 334 | 335 | After typing in a password, be sure to save the mnemonic phrase that is output. 336 | 337 | With this, you'll get a fuel address that looks something like this: `fuel1efz7lf36w9da9jekqzyuzqsfrqrlzwtt3j3clvemm6eru8fe9nvqj5kar8`. Save this address as you'll need it to sign transactions when we deploy the contract. 338 | 339 | #### Get Testnet Coins 340 | 341 | With your account address in hand, head to the [testnet faucet](https://faucet-beta-1.fuel.network/) to get some coins sent to your wallet. 342 | 343 | ## Deploy To Testnet 344 | 345 | Now that you have a wallet, you can deploy with `forc deploy` and passing in the testnet endpoint like this: 346 | 347 | `forc deploy --url https://node-beta-2.fuel.network/graphql --gas-price 1` 348 | 349 | > **Note** 350 | > We set the gas price to 1. Without this flag, the gas price is 0 by default and the transaction will fail. 351 | 352 | The terminal will ask for the address of the wallet you want to sign this transaction with, paste in the address you saved earlier, it looks like this: `fuel1efz7lf36w9da9jekqzyuzqsfrqrlzwtt3j3clvemm6eru8fe9nvqj5kar8` 353 | 354 | The terminal will output your contract id. Be sure to save this as you will need it to build a frontend with the Typescript SDK. 355 | 356 | The terminal will output a `transaction id to sign` and prompt you for a signature. Open a new terminal tab and view your accounts by running `forc wallet list`. If you followed these steps, you'll notice you only have one account, `0`. 357 | 358 | Grab the `transaction id` from your other terminal and sign with a specified account by running the following command: 359 | 360 | ```console 361 | forc wallet sign` + `[transaction id here, without brackets]` + `[the account number, without brackets]` 362 | ``` 363 | 364 | Your command should look like this: 365 | 366 | ```console 367 | $ forc wallet sign 16d7a8f9d15cfba1bd000d3f99cd4077dfa1fce2a6de83887afc3f739d6c84df 0 368 | Please enter your password to decrypt initialized wallet's phrases: 369 | Signature: 736dec3e92711da9f52bed7ad4e51e3ec1c9390f4b05caf10743229295ffd5c1c08a4ca477afa85909173af3feeda7c607af5109ef6eb72b6b40b3484db2332c 370 | ``` 371 | 372 | Enter your password when prompted, and you'll get back a `signature`. Save that signature, and return to your other terminal window, and paste that in where its prompting you to `provide a signature for this transaction`. 373 | 374 | Finally, you will get back a `TransactionId` to confirm your contract was deployed. With this ID, you can head to the [block explorer](https://fuellabs.github.io/block-explorer-v2/) and view your contract. 375 | 376 | > **Note** 377 | > You should prefix your `TransactionId` with `0x` to view it in the block explorer 378 | 379 | ## Create a Frontend to Interact with Contract 380 | 381 | Now we are going to 382 | 383 | 1. **Initialize a React project.** 384 | 2. **Install the `fuels` SDK dependencies.** 385 | 3. **Modify the App.** 386 | 4. **Run our project.** 387 | 388 | ## Initialize a React project 389 | 390 | To split better our project let's create a new folder `frontend` and initialize our project inside it. 391 | 392 | In the terminal, go back up one directory and initialize a react project using [`Create React App`](https://create-react-app.dev/). 393 | 394 | ```console 395 | $ cd .. 396 | $ npx create-react-app frontend --template typescript 397 | Success! Created frontend at learnsway-web3rsvp/frontend 398 | ``` 399 | 400 | You should now have your outer folder, `learnsway-Web3RSVP`, with two folders inside: `frontend` and `rsvpContract` 401 | 402 | ![project folder structure](./images/quickstart-folder-structure.png) 403 | 404 | ### Install the `fuels` SDK dependencies 405 | 406 | In this step, you need to install 3 dependencies for the project: 407 | 408 | 1. `fuels`: The umbrella package that includes all the main tools; `Wallet`, `Contracts`, `Providers`, and more! 409 | 2. `fuelchain`: Fuelchain is the ABI TypeScript generator. 410 | 3. `typechain-target-fuels`: The Fuelchain Target is the specific interpreter for the [Fuel ABI Spec](https://fuellabs.github.io/fuel-specs/master/protocol/abi/index.html). 411 | 412 | > ABI stands for Application Binary Interface. The ABI of your smart contract informs the application of the interface to interact with the VM. In other words, it provides info to the app about the contract methods, params, expected types, etc. 413 | 414 | ### Install 415 | 416 | Move into the `frontend` folder, then install the dependencies as follows: 417 | 418 | ```console 419 | $ cd frontend 420 | $ npm install fuels --save 421 | added 65 packages, and audited 1493 packages in 4s 422 | $ npm install fuelchain typechain-target-fuels --save-dev 423 | added 33 packages, and audited 1526 packages in 2s 424 | ``` 425 | 426 | ### Generating contract types 427 | 428 | To make it easier to interact with your contract, let's use `fuelchain` to interpret the output ABI JSON from your contract. This JSON was created at the moment you executed the `forc build` to compile your Sway Contract into binary. 429 | 430 | If you see the folder `learnsway-Web3RSVP/rsvpContract/out`, you will be able to see the ABI JSON inside it. To learn more, read the [ABI Specs here](https://github.com/FuelLabs/fuel-specs/blob/master/specs/protocol/abi.md). 431 | 432 | Inside `learnsway-Web3RSVP/frontend` run; 433 | 434 | ```console 435 | $ npx fuelchain --target=fuels --out-dir=./src/contracts ../rsvpContract/out/debug/*-abi.json 436 | Successfully generated 4 typings! 437 | ``` 438 | 439 | Now you should be able to find a new folder `learnsway-Web3RSVP/frontend/src/contracts`. This folder was auto-generated by the `fuelchain` command you executed. These files abstract away the work you would need to do to create a contract instance and generate a complete TypeScript interface for the contract. 440 | 441 | ### Integrating Fuel Wallet 442 | 443 | For interacting with the Fuel network we have to submit signed transactions with enough funds to cover network fees. 444 | 445 | #### Write wallet hooks 446 | 447 | 1. `useFuel` 448 | 449 | Create a file called `useFuelWeb3.tsx` in your `hooks` folder. Go ahead and add the code below to write your `useFuel` wallet hook: 450 | 451 | ```js 452 | import { useState, useEffect } from 'react'; 453 | import { Fuel } from '@fuel-wallet/sdk'; 454 | 455 | const globalWindow: Window & { 456 | fuel: Fuel; 457 | } = typeof window !== 'undefined' ? window as any : ({} as any); 458 | 459 | export function useFuel() { 460 | const [error, setError] = useState(''); 461 | const [isLoading, setLoading] = useState(true); 462 | const [fuel, setFuel] = useState( 463 | globalWindow.fuel 464 | ); 465 | 466 | useEffect(() => { 467 | const timeout = setTimeout(() => { 468 | if (globalWindow.fuel) { 469 | setFuel(globalWindow.fuel); 470 | } else { 471 | setError('Fuel Wallet not detected on the window!'); 472 | } 473 | setLoading(false); 474 | }, 500); 475 | return () => clearTimeout(timeout); 476 | }, []); 477 | 478 | return [fuel, error, isLoading] as const; 479 | } 480 | ``` 481 | 482 | 2. `useIsConnected` 483 | 484 | Create another file called `useIsConnected.tsx` in your `hooks` folder and add the following code to define the `useIsConnected` wallet hook: 485 | 486 | ```js 487 | import { useEffect, useState } from 'react'; 488 | 489 | import { useFuel } from './useFuel'; 490 | 491 | export function useIsConnected() { 492 | const [fuel] = useFuel(); 493 | const [isConnected, setIsConnected] = useState(false); 494 | 495 | useEffect(() => { 496 | async function main() { 497 | try { 498 | const accounts = await fuel.accounts(); 499 | setIsConnected(Boolean(accounts.length)); 500 | } catch (err) { 501 | setIsConnected(false); 502 | } 503 | } 504 | 505 | if (fuel) { 506 | main(); 507 | } 508 | 509 | fuel?.on('connection', main); 510 | return () => { 511 | fuel?.off('connection', main); 512 | }; 513 | }, [fuel]); 514 | 515 | return isConnected; 516 | } 517 | 518 | ``` 519 | 520 | Now you're ready to build and ship ⛽ 521 | 522 | ### Modify the App 523 | 524 | Inside the `frontend` folder let's add code that interacts with our contract. 525 | Read the comments to help you understand the App parts. 526 | 527 | 1. Import the wallet hooks: 528 | 529 | ```js 530 | import { useFuel } from "./hooks/useFuelWeb3"; 531 | import { useIsConnected } from "./hooks/useIsConnected"; 532 | import { FuelWalletProvider } from "@fuel-wallet/sdk"; 533 | ``` 534 | 535 | 2. Add the contract id of the Sway smart contract you have deployed in your `App.tsx` file 536 | 537 | ```js 538 | const CONTRACT_ID = "your_contract_id" 539 | ``` 540 | 541 | 3. Define `fuel` and `isConnected` using the wallet hooks you wrote earlier 542 | 543 | ```js 544 | export default function App() { 545 | const isConnected = useIsConnected(); 546 | const [fuel] = useFuel(); 547 | } 548 | ``` 549 | 550 | 4. Get `accounts` and `provider` 551 | 552 | ``` 553 | useEffect(() => { 554 | async function getAccounts() { 555 | const accounts = await fuel.accounts(); 556 | const prov = await fuel.getProvider(); 557 | setAccounts(accounts); 558 | setProvider(prov); 559 | } 560 | if (fuel) getAccounts(); 561 | }, [fuel]); 562 | ``` 563 | 564 | 5. Connect contract instance to the deployed contract address using the given wallet 565 | 566 | ```js 567 | const [contract, wallet] = useMemo(() => { 568 | if (fuel && accounts[0]) { 569 | const wallet = new WalletLocked(accounts[0], provider); 570 | // Connects out Contract instance to the deployed contract 571 | // address using the given wallet. 572 | const contract = RsvpContractAbi__factory.connect(CONTRACT_ID, wallet); 573 | 574 | return [contract, wallet]; 575 | } 576 | return [null, null]; 577 | }, [fuel, accounts, isConnected]); 578 | ``` 579 | 580 | Awesome! Now that we've integrated the wallet, let's go ahead and write our functions for creating an event and then rsvping to it. 581 | 582 | Your `learnsway-Web3RSVP/frontend/src/App.tsx` file should look something like this: 583 | 584 | ```js 585 | import React, { useEffect, useState, useMemo } from "react"; 586 | import { useFuel } from "./hooks/useFuelWeb3"; 587 | import { useIsConnected } from "./hooks/useIsConnected"; 588 | import { ConnectRequest } from "./pages/ConnectRequest"; 589 | import { WalletLocked, bn } from "fuels"; 590 | import { FuelWalletProvider } from "@fuel-wallet/sdk"; 591 | import Layout from "./components/Layout"; 592 | import DisplaySingleEvent from "./components/DisplaySingleEvent"; 593 | 594 | // Import the contract factory -- you can find the name in index.ts. 595 | // You can also do command + space and the compiler will suggest the correct name. 596 | import { RsvpContractAbi__factory } from "./contracts"; 597 | // The address of the contract deployed the Fuel testnet 598 | // const CONTRACT_ID = "0x32f10d6f296fbd07e16f24867a11aab9d979ad95f54b223efc0d5532360ef5e4"; 599 | const CONTRACT_ID = 600 | "0x0314f13ea8a2f710de1317d0f50d7ec299e60dc8fe17c26de765766a39c8b04c"; 601 | 602 | export default function App() { 603 | const isConnected = useIsConnected(); 604 | const [fuel] = useFuel(); 605 | const [loading, setLoading] = useState(false); 606 | const [provider, setProvider] = useState(); 607 | const [accounts, setAccounts] = useState>([]); 608 | 609 | useEffect(() => { 610 | async function getAccounts() { 611 | const accounts = await fuel.accounts(); 612 | const prov = await fuel.getProvider(); 613 | setAccounts(accounts); 614 | setProvider(prov); 615 | } 616 | if (fuel) getAccounts(); 617 | }, [fuel]); 618 | 619 | const [contract, wallet] = useMemo(() => { 620 | if (fuel && accounts[0]) { 621 | const wallet = new WalletLocked(accounts[0], provider); 622 | // Connects out Contract instance to the deployed contract 623 | // address using the given wallet. 624 | const contract = RsvpContractAbi__factory.connect(CONTRACT_ID, wallet); 625 | 626 | return [contract, wallet]; 627 | } 628 | return [null, null]; 629 | }, [fuel, accounts, isConnected]); 630 | 631 | //-----------------------------------------------// 632 | //state variables to capture the selection of an existing event to RSVP to 633 | const [eventName, setEventName] = useState(""); 634 | const [maxCap, setMaxCap] = useState(0); 635 | const [eventCreation, setEventCreation] = useState(false); 636 | const [rsvpConfirmed, setRSVPConfirmed] = useState(false); 637 | const [numOfRSVPs, setNumOfRSVPs] = useState(0); 638 | const [eventId, setEventId] = useState(""); 639 | const [eventDeposit, setEventDeposit] = useState(0); 640 | //-----------------------------------------------// 641 | //state variables to capture the creation of an event 642 | const [newEventName, setNewEventName] = useState(""); 643 | const [newEventMax, setNewEventMax] = useState(0); 644 | const [newEventDeposit, setNewEventDeposit] = useState(0); 645 | const [newEventID, setNewEventID] = useState(""); 646 | const [newEventRSVP, setNewEventRSVP] = useState(0); 647 | const [walletAddress, setWalletAddress] = useState(""); 648 | 649 | useEffect(() => { 650 | if (wallet) { 651 | console.log("Wallet address", wallet.address.toString()); 652 | setWalletAddress(wallet.address.toString()); 653 | wallet.getBalances().then((balances) => { 654 | const balancesFormatted = balances.map((balance) => { 655 | return [balance.assetId, balance.amount.format()]; 656 | }); 657 | console.log("Wallet balances", balancesFormatted); 658 | }); 659 | } 660 | }, [wallet]); 661 | 662 | if (!isConnected) { 663 | return ; 664 | } 665 | 666 | async function rsvpToEvent() { 667 | setLoading(true); 668 | try { 669 | console.log("RSVPing to event"); 670 | // Retrieve the current RSVP data 671 | const { value: eventData } = await contract!.functions 672 | .get_rsvp(eventId) 673 | .get(); 674 | const requiredAmountToRSVP = eventData.deposit.toString(); 675 | 676 | console.log("deposit required to rsvp", requiredAmountToRSVP.toString()); 677 | setEventId(eventData.unique_id.toString()); 678 | setMaxCap(eventData.max_capacity.toNumber()); 679 | setEventName(eventData.name.toString()); 680 | setEventDeposit(eventData.deposit.toNumber()); 681 | console.log("event name", eventData.name); 682 | console.log("event capacity", eventData.max_capacity.toString()); 683 | console.log("eventID", eventData.unique_id.toString()); 684 | 685 | // Create a transaction to RSVP to the event 686 | const { value: eventRSVP, transactionId } = await contract!.functions 687 | .rsvp(eventId) 688 | .callParams({ 689 | forward: [requiredAmountToRSVP], 690 | //variable outputs is when a transaction creates a new dynamic UTXO 691 | //for each transaction you do, you'll need another variable output 692 | //for now, you have to set it manually, but the TS team is working on an issue to set this automatically 693 | }) 694 | .txParams({ gasPrice: 1, variableOutputs: 1 }) 695 | .call(); 696 | 697 | console.log( 698 | "Transaction created", 699 | transactionId, 700 | `https://fuellabs.github.io/block-explorer-v2/transaction/${transactionId}` 701 | ); 702 | console.log("# of RSVPs", eventRSVP.num_of_rsvps.toString()); 703 | setNumOfRSVPs(eventRSVP.num_of_rsvps.toNumber()); 704 | setRSVPConfirmed(true); 705 | alert("rsvp successful"); 706 | } catch (err: any) { 707 | console.error(err); 708 | alert(err.message); 709 | } finally { 710 | setLoading(false); 711 | } 712 | } 713 | 714 | async function createEvent(e: any) { 715 | e.preventDefault(); 716 | setLoading(true); 717 | try { 718 | console.log("creating event"); 719 | const requiredDeposit = bn.parseUnits(newEventDeposit.toString()); 720 | console.log("requiredDeposit", requiredDeposit.toString()); 721 | const { value } = await contract!.functions 722 | .create_event(newEventMax, requiredDeposit, newEventName) 723 | .txParams({ gasPrice: 1 }) 724 | .call(); 725 | 726 | console.log("return of create event", value); 727 | console.log( 728 | "deposit value", 729 | bn.parseUnits(newEventDeposit.toString()).toString() 730 | ); 731 | console.log("event name", value.name); 732 | console.log("event capacity", value.max_capacity.toString()); 733 | console.log("eventID", value.unique_id.toString()); 734 | setNewEventID(value.unique_id.toString()); 735 | setEventCreation(true); 736 | alert("Event created"); 737 | } catch (err: any) { 738 | alert(err.message); 739 | } finally { 740 | setLoading(false); 741 | } 742 | } 743 | ``` 744 | 745 | ### Run your project 746 | 747 | Now it's time to have fun run the project on your browser; 748 | 749 | Inside `Web3RSVP/frontend` run; 750 | 751 | ```console 752 | $ npm start 753 | Compiled successfully! 754 | 755 | You can now view frontend in the browser. 756 | 757 | Local: http://localhost:3001 758 | On Your Network: http://192.168.4.48:3001 759 | 760 | Note that the development build is not optimized. 761 | To create a production build, use npm run build. 762 | ``` 763 | 764 | #### ✨⛽✨ Congrats you have completed your first DApp on Fuel ✨⛽✨ 765 | 766 | Screenshot 2023-02-08 at 7 33 34 PM 767 | 768 | Tweet me [@camiinthisthang](https://twitter.com/camiinthisthang) and let me know you just built a dapp on Fuel, you might get invited to a private group of builders, be invited to the next Fuel dinner, get alpha on the project, or something 👀. 769 | 770 | > Note: To push this project up to a github repo, you'll have to remove the `.git` file that automatically gets created with `create-react-app`. You can do that by running the following command in `learnsway-Web3RSVP/frontend`: `Rm -rf .git`. Then, you'll be good to add, commit, and push these files. 771 | 772 | ### Updating The Contract 773 | 774 | If you make changes to your contract, here are the steps you should take to get your frontend and contract back in sync: 775 | 776 | - In your contract directory, run `forc build` 777 | - In your contract directory, redeploy the contract by running this command and following the same steps as above to sign the transaction with your wallet: `forc deploy --url https://node-beta-1.fuel.network/graphql --gas-price 1` 778 | - In your frontend directory, re-run this command: `npx fuelchain --target=fuels --out-dir=./src/contracts ../rsvpContract/out/debug/*-abi.json` 779 | - In your frontend directory, update the contract ID in your `App.tsx` file 780 | 781 | ## Need Help? 782 | 783 | Head over to the [Fuel discord](https://discord.com/invite/fuelnetwork) to get help. 784 | -------------------------------------------------------------------------------- /rsvpContract/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "Inflector" 7 | version = "0.11.4" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 10 | dependencies = [ 11 | "lazy_static", 12 | "regex", 13 | ] 14 | 15 | [[package]] 16 | name = "aead" 17 | version = "0.3.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" 20 | dependencies = [ 21 | "generic-array 0.14.6", 22 | ] 23 | 24 | [[package]] 25 | name = "aes" 26 | version = "0.6.0" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" 29 | dependencies = [ 30 | "aes-soft", 31 | "aesni", 32 | "cipher 0.2.5", 33 | ] 34 | 35 | [[package]] 36 | name = "aes" 37 | version = "0.7.5" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" 40 | dependencies = [ 41 | "cfg-if", 42 | "cipher 0.3.0", 43 | "cpufeatures", 44 | "opaque-debug 0.3.0", 45 | ] 46 | 47 | [[package]] 48 | name = "aes-gcm" 49 | version = "0.8.0" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" 52 | dependencies = [ 53 | "aead", 54 | "aes 0.6.0", 55 | "cipher 0.2.5", 56 | "ctr 0.6.0", 57 | "ghash", 58 | "subtle", 59 | ] 60 | 61 | [[package]] 62 | name = "aes-soft" 63 | version = "0.6.4" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" 66 | dependencies = [ 67 | "cipher 0.2.5", 68 | "opaque-debug 0.3.0", 69 | ] 70 | 71 | [[package]] 72 | name = "aesni" 73 | version = "0.10.0" 74 | source = "registry+https://github.com/rust-lang/crates.io-index" 75 | checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" 76 | dependencies = [ 77 | "cipher 0.2.5", 78 | "opaque-debug 0.3.0", 79 | ] 80 | 81 | [[package]] 82 | name = "ahash" 83 | version = "0.7.6" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 86 | dependencies = [ 87 | "getrandom 0.2.8", 88 | "once_cell", 89 | "version_check", 90 | ] 91 | 92 | [[package]] 93 | name = "aho-corasick" 94 | version = "0.7.19" 95 | source = "registry+https://github.com/rust-lang/crates.io-index" 96 | checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" 97 | dependencies = [ 98 | "memchr", 99 | ] 100 | 101 | [[package]] 102 | name = "android_system_properties" 103 | version = "0.1.5" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 106 | dependencies = [ 107 | "libc", 108 | ] 109 | 110 | [[package]] 111 | name = "anyhow" 112 | version = "1.0.66" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" 115 | 116 | [[package]] 117 | name = "arrayvec" 118 | version = "0.5.2" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" 121 | 122 | [[package]] 123 | name = "ascii" 124 | version = "0.9.3" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" 127 | 128 | [[package]] 129 | name = "async-channel" 130 | version = "1.7.1" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" 133 | dependencies = [ 134 | "concurrent-queue 1.2.4", 135 | "event-listener", 136 | "futures-core", 137 | ] 138 | 139 | [[package]] 140 | name = "async-dup" 141 | version = "1.2.2" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "7427a12b8dc09291528cfb1da2447059adb4a257388c2acd6497a79d55cf6f7c" 144 | dependencies = [ 145 | "futures-io", 146 | "simple-mutex", 147 | ] 148 | 149 | [[package]] 150 | name = "async-executor" 151 | version = "1.5.0" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" 154 | dependencies = [ 155 | "async-lock", 156 | "async-task", 157 | "concurrent-queue 2.0.0", 158 | "fastrand", 159 | "futures-lite", 160 | "slab", 161 | ] 162 | 163 | [[package]] 164 | name = "async-global-executor" 165 | version = "2.3.1" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" 168 | dependencies = [ 169 | "async-channel", 170 | "async-executor", 171 | "async-io", 172 | "async-lock", 173 | "blocking", 174 | "futures-lite", 175 | "once_cell", 176 | ] 177 | 178 | [[package]] 179 | name = "async-graphql" 180 | version = "4.0.16" 181 | source = "registry+https://github.com/rust-lang/crates.io-index" 182 | checksum = "d9ed522678d412d77effe47b3c82314ac36952a35e6e852093dd48287c421f80" 183 | dependencies = [ 184 | "async-graphql-derive", 185 | "async-graphql-parser", 186 | "async-graphql-value", 187 | "async-stream", 188 | "async-trait", 189 | "base64 0.13.1", 190 | "bytes", 191 | "fnv", 192 | "futures-util", 193 | "http", 194 | "indexmap", 195 | "mime", 196 | "multer", 197 | "num-traits", 198 | "once_cell", 199 | "pin-project-lite", 200 | "regex", 201 | "serde", 202 | "serde_json", 203 | "serde_urlencoded", 204 | "static_assertions", 205 | "tempfile", 206 | "thiserror", 207 | "tracing", 208 | "tracing-futures", 209 | ] 210 | 211 | [[package]] 212 | name = "async-graphql-derive" 213 | version = "4.0.16" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "c121a894495d7d3fc3d4e15e0a9843e422e4d1d9e3c514d8062a1c94b35b005d" 216 | dependencies = [ 217 | "Inflector", 218 | "async-graphql-parser", 219 | "darling 0.14.2", 220 | "proc-macro-crate", 221 | "proc-macro2", 222 | "quote", 223 | "syn", 224 | "thiserror", 225 | ] 226 | 227 | [[package]] 228 | name = "async-graphql-parser" 229 | version = "4.0.16" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "6b6c386f398145c6180206c1869c2279f5a3d45db5be4e0266148c6ac5c6ad68" 232 | dependencies = [ 233 | "async-graphql-value", 234 | "pest", 235 | "serde", 236 | "serde_json", 237 | ] 238 | 239 | [[package]] 240 | name = "async-graphql-value" 241 | version = "4.0.16" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "7a941b499fead4a3fb5392cabf42446566d18c86313f69f2deab69560394d65f" 244 | dependencies = [ 245 | "bytes", 246 | "indexmap", 247 | "serde", 248 | "serde_json", 249 | ] 250 | 251 | [[package]] 252 | name = "async-h1" 253 | version = "2.3.3" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "8101020758a4fc3a7c326cb42aa99e9fa77cbfb76987c128ad956406fe1f70a7" 256 | dependencies = [ 257 | "async-channel", 258 | "async-dup", 259 | "async-std", 260 | "futures-core", 261 | "http-types", 262 | "httparse", 263 | "log", 264 | "pin-project", 265 | ] 266 | 267 | [[package]] 268 | name = "async-io" 269 | version = "1.10.0" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | checksum = "e8121296a9f05be7f34aa4196b1747243b3b62e048bb7906f644f3fbfc490cf7" 272 | dependencies = [ 273 | "async-lock", 274 | "autocfg", 275 | "concurrent-queue 1.2.4", 276 | "futures-lite", 277 | "libc", 278 | "log", 279 | "parking", 280 | "polling", 281 | "slab", 282 | "socket2", 283 | "waker-fn", 284 | "winapi", 285 | ] 286 | 287 | [[package]] 288 | name = "async-lock" 289 | version = "2.6.0" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" 292 | dependencies = [ 293 | "event-listener", 294 | "futures-lite", 295 | ] 296 | 297 | [[package]] 298 | name = "async-std" 299 | version = "1.12.0" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 302 | dependencies = [ 303 | "async-channel", 304 | "async-global-executor", 305 | "async-io", 306 | "async-lock", 307 | "crossbeam-utils", 308 | "futures-channel", 309 | "futures-core", 310 | "futures-io", 311 | "futures-lite", 312 | "gloo-timers", 313 | "kv-log-macro", 314 | "log", 315 | "memchr", 316 | "once_cell", 317 | "pin-project-lite", 318 | "pin-utils", 319 | "slab", 320 | "wasm-bindgen-futures", 321 | ] 322 | 323 | [[package]] 324 | name = "async-stream" 325 | version = "0.3.3" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" 328 | dependencies = [ 329 | "async-stream-impl", 330 | "futures-core", 331 | ] 332 | 333 | [[package]] 334 | name = "async-stream-impl" 335 | version = "0.3.3" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" 338 | dependencies = [ 339 | "proc-macro2", 340 | "quote", 341 | "syn", 342 | ] 343 | 344 | [[package]] 345 | name = "async-task" 346 | version = "4.3.0" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" 349 | 350 | [[package]] 351 | name = "async-tls" 352 | version = "0.10.0" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | checksum = "d85a97c4a0ecce878efd3f945f119c78a646d8975340bca0398f9bb05c30cc52" 355 | dependencies = [ 356 | "futures-core", 357 | "futures-io", 358 | "rustls 0.18.1", 359 | "webpki", 360 | "webpki-roots", 361 | ] 362 | 363 | [[package]] 364 | name = "async-trait" 365 | version = "0.1.58" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "1e805d94e6b5001b651426cf4cd446b1ab5f319d27bab5c644f61de0a804360c" 368 | dependencies = [ 369 | "proc-macro2", 370 | "quote", 371 | "syn", 372 | ] 373 | 374 | [[package]] 375 | name = "atomic-waker" 376 | version = "1.0.0" 377 | source = "registry+https://github.com/rust-lang/crates.io-index" 378 | checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" 379 | 380 | [[package]] 381 | name = "atty" 382 | version = "0.2.14" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 385 | dependencies = [ 386 | "hermit-abi", 387 | "libc", 388 | "winapi", 389 | ] 390 | 391 | [[package]] 392 | name = "autocfg" 393 | version = "1.1.0" 394 | source = "registry+https://github.com/rust-lang/crates.io-index" 395 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 396 | 397 | [[package]] 398 | name = "axum" 399 | version = "0.5.17" 400 | source = "registry+https://github.com/rust-lang/crates.io-index" 401 | checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43" 402 | dependencies = [ 403 | "async-trait", 404 | "axum-core", 405 | "bitflags", 406 | "bytes", 407 | "futures-util", 408 | "http", 409 | "http-body", 410 | "hyper", 411 | "itoa", 412 | "matchit", 413 | "memchr", 414 | "mime", 415 | "percent-encoding", 416 | "pin-project-lite", 417 | "serde", 418 | "serde_json", 419 | "serde_urlencoded", 420 | "sync_wrapper", 421 | "tokio", 422 | "tower", 423 | "tower-http", 424 | "tower-layer", 425 | "tower-service", 426 | ] 427 | 428 | [[package]] 429 | name = "axum-core" 430 | version = "0.2.9" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "37e5939e02c56fecd5c017c37df4238c0a839fa76b7f97acdd7efb804fd181cc" 433 | dependencies = [ 434 | "async-trait", 435 | "bytes", 436 | "futures-util", 437 | "http", 438 | "http-body", 439 | "mime", 440 | "tower-layer", 441 | "tower-service", 442 | ] 443 | 444 | [[package]] 445 | name = "base-x" 446 | version = "0.2.11" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 449 | 450 | [[package]] 451 | name = "base16ct" 452 | version = "0.1.1" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" 455 | 456 | [[package]] 457 | name = "base58" 458 | version = "0.1.0" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" 461 | 462 | [[package]] 463 | name = "base58check" 464 | version = "0.1.0" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b" 467 | dependencies = [ 468 | "base58", 469 | "sha2 0.8.2", 470 | ] 471 | 472 | [[package]] 473 | name = "base64" 474 | version = "0.12.3" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 477 | 478 | [[package]] 479 | name = "base64" 480 | version = "0.13.1" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 483 | 484 | [[package]] 485 | name = "base64ct" 486 | version = "1.0.1" 487 | source = "registry+https://github.com/rust-lang/crates.io-index" 488 | checksum = "8a32fd6af2b5827bce66c29053ba0e7c42b9dcab01835835058558c10851a46b" 489 | 490 | [[package]] 491 | name = "bech32" 492 | version = "0.7.3" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" 495 | 496 | [[package]] 497 | name = "bech32" 498 | version = "0.9.1" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" 501 | 502 | [[package]] 503 | name = "bincode" 504 | version = "1.3.3" 505 | source = "registry+https://github.com/rust-lang/crates.io-index" 506 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 507 | dependencies = [ 508 | "serde", 509 | ] 510 | 511 | [[package]] 512 | name = "bitflags" 513 | version = "1.3.2" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 516 | 517 | [[package]] 518 | name = "bitvec" 519 | version = "0.17.4" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" 522 | dependencies = [ 523 | "either", 524 | "radium", 525 | ] 526 | 527 | [[package]] 528 | name = "blake2" 529 | version = "0.10.5" 530 | source = "registry+https://github.com/rust-lang/crates.io-index" 531 | checksum = "b12e5fd123190ce1c2e559308a94c9bacad77907d4c6005d9e58fe1a0689e55e" 532 | dependencies = [ 533 | "digest 0.10.6", 534 | ] 535 | 536 | [[package]] 537 | name = "block-buffer" 538 | version = "0.7.3" 539 | source = "registry+https://github.com/rust-lang/crates.io-index" 540 | checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 541 | dependencies = [ 542 | "block-padding 0.1.5", 543 | "byte-tools", 544 | "byteorder", 545 | "generic-array 0.12.4", 546 | ] 547 | 548 | [[package]] 549 | name = "block-buffer" 550 | version = "0.9.0" 551 | source = "registry+https://github.com/rust-lang/crates.io-index" 552 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 553 | dependencies = [ 554 | "block-padding 0.2.1", 555 | "generic-array 0.14.6", 556 | ] 557 | 558 | [[package]] 559 | name = "block-buffer" 560 | version = "0.10.3" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" 563 | dependencies = [ 564 | "generic-array 0.14.6", 565 | ] 566 | 567 | [[package]] 568 | name = "block-padding" 569 | version = "0.1.5" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 572 | dependencies = [ 573 | "byte-tools", 574 | ] 575 | 576 | [[package]] 577 | name = "block-padding" 578 | version = "0.2.1" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 581 | 582 | [[package]] 583 | name = "blocking" 584 | version = "1.2.0" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" 587 | dependencies = [ 588 | "async-channel", 589 | "async-task", 590 | "atomic-waker", 591 | "fastrand", 592 | "futures-lite", 593 | "once_cell", 594 | ] 595 | 596 | [[package]] 597 | name = "borrown" 598 | version = "0.1.0" 599 | source = "registry+https://github.com/rust-lang/crates.io-index" 600 | checksum = "008b57b368e638ed60664350ea4f2f3647a0192173478df2736cc255a025a796" 601 | 602 | [[package]] 603 | name = "bs58" 604 | version = "0.4.0" 605 | source = "registry+https://github.com/rust-lang/crates.io-index" 606 | checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" 607 | 608 | [[package]] 609 | name = "bumpalo" 610 | version = "3.11.1" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" 613 | 614 | [[package]] 615 | name = "byte-tools" 616 | version = "0.3.1" 617 | source = "registry+https://github.com/rust-lang/crates.io-index" 618 | checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 619 | 620 | [[package]] 621 | name = "byteorder" 622 | version = "1.4.3" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 625 | 626 | [[package]] 627 | name = "bytes" 628 | version = "1.2.1" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" 631 | dependencies = [ 632 | "serde", 633 | ] 634 | 635 | [[package]] 636 | name = "cache-padded" 637 | version = "1.2.0" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" 640 | 641 | [[package]] 642 | name = "cc" 643 | version = "1.0.76" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" 646 | 647 | [[package]] 648 | name = "cfg-if" 649 | version = "1.0.0" 650 | source = "registry+https://github.com/rust-lang/crates.io-index" 651 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 652 | 653 | [[package]] 654 | name = "chrono" 655 | version = "0.4.23" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" 658 | dependencies = [ 659 | "iana-time-zone", 660 | "js-sys", 661 | "num-integer", 662 | "num-traits", 663 | "time 0.1.44", 664 | "wasm-bindgen", 665 | "winapi", 666 | ] 667 | 668 | [[package]] 669 | name = "cipher" 670 | version = "0.2.5" 671 | source = "registry+https://github.com/rust-lang/crates.io-index" 672 | checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" 673 | dependencies = [ 674 | "generic-array 0.14.6", 675 | ] 676 | 677 | [[package]] 678 | name = "cipher" 679 | version = "0.3.0" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" 682 | dependencies = [ 683 | "generic-array 0.14.6", 684 | ] 685 | 686 | [[package]] 687 | name = "clap" 688 | version = "3.2.23" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" 691 | dependencies = [ 692 | "atty", 693 | "bitflags", 694 | "clap_derive", 695 | "clap_lex", 696 | "indexmap", 697 | "once_cell", 698 | "strsim", 699 | "termcolor", 700 | "textwrap", 701 | ] 702 | 703 | [[package]] 704 | name = "clap_derive" 705 | version = "3.2.18" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" 708 | dependencies = [ 709 | "heck 0.4.0", 710 | "proc-macro-error", 711 | "proc-macro2", 712 | "quote", 713 | "syn", 714 | ] 715 | 716 | [[package]] 717 | name = "clap_lex" 718 | version = "0.2.4" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" 721 | dependencies = [ 722 | "os_str_bytes", 723 | ] 724 | 725 | [[package]] 726 | name = "codespan-reporting" 727 | version = "0.11.1" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 730 | dependencies = [ 731 | "termcolor", 732 | "unicode-width", 733 | ] 734 | 735 | [[package]] 736 | name = "coins-bip32" 737 | version = "0.7.0" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560" 740 | dependencies = [ 741 | "bincode", 742 | "bs58", 743 | "coins-core", 744 | "digest 0.10.6", 745 | "getrandom 0.2.8", 746 | "hmac 0.12.1", 747 | "k256", 748 | "lazy_static", 749 | "serde", 750 | "sha2 0.10.6", 751 | "thiserror", 752 | ] 753 | 754 | [[package]] 755 | name = "coins-bip39" 756 | version = "0.7.0" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171" 759 | dependencies = [ 760 | "bitvec", 761 | "coins-bip32", 762 | "getrandom 0.2.8", 763 | "hex", 764 | "hmac 0.12.1", 765 | "pbkdf2 0.11.0", 766 | "rand 0.8.5", 767 | "sha2 0.10.6", 768 | "thiserror", 769 | ] 770 | 771 | [[package]] 772 | name = "coins-core" 773 | version = "0.7.0" 774 | source = "registry+https://github.com/rust-lang/crates.io-index" 775 | checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617" 776 | dependencies = [ 777 | "base58check", 778 | "base64 0.12.3", 779 | "bech32 0.7.3", 780 | "blake2", 781 | "digest 0.10.6", 782 | "generic-array 0.14.6", 783 | "hex", 784 | "ripemd", 785 | "serde", 786 | "serde_derive", 787 | "sha2 0.10.6", 788 | "sha3 0.10.6", 789 | "thiserror", 790 | ] 791 | 792 | [[package]] 793 | name = "combine" 794 | version = "3.8.1" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" 797 | dependencies = [ 798 | "ascii", 799 | "byteorder", 800 | "either", 801 | "memchr", 802 | "unreachable", 803 | ] 804 | 805 | [[package]] 806 | name = "concurrent-queue" 807 | version = "1.2.4" 808 | source = "registry+https://github.com/rust-lang/crates.io-index" 809 | checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" 810 | dependencies = [ 811 | "cache-padded", 812 | ] 813 | 814 | [[package]] 815 | name = "concurrent-queue" 816 | version = "2.0.0" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "bd7bef69dc86e3c610e4e7aed41035e2a7ed12e72dd7530f61327a6579a4390b" 819 | dependencies = [ 820 | "crossbeam-utils", 821 | ] 822 | 823 | [[package]] 824 | name = "config" 825 | version = "0.10.1" 826 | source = "registry+https://github.com/rust-lang/crates.io-index" 827 | checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3" 828 | dependencies = [ 829 | "lazy_static", 830 | "nom", 831 | "serde", 832 | ] 833 | 834 | [[package]] 835 | name = "const-oid" 836 | version = "0.7.1" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" 839 | 840 | [[package]] 841 | name = "const-oid" 842 | version = "0.9.1" 843 | source = "registry+https://github.com/rust-lang/crates.io-index" 844 | checksum = "cec318a675afcb6a1ea1d4340e2d377e56e47c266f28043ceccbf4412ddfdd3b" 845 | 846 | [[package]] 847 | name = "const_fn" 848 | version = "0.4.9" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" 851 | 852 | [[package]] 853 | name = "convert_case" 854 | version = "0.4.0" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 857 | 858 | [[package]] 859 | name = "cookie" 860 | version = "0.14.4" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" 863 | dependencies = [ 864 | "aes-gcm", 865 | "base64 0.13.1", 866 | "hkdf", 867 | "hmac 0.10.1", 868 | "percent-encoding", 869 | "rand 0.8.5", 870 | "sha2 0.9.9", 871 | "time 0.2.27", 872 | "version_check", 873 | ] 874 | 875 | [[package]] 876 | name = "core-foundation" 877 | version = "0.9.3" 878 | source = "registry+https://github.com/rust-lang/crates.io-index" 879 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 880 | dependencies = [ 881 | "core-foundation-sys", 882 | "libc", 883 | ] 884 | 885 | [[package]] 886 | name = "core-foundation-sys" 887 | version = "0.8.3" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 890 | 891 | [[package]] 892 | name = "cpufeatures" 893 | version = "0.2.5" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 896 | dependencies = [ 897 | "libc", 898 | ] 899 | 900 | [[package]] 901 | name = "cpuid-bool" 902 | version = "0.2.0" 903 | source = "registry+https://github.com/rust-lang/crates.io-index" 904 | checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" 905 | 906 | [[package]] 907 | name = "crossbeam-queue" 908 | version = "0.3.6" 909 | source = "registry+https://github.com/rust-lang/crates.io-index" 910 | checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" 911 | dependencies = [ 912 | "cfg-if", 913 | "crossbeam-utils", 914 | ] 915 | 916 | [[package]] 917 | name = "crossbeam-utils" 918 | version = "0.8.12" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" 921 | dependencies = [ 922 | "cfg-if", 923 | ] 924 | 925 | [[package]] 926 | name = "crypto-bigint" 927 | version = "0.3.2" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" 930 | dependencies = [ 931 | "generic-array 0.14.6", 932 | "rand_core 0.6.4", 933 | "subtle", 934 | "zeroize", 935 | ] 936 | 937 | [[package]] 938 | name = "crypto-bigint" 939 | version = "0.4.9" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" 942 | dependencies = [ 943 | "generic-array 0.14.6", 944 | "rand_core 0.6.4", 945 | "subtle", 946 | "zeroize", 947 | ] 948 | 949 | [[package]] 950 | name = "crypto-common" 951 | version = "0.1.6" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 954 | dependencies = [ 955 | "generic-array 0.14.6", 956 | "typenum", 957 | ] 958 | 959 | [[package]] 960 | name = "crypto-mac" 961 | version = "0.10.1" 962 | source = "registry+https://github.com/rust-lang/crates.io-index" 963 | checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" 964 | dependencies = [ 965 | "generic-array 0.14.6", 966 | "subtle", 967 | ] 968 | 969 | [[package]] 970 | name = "crypto-mac" 971 | version = "0.11.1" 972 | source = "registry+https://github.com/rust-lang/crates.io-index" 973 | checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" 974 | dependencies = [ 975 | "generic-array 0.14.6", 976 | "subtle", 977 | ] 978 | 979 | [[package]] 980 | name = "ct-logs" 981 | version = "0.8.0" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" 984 | dependencies = [ 985 | "sct", 986 | ] 987 | 988 | [[package]] 989 | name = "ctor" 990 | version = "0.1.26" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 993 | dependencies = [ 994 | "quote", 995 | "syn", 996 | ] 997 | 998 | [[package]] 999 | name = "ctr" 1000 | version = "0.6.0" 1001 | source = "registry+https://github.com/rust-lang/crates.io-index" 1002 | checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" 1003 | dependencies = [ 1004 | "cipher 0.2.5", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "ctr" 1009 | version = "0.7.0" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "a232f92a03f37dd7d7dd2adc67166c77e9cd88de5b019b9a9eecfaeaf7bfd481" 1012 | dependencies = [ 1013 | "cipher 0.3.0", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "cxx" 1018 | version = "1.0.81" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888" 1021 | dependencies = [ 1022 | "cc", 1023 | "cxxbridge-flags", 1024 | "cxxbridge-macro", 1025 | "link-cplusplus", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "cxx-build" 1030 | version = "1.0.81" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3" 1033 | dependencies = [ 1034 | "cc", 1035 | "codespan-reporting", 1036 | "once_cell", 1037 | "proc-macro2", 1038 | "quote", 1039 | "scratch", 1040 | "syn", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "cxxbridge-flags" 1045 | version = "1.0.81" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f" 1048 | 1049 | [[package]] 1050 | name = "cxxbridge-macro" 1051 | version = "1.0.81" 1052 | source = "registry+https://github.com/rust-lang/crates.io-index" 1053 | checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704" 1054 | dependencies = [ 1055 | "proc-macro2", 1056 | "quote", 1057 | "syn", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "cynic" 1062 | version = "1.0.0" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "9a086fdece2d6206e52894d978a09b09efca1e61ac59d69a934eab74d8d9ee40" 1065 | dependencies = [ 1066 | "cynic-proc-macros", 1067 | "json-decode", 1068 | "serde", 1069 | "serde_json", 1070 | "surf", 1071 | "thiserror", 1072 | ] 1073 | 1074 | [[package]] 1075 | name = "cynic-codegen" 1076 | version = "1.0.0" 1077 | source = "registry+https://github.com/rust-lang/crates.io-index" 1078 | checksum = "dd9f0852fe3d3637d4dccb4b69e5a8f881214fc38907a528385ff71cd7b15c3e" 1079 | dependencies = [ 1080 | "Inflector", 1081 | "darling 0.13.4", 1082 | "graphql-parser", 1083 | "lazy_static", 1084 | "proc-macro2", 1085 | "quote", 1086 | "strsim", 1087 | "syn", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "cynic-proc-macros" 1092 | version = "1.0.0" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | checksum = "1cabdef46a6ff3c06e337a9c0c6b7d2f71aefae4ab582ed319a0d454ea1085f9" 1095 | dependencies = [ 1096 | "cynic-codegen", 1097 | "syn", 1098 | ] 1099 | 1100 | [[package]] 1101 | name = "darling" 1102 | version = "0.13.4" 1103 | source = "registry+https://github.com/rust-lang/crates.io-index" 1104 | checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" 1105 | dependencies = [ 1106 | "darling_core 0.13.4", 1107 | "darling_macro 0.13.4", 1108 | ] 1109 | 1110 | [[package]] 1111 | name = "darling" 1112 | version = "0.14.2" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" 1115 | dependencies = [ 1116 | "darling_core 0.14.2", 1117 | "darling_macro 0.14.2", 1118 | ] 1119 | 1120 | [[package]] 1121 | name = "darling_core" 1122 | version = "0.13.4" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" 1125 | dependencies = [ 1126 | "fnv", 1127 | "ident_case", 1128 | "proc-macro2", 1129 | "quote", 1130 | "strsim", 1131 | "syn", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "darling_core" 1136 | version = "0.14.2" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" 1139 | dependencies = [ 1140 | "fnv", 1141 | "ident_case", 1142 | "proc-macro2", 1143 | "quote", 1144 | "strsim", 1145 | "syn", 1146 | ] 1147 | 1148 | [[package]] 1149 | name = "darling_macro" 1150 | version = "0.13.4" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" 1153 | dependencies = [ 1154 | "darling_core 0.13.4", 1155 | "quote", 1156 | "syn", 1157 | ] 1158 | 1159 | [[package]] 1160 | name = "darling_macro" 1161 | version = "0.14.2" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" 1164 | dependencies = [ 1165 | "darling_core 0.14.2", 1166 | "quote", 1167 | "syn", 1168 | ] 1169 | 1170 | [[package]] 1171 | name = "dashmap" 1172 | version = "5.4.0" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" 1175 | dependencies = [ 1176 | "cfg-if", 1177 | "hashbrown", 1178 | "lock_api", 1179 | "once_cell", 1180 | "parking_lot_core 0.9.4", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "deadpool" 1185 | version = "0.7.0" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "3d126179d86aee4556e54f5f3c6bf6d9884e7cc52cef82f77ee6f90a7747616d" 1188 | dependencies = [ 1189 | "async-trait", 1190 | "config", 1191 | "crossbeam-queue", 1192 | "num_cpus", 1193 | "serde", 1194 | "tokio", 1195 | ] 1196 | 1197 | [[package]] 1198 | name = "der" 1199 | version = "0.5.1" 1200 | source = "registry+https://github.com/rust-lang/crates.io-index" 1201 | checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" 1202 | dependencies = [ 1203 | "const-oid 0.7.1", 1204 | ] 1205 | 1206 | [[package]] 1207 | name = "der" 1208 | version = "0.6.0" 1209 | source = "registry+https://github.com/rust-lang/crates.io-index" 1210 | checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" 1211 | dependencies = [ 1212 | "const-oid 0.9.1", 1213 | "zeroize", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "derivative" 1218 | version = "2.2.0" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 1221 | dependencies = [ 1222 | "proc-macro2", 1223 | "quote", 1224 | "syn", 1225 | ] 1226 | 1227 | [[package]] 1228 | name = "derive_more" 1229 | version = "0.99.17" 1230 | source = "registry+https://github.com/rust-lang/crates.io-index" 1231 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 1232 | dependencies = [ 1233 | "convert_case", 1234 | "proc-macro2", 1235 | "quote", 1236 | "rustc_version 0.4.0", 1237 | "syn", 1238 | ] 1239 | 1240 | [[package]] 1241 | name = "digest" 1242 | version = "0.8.1" 1243 | source = "registry+https://github.com/rust-lang/crates.io-index" 1244 | checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 1245 | dependencies = [ 1246 | "generic-array 0.12.4", 1247 | ] 1248 | 1249 | [[package]] 1250 | name = "digest" 1251 | version = "0.9.0" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 1254 | dependencies = [ 1255 | "generic-array 0.14.6", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "digest" 1260 | version = "0.10.6" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 1263 | dependencies = [ 1264 | "block-buffer 0.10.3", 1265 | "crypto-common", 1266 | "subtle", 1267 | ] 1268 | 1269 | [[package]] 1270 | name = "dirs" 1271 | version = "4.0.0" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 1274 | dependencies = [ 1275 | "dirs-sys", 1276 | ] 1277 | 1278 | [[package]] 1279 | name = "dirs-sys" 1280 | version = "0.3.7" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 1283 | dependencies = [ 1284 | "libc", 1285 | "redox_users", 1286 | "winapi", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "discard" 1291 | version = "1.0.4" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" 1294 | 1295 | [[package]] 1296 | name = "dtoa" 1297 | version = "1.0.4" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "f8a6eee2d5d0d113f015688310da018bd1d864d86bd567c8fca9c266889e1bfa" 1300 | 1301 | [[package]] 1302 | name = "ecdsa" 1303 | version = "0.14.8" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" 1306 | dependencies = [ 1307 | "der 0.6.0", 1308 | "elliptic-curve 0.12.3", 1309 | "rfc6979", 1310 | "signature", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "either" 1315 | version = "1.8.0" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" 1318 | 1319 | [[package]] 1320 | name = "elliptic-curve" 1321 | version = "0.11.12" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" 1324 | dependencies = [ 1325 | "base16ct", 1326 | "crypto-bigint 0.3.2", 1327 | "der 0.5.1", 1328 | "generic-array 0.14.6", 1329 | "rand_core 0.6.4", 1330 | "subtle", 1331 | "zeroize", 1332 | ] 1333 | 1334 | [[package]] 1335 | name = "elliptic-curve" 1336 | version = "0.12.3" 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" 1338 | checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" 1339 | dependencies = [ 1340 | "base16ct", 1341 | "crypto-bigint 0.4.9", 1342 | "der 0.6.0", 1343 | "digest 0.10.6", 1344 | "ff", 1345 | "generic-array 0.14.6", 1346 | "group", 1347 | "pkcs8", 1348 | "rand_core 0.6.4", 1349 | "sec1", 1350 | "subtle", 1351 | "zeroize", 1352 | ] 1353 | 1354 | [[package]] 1355 | name = "encoding_rs" 1356 | version = "0.8.31" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" 1359 | dependencies = [ 1360 | "cfg-if", 1361 | ] 1362 | 1363 | [[package]] 1364 | name = "enum-iterator" 1365 | version = "1.2.0" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "91a4ec26efacf4aeff80887a175a419493cb6f8b5480d26387eb0bd038976187" 1368 | dependencies = [ 1369 | "enum-iterator-derive", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "enum-iterator-derive" 1374 | version = "1.1.0" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "828de45d0ca18782232dfb8f3ea9cc428e8ced380eb26a520baaacfc70de39ce" 1377 | dependencies = [ 1378 | "proc-macro2", 1379 | "quote", 1380 | "syn", 1381 | ] 1382 | 1383 | [[package]] 1384 | name = "env_logger" 1385 | version = "0.9.3" 1386 | source = "registry+https://github.com/rust-lang/crates.io-index" 1387 | checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" 1388 | dependencies = [ 1389 | "atty", 1390 | "humantime", 1391 | "log", 1392 | "regex", 1393 | "termcolor", 1394 | ] 1395 | 1396 | [[package]] 1397 | name = "eth-keystore" 1398 | version = "0.3.0" 1399 | source = "registry+https://github.com/rust-lang/crates.io-index" 1400 | checksum = "d47d900a7dea08593d398104f8288e37858b0ad714c8d08cd03fdb86563e6402" 1401 | dependencies = [ 1402 | "aes 0.7.5", 1403 | "ctr 0.7.0", 1404 | "digest 0.9.0", 1405 | "hex", 1406 | "hmac 0.11.0", 1407 | "pbkdf2 0.8.0", 1408 | "rand 0.8.5", 1409 | "scrypt", 1410 | "serde", 1411 | "serde_json", 1412 | "sha2 0.9.9", 1413 | "sha3 0.9.1", 1414 | "thiserror", 1415 | "uuid 0.8.2", 1416 | ] 1417 | 1418 | [[package]] 1419 | name = "event-listener" 1420 | version = "2.5.3" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 1423 | 1424 | [[package]] 1425 | name = "eventsource-client" 1426 | version = "0.10.2" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | checksum = "9146112ee3ce031aa5aebe3e049e10b1d353b9c7630cc6be488c2c62cc5d9c42" 1429 | dependencies = [ 1430 | "futures", 1431 | "hyper", 1432 | "hyper-rustls", 1433 | "hyper-timeout", 1434 | "log", 1435 | "pin-project", 1436 | "tokio", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "fake-simd" 1441 | version = "0.1.2" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 1444 | 1445 | [[package]] 1446 | name = "fastrand" 1447 | version = "1.8.0" 1448 | source = "registry+https://github.com/rust-lang/crates.io-index" 1449 | checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" 1450 | dependencies = [ 1451 | "instant", 1452 | ] 1453 | 1454 | [[package]] 1455 | name = "ff" 1456 | version = "0.12.1" 1457 | source = "registry+https://github.com/rust-lang/crates.io-index" 1458 | checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" 1459 | dependencies = [ 1460 | "rand_core 0.6.4", 1461 | "subtle", 1462 | ] 1463 | 1464 | [[package]] 1465 | name = "fnv" 1466 | version = "1.0.7" 1467 | source = "registry+https://github.com/rust-lang/crates.io-index" 1468 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1469 | 1470 | [[package]] 1471 | name = "form_urlencoded" 1472 | version = "1.1.0" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 1475 | dependencies = [ 1476 | "percent-encoding", 1477 | ] 1478 | 1479 | [[package]] 1480 | name = "fuel-asm" 1481 | version = "0.10.0" 1482 | source = "registry+https://github.com/rust-lang/crates.io-index" 1483 | checksum = "781568e982a90f25bfaf019196ca135fdf58a1826a8e68fbb1af2ad8b3c2a6fc" 1484 | dependencies = [ 1485 | "fuel-types", 1486 | "serde", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "fuel-block-executor" 1491 | version = "0.14.1" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "09c33fdcbe2dae0de5f0d948de5fbd5e7fbcc82d29141dd75674a66dba93ee15" 1494 | dependencies = [ 1495 | "anyhow", 1496 | "fuel-core-interfaces", 1497 | "tokio", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "fuel-block-importer" 1502 | version = "0.14.1" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "14b2338b8568545ad3abe2e46243072b0d4580e8aded2cc3d4e3f9d915aebbe0" 1505 | dependencies = [ 1506 | "anyhow", 1507 | "fuel-core-interfaces", 1508 | "parking_lot 0.12.1", 1509 | "tokio", 1510 | ] 1511 | 1512 | [[package]] 1513 | name = "fuel-block-producer" 1514 | version = "0.14.1" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "d5fa36e7d0ff0d8417462e13cfc4200490b42358b2356d3abbfea50f7591da1e" 1517 | dependencies = [ 1518 | "anyhow", 1519 | "async-trait", 1520 | "fuel-core-interfaces", 1521 | "parking_lot 0.12.1", 1522 | "tokio", 1523 | "tracing", 1524 | ] 1525 | 1526 | [[package]] 1527 | name = "fuel-chain-config" 1528 | version = "0.14.1" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | checksum = "f56056dc76e152c92f82d35a5ed2354f6d0f1a306daf5ec26d970a72879edbce" 1531 | dependencies = [ 1532 | "anyhow", 1533 | "fuel-core-interfaces", 1534 | "fuel-poa-coordinator", 1535 | "hex", 1536 | "itertools", 1537 | "rand 0.8.5", 1538 | "ron", 1539 | "serde", 1540 | "serde_json", 1541 | "serde_with", 1542 | "tracing", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "fuel-core" 1547 | version = "0.14.1" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "4a7f750a7ca612ce7ded3647e193211326e8b8051920fdf7bbd965f66427b8e7" 1550 | dependencies = [ 1551 | "anyhow", 1552 | "async-graphql", 1553 | "async-trait", 1554 | "axum", 1555 | "bech32 0.9.1", 1556 | "bincode", 1557 | "byteorder", 1558 | "clap", 1559 | "derive_more", 1560 | "dirs", 1561 | "enum-iterator", 1562 | "env_logger", 1563 | "fuel-block-executor", 1564 | "fuel-block-importer", 1565 | "fuel-block-producer", 1566 | "fuel-chain-config", 1567 | "fuel-core-bft", 1568 | "fuel-core-interfaces", 1569 | "fuel-poa-coordinator", 1570 | "fuel-sync", 1571 | "fuel-txpool", 1572 | "futures", 1573 | "hex", 1574 | "itertools", 1575 | "lazy_static", 1576 | "num_cpus", 1577 | "rand 0.8.5", 1578 | "serde", 1579 | "serde_json", 1580 | "serde_with", 1581 | "strum 0.24.1", 1582 | "strum_macros 0.24.3", 1583 | "tempfile", 1584 | "thiserror", 1585 | "tokio", 1586 | "tokio-stream", 1587 | "tower-http", 1588 | "tower-layer", 1589 | "tracing", 1590 | "tracing-subscriber", 1591 | "url", 1592 | "uuid 1.2.2", 1593 | ] 1594 | 1595 | [[package]] 1596 | name = "fuel-core-bft" 1597 | version = "0.14.1" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "5de74a06987fe916daa761151fc5a6c945a3d3601ccc3e30c9303f136e2cbd7f" 1600 | dependencies = [ 1601 | "anyhow", 1602 | "fuel-core-interfaces", 1603 | "parking_lot 0.12.1", 1604 | "tokio", 1605 | ] 1606 | 1607 | [[package]] 1608 | name = "fuel-core-interfaces" 1609 | version = "0.14.1" 1610 | source = "registry+https://github.com/rust-lang/crates.io-index" 1611 | checksum = "1b9a3b068c3990cbae13131ac8fa53aaea91a8bd22e3c46463d5c9022e885dd7" 1612 | dependencies = [ 1613 | "anyhow", 1614 | "async-trait", 1615 | "derive_more", 1616 | "fuel-vm", 1617 | "futures", 1618 | "lazy_static", 1619 | "parking_lot 0.12.1", 1620 | "secrecy", 1621 | "serde", 1622 | "tai64", 1623 | "thiserror", 1624 | "tokio", 1625 | "zeroize", 1626 | ] 1627 | 1628 | [[package]] 1629 | name = "fuel-crypto" 1630 | version = "0.6.2" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "365c114728301916a58c932c304feb8836c51f65e0153a3f2157bf6cbb4c32ef" 1633 | dependencies = [ 1634 | "borrown", 1635 | "coins-bip32", 1636 | "coins-bip39", 1637 | "fuel-types", 1638 | "lazy_static", 1639 | "rand 0.8.5", 1640 | "secp256k1", 1641 | "serde", 1642 | "sha2 0.10.6", 1643 | "zeroize", 1644 | ] 1645 | 1646 | [[package]] 1647 | name = "fuel-gql-client" 1648 | version = "0.14.1" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | checksum = "04c4c4a52e2dee7e026307877d79b0bdacbb02cb155a01c2da2e56dc7838459a" 1651 | dependencies = [ 1652 | "anyhow", 1653 | "clap", 1654 | "cynic", 1655 | "derive_more", 1656 | "eventsource-client", 1657 | "fuel-vm", 1658 | "futures", 1659 | "futures-timer", 1660 | "hex", 1661 | "itertools", 1662 | "serde", 1663 | "serde_json", 1664 | "surf", 1665 | "tai64", 1666 | "thiserror", 1667 | ] 1668 | 1669 | [[package]] 1670 | name = "fuel-merkle" 1671 | version = "0.4.1" 1672 | source = "registry+https://github.com/rust-lang/crates.io-index" 1673 | checksum = "12e56cc8be0a2ea7cfb30ae4696bf5f658a9447df1b32af699b6273a11fdcfa3" 1674 | dependencies = [ 1675 | "digest 0.10.6", 1676 | "fuel-storage", 1677 | "hashbrown", 1678 | "hex", 1679 | "sha2 0.10.6", 1680 | "thiserror", 1681 | ] 1682 | 1683 | [[package]] 1684 | name = "fuel-metrics" 1685 | version = "0.14.1" 1686 | source = "registry+https://github.com/rust-lang/crates.io-index" 1687 | checksum = "61077b7459292ddf72dad4a9bbf0f961779a83c6fc228947503c2aea5851d988" 1688 | dependencies = [ 1689 | "anyhow", 1690 | "axum", 1691 | "lazy_static", 1692 | "once_cell", 1693 | "prometheus-client", 1694 | ] 1695 | 1696 | [[package]] 1697 | name = "fuel-poa-coordinator" 1698 | version = "0.14.1" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "49262d99abab91616534a9ef2bab5d55b72c9076f1c8555c93cfdba293a14a23" 1701 | dependencies = [ 1702 | "anyhow", 1703 | "fuel-core-interfaces", 1704 | "humantime-serde", 1705 | "parking_lot 0.12.1", 1706 | "serde", 1707 | "tokio", 1708 | "tracing", 1709 | ] 1710 | 1711 | [[package]] 1712 | name = "fuel-storage" 1713 | version = "0.3.0" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "b0f895423d18472d60eb078cf949608ff3fe6e42e91d41b85993b11528d2c4c3" 1716 | 1717 | [[package]] 1718 | name = "fuel-sync" 1719 | version = "0.14.1" 1720 | source = "registry+https://github.com/rust-lang/crates.io-index" 1721 | checksum = "5a59af943f25281ceb6771c37f531bfc691d9fe4b38eedadb9933d2de18abb17" 1722 | dependencies = [ 1723 | "anyhow", 1724 | "fuel-core-interfaces", 1725 | "parking_lot 0.12.1", 1726 | "tokio", 1727 | ] 1728 | 1729 | [[package]] 1730 | name = "fuel-tx" 1731 | version = "0.23.1" 1732 | source = "registry+https://github.com/rust-lang/crates.io-index" 1733 | checksum = "dffd148866f191397915b4a407455ece148197890ce5cf86d4b3f1eedcc7f35e" 1734 | dependencies = [ 1735 | "bitflags", 1736 | "derivative", 1737 | "fuel-asm", 1738 | "fuel-crypto", 1739 | "fuel-merkle", 1740 | "fuel-types", 1741 | "itertools", 1742 | "num-integer", 1743 | "rand 0.8.5", 1744 | "serde", 1745 | "serde_json", 1746 | ] 1747 | 1748 | [[package]] 1749 | name = "fuel-txpool" 1750 | version = "0.14.1" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "d22721a7c9f3cbcfeeea939d90e1a56dd24d6066ef5b9a3ffd3780f3240491a6" 1753 | dependencies = [ 1754 | "anyhow", 1755 | "async-trait", 1756 | "chrono", 1757 | "fuel-chain-config", 1758 | "fuel-core-interfaces", 1759 | "fuel-metrics", 1760 | "futures", 1761 | "parking_lot 0.11.2", 1762 | "thiserror", 1763 | "tokio", 1764 | "tracing", 1765 | ] 1766 | 1767 | [[package]] 1768 | name = "fuel-types" 1769 | version = "0.5.3" 1770 | source = "registry+https://github.com/rust-lang/crates.io-index" 1771 | checksum = "403dcac5f0788a8fbdb6cfa0e5690dd4fe4278648da674d7e430711abf90b570" 1772 | dependencies = [ 1773 | "rand 0.8.5", 1774 | "serde", 1775 | ] 1776 | 1777 | [[package]] 1778 | name = "fuel-vm" 1779 | version = "0.22.5" 1780 | source = "registry+https://github.com/rust-lang/crates.io-index" 1781 | checksum = "f8d4cbdd4d7d937e7a0abe8be9508c8480b4ef2ba2534ba169ff56e3ecdaf93b" 1782 | dependencies = [ 1783 | "fuel-asm", 1784 | "fuel-crypto", 1785 | "fuel-merkle", 1786 | "fuel-storage", 1787 | "fuel-tx", 1788 | "fuel-types", 1789 | "itertools", 1790 | "rand 0.8.5", 1791 | "serde", 1792 | "sha3 0.10.6", 1793 | "tai64", 1794 | "thiserror", 1795 | "tracing", 1796 | ] 1797 | 1798 | [[package]] 1799 | name = "fuels" 1800 | version = "0.31.1" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "915635c2afa43beee24c8d74e3a8587aa630648956c4356a9b6edab3640b4fcb" 1803 | dependencies = [ 1804 | "fuel-core", 1805 | "fuel-gql-client", 1806 | "fuels-abigen-macro", 1807 | "fuels-contract", 1808 | "fuels-core", 1809 | "fuels-signers", 1810 | "fuels-test-helpers", 1811 | "fuels-types", 1812 | ] 1813 | 1814 | [[package]] 1815 | name = "fuels-abigen-macro" 1816 | version = "0.31.1" 1817 | source = "registry+https://github.com/rust-lang/crates.io-index" 1818 | checksum = "f33f2492d7179aaa1d6c42bf3008253e2bd60ae38c94cd0c86fe51eeba8db1bb" 1819 | dependencies = [ 1820 | "Inflector", 1821 | "fuels-core", 1822 | "proc-macro2", 1823 | "quote", 1824 | "rand 0.8.5", 1825 | "syn", 1826 | ] 1827 | 1828 | [[package]] 1829 | name = "fuels-contract" 1830 | version = "0.31.1" 1831 | source = "registry+https://github.com/rust-lang/crates.io-index" 1832 | checksum = "f6262fc9bfdd43f52e0cc28d9c5e6cb357470e1918b1dd235abc4e79c50a2746" 1833 | dependencies = [ 1834 | "anyhow", 1835 | "bytes", 1836 | "fuel-gql-client", 1837 | "fuel-tx", 1838 | "fuels-core", 1839 | "fuels-signers", 1840 | "fuels-types", 1841 | "futures", 1842 | "hex", 1843 | "itertools", 1844 | "proc-macro2", 1845 | "quote", 1846 | "rand 0.8.5", 1847 | "regex", 1848 | "serde", 1849 | "serde_json", 1850 | "sha2 0.9.9", 1851 | "strum 0.21.0", 1852 | "strum_macros 0.21.1", 1853 | "thiserror", 1854 | "tokio", 1855 | "tracing", 1856 | ] 1857 | 1858 | [[package]] 1859 | name = "fuels-core" 1860 | version = "0.31.1" 1861 | source = "registry+https://github.com/rust-lang/crates.io-index" 1862 | checksum = "be5ef26a708a19b83f46fc2c68110cb953622717fd3161e768bbe98dc2f4c5fb" 1863 | dependencies = [ 1864 | "Inflector", 1865 | "anyhow", 1866 | "fuel-tx", 1867 | "fuel-types", 1868 | "fuels-types", 1869 | "hex", 1870 | "itertools", 1871 | "lazy_static", 1872 | "proc-macro2", 1873 | "quote", 1874 | "rand 0.8.5", 1875 | "regex", 1876 | "serde", 1877 | "serde_json", 1878 | "sha2 0.9.9", 1879 | "strum 0.21.0", 1880 | "strum_macros 0.21.1", 1881 | "syn", 1882 | "thiserror", 1883 | ] 1884 | 1885 | [[package]] 1886 | name = "fuels-signers" 1887 | version = "0.31.1" 1888 | source = "registry+https://github.com/rust-lang/crates.io-index" 1889 | checksum = "86dfc0f6ab0d355c4e44c0940e3ebe64f70cbcf5d5e4c72eef34d4614f3b478d" 1890 | dependencies = [ 1891 | "async-trait", 1892 | "bytes", 1893 | "elliptic-curve 0.11.12", 1894 | "eth-keystore", 1895 | "fuel-crypto", 1896 | "fuel-gql-client", 1897 | "fuel-types", 1898 | "fuels-core", 1899 | "fuels-types", 1900 | "hex", 1901 | "rand 0.8.5", 1902 | "serde", 1903 | "sha2 0.9.9", 1904 | "thiserror", 1905 | "tokio", 1906 | ] 1907 | 1908 | [[package]] 1909 | name = "fuels-test-helpers" 1910 | version = "0.31.1" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "9bcc36ba43c8d52443405e1518358c4638f0ea05dbb1aef53ef367120dc9520a" 1913 | dependencies = [ 1914 | "anyhow", 1915 | "fuel-chain-config", 1916 | "fuel-core", 1917 | "fuel-core-interfaces", 1918 | "fuel-gql-client", 1919 | "fuel-types", 1920 | "fuels-contract", 1921 | "fuels-core", 1922 | "fuels-signers", 1923 | "fuels-types", 1924 | "hex", 1925 | "portpicker", 1926 | "rand 0.8.5", 1927 | "serde", 1928 | "serde_json", 1929 | "serde_with", 1930 | "tempfile", 1931 | "tokio", 1932 | "tracing", 1933 | "which", 1934 | ] 1935 | 1936 | [[package]] 1937 | name = "fuels-types" 1938 | version = "0.31.1" 1939 | source = "registry+https://github.com/rust-lang/crates.io-index" 1940 | checksum = "75fcd9b8161d7932bf6b0bb5d9a9d61cde655d983315bf1d534d87775426bf29" 1941 | dependencies = [ 1942 | "anyhow", 1943 | "bech32 0.9.1", 1944 | "fuel-tx", 1945 | "hex", 1946 | "itertools", 1947 | "lazy_static", 1948 | "proc-macro2", 1949 | "regex", 1950 | "serde", 1951 | "serde_json", 1952 | "strum 0.21.0", 1953 | "strum_macros 0.21.1", 1954 | "thiserror", 1955 | "tokio", 1956 | ] 1957 | 1958 | [[package]] 1959 | name = "futures" 1960 | version = "0.3.25" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" 1963 | dependencies = [ 1964 | "futures-channel", 1965 | "futures-core", 1966 | "futures-executor", 1967 | "futures-io", 1968 | "futures-sink", 1969 | "futures-task", 1970 | "futures-util", 1971 | ] 1972 | 1973 | [[package]] 1974 | name = "futures-channel" 1975 | version = "0.3.25" 1976 | source = "registry+https://github.com/rust-lang/crates.io-index" 1977 | checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" 1978 | dependencies = [ 1979 | "futures-core", 1980 | "futures-sink", 1981 | ] 1982 | 1983 | [[package]] 1984 | name = "futures-core" 1985 | version = "0.3.25" 1986 | source = "registry+https://github.com/rust-lang/crates.io-index" 1987 | checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" 1988 | 1989 | [[package]] 1990 | name = "futures-executor" 1991 | version = "0.3.25" 1992 | source = "registry+https://github.com/rust-lang/crates.io-index" 1993 | checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" 1994 | dependencies = [ 1995 | "futures-core", 1996 | "futures-task", 1997 | "futures-util", 1998 | ] 1999 | 2000 | [[package]] 2001 | name = "futures-io" 2002 | version = "0.3.25" 2003 | source = "registry+https://github.com/rust-lang/crates.io-index" 2004 | checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" 2005 | 2006 | [[package]] 2007 | name = "futures-lite" 2008 | version = "1.12.0" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" 2011 | dependencies = [ 2012 | "fastrand", 2013 | "futures-core", 2014 | "futures-io", 2015 | "memchr", 2016 | "parking", 2017 | "pin-project-lite", 2018 | "waker-fn", 2019 | ] 2020 | 2021 | [[package]] 2022 | name = "futures-macro" 2023 | version = "0.3.25" 2024 | source = "registry+https://github.com/rust-lang/crates.io-index" 2025 | checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" 2026 | dependencies = [ 2027 | "proc-macro2", 2028 | "quote", 2029 | "syn", 2030 | ] 2031 | 2032 | [[package]] 2033 | name = "futures-sink" 2034 | version = "0.3.25" 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" 2036 | checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" 2037 | 2038 | [[package]] 2039 | name = "futures-task" 2040 | version = "0.3.25" 2041 | source = "registry+https://github.com/rust-lang/crates.io-index" 2042 | checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" 2043 | 2044 | [[package]] 2045 | name = "futures-timer" 2046 | version = "3.0.2" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" 2049 | 2050 | [[package]] 2051 | name = "futures-util" 2052 | version = "0.3.25" 2053 | source = "registry+https://github.com/rust-lang/crates.io-index" 2054 | checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" 2055 | dependencies = [ 2056 | "futures-channel", 2057 | "futures-core", 2058 | "futures-io", 2059 | "futures-macro", 2060 | "futures-sink", 2061 | "futures-task", 2062 | "memchr", 2063 | "pin-project-lite", 2064 | "pin-utils", 2065 | "slab", 2066 | ] 2067 | 2068 | [[package]] 2069 | name = "generic-array" 2070 | version = "0.12.4" 2071 | source = "registry+https://github.com/rust-lang/crates.io-index" 2072 | checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 2073 | dependencies = [ 2074 | "typenum", 2075 | ] 2076 | 2077 | [[package]] 2078 | name = "generic-array" 2079 | version = "0.14.6" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 2082 | dependencies = [ 2083 | "typenum", 2084 | "version_check", 2085 | ] 2086 | 2087 | [[package]] 2088 | name = "getrandom" 2089 | version = "0.1.16" 2090 | source = "registry+https://github.com/rust-lang/crates.io-index" 2091 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 2092 | dependencies = [ 2093 | "cfg-if", 2094 | "libc", 2095 | "wasi 0.9.0+wasi-snapshot-preview1", 2096 | ] 2097 | 2098 | [[package]] 2099 | name = "getrandom" 2100 | version = "0.2.8" 2101 | source = "registry+https://github.com/rust-lang/crates.io-index" 2102 | checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 2103 | dependencies = [ 2104 | "cfg-if", 2105 | "js-sys", 2106 | "libc", 2107 | "wasi 0.11.0+wasi-snapshot-preview1", 2108 | "wasm-bindgen", 2109 | ] 2110 | 2111 | [[package]] 2112 | name = "ghash" 2113 | version = "0.3.1" 2114 | source = "registry+https://github.com/rust-lang/crates.io-index" 2115 | checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" 2116 | dependencies = [ 2117 | "opaque-debug 0.3.0", 2118 | "polyval", 2119 | ] 2120 | 2121 | [[package]] 2122 | name = "gloo-timers" 2123 | version = "0.2.4" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" 2126 | dependencies = [ 2127 | "futures-channel", 2128 | "futures-core", 2129 | "js-sys", 2130 | "wasm-bindgen", 2131 | ] 2132 | 2133 | [[package]] 2134 | name = "graphql-parser" 2135 | version = "0.3.0" 2136 | source = "registry+https://github.com/rust-lang/crates.io-index" 2137 | checksum = "d1abd4ce5247dfc04a03ccde70f87a048458c9356c7e41d21ad8c407b3dde6f2" 2138 | dependencies = [ 2139 | "combine", 2140 | "thiserror", 2141 | ] 2142 | 2143 | [[package]] 2144 | name = "group" 2145 | version = "0.12.1" 2146 | source = "registry+https://github.com/rust-lang/crates.io-index" 2147 | checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" 2148 | dependencies = [ 2149 | "ff", 2150 | "rand_core 0.6.4", 2151 | "subtle", 2152 | ] 2153 | 2154 | [[package]] 2155 | name = "h2" 2156 | version = "0.3.15" 2157 | source = "registry+https://github.com/rust-lang/crates.io-index" 2158 | checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" 2159 | dependencies = [ 2160 | "bytes", 2161 | "fnv", 2162 | "futures-core", 2163 | "futures-sink", 2164 | "futures-util", 2165 | "http", 2166 | "indexmap", 2167 | "slab", 2168 | "tokio", 2169 | "tokio-util", 2170 | "tracing", 2171 | ] 2172 | 2173 | [[package]] 2174 | name = "hashbrown" 2175 | version = "0.12.3" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 2178 | dependencies = [ 2179 | "ahash", 2180 | ] 2181 | 2182 | [[package]] 2183 | name = "heck" 2184 | version = "0.3.3" 2185 | source = "registry+https://github.com/rust-lang/crates.io-index" 2186 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 2187 | dependencies = [ 2188 | "unicode-segmentation", 2189 | ] 2190 | 2191 | [[package]] 2192 | name = "heck" 2193 | version = "0.4.0" 2194 | source = "registry+https://github.com/rust-lang/crates.io-index" 2195 | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" 2196 | 2197 | [[package]] 2198 | name = "hermit-abi" 2199 | version = "0.1.19" 2200 | source = "registry+https://github.com/rust-lang/crates.io-index" 2201 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 2202 | dependencies = [ 2203 | "libc", 2204 | ] 2205 | 2206 | [[package]] 2207 | name = "hex" 2208 | version = "0.4.3" 2209 | source = "registry+https://github.com/rust-lang/crates.io-index" 2210 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 2211 | dependencies = [ 2212 | "serde", 2213 | ] 2214 | 2215 | [[package]] 2216 | name = "hkdf" 2217 | version = "0.10.0" 2218 | source = "registry+https://github.com/rust-lang/crates.io-index" 2219 | checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" 2220 | dependencies = [ 2221 | "digest 0.9.0", 2222 | "hmac 0.10.1", 2223 | ] 2224 | 2225 | [[package]] 2226 | name = "hmac" 2227 | version = "0.10.1" 2228 | source = "registry+https://github.com/rust-lang/crates.io-index" 2229 | checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" 2230 | dependencies = [ 2231 | "crypto-mac 0.10.1", 2232 | "digest 0.9.0", 2233 | ] 2234 | 2235 | [[package]] 2236 | name = "hmac" 2237 | version = "0.11.0" 2238 | source = "registry+https://github.com/rust-lang/crates.io-index" 2239 | checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" 2240 | dependencies = [ 2241 | "crypto-mac 0.11.1", 2242 | "digest 0.9.0", 2243 | ] 2244 | 2245 | [[package]] 2246 | name = "hmac" 2247 | version = "0.12.1" 2248 | source = "registry+https://github.com/rust-lang/crates.io-index" 2249 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 2250 | dependencies = [ 2251 | "digest 0.10.6", 2252 | ] 2253 | 2254 | [[package]] 2255 | name = "http" 2256 | version = "0.2.8" 2257 | source = "registry+https://github.com/rust-lang/crates.io-index" 2258 | checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" 2259 | dependencies = [ 2260 | "bytes", 2261 | "fnv", 2262 | "itoa", 2263 | ] 2264 | 2265 | [[package]] 2266 | name = "http-body" 2267 | version = "0.4.5" 2268 | source = "registry+https://github.com/rust-lang/crates.io-index" 2269 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 2270 | dependencies = [ 2271 | "bytes", 2272 | "http", 2273 | "pin-project-lite", 2274 | ] 2275 | 2276 | [[package]] 2277 | name = "http-client" 2278 | version = "6.5.3" 2279 | source = "registry+https://github.com/rust-lang/crates.io-index" 2280 | checksum = "1947510dc91e2bf586ea5ffb412caad7673264e14bb39fb9078da114a94ce1a5" 2281 | dependencies = [ 2282 | "async-h1", 2283 | "async-std", 2284 | "async-tls", 2285 | "async-trait", 2286 | "cfg-if", 2287 | "dashmap", 2288 | "deadpool", 2289 | "futures", 2290 | "http-types", 2291 | "log", 2292 | "rustls 0.18.1", 2293 | ] 2294 | 2295 | [[package]] 2296 | name = "http-range-header" 2297 | version = "0.3.0" 2298 | source = "registry+https://github.com/rust-lang/crates.io-index" 2299 | checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" 2300 | 2301 | [[package]] 2302 | name = "http-types" 2303 | version = "2.12.0" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" 2306 | dependencies = [ 2307 | "anyhow", 2308 | "async-channel", 2309 | "async-std", 2310 | "base64 0.13.1", 2311 | "cookie", 2312 | "futures-lite", 2313 | "infer", 2314 | "pin-project-lite", 2315 | "rand 0.7.3", 2316 | "serde", 2317 | "serde_json", 2318 | "serde_qs", 2319 | "serde_urlencoded", 2320 | "url", 2321 | ] 2322 | 2323 | [[package]] 2324 | name = "httparse" 2325 | version = "1.8.0" 2326 | source = "registry+https://github.com/rust-lang/crates.io-index" 2327 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 2328 | 2329 | [[package]] 2330 | name = "httpdate" 2331 | version = "1.0.2" 2332 | source = "registry+https://github.com/rust-lang/crates.io-index" 2333 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 2334 | 2335 | [[package]] 2336 | name = "humantime" 2337 | version = "2.1.0" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 2340 | 2341 | [[package]] 2342 | name = "humantime-serde" 2343 | version = "1.1.1" 2344 | source = "registry+https://github.com/rust-lang/crates.io-index" 2345 | checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" 2346 | dependencies = [ 2347 | "humantime", 2348 | "serde", 2349 | ] 2350 | 2351 | [[package]] 2352 | name = "hyper" 2353 | version = "0.14.23" 2354 | source = "registry+https://github.com/rust-lang/crates.io-index" 2355 | checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" 2356 | dependencies = [ 2357 | "bytes", 2358 | "futures-channel", 2359 | "futures-core", 2360 | "futures-util", 2361 | "h2", 2362 | "http", 2363 | "http-body", 2364 | "httparse", 2365 | "httpdate", 2366 | "itoa", 2367 | "pin-project-lite", 2368 | "socket2", 2369 | "tokio", 2370 | "tower-service", 2371 | "tracing", 2372 | "want", 2373 | ] 2374 | 2375 | [[package]] 2376 | name = "hyper-rustls" 2377 | version = "0.22.1" 2378 | source = "registry+https://github.com/rust-lang/crates.io-index" 2379 | checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" 2380 | dependencies = [ 2381 | "ct-logs", 2382 | "futures-util", 2383 | "hyper", 2384 | "log", 2385 | "rustls 0.19.1", 2386 | "rustls-native-certs", 2387 | "tokio", 2388 | "tokio-rustls", 2389 | "webpki", 2390 | ] 2391 | 2392 | [[package]] 2393 | name = "hyper-timeout" 2394 | version = "0.4.1" 2395 | source = "registry+https://github.com/rust-lang/crates.io-index" 2396 | checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" 2397 | dependencies = [ 2398 | "hyper", 2399 | "pin-project-lite", 2400 | "tokio", 2401 | "tokio-io-timeout", 2402 | ] 2403 | 2404 | [[package]] 2405 | name = "iana-time-zone" 2406 | version = "0.1.53" 2407 | source = "registry+https://github.com/rust-lang/crates.io-index" 2408 | checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" 2409 | dependencies = [ 2410 | "android_system_properties", 2411 | "core-foundation-sys", 2412 | "iana-time-zone-haiku", 2413 | "js-sys", 2414 | "wasm-bindgen", 2415 | "winapi", 2416 | ] 2417 | 2418 | [[package]] 2419 | name = "iana-time-zone-haiku" 2420 | version = "0.1.1" 2421 | source = "registry+https://github.com/rust-lang/crates.io-index" 2422 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" 2423 | dependencies = [ 2424 | "cxx", 2425 | "cxx-build", 2426 | ] 2427 | 2428 | [[package]] 2429 | name = "ident_case" 2430 | version = "1.0.1" 2431 | source = "registry+https://github.com/rust-lang/crates.io-index" 2432 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 2433 | 2434 | [[package]] 2435 | name = "idna" 2436 | version = "0.3.0" 2437 | source = "registry+https://github.com/rust-lang/crates.io-index" 2438 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 2439 | dependencies = [ 2440 | "unicode-bidi", 2441 | "unicode-normalization", 2442 | ] 2443 | 2444 | [[package]] 2445 | name = "indexmap" 2446 | version = "1.9.2" 2447 | source = "registry+https://github.com/rust-lang/crates.io-index" 2448 | checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 2449 | dependencies = [ 2450 | "autocfg", 2451 | "hashbrown", 2452 | "serde", 2453 | ] 2454 | 2455 | [[package]] 2456 | name = "infer" 2457 | version = "0.2.3" 2458 | source = "registry+https://github.com/rust-lang/crates.io-index" 2459 | checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" 2460 | 2461 | [[package]] 2462 | name = "instant" 2463 | version = "0.1.12" 2464 | source = "registry+https://github.com/rust-lang/crates.io-index" 2465 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 2466 | dependencies = [ 2467 | "cfg-if", 2468 | ] 2469 | 2470 | [[package]] 2471 | name = "itertools" 2472 | version = "0.10.5" 2473 | source = "registry+https://github.com/rust-lang/crates.io-index" 2474 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 2475 | dependencies = [ 2476 | "either", 2477 | ] 2478 | 2479 | [[package]] 2480 | name = "itoa" 2481 | version = "1.0.4" 2482 | source = "registry+https://github.com/rust-lang/crates.io-index" 2483 | checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" 2484 | 2485 | [[package]] 2486 | name = "js-sys" 2487 | version = "0.3.60" 2488 | source = "registry+https://github.com/rust-lang/crates.io-index" 2489 | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" 2490 | dependencies = [ 2491 | "wasm-bindgen", 2492 | ] 2493 | 2494 | [[package]] 2495 | name = "json-decode" 2496 | version = "0.6.0" 2497 | source = "registry+https://github.com/rust-lang/crates.io-index" 2498 | checksum = "8fd72139ade93da4f8a437afe8654a4a3cf1d858dc195fc6691e6e932fa1b6ee" 2499 | dependencies = [ 2500 | "serde", 2501 | "serde_json", 2502 | "thiserror", 2503 | ] 2504 | 2505 | [[package]] 2506 | name = "k256" 2507 | version = "0.11.6" 2508 | source = "registry+https://github.com/rust-lang/crates.io-index" 2509 | checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" 2510 | dependencies = [ 2511 | "cfg-if", 2512 | "ecdsa", 2513 | "elliptic-curve 0.12.3", 2514 | "sha2 0.10.6", 2515 | ] 2516 | 2517 | [[package]] 2518 | name = "keccak" 2519 | version = "0.1.3" 2520 | source = "registry+https://github.com/rust-lang/crates.io-index" 2521 | checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" 2522 | dependencies = [ 2523 | "cpufeatures", 2524 | ] 2525 | 2526 | [[package]] 2527 | name = "kv-log-macro" 2528 | version = "1.0.7" 2529 | source = "registry+https://github.com/rust-lang/crates.io-index" 2530 | checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 2531 | dependencies = [ 2532 | "log", 2533 | ] 2534 | 2535 | [[package]] 2536 | name = "lazy_static" 2537 | version = "1.4.0" 2538 | source = "registry+https://github.com/rust-lang/crates.io-index" 2539 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2540 | 2541 | [[package]] 2542 | name = "lexical-core" 2543 | version = "0.7.6" 2544 | source = "registry+https://github.com/rust-lang/crates.io-index" 2545 | checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" 2546 | dependencies = [ 2547 | "arrayvec", 2548 | "bitflags", 2549 | "cfg-if", 2550 | "ryu", 2551 | "static_assertions", 2552 | ] 2553 | 2554 | [[package]] 2555 | name = "libc" 2556 | version = "0.2.137" 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" 2558 | checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" 2559 | 2560 | [[package]] 2561 | name = "link-cplusplus" 2562 | version = "1.0.7" 2563 | source = "registry+https://github.com/rust-lang/crates.io-index" 2564 | checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" 2565 | dependencies = [ 2566 | "cc", 2567 | ] 2568 | 2569 | [[package]] 2570 | name = "lock_api" 2571 | version = "0.4.9" 2572 | source = "registry+https://github.com/rust-lang/crates.io-index" 2573 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 2574 | dependencies = [ 2575 | "autocfg", 2576 | "scopeguard", 2577 | ] 2578 | 2579 | [[package]] 2580 | name = "log" 2581 | version = "0.4.17" 2582 | source = "registry+https://github.com/rust-lang/crates.io-index" 2583 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 2584 | dependencies = [ 2585 | "cfg-if", 2586 | "value-bag", 2587 | ] 2588 | 2589 | [[package]] 2590 | name = "matchers" 2591 | version = "0.1.0" 2592 | source = "registry+https://github.com/rust-lang/crates.io-index" 2593 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 2594 | dependencies = [ 2595 | "regex-automata", 2596 | ] 2597 | 2598 | [[package]] 2599 | name = "matchit" 2600 | version = "0.5.0" 2601 | source = "registry+https://github.com/rust-lang/crates.io-index" 2602 | checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" 2603 | 2604 | [[package]] 2605 | name = "memchr" 2606 | version = "2.5.0" 2607 | source = "registry+https://github.com/rust-lang/crates.io-index" 2608 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 2609 | 2610 | [[package]] 2611 | name = "mime" 2612 | version = "0.3.16" 2613 | source = "registry+https://github.com/rust-lang/crates.io-index" 2614 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 2615 | 2616 | [[package]] 2617 | name = "mime_guess" 2618 | version = "2.0.4" 2619 | source = "registry+https://github.com/rust-lang/crates.io-index" 2620 | checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" 2621 | dependencies = [ 2622 | "mime", 2623 | "unicase", 2624 | ] 2625 | 2626 | [[package]] 2627 | name = "mio" 2628 | version = "0.8.5" 2629 | source = "registry+https://github.com/rust-lang/crates.io-index" 2630 | checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" 2631 | dependencies = [ 2632 | "libc", 2633 | "log", 2634 | "wasi 0.11.0+wasi-snapshot-preview1", 2635 | "windows-sys 0.42.0", 2636 | ] 2637 | 2638 | [[package]] 2639 | name = "multer" 2640 | version = "2.0.4" 2641 | source = "registry+https://github.com/rust-lang/crates.io-index" 2642 | checksum = "6ed4198ce7a4cbd2a57af78d28c6fbb57d81ac5f1d6ad79ac6c5587419cbdf22" 2643 | dependencies = [ 2644 | "bytes", 2645 | "encoding_rs", 2646 | "futures-util", 2647 | "http", 2648 | "httparse", 2649 | "log", 2650 | "memchr", 2651 | "mime", 2652 | "spin 0.9.4", 2653 | "version_check", 2654 | ] 2655 | 2656 | [[package]] 2657 | name = "nom" 2658 | version = "5.1.2" 2659 | source = "registry+https://github.com/rust-lang/crates.io-index" 2660 | checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" 2661 | dependencies = [ 2662 | "lexical-core", 2663 | "memchr", 2664 | "version_check", 2665 | ] 2666 | 2667 | [[package]] 2668 | name = "nu-ansi-term" 2669 | version = "0.46.0" 2670 | source = "registry+https://github.com/rust-lang/crates.io-index" 2671 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 2672 | dependencies = [ 2673 | "overload", 2674 | "winapi", 2675 | ] 2676 | 2677 | [[package]] 2678 | name = "num-integer" 2679 | version = "0.1.45" 2680 | source = "registry+https://github.com/rust-lang/crates.io-index" 2681 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 2682 | dependencies = [ 2683 | "autocfg", 2684 | "num-traits", 2685 | ] 2686 | 2687 | [[package]] 2688 | name = "num-traits" 2689 | version = "0.2.15" 2690 | source = "registry+https://github.com/rust-lang/crates.io-index" 2691 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 2692 | dependencies = [ 2693 | "autocfg", 2694 | ] 2695 | 2696 | [[package]] 2697 | name = "num_cpus" 2698 | version = "1.14.0" 2699 | source = "registry+https://github.com/rust-lang/crates.io-index" 2700 | checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" 2701 | dependencies = [ 2702 | "hermit-abi", 2703 | "libc", 2704 | ] 2705 | 2706 | [[package]] 2707 | name = "once_cell" 2708 | version = "1.16.0" 2709 | source = "registry+https://github.com/rust-lang/crates.io-index" 2710 | checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" 2711 | 2712 | [[package]] 2713 | name = "opaque-debug" 2714 | version = "0.2.3" 2715 | source = "registry+https://github.com/rust-lang/crates.io-index" 2716 | checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 2717 | 2718 | [[package]] 2719 | name = "opaque-debug" 2720 | version = "0.3.0" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 2723 | 2724 | [[package]] 2725 | name = "openssl-probe" 2726 | version = "0.1.5" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 2729 | 2730 | [[package]] 2731 | name = "os_str_bytes" 2732 | version = "6.4.0" 2733 | source = "registry+https://github.com/rust-lang/crates.io-index" 2734 | checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e" 2735 | 2736 | [[package]] 2737 | name = "overload" 2738 | version = "0.1.1" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2741 | 2742 | [[package]] 2743 | name = "parking" 2744 | version = "2.0.0" 2745 | source = "registry+https://github.com/rust-lang/crates.io-index" 2746 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 2747 | 2748 | [[package]] 2749 | name = "parking_lot" 2750 | version = "0.11.2" 2751 | source = "registry+https://github.com/rust-lang/crates.io-index" 2752 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 2753 | dependencies = [ 2754 | "instant", 2755 | "lock_api", 2756 | "parking_lot_core 0.8.5", 2757 | ] 2758 | 2759 | [[package]] 2760 | name = "parking_lot" 2761 | version = "0.12.1" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 2764 | dependencies = [ 2765 | "lock_api", 2766 | "parking_lot_core 0.9.4", 2767 | ] 2768 | 2769 | [[package]] 2770 | name = "parking_lot_core" 2771 | version = "0.8.5" 2772 | source = "registry+https://github.com/rust-lang/crates.io-index" 2773 | checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" 2774 | dependencies = [ 2775 | "cfg-if", 2776 | "instant", 2777 | "libc", 2778 | "redox_syscall", 2779 | "smallvec", 2780 | "winapi", 2781 | ] 2782 | 2783 | [[package]] 2784 | name = "parking_lot_core" 2785 | version = "0.9.4" 2786 | source = "registry+https://github.com/rust-lang/crates.io-index" 2787 | checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" 2788 | dependencies = [ 2789 | "cfg-if", 2790 | "libc", 2791 | "redox_syscall", 2792 | "smallvec", 2793 | "windows-sys 0.42.0", 2794 | ] 2795 | 2796 | [[package]] 2797 | name = "password-hash" 2798 | version = "0.2.3" 2799 | source = "registry+https://github.com/rust-lang/crates.io-index" 2800 | checksum = "77e0b28ace46c5a396546bcf443bf422b57049617433d8854227352a4a9b24e7" 2801 | dependencies = [ 2802 | "base64ct", 2803 | "rand_core 0.6.4", 2804 | "subtle", 2805 | ] 2806 | 2807 | [[package]] 2808 | name = "password-hash" 2809 | version = "0.4.2" 2810 | source = "registry+https://github.com/rust-lang/crates.io-index" 2811 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 2812 | dependencies = [ 2813 | "base64ct", 2814 | "rand_core 0.6.4", 2815 | "subtle", 2816 | ] 2817 | 2818 | [[package]] 2819 | name = "pbkdf2" 2820 | version = "0.8.0" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" 2823 | dependencies = [ 2824 | "base64ct", 2825 | "crypto-mac 0.11.1", 2826 | "hmac 0.11.0", 2827 | "password-hash 0.2.3", 2828 | "sha2 0.9.9", 2829 | ] 2830 | 2831 | [[package]] 2832 | name = "pbkdf2" 2833 | version = "0.11.0" 2834 | source = "registry+https://github.com/rust-lang/crates.io-index" 2835 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 2836 | dependencies = [ 2837 | "digest 0.10.6", 2838 | "hmac 0.12.1", 2839 | "password-hash 0.4.2", 2840 | "sha2 0.10.6", 2841 | ] 2842 | 2843 | [[package]] 2844 | name = "percent-encoding" 2845 | version = "2.2.0" 2846 | source = "registry+https://github.com/rust-lang/crates.io-index" 2847 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 2848 | 2849 | [[package]] 2850 | name = "pest" 2851 | version = "2.4.1" 2852 | source = "registry+https://github.com/rust-lang/crates.io-index" 2853 | checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8" 2854 | dependencies = [ 2855 | "thiserror", 2856 | "ucd-trie", 2857 | ] 2858 | 2859 | [[package]] 2860 | name = "pin-project" 2861 | version = "1.0.12" 2862 | source = "registry+https://github.com/rust-lang/crates.io-index" 2863 | checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" 2864 | dependencies = [ 2865 | "pin-project-internal", 2866 | ] 2867 | 2868 | [[package]] 2869 | name = "pin-project-internal" 2870 | version = "1.0.12" 2871 | source = "registry+https://github.com/rust-lang/crates.io-index" 2872 | checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" 2873 | dependencies = [ 2874 | "proc-macro2", 2875 | "quote", 2876 | "syn", 2877 | ] 2878 | 2879 | [[package]] 2880 | name = "pin-project-lite" 2881 | version = "0.2.9" 2882 | source = "registry+https://github.com/rust-lang/crates.io-index" 2883 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 2884 | 2885 | [[package]] 2886 | name = "pin-utils" 2887 | version = "0.1.0" 2888 | source = "registry+https://github.com/rust-lang/crates.io-index" 2889 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2890 | 2891 | [[package]] 2892 | name = "pkcs8" 2893 | version = "0.9.0" 2894 | source = "registry+https://github.com/rust-lang/crates.io-index" 2895 | checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" 2896 | dependencies = [ 2897 | "der 0.6.0", 2898 | "spki", 2899 | ] 2900 | 2901 | [[package]] 2902 | name = "polling" 2903 | version = "2.4.0" 2904 | source = "registry+https://github.com/rust-lang/crates.io-index" 2905 | checksum = "ab4609a838d88b73d8238967b60dd115cc08d38e2bbaf51ee1e4b695f89122e2" 2906 | dependencies = [ 2907 | "autocfg", 2908 | "cfg-if", 2909 | "libc", 2910 | "log", 2911 | "wepoll-ffi", 2912 | "winapi", 2913 | ] 2914 | 2915 | [[package]] 2916 | name = "polyval" 2917 | version = "0.4.5" 2918 | source = "registry+https://github.com/rust-lang/crates.io-index" 2919 | checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" 2920 | dependencies = [ 2921 | "cpuid-bool", 2922 | "opaque-debug 0.3.0", 2923 | "universal-hash", 2924 | ] 2925 | 2926 | [[package]] 2927 | name = "portpicker" 2928 | version = "0.1.1" 2929 | source = "registry+https://github.com/rust-lang/crates.io-index" 2930 | checksum = "be97d76faf1bfab666e1375477b23fde79eccf0276e9b63b92a39d676a889ba9" 2931 | dependencies = [ 2932 | "rand 0.8.5", 2933 | ] 2934 | 2935 | [[package]] 2936 | name = "ppv-lite86" 2937 | version = "0.2.17" 2938 | source = "registry+https://github.com/rust-lang/crates.io-index" 2939 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2940 | 2941 | [[package]] 2942 | name = "proc-macro-crate" 2943 | version = "1.2.1" 2944 | source = "registry+https://github.com/rust-lang/crates.io-index" 2945 | checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" 2946 | dependencies = [ 2947 | "once_cell", 2948 | "thiserror", 2949 | "toml", 2950 | ] 2951 | 2952 | [[package]] 2953 | name = "proc-macro-error" 2954 | version = "1.0.4" 2955 | source = "registry+https://github.com/rust-lang/crates.io-index" 2956 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2957 | dependencies = [ 2958 | "proc-macro-error-attr", 2959 | "proc-macro2", 2960 | "quote", 2961 | "syn", 2962 | "version_check", 2963 | ] 2964 | 2965 | [[package]] 2966 | name = "proc-macro-error-attr" 2967 | version = "1.0.4" 2968 | source = "registry+https://github.com/rust-lang/crates.io-index" 2969 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2970 | dependencies = [ 2971 | "proc-macro2", 2972 | "quote", 2973 | "version_check", 2974 | ] 2975 | 2976 | [[package]] 2977 | name = "proc-macro-hack" 2978 | version = "0.5.19" 2979 | source = "registry+https://github.com/rust-lang/crates.io-index" 2980 | checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" 2981 | 2982 | [[package]] 2983 | name = "proc-macro2" 2984 | version = "1.0.47" 2985 | source = "registry+https://github.com/rust-lang/crates.io-index" 2986 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 2987 | dependencies = [ 2988 | "unicode-ident", 2989 | ] 2990 | 2991 | [[package]] 2992 | name = "prometheus-client" 2993 | version = "0.18.1" 2994 | source = "registry+https://github.com/rust-lang/crates.io-index" 2995 | checksum = "83cd1b99916654a69008fd66b4f9397fbe08e6e51dfe23d4417acf5d3b8cb87c" 2996 | dependencies = [ 2997 | "dtoa", 2998 | "itoa", 2999 | "parking_lot 0.12.1", 3000 | "prometheus-client-derive-text-encode", 3001 | ] 3002 | 3003 | [[package]] 3004 | name = "prometheus-client-derive-text-encode" 3005 | version = "0.3.0" 3006 | source = "registry+https://github.com/rust-lang/crates.io-index" 3007 | checksum = "66a455fbcb954c1a7decf3c586e860fd7889cddf4b8e164be736dbac95a953cd" 3008 | dependencies = [ 3009 | "proc-macro2", 3010 | "quote", 3011 | "syn", 3012 | ] 3013 | 3014 | [[package]] 3015 | name = "quote" 3016 | version = "1.0.21" 3017 | source = "registry+https://github.com/rust-lang/crates.io-index" 3018 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" 3019 | dependencies = [ 3020 | "proc-macro2", 3021 | ] 3022 | 3023 | [[package]] 3024 | name = "radium" 3025 | version = "0.3.0" 3026 | source = "registry+https://github.com/rust-lang/crates.io-index" 3027 | checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" 3028 | 3029 | [[package]] 3030 | name = "rand" 3031 | version = "0.7.3" 3032 | source = "registry+https://github.com/rust-lang/crates.io-index" 3033 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 3034 | dependencies = [ 3035 | "getrandom 0.1.16", 3036 | "libc", 3037 | "rand_chacha 0.2.2", 3038 | "rand_core 0.5.1", 3039 | "rand_hc", 3040 | ] 3041 | 3042 | [[package]] 3043 | name = "rand" 3044 | version = "0.8.5" 3045 | source = "registry+https://github.com/rust-lang/crates.io-index" 3046 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 3047 | dependencies = [ 3048 | "libc", 3049 | "rand_chacha 0.3.1", 3050 | "rand_core 0.6.4", 3051 | ] 3052 | 3053 | [[package]] 3054 | name = "rand_chacha" 3055 | version = "0.2.2" 3056 | source = "registry+https://github.com/rust-lang/crates.io-index" 3057 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 3058 | dependencies = [ 3059 | "ppv-lite86", 3060 | "rand_core 0.5.1", 3061 | ] 3062 | 3063 | [[package]] 3064 | name = "rand_chacha" 3065 | version = "0.3.1" 3066 | source = "registry+https://github.com/rust-lang/crates.io-index" 3067 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 3068 | dependencies = [ 3069 | "ppv-lite86", 3070 | "rand_core 0.6.4", 3071 | ] 3072 | 3073 | [[package]] 3074 | name = "rand_core" 3075 | version = "0.5.1" 3076 | source = "registry+https://github.com/rust-lang/crates.io-index" 3077 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 3078 | dependencies = [ 3079 | "getrandom 0.1.16", 3080 | ] 3081 | 3082 | [[package]] 3083 | name = "rand_core" 3084 | version = "0.6.4" 3085 | source = "registry+https://github.com/rust-lang/crates.io-index" 3086 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 3087 | dependencies = [ 3088 | "getrandom 0.2.8", 3089 | ] 3090 | 3091 | [[package]] 3092 | name = "rand_hc" 3093 | version = "0.2.0" 3094 | source = "registry+https://github.com/rust-lang/crates.io-index" 3095 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 3096 | dependencies = [ 3097 | "rand_core 0.5.1", 3098 | ] 3099 | 3100 | [[package]] 3101 | name = "redox_syscall" 3102 | version = "0.2.16" 3103 | source = "registry+https://github.com/rust-lang/crates.io-index" 3104 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 3105 | dependencies = [ 3106 | "bitflags", 3107 | ] 3108 | 3109 | [[package]] 3110 | name = "redox_users" 3111 | version = "0.4.3" 3112 | source = "registry+https://github.com/rust-lang/crates.io-index" 3113 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 3114 | dependencies = [ 3115 | "getrandom 0.2.8", 3116 | "redox_syscall", 3117 | "thiserror", 3118 | ] 3119 | 3120 | [[package]] 3121 | name = "regex" 3122 | version = "1.7.0" 3123 | source = "registry+https://github.com/rust-lang/crates.io-index" 3124 | checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" 3125 | dependencies = [ 3126 | "aho-corasick", 3127 | "memchr", 3128 | "regex-syntax", 3129 | ] 3130 | 3131 | [[package]] 3132 | name = "regex-automata" 3133 | version = "0.1.10" 3134 | source = "registry+https://github.com/rust-lang/crates.io-index" 3135 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 3136 | dependencies = [ 3137 | "regex-syntax", 3138 | ] 3139 | 3140 | [[package]] 3141 | name = "regex-syntax" 3142 | version = "0.6.28" 3143 | source = "registry+https://github.com/rust-lang/crates.io-index" 3144 | checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" 3145 | 3146 | [[package]] 3147 | name = "remove_dir_all" 3148 | version = "0.5.3" 3149 | source = "registry+https://github.com/rust-lang/crates.io-index" 3150 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 3151 | dependencies = [ 3152 | "winapi", 3153 | ] 3154 | 3155 | [[package]] 3156 | name = "rfc6979" 3157 | version = "0.3.1" 3158 | source = "registry+https://github.com/rust-lang/crates.io-index" 3159 | checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" 3160 | dependencies = [ 3161 | "crypto-bigint 0.4.9", 3162 | "hmac 0.12.1", 3163 | "zeroize", 3164 | ] 3165 | 3166 | [[package]] 3167 | name = "ring" 3168 | version = "0.16.20" 3169 | source = "registry+https://github.com/rust-lang/crates.io-index" 3170 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 3171 | dependencies = [ 3172 | "cc", 3173 | "libc", 3174 | "once_cell", 3175 | "spin 0.5.2", 3176 | "untrusted", 3177 | "web-sys", 3178 | "winapi", 3179 | ] 3180 | 3181 | [[package]] 3182 | name = "ripemd" 3183 | version = "0.1.3" 3184 | source = "registry+https://github.com/rust-lang/crates.io-index" 3185 | checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" 3186 | dependencies = [ 3187 | "digest 0.10.6", 3188 | ] 3189 | 3190 | [[package]] 3191 | name = "ron" 3192 | version = "0.8.0" 3193 | source = "registry+https://github.com/rust-lang/crates.io-index" 3194 | checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" 3195 | dependencies = [ 3196 | "base64 0.13.1", 3197 | "bitflags", 3198 | "serde", 3199 | ] 3200 | 3201 | [[package]] 3202 | name = "rsvpContract" 3203 | version = "0.1.0" 3204 | dependencies = [ 3205 | "fuels", 3206 | "tokio", 3207 | ] 3208 | 3209 | [[package]] 3210 | name = "rustc_version" 3211 | version = "0.2.3" 3212 | source = "registry+https://github.com/rust-lang/crates.io-index" 3213 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 3214 | dependencies = [ 3215 | "semver 0.9.0", 3216 | ] 3217 | 3218 | [[package]] 3219 | name = "rustc_version" 3220 | version = "0.4.0" 3221 | source = "registry+https://github.com/rust-lang/crates.io-index" 3222 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 3223 | dependencies = [ 3224 | "semver 1.0.14", 3225 | ] 3226 | 3227 | [[package]] 3228 | name = "rustls" 3229 | version = "0.18.1" 3230 | source = "registry+https://github.com/rust-lang/crates.io-index" 3231 | checksum = "5d1126dcf58e93cee7d098dbda643b5f92ed724f1f6a63007c1116eed6700c81" 3232 | dependencies = [ 3233 | "base64 0.12.3", 3234 | "log", 3235 | "ring", 3236 | "sct", 3237 | "webpki", 3238 | ] 3239 | 3240 | [[package]] 3241 | name = "rustls" 3242 | version = "0.19.1" 3243 | source = "registry+https://github.com/rust-lang/crates.io-index" 3244 | checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" 3245 | dependencies = [ 3246 | "base64 0.13.1", 3247 | "log", 3248 | "ring", 3249 | "sct", 3250 | "webpki", 3251 | ] 3252 | 3253 | [[package]] 3254 | name = "rustls-native-certs" 3255 | version = "0.5.0" 3256 | source = "registry+https://github.com/rust-lang/crates.io-index" 3257 | checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" 3258 | dependencies = [ 3259 | "openssl-probe", 3260 | "rustls 0.19.1", 3261 | "schannel", 3262 | "security-framework", 3263 | ] 3264 | 3265 | [[package]] 3266 | name = "rustversion" 3267 | version = "1.0.9" 3268 | source = "registry+https://github.com/rust-lang/crates.io-index" 3269 | checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" 3270 | 3271 | [[package]] 3272 | name = "ryu" 3273 | version = "1.0.11" 3274 | source = "registry+https://github.com/rust-lang/crates.io-index" 3275 | checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" 3276 | 3277 | [[package]] 3278 | name = "salsa20" 3279 | version = "0.8.1" 3280 | source = "registry+https://github.com/rust-lang/crates.io-index" 3281 | checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" 3282 | dependencies = [ 3283 | "cipher 0.3.0", 3284 | ] 3285 | 3286 | [[package]] 3287 | name = "schannel" 3288 | version = "0.1.20" 3289 | source = "registry+https://github.com/rust-lang/crates.io-index" 3290 | checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" 3291 | dependencies = [ 3292 | "lazy_static", 3293 | "windows-sys 0.36.1", 3294 | ] 3295 | 3296 | [[package]] 3297 | name = "scopeguard" 3298 | version = "1.1.0" 3299 | source = "registry+https://github.com/rust-lang/crates.io-index" 3300 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 3301 | 3302 | [[package]] 3303 | name = "scratch" 3304 | version = "1.0.2" 3305 | source = "registry+https://github.com/rust-lang/crates.io-index" 3306 | checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" 3307 | 3308 | [[package]] 3309 | name = "scrypt" 3310 | version = "0.7.0" 3311 | source = "registry+https://github.com/rust-lang/crates.io-index" 3312 | checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518" 3313 | dependencies = [ 3314 | "base64ct", 3315 | "hmac 0.11.0", 3316 | "password-hash 0.2.3", 3317 | "pbkdf2 0.8.0", 3318 | "salsa20", 3319 | "sha2 0.9.9", 3320 | ] 3321 | 3322 | [[package]] 3323 | name = "sct" 3324 | version = "0.6.1" 3325 | source = "registry+https://github.com/rust-lang/crates.io-index" 3326 | checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" 3327 | dependencies = [ 3328 | "ring", 3329 | "untrusted", 3330 | ] 3331 | 3332 | [[package]] 3333 | name = "sec1" 3334 | version = "0.3.0" 3335 | source = "registry+https://github.com/rust-lang/crates.io-index" 3336 | checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" 3337 | dependencies = [ 3338 | "base16ct", 3339 | "der 0.6.0", 3340 | "generic-array 0.14.6", 3341 | "pkcs8", 3342 | "subtle", 3343 | "zeroize", 3344 | ] 3345 | 3346 | [[package]] 3347 | name = "secp256k1" 3348 | version = "0.24.1" 3349 | source = "registry+https://github.com/rust-lang/crates.io-index" 3350 | checksum = "ff55dc09d460954e9ef2fa8a7ced735a964be9981fd50e870b2b3b0705e14964" 3351 | dependencies = [ 3352 | "rand 0.8.5", 3353 | "secp256k1-sys", 3354 | ] 3355 | 3356 | [[package]] 3357 | name = "secp256k1-sys" 3358 | version = "0.6.1" 3359 | source = "registry+https://github.com/rust-lang/crates.io-index" 3360 | checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" 3361 | dependencies = [ 3362 | "cc", 3363 | ] 3364 | 3365 | [[package]] 3366 | name = "secrecy" 3367 | version = "0.8.0" 3368 | source = "registry+https://github.com/rust-lang/crates.io-index" 3369 | checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" 3370 | dependencies = [ 3371 | "zeroize", 3372 | ] 3373 | 3374 | [[package]] 3375 | name = "security-framework" 3376 | version = "2.7.0" 3377 | source = "registry+https://github.com/rust-lang/crates.io-index" 3378 | checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" 3379 | dependencies = [ 3380 | "bitflags", 3381 | "core-foundation", 3382 | "core-foundation-sys", 3383 | "libc", 3384 | "security-framework-sys", 3385 | ] 3386 | 3387 | [[package]] 3388 | name = "security-framework-sys" 3389 | version = "2.6.1" 3390 | source = "registry+https://github.com/rust-lang/crates.io-index" 3391 | checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" 3392 | dependencies = [ 3393 | "core-foundation-sys", 3394 | "libc", 3395 | ] 3396 | 3397 | [[package]] 3398 | name = "semver" 3399 | version = "0.9.0" 3400 | source = "registry+https://github.com/rust-lang/crates.io-index" 3401 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 3402 | dependencies = [ 3403 | "semver-parser", 3404 | ] 3405 | 3406 | [[package]] 3407 | name = "semver" 3408 | version = "1.0.14" 3409 | source = "registry+https://github.com/rust-lang/crates.io-index" 3410 | checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" 3411 | 3412 | [[package]] 3413 | name = "semver-parser" 3414 | version = "0.7.0" 3415 | source = "registry+https://github.com/rust-lang/crates.io-index" 3416 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 3417 | 3418 | [[package]] 3419 | name = "serde" 3420 | version = "1.0.147" 3421 | source = "registry+https://github.com/rust-lang/crates.io-index" 3422 | checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" 3423 | dependencies = [ 3424 | "serde_derive", 3425 | ] 3426 | 3427 | [[package]] 3428 | name = "serde_derive" 3429 | version = "1.0.147" 3430 | source = "registry+https://github.com/rust-lang/crates.io-index" 3431 | checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" 3432 | dependencies = [ 3433 | "proc-macro2", 3434 | "quote", 3435 | "syn", 3436 | ] 3437 | 3438 | [[package]] 3439 | name = "serde_json" 3440 | version = "1.0.87" 3441 | source = "registry+https://github.com/rust-lang/crates.io-index" 3442 | checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" 3443 | dependencies = [ 3444 | "itoa", 3445 | "ryu", 3446 | "serde", 3447 | ] 3448 | 3449 | [[package]] 3450 | name = "serde_qs" 3451 | version = "0.8.5" 3452 | source = "registry+https://github.com/rust-lang/crates.io-index" 3453 | checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" 3454 | dependencies = [ 3455 | "percent-encoding", 3456 | "serde", 3457 | "thiserror", 3458 | ] 3459 | 3460 | [[package]] 3461 | name = "serde_urlencoded" 3462 | version = "0.7.1" 3463 | source = "registry+https://github.com/rust-lang/crates.io-index" 3464 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 3465 | dependencies = [ 3466 | "form_urlencoded", 3467 | "itoa", 3468 | "ryu", 3469 | "serde", 3470 | ] 3471 | 3472 | [[package]] 3473 | name = "serde_with" 3474 | version = "1.14.0" 3475 | source = "registry+https://github.com/rust-lang/crates.io-index" 3476 | checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" 3477 | dependencies = [ 3478 | "serde", 3479 | "serde_json", 3480 | "serde_with_macros", 3481 | ] 3482 | 3483 | [[package]] 3484 | name = "serde_with_macros" 3485 | version = "1.5.2" 3486 | source = "registry+https://github.com/rust-lang/crates.io-index" 3487 | checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" 3488 | dependencies = [ 3489 | "darling 0.13.4", 3490 | "proc-macro2", 3491 | "quote", 3492 | "syn", 3493 | ] 3494 | 3495 | [[package]] 3496 | name = "sha1" 3497 | version = "0.6.1" 3498 | source = "registry+https://github.com/rust-lang/crates.io-index" 3499 | checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" 3500 | dependencies = [ 3501 | "sha1_smol", 3502 | ] 3503 | 3504 | [[package]] 3505 | name = "sha1_smol" 3506 | version = "1.0.0" 3507 | source = "registry+https://github.com/rust-lang/crates.io-index" 3508 | checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" 3509 | 3510 | [[package]] 3511 | name = "sha2" 3512 | version = "0.8.2" 3513 | source = "registry+https://github.com/rust-lang/crates.io-index" 3514 | checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" 3515 | dependencies = [ 3516 | "block-buffer 0.7.3", 3517 | "digest 0.8.1", 3518 | "fake-simd", 3519 | "opaque-debug 0.2.3", 3520 | ] 3521 | 3522 | [[package]] 3523 | name = "sha2" 3524 | version = "0.9.9" 3525 | source = "registry+https://github.com/rust-lang/crates.io-index" 3526 | checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" 3527 | dependencies = [ 3528 | "block-buffer 0.9.0", 3529 | "cfg-if", 3530 | "cpufeatures", 3531 | "digest 0.9.0", 3532 | "opaque-debug 0.3.0", 3533 | ] 3534 | 3535 | [[package]] 3536 | name = "sha2" 3537 | version = "0.10.6" 3538 | source = "registry+https://github.com/rust-lang/crates.io-index" 3539 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 3540 | dependencies = [ 3541 | "cfg-if", 3542 | "cpufeatures", 3543 | "digest 0.10.6", 3544 | ] 3545 | 3546 | [[package]] 3547 | name = "sha3" 3548 | version = "0.9.1" 3549 | source = "registry+https://github.com/rust-lang/crates.io-index" 3550 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 3551 | dependencies = [ 3552 | "block-buffer 0.9.0", 3553 | "digest 0.9.0", 3554 | "keccak", 3555 | "opaque-debug 0.3.0", 3556 | ] 3557 | 3558 | [[package]] 3559 | name = "sha3" 3560 | version = "0.10.6" 3561 | source = "registry+https://github.com/rust-lang/crates.io-index" 3562 | checksum = "bdf0c33fae925bdc080598b84bc15c55e7b9a4a43b3c704da051f977469691c9" 3563 | dependencies = [ 3564 | "digest 0.10.6", 3565 | "keccak", 3566 | ] 3567 | 3568 | [[package]] 3569 | name = "sharded-slab" 3570 | version = "0.1.4" 3571 | source = "registry+https://github.com/rust-lang/crates.io-index" 3572 | checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" 3573 | dependencies = [ 3574 | "lazy_static", 3575 | ] 3576 | 3577 | [[package]] 3578 | name = "signal-hook-registry" 3579 | version = "1.4.0" 3580 | source = "registry+https://github.com/rust-lang/crates.io-index" 3581 | checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" 3582 | dependencies = [ 3583 | "libc", 3584 | ] 3585 | 3586 | [[package]] 3587 | name = "signature" 3588 | version = "1.6.4" 3589 | source = "registry+https://github.com/rust-lang/crates.io-index" 3590 | checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 3591 | dependencies = [ 3592 | "digest 0.10.6", 3593 | "rand_core 0.6.4", 3594 | ] 3595 | 3596 | [[package]] 3597 | name = "simple-mutex" 3598 | version = "1.1.5" 3599 | source = "registry+https://github.com/rust-lang/crates.io-index" 3600 | checksum = "38aabbeafa6f6dead8cebf246fe9fae1f9215c8d29b3a69f93bd62a9e4a3dcd6" 3601 | dependencies = [ 3602 | "event-listener", 3603 | ] 3604 | 3605 | [[package]] 3606 | name = "slab" 3607 | version = "0.4.7" 3608 | source = "registry+https://github.com/rust-lang/crates.io-index" 3609 | checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" 3610 | dependencies = [ 3611 | "autocfg", 3612 | ] 3613 | 3614 | [[package]] 3615 | name = "smallvec" 3616 | version = "1.10.0" 3617 | source = "registry+https://github.com/rust-lang/crates.io-index" 3618 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 3619 | 3620 | [[package]] 3621 | name = "socket2" 3622 | version = "0.4.7" 3623 | source = "registry+https://github.com/rust-lang/crates.io-index" 3624 | checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" 3625 | dependencies = [ 3626 | "libc", 3627 | "winapi", 3628 | ] 3629 | 3630 | [[package]] 3631 | name = "spin" 3632 | version = "0.5.2" 3633 | source = "registry+https://github.com/rust-lang/crates.io-index" 3634 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 3635 | 3636 | [[package]] 3637 | name = "spin" 3638 | version = "0.9.4" 3639 | source = "registry+https://github.com/rust-lang/crates.io-index" 3640 | checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" 3641 | 3642 | [[package]] 3643 | name = "spki" 3644 | version = "0.6.0" 3645 | source = "registry+https://github.com/rust-lang/crates.io-index" 3646 | checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" 3647 | dependencies = [ 3648 | "base64ct", 3649 | "der 0.6.0", 3650 | ] 3651 | 3652 | [[package]] 3653 | name = "standback" 3654 | version = "0.2.17" 3655 | source = "registry+https://github.com/rust-lang/crates.io-index" 3656 | checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" 3657 | dependencies = [ 3658 | "version_check", 3659 | ] 3660 | 3661 | [[package]] 3662 | name = "static_assertions" 3663 | version = "1.1.0" 3664 | source = "registry+https://github.com/rust-lang/crates.io-index" 3665 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3666 | 3667 | [[package]] 3668 | name = "stdweb" 3669 | version = "0.4.20" 3670 | source = "registry+https://github.com/rust-lang/crates.io-index" 3671 | checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" 3672 | dependencies = [ 3673 | "discard", 3674 | "rustc_version 0.2.3", 3675 | "stdweb-derive", 3676 | "stdweb-internal-macros", 3677 | "stdweb-internal-runtime", 3678 | "wasm-bindgen", 3679 | ] 3680 | 3681 | [[package]] 3682 | name = "stdweb-derive" 3683 | version = "0.5.3" 3684 | source = "registry+https://github.com/rust-lang/crates.io-index" 3685 | checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" 3686 | dependencies = [ 3687 | "proc-macro2", 3688 | "quote", 3689 | "serde", 3690 | "serde_derive", 3691 | "syn", 3692 | ] 3693 | 3694 | [[package]] 3695 | name = "stdweb-internal-macros" 3696 | version = "0.2.9" 3697 | source = "registry+https://github.com/rust-lang/crates.io-index" 3698 | checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" 3699 | dependencies = [ 3700 | "base-x", 3701 | "proc-macro2", 3702 | "quote", 3703 | "serde", 3704 | "serde_derive", 3705 | "serde_json", 3706 | "sha1", 3707 | "syn", 3708 | ] 3709 | 3710 | [[package]] 3711 | name = "stdweb-internal-runtime" 3712 | version = "0.1.5" 3713 | source = "registry+https://github.com/rust-lang/crates.io-index" 3714 | checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" 3715 | 3716 | [[package]] 3717 | name = "strsim" 3718 | version = "0.10.0" 3719 | source = "registry+https://github.com/rust-lang/crates.io-index" 3720 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 3721 | 3722 | [[package]] 3723 | name = "strum" 3724 | version = "0.21.0" 3725 | source = "registry+https://github.com/rust-lang/crates.io-index" 3726 | checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" 3727 | 3728 | [[package]] 3729 | name = "strum" 3730 | version = "0.24.1" 3731 | source = "registry+https://github.com/rust-lang/crates.io-index" 3732 | checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" 3733 | 3734 | [[package]] 3735 | name = "strum_macros" 3736 | version = "0.21.1" 3737 | source = "registry+https://github.com/rust-lang/crates.io-index" 3738 | checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" 3739 | dependencies = [ 3740 | "heck 0.3.3", 3741 | "proc-macro2", 3742 | "quote", 3743 | "syn", 3744 | ] 3745 | 3746 | [[package]] 3747 | name = "strum_macros" 3748 | version = "0.24.3" 3749 | source = "registry+https://github.com/rust-lang/crates.io-index" 3750 | checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" 3751 | dependencies = [ 3752 | "heck 0.4.0", 3753 | "proc-macro2", 3754 | "quote", 3755 | "rustversion", 3756 | "syn", 3757 | ] 3758 | 3759 | [[package]] 3760 | name = "subtle" 3761 | version = "2.4.1" 3762 | source = "registry+https://github.com/rust-lang/crates.io-index" 3763 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 3764 | 3765 | [[package]] 3766 | name = "surf" 3767 | version = "2.3.2" 3768 | source = "registry+https://github.com/rust-lang/crates.io-index" 3769 | checksum = "718b1ae6b50351982dedff021db0def601677f2120938b070eadb10ba4038dd7" 3770 | dependencies = [ 3771 | "async-std", 3772 | "async-trait", 3773 | "cfg-if", 3774 | "futures-util", 3775 | "getrandom 0.2.8", 3776 | "http-client", 3777 | "http-types", 3778 | "log", 3779 | "mime_guess", 3780 | "once_cell", 3781 | "pin-project-lite", 3782 | "rustls 0.18.1", 3783 | "serde", 3784 | "serde_json", 3785 | ] 3786 | 3787 | [[package]] 3788 | name = "syn" 3789 | version = "1.0.103" 3790 | source = "registry+https://github.com/rust-lang/crates.io-index" 3791 | checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" 3792 | dependencies = [ 3793 | "proc-macro2", 3794 | "quote", 3795 | "unicode-ident", 3796 | ] 3797 | 3798 | [[package]] 3799 | name = "sync_wrapper" 3800 | version = "0.1.1" 3801 | source = "registry+https://github.com/rust-lang/crates.io-index" 3802 | checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" 3803 | 3804 | [[package]] 3805 | name = "synstructure" 3806 | version = "0.12.6" 3807 | source = "registry+https://github.com/rust-lang/crates.io-index" 3808 | checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" 3809 | dependencies = [ 3810 | "proc-macro2", 3811 | "quote", 3812 | "syn", 3813 | "unicode-xid", 3814 | ] 3815 | 3816 | [[package]] 3817 | name = "tai64" 3818 | version = "4.0.0" 3819 | source = "registry+https://github.com/rust-lang/crates.io-index" 3820 | checksum = "ed7401421025f4132e6c1f7af5e7f8287383969f36e6628016cd509b8d3da9dc" 3821 | dependencies = [ 3822 | "serde", 3823 | ] 3824 | 3825 | [[package]] 3826 | name = "tempfile" 3827 | version = "3.3.0" 3828 | source = "registry+https://github.com/rust-lang/crates.io-index" 3829 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 3830 | dependencies = [ 3831 | "cfg-if", 3832 | "fastrand", 3833 | "libc", 3834 | "redox_syscall", 3835 | "remove_dir_all", 3836 | "winapi", 3837 | ] 3838 | 3839 | [[package]] 3840 | name = "termcolor" 3841 | version = "1.1.3" 3842 | source = "registry+https://github.com/rust-lang/crates.io-index" 3843 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 3844 | dependencies = [ 3845 | "winapi-util", 3846 | ] 3847 | 3848 | [[package]] 3849 | name = "textwrap" 3850 | version = "0.16.0" 3851 | source = "registry+https://github.com/rust-lang/crates.io-index" 3852 | checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" 3853 | 3854 | [[package]] 3855 | name = "thiserror" 3856 | version = "1.0.37" 3857 | source = "registry+https://github.com/rust-lang/crates.io-index" 3858 | checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" 3859 | dependencies = [ 3860 | "thiserror-impl", 3861 | ] 3862 | 3863 | [[package]] 3864 | name = "thiserror-impl" 3865 | version = "1.0.37" 3866 | source = "registry+https://github.com/rust-lang/crates.io-index" 3867 | checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" 3868 | dependencies = [ 3869 | "proc-macro2", 3870 | "quote", 3871 | "syn", 3872 | ] 3873 | 3874 | [[package]] 3875 | name = "thread_local" 3876 | version = "1.1.4" 3877 | source = "registry+https://github.com/rust-lang/crates.io-index" 3878 | checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" 3879 | dependencies = [ 3880 | "once_cell", 3881 | ] 3882 | 3883 | [[package]] 3884 | name = "time" 3885 | version = "0.1.44" 3886 | source = "registry+https://github.com/rust-lang/crates.io-index" 3887 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 3888 | dependencies = [ 3889 | "libc", 3890 | "wasi 0.10.0+wasi-snapshot-preview1", 3891 | "winapi", 3892 | ] 3893 | 3894 | [[package]] 3895 | name = "time" 3896 | version = "0.2.27" 3897 | source = "registry+https://github.com/rust-lang/crates.io-index" 3898 | checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" 3899 | dependencies = [ 3900 | "const_fn", 3901 | "libc", 3902 | "standback", 3903 | "stdweb", 3904 | "time-macros", 3905 | "version_check", 3906 | "winapi", 3907 | ] 3908 | 3909 | [[package]] 3910 | name = "time-macros" 3911 | version = "0.1.1" 3912 | source = "registry+https://github.com/rust-lang/crates.io-index" 3913 | checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" 3914 | dependencies = [ 3915 | "proc-macro-hack", 3916 | "time-macros-impl", 3917 | ] 3918 | 3919 | [[package]] 3920 | name = "time-macros-impl" 3921 | version = "0.1.2" 3922 | source = "registry+https://github.com/rust-lang/crates.io-index" 3923 | checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" 3924 | dependencies = [ 3925 | "proc-macro-hack", 3926 | "proc-macro2", 3927 | "quote", 3928 | "standback", 3929 | "syn", 3930 | ] 3931 | 3932 | [[package]] 3933 | name = "tinyvec" 3934 | version = "1.6.0" 3935 | source = "registry+https://github.com/rust-lang/crates.io-index" 3936 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3937 | dependencies = [ 3938 | "tinyvec_macros", 3939 | ] 3940 | 3941 | [[package]] 3942 | name = "tinyvec_macros" 3943 | version = "0.1.0" 3944 | source = "registry+https://github.com/rust-lang/crates.io-index" 3945 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 3946 | 3947 | [[package]] 3948 | name = "tokio" 3949 | version = "1.21.2" 3950 | source = "registry+https://github.com/rust-lang/crates.io-index" 3951 | checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" 3952 | dependencies = [ 3953 | "autocfg", 3954 | "bytes", 3955 | "libc", 3956 | "memchr", 3957 | "mio", 3958 | "num_cpus", 3959 | "parking_lot 0.12.1", 3960 | "pin-project-lite", 3961 | "signal-hook-registry", 3962 | "socket2", 3963 | "tokio-macros", 3964 | "winapi", 3965 | ] 3966 | 3967 | [[package]] 3968 | name = "tokio-io-timeout" 3969 | version = "1.2.0" 3970 | source = "registry+https://github.com/rust-lang/crates.io-index" 3971 | checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" 3972 | dependencies = [ 3973 | "pin-project-lite", 3974 | "tokio", 3975 | ] 3976 | 3977 | [[package]] 3978 | name = "tokio-macros" 3979 | version = "1.8.0" 3980 | source = "registry+https://github.com/rust-lang/crates.io-index" 3981 | checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" 3982 | dependencies = [ 3983 | "proc-macro2", 3984 | "quote", 3985 | "syn", 3986 | ] 3987 | 3988 | [[package]] 3989 | name = "tokio-rustls" 3990 | version = "0.22.0" 3991 | source = "registry+https://github.com/rust-lang/crates.io-index" 3992 | checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" 3993 | dependencies = [ 3994 | "rustls 0.19.1", 3995 | "tokio", 3996 | "webpki", 3997 | ] 3998 | 3999 | [[package]] 4000 | name = "tokio-stream" 4001 | version = "0.1.11" 4002 | source = "registry+https://github.com/rust-lang/crates.io-index" 4003 | checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" 4004 | dependencies = [ 4005 | "futures-core", 4006 | "pin-project-lite", 4007 | "tokio", 4008 | "tokio-util", 4009 | ] 4010 | 4011 | [[package]] 4012 | name = "tokio-util" 4013 | version = "0.7.4" 4014 | source = "registry+https://github.com/rust-lang/crates.io-index" 4015 | checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" 4016 | dependencies = [ 4017 | "bytes", 4018 | "futures-core", 4019 | "futures-sink", 4020 | "pin-project-lite", 4021 | "tokio", 4022 | "tracing", 4023 | ] 4024 | 4025 | [[package]] 4026 | name = "toml" 4027 | version = "0.5.9" 4028 | source = "registry+https://github.com/rust-lang/crates.io-index" 4029 | checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" 4030 | dependencies = [ 4031 | "serde", 4032 | ] 4033 | 4034 | [[package]] 4035 | name = "tower" 4036 | version = "0.4.13" 4037 | source = "registry+https://github.com/rust-lang/crates.io-index" 4038 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 4039 | dependencies = [ 4040 | "futures-core", 4041 | "futures-util", 4042 | "pin-project", 4043 | "pin-project-lite", 4044 | "tokio", 4045 | "tower-layer", 4046 | "tower-service", 4047 | "tracing", 4048 | ] 4049 | 4050 | [[package]] 4051 | name = "tower-http" 4052 | version = "0.3.4" 4053 | source = "registry+https://github.com/rust-lang/crates.io-index" 4054 | checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba" 4055 | dependencies = [ 4056 | "bitflags", 4057 | "bytes", 4058 | "futures-core", 4059 | "futures-util", 4060 | "http", 4061 | "http-body", 4062 | "http-range-header", 4063 | "pin-project-lite", 4064 | "tower", 4065 | "tower-layer", 4066 | "tower-service", 4067 | "tracing", 4068 | ] 4069 | 4070 | [[package]] 4071 | name = "tower-layer" 4072 | version = "0.3.2" 4073 | source = "registry+https://github.com/rust-lang/crates.io-index" 4074 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 4075 | 4076 | [[package]] 4077 | name = "tower-service" 4078 | version = "0.3.2" 4079 | source = "registry+https://github.com/rust-lang/crates.io-index" 4080 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 4081 | 4082 | [[package]] 4083 | name = "tracing" 4084 | version = "0.1.37" 4085 | source = "registry+https://github.com/rust-lang/crates.io-index" 4086 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 4087 | dependencies = [ 4088 | "cfg-if", 4089 | "log", 4090 | "pin-project-lite", 4091 | "tracing-attributes", 4092 | "tracing-core", 4093 | ] 4094 | 4095 | [[package]] 4096 | name = "tracing-attributes" 4097 | version = "0.1.23" 4098 | source = "registry+https://github.com/rust-lang/crates.io-index" 4099 | checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" 4100 | dependencies = [ 4101 | "proc-macro2", 4102 | "quote", 4103 | "syn", 4104 | ] 4105 | 4106 | [[package]] 4107 | name = "tracing-core" 4108 | version = "0.1.30" 4109 | source = "registry+https://github.com/rust-lang/crates.io-index" 4110 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 4111 | dependencies = [ 4112 | "once_cell", 4113 | "valuable", 4114 | ] 4115 | 4116 | [[package]] 4117 | name = "tracing-futures" 4118 | version = "0.2.5" 4119 | source = "registry+https://github.com/rust-lang/crates.io-index" 4120 | checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" 4121 | dependencies = [ 4122 | "futures", 4123 | "futures-task", 4124 | "pin-project", 4125 | "tracing", 4126 | ] 4127 | 4128 | [[package]] 4129 | name = "tracing-log" 4130 | version = "0.1.3" 4131 | source = "registry+https://github.com/rust-lang/crates.io-index" 4132 | checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" 4133 | dependencies = [ 4134 | "lazy_static", 4135 | "log", 4136 | "tracing-core", 4137 | ] 4138 | 4139 | [[package]] 4140 | name = "tracing-serde" 4141 | version = "0.1.3" 4142 | source = "registry+https://github.com/rust-lang/crates.io-index" 4143 | checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" 4144 | dependencies = [ 4145 | "serde", 4146 | "tracing-core", 4147 | ] 4148 | 4149 | [[package]] 4150 | name = "tracing-subscriber" 4151 | version = "0.3.16" 4152 | source = "registry+https://github.com/rust-lang/crates.io-index" 4153 | checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" 4154 | dependencies = [ 4155 | "matchers", 4156 | "nu-ansi-term", 4157 | "once_cell", 4158 | "regex", 4159 | "serde", 4160 | "serde_json", 4161 | "sharded-slab", 4162 | "smallvec", 4163 | "thread_local", 4164 | "tracing", 4165 | "tracing-core", 4166 | "tracing-log", 4167 | "tracing-serde", 4168 | ] 4169 | 4170 | [[package]] 4171 | name = "try-lock" 4172 | version = "0.2.3" 4173 | source = "registry+https://github.com/rust-lang/crates.io-index" 4174 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 4175 | 4176 | [[package]] 4177 | name = "typenum" 4178 | version = "1.15.0" 4179 | source = "registry+https://github.com/rust-lang/crates.io-index" 4180 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 4181 | 4182 | [[package]] 4183 | name = "ucd-trie" 4184 | version = "0.1.5" 4185 | source = "registry+https://github.com/rust-lang/crates.io-index" 4186 | checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" 4187 | 4188 | [[package]] 4189 | name = "unicase" 4190 | version = "2.6.0" 4191 | source = "registry+https://github.com/rust-lang/crates.io-index" 4192 | checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" 4193 | dependencies = [ 4194 | "version_check", 4195 | ] 4196 | 4197 | [[package]] 4198 | name = "unicode-bidi" 4199 | version = "0.3.8" 4200 | source = "registry+https://github.com/rust-lang/crates.io-index" 4201 | checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" 4202 | 4203 | [[package]] 4204 | name = "unicode-ident" 4205 | version = "1.0.5" 4206 | source = "registry+https://github.com/rust-lang/crates.io-index" 4207 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 4208 | 4209 | [[package]] 4210 | name = "unicode-normalization" 4211 | version = "0.1.22" 4212 | source = "registry+https://github.com/rust-lang/crates.io-index" 4213 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 4214 | dependencies = [ 4215 | "tinyvec", 4216 | ] 4217 | 4218 | [[package]] 4219 | name = "unicode-segmentation" 4220 | version = "1.10.0" 4221 | source = "registry+https://github.com/rust-lang/crates.io-index" 4222 | checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" 4223 | 4224 | [[package]] 4225 | name = "unicode-width" 4226 | version = "0.1.10" 4227 | source = "registry+https://github.com/rust-lang/crates.io-index" 4228 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 4229 | 4230 | [[package]] 4231 | name = "unicode-xid" 4232 | version = "0.2.4" 4233 | source = "registry+https://github.com/rust-lang/crates.io-index" 4234 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 4235 | 4236 | [[package]] 4237 | name = "universal-hash" 4238 | version = "0.4.1" 4239 | source = "registry+https://github.com/rust-lang/crates.io-index" 4240 | checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" 4241 | dependencies = [ 4242 | "generic-array 0.14.6", 4243 | "subtle", 4244 | ] 4245 | 4246 | [[package]] 4247 | name = "unreachable" 4248 | version = "1.0.0" 4249 | source = "registry+https://github.com/rust-lang/crates.io-index" 4250 | checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 4251 | dependencies = [ 4252 | "void", 4253 | ] 4254 | 4255 | [[package]] 4256 | name = "untrusted" 4257 | version = "0.7.1" 4258 | source = "registry+https://github.com/rust-lang/crates.io-index" 4259 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 4260 | 4261 | [[package]] 4262 | name = "url" 4263 | version = "2.3.1" 4264 | source = "registry+https://github.com/rust-lang/crates.io-index" 4265 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 4266 | dependencies = [ 4267 | "form_urlencoded", 4268 | "idna", 4269 | "percent-encoding", 4270 | "serde", 4271 | ] 4272 | 4273 | [[package]] 4274 | name = "uuid" 4275 | version = "0.8.2" 4276 | source = "registry+https://github.com/rust-lang/crates.io-index" 4277 | checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" 4278 | dependencies = [ 4279 | "getrandom 0.2.8", 4280 | "serde", 4281 | ] 4282 | 4283 | [[package]] 4284 | name = "uuid" 4285 | version = "1.2.2" 4286 | source = "registry+https://github.com/rust-lang/crates.io-index" 4287 | checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" 4288 | dependencies = [ 4289 | "getrandom 0.2.8", 4290 | ] 4291 | 4292 | [[package]] 4293 | name = "valuable" 4294 | version = "0.1.0" 4295 | source = "registry+https://github.com/rust-lang/crates.io-index" 4296 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 4297 | 4298 | [[package]] 4299 | name = "value-bag" 4300 | version = "1.0.0-alpha.9" 4301 | source = "registry+https://github.com/rust-lang/crates.io-index" 4302 | checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 4303 | dependencies = [ 4304 | "ctor", 4305 | "version_check", 4306 | ] 4307 | 4308 | [[package]] 4309 | name = "version_check" 4310 | version = "0.9.4" 4311 | source = "registry+https://github.com/rust-lang/crates.io-index" 4312 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 4313 | 4314 | [[package]] 4315 | name = "void" 4316 | version = "1.0.2" 4317 | source = "registry+https://github.com/rust-lang/crates.io-index" 4318 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 4319 | 4320 | [[package]] 4321 | name = "waker-fn" 4322 | version = "1.1.0" 4323 | source = "registry+https://github.com/rust-lang/crates.io-index" 4324 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 4325 | 4326 | [[package]] 4327 | name = "want" 4328 | version = "0.3.0" 4329 | source = "registry+https://github.com/rust-lang/crates.io-index" 4330 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 4331 | dependencies = [ 4332 | "log", 4333 | "try-lock", 4334 | ] 4335 | 4336 | [[package]] 4337 | name = "wasi" 4338 | version = "0.9.0+wasi-snapshot-preview1" 4339 | source = "registry+https://github.com/rust-lang/crates.io-index" 4340 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 4341 | 4342 | [[package]] 4343 | name = "wasi" 4344 | version = "0.10.0+wasi-snapshot-preview1" 4345 | source = "registry+https://github.com/rust-lang/crates.io-index" 4346 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 4347 | 4348 | [[package]] 4349 | name = "wasi" 4350 | version = "0.11.0+wasi-snapshot-preview1" 4351 | source = "registry+https://github.com/rust-lang/crates.io-index" 4352 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 4353 | 4354 | [[package]] 4355 | name = "wasm-bindgen" 4356 | version = "0.2.83" 4357 | source = "registry+https://github.com/rust-lang/crates.io-index" 4358 | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" 4359 | dependencies = [ 4360 | "cfg-if", 4361 | "wasm-bindgen-macro", 4362 | ] 4363 | 4364 | [[package]] 4365 | name = "wasm-bindgen-backend" 4366 | version = "0.2.83" 4367 | source = "registry+https://github.com/rust-lang/crates.io-index" 4368 | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" 4369 | dependencies = [ 4370 | "bumpalo", 4371 | "log", 4372 | "once_cell", 4373 | "proc-macro2", 4374 | "quote", 4375 | "syn", 4376 | "wasm-bindgen-shared", 4377 | ] 4378 | 4379 | [[package]] 4380 | name = "wasm-bindgen-futures" 4381 | version = "0.4.33" 4382 | source = "registry+https://github.com/rust-lang/crates.io-index" 4383 | checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" 4384 | dependencies = [ 4385 | "cfg-if", 4386 | "js-sys", 4387 | "wasm-bindgen", 4388 | "web-sys", 4389 | ] 4390 | 4391 | [[package]] 4392 | name = "wasm-bindgen-macro" 4393 | version = "0.2.83" 4394 | source = "registry+https://github.com/rust-lang/crates.io-index" 4395 | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" 4396 | dependencies = [ 4397 | "quote", 4398 | "wasm-bindgen-macro-support", 4399 | ] 4400 | 4401 | [[package]] 4402 | name = "wasm-bindgen-macro-support" 4403 | version = "0.2.83" 4404 | source = "registry+https://github.com/rust-lang/crates.io-index" 4405 | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" 4406 | dependencies = [ 4407 | "proc-macro2", 4408 | "quote", 4409 | "syn", 4410 | "wasm-bindgen-backend", 4411 | "wasm-bindgen-shared", 4412 | ] 4413 | 4414 | [[package]] 4415 | name = "wasm-bindgen-shared" 4416 | version = "0.2.83" 4417 | source = "registry+https://github.com/rust-lang/crates.io-index" 4418 | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" 4419 | 4420 | [[package]] 4421 | name = "web-sys" 4422 | version = "0.3.60" 4423 | source = "registry+https://github.com/rust-lang/crates.io-index" 4424 | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" 4425 | dependencies = [ 4426 | "js-sys", 4427 | "wasm-bindgen", 4428 | ] 4429 | 4430 | [[package]] 4431 | name = "webpki" 4432 | version = "0.21.4" 4433 | source = "registry+https://github.com/rust-lang/crates.io-index" 4434 | checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" 4435 | dependencies = [ 4436 | "ring", 4437 | "untrusted", 4438 | ] 4439 | 4440 | [[package]] 4441 | name = "webpki-roots" 4442 | version = "0.20.0" 4443 | source = "registry+https://github.com/rust-lang/crates.io-index" 4444 | checksum = "0f20dea7535251981a9670857150d571846545088359b28e4951d350bdaf179f" 4445 | dependencies = [ 4446 | "webpki", 4447 | ] 4448 | 4449 | [[package]] 4450 | name = "wepoll-ffi" 4451 | version = "0.1.2" 4452 | source = "registry+https://github.com/rust-lang/crates.io-index" 4453 | checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" 4454 | dependencies = [ 4455 | "cc", 4456 | ] 4457 | 4458 | [[package]] 4459 | name = "which" 4460 | version = "4.3.0" 4461 | source = "registry+https://github.com/rust-lang/crates.io-index" 4462 | checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b" 4463 | dependencies = [ 4464 | "either", 4465 | "libc", 4466 | "once_cell", 4467 | ] 4468 | 4469 | [[package]] 4470 | name = "winapi" 4471 | version = "0.3.9" 4472 | source = "registry+https://github.com/rust-lang/crates.io-index" 4473 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4474 | dependencies = [ 4475 | "winapi-i686-pc-windows-gnu", 4476 | "winapi-x86_64-pc-windows-gnu", 4477 | ] 4478 | 4479 | [[package]] 4480 | name = "winapi-i686-pc-windows-gnu" 4481 | version = "0.4.0" 4482 | source = "registry+https://github.com/rust-lang/crates.io-index" 4483 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4484 | 4485 | [[package]] 4486 | name = "winapi-util" 4487 | version = "0.1.5" 4488 | source = "registry+https://github.com/rust-lang/crates.io-index" 4489 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 4490 | dependencies = [ 4491 | "winapi", 4492 | ] 4493 | 4494 | [[package]] 4495 | name = "winapi-x86_64-pc-windows-gnu" 4496 | version = "0.4.0" 4497 | source = "registry+https://github.com/rust-lang/crates.io-index" 4498 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4499 | 4500 | [[package]] 4501 | name = "windows-sys" 4502 | version = "0.36.1" 4503 | source = "registry+https://github.com/rust-lang/crates.io-index" 4504 | checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" 4505 | dependencies = [ 4506 | "windows_aarch64_msvc 0.36.1", 4507 | "windows_i686_gnu 0.36.1", 4508 | "windows_i686_msvc 0.36.1", 4509 | "windows_x86_64_gnu 0.36.1", 4510 | "windows_x86_64_msvc 0.36.1", 4511 | ] 4512 | 4513 | [[package]] 4514 | name = "windows-sys" 4515 | version = "0.42.0" 4516 | source = "registry+https://github.com/rust-lang/crates.io-index" 4517 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 4518 | dependencies = [ 4519 | "windows_aarch64_gnullvm", 4520 | "windows_aarch64_msvc 0.42.0", 4521 | "windows_i686_gnu 0.42.0", 4522 | "windows_i686_msvc 0.42.0", 4523 | "windows_x86_64_gnu 0.42.0", 4524 | "windows_x86_64_gnullvm", 4525 | "windows_x86_64_msvc 0.42.0", 4526 | ] 4527 | 4528 | [[package]] 4529 | name = "windows_aarch64_gnullvm" 4530 | version = "0.42.0" 4531 | source = "registry+https://github.com/rust-lang/crates.io-index" 4532 | checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" 4533 | 4534 | [[package]] 4535 | name = "windows_aarch64_msvc" 4536 | version = "0.36.1" 4537 | source = "registry+https://github.com/rust-lang/crates.io-index" 4538 | checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" 4539 | 4540 | [[package]] 4541 | name = "windows_aarch64_msvc" 4542 | version = "0.42.0" 4543 | source = "registry+https://github.com/rust-lang/crates.io-index" 4544 | checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" 4545 | 4546 | [[package]] 4547 | name = "windows_i686_gnu" 4548 | version = "0.36.1" 4549 | source = "registry+https://github.com/rust-lang/crates.io-index" 4550 | checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" 4551 | 4552 | [[package]] 4553 | name = "windows_i686_gnu" 4554 | version = "0.42.0" 4555 | source = "registry+https://github.com/rust-lang/crates.io-index" 4556 | checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" 4557 | 4558 | [[package]] 4559 | name = "windows_i686_msvc" 4560 | version = "0.36.1" 4561 | source = "registry+https://github.com/rust-lang/crates.io-index" 4562 | checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" 4563 | 4564 | [[package]] 4565 | name = "windows_i686_msvc" 4566 | version = "0.42.0" 4567 | source = "registry+https://github.com/rust-lang/crates.io-index" 4568 | checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" 4569 | 4570 | [[package]] 4571 | name = "windows_x86_64_gnu" 4572 | version = "0.36.1" 4573 | source = "registry+https://github.com/rust-lang/crates.io-index" 4574 | checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" 4575 | 4576 | [[package]] 4577 | name = "windows_x86_64_gnu" 4578 | version = "0.42.0" 4579 | source = "registry+https://github.com/rust-lang/crates.io-index" 4580 | checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" 4581 | 4582 | [[package]] 4583 | name = "windows_x86_64_gnullvm" 4584 | version = "0.42.0" 4585 | source = "registry+https://github.com/rust-lang/crates.io-index" 4586 | checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" 4587 | 4588 | [[package]] 4589 | name = "windows_x86_64_msvc" 4590 | version = "0.36.1" 4591 | source = "registry+https://github.com/rust-lang/crates.io-index" 4592 | checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" 4593 | 4594 | [[package]] 4595 | name = "windows_x86_64_msvc" 4596 | version = "0.42.0" 4597 | source = "registry+https://github.com/rust-lang/crates.io-index" 4598 | checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" 4599 | 4600 | [[package]] 4601 | name = "zeroize" 4602 | version = "1.5.7" 4603 | source = "registry+https://github.com/rust-lang/crates.io-index" 4604 | checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" 4605 | dependencies = [ 4606 | "zeroize_derive", 4607 | ] 4608 | 4609 | [[package]] 4610 | name = "zeroize_derive" 4611 | version = "1.3.2" 4612 | source = "registry+https://github.com/rust-lang/crates.io-index" 4613 | checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" 4614 | dependencies = [ 4615 | "proc-macro2", 4616 | "quote", 4617 | "syn", 4618 | "synstructure", 4619 | ] 4620 | --------------------------------------------------------------------------------