├── .babelrc
├── .env
├── .gitignore
├── README.md
├── app
├── favicon.ico
├── globals.css
├── layout.tsx
└── page.tsx
├── dist
├── DisplayStamps.js
├── NoScoreMessage.js
├── PassportGate.js
├── PassportScore.js
├── app
│ ├── layout.jsx
│ └── page.jsx
├── index.js
├── src
│ ├── DisplayStamps.jsx
│ ├── NoScoreMessage.jsx
│ ├── PassportGate.jsx
│ └── PassportScore.jsx
├── tsconfig.tsbuildinfo
└── types
│ ├── app
│ ├── layout.d.ts
│ └── page.d.ts
│ ├── index.d.ts
│ └── src
│ ├── DisplayStamps.d.ts
│ ├── NoScoreMessage.d.ts
│ ├── PassportGate.d.ts
│ └── PassportScore.d.ts
├── index.ts
├── next-env.d.ts
├── next.config.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── hover.png
├── info.png
├── logo.png
├── next.svg
├── paragraph.png
├── passportLogo.png
└── vercel.svg
├── src
├── DisplayStamps.css
├── DisplayStamps.tsx
├── NoScoreMessage.tsx
├── PassportGate.tsx
└── PassportScore.tsx
├── tailwind.config.js
└── tsconfig.json
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-typescript"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/.env:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_GC_API_KEY=dlOjZa9P.FWHqXutxRMiIPH0lglnXEW94BU35JkNX
2 | NEXT_PUBLIC_GC_SCORER_ID=698
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .next
3 | .history
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | # or
12 | pnpm dev
13 | ```
14 |
15 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
16 |
17 | You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
18 |
19 | This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
20 |
21 | ## Learn More
22 |
23 | To learn more about Next.js, take a look at the following resources:
24 |
25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
27 |
28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
29 |
30 | ## Deploy on Vercel
31 |
32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
33 |
34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
35 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/app/favicon.ico
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | /* @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities; */
4 |
5 | :root {
6 | --foreground-rgb: 0, 0, 0;
7 | --background-rgb: #0B110F
8 | }
9 |
10 | @media (prefers-color-scheme: dark) {
11 | :root {
12 | --foreground-rgb: 255, 255, 255;
13 | --background-rgb: 255, 255, 255;
14 | }
15 | }
16 |
17 | body {
18 | color: #0B110F;
19 | background: #0B110F
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import './globals.css'
2 | // import { Inter } from 'next/font/google'
3 | // import { Libre_Franklin } from 'next/font/google'
4 |
5 | // const libreFranklin = Libre_Franklin({ subsets: ['latin'] })
6 | // const inter = Inter({ subsets: ['latin'] })
7 |
8 | export const metadata = {
9 | title: 'Create Next App',
10 | description: 'Generated by create next app',
11 | }
12 |
13 | export default function RootLayout({
14 | children,
15 | }: {
16 | children: React.ReactNode
17 | }) {
18 | return (
19 |
20 | {/*
{children} */}
21 | {children}
22 |
23 | )
24 | }
25 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | // import the necessary packages
2 | 'use client'
3 | import { useState, useEffect } from 'react'
4 | import { ethers } from 'ethers'
5 | import { DisplayStamps } from '@/src/DisplayStamps'
6 | import { PassportGate } from '../src/PassportGate'
7 | import { PassportScore } from '../src/PassportScore'
8 | import Image from 'next/image'
9 |
10 | //import { logo } from '../public/gitcoing-logo.png'
11 |
12 | // these lines read the API key and scorer ID from your .env.local file
13 | const APIKEY = process.env.NEXT_PUBLIC_GC_API_KEY
14 | const SCORER_ID = process.env.NEXT_PUBLIC_GC_SCORER_ID
15 |
16 | // these lines add the corretc header information to the request
17 | const headers = APIKEY ? ({
18 | 'Content-Type': 'application/json',
19 | 'X-API-Key': APIKEY
20 | }) : undefined
21 |
22 | // enable wallet interactions
23 | declare global {
24 | interface Window{
25 | ethereum?: any
26 | }
27 | }
28 |
29 | export default function Passport() {
30 | // here we deal with any local state we need to manage
31 | const [address, setAddress] = useState('')
32 | const [connected, setConnected] = useState(false)
33 |
34 | /* todo check user's connection when the app loads */
35 | async function connect() {
36 | try {
37 | const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' })
38 | setAddress(accounts[0])
39 | setConnected(true)
40 | } catch (err) {
41 | console.log('Error connecting wallet...', err)
42 | }
43 | }
44 |
45 | useEffect(() => {
46 | async function checkConnection() {
47 | try {
48 | const provider = new ethers.BrowserProvider(window.ethereum)
49 | const accounts = await provider.listAccounts()
50 | // if the user is connected, set their account and fetch their score
51 | if (accounts && accounts[0]) {
52 | setConnected(true)
53 | setAddress(accounts[0].address)
54 | }
55 | } catch (err) {
56 | console.log('No wallet connection detected...', err)
57 | }
58 | }
59 | checkConnection()
60 | }, [])
61 |
62 |
63 | return (
64 | /* this is the UI for the app */
65 |
66 |
67 |
68 |
69 |
Your citizenship pass for the decentralized internet.
70 | {/*
71 |
*/}
72 |
Gitcoin Passport is an identity verification application that enables users to collect verifiable credentials, proving their identity and trustworthiness. It provides access to secure web3 experiences and enhances secure participation in various online platforms.
73 |
74 | {/*
Gitcoin Passport Components */}
75 |
76 |
77 |
78 | {
79 | !connected && (
80 |
81 |
Connect Wallet Component
82 | Connect Wallet
83 |
84 | )
85 | }
86 | {
87 | connected && (
88 |
89 |
90 |
Passport score component
91 | {/* default */}
92 |
93 | {/* hide label */}
94 |
95 | {/* theme dark */}
96 |
97 | {/* hide info */}
98 |
99 | {/* add threshold */}
100 |
101 | {/* no score message */}
102 | {/* */}
103 |
104 |
105 | {/*
106 |
Secret message component
107 |
108 | */}
109 |
110 |
111 |
Display stamps component
112 | {/* */}
113 |
114 |
115 | )
116 | }
117 |
118 |
119 | )
120 | }
121 |
122 | const styles = {
123 | main: {
124 | width: '900px',
125 | margin: '0 auto',
126 | paddingTop: 90,
127 | //backgroundColor: '#0B110F'
128 | },
129 | header: {
130 | display: 'flex',
131 | justifyContent: 'center',
132 | alignItems: 'center',
133 | flexDirection: 'column' as 'column'
134 | },
135 | heading: {
136 | fontSize: 60,
137 | color: 'white'
138 | },
139 | image: {
140 | margin: 10,
141 | },
142 | intro: {
143 | fontSize: 18,
144 | color: 'white'
145 | },
146 | h2: {
147 | fontSize: 24,
148 | fontWeight: '300',
149 | color: '#B9B3FF'
150 | },
151 | p: {
152 | color: 'white',
153 | textAlign: 'center' as 'center',
154 | lineHeight: 1.5,
155 | width: '800px'
156 | },
157 | configurePassport: {
158 | marginTop: 20,
159 | },
160 | linkStyle: {
161 | color: '#008aff'
162 | },
163 | buttonContainer: {
164 | marginTop: 20
165 | },
166 | buttonStyle: {
167 | padding: '10px 30px',
168 | outline: 'none',
169 | border: 'none',
170 | cursor: 'pointer',
171 | marginRight: '10px',
172 | background: "#6935FF",
173 | borderRadius: "4px",
174 | color: "#ffffff"
175 |
176 |
177 | //borderBottom: '2px solid rgba(0, 0, 0, .2)',
178 | //borderRight: '2px solid rgba(0, 0, 0, .2)'
179 | },
180 | componentContainer: {
181 | marginTop: 15
182 | },
183 | noScoreMessage: {
184 | marginTop: 20
185 | }
186 | }
--------------------------------------------------------------------------------
/dist/DisplayStamps.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | Object.defineProperty(exports, "__esModule", {
4 | value: true
5 | });
6 | exports.DisplayStamps = void 0;
7 | var DisplayStamps = function DisplayStamps() {
8 | return ;
11 | };
12 |
13 | // import { Gorditas } from 'next/font/google';
14 | // import { useState, useEffect } from 'react';
15 | // import CSS from 'csstype';
16 |
17 | // interface Props {
18 | // headers?: Record;
19 | // currentAddress?: string;
20 | // }
21 |
22 | // interface Stamp {
23 | // version: string,
24 | // credential: Record,
25 | // metadata: Record
26 | // }
27 |
28 | // const ONCHAIN_GROUPS = ["Lens Handle", "zkSync 1.0", "NFT Holder", "Self GTC Staking", "Snapshot Voter", "Transactions", "Contributed to...", "Gas fees spent", "GTC possessions", 'Lens', 'POAP', 'Ens', 'NFT', 'EthGTEOneTxnProvider', 'FirstEthTxnProvider', ]
29 | // const ONCHAIN_STAMP_NAMES = ['Ens', 'POAP']
30 |
31 | // export const DisplayStamps: React.FC = ({ headers, currentAddress}: Props) => {
32 | // const [stamps, setStamps] = useState([])
33 | // const [noStampMessage, setNoStampMessage] = useState('')
34 |
35 | // useEffect(() => {
36 | // if(headers && currentAddress) {
37 | // fetchScore();
38 | // }
39 | // }, [headers, currentAddress]);
40 |
41 | // const fetchScore = async () => {
42 | // const GET_PASSPORT_STAMPS_URI = `https://api.scorer.gitcoin.co/registry/stamps/${currentAddress}?limit=1000&include_metadata=true`;
43 |
44 | // try {
45 | // const response = await fetch(GET_PASSPORT_STAMPS_URI, {
46 | // headers
47 | // });
48 |
49 | // const passportData = await response.json();
50 |
51 | // if (passportData && passportData.items) {
52 | // console.log(passportData.items)
53 | // setStamps(passportData.items)
54 | // } else {
55 | // setNoStampMessage('No stamps available, please submit your passport after you have added some stamps.');
56 | // }
57 | // } catch (err) {
58 | // console.log('error: ', err);
59 | // }
60 | // };
61 | // // If SCORER_ID or headers or currentAddress is undefined, display a message
62 | // if ( !headers || !currentAddress) {
63 | // return (
64 | //
65 | //
headers or currentAddress is undefined!
66 | //
67 | // )
68 | // }
69 |
70 | // if (noStampMessage != '') {
71 | // return (
72 | //
73 | //
{noStampMessage}
74 | //
75 | // )
76 | // }
77 |
78 | // return (
79 | //
80 | //
81 | // {stamps.map((stamp, index) => (
82 | //
83 | // {stamp.metadata.platform &&
}
84 | //
{stamp.metadata.platform.id}
85 | //
{stamp.metadata.group}
86 | //
87 | // {stamp.metadata.description}
88 | //
89 | //
90 | // ))}
91 | //
92 | //
93 | // )
94 | // }
95 |
96 | // const styles = {
97 | // h2: {
98 | // fontSize: 12,
99 | // fontWeight: 'normal',
100 | // color: 'white'
101 | // },
102 | // h3: {
103 | // color: 'white'
104 | // },
105 | // p: {
106 | // color: 'white'
107 | // },
108 | // li: {
109 | // color: 'white'
110 | // },
111 | // stampGrid: {
112 | // display: 'grid',
113 | // gridTemplateColumns: 'repeat(auto-fill, minmax(250px, 1fr))',
114 | // gap: '20px',
115 | // marginTop: 20
116 | // },
117 | // stampBox: {
118 | // border: '2px solid #19393F',
119 | // background: '#0C110F',
120 | // padding: '20px',
121 | // },
122 | // a: {
123 | // color: '#6F3FF5'
124 | // }
125 | // }
126 | exports.DisplayStamps = DisplayStamps;
127 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEaXNwbGF5U3RhbXBzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9EaXNwbGF5U3RhbXBzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRGlzcGxheVN0YW1wcyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHA+aGVsbG8gd29ybGQ8L3A+XG4gICAgICAgPC9kaXY+IFxuICAgIClcbn1cblxuLy8gaW1wb3J0IHsgR29yZGl0YXMgfSBmcm9tICduZXh0L2ZvbnQvZ29vZ2xlJztcbi8vIGltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG4vLyBpbXBvcnQgQ1NTIGZyb20gJ2Nzc3R5cGUnO1xuXG5cbi8vIGludGVyZmFjZSBQcm9wcyB7XG4vLyAgICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4vLyAgICAgY3VycmVudEFkZHJlc3M/OiBzdHJpbmc7IFxuLy8gICB9XG5cbi8vIGludGVyZmFjZSBTdGFtcCB7XG4vLyAgICAgdmVyc2lvbjogc3RyaW5nLFxuLy8gICAgIGNyZWRlbnRpYWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4vLyAgICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5cbi8vIH1cblxuLy8gY29uc3QgT05DSEFJTl9HUk9VUFMgPSBbXCJMZW5zIEhhbmRsZVwiLCBcInprU3luYyAxLjBcIiwgXCJORlQgSG9sZGVyXCIsIFwiU2VsZiBHVEMgU3Rha2luZ1wiLCBcIlNuYXBzaG90IFZvdGVyXCIsIFwiVHJhbnNhY3Rpb25zXCIsIFwiQ29udHJpYnV0ZWQgdG8uLi5cIiwgXCJHYXMgZmVlcyBzcGVudFwiLCBcIkdUQyBwb3NzZXNzaW9uc1wiLCAnTGVucycsICdQT0FQJywgJ0VucycsICdORlQnLCAnRXRoR1RFT25lVHhuUHJvdmlkZXInLCAnRmlyc3RFdGhUeG5Qcm92aWRlcicsICBdXG4vLyBjb25zdCBPTkNIQUlOX1NUQU1QX05BTUVTID0gWydFbnMnLCAnUE9BUCddXG5cbi8vIGV4cG9ydCBjb25zdCBEaXNwbGF5U3RhbXBzOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBoZWFkZXJzLCBjdXJyZW50QWRkcmVzc306IFByb3BzKSA9PiB7XG4vLyAgICAgY29uc3QgW3N0YW1wcywgc2V0U3RhbXBzXSA9IHVzZVN0YXRlPFN0YW1wW10+KFtdKVxuLy8gICAgIGNvbnN0IFtub1N0YW1wTWVzc2FnZSwgc2V0Tm9TdGFtcE1lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nPignJykgXG4gICAgXG4vLyAgICAgdXNlRWZmZWN0KCgpID0+IHtcbi8vICAgICAgICAgaWYoaGVhZGVycyAmJiBjdXJyZW50QWRkcmVzcykge1xuLy8gICAgICAgICAgICAgZmV0Y2hTY29yZSgpO1xuLy8gICAgICAgICB9XG4vLyAgICAgfSwgW2hlYWRlcnMsIGN1cnJlbnRBZGRyZXNzXSk7XG5cblxuLy8gICAgIGNvbnN0IGZldGNoU2NvcmUgPSBhc3luYyAoKSA9PiB7XG4vLyAgICAgICAgIGNvbnN0IEdFVF9QQVNTUE9SVF9TVEFNUFNfVVJJID0gYGh0dHBzOi8vYXBpLnNjb3Jlci5naXRjb2luLmNvL3JlZ2lzdHJ5L3N0YW1wcy8ke2N1cnJlbnRBZGRyZXNzfT9saW1pdD0xMDAwJmluY2x1ZGVfbWV0YWRhdGE9dHJ1ZWA7XG5cbi8vICAgICAgICAgdHJ5IHtcbi8vICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goR0VUX1BBU1NQT1JUX1NUQU1QU19VUkksIHtcbi8vICAgICAgICAgICAgICAgICBoZWFkZXJzXG4vLyAgICAgICAgICAgICB9KTtcblxuLy8gICAgICAgICAgICAgY29uc3QgcGFzc3BvcnREYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4vLyAgICAgICAgICAgICBpZiAocGFzc3BvcnREYXRhICYmIHBhc3Nwb3J0RGF0YS5pdGVtcykge1xuLy8gICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBhc3Nwb3J0RGF0YS5pdGVtcylcbi8vICAgICAgICAgICAgICAgICBzZXRTdGFtcHMocGFzc3BvcnREYXRhLml0ZW1zKVxuLy8gICAgICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICAgICAgICBzZXROb1N0YW1wTWVzc2FnZSgnTm8gc3RhbXBzIGF2YWlsYWJsZSwgcGxlYXNlIHN1Ym1pdCB5b3VyIHBhc3Nwb3J0IGFmdGVyIHlvdSBoYXZlIGFkZGVkIHNvbWUgc3RhbXBzLicpO1xuLy8gICAgICAgICAgICAgfVxuLy8gICAgICAgICB9IGNhdGNoIChlcnIpIHtcbi8vICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJywgZXJyKTtcbi8vICAgICAgICAgfVxuLy8gICAgIH07XG4vLyAgICAgLy8gSWYgU0NPUkVSX0lEIG9yIGhlYWRlcnMgb3IgY3VycmVudEFkZHJlc3MgaXMgdW5kZWZpbmVkLCBkaXNwbGF5IGEgbWVzc2FnZVxuLy8gICAgIGlmICggIWhlYWRlcnMgfHwgIWN1cnJlbnRBZGRyZXNzKSB7XG4vLyAgICAgICAgIHJldHVybiAoXG4vLyAgICAgICAgIDxkaXY+XG4vLyAgICAgICAgICAgICA8aDE+aGVhZGVycyBvciBjdXJyZW50QWRkcmVzcyBpcyB1bmRlZmluZWQhPC9oMT5cbi8vICAgICAgICAgPC9kaXY+XG4vLyAgICAgICAgIClcbi8vICAgICB9XG5cbi8vICAgICBpZiAobm9TdGFtcE1lc3NhZ2UgIT0gJycpIHtcbi8vICAgICAgICAgcmV0dXJuIChcbi8vICAgICAgICAgICAgIDxkaXY+XG4vLyAgICAgICAgICAgICAgICAgPGgyPntub1N0YW1wTWVzc2FnZX08L2gyPlxuLy8gICAgICAgICAgICAgPC9kaXY+XG4vLyAgICAgICAgIClcbi8vICAgICB9XG5cbi8vICAgICByZXR1cm4gKFxuLy8gICAgICAgICA8ZGl2PlxuLy8gICAgICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMuc3RhbXBHcmlkfT5cbi8vICAgICAgICAgICAgIHtzdGFtcHMubWFwKChzdGFtcCwgaW5kZXgpID0+IChcbi8vICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXtzdHlsZXMuc3RhbXBCb3h9PlxuLy8gICAgICAgICAgICAgICAgICAgICB7c3RhbXAubWV0YWRhdGEucGxhdGZvcm0gJiYgPGltZyBzdHlsZT17e3dpZHRoOiA1MH19IHNyYz17c3RhbXAubWV0YWRhdGEucGxhdGZvcm0uaWNvbn0gYWx0PSdQbGF0Zm9ybSBJY29uJy8+fVxuLy8gICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9e3N0eWxlcy5oM30+e3N0YW1wLm1ldGFkYXRhLnBsYXRmb3JtLmlkfTwvaDM+XG4vLyAgICAgICAgICAgICAgICAgICAgIDxwICBzdHlsZT17c3R5bGVzLnB9PntzdGFtcC5tZXRhZGF0YS5ncm91cH08L3A+XG4vLyAgICAgICAgICAgICAgICAgICAgIDx1bD5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBzdHlsZT17c3R5bGVzLnB9PntzdGFtcC5tZXRhZGF0YS5kZXNjcmlwdGlvbn08L2xpPlxuLy8gICAgICAgICAgICAgICAgICAgICA8L3VsPlxuLy8gICAgICAgICAgICAgICAgIDwvZGl2PlxuLy8gICAgICAgICAgICAgKSl9XG4vLyAgICAgICAgIDwvZGl2PlxuLy8gICAgICAgICA8L2Rpdj5cbi8vICAgICApXG4vLyB9XG5cbi8vIGNvbnN0IHN0eWxlcyA9IHtcbi8vICAgICBoMjoge1xuLy8gICAgICAgICBmb250U2l6ZTogMTIsXG4vLyAgICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuLy8gICAgICAgICBjb2xvcjogJ3doaXRlJ1xuLy8gICAgIH0sXG4vLyAgICAgaDM6IHtcbi8vICAgICAgICAgY29sb3I6ICd3aGl0ZSdcbi8vICAgICB9LFxuLy8gICAgIHA6IHtcbi8vICAgICAgICAgY29sb3I6ICd3aGl0ZSdcbi8vICAgICB9LFxuLy8gICAgIGxpOiB7XG4vLyAgICAgICAgIGNvbG9yOiAnd2hpdGUnXG4vLyAgICAgfSxcbi8vICAgICBzdGFtcEdyaWQ6IHtcbi8vICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuLy8gICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI1MHB4LCAxZnIpKScsXG4vLyAgICAgICAgIGdhcDogJzIwcHgnLFxuLy8gICAgICAgICBtYXJnaW5Ub3A6IDIwXG4vLyAgICAgfSxcbi8vICAgICBzdGFtcEJveDoge1xuLy8gICAgICAgICBib3JkZXI6ICcycHggc29saWQgIzE5MzkzRicsXG4vLyAgICAgICAgIGJhY2tncm91bmQ6ICcjMEMxMTBGJyxcbi8vICAgICAgICAgcGFkZGluZzogJzIwcHgnLFxuLy8gICAgIH0sXG4vLyAgICAgYToge1xuLy8gICAgICAgICBjb2xvcjogJyM2RjNGRjUnXG4vLyAgICAgfVxuLy8gfVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxJQUFNQSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUEsRUFBUztFQUMvQixPQUNJLENBQUMsR0FBRztBQUNaLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDN0IsT0FBTyxFQUFFLEdBQUcsQ0FBQztBQUViLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBQUEsYUFBQSJ9
--------------------------------------------------------------------------------
/dist/NoScoreMessage.js:
--------------------------------------------------------------------------------
1 | //todo
2 | "use strict";
3 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL05vU2NvcmVNZXNzYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvL3RvZG8iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUEifQ==
--------------------------------------------------------------------------------
/dist/PassportGate.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4 | Object.defineProperty(exports, "__esModule", {
5 | value: true
6 | });
7 | exports.PassportGate = void 0;
8 | var _react = require("react");
9 | function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
10 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
11 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14 | function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15 | function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16 | function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
17 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18 | //component fetches passport score and displays it
19 |
20 | //required props: scorer_id, headers, address
21 |
22 | //optional props: label, hideLabel, hideInfo, style
23 |
24 | //states: score, no score
25 |
26 | //todo: design noScore state
27 | //todo: add optional prop functionality
28 |
29 | var PassportGate = function PassportGate(_ref) {
30 | var SCORER_ID = _ref.SCORER_ID,
31 | headers = _ref.headers,
32 | currentAddress = _ref.currentAddress,
33 | threshold = _ref.threshold;
34 | var _useState = (0, _react.useState)(''),
35 | _useState2 = _slicedToArray(_useState, 2),
36 | score = _useState2[0],
37 | setScore = _useState2[1];
38 | var _useState3 = (0, _react.useState)(''),
39 | _useState4 = _slicedToArray(_useState3, 2),
40 | noScoreMessage = _useState4[0],
41 | setNoScoreMessage = _useState4[1];
42 | var _useState5 = (0, _react.useState)(0),
43 | _useState6 = _slicedToArray(_useState5, 2),
44 | newScore = _useState6[0],
45 | setNewScore = _useState6[1];
46 | (0, _react.useEffect)(function () {
47 | if (SCORER_ID && headers && currentAddress) {
48 | fetchScore();
49 | }
50 | }, []);
51 | var fetchScore = /*#__PURE__*/function () {
52 | var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
53 | var GET_PASSPORT_SCORE_URI, response, passportData, roundedScore;
54 | return _regeneratorRuntime().wrap(function _callee$(_context) {
55 | while (1) switch (_context.prev = _context.next) {
56 | case 0:
57 | GET_PASSPORT_SCORE_URI = "https://api.scorer.gitcoin.co/registry/score/".concat(SCORER_ID, "/").concat(currentAddress);
58 | _context.prev = 1;
59 | _context.next = 4;
60 | return fetch(GET_PASSPORT_SCORE_URI, {
61 | headers: headers
62 | });
63 | case 4:
64 | response = _context.sent;
65 | _context.next = 7;
66 | return response.json();
67 | case 7:
68 | passportData = _context.sent;
69 | if (passportData.score) {
70 | roundedScore = Math.round(passportData.score * 100) / 100;
71 | setScore(roundedScore.toString());
72 | setNewScore(roundedScore);
73 | } else {
74 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
75 | }
76 | _context.next = 14;
77 | break;
78 | case 11:
79 | _context.prev = 11;
80 | _context.t0 = _context["catch"](1);
81 | console.log('error: ', _context.t0);
82 | case 14:
83 | case "end":
84 | return _context.stop();
85 | }
86 | }, _callee, null, [[1, 11]]);
87 | }));
88 | return function fetchScore() {
89 | return _ref2.apply(this, arguments);
90 | };
91 | }();
92 | // If SCORER_ID or headers or currentAddress is undefined, display a message
93 | if (!SCORER_ID || !headers || !currentAddress) {
94 | return
95 |
SCORER_ID, headers or currentAddress is undefined!
96 | ;
97 | }
98 | if (newScore >= threshold) {
99 | return
100 |
Congrats! You can view the secret message
101 | ;
102 | }
103 | if (noScoreMessage != '') {
104 | return
105 |
hey
106 | ;
107 | }
108 | return
109 |
{noScoreMessage}
110 | ;
111 | };
112 | exports.PassportGate = PassportGate;
113 | var styles = {
114 | h2: {
115 | fontSize: 12,
116 | fontWeight: 'normal'
117 | }
118 | };
119 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJvYmoiLCJrZXkiLCJkZXNjIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIm1ldGhvZCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiUHJvbWlzZUltcGwiLCJpbnZva2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVjb3JkIiwicmVzdWx0IiwiX3R5cGVvZiIsIl9fYXdhaXQiLCJ0aGVuIiwidW53cmFwcGVkIiwiZXJyb3IiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsInN0YXRlIiwiRXJyb3IiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGUiLCJkZWxlZ2F0ZVJlc3VsdCIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsImRvbmUiLCJtZXRob2ROYW1lIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiaW5mbyIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwibGVuZ3RoIiwiaSIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsIml0ZXIiLCJrZXlzIiwidmFsIiwib2JqZWN0IiwicmV2ZXJzZSIsInBvcCIsInNraXBUZW1wUmVzZXQiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicm9vdFJlY29yZCIsInJ2YWwiLCJleGNlcHRpb24iLCJoYW5kbGUiLCJsb2MiLCJjYXVnaHQiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJmaW5hbGx5RW50cnkiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJpc0FycmF5IiwiUGFzc3BvcnRHYXRlIiwiX3JlZiIsIlNDT1JFUl9JRCIsImhlYWRlcnMiLCJjdXJyZW50QWRkcmVzcyIsInRocmVzaG9sZCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInNjb3JlIiwic2V0U2NvcmUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIm5vU2NvcmVNZXNzYWdlIiwic2V0Tm9TY29yZU1lc3NhZ2UiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm5ld1Njb3JlIiwic2V0TmV3U2NvcmUiLCJ1c2VFZmZlY3QiLCJmZXRjaFNjb3JlIiwiX3JlZjIiLCJfY2FsbGVlIiwiR0VUX1BBU1NQT1JUX1NDT1JFX1VSSSIsInJlc3BvbnNlIiwicGFzc3BvcnREYXRhIiwicm91bmRlZFNjb3JlIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImNvbmNhdCIsImZldGNoIiwianNvbiIsIk1hdGgiLCJyb3VuZCIsInQwIiwiY29uc29sZSIsImxvZyIsInN0eWxlcyIsImgyIiwiZm9udFNpemUiLCJmb250V2VpZ2h0Il0sInNvdXJjZXMiOlsiLi4vc3JjL1Bhc3Nwb3J0R2F0ZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuLy9jb21wb25lbnQgZmV0Y2hlcyBwYXNzcG9ydCBzY29yZSBhbmQgZGlzcGxheXMgaXRcblxuLy9yZXF1aXJlZCBwcm9wczogc2NvcmVyX2lkLCBoZWFkZXJzLCBhZGRyZXNzXG5cbi8vb3B0aW9uYWwgcHJvcHM6IGxhYmVsLCBoaWRlTGFiZWwsIGhpZGVJbmZvLCBzdHlsZVxuXG4vL3N0YXRlczogc2NvcmUsIG5vIHNjb3JlXG5cbi8vdG9kbzogZGVzaWduIG5vU2NvcmUgc3RhdGVcbi8vdG9kbzogYWRkIG9wdGlvbmFsIHByb3AgZnVuY3Rpb25hbGl0eVxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAgIFNDT1JFUl9JRD86IHN0cmluZztcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBjdXJyZW50QWRkcmVzcz86IHN0cmluZzsgXG4gICAgdGhyZXNob2xkOiBudW1iZXI7XG4gIH1cbiAgXG5leHBvcnQgY29uc3QgUGFzc3BvcnRHYXRlID0gKHsgU0NPUkVSX0lELCBoZWFkZXJzLCBjdXJyZW50QWRkcmVzcywgdGhyZXNob2xkfTogUHJvcHMpID0+IHtcbiAgICBjb25zdCBbc2NvcmUsIHNldFNjb3JlXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gICAgY29uc3QgW25vU2NvcmVNZXNzYWdlLCBzZXROb1Njb3JlTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKSBcblxuICAgIGNvbnN0IFtuZXdTY29yZSwgc2V0TmV3U2NvcmVdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuICAgIFxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmKFNDT1JFUl9JRCAmJiBoZWFkZXJzICYmIGN1cnJlbnRBZGRyZXNzKSB7XG4gICAgICAgICAgICBmZXRjaFNjb3JlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBmZXRjaFNjb3JlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBHRVRfUEFTU1BPUlRfU0NPUkVfVVJJID0gYGh0dHBzOi8vYXBpLnNjb3Jlci5naXRjb2luLmNvL3JlZ2lzdHJ5L3Njb3JlLyR7U0NPUkVSX0lEfS8ke2N1cnJlbnRBZGRyZXNzfWA7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goR0VUX1BBU1NQT1JUX1NDT1JFX1VSSSwge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBwYXNzcG9ydERhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgICAgIGlmIChwYXNzcG9ydERhdGEuc2NvcmUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3VuZGVkU2NvcmUgPSBNYXRoLnJvdW5kKHBhc3Nwb3J0RGF0YS5zY29yZSAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgc2V0U2NvcmUocm91bmRlZFNjb3JlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIHNldE5ld1Njb3JlKHJvdW5kZWRTY29yZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE5vU2NvcmVNZXNzYWdlKCdObyBzY29yZSBhdmFpbGFibGUsIHBsZWFzZSBzdWJtaXQgeW91ciBwYXNzcG9ydCBhZnRlciB5b3UgaGF2ZSBhZGRlZCBzb21lIHN0YW1wcy4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3I6ICcsIGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIElmIFNDT1JFUl9JRCBvciBoZWFkZXJzIG9yIGN1cnJlbnRBZGRyZXNzIGlzIHVuZGVmaW5lZCwgZGlzcGxheSBhIG1lc3NhZ2VcbiAgICBpZiAoIVNDT1JFUl9JRCB8fCAhaGVhZGVycyB8fCAhY3VycmVudEFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMT5TQ09SRVJfSUQsIGhlYWRlcnMgb3IgY3VycmVudEFkZHJlc3MgaXMgdW5kZWZpbmVkITwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG4gICAgaWYgKG5ld1Njb3JlID49IHRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDI+Q29uZ3JhdHMhIFlvdSBjYW4gdmlldyB0aGUgc2VjcmV0IG1lc3NhZ2U8L2gyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBpZiAobm9TY29yZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGgyPmhleTwvaDI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgICAgPGgyIHN0eWxlPXtzdHlsZXMuaDJ9Pntub1Njb3JlTWVzc2FnZX08L2gyPlxuICAgIDwvZGl2PlxuICAgIClcbn1cblxuY29uc3Qgc3R5bGVzID0ge1xuICAgIGgyOiB7XG4gICAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgICAgZm9udFdlaWdodDogJ25vcm1hbCdcbiAgICB9XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQTRDLFNBQUFDLG9CQUFBLGtCQUM1QyxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsT0FBQSxTQUFBQSxPQUFBLE9BQUFDLEVBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLE1BQUEsR0FBQUgsRUFBQSxDQUFBSSxjQUFBLEVBQUFDLGNBQUEsR0FBQUosTUFBQSxDQUFBSSxjQUFBLGNBQUFDLEdBQUEsRUFBQUMsR0FBQSxFQUFBQyxJQUFBLElBQUFGLEdBQUEsQ0FBQUMsR0FBQSxJQUFBQyxJQUFBLENBQUFDLEtBQUEsS0FBQUMsT0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLGNBQUEsR0FBQUYsT0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxtQkFBQSxHQUFBSixPQUFBLENBQUFLLGFBQUEsdUJBQUFDLGlCQUFBLEdBQUFO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
--------------------------------------------------------------------------------
/dist/PassportScore.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4 | Object.defineProperty(exports, "__esModule", {
5 | value: true
6 | });
7 | exports.PassportScore = void 0;
8 | var _react = require("react");
9 | var _image = _interopRequireDefault(require("next/image"));
10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11 | function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
12 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
13 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
14 | function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15 | function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16 | function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17 | function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18 | function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
19 | function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20 | //component fetches passport score and displays it
21 |
22 | //required props: scorer_id, headers, address
23 |
24 | //optional props: label, hideLabel, hideInfo, style
25 |
26 | //states: score, no score
27 |
28 | //todo: design noScore state
29 | //todo: add optional prop functionality
30 |
31 | var PassportScore = function PassportScore(_ref) {
32 | var SCORER_ID = _ref.SCORER_ID,
33 | headers = _ref.headers,
34 | currentAddress = _ref.currentAddress;
35 | var _useState = (0, _react.useState)(''),
36 | _useState2 = _slicedToArray(_useState, 2),
37 | score = _useState2[0],
38 | setScore = _useState2[1];
39 | var _useState3 = (0, _react.useState)(''),
40 | _useState4 = _slicedToArray(_useState3, 2),
41 | certainty = _useState4[0],
42 | setCertainty = _useState4[1];
43 | var _useState5 = (0, _react.useState)(''),
44 | _useState6 = _slicedToArray(_useState5, 2),
45 | noScoreMessage = _useState6[0],
46 | setNoScoreMessage = _useState6[1];
47 | (0, _react.useEffect)(function () {
48 | if (SCORER_ID && headers && currentAddress) {
49 | fetchScore();
50 | }
51 | }, []);
52 | var fetchScore = /*#__PURE__*/function () {
53 | var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
54 | var GET_PASSPORT_SCORE_URI, response, passportData, roundedScore;
55 | return _regeneratorRuntime().wrap(function _callee$(_context) {
56 | while (1) switch (_context.prev = _context.next) {
57 | case 0:
58 | GET_PASSPORT_SCORE_URI = "https://api.scorer.gitcoin.co/registry/score/".concat(SCORER_ID, "/").concat(currentAddress);
59 | _context.prev = 1;
60 | _context.next = 4;
61 | return fetch(GET_PASSPORT_SCORE_URI, {
62 | headers: headers
63 | });
64 | case 4:
65 | response = _context.sent;
66 | _context.next = 7;
67 | return response.json();
68 | case 7:
69 | passportData = _context.sent;
70 | if (passportData.score) {
71 | roundedScore = Math.round(passportData.score * 100) / 100;
72 | setScore(roundedScore.toString());
73 | if (roundedScore <= 20) {
74 | setCertainty('Low Score');
75 | } else if (roundedScore > 20) {
76 | setCertainty('Passing Score');
77 | }
78 | } else {
79 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
80 | }
81 | _context.next = 14;
82 | break;
83 | case 11:
84 | _context.prev = 11;
85 | _context.t0 = _context["catch"](1);
86 | console.log('error: ', _context.t0);
87 | case 14:
88 | case "end":
89 | return _context.stop();
90 | }
91 | }, _callee, null, [[1, 11]]);
92 | }));
93 | return function fetchScore() {
94 | return _ref2.apply(this, arguments);
95 | };
96 | }();
97 | // If SCORER_ID or headers or currentAddress is undefined, display a message
98 | if (!SCORER_ID || !headers || !currentAddress) {
99 | return
100 |
SCORER_ID, headers or currentAddress is undefined!
101 | ;
102 | }
103 | if (noScoreMessage != '') {
104 | return
105 |
{noScoreMessage}
106 | ;
107 | }
108 | var certaintyColor = certainty === 'Low Score' ? 'orange' : 'green';
109 | return
110 |
116 |
{score}
117 | <_image.default src="/hover.png" alt="Logo" width={15} height={15} style={{
118 | paddingLeft: 5,
119 | paddingTop: 20
120 | }} />
121 |
122 |
{certainty}
126 |
;
127 | };
128 | exports.PassportScore = PassportScore;
129 | var styles = {
130 | h2: {
131 | fontSize: 24,
132 | fontWeight: 'normal',
133 | color: 'white',
134 | marginBottom: 5
135 | }
136 | };
137 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2ltYWdlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duIiwiaGFzT3duUHJvcGVydHkiLCJkZWZpbmVQcm9wZXJ0eSIsImtleSIsImRlc2MiLCJ2YWx1ZSIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwic2VsZiIsInRyeUxvY3NMaXN0IiwicHJvdG9HZW5lcmF0b3IiLCJHZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJjcmVhdGUiLCJjb250ZXh0IiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsImZuIiwiYXJnIiwidHlwZSIsImNhbGwiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfdHlwZW9mIiwiX19hd2FpdCIsInRoZW4iLCJ1bndyYXBwZWQiLCJlcnJvciIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiZG9uZSIsIm1ldGhvZE5hbWUiLCJ1bmRlZmluZWQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsImVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJsZW5ndGgiLCJpIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwiaXRlciIsImtleXMiLCJ2YWwiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIl9pIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsImlzQXJyYXkiLCJQYXNzcG9ydFNjb3JlIiwiX3JlZiIsIlNDT1JFUl9JRCIsImhlYWRlcnMiLCJjdXJyZW50QWRkcmVzcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsInNjb3JlIiwic2V0U2NvcmUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNlcnRhaW50eSIsInNldENlcnRhaW50eSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwibm9TY29yZU1lc3NhZ2UiLCJzZXROb1Njb3JlTWVzc2FnZSIsInVzZUVmZmVjdCIsImZldGNoU2NvcmUiLCJfcmVmMiIsIl9jYWxsZWUiLCJHRVRfUEFTU1BPUlRfU0NPUkVfVVJJIiwicmVzcG9uc2UiLCJwYXNzcG9ydERhdGEiLCJyb3VuZGVkU2NvcmUiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiY29uY2F0IiwiZmV0Y2giLCJqc29uIiwiTWF0aCIsInJvdW5kIiwidDAiLCJjb25zb2xlIiwibG9nIiwiY2VydGFpbnR5Q29sb3IiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJtYXJnaW5Cb3R0b20iLCJzdHlsZXMiLCJoMiIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1RvcCIsImNvbG9yIiwibWFyZ2luVG9wIiwiZm9udFNpemUiLCJmb250V2VpZ2h0Il0sInNvdXJjZXMiOlsiLi4vc3JjL1Bhc3Nwb3J0U2NvcmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnbmV4dC9pbWFnZSdcbmltcG9ydCB7IFJvYm90b19GbGV4IH0gZnJvbSAnbmV4dC9mb250L2dvb2dsZSc7XG5cbi8vY29tcG9uZW50IGZldGNoZXMgcGFzc3BvcnQgc2NvcmUgYW5kIGRpc3BsYXlzIGl0XG5cbi8vcmVxdWlyZWQgcHJvcHM6IHNjb3Jlcl9pZCwgaGVhZGVycywgYWRkcmVzc1xuXG4vL29wdGlvbmFsIHByb3BzOiBsYWJlbCwgaGlkZUxhYmVsLCBoaWRlSW5mbywgc3R5bGVcblxuLy9zdGF0ZXM6IHNjb3JlLCBubyBzY29yZVxuXG4vL3RvZG86IGRlc2lnbiBub1Njb3JlIHN0YXRlXG4vL3RvZG86IGFkZCBvcHRpb25hbCBwcm9wIGZ1bmN0aW9uYWxpdHlcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgICBTQ09SRVJfSUQ/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgY3VycmVudEFkZHJlc3M/OiBzdHJpbmc7IFxuICB9XG4gIFxuZXhwb3J0IGNvbnN0IFBhc3Nwb3J0U2NvcmUgPSAoeyBTQ09SRVJfSUQsIGhlYWRlcnMsIGN1cnJlbnRBZGRyZXNzfTogUHJvcHMpID0+IHtcbiAgICBjb25zdCBbc2NvcmUsIHNldFNjb3JlXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gICAgY29uc3QgW2NlcnRhaW50eSwgc2V0Q2VydGFpbnR5XSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gICAgY29uc3QgW25vU2NvcmVNZXNzYWdlLCBzZXROb1Njb3JlTWVzc2FnZV0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKSBcbiAgICBcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZihTQ09SRVJfSUQgJiYgaGVhZGVycyAmJiBjdXJyZW50QWRkcmVzcykge1xuICAgICAgICAgICAgZmV0Y2hTY29yZSgpO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZmV0Y2hTY29yZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgR0VUX1BBU1NQT1JUX1NDT1JFX1VSSSA9IGBodHRwczovL2FwaS5zY29yZXIuZ2l0Y29pbi5jby9yZWdpc3RyeS9zY29yZS8ke1NDT1JFUl9JRH0vJHtjdXJyZW50QWRkcmVzc31gO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKEdFVF9QQVNTUE9SVF9TQ09SRV9VUkksIHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgcGFzc3BvcnREYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuXG4gICAgICAgICAgICBpZiAocGFzc3BvcnREYXRhLnNjb3JlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91bmRlZFNjb3JlID0gTWF0aC5yb3VuZChwYXNzcG9ydERhdGEuc2NvcmUgKiAxMDApIC8gMTAwO1xuICAgICAgICAgICAgICAgIHNldFNjb3JlKHJvdW5kZWRTY29yZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICBpZiAocm91bmRlZFNjb3JlIDw9IDIwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldENlcnRhaW50eSgnTG93IFNjb3JlJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocm91bmRlZFNjb3JlID4gMjApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q2VydGFpbnR5KCdQYXNzaW5nIFNjb3JlJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldE5vU2NvcmVNZXNzYWdlKCdObyBzY29yZSBhdmFpbGFibGUsIHBsZWFzZSBzdWJtaXQgeW91ciBwYXNzcG9ydCBhZnRlciB5b3UgaGF2ZSBhZGRlZCBzb21lIHN0YW1wcy4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3I6ICcsIGVycik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIElmIFNDT1JFUl9JRCBvciBoZWFkZXJzIG9yIGN1cnJlbnRBZGRyZXNzIGlzIHVuZGVmaW5lZCwgZGlzcGxheSBhIG1lc3NhZ2VcbiAgICBpZiAoIVNDT1JFUl9JRCB8fCAhaGVhZGVycyB8fCAhY3VycmVudEFkZHJlc3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMT5TQ09SRVJfSUQsIGhlYWRlcnMgb3IgY3VycmVudEFkZHJlc3MgaXMgdW5kZWZpbmVkITwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG4gICAgaWYgKG5vU2NvcmVNZXNzYWdlICE9ICcnKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMj57bm9TY29yZU1lc3NhZ2V9PC9oMj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgY2VydGFpbnR5Q29sb3IgPSBjZXJ0YWludHkgPT09ICdMb3cgU2NvcmUnID8gJ29yYW5nZSdcbiAgICA6ICdncmVlbic7XG5cbiAgICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdyb3cnLCBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsIG1hcmdpbkJvdHRvbTogMH19PlxuICAgICAgICA8aDIgc3R5bGU9e3N0eWxlcy5oMn0+e3Njb3JlfTwvaDI+XG4gICAgICAgIDxJbWFnZSBzcmM9XCIvaG92ZXIucG5nXCIgYWx0PVwiTG9nb1wiIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNX0gc3R5bGU9e3twYWRkaW5nTGVmdDogNSwgcGFkZGluZ1RvcDogMjB9fS8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAnd2hpdGUnLCBtYXJnaW5Ub3A6IDB9fT57Y2VydGFpbnR5fTwvcD5cbiAgICA8L2Rpdj5cbiAgICApXG59XG5cbmNvbnN0IHN0eWxlcyA9IHtcbiAgICBoMjoge1xuICAgICAgICBmb250U2l6ZTogMjQsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgbWFyZ2luQm90dG9tOiA1XG4gICAgfVxufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUE4QixTQUFBRSx1QkFBQUMsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBQUEsU0FBQUUsb0JBQUEsa0JBQTlCLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxPQUFBLFNBQUFBLE9BQUEsT0FBQUMsRUFBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsTUFBQSxHQUFBSCxFQUFBLENBQUFJLGNBQUEsRUFBQUMsY0FBQSxHQUFBSixNQUFBLENBQUFJLGNBQUEsY0FBQVQsR0FBQSxFQUFBVSxHQUFBLEVBQUFDLElBQUEsSUFBQVgsR0FBQSxDQUFBVSxHQUFBLElBQUFDLElBQUEsQ0FBQUMsS0FBQSxLQUFBQyxPQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsY0FBQSxHQUFBRixPQUFBLENBQUFHLFFBQUEsa0JBQUFDLG1CQUFBLEdBQUFKLE9BQUEsQ0FBQUssYUFBQSx1QkFBQUMsaUJBQUEsR0FBQU4sT0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBckIsR0FBQSxFQUFBVSxHQUFBLEVBQUFFLEtBQUEsV0FBQVAsTUFBQSxDQUFBSSxjQUFBLENBQUFULEdBQUEsRUFBQVUsR0FBQSxJQUFBRSxLQUFBLEVBQUFBLEtBQUEsRUFBQVUsVUFB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
--------------------------------------------------------------------------------
/dist/app/layout.jsx:
--------------------------------------------------------------------------------
1 | import './globals.css';
2 | import { Inter } from 'next/font/google';
3 | import { Libre_Franklin } from 'next/font/google';
4 | var libreFranklin = Libre_Franklin({ subsets: ['latin'] });
5 | var inter = Inter({ subsets: ['latin'] });
6 | export var metadata = {
7 | title: 'Create Next App',
8 | description: 'Generated by create next app',
9 | };
10 | export default function RootLayout(_a) {
11 | var children = _a.children;
12 | return (
13 | {children}
14 | );
15 | }
16 |
--------------------------------------------------------------------------------
/dist/app/page.jsx:
--------------------------------------------------------------------------------
1 | // import the necessary packages
2 | 'use client';
3 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5 | return new (P || (P = Promise))(function (resolve, reject) {
6 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9 | step((generator = generator.apply(thisArg, _arguments || [])).next());
10 | });
11 | };
12 | var __generator = (this && this.__generator) || function (thisArg, body) {
13 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
14 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
15 | function verb(n) { return function (v) { return step([n, v]); }; }
16 | function step(op) {
17 | if (f) throw new TypeError("Generator is already executing.");
18 | while (g && (g = 0, op[0] && (_ = 0)), _) try {
19 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
20 | if (y = 0, t) op = [op[0] & 2, t.value];
21 | switch (op[0]) {
22 | case 0: case 1: t = op; break;
23 | case 4: _.label++; return { value: op[1], done: false };
24 | case 5: _.label++; y = op[1]; op = [0]; continue;
25 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
26 | default:
27 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
29 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
30 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
31 | if (t[2]) _.ops.pop();
32 | _.trys.pop(); continue;
33 | }
34 | op = body.call(thisArg, _);
35 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
36 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
37 | }
38 | };
39 | import { useState, useEffect } from 'react';
40 | import { ethers } from 'ethers';
41 | import Image from 'next/image';
42 | //import { logo } from '../public/gitcoing-logo.png'
43 | // these lines read the API key and scorer ID from your .env.local file
44 | var APIKEY = process.env.NEXT_PUBLIC_GC_API_KEY;
45 | var SCORER_ID = process.env.NEXT_PUBLIC_GC_SCORER_ID;
46 | // these lines add the corretc header information to the request
47 | var headers = APIKEY ? ({
48 | 'Content-Type': 'application/json',
49 | 'X-API-Key': APIKEY
50 | }) : undefined;
51 | export default function Passport() {
52 | // here we deal with any local state we need to manage
53 | var _a = useState(''), address = _a[0], setAddress = _a[1];
54 | var _b = useState(false), connected = _b[0], setConnected = _b[1];
55 | /* todo check user's connection when the app loads */
56 | function connect() {
57 | return __awaiter(this, void 0, void 0, function () {
58 | var accounts, err_1;
59 | return __generator(this, function (_a) {
60 | switch (_a.label) {
61 | case 0:
62 | _a.trys.push([0, 2, , 3]);
63 | return [4 /*yield*/, window.ethereum.request({ method: 'eth_requestAccounts' })];
64 | case 1:
65 | accounts = _a.sent();
66 | setAddress(accounts[0]);
67 | setConnected(true);
68 | return [3 /*break*/, 3];
69 | case 2:
70 | err_1 = _a.sent();
71 | console.log('Error connecting wallet...', err_1);
72 | return [3 /*break*/, 3];
73 | case 3: return [2 /*return*/];
74 | }
75 | });
76 | });
77 | }
78 | useEffect(function () {
79 | function checkConnection() {
80 | return __awaiter(this, void 0, void 0, function () {
81 | var provider, accounts, err_2;
82 | return __generator(this, function (_a) {
83 | switch (_a.label) {
84 | case 0:
85 | _a.trys.push([0, 2, , 3]);
86 | provider = new ethers.BrowserProvider(window.ethereum);
87 | return [4 /*yield*/, provider.listAccounts()
88 | // if the user is connected, set their account and fetch their score
89 | ];
90 | case 1:
91 | accounts = _a.sent();
92 | // if the user is connected, set their account and fetch their score
93 | if (accounts && accounts[0]) {
94 | setConnected(true);
95 | setAddress(accounts[0].address);
96 | }
97 | return [3 /*break*/, 3];
98 | case 2:
99 | err_2 = _a.sent();
100 | console.log('No wallet connection detected...', err_2);
101 | return [3 /*break*/, 3];
102 | case 3: return [2 /*return*/];
103 | }
104 | });
105 | });
106 | }
107 | checkConnection();
108 | }, []);
109 | return (
110 | /* this is the UI for the app */
111 |
112 |
113 |
114 |
115 | Your citizenship pass for the decentralized internet.
116 | {/*
117 | */}
118 | Gitcoin Passport is an identity verification application that enables users to collect verifiable credentials, proving their identity and trustworthiness. It provides access to secure web3 experiences and enhances secure participation in various online platforms.
119 |
120 | {/*
Gitcoin Passport Components */}
121 |
122 |
123 |
124 | {!connected && (
125 |
Connect Wallet Component
126 | Connect Wallet
127 | )}
128 | {connected && (
129 |
130 |
Passport score component
131 | {/* default
132 |
133 | {/* hide label */}
134 | {/*
*/}
135 | {/* theme dark */}
136 | {/*
*/}
137 | {/* hide info */}
138 | {/*
*/}
139 | {/* add threshold */}
140 | {/*
*/}
141 | {/* no score message */}
142 | {/*
*/}
143 |
144 |
145 | {/*
146 |
Secret message component
147 |
148 | */}
149 |
150 |
151 |
Display stamps component
152 | {/* */}
153 |
154 |
)}
155 |
156 |
);
157 | }
158 | var styles = {
159 | main: {
160 | width: '900px',
161 | margin: '0 auto',
162 | paddingTop: 90,
163 | //backgroundColor: '#0B110F'
164 | },
165 | header: {
166 | display: 'flex',
167 | justifyContent: 'center',
168 | alignItems: 'center',
169 | flexDirection: 'column'
170 | },
171 | heading: {
172 | fontSize: 60,
173 | color: 'white'
174 | },
175 | image: {
176 | margin: 10,
177 | },
178 | intro: {
179 | fontSize: 18,
180 | color: 'white'
181 | },
182 | h2: {
183 | fontSize: 24,
184 | fontWeight: '300',
185 | color: '#B9B3FF'
186 | },
187 | p: {
188 | color: 'white',
189 | textAlign: 'center',
190 | lineHeight: 1.5,
191 | width: '800px'
192 | },
193 | configurePassport: {
194 | marginTop: 20,
195 | },
196 | linkStyle: {
197 | color: '#008aff'
198 | },
199 | buttonContainer: {
200 | marginTop: 20
201 | },
202 | buttonStyle: {
203 | padding: '10px 30px',
204 | outline: 'none',
205 | border: 'none',
206 | cursor: 'pointer',
207 | marginRight: '10px',
208 | background: "#6935FF",
209 | borderRadius: "4px",
210 | color: "#ffffff"
211 | //borderBottom: '2px solid rgba(0, 0, 0, .2)',
212 | //borderRight: '2px solid rgba(0, 0, 0, .2)'
213 | },
214 | componentContainer: {
215 | marginTop: 15
216 | },
217 | noScoreMessage: {
218 | marginTop: 20
219 | }
220 | };
221 |
--------------------------------------------------------------------------------
/dist/index.js:
--------------------------------------------------------------------------------
1 | export { DisplayStamps } from './src/DisplayStamps';
2 |
--------------------------------------------------------------------------------
/dist/src/DisplayStamps.jsx:
--------------------------------------------------------------------------------
1 | export var DisplayStamps = function () {
2 | return ();
5 | };
6 | // import { Gorditas } from 'next/font/google';
7 | // import { useState, useEffect } from 'react';
8 | // import CSS from 'csstype';
9 | // interface Props {
10 | // headers?: Record;
11 | // currentAddress?: string;
12 | // }
13 | // interface Stamp {
14 | // version: string,
15 | // credential: Record,
16 | // metadata: Record
17 | // }
18 | // const ONCHAIN_GROUPS = ["Lens Handle", "zkSync 1.0", "NFT Holder", "Self GTC Staking", "Snapshot Voter", "Transactions", "Contributed to...", "Gas fees spent", "GTC possessions", 'Lens', 'POAP', 'Ens', 'NFT', 'EthGTEOneTxnProvider', 'FirstEthTxnProvider', ]
19 | // const ONCHAIN_STAMP_NAMES = ['Ens', 'POAP']
20 | // export const DisplayStamps: React.FC = ({ headers, currentAddress}: Props) => {
21 | // const [stamps, setStamps] = useState([])
22 | // const [noStampMessage, setNoStampMessage] = useState('')
23 | // useEffect(() => {
24 | // if(headers && currentAddress) {
25 | // fetchScore();
26 | // }
27 | // }, [headers, currentAddress]);
28 | // const fetchScore = async () => {
29 | // const GET_PASSPORT_STAMPS_URI = `https://api.scorer.gitcoin.co/registry/stamps/${currentAddress}?limit=1000&include_metadata=true`;
30 | // try {
31 | // const response = await fetch(GET_PASSPORT_STAMPS_URI, {
32 | // headers
33 | // });
34 | // const passportData = await response.json();
35 | // if (passportData && passportData.items) {
36 | // console.log(passportData.items)
37 | // setStamps(passportData.items)
38 | // } else {
39 | // setNoStampMessage('No stamps available, please submit your passport after you have added some stamps.');
40 | // }
41 | // } catch (err) {
42 | // console.log('error: ', err);
43 | // }
44 | // };
45 | // // If SCORER_ID or headers or currentAddress is undefined, display a message
46 | // if ( !headers || !currentAddress) {
47 | // return (
48 | //
49 | //
headers or currentAddress is undefined!
50 | //
51 | // )
52 | // }
53 | // if (noStampMessage != '') {
54 | // return (
55 | //
56 | //
{noStampMessage}
57 | //
58 | // )
59 | // }
60 | // return (
61 | //
62 | //
63 | // {stamps.map((stamp, index) => (
64 | //
65 | // {stamp.metadata.platform &&
}
66 | //
{stamp.metadata.platform.id}
67 | //
{stamp.metadata.group}
68 | //
69 | // {stamp.metadata.description}
70 | //
71 | //
72 | // ))}
73 | //
74 | //
75 | // )
76 | // }
77 | // const styles = {
78 | // h2: {
79 | // fontSize: 12,
80 | // fontWeight: 'normal',
81 | // color: 'white'
82 | // },
83 | // h3: {
84 | // color: 'white'
85 | // },
86 | // p: {
87 | // color: 'white'
88 | // },
89 | // li: {
90 | // color: 'white'
91 | // },
92 | // stampGrid: {
93 | // display: 'grid',
94 | // gridTemplateColumns: 'repeat(auto-fill, minmax(250px, 1fr))',
95 | // gap: '20px',
96 | // marginTop: 20
97 | // },
98 | // stampBox: {
99 | // border: '2px solid #19393F',
100 | // background: '#0C110F',
101 | // padding: '20px',
102 | // },
103 | // a: {
104 | // color: '#6F3FF5'
105 | // }
106 | // }
107 |
--------------------------------------------------------------------------------
/dist/src/NoScoreMessage.jsx:
--------------------------------------------------------------------------------
1 | "use strict";
2 | //todo
3 |
--------------------------------------------------------------------------------
/dist/src/PassportGate.jsx:
--------------------------------------------------------------------------------
1 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3 | return new (P || (P = Promise))(function (resolve, reject) {
4 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7 | step((generator = generator.apply(thisArg, _arguments || [])).next());
8 | });
9 | };
10 | var __generator = (this && this.__generator) || function (thisArg, body) {
11 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13 | function verb(n) { return function (v) { return step([n, v]); }; }
14 | function step(op) {
15 | if (f) throw new TypeError("Generator is already executing.");
16 | while (g && (g = 0, op[0] && (_ = 0)), _) try {
17 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18 | if (y = 0, t) op = [op[0] & 2, t.value];
19 | switch (op[0]) {
20 | case 0: case 1: t = op; break;
21 | case 4: _.label++; return { value: op[1], done: false };
22 | case 5: _.label++; y = op[1]; op = [0]; continue;
23 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
24 | default:
25 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29 | if (t[2]) _.ops.pop();
30 | _.trys.pop(); continue;
31 | }
32 | op = body.call(thisArg, _);
33 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35 | }
36 | };
37 | import { useState, useEffect } from 'react';
38 | export var PassportGate = function (_a) {
39 | var SCORER_ID = _a.SCORER_ID, headers = _a.headers, currentAddress = _a.currentAddress, threshold = _a.threshold;
40 | var _b = useState(''), score = _b[0], setScore = _b[1];
41 | var _c = useState(''), noScoreMessage = _c[0], setNoScoreMessage = _c[1];
42 | var _d = useState(0), newScore = _d[0], setNewScore = _d[1];
43 | useEffect(function () {
44 | if (SCORER_ID && headers && currentAddress) {
45 | fetchScore();
46 | }
47 | }, []);
48 | var fetchScore = function () { return __awaiter(void 0, void 0, void 0, function () {
49 | var GET_PASSPORT_SCORE_URI, response, passportData, roundedScore, err_1;
50 | return __generator(this, function (_a) {
51 | switch (_a.label) {
52 | case 0:
53 | GET_PASSPORT_SCORE_URI = "https://api.scorer.gitcoin.co/registry/score/".concat(SCORER_ID, "/").concat(currentAddress);
54 | _a.label = 1;
55 | case 1:
56 | _a.trys.push([1, 4, , 5]);
57 | return [4 /*yield*/, fetch(GET_PASSPORT_SCORE_URI, {
58 | headers: headers
59 | })];
60 | case 2:
61 | response = _a.sent();
62 | return [4 /*yield*/, response.json()];
63 | case 3:
64 | passportData = _a.sent();
65 | if (passportData.score) {
66 | roundedScore = Math.round(passportData.score * 100) / 100;
67 | setScore(roundedScore.toString());
68 | setNewScore(roundedScore);
69 | }
70 | else {
71 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
72 | }
73 | return [3 /*break*/, 5];
74 | case 4:
75 | err_1 = _a.sent();
76 | console.log('error: ', err_1);
77 | return [3 /*break*/, 5];
78 | case 5: return [2 /*return*/];
79 | }
80 | });
81 | }); };
82 | // If SCORER_ID or headers or currentAddress is undefined, display a message
83 | if (!SCORER_ID || !headers || !currentAddress) {
84 | return (
85 |
SCORER_ID, headers or currentAddress is undefined!
86 | );
87 | }
88 | if (newScore >= threshold) {
89 | return (
90 |
Congrats! You can view the secret message
91 | );
92 | }
93 | if (noScoreMessage != '') {
94 | return (
95 |
hey
96 | );
97 | }
98 | return (
99 |
{noScoreMessage}
100 | );
101 | };
102 | var styles = {
103 | h2: {
104 | fontSize: 12,
105 | fontWeight: 'normal'
106 | }
107 | };
108 |
--------------------------------------------------------------------------------
/dist/src/PassportScore.jsx:
--------------------------------------------------------------------------------
1 | var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2 | function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3 | return new (P || (P = Promise))(function (resolve, reject) {
4 | function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 | function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 | function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7 | step((generator = generator.apply(thisArg, _arguments || [])).next());
8 | });
9 | };
10 | var __generator = (this && this.__generator) || function (thisArg, body) {
11 | var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12 | return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13 | function verb(n) { return function (v) { return step([n, v]); }; }
14 | function step(op) {
15 | if (f) throw new TypeError("Generator is already executing.");
16 | while (g && (g = 0, op[0] && (_ = 0)), _) try {
17 | if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18 | if (y = 0, t) op = [op[0] & 2, t.value];
19 | switch (op[0]) {
20 | case 0: case 1: t = op; break;
21 | case 4: _.label++; return { value: op[1], done: false };
22 | case 5: _.label++; y = op[1]; op = [0]; continue;
23 | case 7: op = _.ops.pop(); _.trys.pop(); continue;
24 | default:
25 | if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26 | if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27 | if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28 | if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29 | if (t[2]) _.ops.pop();
30 | _.trys.pop(); continue;
31 | }
32 | op = body.call(thisArg, _);
33 | } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34 | if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35 | }
36 | };
37 | import { useState, useEffect } from 'react';
38 | import Image from 'next/image';
39 | export var PassportScore = function (_a) {
40 | var SCORER_ID = _a.SCORER_ID, headers = _a.headers, currentAddress = _a.currentAddress;
41 | var _b = useState(''), score = _b[0], setScore = _b[1];
42 | var _c = useState(''), certainty = _c[0], setCertainty = _c[1];
43 | var _d = useState(''), noScoreMessage = _d[0], setNoScoreMessage = _d[1];
44 | useEffect(function () {
45 | if (SCORER_ID && headers && currentAddress) {
46 | fetchScore();
47 | }
48 | }, []);
49 | var fetchScore = function () { return __awaiter(void 0, void 0, void 0, function () {
50 | var GET_PASSPORT_SCORE_URI, response, passportData, roundedScore, err_1;
51 | return __generator(this, function (_a) {
52 | switch (_a.label) {
53 | case 0:
54 | GET_PASSPORT_SCORE_URI = "https://api.scorer.gitcoin.co/registry/score/".concat(SCORER_ID, "/").concat(currentAddress);
55 | _a.label = 1;
56 | case 1:
57 | _a.trys.push([1, 4, , 5]);
58 | return [4 /*yield*/, fetch(GET_PASSPORT_SCORE_URI, {
59 | headers: headers
60 | })];
61 | case 2:
62 | response = _a.sent();
63 | return [4 /*yield*/, response.json()];
64 | case 3:
65 | passportData = _a.sent();
66 | if (passportData.score) {
67 | roundedScore = Math.round(passportData.score * 100) / 100;
68 | setScore(roundedScore.toString());
69 | if (roundedScore <= 20) {
70 | setCertainty('Low Score');
71 | }
72 | else if (roundedScore > 20) {
73 | setCertainty('Passing Score');
74 | }
75 | }
76 | else {
77 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
78 | }
79 | return [3 /*break*/, 5];
80 | case 4:
81 | err_1 = _a.sent();
82 | console.log('error: ', err_1);
83 | return [3 /*break*/, 5];
84 | case 5: return [2 /*return*/];
85 | }
86 | });
87 | }); };
88 | // If SCORER_ID or headers or currentAddress is undefined, display a message
89 | if (!SCORER_ID || !headers || !currentAddress) {
90 | return (
91 |
SCORER_ID, headers or currentAddress is undefined!
92 | );
93 | }
94 | if (noScoreMessage != '') {
95 | return (
96 |
{noScoreMessage}
97 | );
98 | }
99 | var certaintyColor = certainty === 'Low Score' ? 'orange'
100 | : 'green';
101 | return (
102 |
103 |
{score}
104 |
105 |
106 |
{certainty}
107 |
);
108 | };
109 | var styles = {
110 | h2: {
111 | fontSize: 24,
112 | fontWeight: 'normal',
113 | color: 'white',
114 | marginBottom: 5
115 | }
116 | };
117 |
--------------------------------------------------------------------------------
/dist/tsconfig.tsbuildinfo:
--------------------------------------------------------------------------------
1 | {"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.esnext.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/next/dist/styled-jsx/types/css.d.ts","../node_modules/@types/react/global.d.ts","../node_modules/csstype/index.d.ts","../node_modules/@types/prop-types/index.d.ts","../node_modules/@types/scheduler/tracing.d.ts","../node_modules/@types/react/index.d.ts","../node_modules/next/dist/styled-jsx/types/index.d.ts","../node_modules/next/dist/styled-jsx/types/macro.d.ts","../node_modules/next/dist/styled-jsx/types/style.d.ts","../node_modules/next/dist/styled-jsx/types/global.d.ts","../node_modules/next/dist/shared/lib/amp.d.ts","../node_modules/next/amp.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/next/dist/server/get-page-files.d.ts","../node_modules/@types/react/next.d.ts","../node_modules/@types/react/experimental.d.ts","../node_modules/@types/react-dom/index.d.ts","../node_modules/@types/react-dom/next.d.ts","../node_modules/@types/react-dom/experimental.d.ts","../node_modules/next/dist/compiled/webpack/webpack.d.ts","../node_modules/next/dist/server/config.d.ts","../node_modules/next/dist/lib/load-custom-routes.d.ts","../node_modules/next/dist/shared/lib/image-config.d.ts","../node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../node_modules/next/dist/server/body-streams.d.ts","../node_modules/next/dist/server/future/route-kind.d.ts","../node_modules/next/dist/server/future/route-definitions/route-definition.d.ts","../node_modules/next/dist/server/future/route-matches/route-match.d.ts","../node_modules/next/dist/server/request-meta.d.ts","../node_modules/next/dist/server/config-shared.d.ts","../node_modules/next/dist/server/base-http/index.d.ts","../node_modules/next/dist/server/api-utils/index.d.ts","../node_modules/next/dist/server/node-environment.d.ts","../node_modules/next/dist/server/require-hook.d.ts","../node_modules/next/dist/server/node-polyfill-fetch.d.ts","../node_modules/next/dist/server/node-polyfill-form.d.ts","../node_modules/next/dist/server/node-polyfill-web-streams.d.ts","../node_modules/next/dist/server/node-polyfill-crypto.d.ts","../node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../node_modules/next/dist/server/future/route-matchers/route-matcher.d.ts","../node_modules/next/dist/server/future/route-matcher-providers/route-matcher-provider.d.ts","../node_modules/next/dist/server/future/helpers/i18n-provider.d.ts","../node_modules/next/dist/server/future/route-matcher-managers/route-matcher-manager.d.ts","../node_modules/next/dist/server/router.d.ts","../node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../node_modules/next/dist/server/render-result.d.ts","../node_modules/next/dist/server/web/next-url.d.ts","../node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../node_modules/next/dist/server/web/spec-extension/request.d.ts","../node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../node_modules/next/dist/server/web/spec-extension/response.d.ts","../node_modules/next/dist/server/web/types.d.ts","../node_modules/next/dist/lib/setup-exception-listeners.d.ts","../node_modules/next/dist/build/index.d.ts","../node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../node_modules/next/dist/server/send-payload/revalidate-headers.d.ts","../node_modules/next/dist/server/send-payload/index.d.ts","../node_modules/next/dist/server/base-http/node.d.ts","../node_modules/next/dist/server/font-utils.d.ts","../node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../node_modules/next/dist/server/load-components.d.ts","../node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../node_modules/next/dist/server/render.d.ts","../node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../node_modules/next/dist/server/response-cache/types.d.ts","../node_modules/next/dist/server/response-cache/index.d.ts","../node_modules/next/dist/server/future/helpers/module-loader/module-loader.d.ts","../node_modules/next/dist/server/future/route-definitions/app-route-route-definition.d.ts","../node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","../node_modules/next/dist/lib/coalesced-function.d.ts","../node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../node_modules/next/dist/client/components/static-generation-async-storage.d.ts","../node_modules/next/dist/client/components/hooks-server-context.d.ts","../node_modules/next/dist/server/lib/patch-fetch.d.ts","../node_modules/next/dist/build/utils.d.ts","../node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../node_modules/next/dist/client/components/request-async-storage.d.ts","../node_modules/next/dist/client/components/draft-mode.d.ts","../node_modules/next/dist/client/components/headers.d.ts","../node_modules/next/dist/client/components/static-generation-bailout.d.ts","../node_modules/next/dist/client/components/action-async-storage.d.ts","../node_modules/next/dist/server/future/route-modules/route-module.d.ts","../node_modules/next/dist/server/async-storage/async-storage-wrapper.d.ts","../node_modules/next/dist/server/async-storage/static-generation-async-storage-wrapper.d.ts","../node_modules/next/dist/server/web/http.d.ts","../node_modules/next/dist/server/future/route-modules/app-route/module.d.ts","../node_modules/next/dist/server/future/route-handler-managers/route-handler-manager.d.ts","../node_modules/next/dist/server/future/normalizers/normalizer.d.ts","../node_modules/next/dist/server/future/normalizers/locale-route-normalizer.d.ts","../node_modules/next/dist/server/base-server.d.ts","../node_modules/next/dist/server/future/route-definitions/locale-route-definition.d.ts","../node_modules/next/dist/server/future/route-definitions/pages-api-route-definition.d.ts","../node_modules/next/dist/server/future/route-matches/pages-api-route-match.d.ts","../node_modules/next/dist/server/lib/render-server.d.ts","../node_modules/next/dist/server/image-optimizer.d.ts","../node_modules/next/dist/server/next-server.d.ts","../node_modules/next/dist/server/future/route-matcher-managers/default-route-matcher-manager.d.ts","../node_modules/next/dist/server/future/route-matcher-managers/dev-route-matcher-manager.d.ts","../node_modules/next/dist/server/dev/static-paths-worker.d.ts","../node_modules/next/dist/server/dev/next-dev-server.d.ts","../node_modules/next/dist/server/next.d.ts","../node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../node_modules/next/types/index.d.ts","../node_modules/next/dist/shared/lib/html-context.d.ts","../node_modules/@next/env/dist/index.d.ts","../node_modules/next/dist/shared/lib/mitt.d.ts","../node_modules/next/dist/client/with-router.d.ts","../node_modules/next/dist/client/router.d.ts","../node_modules/next/dist/client/route-loader.d.ts","../node_modules/next/dist/client/page-loader.d.ts","../node_modules/next/dist/shared/lib/bloom-filter/hashing.d.ts","../node_modules/next/dist/shared/lib/bloom-filter/base-filter.d.ts","../node_modules/next/dist/shared/lib/bloom-filter/bit-set.d.ts","../node_modules/next/dist/shared/lib/bloom-filter/index.d.ts","../node_modules/next/dist/shared/lib/router/router.d.ts","../node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../node_modules/next/dist/shared/lib/constants.d.ts","../node_modules/next/dist/shared/lib/utils.d.ts","../node_modules/next/dist/pages/_app.d.ts","../node_modules/next/app.d.ts","../node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../node_modules/next/dist/server/web/spec-extension/revalidate-path.d.ts","../node_modules/next/dist/server/web/spec-extension/revalidate-tag.d.ts","../node_modules/next/cache.d.ts","../node_modules/next/dist/shared/lib/runtime-config.d.ts","../node_modules/next/config.d.ts","../node_modules/next/dist/pages/_document.d.ts","../node_modules/next/document.d.ts","../node_modules/next/dist/shared/lib/dynamic.d.ts","../node_modules/next/dynamic.d.ts","../node_modules/next/dist/pages/_error.d.ts","../node_modules/next/error.d.ts","../node_modules/next/dist/shared/lib/head.d.ts","../node_modules/next/head.d.ts","../node_modules/next/dist/client/image.d.ts","../node_modules/next/image.d.ts","../node_modules/next/dist/client/link.d.ts","../node_modules/next/link.d.ts","../node_modules/next/router.d.ts","../node_modules/next/dist/client/script.d.ts","../node_modules/next/script.d.ts","../node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../node_modules/next/dist/compiled/@vercel/og/types.d.ts","../node_modules/next/dist/compiled/@vercel/og/index.node.d.ts","../node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../node_modules/next/server.d.ts","../node_modules/next/types/global.d.ts","../node_modules/next/index.d.ts","../node_modules/next/image-types/global.d.ts","../next-env.d.ts","../src/displaystamps.tsx","../index.ts","../node_modules/next/dist/compiled/@next/font/dist/types.d.ts","../node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","../node_modules/next/font/google/index.d.ts","../app/layout.tsx","../node_modules/ethers/types/_version.d.ts","../node_modules/ethers/types/utils/base58.d.ts","../node_modules/ethers/types/utils/data.d.ts","../node_modules/ethers/types/utils/base64.d.ts","../node_modules/ethers/types/address/address.d.ts","../node_modules/ethers/types/address/contract-address.d.ts","../node_modules/ethers/types/address/checks.d.ts","../node_modules/ethers/types/address/index.d.ts","../node_modules/ethers/types/crypto/hmac.d.ts","../node_modules/ethers/types/crypto/keccak.d.ts","../node_modules/ethers/types/crypto/ripemd160.d.ts","../node_modules/ethers/types/crypto/pbkdf2.d.ts","../node_modules/ethers/types/crypto/random.d.ts","../node_modules/ethers/types/crypto/scrypt.d.ts","../node_modules/ethers/types/crypto/sha2.d.ts","../node_modules/ethers/types/crypto/signature.d.ts","../node_modules/ethers/types/crypto/signing-key.d.ts","../node_modules/ethers/types/crypto/index.d.ts","../node_modules/ethers/types/transaction/accesslist.d.ts","../node_modules/ethers/types/transaction/address.d.ts","../node_modules/ethers/types/transaction/transaction.d.ts","../node_modules/ethers/types/transaction/index.d.ts","../node_modules/ethers/types/providers/contracts.d.ts","../node_modules/ethers/types/providers/plugins-network.d.ts","../node_modules/ethers/types/providers/network.d.ts","../node_modules/ethers/types/providers/formatting.d.ts","../node_modules/ethers/types/providers/provider.d.ts","../node_modules/ethers/types/providers/ens-resolver.d.ts","../node_modules/ethers/types/providers/abstract-provider.d.ts","../node_modules/ethers/types/hash/id.d.ts","../node_modules/ethers/types/hash/namehash.d.ts","../node_modules/ethers/types/hash/message.d.ts","../node_modules/ethers/types/hash/solidity.d.ts","../node_modules/ethers/types/hash/typed-data.d.ts","../node_modules/ethers/types/hash/index.d.ts","../node_modules/ethers/types/providers/signer.d.ts","../node_modules/ethers/types/providers/abstract-signer.d.ts","../node_modules/ethers/types/providers/community.d.ts","../node_modules/ethers/types/providers/provider-jsonrpc.d.ts","../node_modules/ethers/types/providers/provider-socket.d.ts","../node_modules/ethers/types/providers/provider-websocket.d.ts","../node_modules/ethers/types/providers/default-provider.d.ts","../node_modules/ethers/types/providers/signer-noncemanager.d.ts","../node_modules/ethers/types/providers/provider-fallback.d.ts","../node_modules/ethers/types/providers/provider-browser.d.ts","../node_modules/ethers/types/providers/provider-alchemy.d.ts","../node_modules/ethers/types/providers/provider-ankr.d.ts","../node_modules/ethers/types/providers/provider-cloudflare.d.ts","../node_modules/ethers/types/contract/types.d.ts","../node_modules/ethers/types/contract/wrappers.d.ts","../node_modules/ethers/types/contract/contract.d.ts","../node_modules/ethers/types/contract/factory.d.ts","../node_modules/ethers/types/contract/index.d.ts","../node_modules/ethers/types/providers/provider-etherscan.d.ts","../node_modules/ethers/types/providers/provider-infura.d.ts","../node_modules/ethers/types/providers/provider-pocket.d.ts","../node_modules/ethers/types/providers/provider-quicknode.d.ts","../node_modules/ethers/types/providers/provider-ipcsocket.d.ts","../node_modules/ethers/types/providers/index.d.ts","../node_modules/ethers/types/utils/fetch.d.ts","../node_modules/ethers/types/utils/errors.d.ts","../node_modules/ethers/types/utils/events.d.ts","../node_modules/ethers/types/utils/fixednumber.d.ts","../node_modules/ethers/types/utils/maths.d.ts","../node_modules/ethers/types/utils/properties.d.ts","../node_modules/ethers/types/utils/rlp-decode.d.ts","../node_modules/ethers/types/utils/rlp.d.ts","../node_modules/ethers/types/utils/rlp-encode.d.ts","../node_modules/ethers/types/utils/units.d.ts","../node_modules/ethers/types/utils/utf8.d.ts","../node_modules/ethers/types/utils/uuid.d.ts","../node_modules/ethers/types/utils/index.d.ts","../node_modules/ethers/types/abi/coders/abstract-coder.d.ts","../node_modules/ethers/types/abi/fragments.d.ts","../node_modules/ethers/types/abi/abi-coder.d.ts","../node_modules/ethers/types/abi/bytes32.d.ts","../node_modules/ethers/types/abi/typed.d.ts","../node_modules/ethers/types/abi/interface.d.ts","../node_modules/ethers/types/abi/index.d.ts","../node_modules/ethers/types/constants/addresses.d.ts","../node_modules/ethers/types/constants/hashes.d.ts","../node_modules/ethers/types/constants/numbers.d.ts","../node_modules/ethers/types/constants/strings.d.ts","../node_modules/ethers/types/constants/index.d.ts","../node_modules/ethers/types/wallet/base-wallet.d.ts","../node_modules/ethers/types/wordlists/wordlist.d.ts","../node_modules/ethers/types/wordlists/wordlist-owl.d.ts","../node_modules/ethers/types/wordlists/lang-en.d.ts","../node_modules/ethers/types/wordlists/wordlist-owla.d.ts","../node_modules/ethers/types/wordlists/wordlists.d.ts","../node_modules/ethers/types/wordlists/index.d.ts","../node_modules/ethers/types/wallet/mnemonic.d.ts","../node_modules/ethers/types/wallet/hdwallet.d.ts","../node_modules/ethers/types/wallet/json-crowdsale.d.ts","../node_modules/ethers/types/wallet/json-keystore.d.ts","../node_modules/ethers/types/wallet/wallet.d.ts","../node_modules/ethers/types/wallet/index.d.ts","../node_modules/ethers/types/ethers.d.ts","../node_modules/ethers/types/index.d.ts","../src/passportgate.tsx","../src/passportscore.tsx","../app/page.tsx","../src/noscoremessage.tsx","../.next/types/app/layout.ts","../.next/types/app/page.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/async-eventemitter/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/json-buffer/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lru-cache/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20","eeeb3aca31fbadef8b82502484499dfd1757204799a6f5b33116201c810676ec",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"35299ae4a62086698444a5aaee27fc7aa377c68cbb90b441c9ace246ffd05c97","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"0990a7576222f248f0a3b888adcb7389f957928ce2afb1cd5128169086ff4d29",{"version":"549df62b64a71004aee17685b445a8289013daf96246ce4d9b087d13d7a27a61","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","6a386ff939f180ae8ef064699d8b7b6e62bc2731a62d7fbf5e02589383838dea","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"1ed8dfd68d58f1e8483d306d3be837ddbfbed3754d21853c246e95dbe589e573","affectsGlobalScope":true},"cc69795d9954ee4ad57545b10c7bf1a7260d990231b1685c147ea71a6faa265c","8bc6c94ff4f2af1f4023b7bb2379b08d3d7dd80c698c9f0b07431ea16101f05f","1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","57194e1f007f3f2cbef26fa299d4c6b21f4623a2eddc63dfeef79e38e187a36e","0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","9ee13abb39c50c2f45b5362dbadc55334e82dfc9789cfc070808e10dc5f60000","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true},"03c04ba2137908b3b6219ecadc3471d4e39bb9030e6404510ee6e87a3b590a2d",{"version":"f179943da888f75e1e28ed9ce5d3aaa0b14f1d35af42fc5c373533ddf76e4e8b","affectsGlobalScope":true},"3d2bcfb9c4591832ec479f830c49c291419caeb19953506bdeef1c0e6ad79b03","ac0c7cb0a4c1bec60be2c0460b3bda1e674eaf2c98312d7b6f16a0bb58718e2d",{"version":"7e2181a6fc140b4525d5a45c204477c37fa78a635558e88552c68f76a4325403","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","0ea59475772c2a8fdeb1f41ad9b02025aff6423003ec7eaf8129ee846f438aee","276b547eeb8eeeee9a446a3bfa6e07d1c0199269bdcf33813abab1281394a9cb","c999f7816955f75b447823e3e4085f699600e2a4a3327907df9af65b0a9c0df6","64361245fe025cbbad90451dd3698f7e6822d465ef568cbee3a4d8ddb52e7cda","8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","9b814e0806922056145bedb096f11b73bdce70cc871f3ccfc4ce00b2cba75718",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"2013a2215691096d953ce7cefbc71a6cd31ef14be092cd003792714c5cd23bde","affectsGlobalScope":true},"60155c38ec392043962a90006153f7e31187b93411f2d8f9b35f595e98b8d75f","2ad6a251b6ef19fd1f8498f83bb7b265033bd52287e1f6569d09544f18806713","bfa08f2c30c475aef1c9451855ba6b2acfdc64f61950a38fae75806d66fb85c2","159807eb55a9439f9a675bd493788190a6203b5f36c315f8c3acbfcb875c7072","fe31b2b31ac5453fc7b8eef32b62017e55b214ceb884f0b177f442af92e84682","dd72576c8ea64d55af46a386068503d3cfcecce84ed7e1cbd4ff4081ba67fafc",{"version":"125af9d85cb9d5e508353f10a8d52f01652d2d48b2cea54789a33e5b4d289c1c","affectsGlobalScope":true},"70a7e8a7880d55396285e4b85ff5bdf3af3083176abe07f944967836f2a43188","3570df7c6f3a976109f55b596a2d88c2f87e0574cd1502272594ee5c4e56d0ef","850e95721334c2aa7697b08782f443ec4286274e5024169d4443933544f359d7",{"version":"74e6cd21f7b5e29fab05060ea24e2b90aa254f16f3f62ccd7055bdb8fc7b2ff5","affectsGlobalScope":true},{"version":"5761c90b0cabdd6bd1f5fb1c3bf942088fdd39e18ed35dbe39b0c34bc733bf13","affectsGlobalScope":true},"1eb6c5569d41e6021832d0a8a71f45fecbc13d03ad7d306da485999148b64955","c05ef0ecf06540ad3039515c10d3b27f9380639ced40f4093fd073e1b5ff21d9","fd25a0d3e6448b61d33e1fe4e0667a1a87a77e53570b65a454937cf2dc92f967","c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","24a68c38b5c66d6a6883624342560d88db670e97824b397e78d9dac121aa8bae","9a134dbb29f0af914d90b23f609b39019d66ed53db7d492ab6b04c67114559da","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","7b3781fbdfddbee8dba55ccee5aa74a7c8d6701ade11d49ab7d8cb1fcefe669e","c954b72d0b9703226c49656c39290ec0205c31dbb2e05ea75025757007a25952",{"version":"666d3f264db693828f6edc2eb53ae6013e40f6e39278ca209c7a8a99ac91b62f","affectsGlobalScope":true},"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","c764a6cf523d13f2304a23216cd1084e28c041eebabd8aa9b2a9d99866c668c0","1272a5c2bd05961adc473e905332b7a422b00485c10b41c752f7fcf6835e3436","30ef92bf8135ce36ba1231fe41715276f2a40be72a478ddeb862bc16672e8680",{"version":"a33f56e4b9468b9030fbf9c7fd352c7effdacb8e646564b73097304e84323d55","affectsGlobalScope":true},{"version":"539b6d34e9c60b43ec222a910f9cb0af9cfb280ae79caff82487efb1d6afdc6f","affectsGlobalScope":true},"66bfb3de947abf4b117ee849c245425dbe494d6903e28f9ded566e91c9d05d77","c28d4f58131b93d60e087b86148d4e0c9d9b5c49c23ff1a9d1a9594fdedd5d08","c6b5d7f259544c91024ecf2b17138574a3f6ff2476468fafd7f957d2b68d6d98",{"version":"1ec27c4b695590464113276d174f873e260e468ef226b7dc18f9193875fa559d","affectsGlobalScope":true},"33da4ee2ab9fdd9ef8b3fc526d871ce02ae8c825283f5695e7cad507c087b97c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"220717df86539e219f619d31965d177e7235185e4bc6f6e6ed7e11a9b004d5ca","30a1b56068b3820c91a055425a6af2294f8ef2bb10a59dcda413f6437093620d","b186209db0039208e98815f84b729409647f338ca2faa9099ce1d866caf98e7a","44ba44ced68f94d007007c30be960ae1864b306edb63ef939dee698e73fc7c3f","a95b76aef31395752eb5cb7b386be2e287fdc32dfdf7bdbbb666e333133b1ef7","15b9e87ecd2243e804d8020b7ca53b11f1b8402835d3feeb8aa945bd3150ef53","25dfdc5e587333d6d9d8e13ffe07511f6a878c18bbb9fd82b2b359697cf70748","db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","4059592a5c2f2d5f75aac6f555702e3e64be45d1f4e54ba2444b92ce5ac84b1f","625e5d5e9e25017d53e65c62ff944d812d48ec1bbaaf7395c8f8cdf6c9218061","f307044185ce95a12cd54318863a9c56ed9271a4fc45df9e0c4d47db4285c3c2","39a3fc61a65aee8c90cd81bb2c9b508be6c5cc745cd40eaed95954a07c11bb82","6ceac05c32f579adbed2f1a9c98cd297de3c00a3caaffc423385d00e82bce4ce","fa5bbc7ab4130dd8cdc55ea294ec39f76f2bc507a0f75f4f873e38631a836ca7","f7c024ce0f73f3a0e56f35826bed34dd9743ad7daa19068acca653dd7d45f010","cf86de1054b843e484a3c9300d62fbc8c97e77f168bbffb131d560ca0474d4a8","f5c7a89fda2e07a98c64b2e7eb18044e38effd2c1865686bef465d86e9604495","f2341c55a4e2dfb0cff2c8af8f101b92ddb34745fd3d1b05f871676ae39fa041","653060b69b4c62825fca79d91259a5f42736f56dba428322b36cfae593ee8359","c1a5ee52352d5adce0460f4b9d44667d46102b5c0f2a5e60cde55dc2967c2f74","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","a9226d6aaddf108b737bc227ba7a5944f787f2c125eb1183047cbe1a04fc4269","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","8a8bf772f83e9546b61720cf3b9add9aa4c2058479ad0d8db0d7c9fd948c4eaf","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","973b59a17aaa817eb205baf6c132b83475a5c0a44e8294a472af7793b1817e89","ada39cbb2748ab2873b7835c90c8d4620723aedf323550e8489f08220e477c7f","6a3699e58e3e68f379d77a0ade976d91b705182fa6189bac35e876a9ac888da1","741c438ec079a077b08d37d9c0466924b68e98ed47224e83fcb125c5863eb355","649d4c4855a24d8f7cbe4977a0733c405b8ab00f87774359987e4648d0d9da1e","98435f5eaadf367fa5b29e886f6265456219dbbb05e075d135aa5938f7ffc46d","1b82026434e469addbcb287a1f2c6e81eab7e9c461714543ea37715763f45ef8","3ad45e147ea20397ae0a7ff14e4620f607e3cfcffdad39fedc23c781176f1151","5b6f10f0c08fa58b13400e5bbaaa77103c4ca56f4846c9274db6613b4fe7b080","403f280e4101791df0e67aaf1f52c23391390a9535aa597df533e6fe74c2bb75","aed65bf7421ea3b799066d0560878aa28f6728bd648a2cd33859eca4c1b8e3ac","ca1b882a105a1972f82cc58e3be491e7d750a1eb074ffd13b198269f57ed9e1b","b714a2744382be1f2c8bf6e5376b0e4cc5546c2a0ed7585c8da82a9a3d9675ee","737d402374f91fad8f0928daf76e9ee9fd5912aeb35b351e44eb7ecea2dcb87c","fc7214ff37161bf1e89c52b11fc7dddceccab809e36ea0ee26353c7502b0b27b","58902668adae2e5eb67efbccb4048afa02308fa684f1a4e4c7d47668ecf58c1b","3d365237792d79384c1315ad7fba7505b4355ba88d2032349ab437bf7b22e2e8","d99f652b142f9d1941f9ad5ebac9263a25878a667a6ffd6397985ed52a58e8a6","e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","c65a8a2d179a4639a46900b296b85c4bf2a53c85aa61dfa2f7c551ec9828d2c4","cace786bf8078d7cb640d94f97c2f47e5c4f979c6a2e3c9168e54a0d79a6ac0a","17937316a2f7f362dd6375251a9ce9e4960cfdc0aa7ba6cbd00656f7ab92334b","575bc12d93a33c09e803375cd99a77f50c9272d01abe26d5de27af637c7427a3","c93c7e9d2f1e2f72d2cf73d2137897c0074a03cc876dbb202d85de6a195d23cd","e01ed711d76cfe84c7d099d75306323fa1ebc27ce02a742fab271e82a1da4dee","7d1b37284c9a4c58e2954aa21485d37881b5ab25937b29ebfb63c4d37fc3ae3d","1efe66d15fb19a2e8f3aff712fdfd1b9f7b19e7c3603ee188b13a9572ff9a7d8","f0e480e327dd94c30c7003c7ca188b401ab451396f40e4ec5ae2f9b3a944a7be","73a79ef2042a598ab51bb626284b2d2dae8344e98a9e0432d560ca290d9d8253","6e5f5cee603d67ee1ba6120815497909b73399842254fc1e77a0d5cdc51d8c9c","f6404e7837b96da3ea4d38c4f1a3812c96c9dcdf264e93d5bdb199f983a3ef4b","44796bda735e9d184d9fa3ed08bb7c9dab1d185ac542efac5fae1fab553537cc","3cd0346fc79e262233785d9fe2cbad08fc3fe6339af3419791687152ddfe5596","9f3c4349b19905df8e6977106894cb01cbb5ebd6f2a8da64bddaae8b1b3e1c04","2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","1e7fb60ac7ae5365d12ec98b3efbcb9130c400ad3ccc07f2db6f26ff24d62ccf","0aef0a60e229dfeff49f68bf941d24b8338fc3d55aa7c64b1c9acbf9d3a67b46","ba7f9c1882b80478c7fe2268f12e06bb02445212ae104c92b03e4f774e605ae5","ec69228e9b340bd84e916363a3b5edc68e0323ba3eb30fba6ddb67817305ddc3","d23518a5f155f1a3e07214baf0295687507122ae2e6e9bd5e772551ebd4b3157","a966ea6e57d54a96fd90453fb40ef482b61cec8e0797e6b3074925226643c7c6","1165a0cbc221bb838f1c10b316bde79f5969571be6f056fd08afb1a56ee7bb14","36b64ab331f295d922b439b787b8889064f3144652904bf3897064a1c8f92b14","b47bb50ee9d8ac4f69ff2f616b556905e7cb486c554fcc7e04f31c21dfd5e919","8ee3b97185639bf605f207977247c4ef6e8c1c345e92213a2721f0f16542f998","72a3c9bb71c176ee0dfd75a6cd6baf1c5410bc64400a6abd917155a4449df9bd","a7f6b885ca1e9998e44ca651e3f3c97dc6596100e4d47eaa20f2f5a303ed435f","4a8bae6576783c910147d19ec6bef24fd2a24e83acbbb2043a60eec7134738e6","8317f1d2e04f181eca793161466a31d3082d3af6eb6516ba1fead9fe66037431","85b519b910923e882d3bc742811b51588537a16aa987e26bd5231446778dff88","6463077c5df7e039a71d764cdcf8f1a290701b24cd276c75396a292f06175d92","88961917ec908f9fde57b86b8038b8b30766ba14cfdcc214c7c5498d7c9f7924","6bf7c9a195d759ff21d45ebe00ae294b4f0ac36a1114a4580aa60c36a4c2e0ba","45e5c75f8ddf51eff85961cf1912a9a745809957f8b57a0a7d859e20b19ae260","3319a33836fe2eb31969c5b412cf9031e4ce30373ca654e50a36fa63b108d772","1366638c25b6ce477f6394c584cc0e2364ff72ffaeec3ceb7dde1c7b939fade9","e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","1822b69406252b606dc1aec3231a7104ac1d456cfa2c0a9041e61061895ae348","87694c06ce4978fb9d5aa26bde5ab93897fd2263be2c591a683ea907420157dc","c1ac179620434b59c1569f2964a5c7354037ac91a212a1fb281673589965c893","9f891dc96f3e9343c4e823ba28195fd77e59c84199696a8bdfe7b67925732409","63f50c44294385846e5deed7d9d056b3b3bad04ebaa63e1fdca149e1627f5d40","c5b8a7fa79daab61e4fe9174863351b09e4d15644162cb7383e44a5631c62340","a9c5f2c64344a95ece576d4cbfda0efa19824865035f3bbaa2916cf61496c382","f6a7185d6cedf2fc448f63b0897df7f7721ae1da12204901d9dc7e76c279e16e","2c6f043430f24bde409ed1e70d197b3ef70607cd656817bfd6cf02e630bb7a39","495a5da35b04cd142d1301921ce8776c3bd8eab85bbf0ea694e631bc5cd35338","d4a706c16a0584b6e9f63db6f7805dc22f506a30ca94683c8aa6764af45fc646","2d90c24e335fe4670d8b61ac3236ee17b87dddb13b9c97e6bbded8ce398f4ce6","315c2e778bb4386798e43611c94c2f54b2f97efd83b4e412423cbb5fa2dd0b9e","6176b9f450623c979d65630c243971e4348b39f9c2b3052f4b1b2f2d558c13c7","06bcd1f53ae68951411b1649b45fdea22d87db52d2dbeeb8b0af44d47a186c3f","b65c4ff9cd4815c5f1855e8702740c8bbb4921140e3c415c5affe3e376e322dc","39e1d693055885df9edec45084ed64689f3db0aef2fc7757b1b4aa34ad15c06d","be90dde0efc4ce2544606fa5bd2cf15660f43175f49daae067c53a16d7cbf024","15e84dd6d50ef02f936e7bf8f32f71e7469d486df900955e6f8c152266e4b801","3a3a5425e336e230eed798c39ab29e8315a699753d2d128d1499d2eafffe5c80",{"version":"2fb612a7239ba9b5272858a203e232ecc38eafe095b259987bd7b0106ee8b902","affectsGlobalScope":true},"2470bef27cbc2cba488b5368c42cc564675441b523506782728e17d0c74af7b3","070187a9132cd795f971a1c22b75000c0a73bbdfc49c8d3091e763df8c80b002","2766dee26ea113e9b491b7842cb44df57c4d79b17057b42607e09fc174bd411d","cb4047ce260c2f4585b2d592d04a1d9a9c2a1ba32679a688523ec314a977989a","0511c61c22d677da1b6bab4d3844aead1d7e27028d2f0ed1ed315e0860ed5357",{"version":"b4610d904ab939109aa8bcee6f795de8da780b6b4a4d8ff2ff9d2e3b699f55b7","affectsGlobalScope":true},{"version":"6707b2ff066e782f676f90ba7abfca7d6f321eececbbecf3d42eebb7a8c28da2","affectsGlobalScope":true},"b87389fa915955221ff512128d9bad0b60fa922b6b29a358c032b3c5a1754ebd","7f9daeb92677b8461e7d64e05cb7a4fadcc4f1df15352fc41a7e9493fa9ae7ff","2ebe37d9476d15f0541dd5d79267db6e30d6491ed349254ee68a0de25620c577","2d3c25f508407607500045c74c69b5b6abe74838807f4dc2ef5c4bbf1cc642e6",{"version":"3cf72817794f1152e41b704c8f6072c099f0e676bcd704a967901220873fec94","affectsGlobalScope":true},"ec29be0737d39268696edcec4f5e97ce26f449fa9b7afc2f0f99a86def34a418","afd2e86172fee98d7229f886bbbab536b6d4b707d076ced0a68da268eb73faec","5b45d2b0b0e46d9636c8e5206038e703c870382eb315294bcd1c210820de1b4f","06dfd2ebf571b3df2cc23a70f031417eb77f7702f0ce727cec99a296242d6929","65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","0b481dc3fa35afc7f6e80f0ca67753a3567c4fbd2ad996c437f7e550515f7bce","167e0ad8d357a1c1a7d68be49914c7a446560c9c4a35d65c6970635c604e8602","9eac5a6beea91cfb119688bf44a5688b129b804ede186e5e2413572a534c21bb","6c292de17d4e8763406421cb91f545d1634c81486d8e14fceae65955c119584e","b7fff2d004c5879cae335db8f954eb1d61242d9f2d28515e67902032723caeab","8303df69e9d100e3df8f2d67ec77348cb6494dc406356fdd9b56e61aa7c3c758","d8ee76e148f57490fc4517c3802f2fcfdbbdaf39a4afae62ebc42287586fa142","4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","a80e3207332979fcd48223790af48f61192c1d348162adb7e4f30f23085dc0e1","a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","c3a905a7fa93ca648349e934fb19356cf7b40e48d65658de3e0c77d67696fd40","a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","c2489c80994d62e5b51370a6f02f537db4c37af5f914fcb5b2755b81f1906cae","47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","da5f632f5f82f60322089dc4f73fde31ba4c51d599d920d1cad0eef686c71f7c","42c686ce08bf5576ed178f4a6a62d1b580d941334fb53bdff7054e0980f2dc75","605b66155b4f222c5f5a48bf19224815e4bceb2966dfb1c5704692ed07e5fa0a","cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","26a451bf3a5f87ebaaa7694c5b664c3d9cec296f3fa8b797b872aee0f302b3a0","5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","c0eeaaa67c85c3bb6c52b629ebbfd3b2292dc67e8c0ffda2fc6cd2f78dc471e6","4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","25c4bd23e828e865868722c7a1d01876ed891ddfbd92cb6f006e747f56eee0c9","c2008605e78208cfa9cd70bd29856b72dda7ad89df5dc895920f8e10bcb9cd0a","ec61ebac4d71c4698318673efbb5c481a6c4d374da8d285f6557541a5bd318d0","10ec84e648ffc7654868ca02c21a851bc211c8e4d50fd68131c1afa9afd96a33","b5934ca186f498c83e9a663d3df019d82290303fd86b1658cf27cf892b50aaf9",{"version":"16fd66ae997b2f01c972531239da90fbf8ab4022bb145b9587ef746f6cecde5a","affectsGlobalScope":true},{"version":"0bcce57ab91bed60fc66440a053df9254f526ee98a812a35f91604734e21009c","affectsGlobalScope":true},"6d7a1155bc29ed4f608bad12f17d1eadccfc4a5ca55f0c483255089ab5c30855","79d056984a8964d3917c7587067447d7565d9da696fcf6ecaa5e8437a214f04e","9269d492817e359123ac64c8205e5d05dab63d71a3a7a229e68b5d9a0e8150bf",{"version":"bfa0e5a2c1cb66ef10edc9b886458d19ef19989a0453cc1a4cd9f9d4dc7c2b8d","signature":"376d639a07f8189a6237563da0dbc8ada23d142f040aeee1f6242beec97bd57a"},"6fec7cc6ebef9ff89210e1c83dad9772494f8e91c50b12c3297af3471fc31de6","807535f4e95ebccc1eae3d675289b1be5c23e6aaa6fd624f2be485e3e1e6f23d","02c89b8b09fc46836726f0d6a7c4c72f9fdfe91d581a99b386c73393096093c0","1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7",{"version":"54c79cb4905786eb0437700366f5af7cb328914b4a932c124c496930211f9e11","signature":"ae0ca03420b9f0f8f2d82c057487817cceff54eb0e7f31c239e54f942a65db9b"},"cbd8f7cbc0832353a1db0c80ffe50f4d623bcf992faac71b4aef9e0aa6f4f33e","643b5be3fb728581cdb973f3937606d4925a5270d367a38366e4ddc6b30ba688","f7b9aaeace9a3837c47fad74de94ba117751951904a6cb6f6a2340ca3a5052d2","b59a8f409202638d6530f1e9746035717925f196f8350ef188535d6b6f07ac30","10752162e9a90e7f4e6f92d096706911e209f5e6026bb0fe788b9979bf0c807b","91010341cfcb3809686aefe12ceaa794087fcd0c7d4d72fc81d567535c51f7b9","a5fa720bdcd335d6f01999c7f4c93fb00447782db3c2fad005cc775b1b37b684","e11b02953d2bf012fc8828336030f51c88c1f5b6774b3faef11a24e41fc07e94","18282a2d197d5d3b187d6cfe784b0bfeb36dc3caed79d24705c284506c6a7937","bc7f372120474ef5e195f4c5627aa9136af9dfc52c3e81f5404641f3eb921b20","c897edb7e0074c2cb1a118ad1f144d4095a76e13023c1c9d31499a97f0943c6d","5123f400963c1ae260ba78bd27826dd5ada91cc3df088a913fb709906c2f0fed","f6c69d4211c1c0dc144101b7d564eec8992315a5b652108ab44e617fdfb64a9f","3a0b914cd5a33a695925999bc0e20988f625ff92224224a60356531cc248324b","3b9ef4448417e777778007a2abbfb171fbb400c4012560331330c89a8fd08599","f7ecd4552cad04f600bd64a8cb309bf0696c6108285e85a57a8a5355467920ee","80ae4448e40828f253d49dd0cba14ddaa948c4988d54d6bbd558015c4727f1f7","49c2f046e62dd888b01c05e9b4c016c361172e324f596d36460ad1749c27b2ef","a5bb15e8903456dedd2a0c6c7f29b520b75a02fc44b36248fbac98e8b3106f2e","6d2e4114ccd05fb0cd657cfb73419eeb7e1464446aabfe4e652d4ad460c1fd1a","77945da349e6052e8de79f09b1ecb9e9a1b99575bf39fa87d10ee95764af7bc6","b3b8d975dde8a5050661f88910a084fa9e62d16e2ba2f0bfecd420ac3ca36a9b","f5b05406ea7e6b882de28d6fa9c0794a52de8d09bae864ad279dc955e2f54159","90275a4b1c9fe8ee1efc92ba813f8657dcff564de8a51fa7ab1a8668ffca359b","6f76e277d2131a8211d07b4c07816af94d6ddcf178c720cde93a11712e0a137b","c008a70cbc8f19021862f03f7eb272fe37db6d337e826fb85987cac103815657","b5bd512b946ba65a49bdcd83b37a7d8574ef41a52d953c086ed57b9e3a78baf9","899d742aee62e021b8aac361a6f3c1cd40e89bcf89817705c82ee99b1b35f686","48ea9715c4cae2e1e451bd0ccb4af677b05fa9aefe427a45e3437b37578624b7","e1e6b63a6d0315f72938746efc56fe952968376697a4d8b204f36b99f7e941b8","a5a12954b2bbba6ecf60c91ae63df9eced55745ee56356e6458db4a162ee32c6","d082af230228defe329c9648a5286619dc3f97ba7429479547a121a77fdc2d8f","d93c86ac706e8a3eb5c4fd2c3965d793c192438b44b21f94a422029d037113cd","c514af92e28408e19b06c5a7e5f155830ef8ce472c58dccae086fbc2b9338b47","23f31f5eb6d83962a6c499447156e30b0a14569a043c1442fe43c55d102cb9e2","73eec0e971f0feb19434df1d5a125e7bc6080dab553e85dd304e3f8176fd249a","30d718d7f69543772f34b8d354ae37082530a3f2969ac0b2ec5dc7dbefbe17d0","60258fd6c811627dabb45bc71ca506554d1595e8c23b929c69cc4050298e834a","37d0f9b3d91b87c8a67d528571b6f1685f8508b7092bdf61c27abda636050446","a782f06386eead290dcce0361e6d687cc925cde04e55f85dc1a11250bddafef2","7d7ebac0dd1de4e858543e9cab65cf26ae0330e13c32d8237fc6e61704cee125","83a6f5e751c3f189ba612c786985267de335a0e772ff8c14bdeebb4d13a6e333","c1b6518f40e15bc7767af7bf8208a265ead5f4e0568b374cd5e3c727fd1aa306","670975b7c6cc594141e741e4e735a38ae232ff5ee5038ddb9f0a3eacfb9222b0","7aaad2c98007df2401563d55f58556c1f92d1dde43e223c327cd6d670b6043bf","c8f335729cf1637ecf74f09e8430e6b0c1485350d6ae55396c3104a089eff57d","869a92cad9b6e7c4f2c3baab7b4b6a6cc4fa2181fe419504e4c06a3256532aff","156d4829532c7d26f824ab7bb26b1eced1bfaf5711d426e95357004c43f40d98","df1a00cddb5a56dc7e95680c9e590e21d7b248ba09c43eb70c2b0831c5d925bb","b2acbc4ba8efa152ac7d48b883cb3aa632d947a72670ca4736524bb502e2dc6a","6fc877efa9b8cb2917f49573a66b538202f6abbd9375f44b740701e64793fb40","98dc0f12b70f22e07e5e3c37329d41574cbdf49364eb420cca8fffe53f41427a","734681ba1a949c104c09cf9ba51477eeed5f2dca2d86f2559e1f1f3d6377322e","66c4095329175cbdf802b9deed4b95d0940a1440be54bba035f32020da81a6e6","f1339dadf85b53bd55ee4d1d83fe624aad0d3675a487d2210422a6f71fac6a2d","d388e40b946609b83a5df1a1d12a0ea77168ee2407f28eac6958d6638a3fbf69","a3382337c11dca4ee9570b6132ab8a4d51588b4aa12178748805215139ea5b30","3c5cb5c38c57228b410e3c837fcb6dbc1d501304ee8de2f606741d92a7f4aa5d","afb711f16565a95b1de64c59feebe81c2e0745423169280a36a4e3897f79574e","a55c618dd75fa9cb3eb5a1d71bebe532afe6cac39ad526e60f78bb67663c6773","eb0a44022fc7aae53a1ff7368cde9ee17ca7837ca93993079198399a16d5f02e","c7cae4f5befd90da675906c456cc35244edad7cdcedb51fb8f94d576f2b52e5e","bdbdde25111a3b370c57466aa29deb964c0e5a0b36aa21cffe94632305a2abab","79659c428aa1dfccda267dddb1b4455e54ac455d5153618226046e3f200265da","c4e720b6dd8053526bedd57807a9914e45bb2ffbda801145a086b93cf1cda6d5","1dc465a4431aaa00bb80452b26aa7e7ec33aca666e4256c271bdf04f18fef54d","98674a7e3d14a189ae79f31b0ca00e6d909247143478ae88f6fa232d2b9a8e93","412e07f67dccf5f77124a710faab456501b7abd37355db9e6e92e25e72d7b478","add54a06a7a910f6ed0195282144d58f24e375b7d16bd4a5c5b9d91bb4b5e184","dc03aa8332b32c2d7cd0f4f72b4a8cc61bbc2806eb18fa841ec3de56b8e806a6","dd56e1c623e5b14260b6d817f4f26d6cc63c77f5bf55321306d118617fc20c7d","2ce25803270b0f26b7ca6964bb9322ca7defeb1799e5f7571074d711cb71c49c","4f7a5210a2b75ca0ec4c6030ecb6186632d537e6369afc9e3671391a7ed2bebd","a74032cdcf6d9a080fe788ed75d9fe8fb93b1cfc8e334c42c3e3fc90836c2e35","56886c6652a3f89619b2f698ac2b2bf90081f1b8fd824be8d08f02acf0defeec","27b5570022c0f24a093c0718de58a4f2d2b4124df0f7ff9b9786874c84c8af27","28c701a26b32d63da7305056924fa2b05db49a550ff9475a75166f192137c5e1","b59a846f3c8a25132d63506c78d4570b079a701e456690f34a7e29bbfbe03572","91f94e7c608301a0a406673a8c5ee3e47ccff3c0c7c3ef1fc22497c86c02aa21","ea76d1231ea876a2a352eae09d90ae6ef20126052e0adfdc691437d624ebcc47","0961671995b68a718e081179cfa23c89410b97031880cf0fea203f702193385a","b6592f9a1102da83ba752d678e5e94af9443bf1ab70666f2f756ba1a85b8adfc","d1c933acc6c2847d38c7a29c3d154ef5a6b51e2ad728f682e47717524683e563","44380b6f061bbb7d7b81b3d9973c9a18b176e456eee4316a56c9e2932df77bfd","f6e2eefc6ebbb202d08fb7510178696fd33b4775949b317993e10e35003765f8","32d5ec19fbe22a610e11aa721d9947c1249e59a5b8e68f864d954f68795982d1","a0e38a5ad74801e3c44fe0376bc27d7de20bcd84fd3a31f9ea8067616ba8980d","998c9ae7ae683f16a68d9204b8dea071377d886ed649f7da777dce408ede67b7","eec165e68925d37217f4ca9f2c8d70272085d7a71ed0686f668eda9fc5711cc0","d56bc539844eceaaae11714c214add744ace0227da77c91e62d8c3cd0ee78964","9199f6ead2ae205b4a0efe8b427706b7b9856f2fb51587ca25e9161cfee2b163","120a62730ef5b8b61b4a82005c421506d0bf4f5a2fbe84b88149c79c894900da","e0fda0439262e5c3e65edfa8fec215d2122ef895e0fee9709842ae69e37c02ce","faf92d569360b567c70c11b08aadd997fb2ca1847687f370eaea8eda19f807f2","38e878406954753d87c2b0db8b5146da5abb86c44139526cba2046cc70fbd1d4","3a99cb0e46b7ff26bf179e241c0ed26e3d920abb6a3bffa84cd0d7ca0883566a","6a22003e006988f31654d8bf884208ff753d64bcb980a89e4c5eb933bf446d09","ff58c071d2067483e5c598289e64df461f0e5158adb78ee7610f5090187a80ab","7f02dfc714a76c78325cdfbc138b57531103490dc9d88affdb3f4a54fdd879a0",{"version":"4ae4ecee13951f61a5bcf85df882a376d9e0beb88fe7c6409bb860c4c3fb3175","signature":"bb92d2e09e247b7f9509f59acc64630bbf9549c587f71dd2d1c1eafef8fbff31"},{"version":"d96de8d6e85d140a1c615263bd8d6f396f8a76806bc6a8ff62e887d16930a08b","signature":"61215f4d82c99808b54c25577f4352166f987c77371d08c16519ac386a0cf496"},{"version":"b9b39b232b0fac30dcad82f66fe0253c3ebc51f6ebf7fae6acb551e156f9a121","signature":"75730c063eeb70a4220b5060552655c6368879092b4e51c01c8b854984e11b05","affectsGlobalScope":true},{"version":"82e7f6b3be07f72ac47d3086e8131066b9faf89215b1e54d8abe7a32d410af4e","signature":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},{"version":"b852fb8c76241ad8aa0bd7ba4b814bab846b07295862f313968a9fe94ba60cb6","signature":"50eb0cca60a05f4817fa22b73df94690c4f0696b58e6cea749c0ef331d5637b9"},{"version":"549ecaa7f84ba6de17389baca6ae47fff6fbfa17e09eff08f37ab9934cb5c378","signature":"50eb0cca60a05f4817fa22b73df94690c4f0696b58e6cea749c0ef331d5637b9"},"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","7ccce4adb23a87a044c257685613126b47160f6975b224cea5f6af36c7f37514","2393897426427755447c9b91e33955764a791834462751c01b6e527a93859c01","cdac7e46e615e1fdcca7c3a2aab2fbd19085443048733cf239a090f7a17efa27","739549074c075146aadf2d6786e249665d6917d567856bf76c82a7332c63a33e","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","75bdc1b420f0ffc6cc6fd0b6694d89f5072bf755b4e6c7e65a2fda797ca0bb8a","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","6d727c1f6a7122c04e4f7c164c5e6f460c21ada618856894cdaa6ac25e95f38c","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066"],"root":[[280,282],286,[386,391]],"options":{"declaration":true,"declarationDir":"./types","emitDeclarationOnly":false,"esModuleInterop":true,"jsx":1,"module":99,"outDir":"./","skipLibCheck":true,"strict":true,"target":1},"fileIdsList":[[120,229,286],[120,229,388],[120,285],[67,120,263,281,385,386,387],[120,281],[120,278,279],[120],[74,120],[77,120],[78,83,111,120],[79,90,91,98,108,119,120],[79,80,90,98,120],[81,120],[82,83,91,99,120],[83,108,116,120],[84,86,90,98,120],[85,120],[86,87,120],[90,120],[88,90,120],[90,91,92,108,119,120],[90,91,92,105,108,111,120],[120,124],[86,90,93,98,108,119,120],[90,91,93,94,98,108,116,119,120],[93,95,108,116,119,120],[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126],[90,96,120],[97,119,120],[86,90,98,108,120],[99,120],[100,120],[77,101,120],[102,118,120,124],[103,120],[104,120],[90,105,106,120],[105,107,120,122],[78,90,108,109,110,111,120],[78,108,110,120],[108,109,120],[111,120],[112,120],[108,120],[90,114,115,120],[114,115,120],[83,98,108,116,120],[117,120],[98,118,120],[78,93,104,119,120],[83,120],[108,120,121],[120,122],[120,123],[78,83,90,92,101,108,119,120,122,124],[108,120,125],[67,120,131,132],[67,120],[67,120,131,132,133],[67,71,120,129,230,273],[63,64,65,66,120],[67,71,120,130,230,273],[120,358,359,360],[120,358],[120,360,361,362,363,364],[120,358,359,360,361,363],[120,294,358,359],[120,294],[120,291,292,293],[120,366,367,368,369],[120,294,313,335,336,345,358,365],[120,335,336,337,345,358,365],[120,335,336,337,338],[120,336,345,365],[120,313,335,337,345,358,365],[120,295,296,297,298,299,300,301,302,303],[120,302,304,358],[120,287,294,304,308,321,339,345,358,365,370,377,383],[120,316,317,318,319,320],[120,304],[120,304,358],[120,384],[120,294,311,312,313,314,358],[120,308,313,321,322],[120,313],[120,311,315,327],[120,313,315,358],[120,304,308],[120,309,310,311,312,313,314,315,322,323,324,325,326,327,328,329,330,331,332,333,334,340,341,342,343,344],[120,308,310,358],[120,311,315,324,325,358],[120,311,325],[120,310,311,313,315,339],[120,311,315],[120,311,315,324,325,327,358],[98,120,127,311,326],[120,308,311,313,315,321,322,323,358],[120,311,313,315,325],[120,311,326],[120,294,304,308,309,311,312,358],[120,313,321,322,323],[120,294,308,309,313,321],[120,308],[120,305,306,307],[120,304,308,358],[120,289],[120,345,346],[120,288,289,290,346,347,348,349,350,351,352,353,354,355,356,357],[120,353],[120,352,354],[120,304,321,345],[120,304,345,358,371,377,378],[120,371,378,379,380,381,382],[120,358,377],[120,304,345,371,379],[120,372,373,374,375,376],[120,373],[120,372],[72,120],[120,246],[120,248,249,250],[120,252],[120,136,144,161,230],[120,146],[104,120,127,128,136,144,148,162,188,189,190,193,230],[120,134,160],[120,134],[120,134,160,161],[77,120,127],[120,196],[120,195,197,199],[77,120,127,166,195,196,197],[77,120,127,190],[67,120,137],[67,119,120,127],[67,120,160,236],[67,120,160],[120,234,242],[67,120,235,245],[120,283],[67,108,120,127,273],[67,71,93,120,127,129,130,230,271,272],[120,135],[120,223,224,225,226,227,228],[120,225],[67,120,231,245],[67,120,245],[93,120,127,145,245],[93,120,127,145,146,166,167,195],[120,190,191,204],[93,120,127,144,146],[93,108,120,127,143,145,146,230],[93,104,119,120,127,135,136,137,143,144,145,146,154,157,158,159,160,163,172,173,175,177,178,179,180,181,183,185,190,208,210,230],[93,108,120,127],[120,134,136,137,138,143,245],[120,144],[104,119,120,127,136,142,143,144,145,154,157,158,159,170,173,176,179,182,190,208,211,217,219,220],[120,144,148,190],[120,143,144],[120,157,209],[120,140,141],[120,140,212],[120,140],[120,142,145,186,207],[120,140,141,142,155,156,158],[120,140,141,142,155,158,218],[120,142,156,157],[120,155],[120,141,142],[120,142,213],[120,141],[120,144,167,172,187,194,203,205,206],[120,141,167,191,192,198,200,201,202],[93,119,120,127,137,143,144,185],[120,172,185,245],[120,191,192],[120,148],[120,128,178,230,245],[93,104,119,120,127,136,142,143,145,148,154,159,162,163,170,172,173,175,176,177,181,182,185,190,211,214,215,216,245],[93,120,127,143,144,148,217,221],[67,93,104,120,127,135,137,143,146,163,177,178,179,180,230],[93,104,119,120,127,139,142,145],[120,184],[93,120,127,163],[104,120,127,135,136,143,145,154,157,158],[93,120,127,163,174],[93,120,127,145,175],[93,120,127,144,157],[93,120,127],[93,120,127,145,166],[120,165],[120,167],[120,274],[120,144,164,166,170],[120,144,164,166],[93,120,127,139,144,167,168,169],[120,238],[120,238,239,240],[120,243],[67,120,128,177,180,230,245],[67,104,119,120,127,135,233,235,237,241,245],[120,145,154,160],[104,120,127],[120,153],[67,93,104,120,127,135,230,231,232,242,244],[62,67,68,69,70,120,129,130,230,273],[120,254],[120,256],[120,258],[120,284],[120,260],[120,262],[71,73,120,230,247,251,253,255,257,259,261,263,265,266,268,276,277],[120,264],[120,235],[120,267],[77,120,167,168,169,170,269,270,273,275],[120,127],[67,71,93,104,120,127,129,130,131,133,135,146,222,229,245,273],[67,120,263,285],[90,93,119,120,127,396,397,398],[90,120,127],[67]],"referencedMap":[[390,1],[391,2],[286,3],[388,4],[282,5],[280,6],[232,7],[392,7],[74,8],[75,8],[77,9],[78,10],[79,11],[80,12],[81,13],[82,14],[83,15],[84,16],[85,17],[86,18],[87,18],[89,19],[88,20],[90,19],[91,21],[92,22],[76,23],[126,7],[93,24],[94,25],[95,26],[127,27],[96,28],[97,29],[98,30],[99,31],[100,32],[101,33],[102,34],[103,35],[104,36],[105,37],[106,37],[107,38],[108,39],[110,40],[109,41],[111,42],[112,43],[113,44],[114,45],[115,46],[116,47],[117,48],[118,49],[119,50],[120,51],[121,52],[122,53],[123,54],[124,55],[125,56],[65,7],[133,57],[131,58],[132,59],[130,60],[63,7],[67,61],[129,62],[393,7],[66,7],[64,7],[287,7],[361,63],[362,64],[359,64],[360,7],[365,65],[364,66],[363,67],[291,7],[293,68],[292,64],[294,69],[366,7],[367,7],[370,70],[368,7],[369,7],[337,71],[338,72],[339,73],[335,74],[336,75],[295,64],[304,76],[296,64],[298,64],[299,7],[297,64],[300,64],[301,64],[302,64],[303,77],[384,78],[316,7],[321,79],[318,80],[317,7],[319,7],[320,81],[385,82],[315,83],[323,84],[324,7],[309,85],[328,86],[314,87],[312,88],[345,89],[311,90],[310,85],[332,91],[333,91],[331,92],[334,92],[340,93],[330,94],[341,95],[344,96],[325,97],[342,91],[343,91],[326,98],[327,99],[313,100],[329,101],[322,102],[305,103],[306,81],[308,104],[307,105],[288,64],[290,106],[289,7],[347,107],[348,7],[346,7],[349,64],[358,108],[350,106],[351,7],[352,64],[354,109],[353,110],[355,64],[356,64],[357,64],[371,111],[379,112],[383,113],[380,7],[381,81],[378,114],[382,115],[377,116],[374,117],[373,118],[375,117],[372,7],[376,118],[73,119],[247,120],[251,121],[253,122],[160,123],[172,124],[194,125],[161,126],[188,7],[178,127],[162,128],[180,127],[173,127],[138,127],[202,129],[199,130],[200,131],[192,7],[198,132],[191,133],[201,7],[262,134],[264,135],[237,136],[236,137],[235,138],[267,58],[234,139],[165,7],[270,7],[284,140],[283,7],[272,7],[274,141],[271,58],[273,142],[134,7],[189,7],[136,143],[223,7],[224,7],[226,7],[229,144],[225,7],[227,145],[228,145],[171,7],[246,139],[254,146],[258,147],[146,148],[204,129],[196,149],[205,150],[145,151],[176,152],[211,153],[139,154],[144,155],[135,156],[221,157],[220,158],[177,7],[157,159],[186,7],[210,160],[209,7],[187,161],[212,161],[213,162],[141,163],[208,164],[140,7],[218,165],[219,166],[158,167],[156,168],[155,169],[214,170],[142,171],[207,172],[203,173],[128,7],[216,174],[190,175],[193,176],[215,177],[179,178],[217,179],[222,180],[147,7],[152,7],[149,7],[150,7],[151,7],[163,154],[181,181],[143,182],[148,7],[185,183],[184,184],[159,185],[175,186],[174,187],[206,7],[164,188],[197,189],[195,190],[166,191],[168,192],[275,193],[167,194],[169,195],[249,7],[250,7],[248,7],[269,7],[170,196],[72,7],[239,197],[240,7],[238,7],[241,198],[244,199],[256,58],[260,58],[231,200],[137,7],[233,7],[243,7],[242,201],[183,202],[182,203],[154,204],[153,7],[252,7],[245,205],[62,7],[71,206],[68,58],[69,7],[70,7],[255,207],[257,208],[259,209],[285,210],[261,211],[279,212],[263,212],[278,213],[265,214],[266,215],[268,216],[276,217],[277,218],[230,219],[60,7],[61,7],[12,7],[13,7],[15,7],[14,7],[2,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[3,7],[4,7],[27,7],[24,7],[25,7],[26,7],[28,7],[29,7],[30,7],[5,7],[31,7],[32,7],[33,7],[34,7],[6,7],[38,7],[35,7],[36,7],[37,7],[39,7],[7,7],[40,7],[45,7],[46,7],[41,7],[42,7],[43,7],[44,7],[8,7],[50,7],[47,7],[48,7],[49,7],[51,7],[9,7],[52,7],[53,7],[54,7],[57,7],[55,7],[56,7],[58,7],[10,7],[1,7],[11,7],[59,7],[281,7],[389,7],[386,58],[387,220],[394,19],[395,218],[399,221],[397,7],[400,7],[401,222],[402,7],[403,218],[398,154],[404,218],[396,19]],"exportedModulesMap":[[286,223],[388,223],[282,5],[280,6],[232,7],[392,7],[74,8],[75,8],[77,9],[78,10],[79,11],[80,12],[81,13],[82,14],[83,15],[84,16],[85,17],[86,18],[87,18],[89,19],[88,20],[90,19],[91,21],[92,22],[76,23],[126,7],[93,24],[94,25],[95,26],[127,27],[96,28],[97,29],[98,30],[99,31],[100,32],[101,33],[102,34],[103,35],[104,36],[105,37],[106,37],[107,38],[108,39],[110,40],[109,41],[111,42],[112,43],[113,44],[114,45],[115,46],[116,47],[117,48],[118,49],[119,50],[120,51],[121,52],[122,53],[123,54],[124,55],[125,56],[65,7],[133,57],[131,58],[132,59],[130,60],[63,7],[67,61],[129,62],[393,7],[66,7],[64,7],[287,7],[361,63],[362,64],[359,64],[360,7],[365,65],[364,66],[363,67],[291,7],[293,68],[292,64],[294,69],[366,7],[367,7],[370,70],[368,7],[369,7],[337,71],[338,72],[339,73],[335,74],[336,75],[295,64],[304,76],[296,64],[298,64],[299,7],[297,64],[300,64],[301,64],[302,64],[303,77],[384,78],[316,7],[321,79],[318,80],[317,7],[319,7],[320,81],[385,82],[315,83],[323,84],[324,7],[309,85],[328,86],[314,87],[312,88],[345,89],[311,90],[310,85],[332,91],[333,91],[331,92],[334,92],[340,93],[330,94],[341,95],[344,96],[325,97],[342,91],[343,91],[326,98],[327,99],[313,100],[329,101],[322,102],[305,103],[306,81],[308,104],[307,105],[288,64],[290,106],[289,7],[347,107],[348,7],[346,7],[349,64],[358,108],[350,106],[351,7],[352,64],[354,109],[353,110],[355,64],[356,64],[357,64],[371,111],[379,112],[383,113],[380,7],[381,81],[378,114],[382,115],[377,116],[374,117],[373,118],[375,117],[372,7],[376,118],[73,119],[247,120],[251,121],[253,122],[160,123],[172,124],[194,125],[161,126],[188,7],[178,127],[162,128],[180,127],[173,127],[138,127],[202,129],[199,130],[200,131],[192,7],[198,132],[191,133],[201,7],[262,134],[264,135],[237,136],[236,137],[235,138],[267,58],[234,139],[165,7],[270,7],[284,140],[283,7],[272,7],[274,141],[271,58],[273,142],[134,7],[189,7],[136,143],[223,7],[224,7],[226,7],[229,144],[225,7],[227,145],[228,145],[171,7],[246,139],[254,146],[258,147],[146,148],[204,129],[196,149],[205,150],[145,151],[176,152],[211,153],[139,154],[144,155],[135,156],[221,157],[220,158],[177,7],[157,159],[186,7],[210,160],[209,7],[187,161],[212,161],[213,162],[141,163],[208,164],[140,7],[218,165],[219,166],[158,167],[156,168],[155,169],[214,170],[142,171],[207,172],[203,173],[128,7],[216,174],[190,175],[193,176],[215,177],[179,178],[217,179],[222,180],[147,7],[152,7],[149,7],[150,7],[151,7],[163,154],[181,181],[143,182],[148,7],[185,183],[184,184],[159,185],[175,186],[174,187],[206,7],[164,188],[197,189],[195,190],[166,191],[168,192],[275,193],[167,194],[169,195],[249,7],[250,7],[248,7],[269,7],[170,196],[72,7],[239,197],[240,7],[238,7],[241,198],[244,199],[256,58],[260,58],[231,200],[137,7],[233,7],[243,7],[242,201],[183,202],[182,203],[154,204],[153,7],[252,7],[245,205],[62,7],[71,206],[68,58],[69,7],[70,7],[255,207],[257,208],[259,209],[285,210],[261,211],[279,212],[263,212],[278,213],[265,214],[266,215],[268,216],[276,217],[277,218],[230,219],[60,7],[61,7],[12,7],[13,7],[15,7],[14,7],[2,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[3,7],[4,7],[27,7],[24,7],[25,7],[26,7],[28,7],[29,7],[30,7],[5,7],[31,7],[32,7],[33,7],[34,7],[6,7],[38,7],[35,7],[36,7],[37,7],[39,7],[7,7],[40,7],[45,7],[46,7],[41,7],[42,7],[43,7],[44,7],[8,7],[50,7],[47,7],[48,7],[49,7],[51,7],[9,7],[52,7],[53,7],[54,7],[57,7],[55,7],[56,7],[58,7],[10,7],[1,7],[11,7],[59,7],[281,223],[386,223],[387,223],[394,19],[395,218],[399,221],[397,7],[400,7],[401,222],[402,7],[403,218],[398,154],[404,218],[396,19]],"semanticDiagnosticsPerFile":[390,391,286,388,282,280,232,392,74,75,77,78,79,80,81,82,83,84,85,86,87,89,88,90,91,92,76,126,93,94,95,127,96,97,98,99,100,101,102,103,104,105,106,107,108,110,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,65,133,131,132,130,63,67,129,393,66,64,287,361,362,359,360,365,364,363,291,293,292,294,366,367,370,368,369,337,338,339,335,336,295,304,296,298,299,297,300,301,302,303,384,316,321,318,317,319,320,385,315,323,324,309,328,314,312,345,311,310,332,333,331,334,340,330,341,344,325,342,343,326,327,313,329,322,305,306,308,307,288,290,289,347,348,346,349,358,350,351,352,354,353,355,356,357,371,379,383,380,381,378,382,377,374,373,375,372,376,73,247,251,253,160,172,194,161,188,178,162,180,173,138,202,199,200,192,198,191,201,262,264,237,236,235,267,234,165,270,284,283,272,274,271,273,134,189,136,223,224,226,229,225,227,228,171,246,254,258,146,204,196,205,145,176,211,139,144,135,221,220,177,157,186,210,209,187,212,213,141,208,140,218,219,158,156,155,214,142,207,203,128,216,190,193,215,179,217,222,147,152,149,150,151,163,181,143,148,185,184,159,175,174,206,164,197,195,166,168,275,167,169,249,250,248,269,170,72,239,240,238,241,244,256,260,231,137,233,243,242,183,182,154,153,252,245,62,71,68,69,70,255,257,259,285,261,279,263,278,265,266,268,276,277,230,60,61,12,13,15,14,2,16,17,18,19,20,21,22,23,3,4,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,10,1,11,59,281,389,386,387,394,395,399,397,400,401,402,403,398,404,396]},"version":"5.1.3"}
--------------------------------------------------------------------------------
/dist/types/app/layout.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import './globals.css';
3 | export declare const metadata: {
4 | title: string;
5 | description: string;
6 | };
7 | export default function RootLayout({ children, }: {
8 | children: React.ReactNode;
9 | }): import("react").JSX.Element;
10 |
--------------------------------------------------------------------------------
/dist/types/app/page.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | declare global {
3 | interface Window {
4 | ethereum?: any;
5 | }
6 | }
7 | export default function Passport(): import("react").JSX.Element;
8 |
--------------------------------------------------------------------------------
/dist/types/index.d.ts:
--------------------------------------------------------------------------------
1 | export { DisplayStamps } from './src/DisplayStamps';
2 |
--------------------------------------------------------------------------------
/dist/types/src/DisplayStamps.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | export declare const DisplayStamps: () => import("react").JSX.Element;
3 |
--------------------------------------------------------------------------------
/dist/types/src/NoScoreMessage.d.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/dist/types/src/NoScoreMessage.d.ts
--------------------------------------------------------------------------------
/dist/types/src/PassportGate.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | interface Props {
3 | SCORER_ID?: string;
4 | headers?: Record;
5 | currentAddress?: string;
6 | threshold: number;
7 | }
8 | export declare const PassportGate: ({ SCORER_ID, headers, currentAddress, threshold }: Props) => import("react").JSX.Element;
9 | export {};
10 |
--------------------------------------------------------------------------------
/dist/types/src/PassportScore.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | interface Props {
3 | SCORER_ID?: string;
4 | headers?: Record;
5 | currentAddress?: string;
6 | }
7 | export declare const PassportScore: ({ SCORER_ID, headers, currentAddress }: Props) => import("react").JSX.Element;
8 | export {};
9 |
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | export { DisplayStamps } from './src/DisplayStamps';
2 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {}
3 |
4 | module.exports = nextConfig
5 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "passport-quick-start",
3 | "version": "0.1.5",
4 | "private": false,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "babel src --out-dir dist --extensions \".ts,.tsx\" --source-maps inline && tsc",
8 | "start": "next start",
9 | "lint": "next lint",
10 | "prebuild": "rimraf dist",
11 | "prepublishOnly": "npm run build"
12 | },
13 | "dependencies": {
14 | "@types/node": "20.2.1",
15 | "@types/react": "18.2.6",
16 | "@types/react-dom": "18.2.4",
17 | "autoprefixer": "10.4.14",
18 | "eslint": "8.40.0",
19 | "eslint-config-next": "13.4.2",
20 | "ethers": "^6.3.0",
21 | "next": "13.4.2",
22 | "postcss": "8.4.23",
23 | "react": "18.2.0",
24 | "react-dom": "18.2.0",
25 | "tailwindcss": "3.3.2"
26 | },
27 | "devDependencies": {
28 | "@babel/cli": "^7.22.5",
29 | "@babel/core": "^7.22.5",
30 | "@babel/preset-env": "^7.22.5",
31 | "@babel/preset-typescript": "^7.22.5",
32 | "typescript": "^5.1.3"
33 | },
34 | "types": "dist/index.d.ts",
35 | "main": "dist/index.js",
36 | "files": ["dist"]
37 | }
38 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | }
7 |
--------------------------------------------------------------------------------
/public/hover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/public/hover.png
--------------------------------------------------------------------------------
/public/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/public/info.png
--------------------------------------------------------------------------------
/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/public/logo.png
--------------------------------------------------------------------------------
/public/next.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/paragraph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/public/paragraph.png
--------------------------------------------------------------------------------
/public/passportLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gitcoinco/passport-components/26c3d3998df16e40d6d75b9e6b5cf4510f9947b5/public/passportLogo.png
--------------------------------------------------------------------------------
/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/DisplayStamps.css:
--------------------------------------------------------------------------------
1 | .stamp-grid {
2 | display: grid;
3 | grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
4 | gap: 20px;
5 | }
6 |
7 | .stamp-box {
8 | border: 2px solid purple;
9 | background: white;
10 | padding: 20px;
11 | box-sizing: border-box;
12 | }
13 |
--------------------------------------------------------------------------------
/src/DisplayStamps.tsx:
--------------------------------------------------------------------------------
1 | export const DisplayStamps = () => {
2 | return (
3 |
6 | )
7 | }
8 |
9 | // import { Gorditas } from 'next/font/google';
10 | // import { useState, useEffect } from 'react';
11 | // import CSS from 'csstype';
12 |
13 |
14 | // interface Props {
15 | // headers?: Record;
16 | // currentAddress?: string;
17 | // }
18 |
19 | // interface Stamp {
20 | // version: string,
21 | // credential: Record,
22 | // metadata: Record
23 | // }
24 |
25 | // const ONCHAIN_GROUPS = ["Lens Handle", "zkSync 1.0", "NFT Holder", "Self GTC Staking", "Snapshot Voter", "Transactions", "Contributed to...", "Gas fees spent", "GTC possessions", 'Lens', 'POAP', 'Ens', 'NFT', 'EthGTEOneTxnProvider', 'FirstEthTxnProvider', ]
26 | // const ONCHAIN_STAMP_NAMES = ['Ens', 'POAP']
27 |
28 | // export const DisplayStamps: React.FC = ({ headers, currentAddress}: Props) => {
29 | // const [stamps, setStamps] = useState([])
30 | // const [noStampMessage, setNoStampMessage] = useState('')
31 |
32 | // useEffect(() => {
33 | // if(headers && currentAddress) {
34 | // fetchScore();
35 | // }
36 | // }, [headers, currentAddress]);
37 |
38 |
39 | // const fetchScore = async () => {
40 | // const GET_PASSPORT_STAMPS_URI = `https://api.scorer.gitcoin.co/registry/stamps/${currentAddress}?limit=1000&include_metadata=true`;
41 |
42 | // try {
43 | // const response = await fetch(GET_PASSPORT_STAMPS_URI, {
44 | // headers
45 | // });
46 |
47 | // const passportData = await response.json();
48 |
49 | // if (passportData && passportData.items) {
50 | // console.log(passportData.items)
51 | // setStamps(passportData.items)
52 | // } else {
53 | // setNoStampMessage('No stamps available, please submit your passport after you have added some stamps.');
54 | // }
55 | // } catch (err) {
56 | // console.log('error: ', err);
57 | // }
58 | // };
59 | // // If SCORER_ID or headers or currentAddress is undefined, display a message
60 | // if ( !headers || !currentAddress) {
61 | // return (
62 | //
63 | //
headers or currentAddress is undefined!
64 | //
65 | // )
66 | // }
67 |
68 | // if (noStampMessage != '') {
69 | // return (
70 | //
71 | //
{noStampMessage}
72 | //
73 | // )
74 | // }
75 |
76 | // return (
77 | //
78 | //
79 | // {stamps.map((stamp, index) => (
80 | //
81 | // {stamp.metadata.platform &&
}
82 | //
{stamp.metadata.platform.id}
83 | //
{stamp.metadata.group}
84 | //
85 | // {stamp.metadata.description}
86 | //
87 | //
88 | // ))}
89 | //
90 | //
91 | // )
92 | // }
93 |
94 | // const styles = {
95 | // h2: {
96 | // fontSize: 12,
97 | // fontWeight: 'normal',
98 | // color: 'white'
99 | // },
100 | // h3: {
101 | // color: 'white'
102 | // },
103 | // p: {
104 | // color: 'white'
105 | // },
106 | // li: {
107 | // color: 'white'
108 | // },
109 | // stampGrid: {
110 | // display: 'grid',
111 | // gridTemplateColumns: 'repeat(auto-fill, minmax(250px, 1fr))',
112 | // gap: '20px',
113 | // marginTop: 20
114 | // },
115 | // stampBox: {
116 | // border: '2px solid #19393F',
117 | // background: '#0C110F',
118 | // padding: '20px',
119 | // },
120 | // a: {
121 | // color: '#6F3FF5'
122 | // }
123 | // }
124 |
--------------------------------------------------------------------------------
/src/NoScoreMessage.tsx:
--------------------------------------------------------------------------------
1 | //todo
--------------------------------------------------------------------------------
/src/PassportGate.tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from 'react';
2 |
3 | //component fetches passport score and displays it
4 |
5 | //required props: scorer_id, headers, address
6 |
7 | //optional props: label, hideLabel, hideInfo, style
8 |
9 | //states: score, no score
10 |
11 | //todo: design noScore state
12 | //todo: add optional prop functionality
13 |
14 | interface Props {
15 | SCORER_ID?: string;
16 | headers?: Record;
17 | currentAddress?: string;
18 | threshold: number;
19 | }
20 |
21 | export const PassportGate = ({ SCORER_ID, headers, currentAddress, threshold}: Props) => {
22 | const [score, setScore] = useState('')
23 | const [noScoreMessage, setNoScoreMessage] = useState('')
24 |
25 | const [newScore, setNewScore] = useState(0)
26 |
27 | useEffect(() => {
28 | if(SCORER_ID && headers && currentAddress) {
29 | fetchScore();
30 | }
31 | }, []);
32 |
33 | const fetchScore = async () => {
34 | const GET_PASSPORT_SCORE_URI = `https://api.scorer.gitcoin.co/registry/score/${SCORER_ID}/${currentAddress}`;
35 |
36 | try {
37 | const response = await fetch(GET_PASSPORT_SCORE_URI, {
38 | headers
39 | });
40 |
41 | const passportData = await response.json();
42 |
43 | if (passportData.score) {
44 | const roundedScore = Math.round(passportData.score * 100) / 100;
45 | setScore(roundedScore.toString());
46 | setNewScore(roundedScore);
47 | } else {
48 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
49 | }
50 | } catch (err) {
51 | console.log('error: ', err);
52 | }
53 | };
54 | // If SCORER_ID or headers or currentAddress is undefined, display a message
55 | if (!SCORER_ID || !headers || !currentAddress) {
56 | return (
57 |
58 |
SCORER_ID, headers or currentAddress is undefined!
59 |
60 | )
61 | }
62 |
63 | if (newScore >= threshold) {
64 | return (
65 |
66 |
Congrats! You can view the secret message
67 |
68 | )
69 | }
70 |
71 | if (noScoreMessage != '') {
72 | return (
73 |
74 |
hey
75 |
76 | )
77 | }
78 |
79 | return (
80 |
81 |
{noScoreMessage}
82 |
83 | )
84 | }
85 |
86 | const styles = {
87 | h2: {
88 | fontSize: 12,
89 | fontWeight: 'normal'
90 | }
91 | }
--------------------------------------------------------------------------------
/src/PassportScore.tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from 'react';
2 | import Image from 'next/image'
3 | import { Roboto_Flex } from 'next/font/google';
4 |
5 | //todo: add optional props label (boolean), theme (string), hideInfo (boolean), theshold (number), style (object)
6 | interface Props {
7 | SCORER_ID?: string;
8 | headers?: Record;
9 | currentAddress?: string;
10 | label?: boolean;
11 | theme?: string;
12 | hideInfo?: boolean;
13 | threshold?: number;
14 | style?: object;
15 | }
16 |
17 |
18 | export const PassportScore = ({
19 | SCORER_ID,
20 | headers,
21 | currentAddress,
22 | label = true,
23 | theme = "light",
24 | hideInfo = false,
25 | threshold = 20,
26 | style
27 | }: Props) => {
28 | const [score, setScore] = useState('')
29 | const [certainty, setCertainty] = useState('')
30 | const [noScoreMessage, setNoScoreMessage] = useState('')
31 |
32 | const themeStyle = theme === "dark" ? { color: "black" } : { color: "white" };
33 | const mergedStyle = { ...styles.h2, ...themeStyle, ...style };
34 |
35 | useEffect(() => {
36 | if(SCORER_ID && headers && currentAddress) {
37 | fetchScore();
38 | }
39 | }, []);
40 |
41 | const fetchScore = async () => {
42 | const GET_PASSPORT_SCORE_URI = `https://api.scorer.gitcoin.co/registry/score/${SCORER_ID}/${currentAddress}`;
43 |
44 | try {
45 | const response = await fetch(GET_PASSPORT_SCORE_URI, {headers});
46 | const passportData = await response.json();
47 |
48 | //todo: change threshold to prop
49 | if (passportData.score) {
50 | const roundedScore = Math.round(passportData.score * 100) / 100;
51 | setScore(roundedScore.toString());
52 | if (roundedScore <= threshold) {
53 | setCertainty('Low Score')
54 | }
55 | else if (roundedScore > threshold) {
56 | setCertainty('Passing Score')
57 | }
58 | } else {
59 | setNoScoreMessage('No score available, please submit your passport after you have added some stamps.');
60 | }
61 | } catch (err) {
62 | console.log('error: ', err);
63 | }
64 | };
65 | // If SCORER_ID or headers or currentAddress is undefined, display a message
66 | if (!SCORER_ID || !headers || !currentAddress) {
67 | return (
68 |
69 |
SCORER_ID, headers or currentAddress is undefined!
70 |
71 | )
72 | }
73 |
74 | if (noScoreMessage != '') {
75 | return (
76 |
77 |
{noScoreMessage}
78 |
79 | )
80 | }
81 |
82 | const certaintyColor = certainty === 'Low Score' ? 'orange'
83 | : 'green';
84 |
85 | return (
86 |
87 |
88 |
{score}
89 | { !hideInfo && }
90 |
91 | { label &&
{certainty}
}
92 |
93 |
94 | //
95 | //
{score}
96 | // { !hideInfo &&
97 | //
98 | //
99 | // { label &&
{certainty}
}
100 | //
101 | // }
102 | //
103 |
104 | //
105 | //
106 | //
{score}
107 | //
108 | //
109 | //
{certainty}
110 | //
111 | )
112 | }
113 |
114 | const styles = {
115 | h2: {
116 | fontSize: 24,
117 | fontWeight: 'normal',
118 | color: 'white',
119 | marginBottom: 5
120 | }
121 | }
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: [
4 | './pages/**/*.{js,ts,jsx,tsx,mdx}',
5 | './components/**/*.{js,ts,jsx,tsx,mdx}',
6 | './app/**/*.{js,ts,jsx,tsx,mdx}',
7 | ],
8 | theme: {
9 | extend: {
10 | backgroundImage: {
11 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
12 | 'gradient-conic':
13 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
14 | },
15 | },
16 | },
17 | plugins: [],
18 | }
19 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": false,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "outDir": "dist",
17 | "declaration": true,
18 | "declarationDir": "dist/types",
19 | "emitDeclarationOnly": false,
20 | "incremental": true,
21 | "plugins": [
22 | {
23 | "name": "next"
24 | }
25 | ],
26 | "paths": {
27 | "@/*": ["./*"],
28 | }
29 | },
30 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src"],
31 | "exclude": ["node_modules"]
32 | }
33 |
--------------------------------------------------------------------------------