mirror of
https://github.com/OpenFusionProject/Client.git
synced 2025-11-15 17:10:11 +00:00
Compare commits
52 Commits
2663179f93
...
1.6.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 |
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 }}
|
||||||
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
}
|
||||||
@@ -59,12 +59,24 @@ body {
|
|||||||
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||||
}
|
}
|
||||||
|
|
||||||
#of-versionnumberdiv {
|
#of-about-button-div {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 4px;
|
bottom: 4px;
|
||||||
right: 8px;
|
right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#of-about-flash-div {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 4px;
|
||||||
|
right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#of-config-button-div {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 4px;
|
||||||
|
left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
background-image: url("../../assets/img/btn-primary-bg.png");
|
background-image: url("../../assets/img/btn-primary-bg.png");
|
||||||
background-repeat: repeat;
|
background-repeat: repeat;
|
||||||
@@ -85,6 +97,18 @@ body {
|
|||||||
background-repeat: repeat;
|
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 {
|
#of-aboutmodal > .modal-dialog > .modal-content {
|
||||||
background-color: #093363;
|
background-color: #093363;
|
||||||
border-color: #6699ff;
|
border-color: #6699ff;
|
||||||
@@ -186,3 +210,19 @@ button > i {
|
|||||||
background: #000;
|
background: #000;
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pulsing {
|
||||||
|
animation: pulse 2s infinite;
|
||||||
|
}
|
||||||
|
|||||||
@@ -10,11 +10,8 @@ var userData = remote.require("app").getPath("userData");
|
|||||||
var configPath = path.join(userData, "config.json");
|
var configPath = path.join(userData, "config.json");
|
||||||
var serversPath = path.join(userData, "servers.json");
|
var serversPath = path.join(userData, "servers.json");
|
||||||
var versionsPath = path.join(userData, "versions.json");
|
var versionsPath = path.join(userData, "versions.json");
|
||||||
var cacheRoot = path.join(
|
var cacheRoot = path.join(userData, "/../../LocalLow/Unity/Web Player/Cache");
|
||||||
userData,
|
var offlineRootDefault = path.join(cacheRoot, "../OfflineCache");
|
||||||
"/../../LocalLow/Unity/Web Player/Cache"
|
|
||||||
);
|
|
||||||
var offlineRootDefault = path.join(cacheRoot, "Offline");
|
|
||||||
var offlineRoot = offlineRootDefault;
|
var offlineRoot = offlineRootDefault;
|
||||||
|
|
||||||
var cdnString = "http://cdn.dexlabs.systems/ff/big";
|
var cdnString = "http://cdn.dexlabs.systems/ff/big";
|
||||||
@@ -81,7 +78,36 @@ function getAppVersion() {
|
|||||||
|
|
||||||
function setAppVersionText() {
|
function setAppVersionText() {
|
||||||
$("#of-aboutversionnumber").text("Version " + getAppVersion());
|
$("#of-aboutversionnumber").text("Version " + getAppVersion());
|
||||||
$("#of-versionnumber").text("v" + getAppVersion());
|
}
|
||||||
|
|
||||||
|
function checkForNewAppVersion() {
|
||||||
|
$("#of-about-button").removeClass("pulsing");
|
||||||
|
setAppVersionText();
|
||||||
|
if (config["autoupdate-check"] === true) {
|
||||||
|
$.getJSON(
|
||||||
|
"https://api.github.com/repos/OpenFusionProject/OpenFusionClient/releases/latest",
|
||||||
|
{},
|
||||||
|
function (data) {
|
||||||
|
$.each(data, function (index, element) {
|
||||||
|
if (index === "tag_name" && element != remote.require("app").getVersion()) {
|
||||||
|
console.log("New version available: " + element);
|
||||||
|
var downloadPage =
|
||||||
|
"https://github.com/OpenFusionProject/OpenFusionClient/releases/latest";
|
||||||
|
$("#of-aboutversionnumber").html(
|
||||||
|
"Version " +
|
||||||
|
getAppVersion() +
|
||||||
|
`<br>A new version is available! ` +
|
||||||
|
`Click <a href="#" onclick='remote.require("shell").openExternal("` +
|
||||||
|
downloadPage +
|
||||||
|
`");'>here</a> to download.`
|
||||||
|
);
|
||||||
|
$("#of-about-button").addClass("pulsing");
|
||||||
|
return false; // break out of loop early
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateServerSave(modalName) {
|
function validateServerSave(modalName) {
|
||||||
@@ -95,14 +121,15 @@ function validateServerSave(modalName) {
|
|||||||
ipInput.classList.remove("invalidinput");
|
ipInput.classList.remove("invalidinput");
|
||||||
|
|
||||||
if (
|
if (
|
||||||
descInput.value.length < parseInt(descInput.getAttribute("minlength")) ||
|
descInput.value.length <
|
||||||
|
parseInt(descInput.getAttribute("minlength")) ||
|
||||||
descInput.value.length > parseInt(descInput.getAttribute("maxlength"))
|
descInput.value.length > parseInt(descInput.getAttribute("maxlength"))
|
||||||
) {
|
) {
|
||||||
descInput.classList.add("invalidinput");
|
descInput.classList.add("invalidinput");
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(new RegExp(ipInput.getAttribute("pattern"))).test(ipInput.value)) {
|
if (!new RegExp(ipInput.getAttribute("pattern")).test(ipInput.value)) {
|
||||||
ipInput.classList.add("invalidinput");
|
ipInput.classList.add("invalidinput");
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
@@ -193,17 +220,17 @@ function validateVersionSave(modalName) {
|
|||||||
var matchingVersions = versionArray.filter(function (obj) {
|
var matchingVersions = versionArray.filter(function (obj) {
|
||||||
return obj.name === nameInput.value;
|
return obj.name === nameInput.value;
|
||||||
});
|
});
|
||||||
var allowedMatches = (modalName === "edit") ? 1 : 0;
|
var allowedMatches = modalName === "edit" ? 1 : 0;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
matchingVersions.length > allowedMatches ||
|
matchingVersions.length > allowedMatches ||
|
||||||
!(new RegExp(nameInput.getAttribute("pattern"))).test(nameInput.value)
|
!new RegExp(nameInput.getAttribute("pattern")).test(nameInput.value)
|
||||||
) {
|
) {
|
||||||
nameInput.classList.add("invalidinput");
|
nameInput.classList.add("invalidinput");
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(new RegExp(urlInput.getAttribute("pattern"))).test(urlInput.value)) {
|
if (!new RegExp(urlInput.getAttribute("pattern")).test(urlInput.value)) {
|
||||||
urlInput.classList.add("invalidinput");
|
urlInput.classList.add("invalidinput");
|
||||||
valid = false;
|
valid = false;
|
||||||
}
|
}
|
||||||
@@ -246,7 +273,10 @@ function editVersion() {
|
|||||||
var editedVersionString = null;
|
var editedVersionString = null;
|
||||||
|
|
||||||
$.each(jsonToModify["versions"], function (key, value) {
|
$.each(jsonToModify["versions"], function (key, value) {
|
||||||
if (value["name"] == getSelectedVersion() && !defaultHashes.hasOwnProperty(value["name"])) {
|
if (
|
||||||
|
value["name"] == getSelectedVersion() &&
|
||||||
|
!defaultHashes.hasOwnProperty(value["name"])
|
||||||
|
) {
|
||||||
value["name"] =
|
value["name"] =
|
||||||
$("#editversion-nameinput").val().length == 0
|
$("#editversion-nameinput").val().length == 0
|
||||||
? value["name"]
|
? value["name"]
|
||||||
@@ -296,18 +326,27 @@ function restoreDefaultVersions() {
|
|||||||
function editConfig() {
|
function editConfig() {
|
||||||
var jsonToModify = JSON.parse(remotefs.readFileSync(configPath));
|
var jsonToModify = JSON.parse(remotefs.readFileSync(configPath));
|
||||||
|
|
||||||
jsonToModify["autoupdate-check"] = $("#editconfig-autoupdate").prop("checked");
|
jsonToModify["autoupdate-check"] = $("#editconfig-autoupdate").prop(
|
||||||
jsonToModify["cache-swapping"] = $("#editconfig-cacheswapping").prop("checked");
|
"checked"
|
||||||
jsonToModify["enable-offline-cache"] = $("#editconfig-enableofflinecache").prop("checked");
|
);
|
||||||
jsonToModify["verify-offline-cache"] = $("#editconfig-verifyofflinecache").prop("checked");
|
jsonToModify["cache-swapping"] = $("#editconfig-cacheswapping").prop(
|
||||||
|
"checked"
|
||||||
|
);
|
||||||
|
jsonToModify["enable-offline-cache"] = $(
|
||||||
|
"#editconfig-enableofflinecache"
|
||||||
|
).prop("checked");
|
||||||
|
jsonToModify["verify-offline-cache"] = $(
|
||||||
|
"#editconfig-verifyofflinecache"
|
||||||
|
).prop("checked");
|
||||||
|
|
||||||
var dirInput = $("#editconfig-offlinecachelocation:text").val();
|
var dirInput = $("#editconfig-offlinecachelocation:text").val();
|
||||||
var shouldChangeRoot = (
|
var shouldChangeRoot =
|
||||||
remotefs.existsSync(dirInput) &&
|
remotefs.existsSync(dirInput) &&
|
||||||
remotefs.statSync(dirInput).isDirectory()
|
remotefs.statSync(dirInput).isDirectory();
|
||||||
);
|
|
||||||
|
|
||||||
jsonToModify["offline-cache-location"] = shouldChangeRoot ? dirInput : offlineRoot;
|
jsonToModify["offline-cache-location"] = shouldChangeRoot
|
||||||
|
? dirInput
|
||||||
|
: offlineRoot;
|
||||||
|
|
||||||
remotefs.writeFileSync(configPath, JSON.stringify(jsonToModify, null, 4));
|
remotefs.writeFileSync(configPath, JSON.stringify(jsonToModify, null, 4));
|
||||||
|
|
||||||
@@ -319,11 +358,23 @@ function editConfig() {
|
|||||||
function validateCacheLocation() {
|
function validateCacheLocation() {
|
||||||
var input = document.getElementById("editconfig-offlinecachelocation");
|
var input = document.getElementById("editconfig-offlinecachelocation");
|
||||||
var button = document.getElementById("editconfig-savebutton");
|
var button = document.getElementById("editconfig-savebutton");
|
||||||
|
var parent = path.join(input.value, "/..");
|
||||||
|
|
||||||
input.classList.remove("invalidinput");
|
input.classList.remove("invalidinput");
|
||||||
button.removeAttribute("disabled");
|
button.removeAttribute("disabled");
|
||||||
|
|
||||||
if (!remotefs.existsSync(input.value) || !remotefs.statSync(input.value).isDirectory()) {
|
// Parent MUST exist and be a directory
|
||||||
|
// If the target exists, check that is also a directory
|
||||||
|
// Also, prevent putting the offline cache inside of
|
||||||
|
// the normal cache folder to prevent shenanigans
|
||||||
|
if (
|
||||||
|
!remotefs.existsSync(parent) ||
|
||||||
|
!remotefs.statSync(parent).isDirectory() ||
|
||||||
|
(remotefs.existsSync(input.value) &&
|
||||||
|
!remotefs.statSync(input.value).isDirectory()) ||
|
||||||
|
path.join(input.value, ".") === path.join(cacheRoot, "/..") ||
|
||||||
|
path.join(input.value, ".").startsWith(path.join(cacheRoot))
|
||||||
|
) {
|
||||||
input.classList.add("invalidinput");
|
input.classList.add("invalidinput");
|
||||||
button.setAttribute("disabled", "");
|
button.setAttribute("disabled", "");
|
||||||
}
|
}
|
||||||
@@ -348,13 +399,20 @@ function loadConfig() {
|
|||||||
|
|
||||||
$("#editconfig-autoupdate").prop("checked", config["autoupdate-check"]);
|
$("#editconfig-autoupdate").prop("checked", config["autoupdate-check"]);
|
||||||
$("#editconfig-cacheswapping").prop("checked", config["cache-swapping"]);
|
$("#editconfig-cacheswapping").prop("checked", config["cache-swapping"]);
|
||||||
$("#editconfig-enableofflinecache").prop("checked", config["enable-offline-cache"]);
|
$("#editconfig-enableofflinecache").prop(
|
||||||
$("#editconfig-verifyofflinecache").prop("checked", config["verify-offline-cache"]);
|
"checked",
|
||||||
|
config["enable-offline-cache"]
|
||||||
|
);
|
||||||
|
$("#editconfig-verifyofflinecache").prop(
|
||||||
|
"checked",
|
||||||
|
config["verify-offline-cache"]
|
||||||
|
);
|
||||||
|
|
||||||
// alter offline root globally
|
// alter offline root globally
|
||||||
offlineRoot = config["offline-cache-location"] || offlineRootDefault;
|
offlineRoot = config["offline-cache-location"] || offlineRootDefault;
|
||||||
$("#editconfig-offlinecachelocation:text").val(offlineRoot);
|
$("#editconfig-offlinecachelocation:text").val(offlineRoot);
|
||||||
|
|
||||||
|
checkForNewAppVersion();
|
||||||
validateCacheLocation();
|
validateCacheLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -395,10 +453,9 @@ function loadCacheList() {
|
|||||||
|
|
||||||
// load default hashes.json for reference while running the cache handler
|
// load default hashes.json for reference while running the cache handler
|
||||||
if (!defaultHashes) {
|
if (!defaultHashes) {
|
||||||
defaultHashes = remotefs.readJsonSync(path.join(
|
defaultHashes = remotefs.readJsonSync(
|
||||||
__dirname,
|
path.join(__dirname, "/defaults/hashes.json")
|
||||||
"/defaults/hashes.json"
|
);
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deselectVersion(); // Remove selection and disable buttons until another server is selected
|
deselectVersion(); // Remove selection and disable buttons until another server is selected
|
||||||
@@ -406,7 +463,7 @@ function loadCacheList() {
|
|||||||
|
|
||||||
$.each(versionArray, function (key, value) {
|
$.each(versionArray, function (key, value) {
|
||||||
var row = document.createElement("tr");
|
var row = document.createElement("tr");
|
||||||
row.className = "cache-listing-entry"
|
row.className = "cache-listing-entry";
|
||||||
row.setAttribute("id", value.name);
|
row.setAttribute("id", value.name);
|
||||||
|
|
||||||
var cellVersion = document.createElement("td");
|
var cellVersion = document.createElement("td");
|
||||||
@@ -430,24 +487,34 @@ function loadCacheList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getCacheElemID(versionString, cacheMode, elementName) {
|
function getCacheElemID(versionString, cacheMode, elementName) {
|
||||||
return [versionString, cacheMode, "cache", elementName].filter(function (value) {
|
return [versionString, cacheMode, "cache", elementName]
|
||||||
return typeof value !== "undefined";
|
.filter(function (value) {
|
||||||
}).join("-");
|
return typeof value !== "undefined";
|
||||||
|
})
|
||||||
|
.join("-");
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCacheButtonID(versionString, cacheMode, buttonMode) {
|
function getCacheButtonID(versionString, cacheMode, buttonMode) {
|
||||||
return [getCacheElemID(versionString, cacheMode), buttonMode, "button"].join("-");
|
return [
|
||||||
|
getCacheElemID(versionString, cacheMode),
|
||||||
|
buttonMode,
|
||||||
|
"button",
|
||||||
|
].join("-");
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCacheLabelText(sizes) {
|
function getCacheLabelText(sizes) {
|
||||||
if (!sizes || sizes.total === 0)
|
if (!sizes || sizes.total === 0) return "?.?? GB / ?.?? GB";
|
||||||
return "?.?? GB / ?.?? GB";
|
|
||||||
|
|
||||||
var gb = 1 << 30;
|
var gb = 1 << 30;
|
||||||
var labelText = (sizes.intact / gb).toFixed(2) + " / " + (sizes.total / gb).toFixed(2) + " GB";
|
var labelText =
|
||||||
|
(sizes.intact / gb).toFixed(2) +
|
||||||
|
" / " +
|
||||||
|
(sizes.total / gb).toFixed(2) +
|
||||||
|
" GB";
|
||||||
|
|
||||||
if (sizes.altered > 0) {
|
if (sizes.altered > 0) {
|
||||||
labelText += "<br/>(" + (sizes.altered / gb).toFixed(2) + " GB Altered)";
|
labelText +=
|
||||||
|
"<br/>(" + (sizes.altered / gb).toFixed(2) + " GB Altered)";
|
||||||
}
|
}
|
||||||
|
|
||||||
return labelText;
|
return labelText;
|
||||||
@@ -461,18 +528,18 @@ function getCacheInfoCell(versionString, cacheMode) {
|
|||||||
download: {
|
download: {
|
||||||
icon: "fas fa-download",
|
icon: "fas fa-download",
|
||||||
class: "btn btn-success mr-1",
|
class: "btn btn-success mr-1",
|
||||||
tooltip: "Download Cache"
|
tooltip: "Download Cache",
|
||||||
},
|
},
|
||||||
fix: {
|
fix: {
|
||||||
icon: "fas fa-hammer",
|
icon: "fas fa-hammer",
|
||||||
class: "btn btn-warning mr-1",
|
class: "btn btn-warning mr-1",
|
||||||
tooltip: "Fix Altered Files in Cache"
|
tooltip: "Fix Altered Files in Cache",
|
||||||
},
|
},
|
||||||
delete: {
|
delete: {
|
||||||
icon: "fas fa-trash-alt",
|
icon: "fas fa-trash-alt",
|
||||||
class: "btn btn-danger mr-1",
|
class: "btn btn-danger mr-1",
|
||||||
tooltip: "Delete Cache"
|
tooltip: "Delete Cache",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
var cellCache = document.createElement("td");
|
var cellCache = document.createElement("td");
|
||||||
@@ -483,9 +550,9 @@ function getCacheInfoCell(versionString, cacheMode) {
|
|||||||
labelCache.setAttribute("for", divID);
|
labelCache.setAttribute("for", divID);
|
||||||
// pull existing info from cacheSizes when available
|
// pull existing info from cacheSizes when available
|
||||||
labelCache.innerHTML = getCacheLabelText(
|
labelCache.innerHTML = getCacheLabelText(
|
||||||
(cacheSizes && cacheSizes[versionString]) ?
|
cacheSizes && cacheSizes[versionString]
|
||||||
cacheSizes[versionString][cacheMode] :
|
? cacheSizes[versionString][cacheMode]
|
||||||
null
|
: null
|
||||||
);
|
);
|
||||||
|
|
||||||
var divCacheButtons = document.createElement("div");
|
var divCacheButtons = document.createElement("div");
|
||||||
@@ -508,7 +575,16 @@ function getCacheInfoCell(versionString, cacheMode) {
|
|||||||
buttonCache.setAttribute("title", config.tooltip);
|
buttonCache.setAttribute("title", config.tooltip);
|
||||||
buttonCache.setAttribute("type", "button");
|
buttonCache.setAttribute("type", "button");
|
||||||
// handler setup
|
// handler setup
|
||||||
buttonCache.setAttribute("onclick", "handleCache(\"" + buttonMode + "\", \"" + versionString + "\", \"" + cacheMode + "\");");
|
buttonCache.setAttribute(
|
||||||
|
"onclick",
|
||||||
|
'handleCache("' +
|
||||||
|
buttonMode +
|
||||||
|
'", "' +
|
||||||
|
versionString +
|
||||||
|
'", "' +
|
||||||
|
cacheMode +
|
||||||
|
'");'
|
||||||
|
);
|
||||||
buttonCache.appendChild(iconItalic);
|
buttonCache.appendChild(iconItalic);
|
||||||
|
|
||||||
divCacheButtons.appendChild(buttonCache);
|
divCacheButtons.appendChild(buttonCache);
|
||||||
@@ -526,13 +602,12 @@ function storageLoadingStart(vString, cMode) {
|
|||||||
var versionStrings = [];
|
var versionStrings = [];
|
||||||
$.each(versionArray, function (key, value) {
|
$.each(versionArray, function (key, value) {
|
||||||
if (vString) {
|
if (vString) {
|
||||||
if (vString === value.name)
|
if (vString === value.name) versionStrings.push(value.name);
|
||||||
versionStrings.push(value.name);
|
|
||||||
} else {
|
} else {
|
||||||
versionStrings.push(value.name);
|
versionStrings.push(value.name);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var cacheModes = (cMode) ? [cMode] : ["offline", "playable"];
|
var cacheModes = cMode ? [cMode] : ["offline", "playable"];
|
||||||
|
|
||||||
// deselect and disable the add version button until they are re-enabled
|
// deselect and disable the add version button until they are re-enabled
|
||||||
deselectVersion();
|
deselectVersion();
|
||||||
@@ -541,21 +616,36 @@ function storageLoadingStart(vString, cMode) {
|
|||||||
// turn buttons into spinners
|
// turn buttons into spinners
|
||||||
$.each(versionStrings, function (vKey, versionString) {
|
$.each(versionStrings, function (vKey, versionString) {
|
||||||
$.each(cacheModes, function (cKey, cacheMode) {
|
$.each(cacheModes, function (cKey, cacheMode) {
|
||||||
var buttonDelete = document.getElementById(getCacheButtonID(versionString, cacheMode, "delete"));
|
var buttonDelete = document.getElementById(
|
||||||
var buttonDownload = document.getElementById(getCacheButtonID(versionString, cacheMode, "download"));
|
getCacheButtonID(versionString, cacheMode, "delete")
|
||||||
var buttonFix = document.getElementById(getCacheButtonID(versionString, cacheMode, "fix"));
|
);
|
||||||
|
var buttonDownload = document.getElementById(
|
||||||
|
getCacheButtonID(versionString, cacheMode, "download")
|
||||||
|
);
|
||||||
|
var buttonFix = document.getElementById(
|
||||||
|
getCacheButtonID(versionString, cacheMode, "fix")
|
||||||
|
);
|
||||||
|
|
||||||
if (!buttonDelete) return;
|
if (!buttonDelete) return;
|
||||||
|
|
||||||
buttonDelete.setAttribute("disabled", "");
|
buttonDelete.setAttribute("disabled", "");
|
||||||
buttonDelete.children[0].setAttribute("class", "fas fa-spinner fa-spin fa-fw");
|
buttonDelete.children[0].setAttribute(
|
||||||
|
"class",
|
||||||
|
"fas fa-spinner fa-spin fa-fw"
|
||||||
|
);
|
||||||
|
|
||||||
if (cacheMode === "offline") {
|
if (cacheMode === "offline") {
|
||||||
buttonDownload.setAttribute("disabled", "");
|
buttonDownload.setAttribute("disabled", "");
|
||||||
buttonDownload.children[0].setAttribute("class", "fas fa-spinner fa-spin fa-fw");
|
buttonDownload.children[0].setAttribute(
|
||||||
|
"class",
|
||||||
|
"fas fa-spinner fa-spin fa-fw"
|
||||||
|
);
|
||||||
|
|
||||||
buttonFix.setAttribute("disabled", "");
|
buttonFix.setAttribute("disabled", "");
|
||||||
buttonFix.children[0].setAttribute("class", "fas fa-spinner fa-spin fa-fw");
|
buttonFix.children[0].setAttribute(
|
||||||
|
"class",
|
||||||
|
"fas fa-spinner fa-spin fa-fw"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -565,7 +655,9 @@ function storageLoadingUpdate(allSizes) {
|
|||||||
// update cacheSizes and display results
|
// update cacheSizes and display results
|
||||||
$.each(allSizes, function (versionString, vSizes) {
|
$.each(allSizes, function (versionString, vSizes) {
|
||||||
$.each(vSizes, function (cacheMode, sizes) {
|
$.each(vSizes, function (cacheMode, sizes) {
|
||||||
var label = document.getElementById(getCacheElemID(versionString, cacheMode, "label"));
|
var label = document.getElementById(
|
||||||
|
getCacheElemID(versionString, cacheMode, "label")
|
||||||
|
);
|
||||||
|
|
||||||
cacheSizes = cacheSizes || {};
|
cacheSizes = cacheSizes || {};
|
||||||
cacheSizes[versionString] = cacheSizes[versionString] || {};
|
cacheSizes[versionString] = cacheSizes[versionString] || {};
|
||||||
@@ -582,16 +674,25 @@ function storageLoadingComplete(allSizes) {
|
|||||||
// re-enable buttons according to the sizes that were read
|
// re-enable buttons according to the sizes that were read
|
||||||
$.each(allSizes, function (versionString, vSizes) {
|
$.each(allSizes, function (versionString, vSizes) {
|
||||||
$.each(vSizes, function (cacheMode, sizes) {
|
$.each(vSizes, function (cacheMode, sizes) {
|
||||||
var buttonDelete = document.getElementById(getCacheButtonID(versionString, cacheMode, "delete"));
|
var buttonDelete = document.getElementById(
|
||||||
var buttonDownload = document.getElementById(getCacheButtonID(versionString, cacheMode, "download"));
|
getCacheButtonID(versionString, cacheMode, "delete")
|
||||||
var buttonFix = document.getElementById(getCacheButtonID(versionString, cacheMode, "fix"));
|
);
|
||||||
|
var buttonDownload = document.getElementById(
|
||||||
|
getCacheButtonID(versionString, cacheMode, "download")
|
||||||
|
);
|
||||||
|
var buttonFix = document.getElementById(
|
||||||
|
getCacheButtonID(versionString, cacheMode, "fix")
|
||||||
|
);
|
||||||
|
|
||||||
if (!buttonDelete) return;
|
if (!buttonDelete) return;
|
||||||
|
|
||||||
buttonDelete.children[0].setAttribute("class", "fas fa-trash-alt");
|
buttonDelete.children[0].setAttribute("class", "fas fa-trash-alt");
|
||||||
|
|
||||||
if (cacheMode === "offline") {
|
if (cacheMode === "offline") {
|
||||||
buttonDownload.children[0].setAttribute("class", "fas fa-download");
|
buttonDownload.children[0].setAttribute(
|
||||||
|
"class",
|
||||||
|
"fas fa-download"
|
||||||
|
);
|
||||||
buttonFix.children[0].setAttribute("class", "fas fa-hammer");
|
buttonFix.children[0].setAttribute("class", "fas fa-hammer");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -626,7 +727,7 @@ function handleCache(operation, versionString, cacheMode, callback) {
|
|||||||
return obj.name === versionString;
|
return obj.name === versionString;
|
||||||
});
|
});
|
||||||
// pull version url from the found object, if none found, use the default cdn link
|
// pull version url from the found object, if none found, use the default cdn link
|
||||||
var cdnRoot = (versions.length === 0) ? cdnString : versions[0].url;
|
var cdnRoot = versions.length === 0 ? cdnString : versions[0].url;
|
||||||
|
|
||||||
var lastSizes = { intact: 0, altered: 0, total: 0 };
|
var lastSizes = { intact: 0, altered: 0, total: 0 };
|
||||||
var buf = "";
|
var buf = "";
|
||||||
@@ -665,28 +766,42 @@ function handleCache(operation, versionString, cacheMode, callback) {
|
|||||||
spawn(
|
spawn(
|
||||||
path.join(__dirname, "lib", "cache_handler.exe"),
|
path.join(__dirname, "lib", "cache_handler.exe"),
|
||||||
[
|
[
|
||||||
"--operation", operation,
|
"--operation",
|
||||||
|
operation,
|
||||||
// roots below contain version-agnostic main directories for caches
|
// roots below contain version-agnostic main directories for caches
|
||||||
"--playable-root", cacheRoot,
|
"--playable-root",
|
||||||
"--offline-root", offlineRoot,
|
cacheRoot,
|
||||||
"--user-dir", userData,
|
"--offline-root",
|
||||||
|
offlineRoot,
|
||||||
|
"--user-dir",
|
||||||
|
userData,
|
||||||
// CDN root contains version-specific directory, unless cacheMode is "all"
|
// CDN root contains version-specific directory, unless cacheMode is "all"
|
||||||
"--cdn-root", cdnRoot,
|
"--cdn-root",
|
||||||
"--cache-mode", cacheMode || "all",
|
cdnRoot,
|
||||||
"--cache-version", versionString || "all",
|
"--cache-mode",
|
||||||
|
cacheMode || "all",
|
||||||
|
"--cache-version",
|
||||||
|
versionString || "all",
|
||||||
// learn port from the server object and tell the script where to connect
|
// learn port from the server object and tell the script where to connect
|
||||||
"--port", server.address().port,
|
"--port",
|
||||||
|
server.address().port,
|
||||||
// tell the script which versions and caches are official
|
// tell the script which versions and caches are official
|
||||||
"--official-caches"
|
"--official-caches",
|
||||||
].concat(Object.keys(defaultHashes)),
|
].concat(Object.keys(defaultHashes)),
|
||||||
{
|
{
|
||||||
stdio: "inherit"
|
stdio: "inherit",
|
||||||
}
|
}
|
||||||
).on("exit", function (code, signal) {
|
).on("exit", function (code, signal) {
|
||||||
if (code !== 0 || signal) {
|
if (code !== 0 || signal) {
|
||||||
dialog.showErrorBox(
|
dialog.showErrorBox(
|
||||||
"Sorry!",
|
"Sorry!",
|
||||||
"Process \"" + operation + "\" failed with code " + code + " and signal " + signal + "."
|
'Process "' +
|
||||||
|
operation +
|
||||||
|
'" failed with code ' +
|
||||||
|
code +
|
||||||
|
" and signal " +
|
||||||
|
signal +
|
||||||
|
"."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,7 +828,10 @@ function performCacheSwap(newVersion) {
|
|||||||
if (remotefs.existsSync(currentCache)) {
|
if (remotefs.existsSync(currentCache)) {
|
||||||
// Cache already exists, find out what version it belongs to
|
// Cache already exists, find out what version it belongs to
|
||||||
if (remotefs.existsSync(record)) {
|
if (remotefs.existsSync(record)) {
|
||||||
var lastVersion = remotefs.readFileSync(record, (encoding = "utf8"));
|
var lastVersion = remotefs.readFileSync(
|
||||||
|
record,
|
||||||
|
(encoding = "utf8")
|
||||||
|
);
|
||||||
if (lastVersion != newVersion) {
|
if (lastVersion != newVersion) {
|
||||||
// Remove the directory we're trying to store the
|
// Remove the directory we're trying to store the
|
||||||
// existing cache to if it already exists for whatever
|
// existing cache to if it already exists for whatever
|
||||||
@@ -773,23 +891,33 @@ function prepGameInfo(serverUUID) {
|
|||||||
|
|
||||||
if (config["verify-offline-cache"]) {
|
if (config["verify-offline-cache"]) {
|
||||||
// if required, do a full hash check, and use the offline cache only if it is fully intact
|
// if required, do a full hash check, and use the offline cache only if it is fully intact
|
||||||
handleCache("hash-check", versionInfo.name, "offline", function (sizes) {
|
handleCache(
|
||||||
var versionURL = (sizes.intact < sizes.total) ? versionInfo.url : offlineURL;
|
"hash-check",
|
||||||
setGameInfo(serverInfo, versionURL);
|
versionInfo.name,
|
||||||
});
|
"offline",
|
||||||
|
function (sizes) {
|
||||||
|
var versionURL =
|
||||||
|
sizes.intact < sizes.total ? versionInfo.url : offlineURL;
|
||||||
|
setGameInfo(serverInfo, versionURL);
|
||||||
|
}
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise, if main.unity3d is present, use the offline cache
|
// otherwise, if main.unity3d is present, use the offline cache
|
||||||
var mainPath = path.join(offlinePath, "main.unity3d");
|
var mainPath = path.join(offlinePath, "main.unity3d");
|
||||||
var versionURL = !remotefs.existsSync(mainPath) ? versionInfo.url : offlineURL;
|
var versionURL = !remotefs.existsSync(mainPath)
|
||||||
|
? versionInfo.url
|
||||||
|
: offlineURL;
|
||||||
setGameInfo(serverInfo, versionURL);
|
setGameInfo(serverInfo, versionURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For writing loginInfo.php, assetInfo.php, etc.
|
// For writing loginInfo.php, assetInfo.php, etc.
|
||||||
function setGameInfo(serverInfo, versionURL) {
|
function setGameInfo(serverInfo, versionURL) {
|
||||||
// slash fix if people mess it up via text editors
|
// slash fix if people mess it up via text editors
|
||||||
var versionURLRoot = versionURL.endsWith("/") ? versionURL : versionURL + "/";
|
var versionURLRoot = versionURL.endsWith("/")
|
||||||
|
? versionURL
|
||||||
|
: versionURL + "/";
|
||||||
window.assetUrl = versionURLRoot; // game-client.js needs to access this
|
window.assetUrl = versionURLRoot; // game-client.js needs to access this
|
||||||
console.log("Cache will expand from " + versionURLRoot);
|
console.log("Cache will expand from " + versionURLRoot);
|
||||||
|
|
||||||
@@ -860,6 +988,17 @@ function prepConnection(address, port) {
|
|||||||
launchGame();
|
launchGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function browseOfflineCache() {
|
||||||
|
var browsePath = dialog.showOpenDialog({ properties: ["openDirectory"] });
|
||||||
|
var offlineCacheInput = document.getElementById(
|
||||||
|
"editconfig-offlinecachelocation"
|
||||||
|
);
|
||||||
|
if (browsePath && offlineCacheInput) {
|
||||||
|
offlineCacheInput.value = browsePath;
|
||||||
|
validateCacheLocation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Returns the UUID of the server with the selected background color.
|
// Returns the UUID of the server with the selected background color.
|
||||||
// Yes, there are probably better ways to go about this, but it works well enough.
|
// Yes, there are probably better ways to go about this, but it works well enough.
|
||||||
function getSelectedServer() {
|
function getSelectedServer() {
|
||||||
|
|||||||
@@ -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:application>
|
||||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">
|
<asmv3:windowsSettings>
|
||||||
<activeCodePage>UTF-8</activeCodePage>
|
<activeCodePage xmlns="urn:schemas-microsoft-com:smi.2019.WindowsSettings">UTF-8</activeCodePage>
|
||||||
<dpiAware>true</dpiAware>
|
<dpiAware xmlns="urn:schemas-microsoft-com:smi.2005.WindowsSettings">True/PM</dpiAware>
|
||||||
</asmv3:windowsSettings>
|
</asmv3:windowsSettings>
|
||||||
</asmv3:application>
|
</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>
|
||||||
|
|||||||
2
defaults/config.json
vendored
2
defaults/config.json
vendored
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"autoupdate-check": true,
|
"autoupdate-check": true,
|
||||||
"cache-swapping": true,
|
"cache-swapping": true,
|
||||||
"enable-offline-cache": false,
|
"enable-offline-cache": true,
|
||||||
"verify-offline-cache": false,
|
"verify-offline-cache": false,
|
||||||
"last-version-initialized": "1.6"
|
"last-version-initialized": "1.6"
|
||||||
}
|
}
|
||||||
|
|||||||
182
index.html
182
index.html
@@ -1,4 +1,4 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
@@ -108,18 +108,6 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4 d-inline-flex justify-content-end">
|
<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-editconfig-button"
|
|
||||||
type="button"
|
|
||||||
title="Edit Configuration"
|
|
||||||
data-target="#of-editconfigmodal"
|
|
||||||
>
|
|
||||||
<i class="fas fa-cog"></i>
|
|
||||||
</button>
|
|
||||||
<button
|
<button
|
||||||
class="btn btn-primary mr-1"
|
class="btn btn-primary mr-1"
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
@@ -173,7 +161,7 @@
|
|||||||
APP_VERSION_NUMBER
|
APP_VERSION_NUMBER
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
©2020-2023 OpenFusion Contributors<br />OpenFusion
|
©2020-2024 OpenFusion Contributors<br />OpenFusion
|
||||||
is licensed under MIT.<br />
|
is licensed under MIT.<br />
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
@@ -183,6 +171,7 @@
|
|||||||
data-target="#of-restoreserversmodal"
|
data-target="#of-restoreserversmodal"
|
||||||
>Reset to Default Servers</a
|
>Reset to Default Servers</a
|
||||||
>
|
>
|
||||||
|
<br />
|
||||||
<a
|
<a
|
||||||
href="#of-restoreversionsmodal"
|
href="#of-restoreversionsmodal"
|
||||||
onclick="$('#of-aboutmodal').modal('toggle')"
|
onclick="$('#of-aboutmodal').modal('toggle')"
|
||||||
@@ -501,43 +490,80 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form id="editconfig-form" class="needs-validation">
|
<form
|
||||||
<label for="editconfig-autoupdate"
|
id="editconfig-form"
|
||||||
>Automatically update the client:</label
|
class="needs-validation form-group"
|
||||||
><input
|
>
|
||||||
class="form-control form-row w-75"
|
<div class="form-check form-row">
|
||||||
type="checkbox"
|
<input
|
||||||
id="editconfig-autoupdate"
|
class="form-check-input"
|
||||||
/>
|
type="checkbox"
|
||||||
<label for="editconfig-cacheswapping"
|
id="editconfig-autoupdate"
|
||||||
>Swap game caches to avoid unnecessary downloads:</label
|
/>
|
||||||
><input
|
<label
|
||||||
class="form-control form-row w-75"
|
class="form-check-label"
|
||||||
type="checkbox"
|
for="editconfig-autoupdate"
|
||||||
id="editconfig-cacheswapping"
|
>Automatically check for updates</label
|
||||||
/>
|
>
|
||||||
<label for="editconfig-enableofflinecache"
|
</div>
|
||||||
>Use offline caches when they are available:</label
|
<div class="form-check form-row">
|
||||||
><input
|
<input
|
||||||
class="form-control form-row w-75"
|
class="form-check-input"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
id="editconfig-enableofflinecache"
|
id="editconfig-cacheswapping"
|
||||||
/>
|
/>
|
||||||
<label for="editconfig-verifyofflinecache"
|
<label
|
||||||
>Verify offline caches every time they are loaded:</label
|
class="form-check-label"
|
||||||
><input
|
for="editconfig-cacheswapping"
|
||||||
class="form-control form-row w-75"
|
>Swap game caches to avoid unnecessary
|
||||||
type="checkbox"
|
downloads</label
|
||||||
id="editconfig-verifyofflinecache"
|
>
|
||||||
/>
|
</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"
|
<label for="editconfig-offlinecachelocation"
|
||||||
>Select Offline Cache Location:</label
|
><h5>Offline Cache Location:</h5></label
|
||||||
><input
|
>
|
||||||
class="form-control form-row w-75"
|
<div class="form-row">
|
||||||
id="editconfig-offlinecachelocation"
|
<input
|
||||||
type="text"
|
class="form-control w-75"
|
||||||
oninput="validateCacheLocation()"
|
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>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
@@ -568,7 +594,10 @@
|
|||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
id="of-editcacheconfigmodal"
|
id="of-editcacheconfigmodal"
|
||||||
>
|
>
|
||||||
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
<div
|
||||||
|
class="modal-dialog modal-dialog-centered modal-lg"
|
||||||
|
role="document"
|
||||||
|
>
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title">Edit Game Builds</h4>
|
<h4 class="modal-title">Edit Game Builds</h4>
|
||||||
@@ -636,7 +665,9 @@
|
|||||||
class="table-responsive text-center border rounded border-primary"
|
class="table-responsive text-center border rounded border-primary"
|
||||||
id="cache-table"
|
id="cache-table"
|
||||||
>
|
>
|
||||||
<table class="table table-striped table-hover mb-0">
|
<table
|
||||||
|
class="table table-striped table-hover mb-0"
|
||||||
|
>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Game Version</th>
|
<th>Game Version</th>
|
||||||
@@ -644,8 +675,7 @@
|
|||||||
<th>Offline Cache</th>
|
<th>Offline Cache</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="cache-tablebody">
|
<tbody id="cache-tablebody"></tbody>
|
||||||
</tbody>
|
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -661,7 +691,7 @@
|
|||||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4 class="modal-title">Add Server</h4>
|
<h4 class="modal-title">Add Version</h4>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="close"
|
class="close"
|
||||||
@@ -738,7 +768,10 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form id="editversion-form" class="needs-validation">
|
<form
|
||||||
|
id="editversion-form"
|
||||||
|
class="needs-validation"
|
||||||
|
>
|
||||||
<label for="editversion-nameinput"
|
<label for="editversion-nameinput"
|
||||||
>Version Name</label
|
>Version Name</label
|
||||||
><input
|
><input
|
||||||
@@ -876,15 +909,38 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="of-versionnumberdiv">
|
<div id="of-config-button-div">
|
||||||
<a
|
<button
|
||||||
id="of-versionnumber"
|
class="btn btn-primary mr-1"
|
||||||
class="text-monospace text-secondary"
|
|
||||||
href="#of-aboutmodal"
|
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
data-target="#of-aboutmodal"
|
data-bs-tooltip=""
|
||||||
>v0</a
|
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>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|||||||
74
index.js
74
index.js
@@ -30,25 +30,83 @@ var serversPath = path.join(userData, "servers.json");
|
|||||||
var versionsPath = path.join(userData, "versions.json");
|
var versionsPath = path.join(userData, "versions.json");
|
||||||
var hashPath = path.join(userData, "hashes.json");
|
var hashPath = path.join(userData, "hashes.json");
|
||||||
|
|
||||||
function initialSetup(firstTime) {
|
function backup() {
|
||||||
if (!firstTime) {
|
if (fs.existsSync(configPath)) fs.copySync(configPath, configPath + ".bak");
|
||||||
// Migration from pre-1.6
|
if (fs.existsSync(serversPath))
|
||||||
// Back everything up, just in case
|
|
||||||
fs.copySync(configPath, configPath + ".bak");
|
|
||||||
fs.copySync(serversPath, serversPath + ".bak");
|
fs.copySync(serversPath, serversPath + ".bak");
|
||||||
|
if (fs.existsSync(versionsPath))
|
||||||
fs.copySync(versionsPath, versionsPath + ".bak");
|
fs.copySync(versionsPath, versionsPath + ".bak");
|
||||||
fs.copySync(hashPath, hashPath + ".bak");
|
if (fs.existsSync(hashPath)) fs.copySync(hashPath, hashPath + ".bak");
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
backup();
|
||||||
|
|
||||||
|
if (firstTime) {
|
||||||
// First-time setup
|
// First-time setup
|
||||||
// Copy default servers
|
// Copy default servers
|
||||||
fs.copySync(
|
fs.copySync(
|
||||||
path.join(__dirname, "/defaults/servers.json"),
|
path.join(__dirname, "/defaults/servers.json"),
|
||||||
serversPath
|
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
|
// Copy default versions and config
|
||||||
fs.copySync(path.join(__dirname, "/defaults/versions.json"), versionsPath);
|
|
||||||
fs.copySync(path.join(__dirname, "/defaults/config.json"), configPath);
|
fs.copySync(path.join(__dirname, "/defaults/config.json"), configPath);
|
||||||
fs.copySync(path.join(__dirname, "/defaults/hashes.json"), hashPath);
|
fs.copySync(path.join(__dirname, "/defaults/hashes.json"), hashPath);
|
||||||
|
|
||||||
|
|||||||
421
package-lock.json
generated
421
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "OpenFusionClient",
|
"name": "OpenFusionClient",
|
||||||
"version": "1.5.1",
|
"version": "1.6.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "OpenFusionClient",
|
"name": "OpenFusionClient",
|
||||||
"version": "1.5.1",
|
"version": "1.6.0",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron-builder": "^22.14.13",
|
"electron-builder": "^22.14.13",
|
||||||
"electron-prebuilt": "^0.31.2",
|
"electron-prebuilt": "^0.31.2",
|
||||||
"patch-package": "^6.5.1",
|
"patch-package": "^7.0.2",
|
||||||
"prettier": "^2.7.1"
|
"prettier": "^3.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@develar/schema-utils": {
|
"node_modules/@develar/schema-utils": {
|
||||||
@@ -112,65 +112,6 @@
|
|||||||
"node": ">= 10"
|
"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": {
|
"node_modules/@malept/flatpak-bundler": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz",
|
||||||
@@ -996,20 +937,6 @@
|
|||||||
"node": ">=8"
|
"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": {
|
"node_modules/builder-util/node_modules/debug": {
|
||||||
"version": "4.3.4",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||||
@@ -1059,51 +986,6 @@
|
|||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/cacheable-request": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
|
||||||
@@ -1423,19 +1305,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
"version": "6.0.5",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nice-try": "^1.0.4",
|
"path-key": "^3.1.0",
|
||||||
"path-key": "^2.0.1",
|
"shebang-command": "^2.0.0",
|
||||||
"semver": "^5.5.0",
|
"which": "^2.0.1"
|
||||||
"shebang-command": "^1.2.0",
|
|
||||||
"which": "^1.2.9"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4.8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/crypto-random-string": {
|
"node_modules/crypto-random-string": {
|
||||||
@@ -2597,7 +2477,7 @@
|
|||||||
"node_modules/isexe": {
|
"node_modules/isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/isstream": {
|
"node_modules/isstream": {
|
||||||
@@ -2968,12 +2848,6 @@
|
|||||||
"ncp": "bin/ncp"
|
"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": {
|
"node_modules/node-addon-api": {
|
||||||
"version": "1.7.2",
|
"version": "1.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
||||||
@@ -3124,34 +2998,49 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/patch-package": {
|
"node_modules/patch-package": {
|
||||||
"version": "6.5.1",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.2.tgz",
|
||||||
"integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==",
|
"integrity": "sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@yarnpkg/lockfile": "^1.1.0",
|
"@yarnpkg/lockfile": "^1.1.0",
|
||||||
"chalk": "^4.1.2",
|
"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",
|
"find-yarn-workspace-root": "^2.0.0",
|
||||||
"fs-extra": "^9.0.0",
|
"fs-extra": "^9.0.0",
|
||||||
"is-ci": "^2.0.0",
|
|
||||||
"klaw-sync": "^6.0.0",
|
"klaw-sync": "^6.0.0",
|
||||||
"minimist": "^1.2.6",
|
"minimist": "^1.2.6",
|
||||||
"open": "^7.4.2",
|
"open": "^7.4.2",
|
||||||
"rimraf": "^2.6.3",
|
"rimraf": "^2.6.3",
|
||||||
"semver": "^5.6.0",
|
"semver": "^7.5.3",
|
||||||
"slash": "^2.0.0",
|
"slash": "^2.0.0",
|
||||||
"tmp": "^0.0.33",
|
"tmp": "^0.0.33",
|
||||||
"yaml": "^1.10.2"
|
"yaml": "^2.2.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"patch-package": "index.js"
|
"patch-package": "index.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10",
|
"node": ">=14",
|
||||||
"npm": ">5"
|
"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": {
|
"node_modules/patch-package/node_modules/fs-extra": {
|
||||||
"version": "9.1.0",
|
"version": "9.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||||
@@ -3199,6 +3088,18 @@
|
|||||||
"rimraf": "bin.js"
|
"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": {
|
"node_modules/path-exists": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz",
|
||||||
@@ -3218,12 +3119,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-key": {
|
"node_modules/path-key": {
|
||||||
"version": "2.0.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-parse": {
|
"node_modules/path-parse": {
|
||||||
@@ -3323,15 +3224,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "2.7.1",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
|
||||||
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin/prettier.cjs"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.13.0"
|
"node": ">=14"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||||
@@ -3681,24 +3582,24 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shebang-command": {
|
"node_modules/shebang-command": {
|
||||||
"version": "1.2.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"shebang-regex": "^1.0.0"
|
"shebang-regex": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shebang-regex": {
|
"node_modules/shebang-regex": {
|
||||||
"version": "1.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/signal-exit": {
|
"node_modules/signal-exit": {
|
||||||
@@ -4314,15 +4215,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "1.3.1",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"which": "bin/which"
|
"node-which": "bin/node-which"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/widest-line": {
|
"node_modules/widest-line": {
|
||||||
@@ -4439,12 +4343,15 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
"node_modules/yaml": {
|
||||||
"version": "1.10.2",
|
"version": "2.4.5",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"bin": {
|
||||||
|
"yaml": "bin.mjs"
|
||||||
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 6"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
@@ -4545,49 +4452,6 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"cross-spawn": "^7.0.1"
|
"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": {
|
"@malept/flatpak-bundler": {
|
||||||
@@ -5207,17 +5071,6 @@
|
|||||||
"integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
|
"integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
|
||||||
"dev": true
|
"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": {
|
"debug": {
|
||||||
"version": "4.3.4",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
"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",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||||
"dev": true
|
"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": {
|
"cross-spawn": {
|
||||||
"version": "6.0.5",
|
"version": "7.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
|
||||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"nice-try": "^1.0.4",
|
"path-key": "^3.1.0",
|
||||||
"path-key": "^2.0.1",
|
"shebang-command": "^2.0.0",
|
||||||
"semver": "^5.5.0",
|
"which": "^2.0.1"
|
||||||
"shebang-command": "^1.2.0",
|
|
||||||
"which": "^1.2.9"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"crypto-random-string": {
|
"crypto-random-string": {
|
||||||
@@ -6486,7 +6307,7 @@
|
|||||||
"isexe": {
|
"isexe": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"isstream": {
|
"isstream": {
|
||||||
@@ -6776,12 +6597,6 @@
|
|||||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||||
"dev": true
|
"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": {
|
"node-addon-api": {
|
||||||
"version": "1.7.2",
|
"version": "1.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
|
||||||
@@ -6901,27 +6716,33 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"patch-package": {
|
"patch-package": {
|
||||||
"version": "6.5.1",
|
"version": "7.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/patch-package/-/patch-package-7.0.2.tgz",
|
||||||
"integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==",
|
"integrity": "sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@yarnpkg/lockfile": "^1.1.0",
|
"@yarnpkg/lockfile": "^1.1.0",
|
||||||
"chalk": "^4.1.2",
|
"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",
|
"find-yarn-workspace-root": "^2.0.0",
|
||||||
"fs-extra": "^9.0.0",
|
"fs-extra": "^9.0.0",
|
||||||
"is-ci": "^2.0.0",
|
|
||||||
"klaw-sync": "^6.0.0",
|
"klaw-sync": "^6.0.0",
|
||||||
"minimist": "^1.2.6",
|
"minimist": "^1.2.6",
|
||||||
"open": "^7.4.2",
|
"open": "^7.4.2",
|
||||||
"rimraf": "^2.6.3",
|
"rimraf": "^2.6.3",
|
||||||
"semver": "^5.6.0",
|
"semver": "^7.5.3",
|
||||||
"slash": "^2.0.0",
|
"slash": "^2.0.0",
|
||||||
"tmp": "^0.0.33",
|
"tmp": "^0.0.33",
|
||||||
"yaml": "^1.10.2"
|
"yaml": "^2.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"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": {
|
"fs-extra": {
|
||||||
"version": "9.1.0",
|
"version": "9.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
|
||||||
@@ -6956,6 +6777,12 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^7.1.3"
|
"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
|
"dev": true
|
||||||
},
|
},
|
||||||
"path-key": {
|
"path-key": {
|
||||||
"version": "2.0.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
||||||
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"path-parse": {
|
"path-parse": {
|
||||||
@@ -7050,9 +6877,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"version": "2.7.1",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
|
||||||
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
|
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"pretty-bytes": {
|
"pretty-bytes": {
|
||||||
@@ -7326,18 +7153,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"shebang-command": {
|
"shebang-command": {
|
||||||
"version": "1.2.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"shebang-regex": "^1.0.0"
|
"shebang-regex": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"shebang-regex": {
|
"shebang-regex": {
|
||||||
"version": "1.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
|
||||||
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"signal-exit": {
|
"signal-exit": {
|
||||||
@@ -7833,9 +7660,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"which": {
|
"which": {
|
||||||
"version": "1.3.1",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"isexe": "^2.0.0"
|
"isexe": "^2.0.0"
|
||||||
@@ -7930,9 +7757,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yaml": {
|
"yaml": {
|
||||||
"version": "1.10.2",
|
"version": "2.4.5",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"yargs": {
|
"yargs": {
|
||||||
|
|||||||
10
package.json
10
package.json
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "OpenFusionClient",
|
"name": "OpenFusionClient",
|
||||||
"version": "1.5.1",
|
"version": "1.6.0",
|
||||||
"description": "OpenFusionClient",
|
"description": "OpenFusionClient",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "npx patch-package && npm explore electron-prebuilt -- npm run postinstall",
|
"postinstall": "npx patch-package && npm explore electron-prebuilt -- npm run postinstall",
|
||||||
"start": "electron .",
|
"start": "electron .",
|
||||||
"pack": "electron-builder --win --ia32 --dir",
|
"pack": "electron-builder --win --ia32 --dir",
|
||||||
"dist": "electron-builder --win --ia32",
|
"dist": "electron-builder --win --ia32 --publish=never",
|
||||||
"prettier": "npx prettier --write ."
|
"prettier": "npx prettier --write ."
|
||||||
},
|
},
|
||||||
"author": "OpenFusion Contributors",
|
"author": "OpenFusion Contributors",
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron-builder": "^22.14.13",
|
"electron-builder": "^22.14.13",
|
||||||
"electron-prebuilt": "^0.31.2",
|
"electron-prebuilt": "^0.31.2",
|
||||||
"patch-package": "^6.5.1",
|
"patch-package": "^7.0.2",
|
||||||
"prettier": "^2.7.1"
|
"prettier": "^3.3.3"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"build": {
|
"build": {
|
||||||
"appId": "xyz.openfusion.client",
|
"appId": "xyz.openfusion.client",
|
||||||
"productName": "OpenFusionClient",
|
"productName": "OpenFusionClient",
|
||||||
"copyright": "© 2020-2023 OpenFusion Contributors",
|
"copyright": "© 2020-2024 OpenFusion Contributors",
|
||||||
"electronDownload": {
|
"electronDownload": {
|
||||||
"version": "0.31.2",
|
"version": "0.31.2",
|
||||||
"platform": "win32",
|
"platform": "win32",
|
||||||
|
|||||||
Reference in New Issue
Block a user