mirror of
				https://github.com/OpenFusionProject/Client.git
				synced 2025-10-31 03:10:11 +00:00 
			
		
		
		
	Compare commits
	
		
			66 Commits
		
	
	
		
			d4dc403e90
			...
			1.6.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 1117c9bd68 | ||
|   | bd27433535 | ||
|   | 72ea6bdaca | ||
|   | d4a1ecebc7 | ||
|   | 323b5a3385 | ||
|   | c898cacd7c | ||
|   | e5b20f57ce | ||
|   | 1eee35b230 | ||
|   | d8363b61a6 | ||
|   | 6239f383bc | ||
|   | 19e036ddf9 | ||
| 4503c9268e | |||
| 947c231b12 | |||
| 37699e38f8 | |||
|   | 451cb4a2af | ||
|   | d52e149192 | ||
|   | 16a158906d | ||
|   | 7f9c5d90a1 | ||
|   | 17f194810c | ||
|   | 87072b0789 | ||
|   | e933bc52fe | ||
|   | 1078778e16 | ||
|   | 5dca39a17e | ||
|   | 0eca42cdf8 | ||
|   | fa0bdd7b1a | ||
|   | feafd8d17f | ||
|   | 6a7b029539 | ||
|   | 171177b606 | ||
|   | 1c2cf41e97 | ||
|   | 0201f11333 | ||
|   | a859590ef9 | ||
|   | 356e811bac | ||
|   | cdabb36639 | ||
|   | 547ca778b0 | ||
|   | 6bae0d1ff6 | ||
|   | 11f0c61a67 | ||
|   | 1d78bc2d9b | ||
|   | c78a3e5ada | ||
|   | c05e9c0dcd | ||
|   | e1ef76744a | ||
|   | 04aea6059e | ||
|   | 600b33a230 | ||
|   | 48efd00a4a | ||
|   | f28c9c0bb8 | ||
|   | e3f16d8fc9 | ||
|   | 6f7f1655b9 | ||
|   | 597e80b112 | ||
|   | 79bdba74a5 | ||
|   | 16a99f86c7 | ||
|   | 05af8a3f9e | ||
|   | 27f0992b52 | ||
|   | 132b725922 | ||
|   | b5ab9aad2d | ||
|   | 01ee292d10 | ||
|   | 2183106c73 | ||
|   | db7370ca41 | ||
|   | ec0fc87dcd | ||
|   | cef8c1de93 | ||
|   | b73329c6de | ||
|   | 2e7dc51aa1 | ||
|   | 3fc6cabe33 | ||
|   | 71e4694ff6 | ||
|   | 76f4a05287 | ||
|   | 97144aad59 | ||
|   | 4a465ca689 | ||
|   | 43f0c8c684 | 
							
								
								
									
										19
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								.editorconfig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| # top-most EditorConfig file | ||||
| root = true | ||||
|  | ||||
| # Unix-style newlines with a newline ending every file | ||||
| [*] | ||||
| end_of_line = lf | ||||
| insert_final_newline = true | ||||
|  | ||||
| # 4 space indentation | ||||
| [*.js, *.css, *.html, *.json] | ||||
| indent_style = space | ||||
| indent_size = 4 | ||||
|  | ||||
| # Don't enforce anything in vendored code | ||||
| [*.min.*] | ||||
| end_of_line = unset | ||||
| insert_final_newline = unset | ||||
| indent_style = unset | ||||
| indent_style = unset | ||||
							
								
								
									
										3
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -3,3 +3,6 @@ | ||||
| *.js    text eol=lf | ||||
| *.json  text eol=lf | ||||
| *.md    text eol=lf | ||||
|  | ||||
| defaults/* linguist-vendored | ||||
| lib/* linguist-vendored | ||||
|   | ||||
							
								
								
									
										47
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| name: Publish Build | ||||
|  | ||||
| on: | ||||
|     push: | ||||
|         branches: ["main"] | ||||
|         tags: "*" | ||||
|  | ||||
| permissions: | ||||
|     contents: write | ||||
|  | ||||
| jobs: | ||||
|     build: | ||||
|         runs-on: windows-2022 | ||||
|  | ||||
|         steps: | ||||
|             - uses: actions/checkout@v4 | ||||
|               with: | ||||
|                   fetch-depth: 0 | ||||
|             - name: Set up Node.js 20.x | ||||
|               uses: actions/setup-node@v4 | ||||
|               with: | ||||
|                   node-version: 20.x | ||||
|                   cache: "npm" | ||||
|             - name: Install dependencies | ||||
|               run: npm install | ||||
|             - name: Pack into zip and create installer | ||||
|               run: npm run dist | ||||
|             - name: Upload Artifacts | ||||
|               uses: actions/upload-artifact@master | ||||
|               with: | ||||
|                   path: dist | ||||
|  | ||||
|     publish-release: | ||||
|         if: contains(github.ref, 'refs/tags/') | ||||
|         runs-on: ubuntu-latest | ||||
|         needs: build | ||||
|  | ||||
|         steps: | ||||
|             - name: Download artifact | ||||
|               uses: actions/download-artifact@master | ||||
|             - name: Create release | ||||
|               uses: ncipollo/release-action@v1 | ||||
|               with: | ||||
|                   artifacts: "artifact/*-ia32-win.zip,artifact/*.exe" | ||||
|               env: | ||||
|                   GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|                   GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
							
								
								
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -8,4 +8,8 @@ version | ||||
| resources/app/files/rankurl.txt | ||||
| node_modules/ | ||||
| dist/ | ||||
| UnityBugReporter.exe | ||||
| UnityBugReporter.exe | ||||
| cache_handler/*/ | ||||
| extra/ | ||||
| *.sh | ||||
| yarn.lock | ||||
							
								
								
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| { | ||||
|     "editor.formatOnSave": true | ||||
| } | ||||
| @@ -1,6 +1,6 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2020-2023 OpenFusion Contributors | ||||
| Copyright (c) 2020-2024 OpenFusion Contributors | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # OpenFusionClient | ||||
|  | ||||
| [](https://github.com/OpenFusionProject/OpenFusionClient/releases/latest) [](https://discord.gg/DYavckB)[](https://github.com/OpenFusionProject/OpenFusionClient/blob/master/LICENSE.md) | ||||
| [](https://github.com/OpenFusionProject/OpenFusionClient/releases/latest) [](https://discord.gg/DYavckB)[](https://github.com/OpenFusionProject/OpenFusionClient/blob/master/LICENSE.md) | ||||
|  | ||||
| An Electron app that allows you to easily join FusionFall servers. | ||||
|  | ||||
|   | ||||
| @@ -59,12 +59,24 @@ body { | ||||
|         "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; | ||||
| } | ||||
|  | ||||
| #of-versionnumberdiv { | ||||
| #of-about-button-div { | ||||
|     position: fixed; | ||||
|     bottom: 4px; | ||||
|     right: 8px; | ||||
| } | ||||
|  | ||||
| #of-about-flash-div { | ||||
|     position: fixed; | ||||
|     bottom: 4px; | ||||
|     right: 8px; | ||||
| } | ||||
|  | ||||
| #of-config-button-div { | ||||
|     position: fixed; | ||||
|     bottom: 4px; | ||||
|     left: 8px; | ||||
| } | ||||
|  | ||||
| .btn-primary { | ||||
|     background-image: url("../../assets/img/btn-primary-bg.png"); | ||||
|     background-repeat: repeat; | ||||
| @@ -80,6 +92,23 @@ body { | ||||
|     background-repeat: repeat; | ||||
| } | ||||
|  | ||||
| .btn-warning { | ||||
|     background-image: url("../../assets/img/btn-warning-bg.png"); | ||||
|     background-repeat: repeat; | ||||
| } | ||||
|  | ||||
| .form-check-input { | ||||
|     width: 25px; | ||||
|     height: 25px; | ||||
| } | ||||
|  | ||||
| .form-check-label { | ||||
|     height: 25px; | ||||
|     margin-top: 5px; | ||||
|     margin-left: 10px; | ||||
|     font-size: 1rem; | ||||
| } | ||||
|  | ||||
| #of-aboutmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| @@ -105,6 +134,36 @@ body { | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-editcacheconfigmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-editconfigmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-addversionmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-editversionmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-deleteversionmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| #of-restoreversionsmodal > .modal-dialog > .modal-content { | ||||
|     background-color: #093363; | ||||
|     border-color: #6699ff; | ||||
| } | ||||
|  | ||||
| .form-control, | ||||
| .form-control:focus { | ||||
|     border-color: #0099ff; | ||||
| @@ -118,6 +177,14 @@ select { | ||||
|     color: #fff; | ||||
| } | ||||
|  | ||||
| .modal { | ||||
|     overflow-y: auto; | ||||
| } | ||||
|  | ||||
| .invalidinput { | ||||
|     border-color: #ff0000; | ||||
| } | ||||
|  | ||||
| button:disabled { | ||||
|     cursor: not-allowed; | ||||
|     pointer-events: all !important; | ||||
| @@ -143,3 +210,19 @@ button > i { | ||||
|     background: #000; | ||||
|     clear: both; | ||||
| } | ||||
|  | ||||
| @keyframes pulse { | ||||
|     0% { | ||||
|         opacity: 1; | ||||
|     } | ||||
|     50% { | ||||
|         opacity: 0; | ||||
|     } | ||||
|     100% { | ||||
|         opacity: 1; | ||||
|     } | ||||
| } | ||||
|  | ||||
| .pulsing { | ||||
|     animation: pulse 2s infinite; | ||||
| } | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								assets/img/btn-warning-bg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/img/btn-warning-bg.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 514 B | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 72 KiB | 
| @@ -1,10 +1,8 @@ | ||||
| // You're kind of ruining the surprise by reading this, but whatever | ||||
| var today = new Date(); | ||||
|  | ||||
| // Check Christmas season: Date constructor in Javascript uses an index | ||||
| // so 11 is Dec. of this year, and 12 is Jan. of the next | ||||
| var christmasBegin = new Date(today.getFullYear(), 11, 23); | ||||
| var christmasEnd = new Date(today.getFullYear(), 12, 8); | ||||
| var christmasBegin = new Date(today.getFullYear(), 11, 21); | ||||
| var christmasEnd = new Date(today.getFullYear(), 11, 31); | ||||
| var sf; | ||||
|  | ||||
| if (today >= christmasBegin && today <= christmasEnd) { | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,32 @@ | ||||
| <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||||
| <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> | ||||
|   <assemblyIdentity type="win32" name="OpenFusion.Client" version="1.6.0.0" processorArchitecture="x86" /> | ||||
|   <dependency> | ||||
|     <dependentAssembly> | ||||
|       <assemblyIdentity type="Win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"> | ||||
|       </assemblyIdentity> | ||||
|     </dependentAssembly> | ||||
|   </dependency> | ||||
|   <asmv3:trustInfo> | ||||
|     <security> | ||||
|       <requestedPrivileges> | ||||
|         <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> | ||||
|       </requestedPrivileges> | ||||
|     </security> | ||||
|   </asmv3:trustInfo> | ||||
|   <asmv3:application> | ||||
|     <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">  | ||||
|       <activeCodePage>UTF-8</activeCodePage>  | ||||
|       <dpiAware>true</dpiAware> | ||||
|     <asmv3:windowsSettings> | ||||
|       <activeCodePage xmlns="urn:schemas-microsoft-com:smi.2019.WindowsSettings">UTF-8</activeCodePage>  | ||||
|       <dpiAware xmlns="urn:schemas-microsoft-com:smi.2005.WindowsSettings">True/PM</dpiAware> | ||||
|     </asmv3:windowsSettings> | ||||
|   </asmv3:application> | ||||
| </assembly> | ||||
|   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | ||||
|     <application> | ||||
|       <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS> | ||||
|       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"></supportedOS> | ||||
|       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS> | ||||
|       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS> | ||||
|       <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS> | ||||
|     </application> | ||||
|   </compatibility> | ||||
| </asmv1:assembly> | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								build/WebPlayer/loader/npUnity3D32.dll
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build/WebPlayer/loader/npUnity3D32.dll
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										1109
									
								
								cache_handler/cache_handler.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1109
									
								
								cache_handler/cache_handler.py
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										33
									
								
								cache_handler/cache_handler.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								cache_handler/cache_handler.spec
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| # -*- mode: python ; coding: utf-8 -*- | ||||
|  | ||||
| block_cipher = None | ||||
|  | ||||
|  | ||||
| a = Analysis(['cache_handler.py'], | ||||
|              pathex=['Z:\\src'], | ||||
|              binaries=[], | ||||
|              datas=[], | ||||
|              hiddenimports=[], | ||||
|              hookspath=[], | ||||
|              runtime_hooks=[], | ||||
|              excludes=[], | ||||
|              win_no_prefer_redirects=False, | ||||
|              win_private_assemblies=False, | ||||
|              cipher=block_cipher, | ||||
|              noarchive=False) | ||||
| pyz = PYZ(a.pure, a.zipped_data, | ||||
|              cipher=block_cipher) | ||||
| exe = EXE(pyz, | ||||
|           a.scripts, | ||||
|           a.binaries, | ||||
|           a.zipfiles, | ||||
|           a.datas, | ||||
|           [], | ||||
|           name='cache_handler', | ||||
|           debug=False, | ||||
|           bootloader_ignore_signals=False, | ||||
|           strip=False, | ||||
|           upx=True, | ||||
|           upx_exclude=[], | ||||
|           runtime_tmpdir=None, | ||||
|           console=True ) | ||||
							
								
								
									
										4
									
								
								cache_handler/requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								cache_handler/requirements.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| aiofiles | ||||
| httpx | ||||
| beautifulsoup4 | ||||
| pyinstaller==3.5 | ||||
							
								
								
									
										4
									
								
								defaults/config.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								defaults/config.json
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,7 @@ | ||||
| { | ||||
|     "autoupdate-check": true, | ||||
|     "cache-swapping": true, | ||||
|     "last-version-initialized": "1.4" | ||||
|     "enable-offline-cache": true, | ||||
|     "verify-offline-cache": false, | ||||
|     "last-version-initialized": "1.6" | ||||
| } | ||||
|   | ||||
							
								
								
									
										35695
									
								
								defaults/hashes.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										35695
									
								
								defaults/hashes.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										523
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										523
									
								
								index.html
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | ||||
| <!DOCTYPE html> | ||||
| <!doctype html> | ||||
| <html> | ||||
|     <head> | ||||
|         <meta charset="utf-8" /> | ||||
| @@ -108,6 +108,18 @@ | ||||
|                         </button> | ||||
|                     </div> | ||||
|                     <div class="col-4 d-inline-flex justify-content-end"> | ||||
|                         <button | ||||
|                             class="btn btn-primary mr-1" | ||||
|                             data-toggle="modal" | ||||
|                             data-bs-tooltip="" | ||||
|                             data-placement="bottom" | ||||
|                             id="of-editcache-button" | ||||
|                             type="button" | ||||
|                             title="Edit Game Builds" | ||||
|                             data-target="#of-editcacheconfigmodal" | ||||
|                         > | ||||
|                             <i class="fas fa-database"></i> | ||||
|                         </button> | ||||
|                         <button | ||||
|                             class="btn btn-primary disabled" | ||||
|                             id="of-connect-button" | ||||
| @@ -149,7 +161,7 @@ | ||||
|                                 APP_VERSION_NUMBER | ||||
|                             </p> | ||||
|                             <p> | ||||
|                                 ©2020-2023 OpenFusion Contributors<br />OpenFusion | ||||
|                                 ©2020-2024 OpenFusion Contributors<br />OpenFusion | ||||
|                                 is licensed under MIT.<br /> | ||||
|                             </p> | ||||
|                             <a | ||||
| @@ -159,6 +171,14 @@ | ||||
|                                 data-target="#of-restoreserversmodal" | ||||
|                                 >Reset to Default Servers</a | ||||
|                             > | ||||
|                             <br /> | ||||
|                             <a | ||||
|                                 href="#of-restoreversionsmodal" | ||||
|                                 onclick="$('#of-aboutmodal').modal('toggle')" | ||||
|                                 data-toggle="modal" | ||||
|                                 data-target="#of-restoreversionsmodal" | ||||
|                                 >Reset to Default Game Builds</a | ||||
|                             > | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <div class="row flex-fill"> | ||||
| @@ -169,7 +189,7 @@ | ||||
|                                         data-bs-tooltip="" | ||||
|                                         type="button" | ||||
|                                         title="Github Page" | ||||
|                                         onclick="window.open('https://github.com/OpenFusionProject/OpenFusion','_blank');" | ||||
|                                         onclick="window.open('https://github.com/OpenFusionProject/OpenFusion','_blank');" | ||||
|                                     > | ||||
|                                         <i | ||||
|                                             class="fab fa-github" | ||||
| @@ -181,7 +201,7 @@ | ||||
|                                         data-bs-tooltip="" | ||||
|                                         type="button" | ||||
|                                         title="Discord Chat" | ||||
|                                         onclick="window.open('https://discord.gg/DYavckB','_blank');" | ||||
|                                         onclick="window.open('https://discord.gg/DYavckB','_blank');" | ||||
|                                     > | ||||
|                                         <i | ||||
|                                             class="fab fa-discord" | ||||
| @@ -238,6 +258,7 @@ | ||||
|                                     required="" | ||||
|                                     minlength="1" | ||||
|                                     maxlength="70" | ||||
|                                     oninput="validateServerSave('add')" | ||||
|                                 /><label for="addserver-ipinput" | ||||
|                                     >Server IP</label | ||||
|                                 ><input | ||||
| @@ -245,8 +266,10 @@ | ||||
|                                     type="text" | ||||
|                                     id="addserver-ipinput" | ||||
|                                     placeholder="127.0.0.1:23000" | ||||
|                                     value="127.0.0.1:23000" | ||||
|                                     required="" | ||||
|                                     pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$" | ||||
|                                     pattern="^([-a-zA-Z0-9]+\.)+[-a-zA-Z0-9]+:[0-9]+$" | ||||
|                                     oninput="validateServerSave('add')" | ||||
|                                 /><label for="addserver-versionselect" | ||||
|                                     >Game Version: </label | ||||
|                                 ><select | ||||
| @@ -254,6 +277,7 @@ | ||||
|                                     id="addserver-versionselect" | ||||
|                                     required="" | ||||
|                                     style="margin-left: -5px" | ||||
|                                     oninput="validateServerSave('add')" | ||||
|                                 ></select> | ||||
|                             </form> | ||||
|                         </div> | ||||
| @@ -310,7 +334,8 @@ | ||||
|                                     required="" | ||||
|                                     minlength="1" | ||||
|                                     maxlength="70" | ||||
|                                 /><label for="addserver-ipinput" | ||||
|                                     oninput="validateServerSave('edit')" | ||||
|                                 /><label for="editserver-ipinput" | ||||
|                                     >Server IP</label | ||||
|                                 ><input | ||||
|                                     class="form-control form-row w-75" | ||||
| @@ -318,7 +343,8 @@ | ||||
|                                     id="editserver-ipinput" | ||||
|                                     placeholder="127.0.0.1:23000" | ||||
|                                     required="" | ||||
|                                     pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$" | ||||
|                                     pattern="^([-a-zA-Z0-9]+\.)+[-a-zA-Z0-9]+:[0-9]+$" | ||||
|                                     oninput="validateServerSave('edit')" | ||||
|                                 /><label for="editserver-versionselect" | ||||
|                                     >Game Version: </label | ||||
|                                 ><select | ||||
| @@ -326,6 +352,7 @@ | ||||
|                                     id="editserver-versionselect" | ||||
|                                     required="" | ||||
|                                     style="margin-left: -5px" | ||||
|                                     oninput="validateServerSave('edit')" | ||||
|                                 ></select> | ||||
|                             </form> | ||||
|                         </div> | ||||
| @@ -339,7 +366,7 @@ | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-success border-success" | ||||
|                                 id="addserver-savebutton" | ||||
|                                 id="editserver-savebutton" | ||||
|                                 type="submit" | ||||
|                                 data-dismiss="modal" | ||||
|                                 form="editserver-form" | ||||
| @@ -432,7 +459,7 @@ | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="deleteserver-button" | ||||
|                                 id="restoreservers-button" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                                 onclick="restoreDefaultServers();" | ||||
| @@ -443,15 +470,477 @@ | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div id="of-versionnumberdiv"> | ||||
|                 <a | ||||
|                     id="of-versionnumber" | ||||
|                     class="text-monospace text-secondary" | ||||
|                     href="#of-aboutmodal" | ||||
|                     data-toggle="modal" | ||||
|                     data-target="#of-aboutmodal" | ||||
|                     >v0</a | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-editconfigmodal" | ||||
|             > | ||||
|                 <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Edit Configuration</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <form | ||||
|                                 id="editconfig-form" | ||||
|                                 class="needs-validation form-group" | ||||
|                             > | ||||
|                                 <div class="form-check form-row"> | ||||
|                                     <input | ||||
|                                         class="form-check-input" | ||||
|                                         type="checkbox" | ||||
|                                         id="editconfig-autoupdate" | ||||
|                                     /> | ||||
|                                     <label | ||||
|                                         class="form-check-label" | ||||
|                                         for="editconfig-autoupdate" | ||||
|                                         >Automatically check for updates</label | ||||
|                                     > | ||||
|                                 </div> | ||||
|                                 <div class="form-check form-row"> | ||||
|                                     <input | ||||
|                                         class="form-check-input" | ||||
|                                         type="checkbox" | ||||
|                                         id="editconfig-cacheswapping" | ||||
|                                     /> | ||||
|                                     <label | ||||
|                                         class="form-check-label" | ||||
|                                         for="editconfig-cacheswapping" | ||||
|                                         >Swap game caches to avoid unnecessary | ||||
|                                         downloads</label | ||||
|                                     > | ||||
|                                 </div> | ||||
|                                 <div class="form-check form-row"> | ||||
|                                     <input | ||||
|                                         class="form-check-input" | ||||
|                                         type="checkbox" | ||||
|                                         id="editconfig-enableofflinecache" | ||||
|                                     /> | ||||
|                                     <label | ||||
|                                         class="form-check-label" | ||||
|                                         for="editconfig-enableofflinecache" | ||||
|                                         >Use offline caches when they are | ||||
|                                         available</label | ||||
|                                     > | ||||
|                                 </div> | ||||
|                                 <div class="form-check form-row mb-3"> | ||||
|                                     <input | ||||
|                                         class="form-check-input" | ||||
|                                         type="checkbox" | ||||
|                                         id="editconfig-verifyofflinecache" | ||||
|                                     /> | ||||
|                                     <label | ||||
|                                         class="form-check-label" | ||||
|                                         for="editconfig-verifyofflinecache" | ||||
|                                         >Verify offline caches every time they | ||||
|                                         are loaded</label | ||||
|                                     > | ||||
|                                 </div> | ||||
|                                 <label for="editconfig-offlinecachelocation" | ||||
|                                     ><h5>Offline Cache Location:</h5></label | ||||
|                                 > | ||||
|                                 <div class="form-row"> | ||||
|                                     <input | ||||
|                                         class="form-control w-75" | ||||
|                                         id="editconfig-offlinecachelocation" | ||||
|                                         type="text" | ||||
|                                         oninput="validateCacheLocation()" | ||||
|                                     /> | ||||
|                                     <button | ||||
|                                         type="button" | ||||
|                                         class="btn btn-primary ml-1" | ||||
|                                         onclick="browseOfflineCache()" | ||||
|                                         title="Browse" | ||||
|                                     > | ||||
|                                         <i class="fas fa-folder"></i> | ||||
|                                     </button> | ||||
|                                 </div> | ||||
|                             </form> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="editconfig-cancel" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                             > | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-success border-success" | ||||
|                                 id="editconfig-savebutton" | ||||
|                                 type="submit" | ||||
|                                 data-dismiss="modal" | ||||
|                                 form="editconfig-form" | ||||
|                                 onclick="editConfig();" | ||||
|                             > | ||||
|                                 Save | ||||
|                             </button> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-editcacheconfigmodal" | ||||
|             > | ||||
|                 <div | ||||
|                     class="modal-dialog modal-dialog-centered modal-lg" | ||||
|                     role="document" | ||||
|                 > | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Edit Game Builds</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <div | ||||
|                                 class="row row-cols-2 d-xl-flex justify-content-center justify-content-xl-start" | ||||
|                                 id="of-versionbuttons" | ||||
|                                 style="padding-bottom: 16px" | ||||
|                             > | ||||
|                                 <div | ||||
|                                     class="col-4 text-left d-inline-flex justify-content-xl-start" | ||||
|                                     id="cache-buttons" | ||||
|                                 > | ||||
|                                     <button | ||||
|                                         class="btn btn-success mr-1" | ||||
|                                         data-toggle="modal" | ||||
|                                         data-bs-tooltip="" | ||||
|                                         data-placement="bottom" | ||||
|                                         id="of-addversion-button" | ||||
|                                         type="button" | ||||
|                                         title="Add Version" | ||||
|                                         data-target="#of-addversionmodal" | ||||
|                                         onclick="deselectVersion()" | ||||
|                                     > | ||||
|                                         <i class="fas fa-plus"></i> | ||||
|                                     </button> | ||||
|                                     <button | ||||
|                                         class="btn btn-primary mr-1 disabled" | ||||
|                                         data-toggle="modal" | ||||
|                                         data-bs-tooltip="" | ||||
|                                         data-placement="bottom" | ||||
|                                         id="of-editversion-button" | ||||
|                                         type="button" | ||||
|                                         title="Edit Version" | ||||
|                                         data-target="#of-editversionmodal" | ||||
|                                         disabled="" | ||||
|                                     > | ||||
|                                         <i class="fas fa-edit"></i> | ||||
|                                     </button> | ||||
|                                     <button | ||||
|                                         class="btn btn-danger mr-1 disabled" | ||||
|                                         data-toggle="modal" | ||||
|                                         data-bs-tooltip="" | ||||
|                                         data-placement="bottom" | ||||
|                                         id="of-deleteversion-button" | ||||
|                                         type="button" | ||||
|                                         title="Delete Version" | ||||
|                                         data-target="#of-deleteversionmodal" | ||||
|                                         disabled="" | ||||
|                                     > | ||||
|                                         <i class="fas fa-trash-alt"></i> | ||||
|                                     </button> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                             <div | ||||
|                                 class="table-responsive text-center border rounded border-primary" | ||||
|                                 id="cache-table" | ||||
|                             > | ||||
|                                 <table | ||||
|                                     class="table table-striped table-hover mb-0" | ||||
|                                 > | ||||
|                                     <thead> | ||||
|                                         <tr> | ||||
|                                             <th>Game Version</th> | ||||
|                                             <th>Game Cache</th> | ||||
|                                             <th>Offline Cache</th> | ||||
|                                         </tr> | ||||
|                                     </thead> | ||||
|                                     <tbody id="cache-tablebody"></tbody> | ||||
|                                 </table> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-addversionmodal" | ||||
|             > | ||||
|                 <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Add Version</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <form id="addversion-form" class="needs-validation"> | ||||
|                                 <label for="addversion-nameinput" | ||||
|                                     >Version Name</label | ||||
|                                 ><input | ||||
|                                     class="form-control form-row w-75" | ||||
|                                     type="text" | ||||
|                                     id="addversion-nameinput" | ||||
|                                     placeholder="custom-build-000" | ||||
|                                     required="" | ||||
|                                     pattern="^[-a-zA-Z0-9_]{1,70}$" | ||||
|                                     oninput="validateVersionSave('add')" | ||||
|                                 /><label for="addversion-urlinput" | ||||
|                                     >Version URL</label | ||||
|                                 ><input | ||||
|                                     class="form-control form-row w-75" | ||||
|                                     type="text" | ||||
|                                     id="addversion-urlinput" | ||||
|                                     placeholder="http://cdn.dexlabs.systems/custom-build-000/" | ||||
|                                     required="" | ||||
|                                     pattern="^(https?|file):\/\/\/?([-a-zA-Z0-9@:%._\+~#= ]{1,256}\/){1,64}$" | ||||
|                                     oninput="validateVersionSave('add')" | ||||
|                                 /> | ||||
|                             </form> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="addversion-cancel" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                             > | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-success border-success" | ||||
|                                 id="addversion-savebutton" | ||||
|                                 type="submit" | ||||
|                                 data-dismiss="modal" | ||||
|                                 form="addversion-form" | ||||
|                                 onclick="addVersion();" | ||||
|                             > | ||||
|                                 Save | ||||
|                             </button> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-editversionmodal" | ||||
|             > | ||||
|                 <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Edit Version</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <form | ||||
|                                 id="editversion-form" | ||||
|                                 class="needs-validation" | ||||
|                             > | ||||
|                                 <label for="editversion-nameinput" | ||||
|                                     >Version Name</label | ||||
|                                 ><input | ||||
|                                     class="form-control form-row w-75" | ||||
|                                     type="text" | ||||
|                                     id="editversion-nameinput" | ||||
|                                     placeholder="custom-build-000" | ||||
|                                     required="" | ||||
|                                     pattern="^[-a-zA-Z0-9_]{1,70}$" | ||||
|                                     oninput="validateVersionSave('edit')" | ||||
|                                 /><label for="editversion-urlinput" | ||||
|                                     >Version URL</label | ||||
|                                 ><input | ||||
|                                     class="form-control form-row w-75" | ||||
|                                     type="text" | ||||
|                                     id="editversion-urlinput" | ||||
|                                     placeholder="http://cdn.dexlabs.systems/custom-build-000/" | ||||
|                                     required="" | ||||
|                                     pattern="^(https?|file):\/\/\/?([-a-zA-Z0-9@:%._\+~#= ]{1,256}\/){1,64}$" | ||||
|                                     oninput="validateVersionSave('edit')" | ||||
|                                 /> | ||||
|                             </form> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="editversion-cancel" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                             > | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-success border-success" | ||||
|                                 id="editversion-savebutton" | ||||
|                                 type="submit" | ||||
|                                 data-dismiss="modal" | ||||
|                                 form="editversion-form" | ||||
|                                 onclick="editVersion();" | ||||
|                             > | ||||
|                                 Save | ||||
|                             </button> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-deleteversionmodal" | ||||
|             > | ||||
|                 <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Are you sure?</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <p class="lead"> | ||||
|                                 Do you really want to delete<br />"<a | ||||
|                                     id="deleteversion-versionname" | ||||
|                                     >VERSION_NAME</a | ||||
|                                 >"?<br /><br />You could always re-add it later. | ||||
|                             </p> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button | ||||
|                                 class="btn btn-primary border rounded border-primary" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                             > | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="deleteversion-button" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                                 onclick="deleteVersion();" | ||||
|                             > | ||||
|                                 Yes, Delete | ||||
|                             </button> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div | ||||
|                 class="modal fade" | ||||
|                 role="dialog" | ||||
|                 tabindex="-1" | ||||
|                 id="of-restoreversionsmodal" | ||||
|             > | ||||
|                 <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|                     <div class="modal-content"> | ||||
|                         <div class="modal-header"> | ||||
|                             <h4 class="modal-title">Are you sure?</h4> | ||||
|                             <button | ||||
|                                 type="button" | ||||
|                                 class="close" | ||||
|                                 data-dismiss="modal" | ||||
|                                 aria-label="Close" | ||||
|                             > | ||||
|                                 <span aria-hidden="true">×</span> | ||||
|                             </button> | ||||
|                         </div> | ||||
|                         <div class="modal-body"> | ||||
|                             <p class="lead"> | ||||
|                                 Do you really want to restore the default | ||||
|                                 versions? | ||||
|                             </p> | ||||
|                         </div> | ||||
|                         <div class="modal-footer"> | ||||
|                             <button | ||||
|                                 class="btn btn-primary border rounded border-primary" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                             > | ||||
|                                 Cancel</button | ||||
|                             ><button | ||||
|                                 class="btn btn-primary border rounded border-primary btn-danger border-danger" | ||||
|                                 id="restoreversions-button" | ||||
|                                 type="button" | ||||
|                                 data-dismiss="modal" | ||||
|                                 onclick="restoreDefaultVersions();" | ||||
|                             > | ||||
|                                 Yes, Restore | ||||
|                             </button> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div id="of-config-button-div"> | ||||
|                 <button | ||||
|                     class="btn btn-primary mr-1" | ||||
|                     data-toggle="modal" | ||||
|                     data-bs-tooltip="" | ||||
|                     data-placement="right" | ||||
|                     id="of-editconfig-button" | ||||
|                     type="button" | ||||
|                     title="Edit Configuration" | ||||
|                     data-target="#of-editconfigmodal" | ||||
|                 > | ||||
|                     <i class="fas fa-cog"></i> | ||||
|                 </button> | ||||
|             </div> | ||||
|             <div id="of-about-button-div"> | ||||
|                 <button | ||||
|                     class="btn btn-primary mr-1" | ||||
|                     data-toggle="modal" | ||||
|                     data-bs-tooltip="" | ||||
|                     data-placement="left" | ||||
|                     id="of-about-button" | ||||
|                     type="button" | ||||
|                     title="About OpenFusionClient" | ||||
|                     data-target="#of-aboutmodal" | ||||
|                 > | ||||
|                     <i class="fas fa-info-circle"></i> | ||||
|                 </button> | ||||
|             </div> | ||||
|             <div id="of-about-flash-div" style="z-index: -1"> | ||||
|                 <button class="btn btn-warning mr-1" tabindex="-1" type="button"> | ||||
|                     <i class="fas fa-info-circle"></i> | ||||
|                 </button> | ||||
|             </div> | ||||
|         </section> | ||||
|         <section> | ||||
|   | ||||
							
								
								
									
										145
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										145
									
								
								index.js
									
									
									
									
									
								
							| @@ -1,67 +1,116 @@ | ||||
| var app = require("app"); // Module to control application life. | ||||
| var ipc = require("ipc"); | ||||
| var fs = require("fs-extra"); | ||||
| var os = require("os"); | ||||
| var dialog = require("dialog"); | ||||
| var fs = require("fs-extra"); | ||||
| var ipc = require("ipc"); | ||||
| var os = require("os"); | ||||
| var path = require("path"); | ||||
|  | ||||
| var BrowserWindow = require("browser-window"); | ||||
|  | ||||
| var mainWindow = null; | ||||
| app.commandLine.appendSwitch("enable-npapi"); | ||||
| app.commandLine.appendSwitch("no-proxy-server"); | ||||
|  | ||||
| var userData = app.getPath("userData"); | ||||
| var unityHomeDir = __dirname + "\\..\\..\\WebPlayer"; | ||||
| // if running in non-packaged / development mode, this dir will be slightly different | ||||
| var unityHomeDir = path.join(__dirname, "../../WebPlayer"); | ||||
| // If running in non-packaged / development mode, this dir will be slightly different | ||||
| if (process.env.npm_node_execpath) { | ||||
|     unityHomeDir = app.getAppPath() + "\\build\\WebPlayer"; | ||||
|     unityHomeDir = path.join(app.getAppPath(), "/build/WebPlayer"); | ||||
| } | ||||
|  | ||||
| process.env["UNITY_HOME_DIR"] = unityHomeDir; | ||||
| process.env["UNITY_DISABLE_PLUGIN_UPDATES"] = "yes"; | ||||
|  | ||||
| app.commandLine.appendSwitch("enable-npapi"); | ||||
| app.commandLine.appendSwitch( | ||||
|     "load-plugin", | ||||
|     path.join(unityHomeDir, "/loader/npUnity3D32.dll") | ||||
| ); | ||||
| app.commandLine.appendSwitch("no-proxy-server"); | ||||
|  | ||||
| var userData = app.getPath("userData"); | ||||
| var configPath = path.join(userData, "config.json"); | ||||
| var serversPath = path.join(userData, "servers.json"); | ||||
| var versionsPath = path.join(userData, "versions.json"); | ||||
| var hashPath = path.join(userData, "hashes.json"); | ||||
|  | ||||
| function backup() { | ||||
|     if (fs.existsSync(configPath)) fs.copySync(configPath, configPath + ".bak"); | ||||
|     if (fs.existsSync(serversPath)) | ||||
|         fs.copySync(serversPath, serversPath + ".bak"); | ||||
|     if (fs.existsSync(versionsPath)) | ||||
|         fs.copySync(versionsPath, versionsPath + ".bak"); | ||||
|     if (fs.existsSync(hashPath)) fs.copySync(hashPath, hashPath + ".bak"); | ||||
| } | ||||
|  | ||||
| function patchVersions() { | ||||
|     var current = fs.readJsonSync(versionsPath); | ||||
|     var newDefaults = fs.readJsonSync( | ||||
|         path.join(__dirname, "/defaults/versions.json") | ||||
|     ); | ||||
|     for (var i = 0; i < newDefaults["versions"].length; i++) { | ||||
|         var newDefault = newDefaults["versions"][i]; | ||||
|         var found = false; | ||||
|         for (var j = 0; j < current["versions"].length; j++) { | ||||
|             var version = current["versions"][j]; | ||||
|             if (newDefault["name"] === version["name"]) { | ||||
|                 current["versions"][j] = newDefault; | ||||
|                 found = true; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         if (!found) { | ||||
|             current["versions"].push(newDefault); | ||||
|         } | ||||
|     } | ||||
|     fs.writeFileSync(versionsPath, JSON.stringify(current, null, 4)); | ||||
| } | ||||
|  | ||||
| function patchServers() { | ||||
|     var current = fs.readJsonSync(serversPath); | ||||
|     var newDefaults = fs.readJsonSync( | ||||
|         path.join(__dirname, "/defaults/servers.json") | ||||
|     ); | ||||
|     for (var i = 0; i < newDefaults["servers"].length; i++) { | ||||
|         var newDefault = newDefaults["servers"][i]; | ||||
|         var found = false; | ||||
|         for (var j = 0; j < current["servers"].length; j++) { | ||||
|             var server = current["servers"][j]; | ||||
|             if (newDefault["uuid"] === server["uuid"]) { | ||||
|                 current["servers"][j] = newDefault; | ||||
|                 found = true; | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|         if (!found) { | ||||
|             current["servers"].push(newDefault); | ||||
|         } | ||||
|     } | ||||
|     fs.writeFileSync(serversPath, JSON.stringify(current, null, 4)); | ||||
| } | ||||
|  | ||||
| function initialSetup(firstTime) { | ||||
|     // Display a small window to inform the user that the app is working | ||||
|     setupWindow = new BrowserWindow({ | ||||
|         width: 275, | ||||
|         height: 450, | ||||
|         resizable: false, | ||||
|         center: true, | ||||
|         frame: false, | ||||
|     }); | ||||
|     if (!firstTime) { | ||||
|         // migration from pre-1.4 | ||||
|         // Back everything up, just in case | ||||
|         setupWindow.loadUrl("file://" + __dirname + "/initial-setup.html"); | ||||
|         fs.copySync(userData + "\\config.json", userData + "\\config.json.bak"); | ||||
|         fs.copySync( | ||||
|             userData + "\\servers.json", | ||||
|             userData + "\\servers.json.bak" | ||||
|         ); | ||||
|         fs.copySync( | ||||
|             userData + "\\versions.json", | ||||
|             userData + "\\versions.json.bak" | ||||
|         ); | ||||
|     } else { | ||||
|         // first-time setup | ||||
|     backup(); | ||||
|  | ||||
|     if (firstTime) { | ||||
|         // First-time setup | ||||
|         // Copy default servers | ||||
|         fs.copySync( | ||||
|             __dirname + "\\defaults\\servers.json", | ||||
|             userData + "\\servers.json" | ||||
|             path.join(__dirname, "/defaults/servers.json"), | ||||
|             serversPath | ||||
|         ); | ||||
|         fs.copySync( | ||||
|             path.join(__dirname, "/defaults/versions.json"), | ||||
|             versionsPath | ||||
|         ); | ||||
|     } else if (fs.existsSync(serversPath)) { | ||||
|         // Migration | ||||
|         // Update default servers and versions | ||||
|         patchVersions(); | ||||
|         patchServers(); | ||||
|     } | ||||
|  | ||||
|     // Copy default versions and config | ||||
|     fs.copySync( | ||||
|         __dirname + "\\defaults\\versions.json", | ||||
|         userData + "\\versions.json" | ||||
|     ); | ||||
|     fs.copySync( | ||||
|         __dirname + "\\defaults\\config.json", | ||||
|         userData + "\\config.json" | ||||
|     ); | ||||
|     fs.copySync(path.join(__dirname, "/defaults/config.json"), configPath); | ||||
|     fs.copySync(path.join(__dirname, "/defaults/hashes.json"), hashPath); | ||||
|  | ||||
|     console.log("JSON files copied."); | ||||
|     setupWindow.destroy(); | ||||
|     showMainWindow(); | ||||
| } | ||||
|  | ||||
| @@ -91,21 +140,19 @@ app.on("ready", function () { | ||||
|         show: false, | ||||
|         "web-preferences": { | ||||
|             plugins: true, | ||||
|             "extra-plugin-dirs": [unityHomeDir + "\\loader"], | ||||
|         }, | ||||
|     }); | ||||
|     mainWindow.setMinimumSize(640, 480); | ||||
|  | ||||
|     // Check for first run | ||||
|     var configPath = userData + "\\config.json"; | ||||
|     try { | ||||
|         if (!fs.existsSync(configPath)) { | ||||
|             console.log("Config file not found. Running initial setup."); | ||||
|             initialSetup(true); | ||||
|         } else { | ||||
|             var config = fs.readJsonSync(configPath); | ||||
|             if (!config["last-version-initialized"]) { | ||||
|                 console.log("Pre-1.4 config detected. Running migration."); | ||||
|             if (config["last-version-initialized"] !== "1.6") { | ||||
|                 console.log("Pre-1.6 config detected. Running migration."); | ||||
|                 initialSetup(false); | ||||
|             } else { | ||||
|                 showMainWindow(); | ||||
| @@ -142,6 +189,7 @@ function showMainWindow() { | ||||
|         mainWindow.webContents.executeJavaScript("loadConfig();"); | ||||
|         mainWindow.webContents.executeJavaScript("loadGameVersions();"); | ||||
|         mainWindow.webContents.executeJavaScript("loadServerList();"); | ||||
|         mainWindow.webContents.executeJavaScript("loadCacheList();"); | ||||
|     }); | ||||
|  | ||||
|     mainWindow.webContents.on("plugin-crashed", function () { | ||||
| @@ -155,7 +203,6 @@ function showMainWindow() { | ||||
|  | ||||
|     mainWindow.webContents.on("will-navigate", function (event, url) { | ||||
|         event.preventDefault(); | ||||
|         // TODO: showMessageBox rather than showErrorBox? | ||||
|         switch (url) { | ||||
|             case "https://audience.fusionfall.com/ff/regWizard.do?_flowId=fusionfall-registration-flow": | ||||
|                 var errorMessage = | ||||
|   | ||||
| @@ -1,40 +0,0 @@ | ||||
| <!DOCTYPE html> | ||||
| <html> | ||||
|     <head> | ||||
|         <title>OpenFusion: Initial Setup</title> | ||||
|     </head> | ||||
|     <body | ||||
|         style=" | ||||
|             overflow: hidden; | ||||
|             background-color: #000; | ||||
|             user-select: none; | ||||
|             -webkit-user-select: none; | ||||
|         " | ||||
|     > | ||||
|         <center> | ||||
|             <div> | ||||
|                 <img src="assets/img/of-3.png" width="256" /> | ||||
|                 <div> | ||||
|                     <img src="assets/img/spinner.gif" width="50px" /> | ||||
|                 </div> | ||||
|                 <div style="margin-top: 15px"> | ||||
|                     <p | ||||
|                         style=" | ||||
|                             text-shadow: 1px 1px 8px #4349c4; | ||||
|                             color: #4a76b7; | ||||
|                             font-size: 18px; | ||||
|                             font-family: -apple-system, BlinkMacSystemFont, | ||||
|                                 'Segoe UI', Roboto, 'Helvetica Neue', Arial, | ||||
|                                 'Noto Sans', sans-serif, 'Apple Color Emoji', | ||||
|                                 'Segoe UI Emoji', 'Segoe UI Symbol', | ||||
|                                 'Noto Color Emoji'; | ||||
|                         " | ||||
|                     > | ||||
|                         OpenFusion is setting up...<br />Please wait - this | ||||
|                         should take <br />less than a minute. | ||||
|                     </p> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </center> | ||||
|     </body> | ||||
| </html> | ||||
							
								
								
									
										
											BIN
										
									
								
								lib/cache_handler.exe
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/cache_handler.exe
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										421
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										421
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,12 +1,12 @@ | ||||
| { | ||||
|     "name": "OpenFusionClient", | ||||
|     "version": "1.4.1", | ||||
|     "version": "1.6.0", | ||||
|     "lockfileVersion": 2, | ||||
|     "requires": true, | ||||
|     "packages": { | ||||
|         "": { | ||||
|             "name": "OpenFusionClient", | ||||
|             "version": "1.4.1", | ||||
|             "version": "1.6.0", | ||||
|             "hasInstallScript": true, | ||||
|             "license": "MIT", | ||||
|             "dependencies": { | ||||
| @@ -15,8 +15,8 @@ | ||||
|             "devDependencies": { | ||||
|                 "electron-builder": "^22.14.13", | ||||
|                 "electron-prebuilt": "^0.31.2", | ||||
|                 "patch-package": "^6.5.1", | ||||
|                 "prettier": "^2.7.1" | ||||
|                 "patch-package": "^7.0.2", | ||||
|                 "prettier": "^3.3.3" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@develar/schema-utils": { | ||||
| @@ -112,65 +112,6 @@ | ||||
|                 "node": ">= 10" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/cross-spawn-promise/node_modules/cross-spawn": { | ||||
|             "version": "7.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "path-key": "^3.1.0", | ||||
|                 "shebang-command": "^2.0.0", | ||||
|                 "which": "^2.0.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/cross-spawn-promise/node_modules/path-key": { | ||||
|             "version": "3.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/cross-spawn-promise/node_modules/shebang-command": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "shebang-regex": "^3.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/cross-spawn-promise/node_modules/shebang-regex": { | ||||
|             "version": "3.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|             "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/cross-spawn-promise/node_modules/which": { | ||||
|             "version": "2.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|             "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "isexe": "^2.0.0" | ||||
|             }, | ||||
|             "bin": { | ||||
|                 "node-which": "bin/node-which" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/@malept/flatpak-bundler": { | ||||
|             "version": "0.4.0", | ||||
|             "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", | ||||
| @@ -996,20 +937,6 @@ | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/cross-spawn": { | ||||
|             "version": "7.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "path-key": "^3.1.0", | ||||
|                 "shebang-command": "^2.0.0", | ||||
|                 "which": "^2.0.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/debug": { | ||||
|             "version": "4.3.4", | ||||
|             "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", | ||||
| @@ -1059,51 +986,6 @@ | ||||
|             "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/path-key": { | ||||
|             "version": "3.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/shebang-command": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "shebang-regex": "^3.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/shebang-regex": { | ||||
|             "version": "3.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|             "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/builder-util/node_modules/which": { | ||||
|             "version": "2.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|             "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "isexe": "^2.0.0" | ||||
|             }, | ||||
|             "bin": { | ||||
|                 "node-which": "bin/node-which" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/cacheable-request": { | ||||
|             "version": "6.1.0", | ||||
|             "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", | ||||
| @@ -1423,19 +1305,17 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/cross-spawn": { | ||||
|             "version": "6.0.5", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", | ||||
|             "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", | ||||
|             "version": "7.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "nice-try": "^1.0.4", | ||||
|                 "path-key": "^2.0.1", | ||||
|                 "semver": "^5.5.0", | ||||
|                 "shebang-command": "^1.2.0", | ||||
|                 "which": "^1.2.9" | ||||
|                 "path-key": "^3.1.0", | ||||
|                 "shebang-command": "^2.0.0", | ||||
|                 "which": "^2.0.1" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=4.8" | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/crypto-random-string": { | ||||
| @@ -2597,7 +2477,7 @@ | ||||
|         "node_modules/isexe": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", | ||||
|             "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", | ||||
|             "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "node_modules/isstream": { | ||||
| @@ -2968,12 +2848,6 @@ | ||||
|                 "ncp": "bin/ncp" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/nice-try": { | ||||
|             "version": "1.0.5", | ||||
|             "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", | ||||
|             "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "node_modules/node-addon-api": { | ||||
|             "version": "1.7.2", | ||||
|             "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", | ||||
| @@ -3124,34 +2998,49 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/patch-package": { | ||||
|             "version": "6.5.1", | ||||
|             "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", | ||||
|             "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", | ||||
|             "version": "7.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.2.tgz", | ||||
|             "integrity": "sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "@yarnpkg/lockfile": "^1.1.0", | ||||
|                 "chalk": "^4.1.2", | ||||
|                 "cross-spawn": "^6.0.5", | ||||
|                 "ci-info": "^3.7.0", | ||||
|                 "cross-spawn": "^7.0.3", | ||||
|                 "find-yarn-workspace-root": "^2.0.0", | ||||
|                 "fs-extra": "^9.0.0", | ||||
|                 "is-ci": "^2.0.0", | ||||
|                 "klaw-sync": "^6.0.0", | ||||
|                 "minimist": "^1.2.6", | ||||
|                 "open": "^7.4.2", | ||||
|                 "rimraf": "^2.6.3", | ||||
|                 "semver": "^5.6.0", | ||||
|                 "semver": "^7.5.3", | ||||
|                 "slash": "^2.0.0", | ||||
|                 "tmp": "^0.0.33", | ||||
|                 "yaml": "^1.10.2" | ||||
|                 "yaml": "^2.2.2" | ||||
|             }, | ||||
|             "bin": { | ||||
|                 "patch-package": "index.js" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=10", | ||||
|                 "node": ">=14", | ||||
|                 "npm": ">5" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/patch-package/node_modules/ci-info": { | ||||
|             "version": "3.9.0", | ||||
|             "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", | ||||
|             "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", | ||||
|             "dev": true, | ||||
|             "funding": [ | ||||
|                 { | ||||
|                     "type": "github", | ||||
|                     "url": "https://github.com/sponsors/sibiraj-s" | ||||
|                 } | ||||
|             ], | ||||
|             "engines": { | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/patch-package/node_modules/fs-extra": { | ||||
|             "version": "9.1.0", | ||||
|             "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", | ||||
| @@ -3199,6 +3088,18 @@ | ||||
|                 "rimraf": "bin.js" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/patch-package/node_modules/semver": { | ||||
|             "version": "7.6.2", | ||||
|             "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", | ||||
|             "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", | ||||
|             "dev": true, | ||||
|             "bin": { | ||||
|                 "semver": "bin/semver.js" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=10" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/path-exists": { | ||||
|             "version": "1.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", | ||||
| @@ -3218,12 +3119,12 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/path-key": { | ||||
|             "version": "2.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", | ||||
|             "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", | ||||
|             "version": "3.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=4" | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/path-parse": { | ||||
| @@ -3323,15 +3224,15 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/prettier": { | ||||
|             "version": "2.7.1", | ||||
|             "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", | ||||
|             "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", | ||||
|             "version": "3.3.3", | ||||
|             "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", | ||||
|             "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", | ||||
|             "dev": true, | ||||
|             "bin": { | ||||
|                 "prettier": "bin-prettier.js" | ||||
|                 "prettier": "bin/prettier.cjs" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=10.13.0" | ||||
|                 "node": ">=14" | ||||
|             }, | ||||
|             "funding": { | ||||
|                 "url": "https://github.com/prettier/prettier?sponsor=1" | ||||
| @@ -3681,24 +3582,24 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/shebang-command": { | ||||
|             "version": "1.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", | ||||
|             "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "shebang-regex": "^1.0.0" | ||||
|                 "shebang-regex": "^3.0.0" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">=0.10.0" | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/shebang-regex": { | ||||
|             "version": "1.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", | ||||
|             "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", | ||||
|             "version": "3.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|             "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|             "dev": true, | ||||
|             "engines": { | ||||
|                 "node": ">=0.10.0" | ||||
|                 "node": ">=8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/signal-exit": { | ||||
| @@ -4314,15 +4215,18 @@ | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/which": { | ||||
|             "version": "1.3.1", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", | ||||
|             "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", | ||||
|             "version": "2.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|             "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|             "dev": true, | ||||
|             "dependencies": { | ||||
|                 "isexe": "^2.0.0" | ||||
|             }, | ||||
|             "bin": { | ||||
|                 "which": "bin/which" | ||||
|                 "node-which": "bin/node-which" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 8" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/widest-line": { | ||||
| @@ -4439,12 +4343,15 @@ | ||||
|             "dev": true | ||||
|         }, | ||||
|         "node_modules/yaml": { | ||||
|             "version": "1.10.2", | ||||
|             "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", | ||||
|             "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", | ||||
|             "version": "2.4.5", | ||||
|             "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", | ||||
|             "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", | ||||
|             "dev": true, | ||||
|             "bin": { | ||||
|                 "yaml": "bin.mjs" | ||||
|             }, | ||||
|             "engines": { | ||||
|                 "node": ">= 6" | ||||
|                 "node": ">= 14" | ||||
|             } | ||||
|         }, | ||||
|         "node_modules/yargs": { | ||||
| @@ -4545,49 +4452,6 @@ | ||||
|             "dev": true, | ||||
|             "requires": { | ||||
|                 "cross-spawn": "^7.0.1" | ||||
|             }, | ||||
|             "dependencies": { | ||||
|                 "cross-spawn": { | ||||
|                     "version": "7.0.3", | ||||
|                     "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|                     "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "path-key": "^3.1.0", | ||||
|                         "shebang-command": "^2.0.0", | ||||
|                         "which": "^2.0.1" | ||||
|                     } | ||||
|                 }, | ||||
|                 "path-key": { | ||||
|                     "version": "3.1.1", | ||||
|                     "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|                     "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "shebang-command": { | ||||
|                     "version": "2.0.0", | ||||
|                     "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|                     "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "shebang-regex": "^3.0.0" | ||||
|                     } | ||||
|                 }, | ||||
|                 "shebang-regex": { | ||||
|                     "version": "3.0.0", | ||||
|                     "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|                     "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "which": { | ||||
|                     "version": "2.0.2", | ||||
|                     "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|                     "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "isexe": "^2.0.0" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         "@malept/flatpak-bundler": { | ||||
| @@ -5207,17 +5071,6 @@ | ||||
|                     "integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "cross-spawn": { | ||||
|                     "version": "7.0.3", | ||||
|                     "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|                     "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "path-key": "^3.1.0", | ||||
|                         "shebang-command": "^2.0.0", | ||||
|                         "which": "^2.0.1" | ||||
|                     } | ||||
|                 }, | ||||
|                 "debug": { | ||||
|                     "version": "4.3.4", | ||||
|                     "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", | ||||
| @@ -5252,36 +5105,6 @@ | ||||
|                     "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
|                     "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "path-key": { | ||||
|                     "version": "3.1.1", | ||||
|                     "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|                     "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "shebang-command": { | ||||
|                     "version": "2.0.0", | ||||
|                     "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|                     "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "shebang-regex": "^3.0.0" | ||||
|                     } | ||||
|                 }, | ||||
|                 "shebang-regex": { | ||||
|                     "version": "3.0.0", | ||||
|                     "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|                     "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "which": { | ||||
|                     "version": "2.0.2", | ||||
|                     "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|                     "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|                     "dev": true, | ||||
|                     "requires": { | ||||
|                         "isexe": "^2.0.0" | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| @@ -5571,16 +5394,14 @@ | ||||
|             } | ||||
|         }, | ||||
|         "cross-spawn": { | ||||
|             "version": "6.0.5", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", | ||||
|             "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", | ||||
|             "version": "7.0.3", | ||||
|             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", | ||||
|             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", | ||||
|             "dev": true, | ||||
|             "requires": { | ||||
|                 "nice-try": "^1.0.4", | ||||
|                 "path-key": "^2.0.1", | ||||
|                 "semver": "^5.5.0", | ||||
|                 "shebang-command": "^1.2.0", | ||||
|                 "which": "^1.2.9" | ||||
|                 "path-key": "^3.1.0", | ||||
|                 "shebang-command": "^2.0.0", | ||||
|                 "which": "^2.0.1" | ||||
|             } | ||||
|         }, | ||||
|         "crypto-random-string": { | ||||
| @@ -6486,7 +6307,7 @@ | ||||
|         "isexe": { | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", | ||||
|             "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", | ||||
|             "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "isstream": { | ||||
| @@ -6776,12 +6597,6 @@ | ||||
|             "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "nice-try": { | ||||
|             "version": "1.0.5", | ||||
|             "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", | ||||
|             "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "node-addon-api": { | ||||
|             "version": "1.7.2", | ||||
|             "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", | ||||
| @@ -6901,27 +6716,33 @@ | ||||
|             } | ||||
|         }, | ||||
|         "patch-package": { | ||||
|             "version": "6.5.1", | ||||
|             "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", | ||||
|             "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", | ||||
|             "version": "7.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.2.tgz", | ||||
|             "integrity": "sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q==", | ||||
|             "dev": true, | ||||
|             "requires": { | ||||
|                 "@yarnpkg/lockfile": "^1.1.0", | ||||
|                 "chalk": "^4.1.2", | ||||
|                 "cross-spawn": "^6.0.5", | ||||
|                 "ci-info": "^3.7.0", | ||||
|                 "cross-spawn": "^7.0.3", | ||||
|                 "find-yarn-workspace-root": "^2.0.0", | ||||
|                 "fs-extra": "^9.0.0", | ||||
|                 "is-ci": "^2.0.0", | ||||
|                 "klaw-sync": "^6.0.0", | ||||
|                 "minimist": "^1.2.6", | ||||
|                 "open": "^7.4.2", | ||||
|                 "rimraf": "^2.6.3", | ||||
|                 "semver": "^5.6.0", | ||||
|                 "semver": "^7.5.3", | ||||
|                 "slash": "^2.0.0", | ||||
|                 "tmp": "^0.0.33", | ||||
|                 "yaml": "^1.10.2" | ||||
|                 "yaml": "^2.2.2" | ||||
|             }, | ||||
|             "dependencies": { | ||||
|                 "ci-info": { | ||||
|                     "version": "3.9.0", | ||||
|                     "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", | ||||
|                     "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", | ||||
|                     "dev": true | ||||
|                 }, | ||||
|                 "fs-extra": { | ||||
|                     "version": "9.1.0", | ||||
|                     "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", | ||||
| @@ -6956,6 +6777,12 @@ | ||||
|                     "requires": { | ||||
|                         "glob": "^7.1.3" | ||||
|                     } | ||||
|                 }, | ||||
|                 "semver": { | ||||
|                     "version": "7.6.2", | ||||
|                     "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", | ||||
|                     "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", | ||||
|                     "dev": true | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
| @@ -6972,9 +6799,9 @@ | ||||
|             "dev": true | ||||
|         }, | ||||
|         "path-key": { | ||||
|             "version": "2.0.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", | ||||
|             "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", | ||||
|             "version": "3.1.1", | ||||
|             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", | ||||
|             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "path-parse": { | ||||
| @@ -7050,9 +6877,9 @@ | ||||
|             "dev": true | ||||
|         }, | ||||
|         "prettier": { | ||||
|             "version": "2.7.1", | ||||
|             "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", | ||||
|             "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", | ||||
|             "version": "3.3.3", | ||||
|             "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", | ||||
|             "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "pretty-bytes": { | ||||
| @@ -7326,18 +7153,18 @@ | ||||
|             } | ||||
|         }, | ||||
|         "shebang-command": { | ||||
|             "version": "1.2.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", | ||||
|             "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", | ||||
|             "version": "2.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", | ||||
|             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", | ||||
|             "dev": true, | ||||
|             "requires": { | ||||
|                 "shebang-regex": "^1.0.0" | ||||
|                 "shebang-regex": "^3.0.0" | ||||
|             } | ||||
|         }, | ||||
|         "shebang-regex": { | ||||
|             "version": "1.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", | ||||
|             "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", | ||||
|             "version": "3.0.0", | ||||
|             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", | ||||
|             "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "signal-exit": { | ||||
| @@ -7833,9 +7660,9 @@ | ||||
|             } | ||||
|         }, | ||||
|         "which": { | ||||
|             "version": "1.3.1", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", | ||||
|             "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", | ||||
|             "version": "2.0.2", | ||||
|             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", | ||||
|             "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", | ||||
|             "dev": true, | ||||
|             "requires": { | ||||
|                 "isexe": "^2.0.0" | ||||
| @@ -7930,9 +7757,9 @@ | ||||
|             "dev": true | ||||
|         }, | ||||
|         "yaml": { | ||||
|             "version": "1.10.2", | ||||
|             "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", | ||||
|             "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", | ||||
|             "version": "2.4.5", | ||||
|             "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", | ||||
|             "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", | ||||
|             "dev": true | ||||
|         }, | ||||
|         "yargs": { | ||||
|   | ||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							| @@ -1,13 +1,13 @@ | ||||
| { | ||||
|     "name": "OpenFusionClient", | ||||
|     "version": "1.4.2", | ||||
|     "version": "1.6.1", | ||||
|     "description": "OpenFusionClient", | ||||
|     "main": "index.js", | ||||
|     "scripts": { | ||||
|         "postinstall": "npx patch-package && npm explore electron-prebuilt -- npm run postinstall", | ||||
|         "start": "electron .", | ||||
|         "pack": "electron-builder --win --ia32 --dir", | ||||
|         "dist": "electron-builder --win --ia32", | ||||
|         "dist": "electron-builder --win --ia32 --publish=never", | ||||
|         "prettier": "npx prettier --write ." | ||||
|     }, | ||||
|     "author": "OpenFusion Contributors", | ||||
| @@ -15,8 +15,8 @@ | ||||
|     "devDependencies": { | ||||
|         "electron-builder": "^22.14.13", | ||||
|         "electron-prebuilt": "^0.31.2", | ||||
|         "patch-package": "^6.5.1", | ||||
|         "prettier": "^2.7.1" | ||||
|         "patch-package": "^7.0.2", | ||||
|         "prettier": "^3.3.3" | ||||
|     }, | ||||
|     "repository": { | ||||
|         "type": "git", | ||||
| @@ -25,7 +25,7 @@ | ||||
|     "build": { | ||||
|         "appId": "xyz.openfusion.client", | ||||
|         "productName": "OpenFusionClient", | ||||
|         "copyright": "© 2020-2023 OpenFusion Contributors", | ||||
|         "copyright": "© 2020-2024 OpenFusion Contributors", | ||||
|         "electronDownload": { | ||||
|             "version": "0.31.2", | ||||
|             "platform": "win32", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user