├── .gitignore ├── .idea ├── .gitignore ├── flowmaid.iml ├── modules.xml ├── prettier.xml └── vcs.xml ├── .nvmrc ├── LICENSE ├── README.md ├── env.template ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── brand │ ├── logo-rounded.png │ ├── logo.png │ └── logo_text.png ├── favicon.ico └── favicon │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ └── site.webmanifest ├── src ├── components │ ├── mermaid.tsx │ ├── nav.tsx │ └── select-template.tsx ├── lib │ ├── generate.ts │ ├── helpers.ts │ ├── prompt-by-template.ts │ └── syntax │ │ ├── class.md │ │ ├── entityrelationship.md │ │ ├── flowchart.md │ │ ├── mindmap.md │ │ ├── sequence.md │ │ ├── state.md │ │ ├── timeline.md │ │ └── userjourney.md ├── pages │ ├── _app.tsx │ ├── _document.tsx │ ├── api │ │ └── ask.ts │ └── index.tsx └── styles │ └── globals.css ├── tailwind.config.js ├── tsconfig.json └── yarn.lock /.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 | .pnpm-debug.log* 27 | 28 | # local env files 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.idea/flowmaid.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/prettier.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v18.10.0 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Niloy 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 |
2 | Superkey logo 3 |

4 |

FlowGPT is a tool to generate flowchart with ai (gpt-3.5)

5 |

Made with ❤️ by @nilooy 🧑‍💻

6 | 7 | 8 | 9 |
10 | 11 | 12 | ![Copy of update flowgpt - 14 Apr 23](https://user-images.githubusercontent.com/32486682/232072495-9445eda4-f134-47e0-b2c1-2c359581e020.gif) 13 | 14 | 15 | ## Built With 16 | 17 | - Next.js 18 | - langchain 19 | - Mermaid (https://github.com/mermaid-js/mermaid) 20 | - DaisyUI 21 | 22 | ## Requirements 23 | 1. Node Version >= 18 24 | 2. OpenAI API Key 25 | 26 | ## Installation 27 | 28 | 1. Clone the Repo 29 | 30 | 2. rename the `env.template` to `.env.local` and OPENAI_API_KEY 31 | 32 | 2. `cd` into the folder 33 | ```sh 34 | cd flowgpt 35 | ``` 36 | 37 | 3. Install all deps with yarn 38 | ```sh 39 | yarn 40 | ``` 41 | 42 | 4. Run in development mode 43 | ```sh 44 | yarn dev 45 | ``` 46 | 47 | 5. Open browser and go to http://localhost:3000 48 | 49 | 50 | ## Contribution 51 | it's a pretty new tool, Lots of room for improvement, feel free to contribute. 52 | 53 | ## Roadmap 54 | 55 | - Automatic syntax error detection and retry with history 56 | - OpenAI API KEY modal to insert from the UI 57 | - Save flowcharts on localStorage 58 | - Animated Flowchart Generation (exportable as video) 59 | 60 | 61 | 62 | ## Updates will be posted here 63 | [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/nil_ooy.svg?style=social&label=Follow%20%40nil_ooy)](https://twitter.com/nil_ooy) 64 | -------------------------------------------------------------------------------- /env.template: -------------------------------------------------------------------------------- 1 | OPENAI_API_KEY= -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | swcMinify: true, 5 | eslint: { 6 | ignoreDuringBuilds: true, // FIXME 7 | }, 8 | typescript: { 9 | ignoreBuildErrors: true, // FIXME 10 | }, 11 | webpack(config) { 12 | config.experiments = { ...config.experiments, topLevelAwait: true }; 13 | config.module.rules.push({ 14 | test: /\.md$/, 15 | use: "raw-loader", 16 | }); 17 | return config; 18 | }, 19 | }; 20 | 21 | module.exports = nextConfig; 22 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flowmain", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "flowmain", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "@types/node": "18.15.11", 12 | "@types/react": "18.0.33", 13 | "@types/react-dom": "18.0.11", 14 | "next": "13.3.0", 15 | "react": "18.2.0", 16 | "react-dom": "18.2.0", 17 | "typescript": "5.0.4" 18 | } 19 | }, 20 | "node_modules/@next/env": { 21 | "version": "13.3.0", 22 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", 23 | "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" 24 | }, 25 | "node_modules/@next/swc-darwin-arm64": { 26 | "version": "13.3.0", 27 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", 28 | "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", 29 | "cpu": [ 30 | "arm64" 31 | ], 32 | "optional": true, 33 | "os": [ 34 | "darwin" 35 | ], 36 | "engines": { 37 | "node": ">= 10" 38 | } 39 | }, 40 | "node_modules/@next/swc-darwin-x64": { 41 | "version": "13.3.0", 42 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", 43 | "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", 44 | "cpu": [ 45 | "x64" 46 | ], 47 | "optional": true, 48 | "os": [ 49 | "darwin" 50 | ], 51 | "engines": { 52 | "node": ">= 10" 53 | } 54 | }, 55 | "node_modules/@next/swc-linux-arm64-gnu": { 56 | "version": "13.3.0", 57 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", 58 | "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", 59 | "cpu": [ 60 | "arm64" 61 | ], 62 | "optional": true, 63 | "os": [ 64 | "linux" 65 | ], 66 | "engines": { 67 | "node": ">= 10" 68 | } 69 | }, 70 | "node_modules/@next/swc-linux-arm64-musl": { 71 | "version": "13.3.0", 72 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", 73 | "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", 74 | "cpu": [ 75 | "arm64" 76 | ], 77 | "optional": true, 78 | "os": [ 79 | "linux" 80 | ], 81 | "engines": { 82 | "node": ">= 10" 83 | } 84 | }, 85 | "node_modules/@next/swc-linux-x64-gnu": { 86 | "version": "13.3.0", 87 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", 88 | "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", 89 | "cpu": [ 90 | "x64" 91 | ], 92 | "optional": true, 93 | "os": [ 94 | "linux" 95 | ], 96 | "engines": { 97 | "node": ">= 10" 98 | } 99 | }, 100 | "node_modules/@next/swc-linux-x64-musl": { 101 | "version": "13.3.0", 102 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", 103 | "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", 104 | "cpu": [ 105 | "x64" 106 | ], 107 | "optional": true, 108 | "os": [ 109 | "linux" 110 | ], 111 | "engines": { 112 | "node": ">= 10" 113 | } 114 | }, 115 | "node_modules/@next/swc-win32-arm64-msvc": { 116 | "version": "13.3.0", 117 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", 118 | "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", 119 | "cpu": [ 120 | "arm64" 121 | ], 122 | "optional": true, 123 | "os": [ 124 | "win32" 125 | ], 126 | "engines": { 127 | "node": ">= 10" 128 | } 129 | }, 130 | "node_modules/@next/swc-win32-ia32-msvc": { 131 | "version": "13.3.0", 132 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", 133 | "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", 134 | "cpu": [ 135 | "ia32" 136 | ], 137 | "optional": true, 138 | "os": [ 139 | "win32" 140 | ], 141 | "engines": { 142 | "node": ">= 10" 143 | } 144 | }, 145 | "node_modules/@next/swc-win32-x64-msvc": { 146 | "version": "13.3.0", 147 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", 148 | "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", 149 | "cpu": [ 150 | "x64" 151 | ], 152 | "optional": true, 153 | "os": [ 154 | "win32" 155 | ], 156 | "engines": { 157 | "node": ">= 10" 158 | } 159 | }, 160 | "node_modules/@swc/helpers": { 161 | "version": "0.4.14", 162 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", 163 | "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", 164 | "dependencies": { 165 | "tslib": "^2.4.0" 166 | } 167 | }, 168 | "node_modules/@types/node": { 169 | "version": "18.15.11", 170 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", 171 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" 172 | }, 173 | "node_modules/@types/prop-types": { 174 | "version": "15.7.5", 175 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 176 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" 177 | }, 178 | "node_modules/@types/react": { 179 | "version": "18.0.33", 180 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.33.tgz", 181 | "integrity": "sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==", 182 | "dependencies": { 183 | "@types/prop-types": "*", 184 | "@types/scheduler": "*", 185 | "csstype": "^3.0.2" 186 | } 187 | }, 188 | "node_modules/@types/react-dom": { 189 | "version": "18.0.11", 190 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", 191 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", 192 | "dependencies": { 193 | "@types/react": "*" 194 | } 195 | }, 196 | "node_modules/@types/scheduler": { 197 | "version": "0.16.3", 198 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", 199 | "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" 200 | }, 201 | "node_modules/busboy": { 202 | "version": "1.6.0", 203 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 204 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 205 | "dependencies": { 206 | "streamsearch": "^1.1.0" 207 | }, 208 | "engines": { 209 | "node": ">=10.16.0" 210 | } 211 | }, 212 | "node_modules/caniuse-lite": { 213 | "version": "1.0.30001476", 214 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001476.tgz", 215 | "integrity": "sha512-JmpktFppVSvyUN4gsLS0bShY2L9ZUslHLE72vgemBkS43JD2fOvKTKs+GtRwuxrtRGnwJFW0ye7kWRRlLJS9vQ==", 216 | "funding": [ 217 | { 218 | "type": "opencollective", 219 | "url": "https://opencollective.com/browserslist" 220 | }, 221 | { 222 | "type": "tidelift", 223 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 224 | }, 225 | { 226 | "type": "github", 227 | "url": "https://github.com/sponsors/ai" 228 | } 229 | ] 230 | }, 231 | "node_modules/client-only": { 232 | "version": "0.0.1", 233 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 234 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 235 | }, 236 | "node_modules/csstype": { 237 | "version": "3.1.2", 238 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 239 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 240 | }, 241 | "node_modules/js-tokens": { 242 | "version": "4.0.0", 243 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 244 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 245 | }, 246 | "node_modules/loose-envify": { 247 | "version": "1.4.0", 248 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 249 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 250 | "dependencies": { 251 | "js-tokens": "^3.0.0 || ^4.0.0" 252 | }, 253 | "bin": { 254 | "loose-envify": "cli.js" 255 | } 256 | }, 257 | "node_modules/nanoid": { 258 | "version": "3.3.6", 259 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 260 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 261 | "funding": [ 262 | { 263 | "type": "github", 264 | "url": "https://github.com/sponsors/ai" 265 | } 266 | ], 267 | "bin": { 268 | "nanoid": "bin/nanoid.cjs" 269 | }, 270 | "engines": { 271 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 272 | } 273 | }, 274 | "node_modules/next": { 275 | "version": "13.3.0", 276 | "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", 277 | "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", 278 | "dependencies": { 279 | "@next/env": "13.3.0", 280 | "@swc/helpers": "0.4.14", 281 | "busboy": "1.6.0", 282 | "caniuse-lite": "^1.0.30001406", 283 | "postcss": "8.4.14", 284 | "styled-jsx": "5.1.1" 285 | }, 286 | "bin": { 287 | "next": "dist/bin/next" 288 | }, 289 | "engines": { 290 | "node": ">=14.6.0" 291 | }, 292 | "optionalDependencies": { 293 | "@next/swc-darwin-arm64": "13.3.0", 294 | "@next/swc-darwin-x64": "13.3.0", 295 | "@next/swc-linux-arm64-gnu": "13.3.0", 296 | "@next/swc-linux-arm64-musl": "13.3.0", 297 | "@next/swc-linux-x64-gnu": "13.3.0", 298 | "@next/swc-linux-x64-musl": "13.3.0", 299 | "@next/swc-win32-arm64-msvc": "13.3.0", 300 | "@next/swc-win32-ia32-msvc": "13.3.0", 301 | "@next/swc-win32-x64-msvc": "13.3.0" 302 | }, 303 | "peerDependencies": { 304 | "@opentelemetry/api": "^1.1.0", 305 | "fibers": ">= 3.1.0", 306 | "node-sass": "^6.0.0 || ^7.0.0", 307 | "react": "^18.2.0", 308 | "react-dom": "^18.2.0", 309 | "sass": "^1.3.0" 310 | }, 311 | "peerDependenciesMeta": { 312 | "@opentelemetry/api": { 313 | "optional": true 314 | }, 315 | "fibers": { 316 | "optional": true 317 | }, 318 | "node-sass": { 319 | "optional": true 320 | }, 321 | "sass": { 322 | "optional": true 323 | } 324 | } 325 | }, 326 | "node_modules/picocolors": { 327 | "version": "1.0.0", 328 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 329 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 330 | }, 331 | "node_modules/postcss": { 332 | "version": "8.4.14", 333 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 334 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 335 | "funding": [ 336 | { 337 | "type": "opencollective", 338 | "url": "https://opencollective.com/postcss/" 339 | }, 340 | { 341 | "type": "tidelift", 342 | "url": "https://tidelift.com/funding/github/npm/postcss" 343 | } 344 | ], 345 | "dependencies": { 346 | "nanoid": "^3.3.4", 347 | "picocolors": "^1.0.0", 348 | "source-map-js": "^1.0.2" 349 | }, 350 | "engines": { 351 | "node": "^10 || ^12 || >=14" 352 | } 353 | }, 354 | "node_modules/react": { 355 | "version": "18.2.0", 356 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 357 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 358 | "dependencies": { 359 | "loose-envify": "^1.1.0" 360 | }, 361 | "engines": { 362 | "node": ">=0.10.0" 363 | } 364 | }, 365 | "node_modules/react-dom": { 366 | "version": "18.2.0", 367 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 368 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 369 | "dependencies": { 370 | "loose-envify": "^1.1.0", 371 | "scheduler": "^0.23.0" 372 | }, 373 | "peerDependencies": { 374 | "react": "^18.2.0" 375 | } 376 | }, 377 | "node_modules/scheduler": { 378 | "version": "0.23.0", 379 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 380 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 381 | "dependencies": { 382 | "loose-envify": "^1.1.0" 383 | } 384 | }, 385 | "node_modules/source-map-js": { 386 | "version": "1.0.2", 387 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 388 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 389 | "engines": { 390 | "node": ">=0.10.0" 391 | } 392 | }, 393 | "node_modules/streamsearch": { 394 | "version": "1.1.0", 395 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 396 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 397 | "engines": { 398 | "node": ">=10.0.0" 399 | } 400 | }, 401 | "node_modules/styled-jsx": { 402 | "version": "5.1.1", 403 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 404 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 405 | "dependencies": { 406 | "client-only": "0.0.1" 407 | }, 408 | "engines": { 409 | "node": ">= 12.0.0" 410 | }, 411 | "peerDependencies": { 412 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 413 | }, 414 | "peerDependenciesMeta": { 415 | "@babel/core": { 416 | "optional": true 417 | }, 418 | "babel-plugin-macros": { 419 | "optional": true 420 | } 421 | } 422 | }, 423 | "node_modules/tslib": { 424 | "version": "2.5.0", 425 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 426 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 427 | }, 428 | "node_modules/typescript": { 429 | "version": "5.0.4", 430 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 431 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 432 | "bin": { 433 | "tsc": "bin/tsc", 434 | "tsserver": "bin/tsserver" 435 | }, 436 | "engines": { 437 | "node": ">=12.20" 438 | } 439 | } 440 | }, 441 | "dependencies": { 442 | "@next/env": { 443 | "version": "13.3.0", 444 | "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", 445 | "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" 446 | }, 447 | "@next/swc-darwin-arm64": { 448 | "version": "13.3.0", 449 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", 450 | "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", 451 | "optional": true 452 | }, 453 | "@next/swc-darwin-x64": { 454 | "version": "13.3.0", 455 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", 456 | "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", 457 | "optional": true 458 | }, 459 | "@next/swc-linux-arm64-gnu": { 460 | "version": "13.3.0", 461 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", 462 | "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", 463 | "optional": true 464 | }, 465 | "@next/swc-linux-arm64-musl": { 466 | "version": "13.3.0", 467 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", 468 | "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", 469 | "optional": true 470 | }, 471 | "@next/swc-linux-x64-gnu": { 472 | "version": "13.3.0", 473 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", 474 | "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", 475 | "optional": true 476 | }, 477 | "@next/swc-linux-x64-musl": { 478 | "version": "13.3.0", 479 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", 480 | "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", 481 | "optional": true 482 | }, 483 | "@next/swc-win32-arm64-msvc": { 484 | "version": "13.3.0", 485 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", 486 | "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", 487 | "optional": true 488 | }, 489 | "@next/swc-win32-ia32-msvc": { 490 | "version": "13.3.0", 491 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", 492 | "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", 493 | "optional": true 494 | }, 495 | "@next/swc-win32-x64-msvc": { 496 | "version": "13.3.0", 497 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", 498 | "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", 499 | "optional": true 500 | }, 501 | "@swc/helpers": { 502 | "version": "0.4.14", 503 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", 504 | "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", 505 | "requires": { 506 | "tslib": "^2.4.0" 507 | } 508 | }, 509 | "@types/node": { 510 | "version": "18.15.11", 511 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", 512 | "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" 513 | }, 514 | "@types/prop-types": { 515 | "version": "15.7.5", 516 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 517 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" 518 | }, 519 | "@types/react": { 520 | "version": "18.0.33", 521 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.33.tgz", 522 | "integrity": "sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA==", 523 | "requires": { 524 | "@types/prop-types": "*", 525 | "@types/scheduler": "*", 526 | "csstype": "^3.0.2" 527 | } 528 | }, 529 | "@types/react-dom": { 530 | "version": "18.0.11", 531 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", 532 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", 533 | "requires": { 534 | "@types/react": "*" 535 | } 536 | }, 537 | "@types/scheduler": { 538 | "version": "0.16.3", 539 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", 540 | "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" 541 | }, 542 | "busboy": { 543 | "version": "1.6.0", 544 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 545 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 546 | "requires": { 547 | "streamsearch": "^1.1.0" 548 | } 549 | }, 550 | "caniuse-lite": { 551 | "version": "1.0.30001476", 552 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001476.tgz", 553 | "integrity": "sha512-JmpktFppVSvyUN4gsLS0bShY2L9ZUslHLE72vgemBkS43JD2fOvKTKs+GtRwuxrtRGnwJFW0ye7kWRRlLJS9vQ==" 554 | }, 555 | "client-only": { 556 | "version": "0.0.1", 557 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 558 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 559 | }, 560 | "csstype": { 561 | "version": "3.1.2", 562 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", 563 | "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" 564 | }, 565 | "js-tokens": { 566 | "version": "4.0.0", 567 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 568 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 569 | }, 570 | "loose-envify": { 571 | "version": "1.4.0", 572 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 573 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 574 | "requires": { 575 | "js-tokens": "^3.0.0 || ^4.0.0" 576 | } 577 | }, 578 | "nanoid": { 579 | "version": "3.3.6", 580 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 581 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" 582 | }, 583 | "next": { 584 | "version": "13.3.0", 585 | "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", 586 | "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", 587 | "requires": { 588 | "@next/env": "13.3.0", 589 | "@next/swc-darwin-arm64": "13.3.0", 590 | "@next/swc-darwin-x64": "13.3.0", 591 | "@next/swc-linux-arm64-gnu": "13.3.0", 592 | "@next/swc-linux-arm64-musl": "13.3.0", 593 | "@next/swc-linux-x64-gnu": "13.3.0", 594 | "@next/swc-linux-x64-musl": "13.3.0", 595 | "@next/swc-win32-arm64-msvc": "13.3.0", 596 | "@next/swc-win32-ia32-msvc": "13.3.0", 597 | "@next/swc-win32-x64-msvc": "13.3.0", 598 | "@swc/helpers": "0.4.14", 599 | "busboy": "1.6.0", 600 | "caniuse-lite": "^1.0.30001406", 601 | "postcss": "8.4.14", 602 | "styled-jsx": "5.1.1" 603 | } 604 | }, 605 | "picocolors": { 606 | "version": "1.0.0", 607 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 608 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 609 | }, 610 | "postcss": { 611 | "version": "8.4.14", 612 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", 613 | "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", 614 | "requires": { 615 | "nanoid": "^3.3.4", 616 | "picocolors": "^1.0.0", 617 | "source-map-js": "^1.0.2" 618 | } 619 | }, 620 | "react": { 621 | "version": "18.2.0", 622 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 623 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 624 | "requires": { 625 | "loose-envify": "^1.1.0" 626 | } 627 | }, 628 | "react-dom": { 629 | "version": "18.2.0", 630 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 631 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 632 | "requires": { 633 | "loose-envify": "^1.1.0", 634 | "scheduler": "^0.23.0" 635 | } 636 | }, 637 | "scheduler": { 638 | "version": "0.23.0", 639 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 640 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 641 | "requires": { 642 | "loose-envify": "^1.1.0" 643 | } 644 | }, 645 | "source-map-js": { 646 | "version": "1.0.2", 647 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 648 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 649 | }, 650 | "streamsearch": { 651 | "version": "1.1.0", 652 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 653 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" 654 | }, 655 | "styled-jsx": { 656 | "version": "5.1.1", 657 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", 658 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", 659 | "requires": { 660 | "client-only": "0.0.1" 661 | } 662 | }, 663 | "tslib": { 664 | "version": "2.5.0", 665 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 666 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 667 | }, 668 | "typescript": { 669 | "version": "5.0.4", 670 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 671 | "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==" 672 | } 673 | } 674 | } 675 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flowmain", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@dqbd/tiktoken": "^1.0.4", 13 | "@types/node": "18.15.11", 14 | "@types/react": "18.0.33", 15 | "@types/react-dom": "18.0.11", 16 | "axios": "^1.3.5", 17 | "daisyui": "^2.51.5", 18 | "langchain": "^0.0.51", 19 | "mermaid": "^10.1.0", 20 | "next": "13.3.0", 21 | "prettier": "^2.8.7", 22 | "raw-loader": "^4.0.2", 23 | "react": "18.2.0", 24 | "react-dom": "18.2.0", 25 | "react-zoom-pan-pinch": "^3.0.6", 26 | "typescript": "5.0.4" 27 | }, 28 | "devDependencies": { 29 | "@iconify/react": "^4.1.0", 30 | "autoprefixer": "^10.4.14", 31 | "postcss": "^8.4.21", 32 | "tailwindcss": "^3.3.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/brand/logo-rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/brand/logo-rounded.png -------------------------------------------------------------------------------- /public/brand/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/brand/logo.png -------------------------------------------------------------------------------- /public/brand/logo_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/brand/logo_text.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nilooy/flowgpt/d0689a94de95a0bafcc9006685999e7ff5e9acd5/public/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /public/favicon/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /src/components/mermaid.tsx: -------------------------------------------------------------------------------- 1 | import React, { FC, useEffect } from "react"; 2 | import mermaid from "mermaid"; 3 | import { TransformWrapper, TransformComponent } from "react-zoom-pan-pinch"; 4 | 5 | mermaid.initialize({ 6 | startOnLoad: true, 7 | theme: "dark", 8 | securityLevel: "loose", 9 | themeCSS: ` 10 | 11 | . 12 | `, 13 | fontFamily: "Fira Code", 14 | }); 15 | 16 | interface IMermaid { 17 | chart: string; 18 | name: string; 19 | } 20 | 21 | export const Mermaid: FC = ({ chart, name }) => { 22 | useEffect(() => { 23 | if (chart) mermaid.contentLoaded(); 24 | }, [chart]); 25 | 26 | const exportSvg = async () => { 27 | const svgData = await mermaid.render("text1", chart); 28 | 29 | const svgBlob = new Blob([svgData.svg], { 30 | type: "image/svg+xml;charset=utf-8", 31 | }); 32 | 33 | const svgUrl = URL.createObjectURL(svgBlob); 34 | 35 | const downloadLink = document.createElement("a"); 36 | downloadLink.href = svgUrl; 37 | downloadLink.download = `${name}.svg`; 38 | document.body.appendChild(downloadLink); 39 | downloadLink.click(); 40 | document.body.removeChild(downloadLink); 41 | }; 42 | 43 | const copyMermaidCode = async () => { 44 | await navigator.clipboard.writeText(chart); 45 | alert("Mermaid Code" + chart); 46 | }; 47 | 48 | return ( 49 |
50 |
51 | 54 |
    58 |
  • 59 | 60 |
  • 61 |
  • 62 | 63 |
  • 64 |
65 |
66 | 67 | 68 | 69 |
{chart}
70 |
{" "} 71 |
72 |
73 | ); 74 | }; 75 | -------------------------------------------------------------------------------- /src/components/nav.tsx: -------------------------------------------------------------------------------- 1 | import { Icon } from "@iconify/react"; 2 | import Image from "next/image"; 3 | import React from "react"; 4 | 5 | const Nav = () => { 6 | return ( 7 |
8 | 46 |
47 | ); 48 | }; 49 | 50 | export default Nav; 51 | -------------------------------------------------------------------------------- /src/components/select-template.tsx: -------------------------------------------------------------------------------- 1 | import React, { FunctionComponent } from "react"; 2 | import { TemplateEnum } from "@/lib/prompt-by-template"; 3 | 4 | interface ITemplate { 5 | label: string; 6 | value: TemplateEnum; 7 | } 8 | 9 | export const templates: ITemplate[] = [ 10 | { label: "Flowchart", value: TemplateEnum.FLOWCHART }, 11 | { label: "Mindmap", value: TemplateEnum.MINDMAP }, 12 | { label: "Timeline", value: TemplateEnum.TIMELINE }, 13 | { label: "User Journey", value: TemplateEnum.USERJOURNEY }, 14 | { label: "Entity Relationship", value: TemplateEnum.ENTITYRELATIONSHIP }, 15 | { label: "Sequence Diagram", value: TemplateEnum.SEQUENCE }, 16 | { label: "State Diagram", value: TemplateEnum.STATE }, 17 | // { label: "Class Diagram", value: TemplateEnum.CLASS }, // FIXME: syntax mistake is pretty common for this 18 | ]; 19 | 20 | interface ISelectTemplate { 21 | onChange: (e: React.ChangeEvent) => void; 22 | } 23 | 24 | const SelectTemplate: FunctionComponent = ({ onChange }) => { 25 | return ( 26 | 33 | ); 34 | }; 35 | 36 | export default SelectTemplate; 37 | -------------------------------------------------------------------------------- /src/lib/generate.ts: -------------------------------------------------------------------------------- 1 | import { OpenAI } from "langchain/llms"; 2 | import { BaseChain, LLMChain, loadQAMapReduceChain } from "langchain/chains"; 3 | import { Document } from "langchain/document"; 4 | import { TextLoader } from "langchain/document_loaders"; 5 | 6 | import { MarkdownTextSplitter } from "langchain/text_splitter"; 7 | import { PromptTemplate } from "langchain"; 8 | 9 | export const generate = async ({ input, selectedTemplate }) => { 10 | try { 11 | const model = new OpenAI({ temperature: 0.9 }); 12 | 13 | const template = 14 | "{syntax} - {instructions} learn from syntax above and write {template} in mermaid syntax about {input}?"; 15 | const prompt = new PromptTemplate({ 16 | template, 17 | inputVariables: ["template", "input", "syntax", "instructions"], 18 | }); 19 | 20 | const chain = new LLMChain({ llm: model, prompt }); 21 | 22 | // @ts-ignore 23 | const syntaxDoc = await import( 24 | `./syntax/${selectedTemplate.toLowerCase()}.md` 25 | ); 26 | 27 | const res = await chain.call({ 28 | template: selectedTemplate, 29 | input, 30 | syntax: syntaxDoc.default, 31 | instructions: ` 32 | - use different shapes, colors and also use icons when possible as mentioned in the doc. 33 | - strict rules: do not add Note and do not explain the code and do not add any additional text except code, 34 | - do not use 'end' syntax 35 | - do not use any parenthesis inside block 36 | `, 37 | }); 38 | 39 | return res; 40 | } catch (e) { 41 | console.log("openai:debug", e?.response?.data); 42 | throw e; 43 | } 44 | }; 45 | -------------------------------------------------------------------------------- /src/lib/helpers.ts: -------------------------------------------------------------------------------- 1 | export const sanitizeText = (text: string) => text.trim().replaceAll("\n", " "); 2 | -------------------------------------------------------------------------------- /src/lib/prompt-by-template.ts: -------------------------------------------------------------------------------- 1 | export enum TemplateEnum { 2 | FLOWCHART = "FLOWCHART", 3 | MINDMAP = "MINDMAP", 4 | TIMELINE = "TIMELINE", 5 | USERJOURNEY = "USERJOURNEY", 6 | CLASS = "CLASS", 7 | ENTITYRELATIONSHIP = "ENTITYRELATIONSHIP", 8 | SEQUENCE = "SEQUENCE", 9 | STATE = "STATE", 10 | } 11 | 12 | const commonRules = `- strict rules: do not add Note and do not explain the code and do not add any additional text except code, do not use 'end' syntax 13 | - do not use any parenthesis inside block`; 14 | 15 | export const promptByTemplate = { 16 | [TemplateEnum.FLOWCHART]: (input: string) => `write flowchart about ${input} 17 | ${commonRules} 18 | eg: correct: C -->|true| D(setLoading), wrong: correct: C -->|true| D(setLoading=>true) 19 | eg: correct: C -->|true| D(axios.post=>'/api/ask', input), wrong: C -->|true| D(axios.post('/api/ask', {input,})) 20 | eg: correct: J -->|text| L[Print 'number is not a prime number'] wrong: J -->|| L[Print 'number is not a prime number'] 21 | `, 22 | 23 | [TemplateEnum.MINDMAP]: (input: string) => `write mindmap about ${input} 24 | ${commonRules} 25 | syntax: 26 | 27 | `, 28 | }; 29 | -------------------------------------------------------------------------------- /src/lib/syntax/class.md: -------------------------------------------------------------------------------- 1 | # Class diagrams 2 | 3 | > "In software engineering, a class diagram in the Unified Modeling Language (UML) is a type of static structure diagram that describes the structure of a system by showing the system's classes, their attributes, operations (or methods), and the relationships among objects." 4 | > 5 | > \-Wikipedia 6 | 7 | The class diagram is the main building block of object-oriented modeling. It is used for general conceptual modeling of the structure of the application, and for detailed modeling to translate the models into programming code. Class diagrams can also be used for data modeling. The classes in a class diagram represent both the main elements, interactions in the application, and the classes to be programmed. 8 | 9 | Mermaid can render class diagrams. 10 | 11 | ```mermaid-example 12 | --- 13 | title: Animal example 14 | --- 15 | classDiagram 16 | note "From Duck till Zebra" 17 | Animal <|-- Duck 18 | note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" 19 | Animal <|-- Fish 20 | Animal <|-- Zebra 21 | Animal : +int age 22 | Animal : +String gender 23 | Animal: +isMammal() 24 | Animal: +mate() 25 | class Duck{ 26 | +String beakColor 27 | +swim() 28 | +quack() 29 | } 30 | class Fish{ 31 | -int sizeInFeet 32 | -canEat() 33 | } 34 | class Zebra{ 35 | +bool is_wild 36 | +run() 37 | } 38 | ``` 39 | 40 | ```mermaid 41 | --- 42 | title: Animal example 43 | --- 44 | classDiagram 45 | note "From Duck till Zebra" 46 | Animal <|-- Duck 47 | note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging" 48 | Animal <|-- Fish 49 | Animal <|-- Zebra 50 | Animal : +int age 51 | Animal : +String gender 52 | Animal: +isMammal() 53 | Animal: +mate() 54 | class Duck{ 55 | +String beakColor 56 | +swim() 57 | +quack() 58 | } 59 | class Fish{ 60 | -int sizeInFeet 61 | -canEat() 62 | } 63 | class Zebra{ 64 | +bool is_wild 65 | +run() 66 | } 67 | ``` 68 | 69 | ## Syntax 70 | 71 | ### Class 72 | 73 | UML provides mechanisms to represent class members, such as attributes and methods, and additional information about them. 74 | A single instance of a class in the diagram contains three compartments: 75 | 76 | - The top compartment contains the name of the class. It is printed in bold and centered, and the first letter is capitalized. It may also contain optional annotation text describing the nature of the class. 77 | - The middle compartment contains the attributes of the class. They are left-aligned and the first letter is lowercase. 78 | - The bottom compartment contains the operations the class can execute. They are also left-aligned and the first letter is lowercase. 79 | 80 | ```mermaid-example 81 | --- 82 | title: Bank example 83 | --- 84 | classDiagram 85 | class BankAccount 86 | BankAccount : +String owner 87 | BankAccount : +Bigdecimal balance 88 | BankAccount : +deposit(amount) 89 | BankAccount : +withdrawal(amount) 90 | 91 | ``` 92 | 93 | ```mermaid 94 | --- 95 | title: Bank example 96 | --- 97 | classDiagram 98 | class BankAccount 99 | BankAccount : +String owner 100 | BankAccount : +Bigdecimal balance 101 | BankAccount : +deposit(amount) 102 | BankAccount : +withdrawal(amount) 103 | 104 | ``` 105 | 106 | ## Define a class 107 | 108 | There are two ways to define a class: 109 | 110 | - Explicitly using keyword **class** like `class Animal` which would define the Animal class. 111 | - Via a **relationship** which defines two classes at a time along with their relationship. For instance, `Vehicle <|-- Car`. 112 | 113 | ```mermaid-example 114 | classDiagram 115 | class Animal 116 | Vehicle <|-- Car 117 | ``` 118 | 119 | ```mermaid 120 | classDiagram 121 | class Animal 122 | Vehicle <|-- Car 123 | ``` 124 | 125 | Naming convention: a class name should be composed only of alphanumeric characters (including unicode), and underscores. 126 | 127 | ### Class labels 128 | 129 | In case you need to provide a label for a class, you can use the following syntax: 130 | 131 | ```mermaid-example 132 | classDiagram 133 | class Animal["Animal with a label"] 134 | class Car["Car with *! symbols"] 135 | Animal --> Car 136 | ``` 137 | 138 | ```mermaid 139 | classDiagram 140 | class Animal["Animal with a label"] 141 | class Car["Car with *! symbols"] 142 | Animal --> Car 143 | ``` 144 | 145 | You can also use backticks to escape special characters in the label: 146 | 147 | ```mermaid-example 148 | classDiagram 149 | class `Animal Class!` 150 | class `Car Class` 151 | `Animal Class!` --> `Car Class` 152 | ``` 153 | 154 | ```mermaid 155 | classDiagram 156 | class `Animal Class!` 157 | class `Car Class` 158 | `Animal Class!` --> `Car Class` 159 | ``` 160 | 161 | ## Defining Members of a class 162 | 163 | UML provides mechanisms to represent class members such as attributes and methods, as well as additional information about them. 164 | 165 | Mermaid distinguishes between attributes and functions/methods based on if the **parenthesis** `()` are present or not. The ones with `()` are treated as functions/methods, and all others as attributes. 166 | 167 | There are two ways to define the members of a class, and regardless of whichever syntax is used to define the members, the output will still be same. The two different ways are : 168 | 169 | - Associate a member of a class using **:** (colon) followed by member name, useful to define one member at a time. For example: 170 | 171 | ```mermaid-example 172 | classDiagram 173 | class BankAccount 174 | BankAccount : +String owner 175 | BankAccount : +BigDecimal balance 176 | BankAccount : +deposit(amount) 177 | BankAccount : +withdrawal(amount) 178 | ``` 179 | 180 | ```mermaid 181 | classDiagram 182 | class BankAccount 183 | BankAccount : +String owner 184 | BankAccount : +BigDecimal balance 185 | BankAccount : +deposit(amount) 186 | BankAccount : +withdrawal(amount) 187 | ``` 188 | 189 | - Associate members of a class using **{}** brackets, where members are grouped within curly brackets. Suitable for defining multiple members at once. For example: 190 | 191 | ```mermaid-example 192 | classDiagram 193 | class BankAccount{ 194 | +String owner 195 | +BigDecimal balance 196 | +deposit(amount) 197 | +withdrawal(amount) 198 | } 199 | ``` 200 | 201 | ```mermaid 202 | classDiagram 203 | class BankAccount{ 204 | +String owner 205 | +BigDecimal balance 206 | +deposit(amount) 207 | +withdrawal(amount) 208 | } 209 | ``` 210 | 211 | #### Return Type 212 | 213 | Optionally you can end a method/function definition with the data type that will be returned (note: there must be a space between the final `)` and the return type). An example: 214 | 215 | ```mermaid-example 216 | classDiagram 217 | class BankAccount{ 218 | +String owner 219 | +BigDecimal balance 220 | +deposit(amount) bool 221 | +withdrawal(amount) int 222 | } 223 | ``` 224 | 225 | ```mermaid 226 | classDiagram 227 | class BankAccount{ 228 | +String owner 229 | +BigDecimal balance 230 | +deposit(amount) bool 231 | +withdrawal(amount) int 232 | } 233 | ``` 234 | 235 | #### Generic Types 236 | 237 | Members can be defined using generic types, such as `List`, for fields, parameters, and return types by enclosing the type within `~` (**tilde**). **Nested** type declarations such as `List>` are supported. 238 | 239 | Generics can be represented as part of a class definition and also in the parameters or the return value of a method/function: 240 | 241 | ```mermaid-example 242 | classDiagram 243 | class Square~Shape~{ 244 | int id 245 | List~int~ position 246 | setPoints(List~int~ points) 247 | getPoints() List~int~ 248 | } 249 | 250 | Square : -List~string~ messages 251 | Square : +setMessages(List~string~ messages) 252 | Square : +getMessages() List~string~ 253 | Square : +getDistanceMatrix() List~List~int~~ 254 | ``` 255 | 256 | ```mermaid 257 | classDiagram 258 | class Square~Shape~{ 259 | int id 260 | List~int~ position 261 | setPoints(List~int~ points) 262 | getPoints() List~int~ 263 | } 264 | 265 | Square : -List~string~ messages 266 | Square : +setMessages(List~string~ messages) 267 | Square : +getMessages() List~string~ 268 | Square : +getDistanceMatrix() List~List~int~~ 269 | ``` 270 | 271 | #### Visibility 272 | 273 | To describe the visibility (or encapsulation) of an attribute or method/function that is a part of a class (i.e. a class member), optional notation may be placed before that members' name: 274 | 275 | - `+` Public 276 | - `-` Private 277 | - `#` Protected 278 | - `~` Package/Internal 279 | 280 | > _note_ you can also include additional _classifiers_ to a method definition by adding the following notation to the _end_ of the method, i.e.: after the `()`: 281 | > 282 | > - `*` Abstract e.g.: `someAbstractMethod()*` 283 | > - `$` Static e.g.: `someStaticMethod()$` 284 | 285 | > _note_ you can also include additional _classifiers_ to a field definition by adding the following notation to the end of its name: 286 | > 287 | > - `$` Static e.g.: `String someField$` 288 | 289 | ## Defining Relationship 290 | 291 | A relationship is a general term covering the specific types of logical connections found on class and object diagrams. 292 | 293 | [classA][Arrow][ClassB] 294 | 295 | There are eight different types of relations defined for classes under UML which are currently supported: 296 | 297 | | Type | Description | 298 | | ------- | ------------- | 299 | | `<\|--` | Inheritance | 300 | | `*--` | Composition | 301 | | `o--` | Aggregation | 302 | | `-->` | Association | 303 | | `--` | Link (Solid) | 304 | | `..>` | Dependency | 305 | | `..\|>` | Realization | 306 | | `..` | Link (Dashed) | 307 | 308 | ```mermaid-example 309 | classDiagram 310 | classA <|-- classB 311 | classC *-- classD 312 | classE o-- classF 313 | classG <-- classH 314 | classI -- classJ 315 | classK <.. classL 316 | classM <|.. classN 317 | classO .. classP 318 | 319 | ``` 320 | 321 | ```mermaid 322 | classDiagram 323 | classA <|-- classB 324 | classC *-- classD 325 | classE o-- classF 326 | classG <-- classH 327 | classI -- classJ 328 | classK <.. classL 329 | classM <|.. classN 330 | classO .. classP 331 | 332 | ``` 333 | 334 | We can use the labels to describe the nature of the relation between two classes. Also, arrowheads can be used in the opposite direction as well: 335 | 336 | ```mermaid-example 337 | classDiagram 338 | classA --|> classB : Inheritance 339 | classC --* classD : Composition 340 | classE --o classF : Aggregation 341 | classG --> classH : Association 342 | classI -- classJ : Link(Solid) 343 | classK ..> classL : Dependency 344 | classM ..|> classN : Realization 345 | classO .. classP : Link(Dashed) 346 | 347 | ``` 348 | 349 | ```mermaid 350 | classDiagram 351 | classA --|> classB : Inheritance 352 | classC --* classD : Composition 353 | classE --o classF : Aggregation 354 | classG --> classH : Association 355 | classI -- classJ : Link(Solid) 356 | classK ..> classL : Dependency 357 | classM ..|> classN : Realization 358 | classO .. classP : Link(Dashed) 359 | 360 | ``` 361 | 362 | ### Labels on Relations 363 | 364 | It is possible to add label text to a relation: 365 | 366 | [classA][Arrow][ClassB]:LabelText 367 | 368 | ```mermaid-example 369 | classDiagram 370 | classA <|-- classB : implements 371 | classC *-- classD : composition 372 | classE o-- classF : aggregation 373 | ``` 374 | 375 | ```mermaid 376 | classDiagram 377 | classA <|-- classB : implements 378 | classC *-- classD : composition 379 | classE o-- classF : aggregation 380 | ``` 381 | 382 | ### Two-way relations 383 | 384 | Relations can logically represent an N:M association: 385 | 386 | ```mermaid-example 387 | classDiagram 388 | Animal <|--|> Zebra 389 | ``` 390 | 391 | ```mermaid 392 | classDiagram 393 | Animal <|--|> Zebra 394 | ``` 395 | 396 | Here is the syntax: 397 | 398 | [Relation Type][Link][Relation Type] 399 | 400 | Where `Relation Type` can be one of: 401 | 402 | | Type | Description | 403 | | ----- | ----------- | 404 | | `<\|` | Inheritance | 405 | | `\*` | Composition | 406 | | `o` | Aggregation | 407 | | `>` | Association | 408 | | `<` | Association | 409 | | `\|>` | Realization | 410 | 411 | And `Link` can be one of: 412 | 413 | | Type | Description | 414 | | ---- | ----------- | 415 | | -- | Solid | 416 | | .. | Dashed | 417 | 418 | ## Cardinality / Multiplicity on relations 419 | 420 | Multiplicity or cardinality in class diagrams indicates the number of instances of one class that can be linked to an instance of the other class. For example, each company will have one or more employees (not zero), and each employee currently works for zero or one companies. 421 | 422 | Multiplicity notations are placed near the end of an association. 423 | 424 | The different cardinality options are : 425 | 426 | - `1` Only 1 427 | - `0..1` Zero or One 428 | - `1..*` One or more 429 | - `*` Many 430 | - `n` n {where n>1} 431 | - `0..n` zero to n {where n>1} 432 | - `1..n` one to n {where n>1} 433 | 434 | Cardinality can be easily defined by placing the text option within quotes `"` before or after a given arrow. For example: 435 | 436 | [classA] "cardinality1" [Arrow] "cardinality2" [ClassB]:LabelText 437 | 438 | ```mermaid-example 439 | classDiagram 440 | Customer "1" --> "*" Ticket 441 | Student "1" --> "1..*" Course 442 | Galaxy --> "many" Star : Contains 443 | ``` 444 | 445 | ```mermaid 446 | classDiagram 447 | Customer "1" --> "*" Ticket 448 | Student "1" --> "1..*" Course 449 | Galaxy --> "many" Star : Contains 450 | ``` 451 | 452 | ## Annotations on classes 453 | 454 | It is possible to annotate classes with markers to provide additional metadata about the class. This can give a clearer indication about its nature. Some common annotations include: 455 | 456 | - `<>` To represent an Interface class 457 | - `<>` To represent an abstract class 458 | - `<>` To represent a service class 459 | - `<>` To represent an enum 460 | 461 | Annotations are defined within the opening `<<` and closing `>>`. There are two ways to add an annotation to a class, and either way the output will be same: 462 | 463 | - In a **_separate line_** after a class is defined: 464 | 465 | ```mermaid-example 466 | classDiagram 467 | class Shape 468 | <> Shape 469 | Shape : noOfVertices 470 | Shape : draw() 471 | ``` 472 | -------------------------------------------------------------------------------- /src/lib/syntax/entityrelationship.md: -------------------------------------------------------------------------------- 1 | # Entity Relationship Diagrams 2 | 3 | > An entity–relationship model (or ER model) describes interrelated things of interest in a specific domain of knowledge. A basic ER model is composed of entity types (which classify the things of interest) and specifies relationships that can exist between entities (instances of those entity types). Wikipedia. 4 | 5 | Note that practitioners of ER modelling almost always refer to _entity types_ simply as _entities_. For example the `CUSTOMER` entity _type_ would be referred to simply as the `CUSTOMER` entity. This is so common it would be inadvisable to do anything else, but technically an entity is an abstract _instance_ of an entity type, and this is what an ER diagram shows - abstract instances, and the relationships between them. This is why entities are always named using singular nouns. 6 | 7 | Mermaid can render ER diagrams 8 | 9 | ```mermaid-example 10 | --- 11 | title: Order example 12 | --- 13 | erDiagram 14 | CUSTOMER ||--o{ ORDER : places 15 | ORDER ||--|{ LINE-ITEM : contains 16 | CUSTOMER }|..|{ DELIVERY-ADDRESS : uses 17 | ``` 18 | 19 | ```mermaid 20 | --- 21 | title: Order example 22 | --- 23 | erDiagram 24 | CUSTOMER ||--o{ ORDER : places 25 | ORDER ||--|{ LINE-ITEM : contains 26 | CUSTOMER }|..|{ DELIVERY-ADDRESS : uses 27 | ``` 28 | 29 | Entity names are often capitalised, although there is no accepted standard on this, and it is not required in Mermaid. 30 | 31 | Relationships between entities are represented by lines with end markers representing cardinality. Mermaid uses the most popular crow's foot notation. The crow's foot intuitively conveys the possibility of many instances of the entity that it connects to. 32 | 33 | ER diagrams can be used for various purposes, ranging from abstract logical models devoid of any implementation details, through to physical models of relational database tables. It can be useful to include attribute definitions on ER diagrams to aid comprehension of the purpose and meaning of entities. These do not necessarily need to be exhaustive; often a small subset of attributes is enough. Mermaid allows them to be defined in terms of their _type_ and _name_. 34 | 35 | ```mermaid-example 36 | erDiagram 37 | CUSTOMER ||--o{ ORDER : places 38 | CUSTOMER { 39 | string name 40 | string custNumber 41 | string sector 42 | } 43 | ORDER ||--|{ LINE-ITEM : contains 44 | ORDER { 45 | int orderNumber 46 | string deliveryAddress 47 | } 48 | LINE-ITEM { 49 | string productCode 50 | int quantity 51 | float pricePerUnit 52 | } 53 | ``` 54 | 55 | ```mermaid 56 | erDiagram 57 | CUSTOMER ||--o{ ORDER : places 58 | CUSTOMER { 59 | string name 60 | string custNumber 61 | string sector 62 | } 63 | ORDER ||--|{ LINE-ITEM : contains 64 | ORDER { 65 | int orderNumber 66 | string deliveryAddress 67 | } 68 | LINE-ITEM { 69 | string productCode 70 | int quantity 71 | float pricePerUnit 72 | } 73 | ``` 74 | 75 | When including attributes on ER diagrams, you must decide whether to include foreign keys as attributes. This probably depends on how closely you are trying to represent relational table structures. If your diagram is a _logical_ model which is not meant to imply a relational implementation, then it is better to leave these out because the associative relationships already convey the way that entities are associated. For example, a JSON data structure can implement a one-to-many relationship without the need for foreign key properties, using arrays. Similarly an object-oriented programming language may use pointers or references to collections. Even for models that are intended for relational implementation, you might decide that inclusion of foreign key attributes duplicates information already portrayed by the relationships, and does not add meaning to entities. Ultimately, it's your choice. 76 | 77 | ## Syntax 78 | 79 | ### Entities and Relationships 80 | 81 | Mermaid syntax for ER diagrams is compatible with PlantUML, with an extension to label the relationship. Each statement consists of the following parts: 82 | 83 | [ : ] 84 | 85 | Where: 86 | 87 | - `first-entity` is the name of an entity. Names must begin with an alphabetic character and may also contain digits, hyphens, and underscores. 88 | - `relationship` describes the way that both entities inter-relate. See below. 89 | - `second-entity` is the name of the other entity. 90 | - `relationship-label` describes the relationship from the perspective of the first entity. 91 | 92 | For example: 93 | 94 | PROPERTY ||--|{ ROOM : contains 95 | 96 | This statement can be read as _a property contains one or more rooms, and a room is part of one and only one property_. You can see that the label here is from the first entity's perspective: a property contains a room, but a room does not contain a property. When considered from the perspective of the second entity, the equivalent label is usually very easy to infer. (Some ER diagrams label relationships from both perspectives, but this is not supported here, and is usually superfluous). 97 | 98 | Only the `first-entity` part of a statement is mandatory. This makes it possible to show an entity with no relationships, which can be useful during iterative construction of diagrams. If any other parts of a statement are specified, then all parts are mandatory. 99 | 100 | ### Relationship Syntax 101 | 102 | The `relationship` part of each statement can be broken down into three sub-components: 103 | 104 | - the cardinality of the first entity with respect to the second, 105 | - whether the relationship confers identity on a 'child' entity 106 | - the cardinality of the second entity with respect to the first 107 | 108 | Cardinality is a property that describes how many elements of another entity can be related to the entity in question. In the above example a `PROPERTY` can have one or more `ROOM` instances associated to it, whereas a `ROOM` can only be associated with one `PROPERTY`. In each cardinality marker there are two characters. The outermost character represents a maximum value, and the innermost character represents a minimum value. The table below summarises possible cardinalities. 109 | 110 | | Value (left) | Value (right) | Meaning | 111 | | :----------: | :-----------: | ----------------------------- | 112 | | `\|o` | `o\|` | Zero or one | 113 | | `\|\|` | `\|\|` | Exactly one | 114 | | `}o` | `o{` | Zero or more (no upper limit) | 115 | | `}\|` | `\|{` | One or more (no upper limit) | 116 | 117 | **Aliases** 118 | 119 | | Value (left) | Value (right) | Alias for | 120 | | :----------: | :-----------: | ------------ | 121 | | one or zero | one or zero | Zero or one | 122 | | zero or one | zero or one | Zero or one | 123 | | one or more | one or more | One or more | 124 | | one or many | one or many | One or more | 125 | | many(1) | many(1) | One or more | 126 | | 1+ | 1+ | One or more | 127 | | zero or more | zero or more | Zero or more | 128 | | zero or many | zero or many | Zero or more | 129 | | many(0) | many(1) | Zero or more | 130 | | 0+ | 0+ | Zero or more | 131 | | only one | only one | Exactly one | 132 | | 1 | 1 | Exactly one | 133 | 134 | ### Identification 135 | 136 | Relationships may be classified as either _identifying_ or _non-identifying_ and these are rendered with either solid or dashed lines respectively. This is relevant when one of the entities in question can not have independent existence without the other. For example a firm that insures people to drive cars might need to store data on `NAMED-DRIVER`s. In modelling this we might start out by observing that a `CAR` can be driven by many `PERSON` instances, and a `PERSON` can drive many `CAR`s - both entities can exist without the other, so this is a non-identifying relationship that we might specify in Mermaid as: `PERSON }|..|{ CAR : "driver"`. Note the two dots in the middle of the relationship that will result in a dashed line being drawn between the two entities. But when this many-to-many relationship is resolved into two one-to-many relationships, we observe that a `NAMED-DRIVER` cannot exist without both a `PERSON` and a `CAR` - the relationships become identifying and would be specified using hyphens, which translate to a solid line: 137 | 138 | **Aliases** 139 | 140 | | Value | Alias for | 141 | | :-----------: | :---------------: | 142 | | to | _identifying_ | 143 | | optionally to | _non-identifying_ | 144 | 145 | ```mermaid-example 146 | erDiagram 147 | CAR ||--o{ NAMED-DRIVER : allows 148 | PERSON ||--o{ NAMED-DRIVER : is 149 | ``` 150 | 151 | ```mermaid 152 | erDiagram 153 | CAR ||--o{ NAMED-DRIVER : allows 154 | PERSON ||--o{ NAMED-DRIVER : is 155 | ``` 156 | 157 | ### Attributes 158 | 159 | Attributes can be defined for entities by specifying the entity name followed by a block containing multiple `type name` pairs, where a block is delimited by an opening `{` and a closing `}`. The attributes are rendered inside the entity boxes. For example: 160 | 161 | ```mermaid-example 162 | erDiagram 163 | CAR ||--o{ NAMED-DRIVER : allows 164 | CAR { 165 | string registrationNumber 166 | string make 167 | string model 168 | } 169 | PERSON ||--o{ NAMED-DRIVER : is 170 | PERSON { 171 | string firstName 172 | string lastName 173 | int age 174 | } 175 | ``` 176 | 177 | ```mermaid 178 | erDiagram 179 | CAR ||--o{ NAMED-DRIVER : allows 180 | CAR { 181 | string registrationNumber 182 | string make 183 | string model 184 | } 185 | PERSON ||--o{ NAMED-DRIVER : is 186 | PERSON { 187 | string firstName 188 | string lastName 189 | int age 190 | } 191 | ``` 192 | 193 | The `type` and `name` values must begin with an alphabetic character and may contain digits, hyphens, underscores, parentheses and square brackets. Other than that, there are no restrictions, and there is no implicit set of valid data types. 194 | 195 | #### Attribute Keys and Comments 196 | 197 | Attributes may also have a `key` or comment defined. Keys can be `PK`, `FK` or `UK`, for Primary Key, Foreign Key or Unique Key. To specify multiple key constraints on a single attribute, separate them with a comma (e.g., `PK, FK`).. A `comment` is defined by double quotes at the end of an attribute. Comments themselves cannot have double-quote characters in them. 198 | 199 | ```mermaid-example 200 | erDiagram 201 | CAR ||--o{ NAMED-DRIVER : allows 202 | CAR { 203 | string registrationNumber PK 204 | string make 205 | string model 206 | string[] parts 207 | } 208 | PERSON ||--o{ NAMED-DRIVER : is 209 | PERSON { 210 | string driversLicense PK "The license #" 211 | string(99) firstName "Only 99 characters are allowed" 212 | string lastName 213 | string phone UK 214 | int age 215 | } 216 | NAMED-DRIVER { 217 | string carRegistrationNumber PK, FK 218 | string driverLicence PK, FK 219 | } 220 | MANUFACTURER only one to zero or more CAR : makes 221 | ``` 222 | 223 | ```mermaid 224 | erDiagram 225 | CAR ||--o{ NAMED-DRIVER : allows 226 | CAR { 227 | string registrationNumber PK 228 | string make 229 | string model 230 | string[] parts 231 | } 232 | PERSON ||--o{ NAMED-DRIVER : is 233 | PERSON { 234 | string driversLicense PK "The license #" 235 | string(99) firstName "Only 99 characters are allowed" 236 | string lastName 237 | string phone UK 238 | int age 239 | } 240 | NAMED-DRIVER { 241 | string carRegistrationNumber PK, FK 242 | string driverLicence PK, FK 243 | } 244 | MANUFACTURER only one to zero or more CAR : makes 245 | ``` -------------------------------------------------------------------------------- /src/lib/syntax/flowchart.md: -------------------------------------------------------------------------------- 1 | # Flowcharts - Basic Syntax 2 | 3 | All Flowcharts are composed of **nodes**, the geometric shapes and **edges**, the arrows or lines. The mermaid code defines the way that these **nodes** and **edges** are made and interact. 4 | 5 | It can also accommodate different arrow types, multi directional arrows, and linking to and from subgraphs. 6 | 7 | > **Important note**: Do not type the word "end" as a Flowchart node. Capitalize all or any one the letters to keep the flowchart from breaking, i.e, "End" or "END". Or you can apply this [workaround](https://github.com/mermaid-js/mermaid/issues/1444#issuecomment-639528897). 8 | 9 | ### A node (default) 10 | 11 | ```mermaid-example 12 | --- 13 | title: Node 14 | --- 15 | flowchart LR 16 | id 17 | ``` 18 | 19 | ```mermaid 20 | --- 21 | title: Node 22 | --- 23 | flowchart LR 24 | id 25 | ``` 26 | 27 | > **Note** 28 | > The id is what is displayed in the box. 29 | 30 | ### A node with text 31 | 32 | It is also possible to set text in the box that differs from the id. If this is done several times, it is the last text 33 | found for the node that will be used. Also if you define edges for the node later on, you can omit text definitions. The 34 | one previously defined will be used when rendering the box. 35 | 36 | ```mermaid-example 37 | --- 38 | title: Node with text 39 | --- 40 | flowchart LR 41 | id1[This is the text in the box] 42 | ``` 43 | 44 | ```mermaid 45 | --- 46 | title: Node with text 47 | --- 48 | flowchart LR 49 | id1[This is the text in the box] 50 | ``` 51 | 52 | ## Graph 53 | 54 | This statement declares the direction of the Flowchart. 55 | 56 | This declares the flowchart is oriented from top to bottom (`TD` or `TB`). 57 | 58 | ```mermaid-example 59 | flowchart TD 60 | Start --> Stop 61 | ``` 62 | 63 | ```mermaid 64 | flowchart TD 65 | Start --> Stop 66 | ``` 67 | 68 | This declares the flowchart is oriented from left to right (`LR`). 69 | 70 | ```mermaid-example 71 | flowchart LR 72 | Start --> Stop 73 | ``` 74 | 75 | ```mermaid 76 | flowchart LR 77 | Start --> Stop 78 | ``` 79 | 80 | ## Flowchart Orientation 81 | 82 | Possible FlowChart orientations are: 83 | 84 | - TB - top to bottom 85 | - TD - top-down/ same as top to bottom 86 | - BT - bottom to top 87 | - RL - right to left 88 | - LR - left to right 89 | 90 | ## Node shapes 91 | 92 | ### A node with round edges 93 | 94 | ```mermaid-example 95 | flowchart LR 96 | id1(This is the text in the box) 97 | ``` 98 | 99 | ```mermaid 100 | flowchart LR 101 | id1(This is the text in the box) 102 | ``` 103 | 104 | ### A stadium-shaped node 105 | 106 | ```mermaid-example 107 | flowchart LR 108 | id1([This is the text in the box]) 109 | ``` 110 | 111 | ```mermaid 112 | flowchart LR 113 | id1([This is the text in the box]) 114 | ``` 115 | 116 | ### A node in a subroutine shape 117 | 118 | ```mermaid-example 119 | flowchart LR 120 | id1[[This is the text in the box]] 121 | ``` 122 | 123 | ```mermaid 124 | flowchart LR 125 | id1[[This is the text in the box]] 126 | ``` 127 | 128 | ### A node in a cylindrical shape 129 | 130 | ```mermaid-example 131 | flowchart LR 132 | id1[(Database)] 133 | ``` 134 | 135 | ```mermaid 136 | flowchart LR 137 | id1[(Database)] 138 | ``` 139 | 140 | ### A node in the form of a circle 141 | 142 | ```mermaid-example 143 | flowchart LR 144 | id1((This is the text in the circle)) 145 | ``` 146 | 147 | ```mermaid 148 | flowchart LR 149 | id1((This is the text in the circle)) 150 | ``` 151 | 152 | ### A node in an asymmetric shape 153 | 154 | ```mermaid-example 155 | flowchart LR 156 | id1>This is the text in the box] 157 | ``` 158 | 159 | ```mermaid 160 | flowchart LR 161 | id1>This is the text in the box] 162 | ``` 163 | 164 | Currently only the shape above is possible and not its mirror. _This might change with future releases._ 165 | 166 | ### A node (rhombus) 167 | 168 | ```mermaid-example 169 | flowchart LR 170 | id1{This is the text in the box} 171 | ``` 172 | 173 | ```mermaid 174 | flowchart LR 175 | id1{This is the text in the box} 176 | ``` 177 | 178 | ### A hexagon node 179 | 180 | ```mermaid-example 181 | flowchart LR 182 | id1{{This is the text in the box}} 183 | ``` 184 | 185 | ```mermaid 186 | flowchart LR 187 | id1{{This is the text in the box}} 188 | ``` 189 | 190 | ### Parallelogram 191 | 192 | ```mermaid-example 193 | flowchart TD 194 | id1[/This is the text in the box/] 195 | ``` 196 | 197 | ```mermaid 198 | flowchart TD 199 | id1[/This is the text in the box/] 200 | ``` 201 | 202 | ### Parallelogram alt 203 | 204 | ```mermaid-example 205 | flowchart TD 206 | id1[\This is the text in the box\] 207 | ``` 208 | 209 | ```mermaid 210 | flowchart TD 211 | id1[\This is the text in the box\] 212 | ``` 213 | 214 | ### Trapezoid 215 | 216 | ```mermaid-example 217 | flowchart TD 218 | A[/Christmas\] 219 | ``` 220 | 221 | ```mermaid 222 | flowchart TD 223 | A[/Christmas\] 224 | ``` 225 | 226 | ### Trapezoid alt 227 | 228 | ```mermaid-example 229 | flowchart TD 230 | B[\Go shopping/] 231 | ``` 232 | 233 | ```mermaid 234 | flowchart TD 235 | B[\Go shopping/] 236 | ``` 237 | 238 | ### Double circle 239 | 240 | ```mermaid-example 241 | flowchart TD 242 | id1(((This is the text in the circle))) 243 | ``` 244 | 245 | ```mermaid 246 | flowchart TD 247 | id1(((This is the text in the circle))) 248 | ``` 249 | 250 | ## Links between nodes 251 | 252 | Nodes can be connected with links/edges. It is possible to have different types of links or attach a text string to a link. 253 | 254 | ### A link with arrow head 255 | 256 | ```mermaid-example 257 | flowchart LR 258 | A-->B 259 | ``` 260 | 261 | ```mermaid 262 | flowchart LR 263 | A-->B 264 | ``` 265 | 266 | ### An open link 267 | 268 | ```mermaid-example 269 | flowchart LR 270 | A --- B 271 | ``` 272 | 273 | ```mermaid 274 | flowchart LR 275 | A --- B 276 | ``` 277 | 278 | ### Text on links 279 | 280 | ```mermaid-example 281 | flowchart LR 282 | A-- This is the text! ---B 283 | ``` 284 | 285 | ```mermaid 286 | flowchart LR 287 | A-- This is the text! ---B 288 | ``` 289 | 290 | or 291 | 292 | ```mermaid-example 293 | flowchart LR 294 | A---|This is the text|B 295 | ``` 296 | 297 | ```mermaid 298 | flowchart LR 299 | A---|This is the text|B 300 | ``` 301 | 302 | ### A link with arrow head and text 303 | 304 | ```mermaid-example 305 | flowchart LR 306 | A-->|text|B 307 | ``` 308 | 309 | ```mermaid 310 | flowchart LR 311 | A-->|text|B 312 | ``` 313 | 314 | or 315 | 316 | ```mermaid-example 317 | flowchart LR 318 | A-- text -->B 319 | ``` 320 | 321 | ```mermaid 322 | flowchart LR 323 | A-- text -->B 324 | ``` 325 | 326 | ### Dotted link 327 | 328 | ```mermaid-example 329 | flowchart LR 330 | A-.->B; 331 | ``` 332 | 333 | ```mermaid 334 | flowchart LR 335 | A-.->B; 336 | ``` 337 | 338 | ### Dotted link with text 339 | 340 | ```mermaid-example 341 | flowchart LR 342 | A-. text .-> B 343 | ``` 344 | 345 | ```mermaid 346 | flowchart LR 347 | A-. text .-> B 348 | ``` 349 | 350 | ### Thick link 351 | 352 | ```mermaid-example 353 | flowchart LR 354 | A ==> B 355 | ``` 356 | 357 | ```mermaid 358 | flowchart LR 359 | A ==> B 360 | ``` 361 | 362 | ### Thick link with text 363 | 364 | ```mermaid-example 365 | flowchart LR 366 | A == text ==> B 367 | ``` 368 | 369 | ```mermaid 370 | flowchart LR 371 | A == text ==> B 372 | ``` 373 | 374 | ### An invisible link 375 | 376 | This can be a useful tool in some instances where you want to alter the default positioning of a node. 377 | 378 | ```mermaid-example 379 | flowchart LR 380 | A ~~~ B 381 | ``` 382 | 383 | ```mermaid 384 | flowchart LR 385 | A ~~~ B 386 | ``` 387 | 388 | ### Chaining of links 389 | 390 | It is possible declare many links in the same line as per below: 391 | 392 | ```mermaid-example 393 | flowchart LR 394 | A -- text --> B -- text2 --> C 395 | ``` 396 | 397 | ```mermaid 398 | flowchart LR 399 | A -- text --> B -- text2 --> C 400 | ``` 401 | 402 | It is also possible to declare multiple nodes links in the same line as per below: 403 | 404 | ```mermaid-example 405 | flowchart LR 406 | a --> b & c--> d 407 | ``` 408 | 409 | ```mermaid 410 | flowchart LR 411 | a --> b & c--> d 412 | ``` 413 | -------------------------------------------------------------------------------- /src/lib/syntax/mindmap.md: -------------------------------------------------------------------------------- 1 | # Mindmap 2 | 3 | "A mind map is a diagram used to visually organize information into a hierarchy, showing relationships among pieces of the whole. It is often created around a single concept, drawn as an image in the center of a blank page, to which associated representations of ideas such as images, words and parts of words are added. Major ideas are connected directly to the central concept, and other ideas branch out from those major ideas." Wikipedia 4 | 5 | ### An example of a mindmap. 6 | 7 | ```mermaid 8 | mindmap 9 | root((mindmap)) 10 | Origins 11 | Long history 12 | ::icon(fa fa-book) 13 | Popularisation 14 | British popular psychology author Tony Buzan 15 | Research 16 | On effectiveness
and features 17 | On Automatic creation 18 | Uses 19 | Creative techniques 20 | Strategic planning 21 | Argument mapping 22 | Tools 23 | Pen and paper 24 | Mermaid 25 | 26 | ``` 27 | 28 | ## Syntax 29 | 30 | The syntax for creating Mindmaps is simple and relies on indentation for setting the levels in the hierarchy. 31 | 32 | In the following example you can see how there are 3 different levels. One with starting at the left of the text and another level with two rows starting at the same column, defining the node A. At the end there is one more level where the text is indented further then the previous lines defining the nodes B and C. 33 | 34 | ``` 35 | mindmap 36 | Root 37 | A 38 | B 39 | C 40 | ``` 41 | 42 | In summary is a simple text outline where there are one node at the root level called `Root` which has one child `A`. `A` in turn has two children `B`and `C`. In the diagram below we can see this rendered as a mindmap. 43 | 44 | ```mermaid 45 | mindmap 46 | Root 47 | A 48 | B 49 | C 50 | ``` 51 | 52 | In this way we can use a text outline to generate a hierarchical mindmap. 53 | 54 | ## Different shapes 55 | 56 | Mermaid mindmaps can show nodes using different shapes. When specifying a shape for a node the syntax is similar to flowchart nodes, with an id followed by the shape definition and with the text within the shape delimiters. Where possible we try/will try to keep the same shapes as for flowcharts, even though they are not all supported from the start. 57 | 58 | Mindmap can show the following shapes: 59 | 60 | ### Square 61 | 62 | ```mermaid-example 63 | mindmap 64 | id[I am a square] 65 | ``` 66 | 67 | ### Rounded square 68 | 69 | ```mermaid-example 70 | mindmap 71 | id(I am a rounded square) 72 | ``` 73 | 74 | ### Circle 75 | 76 | ```mermaid-example 77 | mindmap 78 | id((I am a circle)) 79 | ``` 80 | 81 | ### Bang 82 | 83 | ```mermaid-example 84 | mindmap 85 | id))I am a bang(( 86 | ``` 87 | 88 | ### Cloud 89 | 90 | ```mermaid-example 91 | mindmap 92 | id)I am a cloud( 93 | ``` 94 | 95 | ### Hexagon 96 | 97 | ```mermaid-example 98 | mindmap 99 | id{{I am a hexagon}} 100 | ``` 101 | 102 | ### Default 103 | 104 | ```mermaid-example 105 | mindmap 106 | I am the default shape 107 | ``` 108 | 109 | More shapes will be added, beginning with the shapes available in flowcharts. 110 | 111 | # Icons and classes 112 | 113 | ## Icons 114 | 115 | As with flowcharts you can add icons to your nodes but with an updated syntax. The styling for the font based icons are added during the integration so that they are available for the web page. _This is not something a diagram author can do but has to be done with the site administrator or the integrator_. Once the icon fonts are in place you add them to the mind map nodes using the `::icon()` syntax. You place the classes for the icon within the parenthesis like in the following example where icons for material design and fontawesome 4 are displayed. The intention is that this approach should be used for all diagrams supporting icons. **Experimental feature:** This wider scope is also the reason Mindmaps are experimental as this syntax and approach could change. 116 | 117 | ```mermaid-example 118 | mindmap 119 | Root 120 | A 121 | ::icon(fa fa-book) 122 | B(B) 123 | ::icon(mdi mdi-skull-outline) 124 | ``` 125 | 126 | ## Classes 127 | 128 | Again the syntax for adding classes is similar to flowcharts. You can add classes using a triple colon following a number of css classes separated by space. In the following example one of the nodes has two custom classes attached urgent turning the background red and the text white and large increasing the font size: 129 | 130 | ```mermaid-example 131 | mindmap 132 | Root 133 | A[A] 134 | :::urgent large 135 | B(B) 136 | C 137 | ``` 138 | 139 | _These classes need to be supplied by the site administrator._ 140 | 141 | ## Unclear indentation 142 | 143 | The actual indentation does not really matter only compared with the previous rows. If we take the previous example and disrupt it a little we can se how the calculations are performed. Let us start with placing C with a smaller indentation than `B`but larger then `A`. 144 | 145 | ``` 146 | mindmap 147 | Root 148 | A 149 | B 150 | C 151 | ``` 152 | 153 | This outline is unclear as `B` clearly is a child of `A` but when we move on to `C` the clarity is lost. `C` is not a child of `B` with a higher indentation nor does it have the same indentation as `B`. The only thing that is clear is that the first node with smaller indentation, indicating a parent, is A. Then Mermaid relies on this known truth and compensates for the unclear indentation and selects `A` as a parent of `C` leading till the same diagram with `B` and `C` as siblings. 154 | 155 | ```mermaid 156 | mindmap 157 | Root 158 | A 159 | B 160 | C 161 | ``` 162 | 163 | ## Markdown Strings 164 | 165 | The "Markdown Strings" feature enhances mind maps by offering a more versatile string type, which supports text formatting options such as bold and italics, and automatically wraps text within labels. 166 | 167 | ```mermaid-example 168 | mindmap 169 | id1["`**Root** with 170 | a second line 171 | Unicode works too: 🤓`"] 172 | id2["`The dog in **the** hog... a *very long text* that wraps to a new line`"] 173 | id3[Regular labels still works] 174 | ``` 175 | 176 | Formatting: 177 | 178 | - For bold text, use double asterisks \*\* before and after the text. 179 | - For italics, use single asterisks \* before and after the text. 180 | - With traditional strings, you needed to add
tags for text to wrap in nodes. However, markdown strings automatically wrap text when it becomes too long and allows you to start a new line by simply using a newline character instead of a
tag. -------------------------------------------------------------------------------- /src/lib/syntax/sequence.md: -------------------------------------------------------------------------------- 1 | # Sequence diagrams 2 | 3 | > A Sequence diagram is an interaction diagram that shows how processes operate with one another and in what order. 4 | 5 | Mermaid can render sequence diagrams. 6 | 7 | ```mermaid-example 8 | sequenceDiagram 9 | Alice->>John: Hello John, how are you? 10 | John-->>Alice: Great! 11 | Alice-)John: See you later! 12 | ``` 13 | 14 | ```mermaid 15 | sequenceDiagram 16 | Alice->>John: Hello John, how are you? 17 | John-->>Alice: Great! 18 | Alice-)John: See you later! 19 | ``` 20 | 21 | > **Note** 22 | > A note on nodes, the word "end" could potentially break the diagram, due to the way that the mermaid language is scripted. 23 | > 24 | > If unavoidable, one must use parentheses(), quotation marks "", or brackets {},\[], to enclose the word "end". i.e : (end), \[end], {end}. 25 | 26 | ## Syntax 27 | 28 | ### Participants 29 | 30 | The participants can be defined implicitly as in the first example on this page. The participants or actors are 31 | rendered in order of appearance in the diagram source text. Sometimes you might want to show the participants in a 32 | different order than how they appear in the first message. It is possible to specify the actor's order of 33 | appearance by doing the following: 34 | 35 | ```mermaid-example 36 | sequenceDiagram 37 | participant Alice 38 | participant Bob 39 | Alice->>Bob: Hi Bob 40 | Bob->>Alice: Hi Alice 41 | ``` 42 | 43 | ```mermaid 44 | sequenceDiagram 45 | participant Alice 46 | participant Bob 47 | Alice->>Bob: Hi Bob 48 | Bob->>Alice: Hi Alice 49 | ``` 50 | 51 | ### Actors 52 | 53 | If you specifically want to use the actor symbol instead of a rectangle with text you can do so by using actor statements as per below. 54 | 55 | ```mermaid-example 56 | sequenceDiagram 57 | actor Alice 58 | actor Bob 59 | Alice->>Bob: Hi Bob 60 | Bob->>Alice: Hi Alice 61 | ``` 62 | 63 | ```mermaid 64 | sequenceDiagram 65 | actor Alice 66 | actor Bob 67 | Alice->>Bob: Hi Bob 68 | Bob->>Alice: Hi Alice 69 | ``` 70 | 71 | ### Aliases 72 | 73 | The actor can have a convenient identifier and a descriptive label. 74 | 75 | ```mermaid-example 76 | sequenceDiagram 77 | participant A as Alice 78 | participant J as John 79 | A->>J: Hello John, how are you? 80 | J->>A: Great! 81 | ``` 82 | 83 | ```mermaid 84 | sequenceDiagram 85 | participant A as Alice 86 | participant J as John 87 | A->>J: Hello John, how are you? 88 | J->>A: Great! 89 | ``` 90 | 91 | ### Grouping / Box 92 | 93 | The actor(s) can be grouped in vertical boxes. You can define a color (if not, it will be transparent) and/or a descriptive label using the following notation: 94 | 95 | box Aqua Group Description 96 | ... actors ... 97 | end 98 | box Group without description 99 | ... actors ... 100 | end 101 | box rgb(33,66,99) 102 | ... actors ... 103 | end 104 | 105 | > **Note** 106 | > If your group name is a color you can force the color to be transparent: 107 | 108 | box transparent Aqua 109 | ... actors ... 110 | end 111 | 112 | ```mermaid-example 113 | sequenceDiagram 114 | box Purple Alice & John 115 | participant A 116 | participant J 117 | end 118 | box Another Group 119 | participant B 120 | participant C 121 | end 122 | A->>J: Hello John, how are you? 123 | J->>A: Great! 124 | A->>B: Hello Bob, how is Charly ? 125 | B->>C: Hello Charly, how are you? 126 | ``` 127 | 128 | ```mermaid 129 | sequenceDiagram 130 | box Purple Alice & John 131 | participant A 132 | participant J 133 | end 134 | box Another Group 135 | participant B 136 | participant C 137 | end 138 | A->>J: Hello John, how are you? 139 | J->>A: Great! 140 | A->>B: Hello Bob, how is Charly ? 141 | B->>C: Hello Charly, how are you? 142 | ``` 143 | 144 | ## Messages 145 | 146 | Messages can be of two displayed either solid or with a dotted line. 147 | 148 | [Actor][Arrow][Actor]:Message text 149 | 150 | There are six types of arrows currently supported: 151 | 152 | | Type | Description | 153 | | ------ | ------------------------------------------------ | 154 | | `->` | Solid line without arrow | 155 | | `-->` | Dotted line without arrow | 156 | | `->>` | Solid line with arrowhead | 157 | | `-->>` | Dotted line with arrowhead | 158 | | `-x` | Solid line with a cross at the end | 159 | | `--x` | Dotted line with a cross at the end. | 160 | | `-)` | Solid line with an open arrow at the end (async) | 161 | | `--)` | Dotted line with a open arrow at the end (async) | 162 | 163 | ## Activations 164 | 165 | It is possible to activate and deactivate an actor. (de)activation can be dedicated declarations: 166 | 167 | ```mermaid-example 168 | sequenceDiagram 169 | Alice->>John: Hello John, how are you? 170 | activate John 171 | John-->>Alice: Great! 172 | deactivate John 173 | ``` 174 | 175 | ```mermaid 176 | sequenceDiagram 177 | Alice->>John: Hello John, how are you? 178 | activate John 179 | John-->>Alice: Great! 180 | deactivate John 181 | ``` 182 | 183 | There is also a shortcut notation by appending `+`/`-` suffix to the message arrow: 184 | 185 | ```mermaid-example 186 | sequenceDiagram 187 | Alice->>+John: Hello John, how are you? 188 | John-->>-Alice: Great! 189 | ``` 190 | 191 | ```mermaid 192 | sequenceDiagram 193 | Alice->>+John: Hello John, how are you? 194 | John-->>-Alice: Great! 195 | ``` 196 | 197 | Activations can be stacked for same actor: 198 | 199 | ```mermaid-example 200 | sequenceDiagram 201 | Alice->>+John: Hello John, how are you? 202 | Alice->>+John: John, can you hear me? 203 | John-->>-Alice: Hi Alice, I can hear you! 204 | John-->>-Alice: I feel great! 205 | ``` 206 | 207 | ```mermaid 208 | sequenceDiagram 209 | Alice->>+John: Hello John, how are you? 210 | Alice->>+John: John, can you hear me? 211 | John-->>-Alice: Hi Alice, I can hear you! 212 | John-->>-Alice: I feel great! 213 | ``` 214 | 215 | ## Notes 216 | 217 | It is possible to add notes to a sequence diagram. This is done by the notation 218 | Note \[ right of | left of | over ] \[Actor]: Text in note content 219 | 220 | See the example below: 221 | 222 | ```mermaid-example 223 | sequenceDiagram 224 | participant John 225 | Note right of John: Text in note 226 | ``` 227 | 228 | ```mermaid 229 | sequenceDiagram 230 | participant John 231 | Note right of John: Text in note 232 | ``` 233 | 234 | It is also possible to create notes spanning two participants: 235 | 236 | ```mermaid-example 237 | sequenceDiagram 238 | Alice->John: Hello John, how are you? 239 | Note over Alice,John: A typical interaction 240 | ``` 241 | 242 | ```mermaid 243 | sequenceDiagram 244 | Alice->John: Hello John, how are you? 245 | Note over Alice,John: A typical interaction 246 | ``` 247 | 248 | It is also possible to add a line break (applies to text input in general): 249 | 250 | ```mermaid-example 251 | sequenceDiagram 252 | Alice->John: Hello John, how are you? 253 | Note over Alice,John: A typical interaction
But now in two lines 254 | ``` 255 | 256 | ```mermaid 257 | sequenceDiagram 258 | Alice->John: Hello John, how are you? 259 | Note over Alice,John: A typical interaction
But now in two lines 260 | ``` 261 | 262 | ## Loops 263 | 264 | It is possible to express loops in a sequence diagram. This is done by the notation 265 | 266 | loop Loop text 267 | ... statements ... 268 | end 269 | 270 | See the example below: 271 | 272 | ```mermaid-example 273 | sequenceDiagram 274 | Alice->John: Hello John, how are you? 275 | loop Every minute 276 | John-->Alice: Great! 277 | end 278 | ``` 279 | 280 | ```mermaid 281 | sequenceDiagram 282 | Alice->John: Hello John, how are you? 283 | loop Every minute 284 | John-->Alice: Great! 285 | end 286 | ``` 287 | 288 | ## Alt 289 | 290 | It is possible to express alternative paths in a sequence diagram. This is done by the notation 291 | 292 | alt Describing text 293 | ... statements ... 294 | else 295 | ... statements ... 296 | end 297 | 298 | or if there is sequence that is optional (if without else). 299 | 300 | opt Describing text 301 | ... statements ... 302 | end 303 | 304 | See the example below: 305 | 306 | ```mermaid-example 307 | sequenceDiagram 308 | Alice->>Bob: Hello Bob, how are you? 309 | alt is sick 310 | Bob->>Alice: Not so good :( 311 | else is well 312 | Bob->>Alice: Feeling fresh like a daisy 313 | end 314 | opt Extra response 315 | Bob->>Alice: Thanks for asking 316 | end 317 | ``` 318 | 319 | ```mermaid 320 | sequenceDiagram 321 | Alice->>Bob: Hello Bob, how are you? 322 | alt is sick 323 | Bob->>Alice: Not so good :( 324 | else is well 325 | Bob->>Alice: Feeling fresh like a daisy 326 | end 327 | opt Extra response 328 | Bob->>Alice: Thanks for asking 329 | end 330 | ``` 331 | 332 | ## Parallel 333 | 334 | It is possible to show actions that are happening in parallel. 335 | 336 | This is done by the notation 337 | 338 | par [Action 1] 339 | ... statements ... 340 | and [Action 2] 341 | ... statements ... 342 | and [Action N] 343 | ... statements ... 344 | end 345 | 346 | See the example below: 347 | 348 | ```mermaid-example 349 | sequenceDiagram 350 | par Alice to Bob 351 | Alice->>Bob: Hello guys! 352 | and Alice to John 353 | Alice->>John: Hello guys! 354 | end 355 | Bob-->>Alice: Hi Alice! 356 | John-->>Alice: Hi Alice! 357 | ``` 358 | 359 | ```mermaid 360 | sequenceDiagram 361 | par Alice to Bob 362 | Alice->>Bob: Hello guys! 363 | and Alice to John 364 | Alice->>John: Hello guys! 365 | end 366 | Bob-->>Alice: Hi Alice! 367 | John-->>Alice: Hi Alice! 368 | ``` 369 | 370 | It is also possible to nest parallel blocks. 371 | 372 | ```mermaid-example 373 | sequenceDiagram 374 | par Alice to Bob 375 | Alice->>Bob: Go help John 376 | and Alice to John 377 | Alice->>John: I want this done today 378 | par John to Charlie 379 | John->>Charlie: Can we do this today? 380 | and John to Diana 381 | John->>Diana: Can you help us today? 382 | end 383 | end 384 | ``` 385 | 386 | ```mermaid 387 | sequenceDiagram 388 | par Alice to Bob 389 | Alice->>Bob: Go help John 390 | and Alice to John 391 | Alice->>John: I want this done today 392 | par John to Charlie 393 | John->>Charlie: Can we do this today? 394 | and John to Diana 395 | John->>Diana: Can you help us today? 396 | end 397 | end 398 | ``` 399 | 400 | ## Critical Region 401 | 402 | It is possible to show actions that must happen automatically with conditional handling of circumstances. 403 | 404 | This is done by the notation 405 | 406 | critical [Action that must be performed] 407 | ... statements ... 408 | option [Circumstance A] 409 | ... statements ... 410 | option [Circumstance B] 411 | ... statements ... 412 | end 413 | 414 | See the example below: 415 | 416 | ```mermaid-example 417 | sequenceDiagram 418 | critical Establish a connection to the DB 419 | Service-->DB: connect 420 | option Network timeout 421 | Service-->Service: Log error 422 | option Credentials rejected 423 | Service-->Service: Log different error 424 | end 425 | ``` -------------------------------------------------------------------------------- /src/lib/syntax/state.md: -------------------------------------------------------------------------------- 1 | # State diagrams 2 | 3 | > "A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. 4 | > State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the 5 | > case, while at other times this is a reasonable abstraction." Wikipedia 6 | 7 | Mermaid can render state diagrams. The syntax tries to be compliant with the syntax used in plantUml as this will make 8 | it easier for users to share diagrams between mermaid and plantUml. 9 | 10 | ```mermaid-example 11 | --- 12 | title: Simple sample 13 | --- 14 | stateDiagram-v2 15 | [*] --> Still 16 | Still --> [*] 17 | 18 | Still --> Moving 19 | Moving --> Still 20 | Moving --> Crash 21 | Crash --> [*] 22 | ``` 23 | 24 | ```mermaid 25 | --- 26 | title: Simple sample 27 | --- 28 | stateDiagram-v2 29 | [*] --> Still 30 | Still --> [*] 31 | 32 | Still --> Moving 33 | Moving --> Still 34 | Moving --> Crash 35 | Crash --> [*] 36 | ``` 37 | 38 | Older renderer: 39 | 40 | ```mermaid-example 41 | stateDiagram 42 | [*] --> Still 43 | Still --> [*] 44 | 45 | Still --> Moving 46 | Moving --> Still 47 | Moving --> Crash 48 | Crash --> [*] 49 | ``` 50 | 51 | ```mermaid 52 | stateDiagram 53 | [*] --> Still 54 | Still --> [*] 55 | 56 | Still --> Moving 57 | Moving --> Still 58 | Moving --> Crash 59 | Crash --> [*] 60 | ``` 61 | 62 | In state diagrams systems are described in terms of _states_ and how one _state_ can change to another _state_ via 63 | a _transition._ The example diagram above shows three states: **Still**, **Moving** and **Crash**. You start in the 64 | **Still** state. From **Still** you can change to the **Moving** state. From **Moving** you can change either back to the **Still** state or to 65 | the **Crash** state. There is no transition from **Still** to **Crash**. (You can't crash if you're still.) 66 | 67 | ## States 68 | 69 | A state can be declared in multiple ways. The simplest way is to define a state with just an id: 70 | 71 | ```mermaid-example 72 | stateDiagram-v2 73 | stateId 74 | ``` 75 | 76 | ```mermaid 77 | stateDiagram-v2 78 | stateId 79 | ``` 80 | 81 | Another way is by using the state keyword with a description as per below: 82 | 83 | ```mermaid-example 84 | stateDiagram-v2 85 | state "This is a state description" as s2 86 | ``` 87 | 88 | ```mermaid 89 | stateDiagram-v2 90 | state "This is a state description" as s2 91 | ``` 92 | 93 | Another way to define a state with a description is to define the state id followed by a colon and the description: 94 | 95 | ```mermaid-example 96 | stateDiagram-v2 97 | s2 : This is a state description 98 | ``` 99 | 100 | ```mermaid 101 | stateDiagram-v2 102 | s2 : This is a state description 103 | ``` 104 | 105 | ## Transitions 106 | 107 | Transitions are path/edges when one state passes into another. This is represented using text arrow, "-->". 108 | 109 | When you define a transition between two states and the states are not already defined, the undefined states are defined 110 | with the id from the transition. You can later add descriptions to states defined this way. 111 | 112 | ```mermaid-example 113 | stateDiagram-v2 114 | s1 --> s2 115 | ``` 116 | 117 | ```mermaid 118 | stateDiagram-v2 119 | s1 --> s2 120 | ``` 121 | 122 | It is possible to add text to a transition to describe what it represents: 123 | 124 | ```mermaid-example 125 | stateDiagram-v2 126 | s1 --> s2: A transition 127 | ``` 128 | 129 | ```mermaid 130 | stateDiagram-v2 131 | s1 --> s2: A transition 132 | ``` 133 | 134 | ## Start and End 135 | 136 | There are two special states indicating the start and stop of the diagram. These are written with the \[\*] syntax and 137 | the direction of the transition to it defines it either as a start or a stop state. 138 | 139 | ```mermaid-example 140 | stateDiagram-v2 141 | [*] --> s1 142 | s1 --> [*] 143 | ``` 144 | 145 | ```mermaid 146 | stateDiagram-v2 147 | [*] --> s1 148 | s1 --> [*] 149 | ``` 150 | 151 | ## Composite states 152 | 153 | In a real world use of state diagrams you often end up with diagrams that are multidimensional as one state can 154 | have several internal states. These are called composite states in this terminology. 155 | 156 | In order to define a composite state you need to use the state keyword followed by an id and the body of the composite 157 | state between {}. See the example below: 158 | 159 | ```mermaid-example 160 | stateDiagram-v2 161 | [*] --> First 162 | state First { 163 | [*] --> second 164 | second --> [*] 165 | } 166 | ``` 167 | 168 | ```mermaid 169 | stateDiagram-v2 170 | [*] --> First 171 | state First { 172 | [*] --> second 173 | second --> [*] 174 | } 175 | ``` 176 | 177 | You can do this in several layers: 178 | 179 | ```mermaid-example 180 | stateDiagram-v2 181 | [*] --> First 182 | 183 | state First { 184 | [*] --> Second 185 | 186 | state Second { 187 | [*] --> second 188 | second --> Third 189 | 190 | state Third { 191 | [*] --> third 192 | third --> [*] 193 | } 194 | } 195 | } 196 | ``` 197 | 198 | ```mermaid 199 | stateDiagram-v2 200 | [*] --> First 201 | 202 | state First { 203 | [*] --> Second 204 | 205 | state Second { 206 | [*] --> second 207 | second --> Third 208 | 209 | state Third { 210 | [*] --> third 211 | third --> [*] 212 | } 213 | } 214 | } 215 | ``` -------------------------------------------------------------------------------- /src/lib/syntax/timeline.md: -------------------------------------------------------------------------------- 1 | # Timeline Diagram 2 | 3 | "A timeline is a type of diagram used to illustrate a chronology of events, dates, or periods of time. It is usually presented graphically to indicate the passing of time, and it is usually organized chronologically. A basic timeline presents a list of events in chronological order, usually using dates as markers. A timeline can also be used to show the relationship between events, such as the relationship between the events of a person's life." Wikipedia 4 | 5 | ### An example of a timeline. 6 | 7 | ```mermaid-example 8 | timeline 9 | title History of Social Media Platform 10 | 2002 : LinkedIn 11 | 2004 : Facebook 12 | : Google 13 | 2005 : Youtube 14 | 2006 : Twitter 15 | ``` 16 | 17 | ```mermaid 18 | timeline 19 | title History of Social Media Platform 20 | 2002 : LinkedIn 21 | 2004 : Facebook 22 | : Google 23 | 2005 : Youtube 24 | 2006 : Twitter 25 | ``` 26 | 27 | ## Syntax 28 | 29 | The syntax for creating Timeline diagram is simple. You always start with the `timeline` keyword to let mermaid know that you want to create a timeline diagram. 30 | 31 | After that there is a possibility to add a title to the timeline. This is done by adding a line with the keyword `title` followed by the title text. 32 | 33 | Then you add the timeline data, where you always start with a time period, followed by a colon and then the text for the event. Optionally you can add a second colon and then the text for the event. So, you can have one or more events per time period. 34 | 35 | ``` 36 | {time period} : {event} 37 | ``` 38 | 39 | or 40 | 41 | ``` 42 | {time period} : {event} : {event} 43 | ``` 44 | 45 | or 46 | 47 | ``` 48 | {time period} : {event} 49 | : {event} 50 | : {event} 51 | ``` 52 | 53 | NOTE: Both time period and event are simple text, and not limited to numbers. 54 | 55 | Let us look at the syntax for the example above. 56 | 57 | ```mermaid-example 58 | timeline 59 | title History of Social Media Platform 60 | 2002 : LinkedIn 61 | 2004 : Facebook : Google 62 | 2005 : Youtube 63 | 2006 : Twitter 64 | ``` 65 | 66 | ```mermaid 67 | timeline 68 | title History of Social Media Platform 69 | 2002 : LinkedIn 70 | 2004 : Facebook : Google 71 | 2005 : Youtube 72 | 2006 : Twitter 73 | ``` 74 | 75 | In this way we can use a text outline to generate a timeline diagram. 76 | 77 | ## Grouping of time periods in sections/ages 78 | 79 | ```mermaid-example 80 | timeline 81 | title Timeline of Industrial Revolution 82 | section 17th-20th century 83 | Industry 1.0 : Machinery, Water power, Steam
power 84 | Industry 2.0 : Electricity, Internal combustion engine, Mass production 85 | Industry 3.0 : Electronics, Computers, Automation 86 | section 21st century 87 | Industry 4.0 : Internet, Robotics, Internet of Things 88 | Industry 5.0 : Artificial intelligence, Big data,3D printing 89 | ``` 90 | 91 | ```mermaid 92 | timeline 93 | title Timeline of Industrial Revolution 94 | section 17th-20th century 95 | Industry 1.0 : Machinery, Water power, Steam
power 96 | Industry 2.0 : Electricity, Internal combustion engine, Mass production 97 | Industry 3.0 : Electronics, Computers, Automation 98 | section 21st century 99 | Industry 4.0 : Internet, Robotics, Internet of Things 100 | Industry 5.0 : Artificial intelligence, Big data,3D printing 101 | ``` 102 | 103 | ## Wrapping of text for long time-periods or events 104 | 105 | ```mermaid-example 106 | timeline 107 | title England's History Timeline 108 | section Stone Age 109 | 7600 BC : Britain's oldest known house was built in Orkney, Scotland 110 | 6000 BC : Sea levels rise and Britain becomes an island.
The people who live here are hunter-gatherers. 111 | section Broze Age 112 | 2300 BC : People arrive from Europe and settle in Britain.
They bring farming and metalworking. 113 | : New styles of pottery and ways of burying the dead appear. 114 | 2200 BC : The last major building works are completed at Stonehenge.
People now bury their dead in stone circles. 115 | : The first metal objects are made in Britain.Some other nice things happen. it is a good time to be alive. 116 | 117 | ``` 118 | 119 | ```mermaid 120 | timeline 121 | title England's History Timeline 122 | section Stone Age 123 | 7600 BC : Britain's oldest known house was built in Orkney, Scotland 124 | 6000 BC : Sea levels rise and Britain becomes an island.
The people who live here are hunter-gatherers. 125 | section Broze Age 126 | 2300 BC : People arrive from Europe and settle in Britain.
They bring farming and metalworking. 127 | : New styles of pottery and ways of burying the dead appear. 128 | 2200 BC : The last major building works are completed at Stonehenge.
People now bury their dead in stone circles. 129 | : The first metal objects are made in Britain.Some other nice things happen. it is a good time to be alive. 130 | 131 | ``` 132 | 133 | ```mermaid-example 134 | timeline 135 | title MermaidChart 2023 Timeline 136 | section 2023 Q1
Release Personal Tier 137 | Buttet 1 : sub-point 1a : sub-point 1b 138 | : sub-point 1c 139 | Bullet 2 : sub-point 2a : sub-point 2b 140 | section 2023 Q2
Release XYZ Tier 141 | Buttet 3 : sub-point
3a : sub-point 3b 142 | : sub-point 3c 143 | Bullet 4 : sub-point 4a : sub-point 4b 144 | ``` 145 | 146 | ```mermaid 147 | timeline 148 | title MermaidChart 2023 Timeline 149 | section 2023 Q1
Release Personal Tier 150 | Buttet 1 : sub-point 1a : sub-point 1b 151 | : sub-point 1c 152 | Bullet 2 : sub-point 2a : sub-point 2b 153 | section 2023 Q2
Release XYZ Tier 154 | Buttet 3 : sub-point
3a : sub-point 3b 155 | : sub-point 3c 156 | Bullet 4 : sub-point 4a : sub-point 4b 157 | ``` -------------------------------------------------------------------------------- /src/lib/syntax/userjourney.md: -------------------------------------------------------------------------------- 1 | # User Journey Diagram 2 | 3 | > User journeys describe at a high level of detail exactly what steps different users take to complete a specific task within a system, application or website. This technique shows the current (as-is) user workflow, and reveals areas of improvement for the to-be workflow. (Wikipedia) 4 | 5 | Mermaid can render user journey diagrams: 6 | 7 | ```mermaid-example 8 | journey 9 | title My working day 10 | section Go to work 11 | Make tea: 5: Me 12 | Go upstairs: 3: Me 13 | Do work: 1: Me, Cat 14 | section Go home 15 | Go downstairs: 5: Me 16 | Sit down: 5: Me 17 | ``` 18 | 19 | ```mermaid 20 | journey 21 | title My working day 22 | section Go to work 23 | Make tea: 5: Me 24 | Go upstairs: 3: Me 25 | Do work: 1: Me, Cat 26 | section Go home 27 | Go downstairs: 5: Me 28 | Sit down: 5: Me 29 | ``` 30 | 31 | Each user journey is split into sections, these describe the part of the task 32 | the user is trying to complete. 33 | 34 | Tasks syntax is `Task name: : ` -------------------------------------------------------------------------------- /src/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import '@/styles/globals.css' 2 | import type { AppProps } from 'next/app' 3 | 4 | export default function App({ Component, pageProps }: AppProps) { 5 | return 6 | } 7 | -------------------------------------------------------------------------------- /src/pages/_document.tsx: -------------------------------------------------------------------------------- 1 | import { Html, Head, Main, NextScript } from 'next/document' 2 | 3 | export default function Document() { 4 | return ( 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /src/pages/api/ask.ts: -------------------------------------------------------------------------------- 1 | import { OpenAI } from "langchain"; 2 | import { NextApiRequest, NextApiResponse } from "next"; 3 | import { HumanChatMessage, SystemChatMessage } from "langchain/schema"; 4 | import { ChatOpenAI } from "langchain/chat_models"; 5 | import { sanitizeText } from "@/lib/helpers"; 6 | import { promptByTemplate, TemplateEnum } from "@/lib/prompt-by-template"; 7 | import { generate } from "@/lib/generate"; 8 | 9 | const chat = new ChatOpenAI({ temperature: 0 }); 10 | 11 | export default async function handler( 12 | req: NextApiRequest, 13 | res: NextApiResponse 14 | ) { 15 | const { input, selectedTemplate = TemplateEnum.FLOWCHART } = req.body; 16 | 17 | if (!input) { 18 | return res.status(400).json({ message: "No input in the request" }); 19 | } 20 | 21 | // NOTE: OpenAI recommends replacing newlines with spaces for best results 22 | 23 | try { 24 | const ans = await generate({ input, selectedTemplate }); 25 | 26 | // TODO: implement langchain parsed answer 27 | const text = ans.text 28 | .replaceAll("```", "") 29 | .replaceAll(`"`, `'`) 30 | .replaceAll(`end[End]`, `ends[End]`) 31 | .replace("mermaid", ""); 32 | 33 | return res.status(200).json({ text }); 34 | } catch (e) { 35 | throw e; 36 | 37 | return res.status(400).json(e); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import axios from "axios"; 3 | import { Mermaid } from "@/components/mermaid"; 4 | import SelectTemplate from "@/components/select-template"; 5 | import { TemplateEnum } from "@/lib/prompt-by-template"; 6 | import Image from "next/image"; 7 | import Nav from "@/components/nav"; 8 | 9 | const Index = () => { 10 | const [error, setError] = useState(""); 11 | const [loading, setLoading] = useState(false); 12 | const [input, setInput] = useState(""); 13 | const [selectedTemplate, setSelectedTemplate] = useState( 14 | TemplateEnum.FLOWCHART 15 | ); 16 | 17 | const name = input ? input.replace(/\s/g, "-").toLowerCase() : ""; 18 | 19 | const [chart, setChart] = useState(""); 20 | 21 | const handleFlow = async (e: any) => { 22 | e.preventDefault(); 23 | if (!input && !loading) return; 24 | setLoading(true); 25 | 26 | try { 27 | const res = await axios.post("/api/ask", { 28 | input, 29 | selectedTemplate, 30 | }); 31 | 32 | if (res.data.text) { 33 | setChart(res.data.text); 34 | } else { 35 | setError("Sorry! a small issue occurred"); 36 | } 37 | } catch (e) { 38 | console.log(e); 39 | setError("Sorry! a small issue occurred"); 40 | } finally { 41 | setLoading(false); 42 | } 43 | }; 44 | 45 | return ( 46 |
47 |
93 | ); 94 | }; 95 | 96 | export default Index; 97 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .btn-grad { 6 | @apply bg-gradient-to-r from-teal-200 to-lime-200 text-black; 7 | } 8 | 9 | .bg-stripe { 10 | background: #222 repeating-linear-gradient( 11 | to bottom, 12 | transparent 7px, 13 | rgba(0, 0, 0, 0.8) 9px, 14 | rgba(0, 0, 0, 0.8) 13px, 15 | transparent 13px 16 | ); 17 | } 18 | 19 | .mermaid svg{ 20 | margin: 0 auto!important; 21 | } -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: ["./src/**/*.{js,ts,jsx,tsx}"], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [require("daisyui")], 8 | important: true, 9 | daisyui: { 10 | themes: [ 11 | { 12 | app_dark: { 13 | primary: "#00ffff", 14 | secondary: "#f6d860", 15 | accent: "#37cdbe", 16 | neutral: "#3d4451", 17 | "base-100": "#050505", 18 | 19 | "--rounded-box": "1rem", // border radius rounded-box utility class, used in card and other large boxes 20 | "--rounded-btn": "0.5rem", // border radius rounded-btn utility class, used in buttons and similar element 21 | "--rounded-badge": "1.9rem", // border radius rounded-badge utility class, used in badges and similar 22 | "--animation-btn": "0.25s", // duration of animation when you click on button 23 | "--animation-input": "0.2s", // duration of animation for inputs like checkbox, toggle, radio, etc 24 | "--btn-text-case": "uppercase", // set default text transform for buttons 25 | "--btn-focus-scale": "0.95", // scale transform of button when you focus on it 26 | "--border-btn": "1px", // border width of buttons 27 | "--tab-border": "1px", // border width of tabs 28 | "--tab-radius": "0.5rem", // border radius of tabs 29 | }, 30 | }, 31 | ], 32 | }, 33 | }; 34 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "paths": { 18 | "@/*": ["./src/*"] 19 | } 20 | }, 21 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 22 | "exclude": ["node_modules"] 23 | } 24 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@anthropic-ai/sdk@^0.4.2": 6 | version "0.4.3" 7 | resolved "https://registry.yarnpkg.com/@anthropic-ai/sdk/-/sdk-0.4.3.tgz#372878ad2b86b7e10e047eafd781e3aea69f8a80" 8 | integrity sha512-SZrlXvjUUYT9rPmSzlTtmVk1OjVNpkCzILRluhiYwNcxXfQyvPJDi0CI6PyymygcgtqEF5EVqhKmC/PtPsNEIw== 9 | dependencies: 10 | "@fortaine/fetch-event-source" "^3.0.6" 11 | cross-fetch "^3.1.5" 12 | 13 | "@braintree/sanitize-url@^6.0.0": 14 | version "6.0.2" 15 | resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" 16 | integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== 17 | 18 | "@dqbd/tiktoken@^1.0.4": 19 | version "1.0.4" 20 | resolved "https://registry.yarnpkg.com/@dqbd/tiktoken/-/tiktoken-1.0.4.tgz#30c61cb5b865e839af88c1014e4ff16f6278e4ce" 21 | integrity sha512-C0HrJj2RNlsB3wslfNHGNH8xN7QQMki+y4JkUor/GE+oIfPvH7yVep9l1/2powam8AAH6+gdv5MggA5gsszweg== 22 | 23 | "@fortaine/fetch-event-source@^3.0.6": 24 | version "3.0.6" 25 | resolved "https://registry.yarnpkg.com/@fortaine/fetch-event-source/-/fetch-event-source-3.0.6.tgz#b8552a2ca2c5202f5699b93a92be0188d422b06e" 26 | integrity sha512-621GAuLMvKtyZQ3IA6nlDWhV1V/7PGOTNIGLUifxt0KzM+dZIweJ6F3XvQF3QnqeNfS1N7WQ0Kil1Di/lhChEw== 27 | 28 | "@iconify/react@^4.1.0": 29 | version "4.1.0" 30 | resolved "https://registry.yarnpkg.com/@iconify/react/-/react-4.1.0.tgz#5ea86acae6e209a2f5b1b52922ab85d0d22f9b45" 31 | integrity sha512-Mf72i3TNNKpKCKxmo7kzqyrUdCgaoljpqtWmtqpqwyxoV4ukhnDsSRNLhf2yBnqGr3cVZsdj/i0FMpXIY0Qk0g== 32 | dependencies: 33 | "@iconify/types" "^2.0.0" 34 | 35 | "@iconify/types@^2.0.0": 36 | version "2.0.0" 37 | resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" 38 | integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== 39 | 40 | "@khanacademy/simple-markdown@^0.8.6": 41 | version "0.8.6" 42 | resolved "https://registry.yarnpkg.com/@khanacademy/simple-markdown/-/simple-markdown-0.8.6.tgz#9c9aef1f5ce2ce60292d13849165965a57c26f25" 43 | integrity sha512-mAUlR9lchzfqunR89pFvNI51jQKsMpJeWYsYWw0DQcUXczn/T/V6510utgvm7X0N3zN87j1SvuKk8cMbl9IAFw== 44 | dependencies: 45 | "@types/react" ">=16.0.0" 46 | 47 | "@next/env@13.3.0": 48 | version "13.3.0" 49 | resolved "https://registry.yarnpkg.com/@next/env/-/env-13.3.0.tgz#cc2e49f03060a4684ce7ec7fd617a21bc5b9edba" 50 | integrity sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ== 51 | 52 | "@next/swc-darwin-arm64@13.3.0": 53 | version "13.3.0" 54 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz#38f18e0639cd4c7edc6a38d4b83fe00f38eea4f2" 55 | integrity sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w== 56 | 57 | "@next/swc-darwin-x64@13.3.0": 58 | version "13.3.0" 59 | resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz#b670ed1fd1d231aa21279173ec52e3ad56dc6aeb" 60 | integrity sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg== 61 | 62 | "@next/swc-linux-arm64-gnu@13.3.0": 63 | version "13.3.0" 64 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz#b114935f6b4c94c123f6cac55a4823d483209ba5" 65 | integrity sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw== 66 | 67 | "@next/swc-linux-arm64-musl@13.3.0": 68 | version "13.3.0" 69 | resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz#67a57309f8761c7d00d629d6785d56ed0567a0d2" 70 | integrity sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ== 71 | 72 | "@next/swc-linux-x64-gnu@13.3.0": 73 | version "13.3.0" 74 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz#11bd2bea7c00b40be111c0dd16e71171f3792086" 75 | integrity sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA== 76 | 77 | "@next/swc-linux-x64-musl@13.3.0": 78 | version "13.3.0" 79 | resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz#d57e99f85890799b78719c3ea32a4624de8d701b" 80 | integrity sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw== 81 | 82 | "@next/swc-win32-arm64-msvc@13.3.0": 83 | version "13.3.0" 84 | resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz#0c209aa35d1c88b01e78259a89cd68f4139b5093" 85 | integrity sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA== 86 | 87 | "@next/swc-win32-ia32-msvc@13.3.0": 88 | version "13.3.0" 89 | resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz#52ae74da1dd6d840c3743923367d27ed013803dd" 90 | integrity sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w== 91 | 92 | "@next/swc-win32-x64-msvc@13.3.0": 93 | version "13.3.0" 94 | resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz#db7b55fee834dc8c2c484c696469e65bae2ee770" 95 | integrity sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ== 96 | 97 | "@nodelib/fs.scandir@2.1.5": 98 | version "2.1.5" 99 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 100 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 101 | dependencies: 102 | "@nodelib/fs.stat" "2.0.5" 103 | run-parallel "^1.1.9" 104 | 105 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 106 | version "2.0.5" 107 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 108 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 109 | 110 | "@nodelib/fs.walk@^1.2.3": 111 | version "1.2.8" 112 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 113 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 114 | dependencies: 115 | "@nodelib/fs.scandir" "2.1.5" 116 | fastq "^1.6.0" 117 | 118 | "@swc/helpers@0.4.14": 119 | version "0.4.14" 120 | resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.4.14.tgz#1352ac6d95e3617ccb7c1498ff019654f1e12a74" 121 | integrity sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw== 122 | dependencies: 123 | tslib "^2.4.0" 124 | 125 | "@types/json-schema@^7.0.8": 126 | version "7.0.11" 127 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 128 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 129 | 130 | "@types/node@18.15.11": 131 | version "18.15.11" 132 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" 133 | integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== 134 | 135 | "@types/prop-types@*": 136 | version "15.7.5" 137 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 138 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 139 | 140 | "@types/react-dom@18.0.11": 141 | version "18.0.11" 142 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" 143 | integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== 144 | dependencies: 145 | "@types/react" "*" 146 | 147 | "@types/react@*", "@types/react@18.0.33", "@types/react@>=16.0.0": 148 | version "18.0.33" 149 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.33.tgz#a1575160cb4376787c2f5fe0312302f824baa61e" 150 | integrity sha512-sHxzVxeanvQyQ1lr8NSHaj0kDzcNiGpILEVt69g9S31/7PfMvNCKLKcsHw4lYKjs3cGNJjXSP4mYzX43QlnjNA== 151 | dependencies: 152 | "@types/prop-types" "*" 153 | "@types/scheduler" "*" 154 | csstype "^3.0.2" 155 | 156 | "@types/scheduler@*": 157 | version "0.16.3" 158 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" 159 | integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== 160 | 161 | ajv-keywords@^3.5.2: 162 | version "3.5.2" 163 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 164 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 165 | 166 | ajv@^6.12.5: 167 | version "6.12.6" 168 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 169 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 170 | dependencies: 171 | fast-deep-equal "^3.1.1" 172 | fast-json-stable-stringify "^2.0.0" 173 | json-schema-traverse "^0.4.1" 174 | uri-js "^4.2.2" 175 | 176 | any-promise@^1.0.0: 177 | version "1.3.0" 178 | resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 179 | integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== 180 | 181 | anymatch@~3.1.2: 182 | version "3.1.3" 183 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 184 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 185 | dependencies: 186 | normalize-path "^3.0.0" 187 | picomatch "^2.0.4" 188 | 189 | arg@^5.0.2: 190 | version "5.0.2" 191 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" 192 | integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== 193 | 194 | asynckit@^0.4.0: 195 | version "0.4.0" 196 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 197 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 198 | 199 | autoprefixer@^10.4.14: 200 | version "10.4.14" 201 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" 202 | integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== 203 | dependencies: 204 | browserslist "^4.21.5" 205 | caniuse-lite "^1.0.30001464" 206 | fraction.js "^4.2.0" 207 | normalize-range "^0.1.2" 208 | picocolors "^1.0.0" 209 | postcss-value-parser "^4.2.0" 210 | 211 | axios@^0.26.0: 212 | version "0.26.1" 213 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" 214 | integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== 215 | dependencies: 216 | follow-redirects "^1.14.8" 217 | 218 | axios@^1.3.5: 219 | version "1.3.5" 220 | resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.5.tgz#e07209b39a0d11848e3e341fa087acd71dadc542" 221 | integrity sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw== 222 | dependencies: 223 | follow-redirects "^1.15.0" 224 | form-data "^4.0.0" 225 | proxy-from-env "^1.1.0" 226 | 227 | balanced-match@^1.0.0: 228 | version "1.0.2" 229 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 230 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 231 | 232 | big.js@^5.2.2: 233 | version "5.2.2" 234 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 235 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 236 | 237 | binary-extensions@^2.0.0: 238 | version "2.2.0" 239 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 240 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 241 | 242 | brace-expansion@^1.1.7: 243 | version "1.1.11" 244 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 245 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 246 | dependencies: 247 | balanced-match "^1.0.0" 248 | concat-map "0.0.1" 249 | 250 | braces@^3.0.2, braces@~3.0.2: 251 | version "3.0.2" 252 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 253 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 254 | dependencies: 255 | fill-range "^7.0.1" 256 | 257 | browser-or-node@^2.1.1: 258 | version "2.1.1" 259 | resolved "https://registry.yarnpkg.com/browser-or-node/-/browser-or-node-2.1.1.tgz#738790b3a86a8fc020193fa581273fbe65eaea0f" 260 | integrity sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg== 261 | 262 | browserslist@^4.21.5: 263 | version "4.21.5" 264 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" 265 | integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== 266 | dependencies: 267 | caniuse-lite "^1.0.30001449" 268 | electron-to-chromium "^1.4.284" 269 | node-releases "^2.0.8" 270 | update-browserslist-db "^1.0.10" 271 | 272 | busboy@1.6.0: 273 | version "1.6.0" 274 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" 275 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== 276 | dependencies: 277 | streamsearch "^1.1.0" 278 | 279 | camelcase-css@^2.0.1: 280 | version "2.0.1" 281 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 282 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 283 | 284 | caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: 285 | version "1.0.30001476" 286 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001476.tgz#759906c53eae17133217d75b482f9dc5c02f7898" 287 | integrity sha512-JmpktFppVSvyUN4gsLS0bShY2L9ZUslHLE72vgemBkS43JD2fOvKTKs+GtRwuxrtRGnwJFW0ye7kWRRlLJS9vQ== 288 | 289 | chokidar@^3.5.3: 290 | version "3.5.3" 291 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 292 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 293 | dependencies: 294 | anymatch "~3.1.2" 295 | braces "~3.0.2" 296 | glob-parent "~5.1.2" 297 | is-binary-path "~2.1.0" 298 | is-glob "~4.0.1" 299 | normalize-path "~3.0.0" 300 | readdirp "~3.6.0" 301 | optionalDependencies: 302 | fsevents "~2.3.2" 303 | 304 | client-only@0.0.1: 305 | version "0.0.1" 306 | resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" 307 | integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== 308 | 309 | color-convert@^2.0.1: 310 | version "2.0.1" 311 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 312 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 313 | dependencies: 314 | color-name "~1.1.4" 315 | 316 | color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: 317 | version "1.1.4" 318 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 319 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 320 | 321 | color-string@^1.9.0: 322 | version "1.9.1" 323 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" 324 | integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== 325 | dependencies: 326 | color-name "^1.0.0" 327 | simple-swizzle "^0.2.2" 328 | 329 | color@^4.2: 330 | version "4.2.3" 331 | resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" 332 | integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== 333 | dependencies: 334 | color-convert "^2.0.1" 335 | color-string "^1.9.0" 336 | 337 | combined-stream@^1.0.8: 338 | version "1.0.8" 339 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 340 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 341 | dependencies: 342 | delayed-stream "~1.0.0" 343 | 344 | commander@7: 345 | version "7.2.0" 346 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 347 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 348 | 349 | commander@^4.0.0: 350 | version "4.1.1" 351 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 352 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== 353 | 354 | concat-map@0.0.1: 355 | version "0.0.1" 356 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 357 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 358 | 359 | cose-base@^1.0.0: 360 | version "1.0.3" 361 | resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" 362 | integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== 363 | dependencies: 364 | layout-base "^1.0.0" 365 | 366 | cose-base@^2.2.0: 367 | version "2.2.0" 368 | resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01" 369 | integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== 370 | dependencies: 371 | layout-base "^2.0.0" 372 | 373 | cross-fetch@^3.1.5: 374 | version "3.1.5" 375 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" 376 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 377 | dependencies: 378 | node-fetch "2.6.7" 379 | 380 | css-selector-tokenizer@^0.8.0: 381 | version "0.8.0" 382 | resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz#88267ef6238e64f2215ea2764b3e2cf498b845dd" 383 | integrity sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg== 384 | dependencies: 385 | cssesc "^3.0.0" 386 | fastparse "^1.1.2" 387 | 388 | cssesc@^3.0.0: 389 | version "3.0.0" 390 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 391 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 392 | 393 | csstype@^3.0.2: 394 | version "3.1.2" 395 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" 396 | integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== 397 | 398 | cytoscape-cose-bilkent@^4.1.0: 399 | version "4.1.0" 400 | resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" 401 | integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== 402 | dependencies: 403 | cose-base "^1.0.0" 404 | 405 | cytoscape-fcose@^2.1.0: 406 | version "2.2.0" 407 | resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" 408 | integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== 409 | dependencies: 410 | cose-base "^2.2.0" 411 | 412 | cytoscape@^3.23.0: 413 | version "3.23.0" 414 | resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.23.0.tgz#054ee05a6d0aa3b4f139382bbf2f4e5226df3c6d" 415 | integrity sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA== 416 | dependencies: 417 | heap "^0.2.6" 418 | lodash "^4.17.21" 419 | 420 | "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: 421 | version "3.2.3" 422 | resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.3.tgz#39f1f4954e4a09ff69ac597c2d61906b04e84740" 423 | integrity sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ== 424 | dependencies: 425 | internmap "1 - 2" 426 | 427 | d3-axis@3: 428 | version "3.0.0" 429 | resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" 430 | integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== 431 | 432 | d3-brush@3: 433 | version "3.0.0" 434 | resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" 435 | integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== 436 | dependencies: 437 | d3-dispatch "1 - 3" 438 | d3-drag "2 - 3" 439 | d3-interpolate "1 - 3" 440 | d3-selection "3" 441 | d3-transition "3" 442 | 443 | d3-chord@3: 444 | version "3.0.1" 445 | resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" 446 | integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== 447 | dependencies: 448 | d3-path "1 - 3" 449 | 450 | "d3-color@1 - 3", d3-color@3: 451 | version "3.1.0" 452 | resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" 453 | integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== 454 | 455 | d3-contour@4: 456 | version "4.0.2" 457 | resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" 458 | integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== 459 | dependencies: 460 | d3-array "^3.2.0" 461 | 462 | d3-delaunay@6: 463 | version "6.0.4" 464 | resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" 465 | integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== 466 | dependencies: 467 | delaunator "5" 468 | 469 | "d3-dispatch@1 - 3", d3-dispatch@3: 470 | version "3.0.1" 471 | resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" 472 | integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== 473 | 474 | "d3-drag@2 - 3", d3-drag@3: 475 | version "3.0.0" 476 | resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" 477 | integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== 478 | dependencies: 479 | d3-dispatch "1 - 3" 480 | d3-selection "3" 481 | 482 | "d3-dsv@1 - 3", d3-dsv@3: 483 | version "3.0.1" 484 | resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" 485 | integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== 486 | dependencies: 487 | commander "7" 488 | iconv-lite "0.6" 489 | rw "1" 490 | 491 | "d3-ease@1 - 3", d3-ease@3: 492 | version "3.0.1" 493 | resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" 494 | integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== 495 | 496 | d3-fetch@3: 497 | version "3.0.1" 498 | resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" 499 | integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== 500 | dependencies: 501 | d3-dsv "1 - 3" 502 | 503 | d3-force@3: 504 | version "3.0.0" 505 | resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" 506 | integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== 507 | dependencies: 508 | d3-dispatch "1 - 3" 509 | d3-quadtree "1 - 3" 510 | d3-timer "1 - 3" 511 | 512 | "d3-format@1 - 3", d3-format@3: 513 | version "3.1.0" 514 | resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" 515 | integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== 516 | 517 | d3-geo@3: 518 | version "3.1.0" 519 | resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.0.tgz#74fd54e1f4cebd5185ac2039217a98d39b0a4c0e" 520 | integrity sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA== 521 | dependencies: 522 | d3-array "2.5.0 - 3" 523 | 524 | d3-hierarchy@3: 525 | version "3.1.2" 526 | resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" 527 | integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== 528 | 529 | "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: 530 | version "3.0.1" 531 | resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" 532 | integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== 533 | dependencies: 534 | d3-color "1 - 3" 535 | 536 | "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: 537 | version "3.1.0" 538 | resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" 539 | integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== 540 | 541 | d3-polygon@3: 542 | version "3.0.1" 543 | resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" 544 | integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== 545 | 546 | "d3-quadtree@1 - 3", d3-quadtree@3: 547 | version "3.0.1" 548 | resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" 549 | integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== 550 | 551 | d3-random@3: 552 | version "3.0.1" 553 | resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" 554 | integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== 555 | 556 | d3-scale-chromatic@3: 557 | version "3.0.0" 558 | resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a" 559 | integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g== 560 | dependencies: 561 | d3-color "1 - 3" 562 | d3-interpolate "1 - 3" 563 | 564 | d3-scale@4: 565 | version "4.0.2" 566 | resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" 567 | integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== 568 | dependencies: 569 | d3-array "2.10.0 - 3" 570 | d3-format "1 - 3" 571 | d3-interpolate "1.2.0 - 3" 572 | d3-time "2.1.1 - 3" 573 | d3-time-format "2 - 4" 574 | 575 | "d3-selection@2 - 3", d3-selection@3: 576 | version "3.0.0" 577 | resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" 578 | integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== 579 | 580 | d3-shape@3: 581 | version "3.2.0" 582 | resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" 583 | integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== 584 | dependencies: 585 | d3-path "^3.1.0" 586 | 587 | "d3-time-format@2 - 4", d3-time-format@4: 588 | version "4.1.0" 589 | resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" 590 | integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== 591 | dependencies: 592 | d3-time "1 - 3" 593 | 594 | "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: 595 | version "3.1.0" 596 | resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" 597 | integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== 598 | dependencies: 599 | d3-array "2 - 3" 600 | 601 | "d3-timer@1 - 3", d3-timer@3: 602 | version "3.0.1" 603 | resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" 604 | integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== 605 | 606 | "d3-transition@2 - 3", d3-transition@3: 607 | version "3.0.1" 608 | resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" 609 | integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== 610 | dependencies: 611 | d3-color "1 - 3" 612 | d3-dispatch "1 - 3" 613 | d3-ease "1 - 3" 614 | d3-interpolate "1 - 3" 615 | d3-timer "1 - 3" 616 | 617 | d3-zoom@3: 618 | version "3.0.0" 619 | resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" 620 | integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== 621 | dependencies: 622 | d3-dispatch "1 - 3" 623 | d3-drag "2 - 3" 624 | d3-interpolate "1 - 3" 625 | d3-selection "2 - 3" 626 | d3-transition "2 - 3" 627 | 628 | d3@^7.4.0, d3@^7.8.2: 629 | version "7.8.4" 630 | resolved "https://registry.yarnpkg.com/d3/-/d3-7.8.4.tgz#e35d45800e4068cab07e59e5d883a4bb42ab217f" 631 | integrity sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA== 632 | dependencies: 633 | d3-array "3" 634 | d3-axis "3" 635 | d3-brush "3" 636 | d3-chord "3" 637 | d3-color "3" 638 | d3-contour "4" 639 | d3-delaunay "6" 640 | d3-dispatch "3" 641 | d3-drag "3" 642 | d3-dsv "3" 643 | d3-ease "3" 644 | d3-fetch "3" 645 | d3-force "3" 646 | d3-format "3" 647 | d3-geo "3" 648 | d3-hierarchy "3" 649 | d3-interpolate "3" 650 | d3-path "3" 651 | d3-polygon "3" 652 | d3-quadtree "3" 653 | d3-random "3" 654 | d3-scale "4" 655 | d3-scale-chromatic "3" 656 | d3-selection "3" 657 | d3-shape "3" 658 | d3-time "3" 659 | d3-time-format "4" 660 | d3-timer "3" 661 | d3-transition "3" 662 | d3-zoom "3" 663 | 664 | dagre-d3-es@7.0.10: 665 | version "7.0.10" 666 | resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" 667 | integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== 668 | dependencies: 669 | d3 "^7.8.2" 670 | lodash-es "^4.17.21" 671 | 672 | daisyui@^2.51.5: 673 | version "2.51.5" 674 | resolved "https://registry.yarnpkg.com/daisyui/-/daisyui-2.51.5.tgz#9caf846ef602d949a468bc2d5f0a7f877cdce5f5" 675 | integrity sha512-L05dRw0tasmz2Ha+10LhftEGLq4kaA8vRR/T0wDaXfHwqcgsf81jfXDJ6NlZ63Z7Rl1k3rj7UHs0l0p7CM3aYA== 676 | dependencies: 677 | color "^4.2" 678 | css-selector-tokenizer "^0.8.0" 679 | postcss-js "^4.0.0" 680 | tailwindcss "^3" 681 | 682 | dayjs@^1.11.7: 683 | version "1.11.7" 684 | resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" 685 | integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== 686 | 687 | delaunator@5: 688 | version "5.0.0" 689 | resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b" 690 | integrity sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw== 691 | dependencies: 692 | robust-predicates "^3.0.0" 693 | 694 | delayed-stream@~1.0.0: 695 | version "1.0.0" 696 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 697 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 698 | 699 | didyoumean@^1.2.2: 700 | version "1.2.2" 701 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" 702 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 703 | 704 | dlv@^1.1.3: 705 | version "1.1.3" 706 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" 707 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 708 | 709 | dompurify@2.4.5: 710 | version "2.4.5" 711 | resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.5.tgz#0e89a27601f0bad978f9a924e7a05d5d2cccdd87" 712 | integrity sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA== 713 | 714 | electron-to-chromium@^1.4.284: 715 | version "1.4.356" 716 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.356.tgz#b75a8a8c31d571f6024310cc980a08cd6c15a8c5" 717 | integrity sha512-nEftV1dRX3omlxAj42FwqRZT0i4xd2dIg39sog/CnCJeCcL1TRd2Uh0i9Oebgv8Ou0vzTPw++xc+Z20jzS2B6A== 718 | 719 | elkjs@^0.8.2: 720 | version "0.8.2" 721 | resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" 722 | integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== 723 | 724 | emojis-list@^3.0.0: 725 | version "3.0.0" 726 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" 727 | integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== 728 | 729 | escalade@^3.1.1: 730 | version "3.1.1" 731 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 732 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 733 | 734 | eventemitter3@^4.0.4: 735 | version "4.0.7" 736 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 737 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 738 | 739 | exponential-backoff@^3.1.0: 740 | version "3.1.1" 741 | resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" 742 | integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== 743 | 744 | expr-eval@^2.0.2: 745 | version "2.0.2" 746 | resolved "https://registry.yarnpkg.com/expr-eval/-/expr-eval-2.0.2.tgz#fa6f044a7b0c93fde830954eb9c5b0f7fbc7e201" 747 | integrity sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg== 748 | 749 | fast-deep-equal@^3.1.1: 750 | version "3.1.3" 751 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 752 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 753 | 754 | fast-glob@^3.2.12: 755 | version "3.2.12" 756 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" 757 | integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 758 | dependencies: 759 | "@nodelib/fs.stat" "^2.0.2" 760 | "@nodelib/fs.walk" "^1.2.3" 761 | glob-parent "^5.1.2" 762 | merge2 "^1.3.0" 763 | micromatch "^4.0.4" 764 | 765 | fast-json-stable-stringify@^2.0.0: 766 | version "2.1.0" 767 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 768 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 769 | 770 | fastparse@^1.1.2: 771 | version "1.1.2" 772 | resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" 773 | integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== 774 | 775 | fastq@^1.6.0: 776 | version "1.15.0" 777 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 778 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 779 | dependencies: 780 | reusify "^1.0.4" 781 | 782 | fill-range@^7.0.1: 783 | version "7.0.1" 784 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 785 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 786 | dependencies: 787 | to-regex-range "^5.0.1" 788 | 789 | flat@^5.0.2: 790 | version "5.0.2" 791 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 792 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 793 | 794 | follow-redirects@^1.14.8, follow-redirects@^1.15.0: 795 | version "1.15.2" 796 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 797 | integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 798 | 799 | form-data@^4.0.0: 800 | version "4.0.0" 801 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 802 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 803 | dependencies: 804 | asynckit "^0.4.0" 805 | combined-stream "^1.0.8" 806 | mime-types "^2.1.12" 807 | 808 | fraction.js@^4.2.0: 809 | version "4.2.0" 810 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" 811 | integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== 812 | 813 | fs.realpath@^1.0.0: 814 | version "1.0.0" 815 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 816 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 817 | 818 | fsevents@~2.3.2: 819 | version "2.3.2" 820 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 821 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 822 | 823 | function-bind@^1.1.1: 824 | version "1.1.1" 825 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 826 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 827 | 828 | glob-parent@^5.1.2, glob-parent@~5.1.2: 829 | version "5.1.2" 830 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 831 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 832 | dependencies: 833 | is-glob "^4.0.1" 834 | 835 | glob-parent@^6.0.2: 836 | version "6.0.2" 837 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 838 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 839 | dependencies: 840 | is-glob "^4.0.3" 841 | 842 | glob@7.1.6: 843 | version "7.1.6" 844 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 845 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 846 | dependencies: 847 | fs.realpath "^1.0.0" 848 | inflight "^1.0.4" 849 | inherits "2" 850 | minimatch "^3.0.4" 851 | once "^1.3.0" 852 | path-is-absolute "^1.0.0" 853 | 854 | has@^1.0.3: 855 | version "1.0.3" 856 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 857 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 858 | dependencies: 859 | function-bind "^1.1.1" 860 | 861 | heap@^0.2.6: 862 | version "0.2.7" 863 | resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" 864 | integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== 865 | 866 | iconv-lite@0.6: 867 | version "0.6.3" 868 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 869 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 870 | dependencies: 871 | safer-buffer ">= 2.1.2 < 3.0.0" 872 | 873 | inflight@^1.0.4: 874 | version "1.0.6" 875 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 876 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 877 | dependencies: 878 | once "^1.3.0" 879 | wrappy "1" 880 | 881 | inherits@2: 882 | version "2.0.4" 883 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 884 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 885 | 886 | "internmap@1 - 2": 887 | version "2.0.3" 888 | resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" 889 | integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== 890 | 891 | is-arrayish@^0.3.1: 892 | version "0.3.2" 893 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 894 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 895 | 896 | is-binary-path@^2.1.0, is-binary-path@~2.1.0: 897 | version "2.1.0" 898 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 899 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 900 | dependencies: 901 | binary-extensions "^2.0.0" 902 | 903 | is-core-module@^2.11.0: 904 | version "2.11.0" 905 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" 906 | integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== 907 | dependencies: 908 | has "^1.0.3" 909 | 910 | is-extglob@^2.1.1: 911 | version "2.1.1" 912 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 913 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 914 | 915 | is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 916 | version "4.0.3" 917 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 918 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 919 | dependencies: 920 | is-extglob "^2.1.1" 921 | 922 | is-number@^7.0.0: 923 | version "7.0.0" 924 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 925 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 926 | 927 | jiti@^1.17.2: 928 | version "1.18.2" 929 | resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" 930 | integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== 931 | 932 | "js-tokens@^3.0.0 || ^4.0.0": 933 | version "4.0.0" 934 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 935 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 936 | 937 | json-schema-traverse@^0.4.1: 938 | version "0.4.1" 939 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 940 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 941 | 942 | json5@^2.1.2: 943 | version "2.2.3" 944 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 945 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 946 | 947 | jsonpointer@^5.0.1: 948 | version "5.0.1" 949 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" 950 | integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== 951 | 952 | khroma@^2.0.0: 953 | version "2.0.0" 954 | resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.0.0.tgz#7577de98aed9f36c7a474c4d453d94c0d6c6588b" 955 | integrity sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g== 956 | 957 | langchain@^0.0.51: 958 | version "0.0.51" 959 | resolved "https://registry.yarnpkg.com/langchain/-/langchain-0.0.51.tgz#429016787965656d1eb5a6ff44a94af8327c960f" 960 | integrity sha512-uKjH4NZjiuKXVFfRhHSNEiPpwFb/P34hVpkg6HSFCJ2iynrtLTRNRLLAHbkXb1e2gMZT0cFVrKZuwC59xL13+g== 961 | dependencies: 962 | "@anthropic-ai/sdk" "^0.4.2" 963 | "@fortaine/fetch-event-source" "^3.0.6" 964 | browser-or-node "^2.1.1" 965 | exponential-backoff "^3.1.0" 966 | expr-eval "^2.0.2" 967 | flat "^5.0.2" 968 | is-binary-path "^2.1.0" 969 | jsonpointer "^5.0.1" 970 | object-hash "^3.0.0" 971 | openai "^3.2.0" 972 | p-queue "^6.6.2" 973 | uuid "^9.0.0" 974 | yaml "^2.2.1" 975 | zod "^3.21.4" 976 | 977 | layout-base@^1.0.0: 978 | version "1.0.2" 979 | resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" 980 | integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== 981 | 982 | layout-base@^2.0.0: 983 | version "2.0.1" 984 | resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285" 985 | integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== 986 | 987 | lilconfig@^2.0.5, lilconfig@^2.0.6: 988 | version "2.1.0" 989 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" 990 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== 991 | 992 | lines-and-columns@^1.1.6: 993 | version "1.2.4" 994 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 995 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 996 | 997 | loader-utils@^2.0.0: 998 | version "2.0.4" 999 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" 1000 | integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== 1001 | dependencies: 1002 | big.js "^5.2.2" 1003 | emojis-list "^3.0.0" 1004 | json5 "^2.1.2" 1005 | 1006 | lodash-es@^4.17.21: 1007 | version "4.17.21" 1008 | resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" 1009 | integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== 1010 | 1011 | lodash@^4.17.21: 1012 | version "4.17.21" 1013 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1014 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1015 | 1016 | loose-envify@^1.1.0: 1017 | version "1.4.0" 1018 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 1019 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1020 | dependencies: 1021 | js-tokens "^3.0.0 || ^4.0.0" 1022 | 1023 | merge2@^1.3.0: 1024 | version "1.4.1" 1025 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1026 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1027 | 1028 | mermaid@^10.1.0: 1029 | version "10.1.0" 1030 | resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.1.0.tgz#6e40d5250174f4750ca6548e4ee00f6ae210855a" 1031 | integrity sha512-LYekSMNJygI1VnMizAPUddY95hZxOjwZxr7pODczILInO0dhQKuhXeu4sargtnuTwCilSuLS7Uiq/Qn7HTVrmA== 1032 | dependencies: 1033 | "@braintree/sanitize-url" "^6.0.0" 1034 | "@khanacademy/simple-markdown" "^0.8.6" 1035 | cytoscape "^3.23.0" 1036 | cytoscape-cose-bilkent "^4.1.0" 1037 | cytoscape-fcose "^2.1.0" 1038 | d3 "^7.4.0" 1039 | dagre-d3-es "7.0.10" 1040 | dayjs "^1.11.7" 1041 | dompurify "2.4.5" 1042 | elkjs "^0.8.2" 1043 | khroma "^2.0.0" 1044 | lodash-es "^4.17.21" 1045 | non-layered-tidy-tree-layout "^2.0.2" 1046 | stylis "^4.1.2" 1047 | ts-dedent "^2.2.0" 1048 | uuid "^9.0.0" 1049 | web-worker "^1.2.0" 1050 | 1051 | micromatch@^4.0.4, micromatch@^4.0.5: 1052 | version "4.0.5" 1053 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1054 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1055 | dependencies: 1056 | braces "^3.0.2" 1057 | picomatch "^2.3.1" 1058 | 1059 | mime-db@1.52.0: 1060 | version "1.52.0" 1061 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1062 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1063 | 1064 | mime-types@^2.1.12: 1065 | version "2.1.35" 1066 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1067 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1068 | dependencies: 1069 | mime-db "1.52.0" 1070 | 1071 | minimatch@^3.0.4: 1072 | version "3.1.2" 1073 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1074 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1075 | dependencies: 1076 | brace-expansion "^1.1.7" 1077 | 1078 | mz@^2.7.0: 1079 | version "2.7.0" 1080 | resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 1081 | integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== 1082 | dependencies: 1083 | any-promise "^1.0.0" 1084 | object-assign "^4.0.1" 1085 | thenify-all "^1.0.0" 1086 | 1087 | nanoid@^3.3.4: 1088 | version "3.3.6" 1089 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" 1090 | integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== 1091 | 1092 | next@13.3.0: 1093 | version "13.3.0" 1094 | resolved "https://registry.yarnpkg.com/next/-/next-13.3.0.tgz#40632d303d74fc8521faa0a5bf4a033a392749b1" 1095 | integrity sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA== 1096 | dependencies: 1097 | "@next/env" "13.3.0" 1098 | "@swc/helpers" "0.4.14" 1099 | busboy "1.6.0" 1100 | caniuse-lite "^1.0.30001406" 1101 | postcss "8.4.14" 1102 | styled-jsx "5.1.1" 1103 | optionalDependencies: 1104 | "@next/swc-darwin-arm64" "13.3.0" 1105 | "@next/swc-darwin-x64" "13.3.0" 1106 | "@next/swc-linux-arm64-gnu" "13.3.0" 1107 | "@next/swc-linux-arm64-musl" "13.3.0" 1108 | "@next/swc-linux-x64-gnu" "13.3.0" 1109 | "@next/swc-linux-x64-musl" "13.3.0" 1110 | "@next/swc-win32-arm64-msvc" "13.3.0" 1111 | "@next/swc-win32-ia32-msvc" "13.3.0" 1112 | "@next/swc-win32-x64-msvc" "13.3.0" 1113 | 1114 | node-fetch@2.6.7: 1115 | version "2.6.7" 1116 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 1117 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 1118 | dependencies: 1119 | whatwg-url "^5.0.0" 1120 | 1121 | node-releases@^2.0.8: 1122 | version "2.0.10" 1123 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" 1124 | integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== 1125 | 1126 | non-layered-tidy-tree-layout@^2.0.2: 1127 | version "2.0.2" 1128 | resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" 1129 | integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== 1130 | 1131 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1132 | version "3.0.0" 1133 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1134 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1135 | 1136 | normalize-range@^0.1.2: 1137 | version "0.1.2" 1138 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 1139 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 1140 | 1141 | object-assign@^4.0.1: 1142 | version "4.1.1" 1143 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1144 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1145 | 1146 | object-hash@^3.0.0: 1147 | version "3.0.0" 1148 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" 1149 | integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== 1150 | 1151 | once@^1.3.0: 1152 | version "1.4.0" 1153 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1154 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1155 | dependencies: 1156 | wrappy "1" 1157 | 1158 | openai@^3.2.0: 1159 | version "3.2.1" 1160 | resolved "https://registry.yarnpkg.com/openai/-/openai-3.2.1.tgz#1fa35bdf979cbde8453b43f2dd3a7d401ee40866" 1161 | integrity sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A== 1162 | dependencies: 1163 | axios "^0.26.0" 1164 | form-data "^4.0.0" 1165 | 1166 | p-finally@^1.0.0: 1167 | version "1.0.0" 1168 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1169 | integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== 1170 | 1171 | p-queue@^6.6.2: 1172 | version "6.6.2" 1173 | resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" 1174 | integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== 1175 | dependencies: 1176 | eventemitter3 "^4.0.4" 1177 | p-timeout "^3.2.0" 1178 | 1179 | p-timeout@^3.2.0: 1180 | version "3.2.0" 1181 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" 1182 | integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== 1183 | dependencies: 1184 | p-finally "^1.0.0" 1185 | 1186 | path-is-absolute@^1.0.0: 1187 | version "1.0.1" 1188 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1189 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1190 | 1191 | path-parse@^1.0.7: 1192 | version "1.0.7" 1193 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1194 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1195 | 1196 | picocolors@^1.0.0: 1197 | version "1.0.0" 1198 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1199 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1200 | 1201 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 1202 | version "2.3.1" 1203 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1204 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1205 | 1206 | pify@^2.3.0: 1207 | version "2.3.0" 1208 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1209 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 1210 | 1211 | pirates@^4.0.1: 1212 | version "4.0.5" 1213 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 1214 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 1215 | 1216 | postcss-import@^14.1.0: 1217 | version "14.1.0" 1218 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" 1219 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== 1220 | dependencies: 1221 | postcss-value-parser "^4.0.0" 1222 | read-cache "^1.0.0" 1223 | resolve "^1.1.7" 1224 | 1225 | postcss-js@^4.0.0: 1226 | version "4.0.1" 1227 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" 1228 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== 1229 | dependencies: 1230 | camelcase-css "^2.0.1" 1231 | 1232 | postcss-load-config@^3.1.4: 1233 | version "3.1.4" 1234 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" 1235 | integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== 1236 | dependencies: 1237 | lilconfig "^2.0.5" 1238 | yaml "^1.10.2" 1239 | 1240 | postcss-nested@6.0.0: 1241 | version "6.0.0" 1242 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" 1243 | integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== 1244 | dependencies: 1245 | postcss-selector-parser "^6.0.10" 1246 | 1247 | postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: 1248 | version "6.0.11" 1249 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" 1250 | integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== 1251 | dependencies: 1252 | cssesc "^3.0.0" 1253 | util-deprecate "^1.0.2" 1254 | 1255 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: 1256 | version "4.2.0" 1257 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 1258 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 1259 | 1260 | postcss@8.4.14: 1261 | version "8.4.14" 1262 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" 1263 | integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== 1264 | dependencies: 1265 | nanoid "^3.3.4" 1266 | picocolors "^1.0.0" 1267 | source-map-js "^1.0.2" 1268 | 1269 | postcss@^8.0.9, postcss@^8.4.21: 1270 | version "8.4.21" 1271 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" 1272 | integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== 1273 | dependencies: 1274 | nanoid "^3.3.4" 1275 | picocolors "^1.0.0" 1276 | source-map-js "^1.0.2" 1277 | 1278 | prettier@^2.8.7: 1279 | version "2.8.7" 1280 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450" 1281 | integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw== 1282 | 1283 | proxy-from-env@^1.1.0: 1284 | version "1.1.0" 1285 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 1286 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 1287 | 1288 | punycode@^2.1.0: 1289 | version "2.3.0" 1290 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" 1291 | integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== 1292 | 1293 | queue-microtask@^1.2.2: 1294 | version "1.2.3" 1295 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1296 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1297 | 1298 | quick-lru@^5.1.1: 1299 | version "5.1.1" 1300 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1301 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1302 | 1303 | raw-loader@^4.0.2: 1304 | version "4.0.2" 1305 | resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" 1306 | integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== 1307 | dependencies: 1308 | loader-utils "^2.0.0" 1309 | schema-utils "^3.0.0" 1310 | 1311 | react-dom@18.2.0: 1312 | version "18.2.0" 1313 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1314 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1315 | dependencies: 1316 | loose-envify "^1.1.0" 1317 | scheduler "^0.23.0" 1318 | 1319 | react-zoom-pan-pinch@^3.0.6: 1320 | version "3.0.6" 1321 | resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.0.6.tgz#c664beb4b335962c270b11d1c0ec95b2187505b0" 1322 | integrity sha512-0Blz0XyWDKEYKHg8tBznOOdCWZOTtXFdSpaAdr3dqbeA7BBZn2xd0fEqNlzk2pXAvV1dmEso2vNLCpqCZh2NPQ== 1323 | 1324 | react@18.2.0: 1325 | version "18.2.0" 1326 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1327 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1328 | dependencies: 1329 | loose-envify "^1.1.0" 1330 | 1331 | read-cache@^1.0.0: 1332 | version "1.0.0" 1333 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 1334 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== 1335 | dependencies: 1336 | pify "^2.3.0" 1337 | 1338 | readdirp@~3.6.0: 1339 | version "3.6.0" 1340 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1341 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1342 | dependencies: 1343 | picomatch "^2.2.1" 1344 | 1345 | resolve@^1.1.7, resolve@^1.22.1: 1346 | version "1.22.2" 1347 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" 1348 | integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== 1349 | dependencies: 1350 | is-core-module "^2.11.0" 1351 | path-parse "^1.0.7" 1352 | supports-preserve-symlinks-flag "^1.0.0" 1353 | 1354 | reusify@^1.0.4: 1355 | version "1.0.4" 1356 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1357 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1358 | 1359 | robust-predicates@^3.0.0: 1360 | version "3.0.1" 1361 | resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.1.tgz#ecde075044f7f30118682bd9fb3f123109577f9a" 1362 | integrity sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g== 1363 | 1364 | run-parallel@^1.1.9: 1365 | version "1.2.0" 1366 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1367 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1368 | dependencies: 1369 | queue-microtask "^1.2.2" 1370 | 1371 | rw@1: 1372 | version "1.3.3" 1373 | resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" 1374 | integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== 1375 | 1376 | "safer-buffer@>= 2.1.2 < 3.0.0": 1377 | version "2.1.2" 1378 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1379 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1380 | 1381 | scheduler@^0.23.0: 1382 | version "0.23.0" 1383 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1384 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1385 | dependencies: 1386 | loose-envify "^1.1.0" 1387 | 1388 | schema-utils@^3.0.0: 1389 | version "3.1.1" 1390 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 1391 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 1392 | dependencies: 1393 | "@types/json-schema" "^7.0.8" 1394 | ajv "^6.12.5" 1395 | ajv-keywords "^3.5.2" 1396 | 1397 | simple-swizzle@^0.2.2: 1398 | version "0.2.2" 1399 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 1400 | integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== 1401 | dependencies: 1402 | is-arrayish "^0.3.1" 1403 | 1404 | source-map-js@^1.0.2: 1405 | version "1.0.2" 1406 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1407 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1408 | 1409 | streamsearch@^1.1.0: 1410 | version "1.1.0" 1411 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" 1412 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 1413 | 1414 | styled-jsx@5.1.1: 1415 | version "5.1.1" 1416 | resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" 1417 | integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== 1418 | dependencies: 1419 | client-only "0.0.1" 1420 | 1421 | stylis@^4.1.2: 1422 | version "4.1.3" 1423 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" 1424 | integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== 1425 | 1426 | sucrase@^3.29.0: 1427 | version "3.31.0" 1428 | resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.31.0.tgz#daae4fd458167c5d4ba1cce6aef57b988b417b33" 1429 | integrity sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ== 1430 | dependencies: 1431 | commander "^4.0.0" 1432 | glob "7.1.6" 1433 | lines-and-columns "^1.1.6" 1434 | mz "^2.7.0" 1435 | pirates "^4.0.1" 1436 | ts-interface-checker "^0.1.9" 1437 | 1438 | supports-preserve-symlinks-flag@^1.0.0: 1439 | version "1.0.0" 1440 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1441 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1442 | 1443 | tailwindcss@^3, tailwindcss@^3.3.1: 1444 | version "3.3.1" 1445 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.1.tgz#b6662fab6a9b704779e48d083a9fef5a81d2b81e" 1446 | integrity sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g== 1447 | dependencies: 1448 | arg "^5.0.2" 1449 | chokidar "^3.5.3" 1450 | color-name "^1.1.4" 1451 | didyoumean "^1.2.2" 1452 | dlv "^1.1.3" 1453 | fast-glob "^3.2.12" 1454 | glob-parent "^6.0.2" 1455 | is-glob "^4.0.3" 1456 | jiti "^1.17.2" 1457 | lilconfig "^2.0.6" 1458 | micromatch "^4.0.5" 1459 | normalize-path "^3.0.0" 1460 | object-hash "^3.0.0" 1461 | picocolors "^1.0.0" 1462 | postcss "^8.0.9" 1463 | postcss-import "^14.1.0" 1464 | postcss-js "^4.0.0" 1465 | postcss-load-config "^3.1.4" 1466 | postcss-nested "6.0.0" 1467 | postcss-selector-parser "^6.0.11" 1468 | postcss-value-parser "^4.2.0" 1469 | quick-lru "^5.1.1" 1470 | resolve "^1.22.1" 1471 | sucrase "^3.29.0" 1472 | 1473 | thenify-all@^1.0.0: 1474 | version "1.6.0" 1475 | resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 1476 | integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== 1477 | dependencies: 1478 | thenify ">= 3.1.0 < 4" 1479 | 1480 | "thenify@>= 3.1.0 < 4": 1481 | version "3.3.1" 1482 | resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" 1483 | integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== 1484 | dependencies: 1485 | any-promise "^1.0.0" 1486 | 1487 | to-regex-range@^5.0.1: 1488 | version "5.0.1" 1489 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1490 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1491 | dependencies: 1492 | is-number "^7.0.0" 1493 | 1494 | tr46@~0.0.3: 1495 | version "0.0.3" 1496 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1497 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1498 | 1499 | ts-dedent@^2.2.0: 1500 | version "2.2.0" 1501 | resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" 1502 | integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== 1503 | 1504 | ts-interface-checker@^0.1.9: 1505 | version "0.1.13" 1506 | resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" 1507 | integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== 1508 | 1509 | tslib@^2.4.0: 1510 | version "2.5.0" 1511 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" 1512 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== 1513 | 1514 | typescript@5.0.4: 1515 | version "5.0.4" 1516 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" 1517 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== 1518 | 1519 | update-browserslist-db@^1.0.10: 1520 | version "1.0.10" 1521 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" 1522 | integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== 1523 | dependencies: 1524 | escalade "^3.1.1" 1525 | picocolors "^1.0.0" 1526 | 1527 | uri-js@^4.2.2: 1528 | version "4.4.1" 1529 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1530 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1531 | dependencies: 1532 | punycode "^2.1.0" 1533 | 1534 | util-deprecate@^1.0.2: 1535 | version "1.0.2" 1536 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1537 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1538 | 1539 | uuid@^9.0.0: 1540 | version "9.0.0" 1541 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" 1542 | integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== 1543 | 1544 | web-worker@^1.2.0: 1545 | version "1.2.0" 1546 | resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" 1547 | integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== 1548 | 1549 | webidl-conversions@^3.0.0: 1550 | version "3.0.1" 1551 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1552 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1553 | 1554 | whatwg-url@^5.0.0: 1555 | version "5.0.0" 1556 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1557 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1558 | dependencies: 1559 | tr46 "~0.0.3" 1560 | webidl-conversions "^3.0.0" 1561 | 1562 | wrappy@1: 1563 | version "1.0.2" 1564 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1565 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1566 | 1567 | yaml@^1.10.2: 1568 | version "1.10.2" 1569 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1570 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1571 | 1572 | yaml@^2.2.1: 1573 | version "2.2.1" 1574 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" 1575 | integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== 1576 | 1577 | zod@^3.21.4: 1578 | version "3.21.4" 1579 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" 1580 | integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== 1581 | --------------------------------------------------------------------------------