├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── assets
├── android-1.jpg
├── android-2.jpg
├── android-3.jpg
├── android-4.jpg
├── ios-1.png
├── ios-2.png
└── qrcode.png
├── index.html
├── package.json
├── pnpm-lock.yaml
├── public
├── favicon.ico
├── icon.png
└── manifest.json
├── src
├── cnodejs.svg
├── components
│ ├── avatar.module.css
│ ├── avatar.tsx
│ ├── common.module.css
│ ├── header.tsx
│ ├── loading.tsx
│ ├── markdown.tsx
│ ├── no-more.module.css
│ ├── no-more.tsx
│ ├── reply.tsx
│ ├── styled.module.css
│ ├── styled.tsx
│ ├── timeago.module.css
│ ├── timeago.tsx
│ ├── topic.module.css
│ └── topic.tsx
├── env.d.ts
├── globals.css
├── hooks
│ └── auth.ts
├── icon.svg
├── index.tsx
├── pages
│ ├── about.tsx
│ ├── index.tsx
│ ├── login.tsx
│ ├── message.tsx
│ ├── post.module.css
│ ├── post.tsx
│ ├── topic
│ │ ├── [id].tsx
│ │ └── detail.module.css
│ └── user
│ │ └── [loginname].tsx
└── utils.ts
├── tsconfig.json
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 |
27 | # local env files
28 | .env.local
29 | .env.development.local
30 | .env.test.local
31 | .env.production.local
32 |
33 | # vercel
34 | .vercel
35 |
36 | .norm
37 | dist/
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Rongjian Zhang
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CNode PWA
2 |
3 | ## License
4 |
5 | MIT
6 |
--------------------------------------------------------------------------------
/assets/android-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/android-1.jpg
--------------------------------------------------------------------------------
/assets/android-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/android-2.jpg
--------------------------------------------------------------------------------
/assets/android-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/android-3.jpg
--------------------------------------------------------------------------------
/assets/android-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/android-4.jpg
--------------------------------------------------------------------------------
/assets/ios-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/ios-1.png
--------------------------------------------------------------------------------
/assets/ios-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/ios-2.png
--------------------------------------------------------------------------------
/assets/qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/assets/qrcode.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 | CNode社区
25 |
26 |
27 |
28 |
29 |
30 |
31 |
55 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cnode-pwa",
3 | "private": true,
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build"
7 | },
8 | "devDependencies": {
9 | "@bytemd/plugin-gfm": "^1.13.1",
10 | "@bytemd/plugin-medium-zoom": "^1.13.1",
11 | "@bytemd/react": "^1.13.1",
12 | "@types/react": "^18.0.8",
13 | "@types/react-dom": "^18.0.3",
14 | "@vitejs/plugin-react": "^1.3.1",
15 | "antd-mobile": "^5.11.1",
16 | "antd-mobile-icons": "^0.2.2",
17 | "github-markdown-css": "^5.1.0",
18 | "lodash-es": "^4.17.21",
19 | "react": "18.1.0",
20 | "react-dom": "^18.1.0",
21 | "react-qr-reader": "^3.0.0-beta-1",
22 | "react-query": "^3.38.0",
23 | "react-router-dom": "^6.3.0",
24 | "timeago-react": "^3.0.4",
25 | "typescript": "^4.6.4",
26 | "vite": "^2.9.6",
27 | "vite-plugin-pages": "^0.23.0",
28 | "vite-plugin-svgr": "^2.0.0",
29 | "vite-tsconfig-paths": "^3.4.1"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@bytemd/plugin-gfm': ^1.13.1
5 | '@bytemd/plugin-medium-zoom': ^1.13.1
6 | '@bytemd/react': ^1.13.1
7 | '@types/react': ^18.0.8
8 | '@types/react-dom': ^18.0.3
9 | '@vitejs/plugin-react': ^1.3.1
10 | antd-mobile: ^5.11.1
11 | antd-mobile-icons: ^0.2.2
12 | github-markdown-css: ^5.1.0
13 | lodash-es: ^4.17.21
14 | react: 18.1.0
15 | react-dom: ^18.1.0
16 | react-qr-reader: ^3.0.0-beta-1
17 | react-query: ^3.38.0
18 | react-router-dom: ^6.3.0
19 | timeago-react: ^3.0.4
20 | typescript: ^4.6.4
21 | vite: ^2.9.6
22 | vite-plugin-pages: ^0.23.0
23 | vite-plugin-svgr: ^2.0.0
24 | vite-tsconfig-paths: ^3.4.1
25 |
26 | devDependencies:
27 | '@bytemd/plugin-gfm': 1.13.1
28 | '@bytemd/plugin-medium-zoom': 1.13.1
29 | '@bytemd/react': 1.13.1_react@18.1.0
30 | '@types/react': 18.0.8
31 | '@types/react-dom': 18.0.3
32 | '@vitejs/plugin-react': 1.3.1
33 | antd-mobile: 5.11.1_react-dom@18.1.0+react@18.1.0
34 | antd-mobile-icons: 0.2.2
35 | github-markdown-css: 5.1.0
36 | lodash-es: 4.17.21
37 | react: 18.1.0
38 | react-dom: 18.1.0_react@18.1.0
39 | react-qr-reader: 3.0.0-beta-1_react-dom@18.1.0+react@18.1.0
40 | react-query: 3.38.0_react-dom@18.1.0+react@18.1.0
41 | react-router-dom: 6.3.0_react-dom@18.1.0+react@18.1.0
42 | timeago-react: 3.0.4_react@18.1.0
43 | typescript: 4.6.4
44 | vite: 2.9.6
45 | vite-plugin-pages: 0.23.0_vite@2.9.6
46 | vite-plugin-svgr: 2.0.0_vite@2.9.6
47 | vite-tsconfig-paths: 3.4.1_vite@2.9.6
48 |
49 | packages:
50 |
51 | /@ampproject/remapping/2.2.0:
52 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
53 | engines: {node: '>=6.0.0'}
54 | dependencies:
55 | '@jridgewell/gen-mapping': 0.1.1
56 | '@jridgewell/trace-mapping': 0.3.9
57 | dev: true
58 |
59 | /@babel/code-frame/7.16.7:
60 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
61 | engines: {node: '>=6.9.0'}
62 | dependencies:
63 | '@babel/highlight': 7.17.9
64 | dev: true
65 |
66 | /@babel/compat-data/7.17.10:
67 | resolution: {integrity: sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==}
68 | engines: {node: '>=6.9.0'}
69 | dev: true
70 |
71 | /@babel/core/7.17.10:
72 | resolution: {integrity: sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==}
73 | engines: {node: '>=6.9.0'}
74 | dependencies:
75 | '@ampproject/remapping': 2.2.0
76 | '@babel/code-frame': 7.16.7
77 | '@babel/generator': 7.17.10
78 | '@babel/helper-compilation-targets': 7.17.10_@babel+core@7.17.10
79 | '@babel/helper-module-transforms': 7.17.7
80 | '@babel/helpers': 7.17.9
81 | '@babel/parser': 7.17.10
82 | '@babel/template': 7.16.7
83 | '@babel/traverse': 7.17.10
84 | '@babel/types': 7.17.10
85 | convert-source-map: 1.8.0
86 | debug: 4.3.4
87 | gensync: 1.0.0-beta.2
88 | json5: 2.2.1
89 | semver: 6.3.0
90 | transitivePeerDependencies:
91 | - supports-color
92 | dev: true
93 |
94 | /@babel/generator/7.17.10:
95 | resolution: {integrity: sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==}
96 | engines: {node: '>=6.9.0'}
97 | dependencies:
98 | '@babel/types': 7.17.10
99 | '@jridgewell/gen-mapping': 0.1.1
100 | jsesc: 2.5.2
101 | dev: true
102 |
103 | /@babel/helper-annotate-as-pure/7.16.7:
104 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
105 | engines: {node: '>=6.9.0'}
106 | dependencies:
107 | '@babel/types': 7.17.10
108 | dev: true
109 |
110 | /@babel/helper-compilation-targets/7.17.10_@babel+core@7.17.10:
111 | resolution: {integrity: sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==}
112 | engines: {node: '>=6.9.0'}
113 | peerDependencies:
114 | '@babel/core': ^7.0.0
115 | dependencies:
116 | '@babel/compat-data': 7.17.10
117 | '@babel/core': 7.17.10
118 | '@babel/helper-validator-option': 7.16.7
119 | browserslist: 4.20.3
120 | semver: 6.3.0
121 | dev: true
122 |
123 | /@babel/helper-environment-visitor/7.16.7:
124 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
125 | engines: {node: '>=6.9.0'}
126 | dependencies:
127 | '@babel/types': 7.17.10
128 | dev: true
129 |
130 | /@babel/helper-function-name/7.17.9:
131 | resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==}
132 | engines: {node: '>=6.9.0'}
133 | dependencies:
134 | '@babel/template': 7.16.7
135 | '@babel/types': 7.17.10
136 | dev: true
137 |
138 | /@babel/helper-hoist-variables/7.16.7:
139 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
140 | engines: {node: '>=6.9.0'}
141 | dependencies:
142 | '@babel/types': 7.17.10
143 | dev: true
144 |
145 | /@babel/helper-module-imports/7.16.7:
146 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
147 | engines: {node: '>=6.9.0'}
148 | dependencies:
149 | '@babel/types': 7.17.10
150 | dev: true
151 |
152 | /@babel/helper-module-transforms/7.17.7:
153 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==}
154 | engines: {node: '>=6.9.0'}
155 | dependencies:
156 | '@babel/helper-environment-visitor': 7.16.7
157 | '@babel/helper-module-imports': 7.16.7
158 | '@babel/helper-simple-access': 7.17.7
159 | '@babel/helper-split-export-declaration': 7.16.7
160 | '@babel/helper-validator-identifier': 7.16.7
161 | '@babel/template': 7.16.7
162 | '@babel/traverse': 7.17.10
163 | '@babel/types': 7.17.10
164 | transitivePeerDependencies:
165 | - supports-color
166 | dev: true
167 |
168 | /@babel/helper-plugin-utils/7.16.7:
169 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
170 | engines: {node: '>=6.9.0'}
171 | dev: true
172 |
173 | /@babel/helper-simple-access/7.17.7:
174 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==}
175 | engines: {node: '>=6.9.0'}
176 | dependencies:
177 | '@babel/types': 7.17.10
178 | dev: true
179 |
180 | /@babel/helper-split-export-declaration/7.16.7:
181 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
182 | engines: {node: '>=6.9.0'}
183 | dependencies:
184 | '@babel/types': 7.17.10
185 | dev: true
186 |
187 | /@babel/helper-validator-identifier/7.16.7:
188 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
189 | engines: {node: '>=6.9.0'}
190 | dev: true
191 |
192 | /@babel/helper-validator-option/7.16.7:
193 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
194 | engines: {node: '>=6.9.0'}
195 | dev: true
196 |
197 | /@babel/helpers/7.17.9:
198 | resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==}
199 | engines: {node: '>=6.9.0'}
200 | dependencies:
201 | '@babel/template': 7.16.7
202 | '@babel/traverse': 7.17.10
203 | '@babel/types': 7.17.10
204 | transitivePeerDependencies:
205 | - supports-color
206 | dev: true
207 |
208 | /@babel/highlight/7.17.9:
209 | resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==}
210 | engines: {node: '>=6.9.0'}
211 | dependencies:
212 | '@babel/helper-validator-identifier': 7.16.7
213 | chalk: 2.4.2
214 | js-tokens: 4.0.0
215 | dev: true
216 |
217 | /@babel/parser/7.17.10:
218 | resolution: {integrity: sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==}
219 | engines: {node: '>=6.0.0'}
220 | hasBin: true
221 | dev: true
222 |
223 | /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.10:
224 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
225 | engines: {node: '>=6.9.0'}
226 | peerDependencies:
227 | '@babel/core': ^7.0.0-0
228 | dependencies:
229 | '@babel/core': 7.17.10
230 | '@babel/helper-plugin-utils': 7.16.7
231 | dev: true
232 |
233 | /@babel/plugin-transform-react-jsx-development/7.16.7_@babel+core@7.17.10:
234 | resolution: {integrity: sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==}
235 | engines: {node: '>=6.9.0'}
236 | peerDependencies:
237 | '@babel/core': ^7.0.0-0
238 | dependencies:
239 | '@babel/core': 7.17.10
240 | '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.10
241 | dev: true
242 |
243 | /@babel/plugin-transform-react-jsx-self/7.16.7_@babel+core@7.17.10:
244 | resolution: {integrity: sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==}
245 | engines: {node: '>=6.9.0'}
246 | peerDependencies:
247 | '@babel/core': ^7.0.0-0
248 | dependencies:
249 | '@babel/core': 7.17.10
250 | '@babel/helper-plugin-utils': 7.16.7
251 | dev: true
252 |
253 | /@babel/plugin-transform-react-jsx-source/7.16.7_@babel+core@7.17.10:
254 | resolution: {integrity: sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==}
255 | engines: {node: '>=6.9.0'}
256 | peerDependencies:
257 | '@babel/core': ^7.0.0-0
258 | dependencies:
259 | '@babel/core': 7.17.10
260 | '@babel/helper-plugin-utils': 7.16.7
261 | dev: true
262 |
263 | /@babel/plugin-transform-react-jsx/7.17.3_@babel+core@7.17.10:
264 | resolution: {integrity: sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==}
265 | engines: {node: '>=6.9.0'}
266 | peerDependencies:
267 | '@babel/core': ^7.0.0-0
268 | dependencies:
269 | '@babel/core': 7.17.10
270 | '@babel/helper-annotate-as-pure': 7.16.7
271 | '@babel/helper-module-imports': 7.16.7
272 | '@babel/helper-plugin-utils': 7.16.7
273 | '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.10
274 | '@babel/types': 7.17.10
275 | dev: true
276 |
277 | /@babel/runtime/7.17.9:
278 | resolution: {integrity: sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==}
279 | engines: {node: '>=6.9.0'}
280 | dependencies:
281 | regenerator-runtime: 0.13.9
282 | dev: true
283 |
284 | /@babel/template/7.16.7:
285 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==}
286 | engines: {node: '>=6.9.0'}
287 | dependencies:
288 | '@babel/code-frame': 7.16.7
289 | '@babel/parser': 7.17.10
290 | '@babel/types': 7.17.10
291 | dev: true
292 |
293 | /@babel/traverse/7.17.10:
294 | resolution: {integrity: sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==}
295 | engines: {node: '>=6.9.0'}
296 | dependencies:
297 | '@babel/code-frame': 7.16.7
298 | '@babel/generator': 7.17.10
299 | '@babel/helper-environment-visitor': 7.16.7
300 | '@babel/helper-function-name': 7.17.9
301 | '@babel/helper-hoist-variables': 7.16.7
302 | '@babel/helper-split-export-declaration': 7.16.7
303 | '@babel/parser': 7.17.10
304 | '@babel/types': 7.17.10
305 | debug: 4.3.4
306 | globals: 11.12.0
307 | transitivePeerDependencies:
308 | - supports-color
309 | dev: true
310 |
311 | /@babel/types/7.17.10:
312 | resolution: {integrity: sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==}
313 | engines: {node: '>=6.9.0'}
314 | dependencies:
315 | '@babel/helper-validator-identifier': 7.16.7
316 | to-fast-properties: 2.0.0
317 | dev: true
318 |
319 | /@bytemd/plugin-gfm/1.13.1:
320 | resolution: {integrity: sha512-V6ioQtGAW4T73Va2wVG8nGhGulPKi6FcPCN3yn4aE+FUV4/1j5lXXOEk7nPsfj9ZSlmmkappAc7BWnuKie2N4w==}
321 | peerDependencies:
322 | bytemd: ^1.5.0
323 | dev: true
324 |
325 | /@bytemd/plugin-medium-zoom/1.13.1:
326 | resolution: {integrity: sha512-U/pA+gBQ4vl45YltcMGbj1n7S+jTcwSYg+kVO9aiTHpCL4DRPiIKqzgAbcTDX/AYg1z7YBlt0CeCf/mB3T4b4w==}
327 | peerDependencies:
328 | bytemd: ^1.5.0
329 | dependencies:
330 | medium-zoom: 1.0.6
331 | dev: true
332 |
333 | /@bytemd/react/1.13.1_react@18.1.0:
334 | resolution: {integrity: sha512-mZEAeWAcVEkVhafHlseP0cJcM3bIwuK8AyZzIgyFzmWw6qyDntnyvrPzzXGWDT/vqhQnGMOE2suvMK4G7dMgbA==}
335 | peerDependencies:
336 | react: '*'
337 | dependencies:
338 | bytemd: 1.13.1
339 | react: 18.1.0
340 | dev: true
341 |
342 | /@cush/relative/1.0.0:
343 | resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==}
344 | dev: true
345 |
346 | /@floating-ui/core/0.6.2:
347 | resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==}
348 | dev: true
349 |
350 | /@floating-ui/dom/0.4.5:
351 | resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==}
352 | dependencies:
353 | '@floating-ui/core': 0.6.2
354 | dev: true
355 |
356 | /@jridgewell/gen-mapping/0.1.1:
357 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
358 | engines: {node: '>=6.0.0'}
359 | dependencies:
360 | '@jridgewell/set-array': 1.1.0
361 | '@jridgewell/sourcemap-codec': 1.4.11
362 | dev: true
363 |
364 | /@jridgewell/resolve-uri/3.0.6:
365 | resolution: {integrity: sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==}
366 | engines: {node: '>=6.0.0'}
367 | dev: true
368 |
369 | /@jridgewell/set-array/1.1.0:
370 | resolution: {integrity: sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==}
371 | engines: {node: '>=6.0.0'}
372 | dev: true
373 |
374 | /@jridgewell/sourcemap-codec/1.4.11:
375 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==}
376 | dev: true
377 |
378 | /@jridgewell/trace-mapping/0.3.9:
379 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
380 | dependencies:
381 | '@jridgewell/resolve-uri': 3.0.6
382 | '@jridgewell/sourcemap-codec': 1.4.11
383 | dev: true
384 |
385 | /@nodelib/fs.scandir/2.1.5:
386 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
387 | engines: {node: '>= 8'}
388 | dependencies:
389 | '@nodelib/fs.stat': 2.0.5
390 | run-parallel: 1.2.0
391 | dev: true
392 |
393 | /@nodelib/fs.stat/2.0.5:
394 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
395 | engines: {node: '>= 8'}
396 | dev: true
397 |
398 | /@nodelib/fs.walk/1.2.8:
399 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
400 | engines: {node: '>= 8'}
401 | dependencies:
402 | '@nodelib/fs.scandir': 2.1.5
403 | fastq: 1.13.0
404 | dev: true
405 |
406 | /@react-spring/animated/9.4.4_react@18.1.0:
407 | resolution: {integrity: sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==}
408 | peerDependencies:
409 | react: ^16.8.0 || ^17.0.0
410 | dependencies:
411 | '@react-spring/shared': 9.4.4_react@18.1.0
412 | '@react-spring/types': 9.4.4
413 | react: 18.1.0
414 | dev: true
415 |
416 | /@react-spring/core/9.4.4_react@18.1.0:
417 | resolution: {integrity: sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==}
418 | peerDependencies:
419 | react: ^16.8.0 || ^17.0.0
420 | dependencies:
421 | '@react-spring/animated': 9.4.4_react@18.1.0
422 | '@react-spring/rafz': 9.4.4
423 | '@react-spring/shared': 9.4.4_react@18.1.0
424 | '@react-spring/types': 9.4.4
425 | react: 18.1.0
426 | dev: true
427 |
428 | /@react-spring/rafz/9.4.4:
429 | resolution: {integrity: sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw==}
430 | dev: true
431 |
432 | /@react-spring/shared/9.4.4_react@18.1.0:
433 | resolution: {integrity: sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==}
434 | peerDependencies:
435 | react: ^16.8.0 || ^17.0.0
436 | dependencies:
437 | '@react-spring/rafz': 9.4.4
438 | '@react-spring/types': 9.4.4
439 | react: 18.1.0
440 | dev: true
441 |
442 | /@react-spring/types/9.4.4:
443 | resolution: {integrity: sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ==}
444 | dev: true
445 |
446 | /@react-spring/web/9.4.4_react-dom@18.1.0+react@18.1.0:
447 | resolution: {integrity: sha512-iJmOLdhcuizriUlu/xqBc5y8KaFts+UI+iC+GxyTwBtzxA9czKiSAZW2ESuhG8stafa3jncwjfTQQp84KN36cw==}
448 | peerDependencies:
449 | react: ^16.8.0 || ^17.0.0
450 | react-dom: ^16.8.0 || ^17.0.0
451 | dependencies:
452 | '@react-spring/animated': 9.4.4_react@18.1.0
453 | '@react-spring/core': 9.4.4_react@18.1.0
454 | '@react-spring/shared': 9.4.4_react@18.1.0
455 | '@react-spring/types': 9.4.4
456 | react: 18.1.0
457 | react-dom: 18.1.0_react@18.1.0
458 | dev: true
459 |
460 | /@rollup/pluginutils/4.2.1:
461 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
462 | engines: {node: '>= 8.0.0'}
463 | dependencies:
464 | estree-walker: 2.0.2
465 | picomatch: 2.3.1
466 | dev: true
467 |
468 | /@svgr/babel-plugin-add-jsx-attribute/6.0.0_@babel+core@7.17.10:
469 | resolution: {integrity: sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==}
470 | engines: {node: '>=10'}
471 | peerDependencies:
472 | '@babel/core': ^7.0.0-0
473 | dependencies:
474 | '@babel/core': 7.17.10
475 | dev: true
476 |
477 | /@svgr/babel-plugin-remove-jsx-attribute/6.0.0_@babel+core@7.17.10:
478 | resolution: {integrity: sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==}
479 | engines: {node: '>=10'}
480 | peerDependencies:
481 | '@babel/core': ^7.0.0-0
482 | dependencies:
483 | '@babel/core': 7.17.10
484 | dev: true
485 |
486 | /@svgr/babel-plugin-remove-jsx-empty-expression/6.0.0_@babel+core@7.17.10:
487 | resolution: {integrity: sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==}
488 | engines: {node: '>=10'}
489 | peerDependencies:
490 | '@babel/core': ^7.0.0-0
491 | dependencies:
492 | '@babel/core': 7.17.10
493 | dev: true
494 |
495 | /@svgr/babel-plugin-replace-jsx-attribute-value/6.0.0_@babel+core@7.17.10:
496 | resolution: {integrity: sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==}
497 | engines: {node: '>=10'}
498 | peerDependencies:
499 | '@babel/core': ^7.0.0-0
500 | dependencies:
501 | '@babel/core': 7.17.10
502 | dev: true
503 |
504 | /@svgr/babel-plugin-svg-dynamic-title/6.0.0_@babel+core@7.17.10:
505 | resolution: {integrity: sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==}
506 | engines: {node: '>=10'}
507 | peerDependencies:
508 | '@babel/core': ^7.0.0-0
509 | dependencies:
510 | '@babel/core': 7.17.10
511 | dev: true
512 |
513 | /@svgr/babel-plugin-svg-em-dimensions/6.0.0_@babel+core@7.17.10:
514 | resolution: {integrity: sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==}
515 | engines: {node: '>=10'}
516 | peerDependencies:
517 | '@babel/core': ^7.0.0-0
518 | dependencies:
519 | '@babel/core': 7.17.10
520 | dev: true
521 |
522 | /@svgr/babel-plugin-transform-react-native-svg/6.0.0_@babel+core@7.17.10:
523 | resolution: {integrity: sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==}
524 | engines: {node: '>=10'}
525 | peerDependencies:
526 | '@babel/core': ^7.0.0-0
527 | dependencies:
528 | '@babel/core': 7.17.10
529 | dev: true
530 |
531 | /@svgr/babel-plugin-transform-svg-component/6.2.0_@babel+core@7.17.10:
532 | resolution: {integrity: sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==}
533 | engines: {node: '>=12'}
534 | peerDependencies:
535 | '@babel/core': ^7.0.0-0
536 | dependencies:
537 | '@babel/core': 7.17.10
538 | dev: true
539 |
540 | /@svgr/babel-preset/6.2.0_@babel+core@7.17.10:
541 | resolution: {integrity: sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==}
542 | engines: {node: '>=10'}
543 | peerDependencies:
544 | '@babel/core': ^7.0.0-0
545 | dependencies:
546 | '@babel/core': 7.17.10
547 | '@svgr/babel-plugin-add-jsx-attribute': 6.0.0_@babel+core@7.17.10
548 | '@svgr/babel-plugin-remove-jsx-attribute': 6.0.0_@babel+core@7.17.10
549 | '@svgr/babel-plugin-remove-jsx-empty-expression': 6.0.0_@babel+core@7.17.10
550 | '@svgr/babel-plugin-replace-jsx-attribute-value': 6.0.0_@babel+core@7.17.10
551 | '@svgr/babel-plugin-svg-dynamic-title': 6.0.0_@babel+core@7.17.10
552 | '@svgr/babel-plugin-svg-em-dimensions': 6.0.0_@babel+core@7.17.10
553 | '@svgr/babel-plugin-transform-react-native-svg': 6.0.0_@babel+core@7.17.10
554 | '@svgr/babel-plugin-transform-svg-component': 6.2.0_@babel+core@7.17.10
555 | dev: true
556 |
557 | /@svgr/core/6.2.1:
558 | resolution: {integrity: sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==}
559 | engines: {node: '>=10'}
560 | dependencies:
561 | '@svgr/plugin-jsx': 6.2.1_@svgr+core@6.2.1
562 | camelcase: 6.3.0
563 | cosmiconfig: 7.0.1
564 | transitivePeerDependencies:
565 | - supports-color
566 | dev: true
567 |
568 | /@svgr/hast-util-to-babel-ast/6.2.1:
569 | resolution: {integrity: sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==}
570 | engines: {node: '>=10'}
571 | dependencies:
572 | '@babel/types': 7.17.10
573 | entities: 3.0.1
574 | dev: true
575 |
576 | /@svgr/plugin-jsx/6.2.1_@svgr+core@6.2.1:
577 | resolution: {integrity: sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==}
578 | engines: {node: '>=10'}
579 | peerDependencies:
580 | '@svgr/core': ^6.0.0
581 | dependencies:
582 | '@babel/core': 7.17.10
583 | '@svgr/babel-preset': 6.2.0_@babel+core@7.17.10
584 | '@svgr/core': 6.2.1
585 | '@svgr/hast-util-to-babel-ast': 6.2.1
586 | svg-parser: 2.0.4
587 | transitivePeerDependencies:
588 | - supports-color
589 | dev: true
590 |
591 | /@types/big.js/6.1.3:
592 | resolution: {integrity: sha512-fHh2h1cFlvGP0kFCqoAsnuQoM0n3xHB6HxgZvELt7dji+BtK/j938MRL0nG5AA45EgibuFcPjgLlkqfUPCyoKw==}
593 | dev: true
594 |
595 | /@types/codemirror/5.60.5:
596 | resolution: {integrity: sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==}
597 | dependencies:
598 | '@types/tern': 0.23.4
599 | dev: true
600 |
601 | /@types/debug/4.1.7:
602 | resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
603 | dependencies:
604 | '@types/ms': 0.7.31
605 | dev: true
606 |
607 | /@types/estree/0.0.51:
608 | resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
609 | dev: true
610 |
611 | /@types/js-cookie/2.2.7:
612 | resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==}
613 | dev: true
614 |
615 | /@types/json5/0.0.29:
616 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
617 | dev: true
618 |
619 | /@types/ms/0.7.31:
620 | resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
621 | dev: true
622 |
623 | /@types/parse-json/4.0.0:
624 | resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
625 | dev: true
626 |
627 | /@types/prop-types/15.7.5:
628 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
629 | dev: true
630 |
631 | /@types/react-dom/18.0.3:
632 | resolution: {integrity: sha512-1RRW9kst+67gveJRYPxGmVy8eVJ05O43hg77G2j5m76/RFJtMbcfAs2viQ2UNsvvDg8F7OfQZx8qQcl6ymygaQ==}
633 | dependencies:
634 | '@types/react': 18.0.8
635 | dev: true
636 |
637 | /@types/react-is/17.0.3:
638 | resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==}
639 | dependencies:
640 | '@types/react': 18.0.8
641 | dev: true
642 |
643 | /@types/react-virtualized/9.21.21:
644 | resolution: {integrity: sha512-Exx6I7p4Qn+BBA1SRyj/UwQlZ0I0Pq7g7uhAp0QQ4JWzZunqEqNBGTmCmMmS/3N9wFgAGWuBD16ap7k8Y14VPA==}
645 | dependencies:
646 | '@types/prop-types': 15.7.5
647 | '@types/react': 17.0.44
648 | dev: true
649 |
650 | /@types/react/17.0.44:
651 | resolution: {integrity: sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==}
652 | dependencies:
653 | '@types/prop-types': 15.7.5
654 | '@types/scheduler': 0.16.2
655 | csstype: 3.0.11
656 | dev: true
657 |
658 | /@types/react/18.0.8:
659 | resolution: {integrity: sha512-+j2hk9BzCOrrOSJASi5XiOyBbERk9jG5O73Ya4M0env5Ixi6vUNli4qy994AINcEF+1IEHISYFfIT4zwr++LKw==}
660 | dependencies:
661 | '@types/prop-types': 15.7.5
662 | '@types/scheduler': 0.16.2
663 | csstype: 3.0.11
664 | dev: true
665 |
666 | /@types/resize-observer-browser/0.1.7:
667 | resolution: {integrity: sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg==}
668 | dev: true
669 |
670 | /@types/scheduler/0.16.2:
671 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==}
672 | dev: true
673 |
674 | /@types/tern/0.23.4:
675 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==}
676 | dependencies:
677 | '@types/estree': 0.0.51
678 | dev: true
679 |
680 | /@use-gesture/core/10.2.12:
681 | resolution: {integrity: sha512-BIZ9Zyo2xFyLS8pYyhawa5upNpshLTSBVTek+56EqgCp/j95YfZI7PtgwHmm0cm+0HNqeq8FHkhFmJlbj4Pg3Q==}
682 | dev: true
683 |
684 | /@use-gesture/react/10.2.12_react@18.1.0:
685 | resolution: {integrity: sha512-ykNZWRjwesSirhaBmcAWveHyivXn/E5/R4kY6i8+cDtklKuPM91oFEML9tV5CRBuGJONY/rxD+JVNs/SOwfp4w==}
686 | peerDependencies:
687 | react: '>= 16.8.0'
688 | dependencies:
689 | '@use-gesture/core': 10.2.12
690 | react: 18.1.0
691 | dev: true
692 |
693 | /@vitejs/plugin-react/1.3.1:
694 | resolution: {integrity: sha512-qQS8Y2fZCjo5YmDUplEXl3yn+aueiwxB7BaoQ4nWYJYR+Ai8NXPVLlkLobVMs5+DeyFyg9Lrz6zCzdX1opcvyw==}
695 | engines: {node: '>=12.0.0'}
696 | dependencies:
697 | '@babel/core': 7.17.10
698 | '@babel/plugin-transform-react-jsx': 7.17.3_@babel+core@7.17.10
699 | '@babel/plugin-transform-react-jsx-development': 7.16.7_@babel+core@7.17.10
700 | '@babel/plugin-transform-react-jsx-self': 7.16.7_@babel+core@7.17.10
701 | '@babel/plugin-transform-react-jsx-source': 7.16.7_@babel+core@7.17.10
702 | '@rollup/pluginutils': 4.2.1
703 | react-refresh: 0.12.0
704 | resolve: 1.22.0
705 | transitivePeerDependencies:
706 | - supports-color
707 | dev: true
708 |
709 | /@zxing/browser/0.0.7_@zxing+library@0.18.6:
710 | resolution: {integrity: sha512-AepzMgDnD6EjxewqmXpHJsi4S3Gw9ilZJLIbTf6fWuWySEcHBodnGu3p7FWlgq1Sd5QyfPhTum5z3CBkkhMVng==}
711 | peerDependencies:
712 | '@zxing/library': ^0.18.3
713 | dependencies:
714 | '@zxing/library': 0.18.6
715 | optionalDependencies:
716 | '@zxing/text-encoding': 0.9.0
717 | dev: true
718 |
719 | /@zxing/library/0.18.6:
720 | resolution: {integrity: sha512-bulZ9JHoLFd9W36pi+7e7DnEYNJhljYjZ1UTsKPOoLMU3qtC+REHITeCRNx40zTRJZx18W5TBRXt5pq2Uopjsw==}
721 | engines: {node: '>= 10.4.0'}
722 | dependencies:
723 | ts-custom-error: 3.2.0
724 | optionalDependencies:
725 | '@zxing/text-encoding': 0.9.0
726 | dev: true
727 |
728 | /@zxing/text-encoding/0.9.0:
729 | resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==}
730 | requiresBuild: true
731 | dev: true
732 | optional: true
733 |
734 | /ahooks-v3-count/1.0.0:
735 | resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==}
736 | dev: true
737 |
738 | /ahooks/3.3.10_react@18.1.0:
739 | resolution: {integrity: sha512-CNZQRnNkvbafV5qdGcx7AT81XJNPa7vAo1XoShvdI8s6oHigTrmc+kWkyWWEywiEchF992Z6oIQEXkSsL034fw==}
740 | engines: {node: '>=8.0.0'}
741 | peerDependencies:
742 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
743 | dependencies:
744 | '@types/js-cookie': 2.2.7
745 | ahooks-v3-count: 1.0.0
746 | dayjs: 1.11.1
747 | intersection-observer: 0.12.0
748 | js-cookie: 2.2.1
749 | lodash: 4.17.21
750 | react: 18.1.0
751 | resize-observer-polyfill: 1.5.1
752 | screenfull: 5.2.0
753 | dev: true
754 |
755 | /ansi-styles/3.2.1:
756 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
757 | engines: {node: '>=4'}
758 | dependencies:
759 | color-convert: 1.9.3
760 | dev: true
761 |
762 | /antd-mobile-icons/0.2.2:
763 | resolution: {integrity: sha512-iquIc7EsQTndk5nMv9pQQv+/OY5YnjVIPhtCFo7W7JL+Gjqzq/YJ/HO2WxUxyCgYha2NsTTNAb2vPa/M4zAi2g==}
764 | dev: true
765 |
766 | /antd-mobile-v5-count/1.0.1:
767 | resolution: {integrity: sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA==}
768 | dev: true
769 |
770 | /antd-mobile/5.11.1_react-dom@18.1.0+react@18.1.0:
771 | resolution: {integrity: sha512-1bDAwESV7wbNd3G2C4P91lXf6UkApZ0EwSSxhwNusJ5W7eu2uiv7iEPuIsLprVezn6KwuCm9qKvG3AujpnmOoA==}
772 | peerDependencies:
773 | react: ^16.8.0 || ^17.0.0
774 | dependencies:
775 | '@floating-ui/dom': 0.4.5
776 | '@react-spring/web': 9.4.4_react-dom@18.1.0+react@18.1.0
777 | '@types/big.js': 6.1.3
778 | '@types/react-is': 17.0.3
779 | '@types/react-virtualized': 9.21.21
780 | '@types/resize-observer-browser': 0.1.7
781 | '@use-gesture/react': 10.2.12_react@18.1.0
782 | ahooks: 3.3.10_react@18.1.0
783 | antd-mobile-icons: 0.2.2
784 | antd-mobile-v5-count: 1.0.1
785 | big.js: 6.1.1
786 | classnames: 2.3.1
787 | dayjs: 1.11.1
788 | lodash: 4.17.21
789 | rc-field-form: 1.26.3_react-dom@18.1.0+react@18.1.0
790 | react: 18.1.0
791 | react-is: 17.0.2
792 | staged-components: 1.1.2_react@18.1.0
793 | tslib: 2.4.0
794 | transitivePeerDependencies:
795 | - react-dom
796 | dev: true
797 |
798 | /async-validator/4.1.1:
799 | resolution: {integrity: sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA==}
800 | dev: true
801 |
802 | /available-typed-arrays/1.0.5:
803 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
804 | engines: {node: '>= 0.4'}
805 | dev: true
806 |
807 | /balanced-match/1.0.2:
808 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
809 | dev: true
810 |
811 | /big-integer/1.6.51:
812 | resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
813 | engines: {node: '>=0.6'}
814 | dev: true
815 |
816 | /big.js/6.1.1:
817 | resolution: {integrity: sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==}
818 | dev: true
819 |
820 | /brace-expansion/1.1.11:
821 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
822 | dependencies:
823 | balanced-match: 1.0.2
824 | concat-map: 0.0.1
825 | dev: true
826 |
827 | /braces/3.0.2:
828 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
829 | engines: {node: '>=8'}
830 | dependencies:
831 | fill-range: 7.0.1
832 | dev: true
833 |
834 | /broadcast-channel/3.7.0:
835 | resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==}
836 | dependencies:
837 | '@babel/runtime': 7.17.9
838 | detect-node: 2.1.0
839 | js-sha3: 0.8.0
840 | microseconds: 0.2.0
841 | nano-time: 1.0.0
842 | oblivious-set: 1.0.0
843 | rimraf: 3.0.2
844 | unload: 2.2.0
845 | dev: true
846 |
847 | /browserslist/4.20.3:
848 | resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==}
849 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
850 | hasBin: true
851 | dependencies:
852 | caniuse-lite: 1.0.30001334
853 | electron-to-chromium: 1.4.129
854 | escalade: 3.1.1
855 | node-releases: 2.0.4
856 | picocolors: 1.0.0
857 | dev: true
858 |
859 | /bytemd/1.13.1:
860 | resolution: {integrity: sha512-Sd8vq6/viHlkFmgZBgDRvnPiY5nomSqexirJ3hUDKbg+0MILMJkXNtXAxp25aT0hpG6jOm4asO8rSOxVTdZF0w==}
861 | dependencies:
862 | '@types/codemirror': 5.60.5
863 | dev: true
864 |
865 | /call-bind/1.0.2:
866 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
867 | dependencies:
868 | function-bind: 1.1.1
869 | get-intrinsic: 1.1.1
870 | dev: true
871 |
872 | /callsites/3.1.0:
873 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
874 | engines: {node: '>=6'}
875 | dev: true
876 |
877 | /camelcase/6.3.0:
878 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
879 | engines: {node: '>=10'}
880 | dev: true
881 |
882 | /caniuse-lite/1.0.30001334:
883 | resolution: {integrity: sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==}
884 | dev: true
885 |
886 | /chalk/2.4.2:
887 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
888 | engines: {node: '>=4'}
889 | dependencies:
890 | ansi-styles: 3.2.1
891 | escape-string-regexp: 1.0.5
892 | supports-color: 5.5.0
893 | dev: true
894 |
895 | /classnames/2.3.1:
896 | resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==}
897 | dev: true
898 |
899 | /color-convert/1.9.3:
900 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
901 | dependencies:
902 | color-name: 1.1.3
903 | dev: true
904 |
905 | /color-name/1.1.3:
906 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
907 | dev: true
908 |
909 | /concat-map/0.0.1:
910 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
911 | dev: true
912 |
913 | /convert-source-map/1.8.0:
914 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
915 | dependencies:
916 | safe-buffer: 5.1.2
917 | dev: true
918 |
919 | /cosmiconfig/7.0.1:
920 | resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==}
921 | engines: {node: '>=10'}
922 | dependencies:
923 | '@types/parse-json': 4.0.0
924 | import-fresh: 3.3.0
925 | parse-json: 5.2.0
926 | path-type: 4.0.0
927 | yaml: 1.10.2
928 | dev: true
929 |
930 | /csstype/3.0.11:
931 | resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
932 | dev: true
933 |
934 | /dayjs/1.11.1:
935 | resolution: {integrity: sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA==}
936 | dev: true
937 |
938 | /debug/4.3.4:
939 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
940 | engines: {node: '>=6.0'}
941 | peerDependencies:
942 | supports-color: '*'
943 | peerDependenciesMeta:
944 | supports-color:
945 | optional: true
946 | dependencies:
947 | ms: 2.1.2
948 | dev: true
949 |
950 | /deep-equal/2.0.5:
951 | resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==}
952 | dependencies:
953 | call-bind: 1.0.2
954 | es-get-iterator: 1.1.2
955 | get-intrinsic: 1.1.1
956 | is-arguments: 1.1.1
957 | is-date-object: 1.0.5
958 | is-regex: 1.1.4
959 | isarray: 2.0.5
960 | object-is: 1.1.5
961 | object-keys: 1.1.1
962 | object.assign: 4.1.2
963 | regexp.prototype.flags: 1.4.3
964 | side-channel: 1.0.4
965 | which-boxed-primitive: 1.0.2
966 | which-collection: 1.0.1
967 | which-typed-array: 1.1.7
968 | dev: true
969 |
970 | /define-properties/1.1.4:
971 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
972 | engines: {node: '>= 0.4'}
973 | dependencies:
974 | has-property-descriptors: 1.0.0
975 | object-keys: 1.1.1
976 | dev: true
977 |
978 | /detect-node/2.1.0:
979 | resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
980 | dev: true
981 |
982 | /electron-to-chromium/1.4.129:
983 | resolution: {integrity: sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==}
984 | dev: true
985 |
986 | /entities/3.0.1:
987 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
988 | engines: {node: '>=0.12'}
989 | dev: true
990 |
991 | /error-ex/1.3.2:
992 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
993 | dependencies:
994 | is-arrayish: 0.2.1
995 | dev: true
996 |
997 | /es-abstract/1.19.5:
998 | resolution: {integrity: sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==}
999 | engines: {node: '>= 0.4'}
1000 | dependencies:
1001 | call-bind: 1.0.2
1002 | es-to-primitive: 1.2.1
1003 | function-bind: 1.1.1
1004 | get-intrinsic: 1.1.1
1005 | get-symbol-description: 1.0.0
1006 | has: 1.0.3
1007 | has-symbols: 1.0.3
1008 | internal-slot: 1.0.3
1009 | is-callable: 1.2.4
1010 | is-negative-zero: 2.0.2
1011 | is-regex: 1.1.4
1012 | is-shared-array-buffer: 1.0.2
1013 | is-string: 1.0.7
1014 | is-weakref: 1.0.2
1015 | object-inspect: 1.12.0
1016 | object-keys: 1.1.1
1017 | object.assign: 4.1.2
1018 | string.prototype.trimend: 1.0.4
1019 | string.prototype.trimstart: 1.0.4
1020 | unbox-primitive: 1.0.2
1021 | dev: true
1022 |
1023 | /es-get-iterator/1.1.2:
1024 | resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==}
1025 | dependencies:
1026 | call-bind: 1.0.2
1027 | get-intrinsic: 1.1.1
1028 | has-symbols: 1.0.3
1029 | is-arguments: 1.1.1
1030 | is-map: 2.0.2
1031 | is-set: 2.0.2
1032 | is-string: 1.0.7
1033 | isarray: 2.0.5
1034 | dev: true
1035 |
1036 | /es-to-primitive/1.2.1:
1037 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1038 | engines: {node: '>= 0.4'}
1039 | dependencies:
1040 | is-callable: 1.2.4
1041 | is-date-object: 1.0.5
1042 | is-symbol: 1.0.4
1043 | dev: true
1044 |
1045 | /esbuild-android-64/0.14.38:
1046 | resolution: {integrity: sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw==}
1047 | engines: {node: '>=12'}
1048 | cpu: [x64]
1049 | os: [android]
1050 | requiresBuild: true
1051 | dev: true
1052 | optional: true
1053 |
1054 | /esbuild-android-arm64/0.14.38:
1055 | resolution: {integrity: sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA==}
1056 | engines: {node: '>=12'}
1057 | cpu: [arm64]
1058 | os: [android]
1059 | requiresBuild: true
1060 | dev: true
1061 | optional: true
1062 |
1063 | /esbuild-darwin-64/0.14.38:
1064 | resolution: {integrity: sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA==}
1065 | engines: {node: '>=12'}
1066 | cpu: [x64]
1067 | os: [darwin]
1068 | requiresBuild: true
1069 | dev: true
1070 | optional: true
1071 |
1072 | /esbuild-darwin-arm64/0.14.38:
1073 | resolution: {integrity: sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ==}
1074 | engines: {node: '>=12'}
1075 | cpu: [arm64]
1076 | os: [darwin]
1077 | requiresBuild: true
1078 | dev: true
1079 | optional: true
1080 |
1081 | /esbuild-freebsd-64/0.14.38:
1082 | resolution: {integrity: sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig==}
1083 | engines: {node: '>=12'}
1084 | cpu: [x64]
1085 | os: [freebsd]
1086 | requiresBuild: true
1087 | dev: true
1088 | optional: true
1089 |
1090 | /esbuild-freebsd-arm64/0.14.38:
1091 | resolution: {integrity: sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ==}
1092 | engines: {node: '>=12'}
1093 | cpu: [arm64]
1094 | os: [freebsd]
1095 | requiresBuild: true
1096 | dev: true
1097 | optional: true
1098 |
1099 | /esbuild-linux-32/0.14.38:
1100 | resolution: {integrity: sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g==}
1101 | engines: {node: '>=12'}
1102 | cpu: [ia32]
1103 | os: [linux]
1104 | requiresBuild: true
1105 | dev: true
1106 | optional: true
1107 |
1108 | /esbuild-linux-64/0.14.38:
1109 | resolution: {integrity: sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q==}
1110 | engines: {node: '>=12'}
1111 | cpu: [x64]
1112 | os: [linux]
1113 | requiresBuild: true
1114 | dev: true
1115 | optional: true
1116 |
1117 | /esbuild-linux-arm/0.14.38:
1118 | resolution: {integrity: sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA==}
1119 | engines: {node: '>=12'}
1120 | cpu: [arm]
1121 | os: [linux]
1122 | requiresBuild: true
1123 | dev: true
1124 | optional: true
1125 |
1126 | /esbuild-linux-arm64/0.14.38:
1127 | resolution: {integrity: sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA==}
1128 | engines: {node: '>=12'}
1129 | cpu: [arm64]
1130 | os: [linux]
1131 | requiresBuild: true
1132 | dev: true
1133 | optional: true
1134 |
1135 | /esbuild-linux-mips64le/0.14.38:
1136 | resolution: {integrity: sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ==}
1137 | engines: {node: '>=12'}
1138 | cpu: [mips64el]
1139 | os: [linux]
1140 | requiresBuild: true
1141 | dev: true
1142 | optional: true
1143 |
1144 | /esbuild-linux-ppc64le/0.14.38:
1145 | resolution: {integrity: sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q==}
1146 | engines: {node: '>=12'}
1147 | cpu: [ppc64]
1148 | os: [linux]
1149 | requiresBuild: true
1150 | dev: true
1151 | optional: true
1152 |
1153 | /esbuild-linux-riscv64/0.14.38:
1154 | resolution: {integrity: sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ==}
1155 | engines: {node: '>=12'}
1156 | cpu: [riscv64]
1157 | os: [linux]
1158 | requiresBuild: true
1159 | dev: true
1160 | optional: true
1161 |
1162 | /esbuild-linux-s390x/0.14.38:
1163 | resolution: {integrity: sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ==}
1164 | engines: {node: '>=12'}
1165 | cpu: [s390x]
1166 | os: [linux]
1167 | requiresBuild: true
1168 | dev: true
1169 | optional: true
1170 |
1171 | /esbuild-netbsd-64/0.14.38:
1172 | resolution: {integrity: sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q==}
1173 | engines: {node: '>=12'}
1174 | cpu: [x64]
1175 | os: [netbsd]
1176 | requiresBuild: true
1177 | dev: true
1178 | optional: true
1179 |
1180 | /esbuild-openbsd-64/0.14.38:
1181 | resolution: {integrity: sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ==}
1182 | engines: {node: '>=12'}
1183 | cpu: [x64]
1184 | os: [openbsd]
1185 | requiresBuild: true
1186 | dev: true
1187 | optional: true
1188 |
1189 | /esbuild-sunos-64/0.14.38:
1190 | resolution: {integrity: sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA==}
1191 | engines: {node: '>=12'}
1192 | cpu: [x64]
1193 | os: [sunos]
1194 | requiresBuild: true
1195 | dev: true
1196 | optional: true
1197 |
1198 | /esbuild-windows-32/0.14.38:
1199 | resolution: {integrity: sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw==}
1200 | engines: {node: '>=12'}
1201 | cpu: [ia32]
1202 | os: [win32]
1203 | requiresBuild: true
1204 | dev: true
1205 | optional: true
1206 |
1207 | /esbuild-windows-64/0.14.38:
1208 | resolution: {integrity: sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw==}
1209 | engines: {node: '>=12'}
1210 | cpu: [x64]
1211 | os: [win32]
1212 | requiresBuild: true
1213 | dev: true
1214 | optional: true
1215 |
1216 | /esbuild-windows-arm64/0.14.38:
1217 | resolution: {integrity: sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw==}
1218 | engines: {node: '>=12'}
1219 | cpu: [arm64]
1220 | os: [win32]
1221 | requiresBuild: true
1222 | dev: true
1223 | optional: true
1224 |
1225 | /esbuild/0.14.38:
1226 | resolution: {integrity: sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA==}
1227 | engines: {node: '>=12'}
1228 | hasBin: true
1229 | requiresBuild: true
1230 | optionalDependencies:
1231 | esbuild-android-64: 0.14.38
1232 | esbuild-android-arm64: 0.14.38
1233 | esbuild-darwin-64: 0.14.38
1234 | esbuild-darwin-arm64: 0.14.38
1235 | esbuild-freebsd-64: 0.14.38
1236 | esbuild-freebsd-arm64: 0.14.38
1237 | esbuild-linux-32: 0.14.38
1238 | esbuild-linux-64: 0.14.38
1239 | esbuild-linux-arm: 0.14.38
1240 | esbuild-linux-arm64: 0.14.38
1241 | esbuild-linux-mips64le: 0.14.38
1242 | esbuild-linux-ppc64le: 0.14.38
1243 | esbuild-linux-riscv64: 0.14.38
1244 | esbuild-linux-s390x: 0.14.38
1245 | esbuild-netbsd-64: 0.14.38
1246 | esbuild-openbsd-64: 0.14.38
1247 | esbuild-sunos-64: 0.14.38
1248 | esbuild-windows-32: 0.14.38
1249 | esbuild-windows-64: 0.14.38
1250 | esbuild-windows-arm64: 0.14.38
1251 | dev: true
1252 |
1253 | /escalade/3.1.1:
1254 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1255 | engines: {node: '>=6'}
1256 | dev: true
1257 |
1258 | /escape-string-regexp/1.0.5:
1259 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1260 | engines: {node: '>=0.8.0'}
1261 | dev: true
1262 |
1263 | /estree-walker/2.0.2:
1264 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1265 | dev: true
1266 |
1267 | /fast-glob/3.2.11:
1268 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
1269 | engines: {node: '>=8.6.0'}
1270 | dependencies:
1271 | '@nodelib/fs.stat': 2.0.5
1272 | '@nodelib/fs.walk': 1.2.8
1273 | glob-parent: 5.1.2
1274 | merge2: 1.4.1
1275 | micromatch: 4.0.5
1276 | dev: true
1277 |
1278 | /fastq/1.13.0:
1279 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
1280 | dependencies:
1281 | reusify: 1.0.4
1282 | dev: true
1283 |
1284 | /fill-range/7.0.1:
1285 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1286 | engines: {node: '>=8'}
1287 | dependencies:
1288 | to-regex-range: 5.0.1
1289 | dev: true
1290 |
1291 | /foreach/2.0.5:
1292 | resolution: {integrity: sha512-ZBbtRiapkZYLsqoPyZOR+uPfto0GRMNQN1GwzZtZt7iZvPPbDDQV0JF5Hx4o/QFQ5c0vyuoZ98T8RSBbopzWtA==}
1293 | dev: true
1294 |
1295 | /fs.realpath/1.0.0:
1296 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1297 | dev: true
1298 |
1299 | /fsevents/2.3.2:
1300 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1301 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1302 | os: [darwin]
1303 | requiresBuild: true
1304 | dev: true
1305 | optional: true
1306 |
1307 | /function-bind/1.1.1:
1308 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1309 | dev: true
1310 |
1311 | /functions-have-names/1.2.3:
1312 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1313 | dev: true
1314 |
1315 | /gensync/1.0.0-beta.2:
1316 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
1317 | engines: {node: '>=6.9.0'}
1318 | dev: true
1319 |
1320 | /get-intrinsic/1.1.1:
1321 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==}
1322 | dependencies:
1323 | function-bind: 1.1.1
1324 | has: 1.0.3
1325 | has-symbols: 1.0.3
1326 | dev: true
1327 |
1328 | /get-symbol-description/1.0.0:
1329 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
1330 | engines: {node: '>= 0.4'}
1331 | dependencies:
1332 | call-bind: 1.0.2
1333 | get-intrinsic: 1.1.1
1334 | dev: true
1335 |
1336 | /github-markdown-css/5.1.0:
1337 | resolution: {integrity: sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==}
1338 | dev: true
1339 |
1340 | /glob-parent/5.1.2:
1341 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1342 | engines: {node: '>= 6'}
1343 | dependencies:
1344 | is-glob: 4.0.3
1345 | dev: true
1346 |
1347 | /glob-regex/0.3.2:
1348 | resolution: {integrity: sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw==}
1349 | dev: true
1350 |
1351 | /glob/7.2.0:
1352 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
1353 | dependencies:
1354 | fs.realpath: 1.0.0
1355 | inflight: 1.0.6
1356 | inherits: 2.0.4
1357 | minimatch: 3.1.2
1358 | once: 1.4.0
1359 | path-is-absolute: 1.0.1
1360 | dev: true
1361 |
1362 | /globals/11.12.0:
1363 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
1364 | engines: {node: '>=4'}
1365 | dev: true
1366 |
1367 | /globrex/0.1.2:
1368 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
1369 | dev: true
1370 |
1371 | /has-bigints/1.0.2:
1372 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
1373 | dev: true
1374 |
1375 | /has-flag/3.0.0:
1376 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1377 | engines: {node: '>=4'}
1378 | dev: true
1379 |
1380 | /has-property-descriptors/1.0.0:
1381 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
1382 | dependencies:
1383 | get-intrinsic: 1.1.1
1384 | dev: true
1385 |
1386 | /has-symbols/1.0.3:
1387 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
1388 | engines: {node: '>= 0.4'}
1389 | dev: true
1390 |
1391 | /has-tostringtag/1.0.0:
1392 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
1393 | engines: {node: '>= 0.4'}
1394 | dependencies:
1395 | has-symbols: 1.0.3
1396 | dev: true
1397 |
1398 | /has/1.0.3:
1399 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1400 | engines: {node: '>= 0.4.0'}
1401 | dependencies:
1402 | function-bind: 1.1.1
1403 | dev: true
1404 |
1405 | /history/5.3.0:
1406 | resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
1407 | dependencies:
1408 | '@babel/runtime': 7.17.9
1409 | dev: true
1410 |
1411 | /import-fresh/3.3.0:
1412 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
1413 | engines: {node: '>=6'}
1414 | dependencies:
1415 | parent-module: 1.0.1
1416 | resolve-from: 4.0.0
1417 | dev: true
1418 |
1419 | /inflight/1.0.6:
1420 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1421 | dependencies:
1422 | once: 1.4.0
1423 | wrappy: 1.0.2
1424 | dev: true
1425 |
1426 | /inherits/2.0.4:
1427 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1428 | dev: true
1429 |
1430 | /internal-slot/1.0.3:
1431 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==}
1432 | engines: {node: '>= 0.4'}
1433 | dependencies:
1434 | get-intrinsic: 1.1.1
1435 | has: 1.0.3
1436 | side-channel: 1.0.4
1437 | dev: true
1438 |
1439 | /intersection-observer/0.12.0:
1440 | resolution: {integrity: sha512-2Vkz8z46Dv401zTWudDGwO7KiGHNDkMv417T5ItcNYfmvHR/1qCTVBO9vwH8zZmQ0WkA/1ARwpysR9bsnop4NQ==}
1441 | dev: true
1442 |
1443 | /is-arguments/1.1.1:
1444 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
1445 | engines: {node: '>= 0.4'}
1446 | dependencies:
1447 | call-bind: 1.0.2
1448 | has-tostringtag: 1.0.0
1449 | dev: true
1450 |
1451 | /is-arrayish/0.2.1:
1452 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1453 | dev: true
1454 |
1455 | /is-bigint/1.0.4:
1456 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1457 | dependencies:
1458 | has-bigints: 1.0.2
1459 | dev: true
1460 |
1461 | /is-boolean-object/1.1.2:
1462 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1463 | engines: {node: '>= 0.4'}
1464 | dependencies:
1465 | call-bind: 1.0.2
1466 | has-tostringtag: 1.0.0
1467 | dev: true
1468 |
1469 | /is-callable/1.2.4:
1470 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==}
1471 | engines: {node: '>= 0.4'}
1472 | dev: true
1473 |
1474 | /is-core-module/2.9.0:
1475 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
1476 | dependencies:
1477 | has: 1.0.3
1478 | dev: true
1479 |
1480 | /is-date-object/1.0.5:
1481 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1482 | engines: {node: '>= 0.4'}
1483 | dependencies:
1484 | has-tostringtag: 1.0.0
1485 | dev: true
1486 |
1487 | /is-extglob/2.1.1:
1488 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1489 | engines: {node: '>=0.10.0'}
1490 | dev: true
1491 |
1492 | /is-glob/4.0.3:
1493 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1494 | engines: {node: '>=0.10.0'}
1495 | dependencies:
1496 | is-extglob: 2.1.1
1497 | dev: true
1498 |
1499 | /is-map/2.0.2:
1500 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
1501 | dev: true
1502 |
1503 | /is-negative-zero/2.0.2:
1504 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1505 | engines: {node: '>= 0.4'}
1506 | dev: true
1507 |
1508 | /is-number-object/1.0.7:
1509 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1510 | engines: {node: '>= 0.4'}
1511 | dependencies:
1512 | has-tostringtag: 1.0.0
1513 | dev: true
1514 |
1515 | /is-number/7.0.0:
1516 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1517 | engines: {node: '>=0.12.0'}
1518 | dev: true
1519 |
1520 | /is-regex/1.1.4:
1521 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1522 | engines: {node: '>= 0.4'}
1523 | dependencies:
1524 | call-bind: 1.0.2
1525 | has-tostringtag: 1.0.0
1526 | dev: true
1527 |
1528 | /is-set/2.0.2:
1529 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
1530 | dev: true
1531 |
1532 | /is-shared-array-buffer/1.0.2:
1533 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1534 | dependencies:
1535 | call-bind: 1.0.2
1536 | dev: true
1537 |
1538 | /is-string/1.0.7:
1539 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1540 | engines: {node: '>= 0.4'}
1541 | dependencies:
1542 | has-tostringtag: 1.0.0
1543 | dev: true
1544 |
1545 | /is-symbol/1.0.4:
1546 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1547 | engines: {node: '>= 0.4'}
1548 | dependencies:
1549 | has-symbols: 1.0.3
1550 | dev: true
1551 |
1552 | /is-typed-array/1.1.8:
1553 | resolution: {integrity: sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==}
1554 | engines: {node: '>= 0.4'}
1555 | dependencies:
1556 | available-typed-arrays: 1.0.5
1557 | call-bind: 1.0.2
1558 | es-abstract: 1.19.5
1559 | foreach: 2.0.5
1560 | has-tostringtag: 1.0.0
1561 | dev: true
1562 |
1563 | /is-weakmap/2.0.1:
1564 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
1565 | dev: true
1566 |
1567 | /is-weakref/1.0.2:
1568 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1569 | dependencies:
1570 | call-bind: 1.0.2
1571 | dev: true
1572 |
1573 | /is-weakset/2.0.2:
1574 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
1575 | dependencies:
1576 | call-bind: 1.0.2
1577 | get-intrinsic: 1.1.1
1578 | dev: true
1579 |
1580 | /isarray/2.0.5:
1581 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1582 | dev: true
1583 |
1584 | /js-cookie/2.2.1:
1585 | resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
1586 | dev: true
1587 |
1588 | /js-sha3/0.8.0:
1589 | resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
1590 | dev: true
1591 |
1592 | /js-tokens/4.0.0:
1593 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1594 | dev: true
1595 |
1596 | /jsesc/2.5.2:
1597 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
1598 | engines: {node: '>=4'}
1599 | hasBin: true
1600 | dev: true
1601 |
1602 | /json-parse-even-better-errors/2.3.1:
1603 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1604 | dev: true
1605 |
1606 | /json5/1.0.1:
1607 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
1608 | hasBin: true
1609 | dependencies:
1610 | minimist: 1.2.6
1611 | dev: true
1612 |
1613 | /json5/2.2.1:
1614 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
1615 | engines: {node: '>=6'}
1616 | hasBin: true
1617 | dev: true
1618 |
1619 | /lines-and-columns/1.2.4:
1620 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1621 | dev: true
1622 |
1623 | /local-pkg/0.4.1:
1624 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
1625 | engines: {node: '>=14'}
1626 | dev: true
1627 |
1628 | /lodash-es/4.17.21:
1629 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
1630 | dev: true
1631 |
1632 | /lodash/4.17.21:
1633 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1634 | dev: true
1635 |
1636 | /loose-envify/1.4.0:
1637 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1638 | hasBin: true
1639 | dependencies:
1640 | js-tokens: 4.0.0
1641 | dev: true
1642 |
1643 | /match-sorter/6.3.1:
1644 | resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==}
1645 | dependencies:
1646 | '@babel/runtime': 7.17.9
1647 | remove-accents: 0.4.2
1648 | dev: true
1649 |
1650 | /medium-zoom/1.0.6:
1651 | resolution: {integrity: sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==}
1652 | dev: true
1653 |
1654 | /merge2/1.4.1:
1655 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1656 | engines: {node: '>= 8'}
1657 | dev: true
1658 |
1659 | /micromatch/4.0.5:
1660 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1661 | engines: {node: '>=8.6'}
1662 | dependencies:
1663 | braces: 3.0.2
1664 | picomatch: 2.3.1
1665 | dev: true
1666 |
1667 | /microseconds/0.2.0:
1668 | resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==}
1669 | dev: true
1670 |
1671 | /minimatch/3.1.2:
1672 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1673 | dependencies:
1674 | brace-expansion: 1.1.11
1675 | dev: true
1676 |
1677 | /minimist/1.2.6:
1678 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
1679 | dev: true
1680 |
1681 | /ms/2.1.2:
1682 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1683 | dev: true
1684 |
1685 | /nano-time/1.0.0:
1686 | resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==}
1687 | dependencies:
1688 | big-integer: 1.6.51
1689 | dev: true
1690 |
1691 | /nanoid/3.3.3:
1692 | resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
1693 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1694 | hasBin: true
1695 | dev: true
1696 |
1697 | /node-releases/2.0.4:
1698 | resolution: {integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==}
1699 | dev: true
1700 |
1701 | /object-inspect/1.12.0:
1702 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==}
1703 | dev: true
1704 |
1705 | /object-is/1.1.5:
1706 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
1707 | engines: {node: '>= 0.4'}
1708 | dependencies:
1709 | call-bind: 1.0.2
1710 | define-properties: 1.1.4
1711 | dev: true
1712 |
1713 | /object-keys/1.1.1:
1714 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1715 | engines: {node: '>= 0.4'}
1716 | dev: true
1717 |
1718 | /object.assign/4.1.2:
1719 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==}
1720 | engines: {node: '>= 0.4'}
1721 | dependencies:
1722 | call-bind: 1.0.2
1723 | define-properties: 1.1.4
1724 | has-symbols: 1.0.3
1725 | object-keys: 1.1.1
1726 | dev: true
1727 |
1728 | /oblivious-set/1.0.0:
1729 | resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==}
1730 | dev: true
1731 |
1732 | /once/1.4.0:
1733 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1734 | dependencies:
1735 | wrappy: 1.0.2
1736 | dev: true
1737 |
1738 | /parent-module/1.0.1:
1739 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1740 | engines: {node: '>=6'}
1741 | dependencies:
1742 | callsites: 3.1.0
1743 | dev: true
1744 |
1745 | /parse-json/5.2.0:
1746 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1747 | engines: {node: '>=8'}
1748 | dependencies:
1749 | '@babel/code-frame': 7.16.7
1750 | error-ex: 1.3.2
1751 | json-parse-even-better-errors: 2.3.1
1752 | lines-and-columns: 1.2.4
1753 | dev: true
1754 |
1755 | /path-is-absolute/1.0.1:
1756 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1757 | engines: {node: '>=0.10.0'}
1758 | dev: true
1759 |
1760 | /path-parse/1.0.7:
1761 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1762 | dev: true
1763 |
1764 | /path-type/4.0.0:
1765 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1766 | engines: {node: '>=8'}
1767 | dev: true
1768 |
1769 | /picocolors/1.0.0:
1770 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1771 | dev: true
1772 |
1773 | /picomatch/2.3.1:
1774 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1775 | engines: {node: '>=8.6'}
1776 | dev: true
1777 |
1778 | /postcss/8.4.13:
1779 | resolution: {integrity: sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==}
1780 | engines: {node: ^10 || ^12 || >=14}
1781 | dependencies:
1782 | nanoid: 3.3.3
1783 | picocolors: 1.0.0
1784 | source-map-js: 1.0.2
1785 | dev: true
1786 |
1787 | /queue-microtask/1.2.3:
1788 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1789 | dev: true
1790 |
1791 | /rc-field-form/1.26.3_react-dom@18.1.0+react@18.1.0:
1792 | resolution: {integrity: sha512-wzQToAwdr8fiq/Nb1KFq+9WYFeALJXKwNGk5/MaCu1AUS7PpVQaN2anzVfWdVBFiiM2N+3DOh64JSOH8s1w3FQ==}
1793 | engines: {node: '>=8.x'}
1794 | peerDependencies:
1795 | react: '>=16.9.0'
1796 | react-dom: '>=16.9.0'
1797 | dependencies:
1798 | '@babel/runtime': 7.17.9
1799 | async-validator: 4.1.1
1800 | rc-util: 5.21.2_react-dom@18.1.0+react@18.1.0
1801 | react: 18.1.0
1802 | react-dom: 18.1.0_react@18.1.0
1803 | dev: true
1804 |
1805 | /rc-util/5.21.2_react-dom@18.1.0+react@18.1.0:
1806 | resolution: {integrity: sha512-QuuZ2tKMScGtxSx3rLzgPGGDZm/np7phMqA7OcDidSf44abvSk+AdtdD7ZvQPvCEtdC6nCSI5tEVnUaYjjD9/w==}
1807 | peerDependencies:
1808 | react: '>=16.9.0'
1809 | react-dom: '>=16.9.0'
1810 | dependencies:
1811 | '@babel/runtime': 7.17.9
1812 | react: 18.1.0
1813 | react-dom: 18.1.0_react@18.1.0
1814 | react-is: 16.13.1
1815 | shallowequal: 1.1.0
1816 | dev: true
1817 |
1818 | /react-dom/18.1.0_react@18.1.0:
1819 | resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==}
1820 | peerDependencies:
1821 | react: ^18.1.0
1822 | dependencies:
1823 | loose-envify: 1.4.0
1824 | react: 18.1.0
1825 | scheduler: 0.22.0
1826 | dev: true
1827 |
1828 | /react-is/16.13.1:
1829 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
1830 | dev: true
1831 |
1832 | /react-is/17.0.2:
1833 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
1834 | dev: true
1835 |
1836 | /react-qr-reader/3.0.0-beta-1_react-dom@18.1.0+react@18.1.0:
1837 | resolution: {integrity: sha512-5HeFH9x/BlziRYQYGK2AeWS9WiKYZtGGMs9DXy3bcySTX3C9UJL9EwcPnWw8vlf7JP4FcrAlr1SnZ5nsWLQGyw==}
1838 | peerDependencies:
1839 | react: ^16.8.0 || ^17.0.0
1840 | react-dom: ^16.8.0 || ^17.0.0
1841 | dependencies:
1842 | '@zxing/browser': 0.0.7_@zxing+library@0.18.6
1843 | '@zxing/library': 0.18.6
1844 | react: 18.1.0
1845 | react-dom: 18.1.0_react@18.1.0
1846 | rollup: 2.71.1
1847 | dev: true
1848 |
1849 | /react-query/3.38.0_react-dom@18.1.0+react@18.1.0:
1850 | resolution: {integrity: sha512-VRbCTRrDfC5FsB70+JfZuxFRv9SAvkZ1h36MsN8+QaDN+NWB6s1vJndqpoLQnJqN0COTG2zsInMq0KFdYze6TA==}
1851 | peerDependencies:
1852 | react: ^16.8.0 || ^17.0.0 || ^18.0.0
1853 | react-dom: '*'
1854 | react-native: '*'
1855 | peerDependenciesMeta:
1856 | react-dom:
1857 | optional: true
1858 | react-native:
1859 | optional: true
1860 | dependencies:
1861 | '@babel/runtime': 7.17.9
1862 | broadcast-channel: 3.7.0
1863 | match-sorter: 6.3.1
1864 | react: 18.1.0
1865 | react-dom: 18.1.0_react@18.1.0
1866 | dev: true
1867 |
1868 | /react-refresh/0.12.0:
1869 | resolution: {integrity: sha512-suLIhrU2IHKL5JEKR/fAwJv7bbeq4kJ+pJopf77jHwuR+HmJS/HbrPIGsTBUVfw7tXPOmYv7UJ7PCaN49e8x4A==}
1870 | engines: {node: '>=0.10.0'}
1871 | dev: true
1872 |
1873 | /react-router-dom/6.3.0_react-dom@18.1.0+react@18.1.0:
1874 | resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
1875 | peerDependencies:
1876 | react: '>=16.8'
1877 | react-dom: '>=16.8'
1878 | dependencies:
1879 | history: 5.3.0
1880 | react: 18.1.0
1881 | react-dom: 18.1.0_react@18.1.0
1882 | react-router: 6.3.0_react@18.1.0
1883 | dev: true
1884 |
1885 | /react-router/6.3.0_react@18.1.0:
1886 | resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
1887 | peerDependencies:
1888 | react: '>=16.8'
1889 | dependencies:
1890 | history: 5.3.0
1891 | react: 18.1.0
1892 | dev: true
1893 |
1894 | /react/18.1.0:
1895 | resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==}
1896 | engines: {node: '>=0.10.0'}
1897 | dependencies:
1898 | loose-envify: 1.4.0
1899 | dev: true
1900 |
1901 | /recrawl-sync/2.2.2:
1902 | resolution: {integrity: sha512-E2sI4F25Fu2nrfV+KsnC7/qfk/spQIYXlonfQoS4rwxeNK5BjxnLPbWiRXHVXPwYBOTWtPX5765kTm/zJiL+LQ==}
1903 | dependencies:
1904 | '@cush/relative': 1.0.0
1905 | glob-regex: 0.3.2
1906 | slash: 3.0.0
1907 | tslib: 1.14.1
1908 | dev: true
1909 |
1910 | /regenerator-runtime/0.13.9:
1911 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==}
1912 | dev: true
1913 |
1914 | /regexp.prototype.flags/1.4.3:
1915 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
1916 | engines: {node: '>= 0.4'}
1917 | dependencies:
1918 | call-bind: 1.0.2
1919 | define-properties: 1.1.4
1920 | functions-have-names: 1.2.3
1921 | dev: true
1922 |
1923 | /remove-accents/0.4.2:
1924 | resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==}
1925 | dev: true
1926 |
1927 | /resize-observer-polyfill/1.5.1:
1928 | resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
1929 | dev: true
1930 |
1931 | /resolve-from/4.0.0:
1932 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1933 | engines: {node: '>=4'}
1934 | dev: true
1935 |
1936 | /resolve/1.22.0:
1937 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
1938 | hasBin: true
1939 | dependencies:
1940 | is-core-module: 2.9.0
1941 | path-parse: 1.0.7
1942 | supports-preserve-symlinks-flag: 1.0.0
1943 | dev: true
1944 |
1945 | /reusify/1.0.4:
1946 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1947 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1948 | dev: true
1949 |
1950 | /rimraf/3.0.2:
1951 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1952 | hasBin: true
1953 | dependencies:
1954 | glob: 7.2.0
1955 | dev: true
1956 |
1957 | /rollup/2.71.1:
1958 | resolution: {integrity: sha512-lMZk3XfUBGjrrZQpvPSoXcZSfKcJ2Bgn+Z0L1MoW2V8Wh7BVM+LOBJTPo16yul2MwL59cXedzW1ruq3rCjSRgw==}
1959 | engines: {node: '>=10.0.0'}
1960 | hasBin: true
1961 | optionalDependencies:
1962 | fsevents: 2.3.2
1963 | dev: true
1964 |
1965 | /run-parallel/1.2.0:
1966 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1967 | dependencies:
1968 | queue-microtask: 1.2.3
1969 | dev: true
1970 |
1971 | /safe-buffer/5.1.2:
1972 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1973 | dev: true
1974 |
1975 | /scheduler/0.22.0:
1976 | resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==}
1977 | dependencies:
1978 | loose-envify: 1.4.0
1979 | dev: true
1980 |
1981 | /screenfull/5.2.0:
1982 | resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
1983 | engines: {node: '>=0.10.0'}
1984 | dev: true
1985 |
1986 | /semver/6.3.0:
1987 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
1988 | hasBin: true
1989 | dev: true
1990 |
1991 | /shallowequal/1.1.0:
1992 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
1993 | dev: true
1994 |
1995 | /side-channel/1.0.4:
1996 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
1997 | dependencies:
1998 | call-bind: 1.0.2
1999 | get-intrinsic: 1.1.1
2000 | object-inspect: 1.12.0
2001 | dev: true
2002 |
2003 | /slash/3.0.0:
2004 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2005 | engines: {node: '>=8'}
2006 | dev: true
2007 |
2008 | /source-map-js/1.0.2:
2009 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2010 | engines: {node: '>=0.10.0'}
2011 | dev: true
2012 |
2013 | /staged-components/1.1.2_react@18.1.0:
2014 | resolution: {integrity: sha512-Fzf0qhYau/zn1pEsZSZml0b8vvGvdC+xo71jM0TE8vtM/2VjRCGLWaPb3vH3csaLv4qcoXVMMcRIeSO+HTHehQ==}
2015 | peerDependencies:
2016 | react: ^16.8.0 || ^17.0.0
2017 | dependencies:
2018 | react: 18.1.0
2019 | dev: true
2020 |
2021 | /string.prototype.trimend/1.0.4:
2022 | resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==}
2023 | dependencies:
2024 | call-bind: 1.0.2
2025 | define-properties: 1.1.4
2026 | dev: true
2027 |
2028 | /string.prototype.trimstart/1.0.4:
2029 | resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==}
2030 | dependencies:
2031 | call-bind: 1.0.2
2032 | define-properties: 1.1.4
2033 | dev: true
2034 |
2035 | /strip-bom/3.0.0:
2036 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2037 | engines: {node: '>=4'}
2038 | dev: true
2039 |
2040 | /supports-color/5.5.0:
2041 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2042 | engines: {node: '>=4'}
2043 | dependencies:
2044 | has-flag: 3.0.0
2045 | dev: true
2046 |
2047 | /supports-preserve-symlinks-flag/1.0.0:
2048 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2049 | engines: {node: '>= 0.4'}
2050 | dev: true
2051 |
2052 | /svg-parser/2.0.4:
2053 | resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
2054 | dev: true
2055 |
2056 | /timeago-react/3.0.4_react@18.1.0:
2057 | resolution: {integrity: sha512-cv6Bnm01VKyHoQCBKzk24+L9ycj3jLq3uEFpYILKGJT7UUXWEzC0TBCxforsvL4NSjcwqqHNKdEeqEFMNNoN2A==}
2058 | peerDependencies:
2059 | react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
2060 | dependencies:
2061 | react: 18.1.0
2062 | timeago.js: 4.0.2
2063 | dev: true
2064 |
2065 | /timeago.js/4.0.2:
2066 | resolution: {integrity: sha512-a7wPxPdVlQL7lqvitHGGRsofhdwtkoSXPGATFuSOA2i1ZNQEPLrGnj68vOp2sOJTCFAQVXPeNMX/GctBaO9L2w==}
2067 | dev: true
2068 |
2069 | /to-fast-properties/2.0.0:
2070 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2071 | engines: {node: '>=4'}
2072 | dev: true
2073 |
2074 | /to-regex-range/5.0.1:
2075 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2076 | engines: {node: '>=8.0'}
2077 | dependencies:
2078 | is-number: 7.0.0
2079 | dev: true
2080 |
2081 | /ts-custom-error/3.2.0:
2082 | resolution: {integrity: sha512-cBvC2QjtvJ9JfWLvstVnI45Y46Y5dMxIaG1TDMGAD/R87hpvqFL+7LhvUDhnRCfOnx/xitollFWWvUKKKhbN0A==}
2083 | engines: {node: '>=8.0.0'}
2084 | dev: true
2085 |
2086 | /tsconfig-paths/3.14.1:
2087 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==}
2088 | dependencies:
2089 | '@types/json5': 0.0.29
2090 | json5: 1.0.1
2091 | minimist: 1.2.6
2092 | strip-bom: 3.0.0
2093 | dev: true
2094 |
2095 | /tslib/1.14.1:
2096 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2097 | dev: true
2098 |
2099 | /tslib/2.4.0:
2100 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
2101 | dev: true
2102 |
2103 | /typescript/4.6.4:
2104 | resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==}
2105 | engines: {node: '>=4.2.0'}
2106 | hasBin: true
2107 | dev: true
2108 |
2109 | /unbox-primitive/1.0.2:
2110 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
2111 | dependencies:
2112 | call-bind: 1.0.2
2113 | has-bigints: 1.0.2
2114 | has-symbols: 1.0.3
2115 | which-boxed-primitive: 1.0.2
2116 | dev: true
2117 |
2118 | /unload/2.2.0:
2119 | resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==}
2120 | dependencies:
2121 | '@babel/runtime': 7.17.9
2122 | detect-node: 2.1.0
2123 | dev: true
2124 |
2125 | /vite-plugin-pages/0.23.0_vite@2.9.6:
2126 | resolution: {integrity: sha512-KEfW6WBfACCjMXoQY0mLEzfifwCTq6FlvvtXs2XSEe9Pd4QadZTNzHOPKHDsKpVXysRzbYxE8/c/Ao9+nXsQ7w==}
2127 | peerDependencies:
2128 | '@vue/compiler-sfc': ^3.0.0
2129 | vite: ^2.0.0
2130 | peerDependenciesMeta:
2131 | '@vue/compiler-sfc':
2132 | optional: true
2133 | dependencies:
2134 | '@types/debug': 4.1.7
2135 | debug: 4.3.4
2136 | deep-equal: 2.0.5
2137 | fast-glob: 3.2.11
2138 | json5: 2.2.1
2139 | local-pkg: 0.4.1
2140 | picocolors: 1.0.0
2141 | vite: 2.9.6
2142 | yaml: 2.0.1
2143 | transitivePeerDependencies:
2144 | - supports-color
2145 | dev: true
2146 |
2147 | /vite-plugin-svgr/2.0.0_vite@2.9.6:
2148 | resolution: {integrity: sha512-nxu542CRXLqAsI7Ebw5EMHFpLp1yb0ix+DTCVAIRz09+YREkOY8sDr2Jl5yKaKSOA3UQnW4yf6Vg4DhArJCvyA==}
2149 | peerDependencies:
2150 | vite: ^2.6.0
2151 | dependencies:
2152 | '@svgr/core': 6.2.1
2153 | vite: 2.9.6
2154 | transitivePeerDependencies:
2155 | - supports-color
2156 | dev: true
2157 |
2158 | /vite-tsconfig-paths/3.4.1_vite@2.9.6:
2159 | resolution: {integrity: sha512-SgK3/pnTuJ3i+gMSAWLR6VCPSw26bnxawrmXGvCDjJgk8MAQgmbCrFrAzfwbwZBXSqSuvWEuX04Wt73qJKx8fQ==}
2160 | peerDependencies:
2161 | vite: '>2.0.0-0'
2162 | dependencies:
2163 | debug: 4.3.4
2164 | globrex: 0.1.2
2165 | recrawl-sync: 2.2.2
2166 | tsconfig-paths: 3.14.1
2167 | vite: 2.9.6
2168 | transitivePeerDependencies:
2169 | - supports-color
2170 | dev: true
2171 |
2172 | /vite/2.9.6:
2173 | resolution: {integrity: sha512-3IffdrByHW95Yjv0a13TQOQfJs7L5dVlSPuTt432XLbRMriWbThqJN2k/IS6kXn5WY4xBLhK9XoaWay1B8VzUw==}
2174 | engines: {node: '>=12.2.0'}
2175 | hasBin: true
2176 | peerDependencies:
2177 | less: '*'
2178 | sass: '*'
2179 | stylus: '*'
2180 | peerDependenciesMeta:
2181 | less:
2182 | optional: true
2183 | sass:
2184 | optional: true
2185 | stylus:
2186 | optional: true
2187 | dependencies:
2188 | esbuild: 0.14.38
2189 | postcss: 8.4.13
2190 | resolve: 1.22.0
2191 | rollup: 2.71.1
2192 | optionalDependencies:
2193 | fsevents: 2.3.2
2194 | dev: true
2195 |
2196 | /which-boxed-primitive/1.0.2:
2197 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
2198 | dependencies:
2199 | is-bigint: 1.0.4
2200 | is-boolean-object: 1.1.2
2201 | is-number-object: 1.0.7
2202 | is-string: 1.0.7
2203 | is-symbol: 1.0.4
2204 | dev: true
2205 |
2206 | /which-collection/1.0.1:
2207 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
2208 | dependencies:
2209 | is-map: 2.0.2
2210 | is-set: 2.0.2
2211 | is-weakmap: 2.0.1
2212 | is-weakset: 2.0.2
2213 | dev: true
2214 |
2215 | /which-typed-array/1.1.7:
2216 | resolution: {integrity: sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==}
2217 | engines: {node: '>= 0.4'}
2218 | dependencies:
2219 | available-typed-arrays: 1.0.5
2220 | call-bind: 1.0.2
2221 | es-abstract: 1.19.5
2222 | foreach: 2.0.5
2223 | has-tostringtag: 1.0.0
2224 | is-typed-array: 1.1.8
2225 | dev: true
2226 |
2227 | /wrappy/1.0.2:
2228 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2229 | dev: true
2230 |
2231 | /yaml/1.10.2:
2232 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2233 | engines: {node: '>= 6'}
2234 | dev: true
2235 |
2236 | /yaml/2.0.1:
2237 | resolution: {integrity: sha512-1NpAYQ3wjzIlMs0mgdBmYzLkFgWBIWrzYVDYfrixhoFNNgJ444/jT2kUT2sicRbJES3oQYRZugjB6Ro8SjKeFg==}
2238 | engines: {node: '>= 14'}
2239 | dev: true
2240 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/public/favicon.ico
--------------------------------------------------------------------------------
/public/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pd4d10/cnode-pwa/6e1449ad6bad3fe33964cb13205583eaffca567c/public/icon.png
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CNode - Node.js中文社区",
3 | "short_name": "CNode社区",
4 | "icons": [
5 | {
6 | "src": "icon.png",
7 | "sizes": "512x512",
8 | "type": "image/png"
9 | }
10 | ],
11 | "start_url": "/",
12 | "display": "standalone",
13 | "background_color": "#fff",
14 | "theme_color": "#fff"
15 | }
16 |
--------------------------------------------------------------------------------
/src/cnodejs.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
55 |
--------------------------------------------------------------------------------
/src/components/avatar.module.css:
--------------------------------------------------------------------------------
1 | .container {
2 | display: flex;
3 | min-width: 0;
4 | width: 100%;
5 | }
6 |
7 | .avatar {
8 | min-width: 48px; /* fix width at chrome */
9 | width: 48px;
10 | height: 48px;
11 | border-radius: 50%;
12 | }
13 |
14 | .content {
15 | display: flex;
16 | min-width: 0; /* https://stackoverflow.com/questions/34934586/white-space-nowrap-and-flexbox-did-not-work-in-chrome */
17 | flex-direction: column;
18 | flex-grow: 1;
19 | justify-content: space-between;
20 | height: 48px;
21 | margin-left: 10px;
22 | }
23 |
--------------------------------------------------------------------------------
/src/components/avatar.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import { useNavigate } from 'react-router-dom'
3 | import $s from './avatar.module.css'
4 | import { TopicProps } from './topic'
5 |
6 | export const AvatarRow = ({ author, children, ...props }) => {
7 | const navigate = useNavigate()
8 | return (
9 |
10 |

{
15 | e.preventDefault()
16 | navigate(`/user/${author.loginname}`)
17 | }}
18 | />
19 |
{children}
20 |
21 | )
22 | }
23 |
24 | export const Avatar: FC = (author) => {
25 | const navigate = useNavigate()
26 | return (
27 |
{
33 | e.preventDefault()
34 | navigate(`/user/${author.loginname}`)
35 | }}
36 | />
37 | )
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/common.module.css:
--------------------------------------------------------------------------------
1 | .link {
2 | border-bottom: 1px solid #f0f0f0 !important;
3 | }
4 |
5 | .link:visited h3 {
6 | color: #888;
7 | }
8 |
--------------------------------------------------------------------------------
/src/components/header.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import { useNavigate } from 'react-router-dom'
3 | import { NavBar } from 'antd-mobile'
4 | import { NavBarProps } from 'antd-mobile/es/components/nav-bar'
5 |
6 | export const Header: FC = ({ right, ...props }) => {
7 | const navigate = useNavigate()
8 |
9 | return (
10 | {
12 | // TODO:
13 | if (history.length === 1) {
14 | // If no history, go to homepage
15 | navigate('/')
16 | } else {
17 | navigate(-1)
18 | }
19 | }}
20 | right={right ? {right}
: null}
21 | {...props}
22 | />
23 | )
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/loading.tsx:
--------------------------------------------------------------------------------
1 | import { Loading as AntdLoading } from 'antd-mobile'
2 |
3 | export const Loading = () => (
4 |
13 | )
14 |
15 | export const LoadingMore = () =>
16 |
--------------------------------------------------------------------------------
/src/components/markdown.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import { Viewer, ViewerProps } from '@bytemd/react'
3 | import mediumZoom from '@bytemd/plugin-medium-zoom'
4 | import gfm from '@bytemd/plugin-gfm'
5 | import 'github-markdown-css'
6 |
7 | const plugins = [mediumZoom(), gfm()]
8 |
9 | export const MarkdownViewer: FC> = ({ value }) => {
10 | return
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/no-more.module.css:
--------------------------------------------------------------------------------
1 | .text {
2 | text-align: center;
3 | color: #aaa;
4 | margin: 10px auto 20px;
5 | font-size: 12px;
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/no-more.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import $s from './no-more.module.css'
3 |
4 | export const NoMore: FC = () => {
5 | return --- 没有更多了 ---
6 | }
7 |
--------------------------------------------------------------------------------
/src/components/reply.tsx:
--------------------------------------------------------------------------------
1 | import { AvatarRow } from './avatar'
2 | import { MarkdownViewer } from './markdown'
3 | import { TimeAgo } from './timeago'
4 |
5 | export const Reply = (props) => (
6 |
7 |
8 |
9 | {props.author.loginname}
10 |
11 |
12 |
13 |
14 | {/*
*/}
15 |
16 | )
17 |
--------------------------------------------------------------------------------
/src/components/styled.module.css:
--------------------------------------------------------------------------------
1 | .title {
2 | margin: 0;
3 | font-size: 16px;
4 | line-height: 24px;
5 | font-weight: normal;
6 | color: #333;
7 | white-space: nowrap;
8 | text-overflow: ellipsis;
9 | overflow: hidden;
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/styled.tsx:
--------------------------------------------------------------------------------
1 | import $s from './styled.module.css'
2 |
3 | export const Title = (props) =>
4 |
--------------------------------------------------------------------------------
/src/components/timeago.module.css:
--------------------------------------------------------------------------------
1 | .time {
2 | font-size: 12px;
3 | /* line-height: 24px; */
4 | color: #838383;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/timeago.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import TimeAgoLib from 'timeago-react'
3 | import $s from './timeago.module.css'
4 |
5 | export const TimeAgo: FC<{ text?: string; time: string }> = ({
6 | text,
7 | time,
8 | }) => (
9 |
10 | {text}
11 |
12 |
13 | )
14 |
--------------------------------------------------------------------------------
/src/components/topic.module.css:
--------------------------------------------------------------------------------
1 | .extra {
2 | display: flex;
3 | height: 24px;
4 | align-items: center;
5 | justify-content: space-between;
6 | }
7 |
8 | .left {
9 | display: flex;
10 | align-items: center;
11 | }
12 |
13 | .right {
14 | font-size: 12px;
15 | color: #b4b4b4;
16 | margin-left: 8px;
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/topic.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react'
2 | import { useNavigate } from 'react-router-dom'
3 | import { colors } from '../utils'
4 | import $c from './common.module.css'
5 | import $s from './topic.module.css'
6 | import { Avatar } from './avatar'
7 | import { TimeAgo } from './timeago'
8 | import { Ellipsis, List, Tag } from 'antd-mobile'
9 |
10 | export interface TopicProps {
11 | id: string
12 | author_id: string
13 | tab: string
14 | content: string
15 | title: string
16 | last_reply_at: string
17 | good: boolean
18 | top: boolean
19 | reply_count: number
20 | visit_count: number
21 | create_at: string
22 | author: {
23 | loginname: string
24 | avatar_url: string
25 | }
26 | }
27 |
28 | export const Topic: FC = (props) => {
29 | const navigate = useNavigate()
30 | return (
31 | }
35 | description={
36 |
37 |
38 |
39 | {props.top
40 | ? '置顶'
41 | : props.good
42 | ? '精华'
43 | : {
44 | share: '分享',
45 | ask: '问答',
46 | job: '招聘',
47 | }[props.tab]}
48 |
49 |
50 | {props.reply_count}
51 | 回复 / {props.visit_count} 浏览
52 |
53 |
54 |
55 |
56 | }
57 | onClick={() => {
58 | navigate(`/topic/${props.id}`)
59 | }}
60 | >
61 |
62 |
63 | )
64 | }
65 |
66 | export const UserTopic: FC = (props) => {
67 | const navigate = useNavigate()
68 |
69 | return (
70 | }
73 | arrow={false}
74 | description={
75 |
76 |
{props.author.loginname}
77 |
78 |
79 | }
80 | onClick={() => {
81 | navigate(`/topic/${props.id}`)
82 | }}
83 | >
84 |
85 |
86 | )
87 | }
88 |
--------------------------------------------------------------------------------
/src/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
--------------------------------------------------------------------------------
/src/globals.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | padding: 0;
4 | margin: 0;
5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
7 | }
8 |
9 | a {
10 | color: inherit;
11 | text-decoration: none;
12 | }
13 |
14 | * {
15 | box-sizing: border-box;
16 | }
17 |
18 | .fade-enter {
19 | opacity: 0;
20 | z-index: 1;
21 | }
22 |
23 | .fade-enter.fade-enter-active {
24 | opacity: 1;
25 | transition: opacity 250ms ease-in;
26 | }
27 |
--------------------------------------------------------------------------------
/src/hooks/auth.ts:
--------------------------------------------------------------------------------
1 | import { useState } from 'react'
2 | import { fetchAPI } from '@/utils'
3 |
4 | export const useAuth = () => {
5 | const [token, setToken] = useState(null)
6 | const [loginname, setLoginname] = useState(null)
7 | const [count, setCount] = useState(0)
8 |
9 | const queueAfterToken = []
10 |
11 | const runAfterTokenVerified = (callback) => {
12 | queueAfterToken.push(callback)
13 | }
14 |
15 | const fetchUnreadCount = async (token) => {
16 | const { data } = await fetchAPI('/message/count?accesstoken=' + token)
17 | setCount(data)
18 | setTimeout(() => {
19 | fetchUnreadCount(token)
20 | }, 10000)
21 | }
22 |
23 | const verifyToken = async (token) => {
24 | try {
25 | const { id, loginname, avatar_url } = await fetchAPI('/accesstoken', {
26 | accesstoken: token,
27 | })
28 | setToken(token)
29 | setLoginname(loginname)
30 | fetchUnreadCount(token)
31 | localStorage.setItem('token', token)
32 | // queueAfterToken.forEach(callback => callback())
33 | // queueAfterToken = []
34 | return true
35 | } catch (err) {
36 | return false
37 | }
38 | }
39 |
40 | return {
41 | token,
42 | loginname,
43 | count,
44 | fetchUnreadCount,
45 | runAfterTokenVerified,
46 | verifyToken,
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | import { Suspense, useEffect } from 'react'
2 | import { createRoot } from 'react-dom/client'
3 | import { BrowserRouter as Router, useRoutes } from 'react-router-dom'
4 | import { useAuth } from '@/hooks/auth'
5 | import { QueryClient, QueryClientProvider } from 'react-query'
6 | import './globals.css'
7 | import routes from '~react-pages'
8 |
9 | const queryClient = new QueryClient()
10 |
11 | const App = () => {
12 | const { verifyToken, fetchUnreadCount } = useAuth()
13 |
14 | useEffect(() => {
15 | const init = async () => {
16 | const token = localStorage.getItem('token')
17 | if (token) {
18 | const isValid = await verifyToken(token)
19 | if (isValid) {
20 | fetchUnreadCount(token)
21 | }
22 | }
23 | }
24 | init()
25 | }, [])
26 |
27 | return (
28 |
29 | Loading...}>{useRoutes(routes)}
30 |
31 | )
32 | }
33 |
34 | const root = createRoot(document.getElementById('root')!)
35 | root.render(
36 |
37 |
38 |
39 | )
40 |
--------------------------------------------------------------------------------
/src/pages/about.tsx:
--------------------------------------------------------------------------------
1 | import { List } from 'antd-mobile'
2 | import { FC } from 'react'
3 | import { ReactComponent as Logo } from '../cnodejs.svg'
4 | import { Header } from '@/components/header'
5 |
6 | const Linker: FC<{ title: string; url: string; description?: string }> = ({
7 | title,
8 | url,
9 | description = url,
10 | }) => (
11 | {
15 | window.open(url)
16 | }}
17 | >
18 | {title}
19 |
20 | )
21 |
22 | export default function About() {
23 | return (
24 | <>
25 |
26 |
34 |
35 |
36 |
37 |
38 |
39 |
44 |
45 | >
46 | )
47 | }
48 |
--------------------------------------------------------------------------------
/src/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import { useSearchParams, useNavigate, Link } from 'react-router-dom'
2 | import { fetchAPI } from '@/utils'
3 | import { Topic, TopicProps } from '@/components/topic'
4 | import { Badge, InfiniteScroll, List, Space, Tabs } from 'antd-mobile'
5 | import { BellOutline, UserOutline } from 'antd-mobile-icons'
6 | import { useAuth } from '@/hooks/auth'
7 | import { Header } from '@/components/header'
8 | import { useInfiniteQuery } from 'react-query'
9 | import { Loading } from '@/components/loading'
10 |
11 | export default function Home() {
12 | const [searchParams] = useSearchParams()
13 | const tab = searchParams.get('tab') ?? 'all'
14 | const navigate = useNavigate()
15 |
16 | const { count, loginname } = useAuth()
17 |
18 | const { data, fetchNextPage, hasNextPage } = useInfiniteQuery<{
19 | data: TopicProps[]
20 | cursor: number
21 | }>(
22 | ['topics', tab],
23 | async ({ pageParam = 1 }) => {
24 | const json = await fetchAPI(
25 | `/topics?mdrender=false&tab=${tab}&page=${pageParam}&limit=20`
26 | )
27 | json.cursor = pageParam + 1
28 | return json
29 | },
30 | {
31 | getNextPageParam: (lastPage) => lastPage.cursor,
32 | }
33 | )
34 |
35 | return (
36 |
37 |
41 |
42 | {count ? (
43 |
44 |
45 |
46 | ) : (
47 |
48 | )}
49 |
50 |
51 |
52 |
53 |
54 | }
55 | >
56 | CNode
57 |
58 | {
60 | navigate(key === 'all' ? '/' : '/?tab=' + key)
61 | }}
62 | >
63 | {[
64 | { id: 'all', title: '全部' },
65 | { id: 'good', title: '精华' },
66 | { id: 'share', title: '分享' },
67 | { id: 'ask', title: '问答' },
68 | { id: 'job', title: '招聘' },
69 | ].map(({ id, title }) => (
70 |
71 | ))}
72 |
73 |
74 | {!data ? (
75 |
76 | ) : (
77 |
78 | {data.pages
79 | .map((page) => {
80 | return page.data.map((topic) => {
81 | return
82 | })
83 | })
84 | .flat()}
85 |
86 | )}
87 | {
89 | await fetchNextPage()
90 | }}
91 | hasMore={hasNextPage}
92 | />
93 |
94 | {/* */}
102 |
103 | )
104 | }
105 |
--------------------------------------------------------------------------------
/src/pages/login.tsx:
--------------------------------------------------------------------------------
1 | import { useNavigate } from 'react-router-dom'
2 | import { useAuth } from '@/hooks/auth'
3 | import { QrReader } from 'react-qr-reader'
4 | // import { colors } from '../../utils'
5 | // import style from './login.css'
6 |
7 | export default function Login() {
8 | const navigate = useNavigate()
9 | //
25 |
26 | const { verifyToken } = useAuth()
27 |
28 | return (
29 | {
31 | const token = res?.getText()
32 | console.log('scan', token)
33 | if (!token) return
34 |
35 | const isValid = await verifyToken(token)
36 | if (isValid) {
37 | navigate('/')
38 | }
39 | }}
40 | constraints={{
41 | facingMode: 'environment',
42 | }} // style={{ width: "100%" }}
43 | />
44 | )
45 | }
46 |
--------------------------------------------------------------------------------
/src/pages/message.tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect, FC } from 'react'
2 | import { useNavigate } from 'react-router-dom'
3 | import { useAuth } from '@/hooks/auth'
4 | import { colors, fetchAPI } from '@/utils'
5 | import { CheckOutline } from 'antd-mobile-icons'
6 | import { Header } from '@/components/header'
7 | import { List, Toast } from 'antd-mobile'
8 | import { Loading } from '@/components/loading'
9 | import { NoMore } from '@/components/no-more'
10 | import { AvatarRow } from '@/components/avatar'
11 | import { Title } from '@/components/styled'
12 |
13 | const MessageItem: FC = (props) => {
14 | const navigate = useNavigate()
15 | return (
16 | {
18 | navigate(`/topic/${props.topic.id}`)
19 | }}
20 | style={props.has_read ? {} : { background: '#f4fcf0' }}
21 | >
22 |
23 |
24 | {props.author.loginname}{' '}
25 | 回复了你的话题
26 |
27 | {props.topic.title}
28 |
29 |
30 | )
31 | }
32 |
33 | export default function Message() {
34 | const [unread, setUnread] = useState([])
35 | const [read, setRead] = useState([])
36 | const [isLoading, setIsLoading] = useState(false)
37 | const { token } = useAuth()
38 |
39 | const updateMessages = async () => {
40 | setIsLoading(true)
41 | try {
42 | const { data } = await fetchAPI('/messages?accesstoken=' + token)
43 | setUnread(data.hasnot_read_messages)
44 | setRead(data.has_read_messages)
45 | } finally {
46 | setIsLoading(false)
47 | }
48 | }
49 |
50 | const markAllAsRead = async () => {
51 | await fetchAPI('/message/mark_all', {
52 | accesstoken: token,
53 | })
54 | }
55 |
56 | useEffect(() => {
57 | // this.props.runAfterTokenVerified(this.props.fetchMessages)
58 |
59 | if (token) {
60 | updateMessages()
61 | }
62 | }, [])
63 |
64 | if (!token) {
65 | // return // TODO:
66 | }
67 |
68 | return (
69 |
70 | {
74 | await markAllAsRead()
75 | Toast.show('已标记全部消息为已读')
76 | await updateMessages()
77 | }}
78 | >
79 | }
80 | >
81 | 消息
82 |
83 | {isLoading ? (
84 |
85 | ) : (
86 | <>
87 | {unread.map((message) => (
88 |
89 | ))}
90 | {read.map((message) => (
91 |
92 | ))}
93 |
94 | >
95 | )}
96 |
97 | )
98 | }
99 |
--------------------------------------------------------------------------------
/src/pages/post.module.css:
--------------------------------------------------------------------------------
1 | .control {
2 | margin: 8px 0 !important;
3 | }
4 |
--------------------------------------------------------------------------------
/src/pages/post.tsx:
--------------------------------------------------------------------------------
1 | import { useState } from 'react'
2 | import { useNavigate } from 'react-router-dom'
3 | import { Header } from '@/components/header'
4 | import { fetchAPI } from '@/utils'
5 | import $s from './post.module.css'
6 | import { useAuth } from '@/hooks/auth'
7 | import { PlayOutline } from 'antd-mobile-icons'
8 | import { Input, Toast } from 'antd-mobile'
9 |
10 | const postTabs = [
11 | { id: 'ask', name: '问答' },
12 | { id: 'share', name: '分享' },
13 | { id: 'job', name: '招聘' },
14 | { id: 'dev', name: '客户端测试' },
15 | ]
16 |
17 | export default function Post() {
18 | const navigate = useNavigate()
19 | const [tab, setTab] = useState('ask')
20 | const [title, setTitle] = useState('')
21 | const [content, setContent] = useState('')
22 | const [titleErrorVisible, setTitleErrorVisible] = useState(false)
23 | const [contentErrorVisible, setContentErrorVisible] = useState(false)
24 |
25 | const { token } = useAuth()
26 |
27 | const showTitleError = titleErrorVisible && !title
28 | const showContentError = contentErrorVisible && !content
29 |
30 | return (
31 |
111 | )
112 | }
113 |
--------------------------------------------------------------------------------
/src/pages/topic/[id].tsx:
--------------------------------------------------------------------------------
1 | import { useState, useEffect } from 'react'
2 | import { fetchAPI, shareCurrentUrl } from '@/utils'
3 | import $s from './detail.module.css'
4 | import { SendOutline } from 'antd-mobile-icons'
5 | import { Header } from '@/components/header'
6 | import { MarkdownViewer } from '@/components/markdown'
7 | import { Reply } from '@/components/reply'
8 | import { AvatarRow } from '@/components/avatar'
9 | import { Loading } from '@/components/loading'
10 | import { NoMore } from '@/components/no-more'
11 | import { TimeAgo } from '@/components/timeago'
12 | import { useParams } from 'react-router-dom'
13 |
14 | export default function Topic() {
15 | const params = useParams<'id'>()
16 |
17 | const [topic, setTopic] = useState(null)
18 | const [isLoading, setIsLoading] = useState(false)
19 |
20 | useEffect(() => {
21 | if (!params.id) return
22 |
23 | const init = async () => {
24 | try {
25 | setIsLoading(true)
26 | const { data } = await fetchAPI(`/topic/${params.id}?mdrender=false`)
27 | setTopic(data)
28 | } finally {
29 | setIsLoading(false)
30 | }
31 | }
32 |
33 | init()
34 | }, [params.id])
35 |
36 | return (
37 | <>
38 | {
42 | shareCurrentUrl(topic ? topic.title : '')
43 | }}
44 | />
45 | }
46 | >
47 | 话题
48 |
49 | {!topic ? (
50 |
51 | ) : (
52 |
53 |
{topic.title}
54 |
55 | {topic.author.loginname}
56 |
57 |
58 |
59 | {topic.visit_count}
60 | 次浏览
61 |
62 |
63 |
64 |
65 |
66 |
72 | {topic.reply_count
73 | ? `共 ${topic.reply_count} 条回复`
74 | : '暂无回复'}
75 |
76 | {topic.replies.map((reply) => (
77 |
78 | ))}
79 |
80 |
81 |
82 | )}
83 | >
84 | )
85 | }
86 |
--------------------------------------------------------------------------------
/src/pages/topic/detail.module.css:
--------------------------------------------------------------------------------
1 | .container {
2 | padding: 12px 16px;
3 | color: #333;
4 | }
5 |
6 | .title {
7 | font-size: 20px;
8 | margin-bottom: 12px;
9 | }
10 |
11 | .info {
12 | display: flex;
13 | margin: 12px 0;
14 | }
15 |
16 | .prettyprint {
17 | overflow: auto;
18 | }
19 |
20 | .container h2 {
21 | font-size: 20px;
22 | }
23 |
24 | .tip {
25 | font-size: 12px;
26 | line-height: 24px;
27 | color: #838383;
28 | }
29 |
--------------------------------------------------------------------------------
/src/pages/user/[loginname].tsx:
--------------------------------------------------------------------------------
1 | import { Tabs, List } from 'antd-mobile'
2 | import { SendOutline } from 'antd-mobile-icons'
3 | import { useState, useEffect } from 'react'
4 | import { Header } from '@/components/header'
5 | import { fetchAPI, shareCurrentUrl } from '@/utils'
6 | import { UserTopic } from '@/components/topic'
7 | import { NoMore } from '@/components/no-more'
8 | import { Loading } from '@/components/loading'
9 | import { AvatarRow } from '@/components/avatar'
10 | import { TimeAgo } from '@/components/timeago'
11 | import { useParams } from 'react-router-dom'
12 |
13 | export default function User() {
14 | const { loginname } = useParams<'loginname'>()
15 | const [author, setAuthor] = useState(null)
16 | const [tabKey, setTabKey] = useState('0')
17 | const [tabData, setTabData] = useState([[], [], []])
18 |
19 | useEffect(() => {
20 | const init = async () => {
21 | if (!loginname) return
22 |
23 | const [{ data }, { data: collectData }] = await Promise.all([
24 | fetchAPI(`/user/${loginname}`),
25 | fetchAPI(`/topic_collect/${loginname}`),
26 | ])
27 | setAuthor(data)
28 | setTabData([data.recent_replies, data.recent_topics, collectData])
29 | }
30 |
31 | init()
32 | }, [loginname])
33 |
34 | return (
35 |
36 |
{
40 | shareCurrentUrl(author ? author.loginname : '')
41 | }}
42 | />
43 | }
44 | >
45 | 用户
46 |
47 | {author ? (
48 |
49 |
50 | {author.loginname}
51 |
52 |
53 |
54 |
55 |
{
58 | setTabKey(key)
59 | }}
60 | >
61 | {['最近参与', '最近发布', '话题收藏'].map((title, index) => {
62 | return
63 | })}
64 |
65 |
66 | {tabData[tabKey].map((topic) => (
67 |
68 | ))}
69 |
70 |
71 |
72 | ) : (
73 |
74 | )}
75 |
76 | )
77 | }
78 |
--------------------------------------------------------------------------------
/src/utils.ts:
--------------------------------------------------------------------------------
1 | import { Toast } from 'antd-mobile'
2 |
3 | export const colors = {
4 | background: '#444',
5 | primary: '#80bd01',
6 | tag: '#80bd01',
7 | avatarBorder: '#80bd01',
8 | avatarBackground: '#f5f5f5',
9 | }
10 |
11 | export async function fetchAPI(url: string, body?: Record) {
12 | const options: RequestInit = {}
13 | // if body passed in then use posts
14 | if (body) {
15 | options.method = 'POST'
16 | options.headers = {
17 | // 'Content-Type': 'application/json',
18 | 'Content-Type': 'application/x-www-form-urlencoded',
19 | }
20 | // options.body = JSON.stringify(body)
21 | options.body = new URLSearchParams(body).toString()
22 | }
23 |
24 | const res = await fetch(`https://cnodejs.org/api/v1${url}`, options)
25 | const json = await res.json()
26 |
27 | if (!json.success) {
28 | throw new Error(json.error_msg)
29 | }
30 |
31 | return json
32 | }
33 |
34 | export function copy(text: string) {
35 | const $ = document.createElement('textarea')
36 | $.value = text
37 | document.body.appendChild($)
38 | $.select()
39 | document.execCommand('copy')
40 | document.body.removeChild($)
41 | }
42 |
43 | export function shareCurrentUrl(text: string) {
44 | if (navigator.share) {
45 | return navigator.share({
46 | title: text,
47 | text: text,
48 | url: window.location.href,
49 | })
50 | } else {
51 | copy(window.location.href)
52 | Toast.show('链接已复制至剪贴板')
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2019",
4 | "moduleResolution": "node",
5 | "lib": ["DOM", "ES2019"],
6 | "strict": true,
7 | "jsx": "react-jsx",
8 | "esModuleInterop": true,
9 | "baseUrl": ".",
10 | "paths": {
11 | "@/*": ["src/*"]
12 | }
13 | },
14 | "include": ["src"]
15 | }
16 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import svgr from 'vite-plugin-svgr'
3 | import pages from 'vite-plugin-pages'
4 | import react from '@vitejs/plugin-react'
5 | import tsconfigPaths from 'vite-tsconfig-paths'
6 |
7 | export default defineConfig({
8 | plugins: [svgr(), pages({ resolver: 'react' }), react(), tsconfigPaths()],
9 | })
10 |
--------------------------------------------------------------------------------