Welcome to Bolero!
25 |This application demonstrates Bolero's major features.
26 |-
27 |
- 28 | The entire application is driven by 29 | Elmish. 30 | 31 |
- 32 | The Problem run primes problem 33 | 34 |
Enjoy writing awesome apps!
36 |├── .gitignore
├── Blazor
├── App.razor
├── Blazor.csproj
├── Layout
│ ├── MainLayout.razor
│ ├── MainLayout.razor.css
│ ├── NavMenu.razor
│ └── NavMenu.razor.css
├── Pages
│ ├── Home.razor
│ └── Problem.razor
├── Program.cs
├── Properties
│ └── launchSettings.json
├── _Imports.razor
└── wwwroot
│ ├── css
│ ├── app.css
│ └── bootstrap
│ │ ├── bootstrap.min.css
│ │ └── bootstrap.min.css.map
│ ├── favicon.png
│ ├── icon-192.png
│ ├── index.html
│ └── sample-data
│ └── weather.json
├── Bolero
├── BoleroPrime.Client
│ ├── BoleroPrime.Client.fsproj
│ ├── Main.fs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── Startup.fs
│ └── wwwroot
│ │ ├── css
│ │ └── index.css
│ │ ├── favicon.ico
│ │ └── main.html
└── BoleroPrime.Server
│ ├── BoleroPrime.Server.fsproj
│ ├── Index.fs
│ ├── Properties
│ └── launchSettings.json
│ ├── Startup.fs
│ └── data
│ └── books.json
├── Console6
├── Console6.fsproj
└── Program.fs
├── Console7
├── Console.fsproj
└── Program.fs
├── Console8
├── Console.fsproj
└── Program.fs
├── Fable
├── .config
│ └── dotnet-tools.json
├── Fable.fsproj
├── Program.fs
├── Program.fs.js
├── index.html
├── package-lock.json
├── package.json
└── vite.config.ts
├── FunBlazor
├── App.fs
├── FunBlazor.fsproj
├── Properties
│ └── launchSettings.json
├── README.md
├── Startup.fs
└── wwwroot
│ ├── favicon.ico
│ └── index.html
├── Images
├── WebAssembly_compile.png
├── blazor-webassembly.png
├── results-8.png
├── results-aot.png
├── results.png
├── wasi-overview.jpg
└── webtools.png
├── SharedProblem
├── Library.fs.js
├── Prime.fs
└── SharedProblem.fsproj
├── Stats
└── graphs.fsx
├── Wasi
├── Program.fs
├── Properties
│ └── AssemblyInfo.cs
├── README.md
├── Wasi.fsproj
└── runtimeconfig.template.json
├── Wasm.sln
└── readme.md
/.gitignore:
--------------------------------------------------------------------------------
1 | bin/
2 | obj/
3 | .vs/
4 |
5 | Fable/fable_modules/
6 | Fable/node_modules/
7 | Prime.fs.js
8 |
--------------------------------------------------------------------------------
/Blazor/App.razor:
--------------------------------------------------------------------------------
1 | Sorry, there's nothing at this address.
@answer
8 | 9 | 10 | 11 | @code { 12 | private string answer = ""; 13 | 14 | private void Calculate() 15 | { 16 | answer = "Starting"; 17 | answer = SharedProblem.Prime.run(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Blazor/Program.cs: -------------------------------------------------------------------------------- 1 | using Blazor; 2 | using Microsoft.AspNetCore.Components.Web; 3 | using Microsoft.AspNetCore.Components.WebAssembly.Hosting; 4 | 5 | var builder = WebAssemblyHostBuilder.CreateDefault(args); 6 | builder.RootComponents.AddThis application demonstrates Bolero's major features.
26 |Enjoy writing awesome apps!
36 |42 | 43 |
44 |45 | The answer is ${Answer} 46 |
47 | 48 | 49 | 50 |Fable is running
11 |Click button to solve problem:
12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Fable/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fable", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "fable", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "vite": "^5.0.10" 13 | } 14 | }, 15 | "node_modules/@esbuild/aix-ppc64": { 16 | "version": "0.19.11", 17 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", 18 | "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", 19 | "cpu": [ 20 | "ppc64" 21 | ], 22 | "dev": true, 23 | "optional": true, 24 | "os": [ 25 | "aix" 26 | ], 27 | "engines": { 28 | "node": ">=12" 29 | } 30 | }, 31 | "node_modules/@esbuild/android-arm": { 32 | "version": "0.19.11", 33 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", 34 | "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", 35 | "cpu": [ 36 | "arm" 37 | ], 38 | "dev": true, 39 | "optional": true, 40 | "os": [ 41 | "android" 42 | ], 43 | "engines": { 44 | "node": ">=12" 45 | } 46 | }, 47 | "node_modules/@esbuild/android-arm64": { 48 | "version": "0.19.11", 49 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", 50 | "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", 51 | "cpu": [ 52 | "arm64" 53 | ], 54 | "dev": true, 55 | "optional": true, 56 | "os": [ 57 | "android" 58 | ], 59 | "engines": { 60 | "node": ">=12" 61 | } 62 | }, 63 | "node_modules/@esbuild/android-x64": { 64 | "version": "0.19.11", 65 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", 66 | "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", 67 | "cpu": [ 68 | "x64" 69 | ], 70 | "dev": true, 71 | "optional": true, 72 | "os": [ 73 | "android" 74 | ], 75 | "engines": { 76 | "node": ">=12" 77 | } 78 | }, 79 | "node_modules/@esbuild/darwin-arm64": { 80 | "version": "0.19.11", 81 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", 82 | "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", 83 | "cpu": [ 84 | "arm64" 85 | ], 86 | "dev": true, 87 | "optional": true, 88 | "os": [ 89 | "darwin" 90 | ], 91 | "engines": { 92 | "node": ">=12" 93 | } 94 | }, 95 | "node_modules/@esbuild/darwin-x64": { 96 | "version": "0.19.11", 97 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", 98 | "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", 99 | "cpu": [ 100 | "x64" 101 | ], 102 | "dev": true, 103 | "optional": true, 104 | "os": [ 105 | "darwin" 106 | ], 107 | "engines": { 108 | "node": ">=12" 109 | } 110 | }, 111 | "node_modules/@esbuild/freebsd-arm64": { 112 | "version": "0.19.11", 113 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", 114 | "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", 115 | "cpu": [ 116 | "arm64" 117 | ], 118 | "dev": true, 119 | "optional": true, 120 | "os": [ 121 | "freebsd" 122 | ], 123 | "engines": { 124 | "node": ">=12" 125 | } 126 | }, 127 | "node_modules/@esbuild/freebsd-x64": { 128 | "version": "0.19.11", 129 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", 130 | "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "dev": true, 135 | "optional": true, 136 | "os": [ 137 | "freebsd" 138 | ], 139 | "engines": { 140 | "node": ">=12" 141 | } 142 | }, 143 | "node_modules/@esbuild/linux-arm": { 144 | "version": "0.19.11", 145 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", 146 | "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", 147 | "cpu": [ 148 | "arm" 149 | ], 150 | "dev": true, 151 | "optional": true, 152 | "os": [ 153 | "linux" 154 | ], 155 | "engines": { 156 | "node": ">=12" 157 | } 158 | }, 159 | "node_modules/@esbuild/linux-arm64": { 160 | "version": "0.19.11", 161 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", 162 | "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", 163 | "cpu": [ 164 | "arm64" 165 | ], 166 | "dev": true, 167 | "optional": true, 168 | "os": [ 169 | "linux" 170 | ], 171 | "engines": { 172 | "node": ">=12" 173 | } 174 | }, 175 | "node_modules/@esbuild/linux-ia32": { 176 | "version": "0.19.11", 177 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", 178 | "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", 179 | "cpu": [ 180 | "ia32" 181 | ], 182 | "dev": true, 183 | "optional": true, 184 | "os": [ 185 | "linux" 186 | ], 187 | "engines": { 188 | "node": ">=12" 189 | } 190 | }, 191 | "node_modules/@esbuild/linux-loong64": { 192 | "version": "0.19.11", 193 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", 194 | "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", 195 | "cpu": [ 196 | "loong64" 197 | ], 198 | "dev": true, 199 | "optional": true, 200 | "os": [ 201 | "linux" 202 | ], 203 | "engines": { 204 | "node": ">=12" 205 | } 206 | }, 207 | "node_modules/@esbuild/linux-mips64el": { 208 | "version": "0.19.11", 209 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", 210 | "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", 211 | "cpu": [ 212 | "mips64el" 213 | ], 214 | "dev": true, 215 | "optional": true, 216 | "os": [ 217 | "linux" 218 | ], 219 | "engines": { 220 | "node": ">=12" 221 | } 222 | }, 223 | "node_modules/@esbuild/linux-ppc64": { 224 | "version": "0.19.11", 225 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", 226 | "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", 227 | "cpu": [ 228 | "ppc64" 229 | ], 230 | "dev": true, 231 | "optional": true, 232 | "os": [ 233 | "linux" 234 | ], 235 | "engines": { 236 | "node": ">=12" 237 | } 238 | }, 239 | "node_modules/@esbuild/linux-riscv64": { 240 | "version": "0.19.11", 241 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", 242 | "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", 243 | "cpu": [ 244 | "riscv64" 245 | ], 246 | "dev": true, 247 | "optional": true, 248 | "os": [ 249 | "linux" 250 | ], 251 | "engines": { 252 | "node": ">=12" 253 | } 254 | }, 255 | "node_modules/@esbuild/linux-s390x": { 256 | "version": "0.19.11", 257 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", 258 | "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", 259 | "cpu": [ 260 | "s390x" 261 | ], 262 | "dev": true, 263 | "optional": true, 264 | "os": [ 265 | "linux" 266 | ], 267 | "engines": { 268 | "node": ">=12" 269 | } 270 | }, 271 | "node_modules/@esbuild/linux-x64": { 272 | "version": "0.19.11", 273 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", 274 | "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", 275 | "cpu": [ 276 | "x64" 277 | ], 278 | "dev": true, 279 | "optional": true, 280 | "os": [ 281 | "linux" 282 | ], 283 | "engines": { 284 | "node": ">=12" 285 | } 286 | }, 287 | "node_modules/@esbuild/netbsd-x64": { 288 | "version": "0.19.11", 289 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", 290 | "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", 291 | "cpu": [ 292 | "x64" 293 | ], 294 | "dev": true, 295 | "optional": true, 296 | "os": [ 297 | "netbsd" 298 | ], 299 | "engines": { 300 | "node": ">=12" 301 | } 302 | }, 303 | "node_modules/@esbuild/openbsd-x64": { 304 | "version": "0.19.11", 305 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", 306 | "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", 307 | "cpu": [ 308 | "x64" 309 | ], 310 | "dev": true, 311 | "optional": true, 312 | "os": [ 313 | "openbsd" 314 | ], 315 | "engines": { 316 | "node": ">=12" 317 | } 318 | }, 319 | "node_modules/@esbuild/sunos-x64": { 320 | "version": "0.19.11", 321 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", 322 | "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", 323 | "cpu": [ 324 | "x64" 325 | ], 326 | "dev": true, 327 | "optional": true, 328 | "os": [ 329 | "sunos" 330 | ], 331 | "engines": { 332 | "node": ">=12" 333 | } 334 | }, 335 | "node_modules/@esbuild/win32-arm64": { 336 | "version": "0.19.11", 337 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", 338 | "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", 339 | "cpu": [ 340 | "arm64" 341 | ], 342 | "dev": true, 343 | "optional": true, 344 | "os": [ 345 | "win32" 346 | ], 347 | "engines": { 348 | "node": ">=12" 349 | } 350 | }, 351 | "node_modules/@esbuild/win32-ia32": { 352 | "version": "0.19.11", 353 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", 354 | "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", 355 | "cpu": [ 356 | "ia32" 357 | ], 358 | "dev": true, 359 | "optional": true, 360 | "os": [ 361 | "win32" 362 | ], 363 | "engines": { 364 | "node": ">=12" 365 | } 366 | }, 367 | "node_modules/@esbuild/win32-x64": { 368 | "version": "0.19.11", 369 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", 370 | "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", 371 | "cpu": [ 372 | "x64" 373 | ], 374 | "dev": true, 375 | "optional": true, 376 | "os": [ 377 | "win32" 378 | ], 379 | "engines": { 380 | "node": ">=12" 381 | } 382 | }, 383 | "node_modules/@rollup/rollup-android-arm-eabi": { 384 | "version": "4.9.2", 385 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", 386 | "integrity": "sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==", 387 | "cpu": [ 388 | "arm" 389 | ], 390 | "dev": true, 391 | "optional": true, 392 | "os": [ 393 | "android" 394 | ] 395 | }, 396 | "node_modules/@rollup/rollup-android-arm64": { 397 | "version": "4.9.2", 398 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.2.tgz", 399 | "integrity": "sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==", 400 | "cpu": [ 401 | "arm64" 402 | ], 403 | "dev": true, 404 | "optional": true, 405 | "os": [ 406 | "android" 407 | ] 408 | }, 409 | "node_modules/@rollup/rollup-darwin-arm64": { 410 | "version": "4.9.2", 411 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.2.tgz", 412 | "integrity": "sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==", 413 | "cpu": [ 414 | "arm64" 415 | ], 416 | "dev": true, 417 | "optional": true, 418 | "os": [ 419 | "darwin" 420 | ] 421 | }, 422 | "node_modules/@rollup/rollup-darwin-x64": { 423 | "version": "4.9.2", 424 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.2.tgz", 425 | "integrity": "sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==", 426 | "cpu": [ 427 | "x64" 428 | ], 429 | "dev": true, 430 | "optional": true, 431 | "os": [ 432 | "darwin" 433 | ] 434 | }, 435 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 436 | "version": "4.9.2", 437 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.2.tgz", 438 | "integrity": "sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==", 439 | "cpu": [ 440 | "arm" 441 | ], 442 | "dev": true, 443 | "optional": true, 444 | "os": [ 445 | "linux" 446 | ] 447 | }, 448 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 449 | "version": "4.9.2", 450 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.2.tgz", 451 | "integrity": "sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==", 452 | "cpu": [ 453 | "arm64" 454 | ], 455 | "dev": true, 456 | "optional": true, 457 | "os": [ 458 | "linux" 459 | ] 460 | }, 461 | "node_modules/@rollup/rollup-linux-arm64-musl": { 462 | "version": "4.9.2", 463 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", 464 | "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", 465 | "cpu": [ 466 | "arm64" 467 | ], 468 | "dev": true, 469 | "optional": true, 470 | "os": [ 471 | "linux" 472 | ] 473 | }, 474 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 475 | "version": "4.9.2", 476 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.2.tgz", 477 | "integrity": "sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==", 478 | "cpu": [ 479 | "riscv64" 480 | ], 481 | "dev": true, 482 | "optional": true, 483 | "os": [ 484 | "linux" 485 | ] 486 | }, 487 | "node_modules/@rollup/rollup-linux-x64-gnu": { 488 | "version": "4.9.2", 489 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.2.tgz", 490 | "integrity": "sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==", 491 | "cpu": [ 492 | "x64" 493 | ], 494 | "dev": true, 495 | "optional": true, 496 | "os": [ 497 | "linux" 498 | ] 499 | }, 500 | "node_modules/@rollup/rollup-linux-x64-musl": { 501 | "version": "4.9.2", 502 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.2.tgz", 503 | "integrity": "sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==", 504 | "cpu": [ 505 | "x64" 506 | ], 507 | "dev": true, 508 | "optional": true, 509 | "os": [ 510 | "linux" 511 | ] 512 | }, 513 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 514 | "version": "4.9.2", 515 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.2.tgz", 516 | "integrity": "sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==", 517 | "cpu": [ 518 | "arm64" 519 | ], 520 | "dev": true, 521 | "optional": true, 522 | "os": [ 523 | "win32" 524 | ] 525 | }, 526 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 527 | "version": "4.9.2", 528 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.2.tgz", 529 | "integrity": "sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==", 530 | "cpu": [ 531 | "ia32" 532 | ], 533 | "dev": true, 534 | "optional": true, 535 | "os": [ 536 | "win32" 537 | ] 538 | }, 539 | "node_modules/@rollup/rollup-win32-x64-msvc": { 540 | "version": "4.9.2", 541 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.2.tgz", 542 | "integrity": "sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==", 543 | "cpu": [ 544 | "x64" 545 | ], 546 | "dev": true, 547 | "optional": true, 548 | "os": [ 549 | "win32" 550 | ] 551 | }, 552 | "node_modules/esbuild": { 553 | "version": "0.19.11", 554 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", 555 | "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", 556 | "dev": true, 557 | "hasInstallScript": true, 558 | "bin": { 559 | "esbuild": "bin/esbuild" 560 | }, 561 | "engines": { 562 | "node": ">=12" 563 | }, 564 | "optionalDependencies": { 565 | "@esbuild/aix-ppc64": "0.19.11", 566 | "@esbuild/android-arm": "0.19.11", 567 | "@esbuild/android-arm64": "0.19.11", 568 | "@esbuild/android-x64": "0.19.11", 569 | "@esbuild/darwin-arm64": "0.19.11", 570 | "@esbuild/darwin-x64": "0.19.11", 571 | "@esbuild/freebsd-arm64": "0.19.11", 572 | "@esbuild/freebsd-x64": "0.19.11", 573 | "@esbuild/linux-arm": "0.19.11", 574 | "@esbuild/linux-arm64": "0.19.11", 575 | "@esbuild/linux-ia32": "0.19.11", 576 | "@esbuild/linux-loong64": "0.19.11", 577 | "@esbuild/linux-mips64el": "0.19.11", 578 | "@esbuild/linux-ppc64": "0.19.11", 579 | "@esbuild/linux-riscv64": "0.19.11", 580 | "@esbuild/linux-s390x": "0.19.11", 581 | "@esbuild/linux-x64": "0.19.11", 582 | "@esbuild/netbsd-x64": "0.19.11", 583 | "@esbuild/openbsd-x64": "0.19.11", 584 | "@esbuild/sunos-x64": "0.19.11", 585 | "@esbuild/win32-arm64": "0.19.11", 586 | "@esbuild/win32-ia32": "0.19.11", 587 | "@esbuild/win32-x64": "0.19.11" 588 | } 589 | }, 590 | "node_modules/fsevents": { 591 | "version": "2.3.3", 592 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 593 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 594 | "dev": true, 595 | "hasInstallScript": true, 596 | "optional": true, 597 | "os": [ 598 | "darwin" 599 | ], 600 | "engines": { 601 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 602 | } 603 | }, 604 | "node_modules/nanoid": { 605 | "version": "3.3.7", 606 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 607 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 608 | "dev": true, 609 | "funding": [ 610 | { 611 | "type": "github", 612 | "url": "https://github.com/sponsors/ai" 613 | } 614 | ], 615 | "bin": { 616 | "nanoid": "bin/nanoid.cjs" 617 | }, 618 | "engines": { 619 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 620 | } 621 | }, 622 | "node_modules/picocolors": { 623 | "version": "1.0.0", 624 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 625 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 626 | "dev": true 627 | }, 628 | "node_modules/postcss": { 629 | "version": "8.4.32", 630 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", 631 | "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", 632 | "dev": true, 633 | "funding": [ 634 | { 635 | "type": "opencollective", 636 | "url": "https://opencollective.com/postcss/" 637 | }, 638 | { 639 | "type": "tidelift", 640 | "url": "https://tidelift.com/funding/github/npm/postcss" 641 | }, 642 | { 643 | "type": "github", 644 | "url": "https://github.com/sponsors/ai" 645 | } 646 | ], 647 | "dependencies": { 648 | "nanoid": "^3.3.7", 649 | "picocolors": "^1.0.0", 650 | "source-map-js": "^1.0.2" 651 | }, 652 | "engines": { 653 | "node": "^10 || ^12 || >=14" 654 | } 655 | }, 656 | "node_modules/rollup": { 657 | "version": "4.9.2", 658 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", 659 | "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", 660 | "dev": true, 661 | "bin": { 662 | "rollup": "dist/bin/rollup" 663 | }, 664 | "engines": { 665 | "node": ">=18.0.0", 666 | "npm": ">=8.0.0" 667 | }, 668 | "optionalDependencies": { 669 | "@rollup/rollup-android-arm-eabi": "4.9.2", 670 | "@rollup/rollup-android-arm64": "4.9.2", 671 | "@rollup/rollup-darwin-arm64": "4.9.2", 672 | "@rollup/rollup-darwin-x64": "4.9.2", 673 | "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", 674 | "@rollup/rollup-linux-arm64-gnu": "4.9.2", 675 | "@rollup/rollup-linux-arm64-musl": "4.9.2", 676 | "@rollup/rollup-linux-riscv64-gnu": "4.9.2", 677 | "@rollup/rollup-linux-x64-gnu": "4.9.2", 678 | "@rollup/rollup-linux-x64-musl": "4.9.2", 679 | "@rollup/rollup-win32-arm64-msvc": "4.9.2", 680 | "@rollup/rollup-win32-ia32-msvc": "4.9.2", 681 | "@rollup/rollup-win32-x64-msvc": "4.9.2", 682 | "fsevents": "~2.3.2" 683 | } 684 | }, 685 | "node_modules/source-map-js": { 686 | "version": "1.0.2", 687 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 688 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 689 | "dev": true, 690 | "engines": { 691 | "node": ">=0.10.0" 692 | } 693 | }, 694 | "node_modules/vite": { 695 | "version": "5.0.10", 696 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", 697 | "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", 698 | "dev": true, 699 | "dependencies": { 700 | "esbuild": "^0.19.3", 701 | "postcss": "^8.4.32", 702 | "rollup": "^4.2.0" 703 | }, 704 | "bin": { 705 | "vite": "bin/vite.js" 706 | }, 707 | "engines": { 708 | "node": "^18.0.0 || >=20.0.0" 709 | }, 710 | "funding": { 711 | "url": "https://github.com/vitejs/vite?sponsor=1" 712 | }, 713 | "optionalDependencies": { 714 | "fsevents": "~2.3.3" 715 | }, 716 | "peerDependencies": { 717 | "@types/node": "^18.0.0 || >=20.0.0", 718 | "less": "*", 719 | "lightningcss": "^1.21.0", 720 | "sass": "*", 721 | "stylus": "*", 722 | "sugarss": "*", 723 | "terser": "^5.4.0" 724 | }, 725 | "peerDependenciesMeta": { 726 | "@types/node": { 727 | "optional": true 728 | }, 729 | "less": { 730 | "optional": true 731 | }, 732 | "lightningcss": { 733 | "optional": true 734 | }, 735 | "sass": { 736 | "optional": true 737 | }, 738 | "stylus": { 739 | "optional": true 740 | }, 741 | "sugarss": { 742 | "optional": true 743 | }, 744 | "terser": { 745 | "optional": true 746 | } 747 | } 748 | } 749 | } 750 | } 751 | -------------------------------------------------------------------------------- /Fable/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fable", 3 | "version": "1.0.0", 4 | "main": "Program.fs.js", 5 | "scripts": { 6 | "test": "echo \"Error: no test specified\" && exit 1" 7 | }, 8 | "keywords": [], 9 | "author": "", 10 | "license": "ISC", 11 | "description": "", 12 | "devDependencies": { 13 | "vite": "^5.0.10" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Fable/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | // https://vitejs.dev/config/ 3 | export default defineConfig({ 4 | clearScreen: false, 5 | server: { 6 | watch: { 7 | ignored: [ 8 | "**/*.fs" // Don't watch F# files 9 | ] 10 | } 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /FunBlazor/App.fs: -------------------------------------------------------------------------------- 1 | // hot-reload 2 | // hot-reload is the flag to let cli know this file should be included 3 | // It has dependency requirement: the root is the app which is used in the Startup.fs 4 | // All other files which want have hot reload, need to drill down to that file, and all the middle file should also add the '// hot-reload' flag at the top of taht file 5 | [