├── .gitignore ├── .node-version ├── .prettierignore ├── LICENSE.md ├── README.md ├── bsconfig.json ├── index.html ├── logo.png ├── package.json ├── pnpm-lock.yaml ├── public └── robots.txt ├── src ├── App.res ├── App.resi ├── component │ ├── ErrorDetails.res │ ├── Link.res │ ├── Pagination.res │ ├── Route.res │ ├── Security.res │ ├── Spinner.res │ └── WithTestId.res ├── favicon.ico ├── main.res ├── page │ ├── Article │ │ ├── Article.res │ │ ├── ArticleAuthorAvatar.res │ │ ├── ArticleAuthorName.res │ │ ├── ArticleComments.res │ │ ├── ArticleDate.res │ │ ├── ArticleDeleteButton.res │ │ ├── ArticleEditButton.res │ │ ├── ArticleFavoriteButton.res │ │ ├── ArticleFollowButton.res │ │ ├── ArticlePostComment.res │ │ └── ArticleTagList.res │ ├── Editor.res │ ├── Footer.res │ ├── Header.res │ ├── Home.res │ ├── HomeArticlePreview.res │ ├── HomePopularTags.res │ ├── Login.res │ ├── Profile.res │ ├── Register.res │ └── Settings.res └── shared │ ├── API.res │ ├── AppError.res │ ├── AsyncData.res │ ├── AsyncResult.res │ ├── Constant.res │ ├── Endpoints.res │ ├── Hook.res │ ├── Markdown.res │ ├── Markdown.resi │ ├── Shape.res │ └── Utils.res └── vite.config.mjs /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | 7 | # ReScript 8 | .bsb.lock 9 | .merlin 10 | /lib/ 11 | *.bs.js 12 | 13 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/* 2 | lib/* 3 | node_modules 4 | package.json 5 | package-lock.json 6 | bsconfig.json 7 | *.bs.js 8 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Jihchi Lee 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 | # ![RealWorld Example App](logo.png) 2 | 3 | ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/jihchi/rescript-react-realworld-example-app) 4 | ![GitHub last commit](https://img.shields.io/github/last-commit/jihchi/rescript-react-realworld-example-app) 5 | ![GitHub](https://img.shields.io/github/license/jihchi/rescript-react-realworld-example-app) 6 | 7 | > ### ReScript + React codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the [RealWorld](https://github.com/gothinkster/realworld) spec and API. 8 | 9 | ### [Demo](https://rescript-react-realworld-example-app.vercel.app)    [RealWorld](https://github.com/gothinkster/realworld) 10 | 11 | This codebase was created to demonstrate a fully fledged fullstack application built with **[ReScript & React](https://rescript-lang.org/docs/react/latest/introduction)** including CRUD operations, authentication, routing, pagination, and more. 12 | 13 | We've gone to great lengths to adhere to the **ReScript & React** community styleguides & best practices. 14 | 15 | For more information on how to this works with other frontends/backends, head over to the [RealWorld](https://github.com/gothinkster/realworld) repo. 16 | 17 | # How it works 18 | 19 | Basically its just like React single-page-application but written in [ReScript](https://rescript-lang.org/) with [React](https://reactjs.org/). 20 | 21 | - Using [Vite](https://vitejs.dev/) as the frontend build tool 22 | - Seamlessly integrate with [ReScript](https://rescript-lang.org/) (previously known as BuckleScript/ReasonML) and [rescript-react](https://rescript-lang.org/docs/react/latest/introduction) 23 | - Routing - ReScript React [Router](https://rescript-lang.org/docs/react/latest/router) 24 | 25 | # Getting started 26 | 27 | You can view a live demo over at https://rescript-react-realworld-example-app.vercel.app 28 | 29 | To get the frontend running locally: 30 | 31 | ```bash 32 | git clone https://github.com/jihchi/rescript-react-realworld-example-app.git 33 | cd rescript-react-realworld-example-app 34 | pnpm install 35 | pnpm start 36 | ``` 37 | 38 | Then open http://localhost:5173 to see your app. 39 | 40 | When you’re ready to deploy to production, create a production build with `pnpm run build` and you will find result in folder `/dist`, after you created a production build, you can execute `pnpm run serve` to serve the folder. 41 | 42 | ## Contributors 43 | 44 | Many thanks for your help! 45 | 46 | 47 | 48 | 49 | 50 | The image of contributors is made with [contrib.rocks](https://contrib.rocks). 51 | -------------------------------------------------------------------------------- /bsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rescript-react-realworld-example-app", 3 | "namespace": true, 4 | "suffix": ".bs.js", 5 | "jsx": { 6 | "version": 4, 7 | "mode": "automatic" 8 | }, 9 | "bsc-flags": [ 10 | "-bs-super-errors", 11 | "-bs-no-version-header", 12 | "-open RescriptCore" 13 | ], 14 | "sources": { 15 | "dir": "src", 16 | "subdirs": true 17 | }, 18 | "package-specs": [ 19 | { 20 | "module": "es6", 21 | "in-source": true 22 | } 23 | ], 24 | "bs-dependencies": [ 25 | "@glennsl/rescript-fetch", 26 | "@rescript/core", 27 | "@rescript/react", 28 | "rescript-webapi" 29 | ], 30 | "bs-dev-dependencies": [] 31 | } 32 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Conduit 10 | 11 | 17 | 23 | 24 | 25 | 30 | 67 | 68 | 69 | 70 |
71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihchi/rescript-react-realworld-example-app/39e136f7666b0b3871c9c1e4bcd1839cd879b41b/logo.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rescript-react-realworld-example-app", 3 | "version": "1.0.0", 4 | "keywords": [ 5 | "ReasonML", 6 | "BuckleScript", 7 | "reason-react", 8 | "ReScript", 9 | "rescript-react", 10 | "react" 11 | ], 12 | "license": "MIT", 13 | "author": "Jihchi Lee ", 14 | "scripts": { 15 | "build": "vite build", 16 | "clean": "rescript clean", 17 | "format": "npm run format:js && npm run format:res", 18 | "format:js": "prettier --write \"**/*.{js,json,md,yml}\"", 19 | "format:res": "rescript format -all", 20 | "serve": "vite preview", 21 | "start": "vite", 22 | "test": "echo \"Error: no test specified\" && exit 1" 23 | }, 24 | "browserslist": { 25 | "production": [ 26 | ">0.2%", 27 | "not dead", 28 | "not op_mini all" 29 | ], 30 | "development": [ 31 | "last 1 chrome version", 32 | "last 1 firefox version", 33 | "last 1 safari version" 34 | ] 35 | }, 36 | "prettier": { 37 | "singleQuote": true, 38 | "trailingComma": "es5" 39 | }, 40 | "dependencies": { 41 | "@glennsl/rescript-fetch": "^0.2.0", 42 | "@rescript/core": "^0.5.0", 43 | "@rescript/react": "^0.11.0", 44 | "dompurify": "^3.0.5", 45 | "marked": "^9.0.3", 46 | "react": "^18.2.0", 47 | "react-dom": "^18.2.0", 48 | "rescript-webapi": "^0.9.0" 49 | }, 50 | "devDependencies": { 51 | "@jihchi/vite-plugin-rescript": "^7.0.0", 52 | "@vitejs/plugin-react": "^4.3.4", 53 | "prettier": "^3.0.3", 54 | "rescript": "11.0.0-alpha.6", 55 | "vite": "^6.2.2" 56 | }, 57 | "packageManager": "pnpm@10.6.5+sha512.cdf928fca20832cd59ec53826492b7dc25dc524d4370b6b4adbf65803d32efaa6c1c88147c0ae4e8d579a6c9eec715757b50d4fa35eea179d868eada4ed043af", 58 | "engines": { 59 | "node": "^18" 60 | }, 61 | "pnpm": { 62 | "onlyBuiltDependencies": [ 63 | "esbuild", 64 | "rescript" 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@glennsl/rescript-fetch': 12 | specifier: ^0.2.0 13 | version: 0.2.3 14 | '@rescript/core': 15 | specifier: ^0.5.0 16 | version: 0.5.0(rescript@11.0.0-alpha.6) 17 | '@rescript/react': 18 | specifier: ^0.11.0 19 | version: 0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 20 | dompurify: 21 | specifier: ^3.0.5 22 | version: 3.2.4 23 | marked: 24 | specifier: ^9.0.3 25 | version: 9.1.6 26 | react: 27 | specifier: ^18.2.0 28 | version: 18.3.1 29 | react-dom: 30 | specifier: ^18.2.0 31 | version: 18.3.1(react@18.3.1) 32 | rescript-webapi: 33 | specifier: ^0.9.0 34 | version: 0.9.1 35 | devDependencies: 36 | '@jihchi/vite-plugin-rescript': 37 | specifier: ^7.0.0 38 | version: 7.0.0(rescript@11.0.0-alpha.6)(vite@6.2.2) 39 | '@vitejs/plugin-react': 40 | specifier: ^4.3.4 41 | version: 4.3.4(vite@6.2.2) 42 | prettier: 43 | specifier: ^3.0.3 44 | version: 3.5.3 45 | rescript: 46 | specifier: 11.0.0-alpha.6 47 | version: 11.0.0-alpha.6 48 | vite: 49 | specifier: ^6.2.2 50 | version: 6.2.2 51 | 52 | packages: 53 | 54 | '@ampproject/remapping@2.3.0': 55 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 56 | engines: {node: '>=6.0.0'} 57 | 58 | '@babel/code-frame@7.26.2': 59 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 60 | engines: {node: '>=6.9.0'} 61 | 62 | '@babel/compat-data@7.26.8': 63 | resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} 64 | engines: {node: '>=6.9.0'} 65 | 66 | '@babel/core@7.26.10': 67 | resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} 68 | engines: {node: '>=6.9.0'} 69 | 70 | '@babel/generator@7.26.10': 71 | resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} 72 | engines: {node: '>=6.9.0'} 73 | 74 | '@babel/helper-compilation-targets@7.26.5': 75 | resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} 76 | engines: {node: '>=6.9.0'} 77 | 78 | '@babel/helper-module-imports@7.25.9': 79 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 80 | engines: {node: '>=6.9.0'} 81 | 82 | '@babel/helper-module-transforms@7.26.0': 83 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 84 | engines: {node: '>=6.9.0'} 85 | peerDependencies: 86 | '@babel/core': ^7.0.0 87 | 88 | '@babel/helper-plugin-utils@7.26.5': 89 | resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 90 | engines: {node: '>=6.9.0'} 91 | 92 | '@babel/helper-string-parser@7.25.9': 93 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 94 | engines: {node: '>=6.9.0'} 95 | 96 | '@babel/helper-validator-identifier@7.25.9': 97 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 98 | engines: {node: '>=6.9.0'} 99 | 100 | '@babel/helper-validator-option@7.25.9': 101 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 102 | engines: {node: '>=6.9.0'} 103 | 104 | '@babel/helpers@7.26.10': 105 | resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} 106 | engines: {node: '>=6.9.0'} 107 | 108 | '@babel/parser@7.26.10': 109 | resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==} 110 | engines: {node: '>=6.0.0'} 111 | hasBin: true 112 | 113 | '@babel/plugin-transform-react-jsx-self@7.25.9': 114 | resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} 115 | engines: {node: '>=6.9.0'} 116 | peerDependencies: 117 | '@babel/core': ^7.0.0-0 118 | 119 | '@babel/plugin-transform-react-jsx-source@7.25.9': 120 | resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} 121 | engines: {node: '>=6.9.0'} 122 | peerDependencies: 123 | '@babel/core': ^7.0.0-0 124 | 125 | '@babel/template@7.26.9': 126 | resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} 127 | engines: {node: '>=6.9.0'} 128 | 129 | '@babel/traverse@7.26.10': 130 | resolution: {integrity: sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==} 131 | engines: {node: '>=6.9.0'} 132 | 133 | '@babel/types@7.26.10': 134 | resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==} 135 | engines: {node: '>=6.9.0'} 136 | 137 | '@esbuild/aix-ppc64@0.25.1': 138 | resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} 139 | engines: {node: '>=18'} 140 | cpu: [ppc64] 141 | os: [aix] 142 | 143 | '@esbuild/android-arm64@0.25.1': 144 | resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} 145 | engines: {node: '>=18'} 146 | cpu: [arm64] 147 | os: [android] 148 | 149 | '@esbuild/android-arm@0.25.1': 150 | resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} 151 | engines: {node: '>=18'} 152 | cpu: [arm] 153 | os: [android] 154 | 155 | '@esbuild/android-x64@0.25.1': 156 | resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} 157 | engines: {node: '>=18'} 158 | cpu: [x64] 159 | os: [android] 160 | 161 | '@esbuild/darwin-arm64@0.25.1': 162 | resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} 163 | engines: {node: '>=18'} 164 | cpu: [arm64] 165 | os: [darwin] 166 | 167 | '@esbuild/darwin-x64@0.25.1': 168 | resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} 169 | engines: {node: '>=18'} 170 | cpu: [x64] 171 | os: [darwin] 172 | 173 | '@esbuild/freebsd-arm64@0.25.1': 174 | resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} 175 | engines: {node: '>=18'} 176 | cpu: [arm64] 177 | os: [freebsd] 178 | 179 | '@esbuild/freebsd-x64@0.25.1': 180 | resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} 181 | engines: {node: '>=18'} 182 | cpu: [x64] 183 | os: [freebsd] 184 | 185 | '@esbuild/linux-arm64@0.25.1': 186 | resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} 187 | engines: {node: '>=18'} 188 | cpu: [arm64] 189 | os: [linux] 190 | 191 | '@esbuild/linux-arm@0.25.1': 192 | resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} 193 | engines: {node: '>=18'} 194 | cpu: [arm] 195 | os: [linux] 196 | 197 | '@esbuild/linux-ia32@0.25.1': 198 | resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} 199 | engines: {node: '>=18'} 200 | cpu: [ia32] 201 | os: [linux] 202 | 203 | '@esbuild/linux-loong64@0.25.1': 204 | resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} 205 | engines: {node: '>=18'} 206 | cpu: [loong64] 207 | os: [linux] 208 | 209 | '@esbuild/linux-mips64el@0.25.1': 210 | resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} 211 | engines: {node: '>=18'} 212 | cpu: [mips64el] 213 | os: [linux] 214 | 215 | '@esbuild/linux-ppc64@0.25.1': 216 | resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} 217 | engines: {node: '>=18'} 218 | cpu: [ppc64] 219 | os: [linux] 220 | 221 | '@esbuild/linux-riscv64@0.25.1': 222 | resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} 223 | engines: {node: '>=18'} 224 | cpu: [riscv64] 225 | os: [linux] 226 | 227 | '@esbuild/linux-s390x@0.25.1': 228 | resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} 229 | engines: {node: '>=18'} 230 | cpu: [s390x] 231 | os: [linux] 232 | 233 | '@esbuild/linux-x64@0.25.1': 234 | resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} 235 | engines: {node: '>=18'} 236 | cpu: [x64] 237 | os: [linux] 238 | 239 | '@esbuild/netbsd-arm64@0.25.1': 240 | resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} 241 | engines: {node: '>=18'} 242 | cpu: [arm64] 243 | os: [netbsd] 244 | 245 | '@esbuild/netbsd-x64@0.25.1': 246 | resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} 247 | engines: {node: '>=18'} 248 | cpu: [x64] 249 | os: [netbsd] 250 | 251 | '@esbuild/openbsd-arm64@0.25.1': 252 | resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} 253 | engines: {node: '>=18'} 254 | cpu: [arm64] 255 | os: [openbsd] 256 | 257 | '@esbuild/openbsd-x64@0.25.1': 258 | resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} 259 | engines: {node: '>=18'} 260 | cpu: [x64] 261 | os: [openbsd] 262 | 263 | '@esbuild/sunos-x64@0.25.1': 264 | resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} 265 | engines: {node: '>=18'} 266 | cpu: [x64] 267 | os: [sunos] 268 | 269 | '@esbuild/win32-arm64@0.25.1': 270 | resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} 271 | engines: {node: '>=18'} 272 | cpu: [arm64] 273 | os: [win32] 274 | 275 | '@esbuild/win32-ia32@0.25.1': 276 | resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} 277 | engines: {node: '>=18'} 278 | cpu: [ia32] 279 | os: [win32] 280 | 281 | '@esbuild/win32-x64@0.25.1': 282 | resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} 283 | engines: {node: '>=18'} 284 | cpu: [x64] 285 | os: [win32] 286 | 287 | '@glennsl/rescript-fetch@0.2.3': 288 | resolution: {integrity: sha512-0MuaXeJHGii0/SKzR4ASB1Wal+ogdnNsD1K6HSTFUVc+TQzAZY+V8Nb7Z8K4OUqMJzmurIgVXNmirx3DC1Huyg==} 289 | 290 | '@jihchi/vite-plugin-rescript@7.0.0': 291 | resolution: {integrity: sha512-BwfFY1hAKE3OP6Ni1wGm9KYors9itbcgkiCe++Ll3XEM9UyrGzVeoIkLOFQJONXkdwRpbDW1HpQnGRbJDgTKJA==} 292 | engines: {node: '>=18.0'} 293 | peerDependencies: 294 | rescript: '>=9' 295 | vite: '>=5.1.0' 296 | 297 | '@jridgewell/gen-mapping@0.3.8': 298 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 299 | engines: {node: '>=6.0.0'} 300 | 301 | '@jridgewell/resolve-uri@3.1.2': 302 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 303 | engines: {node: '>=6.0.0'} 304 | 305 | '@jridgewell/set-array@1.2.1': 306 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 307 | engines: {node: '>=6.0.0'} 308 | 309 | '@jridgewell/sourcemap-codec@1.5.0': 310 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 311 | 312 | '@jridgewell/trace-mapping@0.3.25': 313 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 314 | 315 | '@rescript/core@0.5.0': 316 | resolution: {integrity: sha512-Keqnpi+8VqyhCk/3aMwar8hJbNy2IsINAAfIFeQC65IIegCR0QXFDBpQxfVcmbbtoHq6HnW4B3RLm/9GCUJQhQ==} 317 | peerDependencies: 318 | rescript: ^10.1.0 || ^11.0.0-alpha.0 || next 319 | 320 | '@rescript/react@0.11.0': 321 | resolution: {integrity: sha512-RzoAO+3cJwXE2D7yodMo4tBO2EkeDYCN/I/Sj/yRweI3S1CY1ZBOF/GMcVtjeIurJJt7KMveqQXTaRrqoGZBBg==} 322 | peerDependencies: 323 | react: '>=18.0.0' 324 | react-dom: '>=18.0.0' 325 | 326 | '@rollup/rollup-android-arm-eabi@4.36.0': 327 | resolution: {integrity: sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==} 328 | cpu: [arm] 329 | os: [android] 330 | 331 | '@rollup/rollup-android-arm64@4.36.0': 332 | resolution: {integrity: sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==} 333 | cpu: [arm64] 334 | os: [android] 335 | 336 | '@rollup/rollup-darwin-arm64@4.36.0': 337 | resolution: {integrity: sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==} 338 | cpu: [arm64] 339 | os: [darwin] 340 | 341 | '@rollup/rollup-darwin-x64@4.36.0': 342 | resolution: {integrity: sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==} 343 | cpu: [x64] 344 | os: [darwin] 345 | 346 | '@rollup/rollup-freebsd-arm64@4.36.0': 347 | resolution: {integrity: sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==} 348 | cpu: [arm64] 349 | os: [freebsd] 350 | 351 | '@rollup/rollup-freebsd-x64@4.36.0': 352 | resolution: {integrity: sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==} 353 | cpu: [x64] 354 | os: [freebsd] 355 | 356 | '@rollup/rollup-linux-arm-gnueabihf@4.36.0': 357 | resolution: {integrity: sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==} 358 | cpu: [arm] 359 | os: [linux] 360 | 361 | '@rollup/rollup-linux-arm-musleabihf@4.36.0': 362 | resolution: {integrity: sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==} 363 | cpu: [arm] 364 | os: [linux] 365 | 366 | '@rollup/rollup-linux-arm64-gnu@4.36.0': 367 | resolution: {integrity: sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==} 368 | cpu: [arm64] 369 | os: [linux] 370 | 371 | '@rollup/rollup-linux-arm64-musl@4.36.0': 372 | resolution: {integrity: sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==} 373 | cpu: [arm64] 374 | os: [linux] 375 | 376 | '@rollup/rollup-linux-loongarch64-gnu@4.36.0': 377 | resolution: {integrity: sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==} 378 | cpu: [loong64] 379 | os: [linux] 380 | 381 | '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': 382 | resolution: {integrity: sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==} 383 | cpu: [ppc64] 384 | os: [linux] 385 | 386 | '@rollup/rollup-linux-riscv64-gnu@4.36.0': 387 | resolution: {integrity: sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==} 388 | cpu: [riscv64] 389 | os: [linux] 390 | 391 | '@rollup/rollup-linux-s390x-gnu@4.36.0': 392 | resolution: {integrity: sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==} 393 | cpu: [s390x] 394 | os: [linux] 395 | 396 | '@rollup/rollup-linux-x64-gnu@4.36.0': 397 | resolution: {integrity: sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==} 398 | cpu: [x64] 399 | os: [linux] 400 | 401 | '@rollup/rollup-linux-x64-musl@4.36.0': 402 | resolution: {integrity: sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==} 403 | cpu: [x64] 404 | os: [linux] 405 | 406 | '@rollup/rollup-win32-arm64-msvc@4.36.0': 407 | resolution: {integrity: sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==} 408 | cpu: [arm64] 409 | os: [win32] 410 | 411 | '@rollup/rollup-win32-ia32-msvc@4.36.0': 412 | resolution: {integrity: sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==} 413 | cpu: [ia32] 414 | os: [win32] 415 | 416 | '@rollup/rollup-win32-x64-msvc@4.36.0': 417 | resolution: {integrity: sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==} 418 | cpu: [x64] 419 | os: [win32] 420 | 421 | '@sec-ant/readable-stream@0.4.1': 422 | resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} 423 | 424 | '@sindresorhus/merge-streams@4.0.0': 425 | resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 426 | engines: {node: '>=18'} 427 | 428 | '@types/babel__core@7.20.5': 429 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 430 | 431 | '@types/babel__generator@7.6.8': 432 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 433 | 434 | '@types/babel__template@7.4.4': 435 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 436 | 437 | '@types/babel__traverse@7.20.6': 438 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 439 | 440 | '@types/estree@1.0.6': 441 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 442 | 443 | '@types/trusted-types@2.0.7': 444 | resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} 445 | 446 | '@vitejs/plugin-react@4.3.4': 447 | resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} 448 | engines: {node: ^14.18.0 || >=16.0.0} 449 | peerDependencies: 450 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 451 | 452 | browserslist@4.24.4: 453 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 454 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 455 | hasBin: true 456 | 457 | caniuse-lite@1.0.30001706: 458 | resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} 459 | 460 | chalk@5.4.1: 461 | resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 462 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 463 | 464 | convert-source-map@2.0.0: 465 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 466 | 467 | cross-spawn@7.0.6: 468 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 469 | engines: {node: '>= 8'} 470 | 471 | debug@4.4.0: 472 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 473 | engines: {node: '>=6.0'} 474 | peerDependencies: 475 | supports-color: '*' 476 | peerDependenciesMeta: 477 | supports-color: 478 | optional: true 479 | 480 | dompurify@3.2.4: 481 | resolution: {integrity: sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==} 482 | 483 | electron-to-chromium@1.5.123: 484 | resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} 485 | 486 | esbuild@0.25.1: 487 | resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} 488 | engines: {node: '>=18'} 489 | hasBin: true 490 | 491 | escalade@3.2.0: 492 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 493 | engines: {node: '>=6'} 494 | 495 | execa@9.5.2: 496 | resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} 497 | engines: {node: ^18.19.0 || >=20.5.0} 498 | 499 | figures@6.1.0: 500 | resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} 501 | engines: {node: '>=18'} 502 | 503 | fsevents@2.3.3: 504 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 505 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 506 | os: [darwin] 507 | 508 | gensync@1.0.0-beta.2: 509 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 510 | engines: {node: '>=6.9.0'} 511 | 512 | get-stream@9.0.1: 513 | resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 514 | engines: {node: '>=18'} 515 | 516 | globals@11.12.0: 517 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 518 | engines: {node: '>=4'} 519 | 520 | human-signals@8.0.0: 521 | resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} 522 | engines: {node: '>=18.18.0'} 523 | 524 | is-plain-obj@4.1.0: 525 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 526 | engines: {node: '>=12'} 527 | 528 | is-stream@4.0.1: 529 | resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 530 | engines: {node: '>=18'} 531 | 532 | is-unicode-supported@2.1.0: 533 | resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 534 | engines: {node: '>=18'} 535 | 536 | isexe@2.0.0: 537 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 538 | 539 | js-tokens@4.0.0: 540 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 541 | 542 | jsesc@3.1.0: 543 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 544 | engines: {node: '>=6'} 545 | hasBin: true 546 | 547 | json5@2.2.3: 548 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 549 | engines: {node: '>=6'} 550 | hasBin: true 551 | 552 | loose-envify@1.4.0: 553 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 554 | hasBin: true 555 | 556 | lru-cache@5.1.1: 557 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 558 | 559 | marked@9.1.6: 560 | resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} 561 | engines: {node: '>= 16'} 562 | hasBin: true 563 | 564 | ms@2.1.3: 565 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 566 | 567 | nanoid@3.3.11: 568 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 569 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 570 | hasBin: true 571 | 572 | node-releases@2.0.19: 573 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 574 | 575 | npm-run-path@6.0.0: 576 | resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} 577 | engines: {node: '>=18'} 578 | 579 | parse-ms@4.0.0: 580 | resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 581 | engines: {node: '>=18'} 582 | 583 | path-key@3.1.1: 584 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 585 | engines: {node: '>=8'} 586 | 587 | path-key@4.0.0: 588 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 589 | engines: {node: '>=12'} 590 | 591 | picocolors@1.1.1: 592 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 593 | 594 | postcss@8.5.3: 595 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 596 | engines: {node: ^10 || ^12 || >=14} 597 | 598 | prettier@3.5.3: 599 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 600 | engines: {node: '>=14'} 601 | hasBin: true 602 | 603 | pretty-ms@9.2.0: 604 | resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} 605 | engines: {node: '>=18'} 606 | 607 | react-dom@18.3.1: 608 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 609 | peerDependencies: 610 | react: ^18.3.1 611 | 612 | react-refresh@0.14.2: 613 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 614 | engines: {node: '>=0.10.0'} 615 | 616 | react@18.3.1: 617 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 618 | engines: {node: '>=0.10.0'} 619 | 620 | rescript-webapi@0.9.1: 621 | resolution: {integrity: sha512-6havxEsyCgcCB4EsH8ac2QpLVbv5Nv6IMjTIn6XifpU/bjgXEvMTpNJ78/JEKtSH6kFUeFV/T/QHPRSZb66Rew==} 622 | 623 | rescript@11.0.0-alpha.6: 624 | resolution: {integrity: sha512-516p5A+ybndzdxjKbOVJNrSd+p+U3FZ5Lm9U7SfGREzJXKACY3e69dk9ey/wDO4fh6Ge8j+NIXhHOTjFhMx4sw==} 625 | engines: {node: '>=10'} 626 | hasBin: true 627 | 628 | rollup@4.36.0: 629 | resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==} 630 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 631 | hasBin: true 632 | 633 | scheduler@0.23.2: 634 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 635 | 636 | semver@6.3.1: 637 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 638 | hasBin: true 639 | 640 | shebang-command@2.0.0: 641 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 642 | engines: {node: '>=8'} 643 | 644 | shebang-regex@3.0.0: 645 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 646 | engines: {node: '>=8'} 647 | 648 | signal-exit@4.1.0: 649 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 650 | engines: {node: '>=14'} 651 | 652 | source-map-js@1.2.1: 653 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 654 | engines: {node: '>=0.10.0'} 655 | 656 | strip-final-newline@4.0.0: 657 | resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} 658 | engines: {node: '>=18'} 659 | 660 | unicorn-magic@0.3.0: 661 | resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} 662 | engines: {node: '>=18'} 663 | 664 | update-browserslist-db@1.1.3: 665 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 666 | hasBin: true 667 | peerDependencies: 668 | browserslist: '>= 4.21.0' 669 | 670 | vite@6.2.2: 671 | resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==} 672 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 673 | hasBin: true 674 | peerDependencies: 675 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 676 | jiti: '>=1.21.0' 677 | less: '*' 678 | lightningcss: ^1.21.0 679 | sass: '*' 680 | sass-embedded: '*' 681 | stylus: '*' 682 | sugarss: '*' 683 | terser: ^5.16.0 684 | tsx: ^4.8.1 685 | yaml: ^2.4.2 686 | peerDependenciesMeta: 687 | '@types/node': 688 | optional: true 689 | jiti: 690 | optional: true 691 | less: 692 | optional: true 693 | lightningcss: 694 | optional: true 695 | sass: 696 | optional: true 697 | sass-embedded: 698 | optional: true 699 | stylus: 700 | optional: true 701 | sugarss: 702 | optional: true 703 | terser: 704 | optional: true 705 | tsx: 706 | optional: true 707 | yaml: 708 | optional: true 709 | 710 | which@2.0.2: 711 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 712 | engines: {node: '>= 8'} 713 | hasBin: true 714 | 715 | yallist@3.1.1: 716 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 717 | 718 | yoctocolors@2.1.1: 719 | resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} 720 | engines: {node: '>=18'} 721 | 722 | snapshots: 723 | 724 | '@ampproject/remapping@2.3.0': 725 | dependencies: 726 | '@jridgewell/gen-mapping': 0.3.8 727 | '@jridgewell/trace-mapping': 0.3.25 728 | 729 | '@babel/code-frame@7.26.2': 730 | dependencies: 731 | '@babel/helper-validator-identifier': 7.25.9 732 | js-tokens: 4.0.0 733 | picocolors: 1.1.1 734 | 735 | '@babel/compat-data@7.26.8': {} 736 | 737 | '@babel/core@7.26.10': 738 | dependencies: 739 | '@ampproject/remapping': 2.3.0 740 | '@babel/code-frame': 7.26.2 741 | '@babel/generator': 7.26.10 742 | '@babel/helper-compilation-targets': 7.26.5 743 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) 744 | '@babel/helpers': 7.26.10 745 | '@babel/parser': 7.26.10 746 | '@babel/template': 7.26.9 747 | '@babel/traverse': 7.26.10 748 | '@babel/types': 7.26.10 749 | convert-source-map: 2.0.0 750 | debug: 4.4.0 751 | gensync: 1.0.0-beta.2 752 | json5: 2.2.3 753 | semver: 6.3.1 754 | transitivePeerDependencies: 755 | - supports-color 756 | 757 | '@babel/generator@7.26.10': 758 | dependencies: 759 | '@babel/parser': 7.26.10 760 | '@babel/types': 7.26.10 761 | '@jridgewell/gen-mapping': 0.3.8 762 | '@jridgewell/trace-mapping': 0.3.25 763 | jsesc: 3.1.0 764 | 765 | '@babel/helper-compilation-targets@7.26.5': 766 | dependencies: 767 | '@babel/compat-data': 7.26.8 768 | '@babel/helper-validator-option': 7.25.9 769 | browserslist: 4.24.4 770 | lru-cache: 5.1.1 771 | semver: 6.3.1 772 | 773 | '@babel/helper-module-imports@7.25.9': 774 | dependencies: 775 | '@babel/traverse': 7.26.10 776 | '@babel/types': 7.26.10 777 | transitivePeerDependencies: 778 | - supports-color 779 | 780 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': 781 | dependencies: 782 | '@babel/core': 7.26.10 783 | '@babel/helper-module-imports': 7.25.9 784 | '@babel/helper-validator-identifier': 7.25.9 785 | '@babel/traverse': 7.26.10 786 | transitivePeerDependencies: 787 | - supports-color 788 | 789 | '@babel/helper-plugin-utils@7.26.5': {} 790 | 791 | '@babel/helper-string-parser@7.25.9': {} 792 | 793 | '@babel/helper-validator-identifier@7.25.9': {} 794 | 795 | '@babel/helper-validator-option@7.25.9': {} 796 | 797 | '@babel/helpers@7.26.10': 798 | dependencies: 799 | '@babel/template': 7.26.9 800 | '@babel/types': 7.26.10 801 | 802 | '@babel/parser@7.26.10': 803 | dependencies: 804 | '@babel/types': 7.26.10 805 | 806 | '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': 807 | dependencies: 808 | '@babel/core': 7.26.10 809 | '@babel/helper-plugin-utils': 7.26.5 810 | 811 | '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': 812 | dependencies: 813 | '@babel/core': 7.26.10 814 | '@babel/helper-plugin-utils': 7.26.5 815 | 816 | '@babel/template@7.26.9': 817 | dependencies: 818 | '@babel/code-frame': 7.26.2 819 | '@babel/parser': 7.26.10 820 | '@babel/types': 7.26.10 821 | 822 | '@babel/traverse@7.26.10': 823 | dependencies: 824 | '@babel/code-frame': 7.26.2 825 | '@babel/generator': 7.26.10 826 | '@babel/parser': 7.26.10 827 | '@babel/template': 7.26.9 828 | '@babel/types': 7.26.10 829 | debug: 4.4.0 830 | globals: 11.12.0 831 | transitivePeerDependencies: 832 | - supports-color 833 | 834 | '@babel/types@7.26.10': 835 | dependencies: 836 | '@babel/helper-string-parser': 7.25.9 837 | '@babel/helper-validator-identifier': 7.25.9 838 | 839 | '@esbuild/aix-ppc64@0.25.1': 840 | optional: true 841 | 842 | '@esbuild/android-arm64@0.25.1': 843 | optional: true 844 | 845 | '@esbuild/android-arm@0.25.1': 846 | optional: true 847 | 848 | '@esbuild/android-x64@0.25.1': 849 | optional: true 850 | 851 | '@esbuild/darwin-arm64@0.25.1': 852 | optional: true 853 | 854 | '@esbuild/darwin-x64@0.25.1': 855 | optional: true 856 | 857 | '@esbuild/freebsd-arm64@0.25.1': 858 | optional: true 859 | 860 | '@esbuild/freebsd-x64@0.25.1': 861 | optional: true 862 | 863 | '@esbuild/linux-arm64@0.25.1': 864 | optional: true 865 | 866 | '@esbuild/linux-arm@0.25.1': 867 | optional: true 868 | 869 | '@esbuild/linux-ia32@0.25.1': 870 | optional: true 871 | 872 | '@esbuild/linux-loong64@0.25.1': 873 | optional: true 874 | 875 | '@esbuild/linux-mips64el@0.25.1': 876 | optional: true 877 | 878 | '@esbuild/linux-ppc64@0.25.1': 879 | optional: true 880 | 881 | '@esbuild/linux-riscv64@0.25.1': 882 | optional: true 883 | 884 | '@esbuild/linux-s390x@0.25.1': 885 | optional: true 886 | 887 | '@esbuild/linux-x64@0.25.1': 888 | optional: true 889 | 890 | '@esbuild/netbsd-arm64@0.25.1': 891 | optional: true 892 | 893 | '@esbuild/netbsd-x64@0.25.1': 894 | optional: true 895 | 896 | '@esbuild/openbsd-arm64@0.25.1': 897 | optional: true 898 | 899 | '@esbuild/openbsd-x64@0.25.1': 900 | optional: true 901 | 902 | '@esbuild/sunos-x64@0.25.1': 903 | optional: true 904 | 905 | '@esbuild/win32-arm64@0.25.1': 906 | optional: true 907 | 908 | '@esbuild/win32-ia32@0.25.1': 909 | optional: true 910 | 911 | '@esbuild/win32-x64@0.25.1': 912 | optional: true 913 | 914 | '@glennsl/rescript-fetch@0.2.3': {} 915 | 916 | '@jihchi/vite-plugin-rescript@7.0.0(rescript@11.0.0-alpha.6)(vite@6.2.2)': 917 | dependencies: 918 | chalk: 5.4.1 919 | execa: 9.5.2 920 | npm-run-path: 6.0.0 921 | rescript: 11.0.0-alpha.6 922 | vite: 6.2.2 923 | 924 | '@jridgewell/gen-mapping@0.3.8': 925 | dependencies: 926 | '@jridgewell/set-array': 1.2.1 927 | '@jridgewell/sourcemap-codec': 1.5.0 928 | '@jridgewell/trace-mapping': 0.3.25 929 | 930 | '@jridgewell/resolve-uri@3.1.2': {} 931 | 932 | '@jridgewell/set-array@1.2.1': {} 933 | 934 | '@jridgewell/sourcemap-codec@1.5.0': {} 935 | 936 | '@jridgewell/trace-mapping@0.3.25': 937 | dependencies: 938 | '@jridgewell/resolve-uri': 3.1.2 939 | '@jridgewell/sourcemap-codec': 1.5.0 940 | 941 | '@rescript/core@0.5.0(rescript@11.0.0-alpha.6)': 942 | dependencies: 943 | rescript: 11.0.0-alpha.6 944 | 945 | '@rescript/react@0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 946 | dependencies: 947 | react: 18.3.1 948 | react-dom: 18.3.1(react@18.3.1) 949 | 950 | '@rollup/rollup-android-arm-eabi@4.36.0': 951 | optional: true 952 | 953 | '@rollup/rollup-android-arm64@4.36.0': 954 | optional: true 955 | 956 | '@rollup/rollup-darwin-arm64@4.36.0': 957 | optional: true 958 | 959 | '@rollup/rollup-darwin-x64@4.36.0': 960 | optional: true 961 | 962 | '@rollup/rollup-freebsd-arm64@4.36.0': 963 | optional: true 964 | 965 | '@rollup/rollup-freebsd-x64@4.36.0': 966 | optional: true 967 | 968 | '@rollup/rollup-linux-arm-gnueabihf@4.36.0': 969 | optional: true 970 | 971 | '@rollup/rollup-linux-arm-musleabihf@4.36.0': 972 | optional: true 973 | 974 | '@rollup/rollup-linux-arm64-gnu@4.36.0': 975 | optional: true 976 | 977 | '@rollup/rollup-linux-arm64-musl@4.36.0': 978 | optional: true 979 | 980 | '@rollup/rollup-linux-loongarch64-gnu@4.36.0': 981 | optional: true 982 | 983 | '@rollup/rollup-linux-powerpc64le-gnu@4.36.0': 984 | optional: true 985 | 986 | '@rollup/rollup-linux-riscv64-gnu@4.36.0': 987 | optional: true 988 | 989 | '@rollup/rollup-linux-s390x-gnu@4.36.0': 990 | optional: true 991 | 992 | '@rollup/rollup-linux-x64-gnu@4.36.0': 993 | optional: true 994 | 995 | '@rollup/rollup-linux-x64-musl@4.36.0': 996 | optional: true 997 | 998 | '@rollup/rollup-win32-arm64-msvc@4.36.0': 999 | optional: true 1000 | 1001 | '@rollup/rollup-win32-ia32-msvc@4.36.0': 1002 | optional: true 1003 | 1004 | '@rollup/rollup-win32-x64-msvc@4.36.0': 1005 | optional: true 1006 | 1007 | '@sec-ant/readable-stream@0.4.1': {} 1008 | 1009 | '@sindresorhus/merge-streams@4.0.0': {} 1010 | 1011 | '@types/babel__core@7.20.5': 1012 | dependencies: 1013 | '@babel/parser': 7.26.10 1014 | '@babel/types': 7.26.10 1015 | '@types/babel__generator': 7.6.8 1016 | '@types/babel__template': 7.4.4 1017 | '@types/babel__traverse': 7.20.6 1018 | 1019 | '@types/babel__generator@7.6.8': 1020 | dependencies: 1021 | '@babel/types': 7.26.10 1022 | 1023 | '@types/babel__template@7.4.4': 1024 | dependencies: 1025 | '@babel/parser': 7.26.10 1026 | '@babel/types': 7.26.10 1027 | 1028 | '@types/babel__traverse@7.20.6': 1029 | dependencies: 1030 | '@babel/types': 7.26.10 1031 | 1032 | '@types/estree@1.0.6': {} 1033 | 1034 | '@types/trusted-types@2.0.7': 1035 | optional: true 1036 | 1037 | '@vitejs/plugin-react@4.3.4(vite@6.2.2)': 1038 | dependencies: 1039 | '@babel/core': 7.26.10 1040 | '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) 1041 | '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) 1042 | '@types/babel__core': 7.20.5 1043 | react-refresh: 0.14.2 1044 | vite: 6.2.2 1045 | transitivePeerDependencies: 1046 | - supports-color 1047 | 1048 | browserslist@4.24.4: 1049 | dependencies: 1050 | caniuse-lite: 1.0.30001706 1051 | electron-to-chromium: 1.5.123 1052 | node-releases: 2.0.19 1053 | update-browserslist-db: 1.1.3(browserslist@4.24.4) 1054 | 1055 | caniuse-lite@1.0.30001706: {} 1056 | 1057 | chalk@5.4.1: {} 1058 | 1059 | convert-source-map@2.0.0: {} 1060 | 1061 | cross-spawn@7.0.6: 1062 | dependencies: 1063 | path-key: 3.1.1 1064 | shebang-command: 2.0.0 1065 | which: 2.0.2 1066 | 1067 | debug@4.4.0: 1068 | dependencies: 1069 | ms: 2.1.3 1070 | 1071 | dompurify@3.2.4: 1072 | optionalDependencies: 1073 | '@types/trusted-types': 2.0.7 1074 | 1075 | electron-to-chromium@1.5.123: {} 1076 | 1077 | esbuild@0.25.1: 1078 | optionalDependencies: 1079 | '@esbuild/aix-ppc64': 0.25.1 1080 | '@esbuild/android-arm': 0.25.1 1081 | '@esbuild/android-arm64': 0.25.1 1082 | '@esbuild/android-x64': 0.25.1 1083 | '@esbuild/darwin-arm64': 0.25.1 1084 | '@esbuild/darwin-x64': 0.25.1 1085 | '@esbuild/freebsd-arm64': 0.25.1 1086 | '@esbuild/freebsd-x64': 0.25.1 1087 | '@esbuild/linux-arm': 0.25.1 1088 | '@esbuild/linux-arm64': 0.25.1 1089 | '@esbuild/linux-ia32': 0.25.1 1090 | '@esbuild/linux-loong64': 0.25.1 1091 | '@esbuild/linux-mips64el': 0.25.1 1092 | '@esbuild/linux-ppc64': 0.25.1 1093 | '@esbuild/linux-riscv64': 0.25.1 1094 | '@esbuild/linux-s390x': 0.25.1 1095 | '@esbuild/linux-x64': 0.25.1 1096 | '@esbuild/netbsd-arm64': 0.25.1 1097 | '@esbuild/netbsd-x64': 0.25.1 1098 | '@esbuild/openbsd-arm64': 0.25.1 1099 | '@esbuild/openbsd-x64': 0.25.1 1100 | '@esbuild/sunos-x64': 0.25.1 1101 | '@esbuild/win32-arm64': 0.25.1 1102 | '@esbuild/win32-ia32': 0.25.1 1103 | '@esbuild/win32-x64': 0.25.1 1104 | 1105 | escalade@3.2.0: {} 1106 | 1107 | execa@9.5.2: 1108 | dependencies: 1109 | '@sindresorhus/merge-streams': 4.0.0 1110 | cross-spawn: 7.0.6 1111 | figures: 6.1.0 1112 | get-stream: 9.0.1 1113 | human-signals: 8.0.0 1114 | is-plain-obj: 4.1.0 1115 | is-stream: 4.0.1 1116 | npm-run-path: 6.0.0 1117 | pretty-ms: 9.2.0 1118 | signal-exit: 4.1.0 1119 | strip-final-newline: 4.0.0 1120 | yoctocolors: 2.1.1 1121 | 1122 | figures@6.1.0: 1123 | dependencies: 1124 | is-unicode-supported: 2.1.0 1125 | 1126 | fsevents@2.3.3: 1127 | optional: true 1128 | 1129 | gensync@1.0.0-beta.2: {} 1130 | 1131 | get-stream@9.0.1: 1132 | dependencies: 1133 | '@sec-ant/readable-stream': 0.4.1 1134 | is-stream: 4.0.1 1135 | 1136 | globals@11.12.0: {} 1137 | 1138 | human-signals@8.0.0: {} 1139 | 1140 | is-plain-obj@4.1.0: {} 1141 | 1142 | is-stream@4.0.1: {} 1143 | 1144 | is-unicode-supported@2.1.0: {} 1145 | 1146 | isexe@2.0.0: {} 1147 | 1148 | js-tokens@4.0.0: {} 1149 | 1150 | jsesc@3.1.0: {} 1151 | 1152 | json5@2.2.3: {} 1153 | 1154 | loose-envify@1.4.0: 1155 | dependencies: 1156 | js-tokens: 4.0.0 1157 | 1158 | lru-cache@5.1.1: 1159 | dependencies: 1160 | yallist: 3.1.1 1161 | 1162 | marked@9.1.6: {} 1163 | 1164 | ms@2.1.3: {} 1165 | 1166 | nanoid@3.3.11: {} 1167 | 1168 | node-releases@2.0.19: {} 1169 | 1170 | npm-run-path@6.0.0: 1171 | dependencies: 1172 | path-key: 4.0.0 1173 | unicorn-magic: 0.3.0 1174 | 1175 | parse-ms@4.0.0: {} 1176 | 1177 | path-key@3.1.1: {} 1178 | 1179 | path-key@4.0.0: {} 1180 | 1181 | picocolors@1.1.1: {} 1182 | 1183 | postcss@8.5.3: 1184 | dependencies: 1185 | nanoid: 3.3.11 1186 | picocolors: 1.1.1 1187 | source-map-js: 1.2.1 1188 | 1189 | prettier@3.5.3: {} 1190 | 1191 | pretty-ms@9.2.0: 1192 | dependencies: 1193 | parse-ms: 4.0.0 1194 | 1195 | react-dom@18.3.1(react@18.3.1): 1196 | dependencies: 1197 | loose-envify: 1.4.0 1198 | react: 18.3.1 1199 | scheduler: 0.23.2 1200 | 1201 | react-refresh@0.14.2: {} 1202 | 1203 | react@18.3.1: 1204 | dependencies: 1205 | loose-envify: 1.4.0 1206 | 1207 | rescript-webapi@0.9.1: {} 1208 | 1209 | rescript@11.0.0-alpha.6: {} 1210 | 1211 | rollup@4.36.0: 1212 | dependencies: 1213 | '@types/estree': 1.0.6 1214 | optionalDependencies: 1215 | '@rollup/rollup-android-arm-eabi': 4.36.0 1216 | '@rollup/rollup-android-arm64': 4.36.0 1217 | '@rollup/rollup-darwin-arm64': 4.36.0 1218 | '@rollup/rollup-darwin-x64': 4.36.0 1219 | '@rollup/rollup-freebsd-arm64': 4.36.0 1220 | '@rollup/rollup-freebsd-x64': 4.36.0 1221 | '@rollup/rollup-linux-arm-gnueabihf': 4.36.0 1222 | '@rollup/rollup-linux-arm-musleabihf': 4.36.0 1223 | '@rollup/rollup-linux-arm64-gnu': 4.36.0 1224 | '@rollup/rollup-linux-arm64-musl': 4.36.0 1225 | '@rollup/rollup-linux-loongarch64-gnu': 4.36.0 1226 | '@rollup/rollup-linux-powerpc64le-gnu': 4.36.0 1227 | '@rollup/rollup-linux-riscv64-gnu': 4.36.0 1228 | '@rollup/rollup-linux-s390x-gnu': 4.36.0 1229 | '@rollup/rollup-linux-x64-gnu': 4.36.0 1230 | '@rollup/rollup-linux-x64-musl': 4.36.0 1231 | '@rollup/rollup-win32-arm64-msvc': 4.36.0 1232 | '@rollup/rollup-win32-ia32-msvc': 4.36.0 1233 | '@rollup/rollup-win32-x64-msvc': 4.36.0 1234 | fsevents: 2.3.3 1235 | 1236 | scheduler@0.23.2: 1237 | dependencies: 1238 | loose-envify: 1.4.0 1239 | 1240 | semver@6.3.1: {} 1241 | 1242 | shebang-command@2.0.0: 1243 | dependencies: 1244 | shebang-regex: 3.0.0 1245 | 1246 | shebang-regex@3.0.0: {} 1247 | 1248 | signal-exit@4.1.0: {} 1249 | 1250 | source-map-js@1.2.1: {} 1251 | 1252 | strip-final-newline@4.0.0: {} 1253 | 1254 | unicorn-magic@0.3.0: {} 1255 | 1256 | update-browserslist-db@1.1.3(browserslist@4.24.4): 1257 | dependencies: 1258 | browserslist: 4.24.4 1259 | escalade: 3.2.0 1260 | picocolors: 1.1.1 1261 | 1262 | vite@6.2.2: 1263 | dependencies: 1264 | esbuild: 0.25.1 1265 | postcss: 8.5.3 1266 | rollup: 4.36.0 1267 | optionalDependencies: 1268 | fsevents: 2.3.3 1269 | 1270 | which@2.0.2: 1271 | dependencies: 1272 | isexe: 2.0.0 1273 | 1274 | yallist@3.1.1: {} 1275 | 1276 | yoctocolors@2.1.1: {} 1277 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /src/App.res: -------------------------------------------------------------------------------- 1 | let authenticated: (Shape.User.t => React.element, option) => React.element = ( 2 | getPage, 3 | user, 4 | ) => 5 | switch user { 6 | | Some(s) => getPage(s) 7 | | None => 8 | Link.home->Link.push 9 | React.null 10 | } 11 | 12 | @react.component 13 | let make = () => { 14 | let (currentUser, setCurrentUser) = Hook.useCurrentUser() 15 | let route = Route.useRoute() 16 | 17 | switch currentUser { 18 | | Init | Loading => React.null 19 | | Reloading(user) | Complete(user) => 20 | <> 21 |
22 | {switch route { 23 | | Settings => authenticated(user => , user) 24 | | Login => 25 | | Register => 26 | | CreateArticle => authenticated(_user => , user) 27 | | EditArticle(slug) => authenticated(_user => , user) 28 | | Article(slug) =>
29 | | Profile(username) => 30 | | Favorited(username) => 31 | | Home => 32 | }} 33 |