mirror of
https://github.com/zumbiepig/MineXLauncher.git
synced 2025-06-26 10:05:10 +00:00
MineXLauncher 1.4
This commit is contained in:
parent
a2d0beadb8
commit
ce45a2a411
@ -1,5 +1,5 @@
|
||||
{
|
||||
"printWidth": 1000,
|
||||
"printWidth": 200,
|
||||
"useTabs": true,
|
||||
"singleQuote": true
|
||||
}
|
||||
|
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -1,5 +1,5 @@
|
||||
{
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"livePreview.serverRoot": "/public/",
|
||||
"livePreview.defaultPreviewPath": "/home/"
|
||||
"editor.formatOnPaste": true,
|
||||
"livePreview.serverRoot": "public",
|
||||
}
|
||||
|
@ -1,18 +1,22 @@
|
||||
# Client versions
|
||||
# MineXLauncher
|
||||
|
||||
## Client versions
|
||||
|
||||
- Update both web and offline at the same time if possible
|
||||
- Offline preference order: Signed, International, en_US
|
||||
- Do not update the index.html
|
||||
|
||||
| Name | Version/commit | Date updated | Link |
|
||||
| ------------------ | ------------------- | ------------ | ---------------------------------------------------------------------------------------- |
|
||||
| 1.9.4 | v0.6.1 | 07/24/2024 | [Gitea](https://git.zelz.net/Eagler-Lambda/hoosiertransfer-mod/releases) |
|
||||
| 1.8.8 | u35 | 07/24/2024 | [Archive](https://archive.eaglercraft.rip/EaglercraftX_1.8/client/?sort=time&order=desc) |
|
||||
| 1.5.2 | sp1.01 | 07/24/2024 | [Archive](https://archive.eaglercraft.rip/Eaglercraft_1/5/client/?sort=time&order=desc) |
|
||||
| b1.7.3 | `e66bcfa` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Beta-1.7.3) |
|
||||
| b1.3 | 23w49a | 07/24/2024 | [Archive](https://archive.eaglercraft.rip/Eaglercraft_b1.3/client/?sort=time&order=desc) |
|
||||
| a1.2.6 | `3b165b2` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Alpha-v1.2.6) |
|
||||
| Indev | `3f9ff32` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Minecraft-Indev-WebGL) |
|
||||
| EaglerPocketMobile | v1.40 | 07/24/2024 | [GitHub](https://github.com/irv77/EaglerPocketMobile) |
|
||||
| EaglerForge | v1.3.2 | 07/24/2024 | [GitHub Releases](https://github.com/eaglerforge/EaglerForge-builds/releases) |
|
||||
| Resent Client | 4.0 Patch 4 | 07/24/2024 | [Discord](https://discord.gg/6UdYQWpkfh) |
|
||||
| Shadow Client | 4.5 snapshot-24w27a | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Shadow-4.0/tree/main/javascript) |
|
||||
| Name | Version/commit | Date updated | Link |
|
||||
| ------------------ | ------------------- | ------------ | ----------------------------------------------------------------------------------------------- |
|
||||
| 1.9.4 | v0.6.1 | 07/24/2024 | [Gitea](https://git.zelz.net/Eagler-Lambda/hoosiertransfer-mod/releases) |
|
||||
| 1.8.8 | u35 | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/EaglercraftX_1.8/client/?sort=time&order=desc) |
|
||||
| 1.5.2 | sp1.01 | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/Eaglercraft_1.5/client/?sort=time&order=desc) |
|
||||
| b1.7.3 | `e66bcfa` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Beta-1.7.3) |
|
||||
| b1.3 | 23w49a | 07/24/2024 | [Eagler Archive](https://archive.eaglercraft.rip/Eaglercraft_b1.3/client/?sort=time&order=desc) |
|
||||
| a1.2.6 | `3b165b2` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Alpha-v1.2.6) |
|
||||
| Indev | `3f9ff32` | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Minecraft-Indev-WebGL) |
|
||||
| EaglerPocketMobile | v1.40 | 07/24/2024 | [GitHub](https://github.com/irv77/EaglerPocketMobile) |
|
||||
| EaglerForge | v1.3.2 | 07/24/2024 | [GitHub Releases](https://github.com/eaglerforge/EaglerForge-builds/releases) |
|
||||
| Resent Client | 4.0 Patch 4 | 07/24/2024 | [Discord](https://discord.gg/6UdYQWpkfh) |
|
||||
| Shadow Client | 4.5 snapshot-24w27a | 07/24/2024 | [GitHub](https://github.com/PeytonPlayz595/Shadow-4.0/tree/main/javascript) |
|
||||
| Astra Client | `61a49cb` | 08/13/2024 | [GitHub](https://github.com/BarneyCompiler/AstraClientEagler/tree/main/javascript) |
|
479
package-lock.json
generated
479
package-lock.json
generated
@ -6,12 +6,7 @@
|
||||
"": {
|
||||
"name": "minexlauncher",
|
||||
"dependencies": {
|
||||
"cookie-parser": "~1.4.4",
|
||||
"debug": "~4.3.6",
|
||||
"express": "~4.19.2",
|
||||
"http-errors": "~1.6.3",
|
||||
"morgan": "~1.9.1",
|
||||
"pug": "^3.0.3"
|
||||
"express": "~4.19.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.9.0",
|
||||
@ -28,46 +23,6 @@
|
||||
"node": "^20.0.0 || ^22.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
|
||||
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.24.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
|
||||
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.24.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz",
|
||||
"integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==",
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.24.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz",
|
||||
"integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.24.8",
|
||||
"@babel/helper-validator-identifier": "^7.24.7",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint-community/eslint-utils": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
|
||||
@ -608,17 +563,6 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "7.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
|
||||
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
@ -697,11 +641,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
|
||||
},
|
||||
"node_modules/assert": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
|
||||
@ -714,11 +653,6 @@
|
||||
"util": "^0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/assert-never": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.3.0.tgz",
|
||||
"integrity": "sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ=="
|
||||
},
|
||||
"node_modules/available-typed-arrays": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
|
||||
@ -734,34 +668,12 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/babel-walk": {
|
||||
"version": "3.0.0-canary-5",
|
||||
"resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz",
|
||||
"integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.9.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/basic-auth": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
|
||||
"integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
|
||||
"dependencies": {
|
||||
"safe-buffer": "5.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.2",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
|
||||
@ -958,14 +870,6 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/character-parser": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
|
||||
"integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==",
|
||||
"dependencies": {
|
||||
"is-regex": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
|
||||
@ -1019,15 +923,6 @@
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/constantinople": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
|
||||
"integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.6.0",
|
||||
"@babel/types": "^7.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/content-disposition": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
|
||||
@ -1066,26 +961,6 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
|
||||
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-parser": {
|
||||
"version": "1.4.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
|
||||
"integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
|
||||
"dependencies": {
|
||||
"cookie": "0.4.1",
|
||||
"cookie-signature": "1.0.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/cookie-signature": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
|
||||
@ -1118,6 +993,7 @@
|
||||
"version": "4.3.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
||||
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
@ -1169,14 +1045,6 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/destroy": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||
@ -1210,11 +1078,6 @@
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/doctypes": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
|
||||
"integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="
|
||||
},
|
||||
"node_modules/eastasianwidth": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
||||
@ -2039,6 +1902,7 @@
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
||||
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has-symbols": "^1.0.3"
|
||||
},
|
||||
@ -2060,20 +1924,6 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/http-errors": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
|
||||
"integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
|
||||
"dependencies": {
|
||||
"depd": "~1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
@ -2133,7 +1983,8 @@
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
|
||||
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/inversify": {
|
||||
"version": "6.0.1",
|
||||
@ -2183,29 +2034,6 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-core-module": {
|
||||
"version": "2.15.0",
|
||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
|
||||
"integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
|
||||
"dependencies": {
|
||||
"hasown": "^2.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-expression": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz",
|
||||
"integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==",
|
||||
"dependencies": {
|
||||
"acorn": "^7.1.1",
|
||||
"object-assign": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
@ -2285,26 +2113,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-promise": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
|
||||
"integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
|
||||
},
|
||||
"node_modules/is-regex": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
||||
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
|
||||
"dependencies": {
|
||||
"call-bind": "^1.0.2",
|
||||
"has-tostringtag": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/is-typed-array": {
|
||||
"version": "1.1.13",
|
||||
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
|
||||
@ -2429,11 +2237,6 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/js-stringify": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
|
||||
"integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
@ -2464,15 +2267,6 @@
|
||||
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/jstransformer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
|
||||
"integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==",
|
||||
"dependencies": {
|
||||
"is-promise": "^2.0.0",
|
||||
"promise": "^7.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/keyv": {
|
||||
"version": "4.5.4",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
|
||||
@ -2651,38 +2445,11 @@
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/morgan": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
|
||||
"integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
|
||||
"dependencies": {
|
||||
"basic-auth": "~2.0.0",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"on-headers": "~1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/morgan/node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/morgan/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"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
|
||||
},
|
||||
"node_modules/multimatch": {
|
||||
"version": "5.0.0",
|
||||
@ -2717,14 +2484,6 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
|
||||
@ -2761,25 +2520,6 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
"integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
|
||||
"dependencies": {
|
||||
"ee-first": "1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/on-headers": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
|
||||
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
@ -2898,11 +2638,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/path-parse": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
|
||||
},
|
||||
"node_modules/path-scurry": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz",
|
||||
@ -2972,14 +2707,6 @@
|
||||
"node": ">= 0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/promise": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
|
||||
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
|
||||
"dependencies": {
|
||||
"asap": "~2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
@ -2992,118 +2719,6 @@
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/pug": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz",
|
||||
"integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==",
|
||||
"dependencies": {
|
||||
"pug-code-gen": "^3.0.3",
|
||||
"pug-filters": "^4.0.0",
|
||||
"pug-lexer": "^5.0.1",
|
||||
"pug-linker": "^4.0.0",
|
||||
"pug-load": "^3.0.0",
|
||||
"pug-parser": "^6.0.0",
|
||||
"pug-runtime": "^3.0.1",
|
||||
"pug-strip-comments": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-attrs": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz",
|
||||
"integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==",
|
||||
"dependencies": {
|
||||
"constantinople": "^4.0.1",
|
||||
"js-stringify": "^1.0.2",
|
||||
"pug-runtime": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-code-gen": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz",
|
||||
"integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==",
|
||||
"dependencies": {
|
||||
"constantinople": "^4.0.1",
|
||||
"doctypes": "^1.1.0",
|
||||
"js-stringify": "^1.0.2",
|
||||
"pug-attrs": "^3.0.0",
|
||||
"pug-error": "^2.1.0",
|
||||
"pug-runtime": "^3.0.1",
|
||||
"void-elements": "^3.1.0",
|
||||
"with": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz",
|
||||
"integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg=="
|
||||
},
|
||||
"node_modules/pug-filters": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz",
|
||||
"integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==",
|
||||
"dependencies": {
|
||||
"constantinople": "^4.0.1",
|
||||
"jstransformer": "1.0.0",
|
||||
"pug-error": "^2.0.0",
|
||||
"pug-walk": "^2.0.0",
|
||||
"resolve": "^1.15.1"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-lexer": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz",
|
||||
"integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==",
|
||||
"dependencies": {
|
||||
"character-parser": "^2.2.0",
|
||||
"is-expression": "^4.0.0",
|
||||
"pug-error": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-linker": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz",
|
||||
"integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==",
|
||||
"dependencies": {
|
||||
"pug-error": "^2.0.0",
|
||||
"pug-walk": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-load": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz",
|
||||
"integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==",
|
||||
"dependencies": {
|
||||
"object-assign": "^4.1.1",
|
||||
"pug-walk": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-parser": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz",
|
||||
"integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==",
|
||||
"dependencies": {
|
||||
"pug-error": "^2.0.0",
|
||||
"token-stream": "1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-runtime": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz",
|
||||
"integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="
|
||||
},
|
||||
"node_modules/pug-strip-comments": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz",
|
||||
"integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==",
|
||||
"dependencies": {
|
||||
"pug-error": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pug-walk": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz",
|
||||
"integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
|
||||
},
|
||||
"node_modules/punycode": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
||||
@ -3216,22 +2831,6 @@
|
||||
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.22.8",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
|
||||
"integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
|
||||
"dependencies": {
|
||||
"is-core-module": "^2.13.0",
|
||||
"path-parse": "^1.0.7",
|
||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"resolve": "bin/resolve"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
@ -3293,11 +2892,6 @@
|
||||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"node_modules/safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
@ -3438,11 +3032,6 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/setprototypeof": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
|
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
|
||||
},
|
||||
"node_modules/shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
@ -3521,14 +3110,6 @@
|
||||
"source-map": "^0.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/statuses": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
|
||||
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/string-template": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
|
||||
@ -3658,31 +3239,12 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-preserve-symlinks-flag": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||
"engines": {
|
||||
"node": ">= 0.4"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/text-table": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
||||
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/to-fast-properties": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
||||
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
@ -3703,11 +3265,6 @@
|
||||
"node": ">=0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/token-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz",
|
||||
"integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
|
||||
},
|
||||
"node_modules/ts-api-utils": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
|
||||
@ -3856,14 +3413,6 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/void-elements": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
|
||||
"integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/which": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||
@ -3898,20 +3447,6 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/with": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz",
|
||||
"integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.9.6",
|
||||
"@babel/types": "^7.9.6",
|
||||
"assert-never": "^1.2.1",
|
||||
"babel-walk": "3.0.0-canary-5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/word-wrap": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
|
||||
|
@ -16,12 +16,7 @@
|
||||
"node": "^20.0.0 || ^22.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"cookie-parser": "~1.4.4",
|
||||
"debug": "~4.3.6",
|
||||
"express": "~4.19.2",
|
||||
"http-errors": "~1.6.3",
|
||||
"morgan": "~1.9.1",
|
||||
"pug": "^3.0.3"
|
||||
"express": "~4.19.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.9.0",
|
||||
|
@ -1,29 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>MineXLauncher</title>
|
||||
<link rel="icon" type="image/x-icon" href="/resources/images/icons/favicon.png" />
|
||||
<link rel="stylesheet" href="/resources/styles/default.css" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta name="robots" content="noindex">
|
||||
<script src="/resources/scripts/main.js" defer></script>
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-972V2NZ2ZK"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-972V2NZ2ZK');
|
||||
</script>
|
||||
<!-- End Google tag -->
|
||||
<title>404 | MineXLauncher</title>
|
||||
<link rel="icon" type="image/webp" href="/resources/images/icons/favicon.webp" />
|
||||
<link rel="stylesheet" href="/resources/styles/themes/default.css" />
|
||||
<link rel="stylesheet" id="theme" />
|
||||
<meta name="theme-color" content="#333" />
|
||||
<script src="/resources/scripts/google-tag.js"></script>
|
||||
<script src="/resources/scripts/main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="launcher">
|
||||
<div class="title-bar">
|
||||
<span>MineXLauncher 1.2</span>
|
||||
<span>MineXLauncher 1.4</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="main-panel">
|
||||
@ -40,7 +31,7 @@
|
||||
<a href="https://discord.gg/YKgfuFvKhA" class="bottom-bar-left">Join the MineXLauncher Discord</a>
|
||||
</div>
|
||||
<div class="bottom-bar-links">
|
||||
<span class="bottom-bar-right">MineXLauncher</span>
|
||||
<span class="bottom-bar-right">© 2024 MineXLauncher. All rights reserved.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
1348225
public/game/offline/clients/Astra_Client.html
Normal file
1348225
public/game/offline/clients/Astra_Client.html
Normal file
File diff suppressed because one or more lines are too long
45160
public/game/offline/clients/Starlike_Client.html
Normal file
45160
public/game/offline/clients/Starlike_Client.html
Normal file
File diff suppressed because one or more lines are too long
@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Minecraft 1.2.5</title>
|
||||
<title>Eaglercraft 1.2.5</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
||||
<script type = text/javascript>
|
||||
window.addEventListener("load", function() {
|
||||
|
BIN
public/game/web/clients/astra/assets.epk
Normal file
BIN
public/game/web/clients/astra/assets.epk
Normal file
Binary file not shown.
1348127
public/game/web/clients/astra/classes.js
Normal file
1348127
public/game/web/clients/astra/classes.js
Normal file
File diff suppressed because it is too large
Load Diff
15
public/game/web/clients/astra/index.html
Normal file
15
public/game/web/clients/astra/index.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Astra Client</title>
|
||||
<link rel="icon" type="image/webp" href="/resources/images/icons/clients/astra.webp" />
|
||||
<link rel="stylesheet" href="/resources/styles/eagler.css" />
|
||||
<script src="/resources/scripts/google-tag.js"></script>
|
||||
<script src="/game/web/clients/astra/classes.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/eaglerpocketmobile.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/main.js"></script>
|
||||
</head>
|
||||
<body id="game_frame"></body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 8.2 KiB |
@ -3,54 +3,15 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="EaglercraftX 1.8 test directory HTML page" />
|
||||
<meta name="keywords" content="eaglercraft, eaglercraftx, minecraft, 1.8, 1.8.8" />
|
||||
<title>EaglerForge</title>
|
||||
<meta property="og:locale" content="en-US" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="EaglercraftX 1.8" />
|
||||
<meta property="og:description" content="test directory HTML page" />
|
||||
<link type="image/png" rel="shortcut icon" href="favicon.png" />
|
||||
<script type="text/javascript" src="ModAPI.js"></script>
|
||||
<script type="text/javascript" src="ModLoader.js"></script>
|
||||
<script type="text/javascript" src="ModGUI.js"></script>
|
||||
<script type="text/javascript" src="classes.js"></script>
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
window.addEventListener("load", () => {
|
||||
if(document.location.href.startsWith("file:")) {
|
||||
alert("HTTP please, do not open this file locally, run a local HTTP server and load it via HTTP");
|
||||
}else {
|
||||
const relayId = Math.floor(Math.random() * 3);
|
||||
window.eaglercraftXOpts = {
|
||||
demoMode: false,
|
||||
container: "game_frame",
|
||||
assetsURI: "assets.epk",
|
||||
localesURI: "lang/",
|
||||
worldsDB: "worlds",
|
||||
logInvalidCerts: true,
|
||||
servers: [
|
||||
{ addr: "ws://localhost:8081/", name: "Local test server" }
|
||||
],
|
||||
relays: [
|
||||
{ addr: "wss://relay.deev.is/", comment: "lax1dude relay #1", primary: relayId == 0 },
|
||||
{ addr: "wss://relay.lax1dude.net/", comment: "lax1dude relay #2", primary: relayId == 1 },
|
||||
{ addr: "wss://relay.shhnowisnottheti.me/", comment: "ayunami relay #1", primary: relayId == 2 }
|
||||
]
|
||||
};
|
||||
|
||||
var q = window.location.search;
|
||||
if(typeof q === "string" && q.startsWith("?")) {
|
||||
q = new URLSearchParams(q);
|
||||
var s = q.get("server");
|
||||
if(s) window.eaglercraftXOpts.joinServer = s;
|
||||
}
|
||||
|
||||
main();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<link rel="icon" type="image/webp" href="/resources/images/icons/clients/eaglerforge.webp" />
|
||||
<script src="/resources/scripts/google-tag.js"></script>
|
||||
<script src="/game/web/clients/eaglerforge/ModAPI.js"></script>
|
||||
<script src="/game/web/clients/eaglerforge/ModLoader.js"></script>
|
||||
<script src="/game/web/clients/eaglerforge/ModGUI.js"></script>
|
||||
<script src="/game/web/clients/eaglerforge/classes.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/eaglermobile-ef.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/main.js"></script>
|
||||
</head>
|
||||
<body style="margin:0px;width:100vw;height:100vh;overflow:hidden;" id="game_frame">
|
||||
</body>
|
||||
</html>
|
||||
<body id="game_frame"></body>
|
||||
</html>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 7.8 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 320 B |
@ -2,486 +2,390 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="description" content="EaglercraftX 1.8 test directory HTML page" />
|
||||
<meta name="keywords" content="eaglercraft, eaglercraftx, minecraft, 1.8, 1.8.8" />
|
||||
<title>EaglercraftX 1.8</title>
|
||||
<meta property="og:locale" content="en-US" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="EaglercraftX 1.8" />
|
||||
<meta property="og:description" content="test directory HTML page" />
|
||||
<script type="text/javascript">
|
||||
function initAPI(version) {
|
||||
var ModAPI = {};
|
||||
ModAPI.events = {};
|
||||
ModAPI.events.types = ["event"];
|
||||
ModAPI.events.listeners = { "event": [] };
|
||||
ModAPI.globals = {};
|
||||
ModAPI.version = version;
|
||||
<title>Shadow Client</title>
|
||||
<link rel="icon" type="image/webp" href="/resources/images/icons/clients/shadow.webp" />
|
||||
<link rel="stylesheet" href="/resources/styles/eagler.css" />
|
||||
<script src="/resources/scripts/google-tag.js"></script>
|
||||
<script src="/game/web/clients/shadow/classes.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/eaglerpocketmobile.js"></script>
|
||||
<script>
|
||||
function initAPI(version) {
|
||||
var ModAPI = {};
|
||||
ModAPI.events = {};
|
||||
ModAPI.events.types = ['event'];
|
||||
ModAPI.events.listeners = { event: [] };
|
||||
ModAPI.globals = {};
|
||||
ModAPI.version = version;
|
||||
|
||||
ModAPI.addEventListener = function AddEventListener(name, callback) {
|
||||
if (!callback) {
|
||||
throw new Error("Invalid callback!");
|
||||
}
|
||||
if (ModAPI.events.types.includes(name)) {
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
ModAPI.events.listeners[name] = [];
|
||||
}
|
||||
ModAPI.events.listeners[name].push(callback);
|
||||
console.log("Added new event listener.");
|
||||
} else {
|
||||
throw new Error("This event does not exist!");
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.removeEventListener = function removeEventListener(name, func, slow) {
|
||||
if (!func) {
|
||||
throw new Error("Invalid callback!");
|
||||
}
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
ModAPI.events.listeners[name] = [];
|
||||
}
|
||||
var targetArr = ModAPI.events.listeners[name];
|
||||
if (!slow) {
|
||||
if (targetArr.indexOf(func) !== -1) {
|
||||
targetArr.splice(targetArr.indexOf(func), 1);
|
||||
console.log("Removed event listener.");
|
||||
}
|
||||
} else {
|
||||
var functionString = func.toString();
|
||||
targetArr.forEach((f, i) => {
|
||||
if (f.toString() === functionString) {
|
||||
targetArr.splice(i, 1);
|
||||
console.log("Removed event listener.");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.events.newEvent = function newEvent(name) {
|
||||
ModAPI.events.types.push(name);
|
||||
};
|
||||
|
||||
ModAPI.events.callEvent = function callEvent(name, data) {
|
||||
if (
|
||||
!ModAPI.events.types.includes(name) ||
|
||||
!Array.isArray(ModAPI.events.listeners[name])
|
||||
) {
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
if (ModAPI.events.types.includes(name)) {
|
||||
ModAPI.events.listeners.event.forEach((func) => {
|
||||
func({ event: name, data: data });
|
||||
});
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
console.error(
|
||||
"The ModAPI has been called with an invalid event name: " + name
|
||||
);
|
||||
console.error("Please report this bug to the repo.");
|
||||
return;
|
||||
}
|
||||
ModAPI.events.listeners[name].forEach((func) => {
|
||||
func(data);
|
||||
});
|
||||
ModAPI.events.listeners.event.forEach((func) => {
|
||||
func({ event: name, data: data });
|
||||
});
|
||||
|
||||
ModAPI.globals._initUpdate();
|
||||
};
|
||||
|
||||
ModAPI.updateComponent = function updateComponent(component) {
|
||||
if (
|
||||
typeof component !== "string" ||
|
||||
ModAPI[component] === null ||
|
||||
ModAPI[component] === undefined
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals || !ModAPI.globals.onGlobalsUpdate) {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals.toUpdate) {
|
||||
ModAPI.globals.toUpdate = [];
|
||||
}
|
||||
if (ModAPI.globals.toUpdate.indexOf(component) === -1) {
|
||||
ModAPI.globals.toUpdate.push(component);
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.require = function require(component) {
|
||||
if (typeof component !== "string") {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals || !ModAPI.globals.onRequire) {
|
||||
return;
|
||||
}
|
||||
ModAPI.globals.onRequire(component);
|
||||
};
|
||||
|
||||
ModAPI.globals._initUpdate = function _initUpdate() {
|
||||
if (!ModAPI.globals.toUpdate) {
|
||||
ModAPI.globals.toUpdate = [];
|
||||
}
|
||||
ModAPI.globals.toUpdate.forEach((id) => {
|
||||
ModAPI.globals.onGlobalsUpdate(id);
|
||||
});
|
||||
ModAPI.globals.toUpdate = [];
|
||||
};
|
||||
|
||||
window.ModAPI = ModAPI;
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
function loadLoader() {
|
||||
window.ModLoader = function ModLoader(ModsArr) {
|
||||
if (!window.eaglerMLoaderMainRun) {
|
||||
var searchParams = new URLSearchParams(location.search);
|
||||
searchParams.getAll("Mod").forEach((ModToAdd) => {
|
||||
console.log(
|
||||
"EaglerML: Adding Mod to loadlist from search params: " + ModToAdd
|
||||
);
|
||||
ModsArr.push(ModToAdd);
|
||||
});
|
||||
if (
|
||||
!!eaglercraftXOpts &&
|
||||
!!eaglercraftXOpts.Mods &&
|
||||
Array.isArray(eaglercraftXOpts.Mods)
|
||||
) {
|
||||
eaglercraftXOpts.Mods.forEach((ModToAdd) => {
|
||||
console.log(
|
||||
"EaglerML: Adding Mod to loadlist from eaglercraftXOpts: " +
|
||||
ModToAdd
|
||||
);
|
||||
ModsArr.push(ModToAdd);
|
||||
});
|
||||
}
|
||||
window.eaglerMLoaderMainRun = true;
|
||||
}
|
||||
if (window.noLoadMods === true) {
|
||||
ModsArr.splice(0, ModsArr.length);
|
||||
}
|
||||
function checkModsLoaded(totalLoaded, identifier) {
|
||||
console.log(
|
||||
"EaglerML: Checking if Mods are finished :: " +
|
||||
totalLoaded +
|
||||
"/" +
|
||||
ModsArr.length
|
||||
);
|
||||
if (totalLoaded >= ModsArr.length) {
|
||||
clearInterval(identifier);
|
||||
window.ModGracePeriod = false;
|
||||
if (
|
||||
window.eaglerMLoaderMainRun &&
|
||||
ModAPI &&
|
||||
ModAPI.events &&
|
||||
ModAPI.events.callEvent
|
||||
) {
|
||||
ModAPI.events.callEvent("load", {});
|
||||
}
|
||||
console.log(
|
||||
"EaglerML: Checking if Mods are finished :: All Mods loaded! Grace period off."
|
||||
);
|
||||
}
|
||||
}
|
||||
function methodB(currentMod) {
|
||||
try {
|
||||
console.log("EaglerML: Loading " + currentMod + " via method B.");
|
||||
var script = document.createElement("script");
|
||||
script.src = currentMod;
|
||||
script.setAttribute("data-Mod", currentMod);
|
||||
script.setAttribute("data-isMod", true);
|
||||
script.onerror = () => {
|
||||
console.log(
|
||||
"EaglerML: Failed to load " + currentMod + " via method B!"
|
||||
);
|
||||
script.remove();
|
||||
totalLoaded++;
|
||||
};
|
||||
script.onload = () => {
|
||||
console.log(
|
||||
"EaglerML: Successfully loaded " + currentMod + " via method B."
|
||||
);
|
||||
totalLoaded++;
|
||||
};
|
||||
document.body.appendChild(script);
|
||||
} catch (error) {
|
||||
console.log(
|
||||
"EaglerML: Oh no! The Mod " + currentMod + " failed to load!"
|
||||
);
|
||||
totalLoaded++;
|
||||
}
|
||||
}
|
||||
window.ModGracePeriod = true;
|
||||
var totalLoaded = 0;
|
||||
var loaderCheckInterval = null;
|
||||
ModsArr.forEach((c) => {
|
||||
let currentMod = c;
|
||||
console.log("EaglerML: Starting " + currentMod);
|
||||
try {
|
||||
var req = new XMLHttpRequest();
|
||||
req.open("GET", currentMod);
|
||||
req.onload = function xhrLoadHandler() {
|
||||
console.log("EaglerML: Loading " + currentMod + " via method A.");
|
||||
var script = document.createElement("script");
|
||||
try {
|
||||
script.src =
|
||||
"data:text/javascript," + encodeURIComponent(req.responseText);
|
||||
} catch (error) {
|
||||
methodB(currentMod);
|
||||
return;
|
||||
}
|
||||
script.setAttribute("data-Mod", currentMod);
|
||||
script.setAttribute("data-isMod", true);
|
||||
script.onerror = () => {
|
||||
console.log(
|
||||
"EaglerML: Failed to load " + currentMod + " via method A!"
|
||||
);
|
||||
script.remove();
|
||||
totalLoaded++;
|
||||
};
|
||||
script.onload = () => {
|
||||
console.log(
|
||||
"EaglerML: Successfully loaded " + currentMod + " via method A."
|
||||
);
|
||||
totalLoaded++;
|
||||
};
|
||||
document.body.appendChild(script);
|
||||
};
|
||||
req.onerror = function xhrErrorHandler() {
|
||||
methodB(currentMod);
|
||||
};
|
||||
req.send();
|
||||
} catch (error) {
|
||||
methodB(currentMod);
|
||||
}
|
||||
});
|
||||
loaderCheckInterval = setInterval(() => {
|
||||
checkModsLoaded(totalLoaded, loaderCheckInterval);
|
||||
}, 500);
|
||||
console.log(
|
||||
"EaglerML: Starting to load " + ModsArr.length + " Mods..."
|
||||
);
|
||||
window.returntotalloadedmods = function returntotalloadedmods(){
|
||||
return totalLoaded
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
function displayGui() {
|
||||
function gui() {
|
||||
if (document.querySelector("#eaglerpl_gui")) {
|
||||
document.querySelector("#eaglerpl_gui").remove();
|
||||
}
|
||||
localStorage.setItem(
|
||||
"ml::Mods",
|
||||
localStorage.getItem("ml::Mods") || "[]"
|
||||
);
|
||||
try {
|
||||
localStorage.setItem(
|
||||
"ml::Mods",
|
||||
JSON.stringify(JSON.parse(localStorage.getItem("ml::Mods")))
|
||||
);
|
||||
} catch (error) {
|
||||
localStorage.setItem("ml::Mods", "[]");
|
||||
}
|
||||
var Mods = JSON.parse(localStorage.getItem("ml::Mods"));
|
||||
var container = document.createElement("div");
|
||||
container.id = "eaglerpl_gui";
|
||||
container.style = `width:100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 10; color: white; font-family: Minecraftia, sans-serif; overflow-y: scroll; overflow-x: hidden; background-image: url(data:image/png;base64,UklGRhoBAABXRUJQVlA4TA0BAAAvn8AnAIWjtpEECdnA2N0DsTROy7xUqfrWw0jbyLkJKTz0+I20jTT/Bo89e1YR/Wfktm0Y+wNKLobT7QP/n/B7Z/naW26QHoTpHB7LFouyKHlzeHxfCStSuj9KdbC8z1IJ5iWiyQed48vtYJ+lUu0t4VwranS1XMIutSiLYlbb8G54uf2p3VPSfRZtSrlsPFjOzZZrd/us3B3uK+HcHJQql+xbLMrS/WqNpm6DeZ/VIPVYaN/KzUbp91nd9xl5pYu50dU2W417nbdTj5l2Ne92uM9qXNpyf6+oXkabHKXaZ1HS4Iaqpim+1KIJ+0M49/LjNbTGP5mrrMZEuc7Uzcb1ViOJ6TuOt4NGJs+zDgA=); background-color: rgb(60,60,60); background-blend-mode: multiply; background-size: 64px;`;
|
||||
var title = document.createElement("h1");
|
||||
title.style = "text-shadow: 0px 0px 4px;";
|
||||
title.innerHTML = "Mod Manager";
|
||||
var closeButton = document.createElement("a");
|
||||
closeButton.style = `margin-left: 2rem; color: red;`;
|
||||
closeButton.href = "javascript:void(0)";
|
||||
closeButton.addEventListener("click", () => {
|
||||
document.querySelector("#eaglerpl_gui").remove();
|
||||
});
|
||||
closeButton.innerHTML = "[X]";
|
||||
title.appendChild(closeButton);
|
||||
container.appendChild(title);
|
||||
|
||||
var warningPoster = document.createElement("p");
|
||||
warningPoster.style = "font-size: 0.8rem; color: orangered;";
|
||||
warningPoster.innerHTML =
|
||||
"Warning: Installing Mods gives them full control over the game. Be cautious when installing them.<br>Mods that have been removed also need a reload to stop running in the background.";
|
||||
container.appendChild(warningPoster);
|
||||
|
||||
var tipPoster = document.createElement("p");
|
||||
tipPoster.style = "font-size: 0.8rem; color: yellow;";
|
||||
tipPoster.innerHTML =
|
||||
"Tip: if the mods say that they failed loading, try refreshing the gui";
|
||||
container.appendChild(tipPoster);
|
||||
|
||||
var table = document.createElement("table");
|
||||
table.style = "table-layout: fixed; width: 100%";
|
||||
var headerRow = document.createElement("tr");
|
||||
headerRow.style = "background: rgb(50,50,50);";
|
||||
var urlBox = document.createElement("th");
|
||||
urlBox.style = "text-align: center;";
|
||||
urlBox.innerHTML = "URL";
|
||||
headerRow.appendChild(urlBox);
|
||||
var statusBox = document.createElement("th");
|
||||
statusBox.style = "text-align: center; width: 15%;";
|
||||
statusBox.innerHTML = "Status";
|
||||
headerRow.appendChild(statusBox);
|
||||
table.appendChild(headerRow);
|
||||
|
||||
Mods.forEach((url) => {
|
||||
var row = document.createElement("tr");
|
||||
row.style = `box-shadow: 0px 2px 0px grey;`;
|
||||
var urlBox = document.createElement("td");
|
||||
urlBox.style = "user-select: text;";
|
||||
var textWrapper = document.createElement("div");
|
||||
textWrapper.style = `max-width: 100%; overflow-wrap: anywhere; max-height: 3rem; overflow-y: scroll;`;
|
||||
textWrapper.innerText = url;
|
||||
urlBox.append(textWrapper);
|
||||
row.appendChild(urlBox);
|
||||
var statusBox = document.createElement("td");
|
||||
statusBox.innerHTML = ((curl) => {
|
||||
var targs = document.querySelectorAll("script[data-Mod]");
|
||||
for (let i = 0; i < targs.length; i++) {
|
||||
const elem = targs[i];
|
||||
if (elem.getAttribute("data-Mod") === curl) {
|
||||
return "LOADED";
|
||||
}
|
||||
}
|
||||
return "FAILED";
|
||||
})(url);
|
||||
switch (statusBox.innerHTML) {
|
||||
case "LOADED":
|
||||
statusBox.style = "background-color: green; text-align: center;";
|
||||
break;
|
||||
case "FAILED":
|
||||
statusBox.style = "background-color: dimgrey; text-align: center;";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
var binBtn = document.createElement("button");
|
||||
binBtn.style =
|
||||
"background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; margin-left: 1rem; font-size: 1rem;";
|
||||
binBtn.innerHTML = "[X]";
|
||||
binBtn.addEventListener("click", () => {
|
||||
if (!window.confirm("Delete Mod?") || Mods.indexOf(url) === -1) {
|
||||
return;
|
||||
}
|
||||
Mods.splice(Mods.indexOf(url), 1);
|
||||
localStorage.setItem("ml::Mods", JSON.stringify(Mods));
|
||||
gui();
|
||||
});
|
||||
statusBox.appendChild(binBtn);
|
||||
row.appendChild(statusBox);
|
||||
table.appendChild(row);
|
||||
});
|
||||
|
||||
var addBtn = document.createElement("button");
|
||||
addBtn.style =
|
||||
"background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; margin-right: 1rem; font-size: 1rem;";
|
||||
addBtn.innerHTML = "Add new";
|
||||
addBtn.addEventListener("click", () => {
|
||||
var newMod = window.prompt("URL of Mod: ", "http://example.com/example.js");
|
||||
if (!newMod) {
|
||||
return; //User pressed cancel
|
||||
}
|
||||
Mods.push(
|
||||
newMod
|
||||
);
|
||||
localStorage.setItem("ml::Mods", JSON.stringify(Mods));
|
||||
if(window.ModLoader){
|
||||
ModLoader([newMod]);
|
||||
}
|
||||
gui();
|
||||
});
|
||||
|
||||
var uploadBtn = document.createElement("button");
|
||||
uploadBtn.style =
|
||||
"background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; font-size: 1rem;";
|
||||
uploadBtn.innerHTML = "Upload...";
|
||||
uploadBtn.addEventListener("click", function uploadBtnListener() {
|
||||
var filePicker = document.createElement("input");
|
||||
filePicker.type = "file";
|
||||
filePicker.accept = ".js";
|
||||
filePicker.addEventListener("input", function onInput() {
|
||||
if (filePicker.files[0]) {
|
||||
var reader = new FileReader();
|
||||
reader.addEventListener("load", function onModRead() {
|
||||
var newMod = reader.result.replace(";base64", `;fs=${encodeURIComponent(filePicker.files[0].name) || "unknown"};base64`);
|
||||
Mods.push(newMod);
|
||||
localStorage.setItem("ml::Mods", JSON.stringify(Mods));
|
||||
if(window.ModLoader){
|
||||
ModLoader([newMod]);
|
||||
}
|
||||
gui();
|
||||
});
|
||||
reader.readAsDataURL(filePicker.files[0]);
|
||||
}
|
||||
});
|
||||
filePicker.click();
|
||||
});
|
||||
|
||||
container.appendChild(table);
|
||||
container.appendChild(addBtn);
|
||||
container.appendChild(uploadBtn);
|
||||
|
||||
var notice = document.createElement("a");
|
||||
notice.innerHTML = "Refresh GUI";
|
||||
notice.href = "javascript:void(0)";
|
||||
notice.addEventListener("click", function reloadListener() {
|
||||
setTimeout(gui, 500);
|
||||
this.remove();
|
||||
});
|
||||
notice.style =
|
||||
"color: yellow; display: block; margin-top: 2rem; width: 0; white-space: nowrap;";
|
||||
container.appendChild(notice);
|
||||
ModAPI.events.callEvent("gui", {});
|
||||
document.body.appendChild(container);
|
||||
}
|
||||
gui();
|
||||
}
|
||||
</script>
|
||||
<link type="image/png" rel="shortcut icon" href="favicon.png" />
|
||||
<script type="text/javascript" src="classes.js"></script>
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
window.addEventListener("load", () => {
|
||||
if(document.location.href.startsWith("file:")) {
|
||||
alert("HTTP please, do not open this file locally, run a local HTTP server and load it via HTTP");
|
||||
}else {
|
||||
const relayId = Math.floor(Math.random() * 3);
|
||||
window.eaglercraftXOpts = {
|
||||
demoMode: false,
|
||||
container: "game_frame",
|
||||
assetsURI: "assets.epk",
|
||||
localesURI: "lang/",
|
||||
worldsDB: "worlds",
|
||||
logInvalidCerts: true,
|
||||
servers: [
|
||||
{ addr: "ws://localhost:8081/", name: "Local test server" }
|
||||
],
|
||||
relays: [
|
||||
{ addr: "wss://relay.deev.is/", comment: "lax1dude relay #1", primary: relayId == 0 },
|
||||
{ addr: "wss://relay.lax1dude.net/", comment: "lax1dude relay #2", primary: relayId == 1 },
|
||||
{ addr: "wss://relay.shhnowisnottheti.me/", comment: "ayunami relay #1", primary: relayId == 2 }
|
||||
]
|
||||
};
|
||||
|
||||
var q = window.location.search;
|
||||
if(typeof q === "string" && q.startsWith("?")) {
|
||||
q = new URLSearchParams(q);
|
||||
var s = q.get("server");
|
||||
if(s) window.eaglercraftXOpts.joinServer = s;
|
||||
ModAPI.addEventListener = function AddEventListener(name, callback) {
|
||||
if (!callback) {
|
||||
throw new Error('Invalid callback!');
|
||||
}
|
||||
|
||||
main();
|
||||
}
|
||||
});
|
||||
if (ModAPI.events.types.includes(name)) {
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
ModAPI.events.listeners[name] = [];
|
||||
}
|
||||
ModAPI.events.listeners[name].push(callback);
|
||||
console.log('Added new event listener.');
|
||||
} else {
|
||||
throw new Error('This event does not exist!');
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.removeEventListener = function removeEventListener(name, func, slow) {
|
||||
if (!func) {
|
||||
throw new Error('Invalid callback!');
|
||||
}
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
ModAPI.events.listeners[name] = [];
|
||||
}
|
||||
var targetArr = ModAPI.events.listeners[name];
|
||||
if (!slow) {
|
||||
if (targetArr.indexOf(func) !== -1) {
|
||||
targetArr.splice(targetArr.indexOf(func), 1);
|
||||
console.log('Removed event listener.');
|
||||
}
|
||||
} else {
|
||||
var functionString = func.toString();
|
||||
targetArr.forEach((f, i) => {
|
||||
if (f.toString() === functionString) {
|
||||
targetArr.splice(i, 1);
|
||||
console.log('Removed event listener.');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.events.newEvent = function newEvent(name) {
|
||||
ModAPI.events.types.push(name);
|
||||
};
|
||||
|
||||
ModAPI.events.callEvent = function callEvent(name, data) {
|
||||
if (!ModAPI.events.types.includes(name) || !Array.isArray(ModAPI.events.listeners[name])) {
|
||||
if (!Array.isArray(ModAPI.events.listeners[name])) {
|
||||
if (ModAPI.events.types.includes(name)) {
|
||||
ModAPI.events.listeners.event.forEach((func) => {
|
||||
func({ event: name, data: data });
|
||||
});
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
console.error('The ModAPI has been called with an invalid event name: ' + name);
|
||||
console.error('Please report this bug to the repo.');
|
||||
return;
|
||||
}
|
||||
ModAPI.events.listeners[name].forEach((func) => {
|
||||
func(data);
|
||||
});
|
||||
ModAPI.events.listeners.event.forEach((func) => {
|
||||
func({ event: name, data: data });
|
||||
});
|
||||
|
||||
ModAPI.globals._initUpdate();
|
||||
};
|
||||
|
||||
ModAPI.updateComponent = function updateComponent(component) {
|
||||
if (typeof component !== 'string' || ModAPI[component] === null || ModAPI[component] === undefined) {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals || !ModAPI.globals.onGlobalsUpdate) {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals.toUpdate) {
|
||||
ModAPI.globals.toUpdate = [];
|
||||
}
|
||||
if (ModAPI.globals.toUpdate.indexOf(component) === -1) {
|
||||
ModAPI.globals.toUpdate.push(component);
|
||||
}
|
||||
};
|
||||
|
||||
ModAPI.require = function require(component) {
|
||||
if (typeof component !== 'string') {
|
||||
return;
|
||||
}
|
||||
if (!ModAPI.globals || !ModAPI.globals.onRequire) {
|
||||
return;
|
||||
}
|
||||
ModAPI.globals.onRequire(component);
|
||||
};
|
||||
|
||||
ModAPI.globals._initUpdate = function _initUpdate() {
|
||||
if (!ModAPI.globals.toUpdate) {
|
||||
ModAPI.globals.toUpdate = [];
|
||||
}
|
||||
ModAPI.globals.toUpdate.forEach((id) => {
|
||||
ModAPI.globals.onGlobalsUpdate(id);
|
||||
});
|
||||
ModAPI.globals.toUpdate = [];
|
||||
};
|
||||
|
||||
window.ModAPI = ModAPI;
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function loadLoader() {
|
||||
window.ModLoader = function ModLoader(ModsArr) {
|
||||
if (!window.eaglerMLoaderMainRun) {
|
||||
var searchParams = new URLSearchParams(location.search);
|
||||
searchParams.getAll('Mod').forEach((ModToAdd) => {
|
||||
console.log('EaglerML: Adding Mod to loadlist from search params: ' + ModToAdd);
|
||||
ModsArr.push(ModToAdd);
|
||||
});
|
||||
if (!!eaglercraftXOpts && !!eaglercraftXOpts.Mods && Array.isArray(eaglercraftXOpts.Mods)) {
|
||||
eaglercraftXOpts.Mods.forEach((ModToAdd) => {
|
||||
console.log('EaglerML: Adding Mod to loadlist from eaglercraftXOpts: ' + ModToAdd);
|
||||
ModsArr.push(ModToAdd);
|
||||
});
|
||||
}
|
||||
window.eaglerMLoaderMainRun = true;
|
||||
}
|
||||
if (window.noLoadMods === true) {
|
||||
ModsArr.splice(0, ModsArr.length);
|
||||
}
|
||||
function checkModsLoaded(totalLoaded, identifier) {
|
||||
console.log('EaglerML: Checking if Mods are finished :: ' + totalLoaded + '/' + ModsArr.length);
|
||||
if (totalLoaded >= ModsArr.length) {
|
||||
clearInterval(identifier);
|
||||
window.ModGracePeriod = false;
|
||||
if (window.eaglerMLoaderMainRun && ModAPI && ModAPI.events && ModAPI.events.callEvent) {
|
||||
ModAPI.events.callEvent('load', {});
|
||||
}
|
||||
console.log('EaglerML: Checking if Mods are finished :: All Mods loaded! Grace period off.');
|
||||
}
|
||||
}
|
||||
function methodB(currentMod) {
|
||||
try {
|
||||
console.log('EaglerML: Loading ' + currentMod + ' via method B.');
|
||||
var script = document.createElement('script');
|
||||
script.src = currentMod;
|
||||
script.setAttribute('data-Mod', currentMod);
|
||||
script.setAttribute('data-isMod', true);
|
||||
script.onerror = () => {
|
||||
console.log('EaglerML: Failed to load ' + currentMod + ' via method B!');
|
||||
script.remove();
|
||||
totalLoaded++;
|
||||
};
|
||||
script.onload = () => {
|
||||
console.log('EaglerML: Successfully loaded ' + currentMod + ' via method B.');
|
||||
totalLoaded++;
|
||||
};
|
||||
document.body.appendChild(script);
|
||||
} catch (error) {
|
||||
console.log('EaglerML: Oh no! The Mod ' + currentMod + ' failed to load!');
|
||||
totalLoaded++;
|
||||
}
|
||||
}
|
||||
window.ModGracePeriod = true;
|
||||
var totalLoaded = 0;
|
||||
var loaderCheckInterval = null;
|
||||
ModsArr.forEach((c) => {
|
||||
let currentMod = c;
|
||||
console.log('EaglerML: Starting ' + currentMod);
|
||||
try {
|
||||
var req = new XMLHttpRequest();
|
||||
req.open('GET', currentMod);
|
||||
req.onload = function xhrLoadHandler() {
|
||||
console.log('EaglerML: Loading ' + currentMod + ' via method A.');
|
||||
var script = document.createElement('script');
|
||||
try {
|
||||
script.src = 'data:text/javascript,' + encodeURIComponent(req.responseText);
|
||||
} catch (error) {
|
||||
methodB(currentMod);
|
||||
return;
|
||||
}
|
||||
script.setAttribute('data-Mod', currentMod);
|
||||
script.setAttribute('data-isMod', true);
|
||||
script.onerror = () => {
|
||||
console.log('EaglerML: Failed to load ' + currentMod + ' via method A!');
|
||||
script.remove();
|
||||
totalLoaded++;
|
||||
};
|
||||
script.onload = () => {
|
||||
console.log('EaglerML: Successfully loaded ' + currentMod + ' via method A.');
|
||||
totalLoaded++;
|
||||
};
|
||||
document.body.appendChild(script);
|
||||
};
|
||||
req.onerror = function xhrErrorHandler() {
|
||||
methodB(currentMod);
|
||||
};
|
||||
req.send();
|
||||
} catch (error) {
|
||||
methodB(currentMod);
|
||||
}
|
||||
});
|
||||
loaderCheckInterval = setInterval(() => {
|
||||
checkModsLoaded(totalLoaded, loaderCheckInterval);
|
||||
}, 500);
|
||||
console.log('EaglerML: Starting to load ' + ModsArr.length + ' Mods...');
|
||||
window.returntotalloadedmods = function returntotalloadedmods() {
|
||||
return totalLoaded;
|
||||
};
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function displayGui() {
|
||||
function gui() {
|
||||
if (document.querySelector('#eaglerpl_gui')) {
|
||||
document.querySelector('#eaglerpl_gui').remove();
|
||||
}
|
||||
localStorage.setItem('ml::Mods', localStorage.getItem('ml::Mods') || '[]');
|
||||
try {
|
||||
localStorage.setItem('ml::Mods', JSON.stringify(JSON.parse(localStorage.getItem('ml::Mods'))));
|
||||
} catch (error) {
|
||||
localStorage.setItem('ml::Mods', '[]');
|
||||
}
|
||||
var Mods = JSON.parse(localStorage.getItem('ml::Mods'));
|
||||
var container = document.createElement('div');
|
||||
container.id = 'eaglerpl_gui';
|
||||
container.style = `width:100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 10; color: white; font-family: Minecraftia, sans-serif; overflow-y: scroll; overflow-x: hidden; background-image: url(data:image/png;base64,UklGRhoBAABXRUJQVlA4TA0BAAAvn8AnAIWjtpEECdnA2N0DsTROy7xUqfrWw0jbyLkJKTz0+I20jTT/Bo89e1YR/Wfktm0Y+wNKLobT7QP/n/B7Z/naW26QHoTpHB7LFouyKHlzeHxfCStSuj9KdbC8z1IJ5iWiyQed48vtYJ+lUu0t4VwranS1XMIutSiLYlbb8G54uf2p3VPSfRZtSrlsPFjOzZZrd/us3B3uK+HcHJQql+xbLMrS/WqNpm6DeZ/VIPVYaN/KzUbp91nd9xl5pYu50dU2W417nbdTj5l2Ne92uM9qXNpyf6+oXkabHKXaZ1HS4Iaqpim+1KIJ+0M49/LjNbTGP5mrrMZEuc7Uzcb1ViOJ6TuOt4NGJs+zDgA=); background-color: rgb(60,60,60); background-blend-mode: multiply; background-size: 64px;`;
|
||||
var title = document.createElement('h1');
|
||||
title.style = 'text-shadow: 0px 0px 4px;';
|
||||
title.innerHTML = 'Mod Manager';
|
||||
var closeButton = document.createElement('a');
|
||||
closeButton.style = `margin-left: 2rem; color: red;`;
|
||||
closeButton.href = 'javascript:void(0)';
|
||||
closeButton.addEventListener('click', () => {
|
||||
document.querySelector('#eaglerpl_gui').remove();
|
||||
});
|
||||
closeButton.innerHTML = '[X]';
|
||||
title.appendChild(closeButton);
|
||||
container.appendChild(title);
|
||||
|
||||
var warningPoster = document.createElement('p');
|
||||
warningPoster.style = 'font-size: 0.8rem; color: orangered;';
|
||||
warningPoster.innerHTML = 'Warning: Installing Mods gives them full control over the game. Be cautious when installing them.<br>Mods that have been removed also need a reload to stop running in the background.';
|
||||
container.appendChild(warningPoster);
|
||||
|
||||
var tipPoster = document.createElement('p');
|
||||
tipPoster.style = 'font-size: 0.8rem; color: yellow;';
|
||||
tipPoster.innerHTML = 'Tip: if the mods say that they failed loading, try refreshing the gui';
|
||||
container.appendChild(tipPoster);
|
||||
|
||||
var table = document.createElement('table');
|
||||
table.style = 'table-layout: fixed; width: 100%';
|
||||
var headerRow = document.createElement('tr');
|
||||
headerRow.style = 'background: rgb(50,50,50);';
|
||||
var urlBox = document.createElement('th');
|
||||
urlBox.style = 'text-align: center;';
|
||||
urlBox.innerHTML = 'URL';
|
||||
headerRow.appendChild(urlBox);
|
||||
var statusBox = document.createElement('th');
|
||||
statusBox.style = 'text-align: center; width: 15%;';
|
||||
statusBox.innerHTML = 'Status';
|
||||
headerRow.appendChild(statusBox);
|
||||
table.appendChild(headerRow);
|
||||
|
||||
Mods.forEach((url) => {
|
||||
var row = document.createElement('tr');
|
||||
row.style = `box-shadow: 0px 2px 0px grey;`;
|
||||
var urlBox = document.createElement('td');
|
||||
urlBox.style = 'user-select: text;';
|
||||
var textWrapper = document.createElement('div');
|
||||
textWrapper.style = `max-width: 100%; overflow-wrap: anywhere; max-height: 3rem; overflow-y: scroll;`;
|
||||
textWrapper.innerText = url;
|
||||
urlBox.append(textWrapper);
|
||||
row.appendChild(urlBox);
|
||||
var statusBox = document.createElement('td');
|
||||
statusBox.innerHTML = ((curl) => {
|
||||
var targs = document.querySelectorAll('script[data-Mod]');
|
||||
for (let i = 0; i < targs.length; i++) {
|
||||
const elem = targs[i];
|
||||
if (elem.getAttribute('data-Mod') === curl) {
|
||||
return 'LOADED';
|
||||
}
|
||||
}
|
||||
return 'FAILED';
|
||||
})(url);
|
||||
switch (statusBox.innerHTML) {
|
||||
case 'LOADED':
|
||||
statusBox.style = 'background-color: green; text-align: center;';
|
||||
break;
|
||||
case 'FAILED':
|
||||
statusBox.style = 'background-color: dimgrey; text-align: center;';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
var binBtn = document.createElement('button');
|
||||
binBtn.style = "background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; margin-left: 1rem; font-size: 1rem;";
|
||||
binBtn.innerHTML = '[X]';
|
||||
binBtn.addEventListener('click', () => {
|
||||
if (!window.confirm('Delete Mod?') || Mods.indexOf(url) === -1) {
|
||||
return;
|
||||
}
|
||||
Mods.splice(Mods.indexOf(url), 1);
|
||||
localStorage.setItem('ml::Mods', JSON.stringify(Mods));
|
||||
gui();
|
||||
});
|
||||
statusBox.appendChild(binBtn);
|
||||
row.appendChild(statusBox);
|
||||
table.appendChild(row);
|
||||
});
|
||||
|
||||
var addBtn = document.createElement('button');
|
||||
addBtn.style = "background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; margin-right: 1rem; font-size: 1rem;";
|
||||
addBtn.innerHTML = 'Add new';
|
||||
addBtn.addEventListener('click', () => {
|
||||
var newMod = window.prompt('URL of Mod: ', 'http://example.com/example.js');
|
||||
if (!newMod) {
|
||||
return; //User pressed cancel
|
||||
}
|
||||
Mods.push(newMod);
|
||||
localStorage.setItem('ml::Mods', JSON.stringify(Mods));
|
||||
if (window.ModLoader) {
|
||||
ModLoader([newMod]);
|
||||
}
|
||||
gui();
|
||||
});
|
||||
|
||||
var uploadBtn = document.createElement('button');
|
||||
uploadBtn.style = "background: transparent; text-align: center; color: yellow; cursor: pointer; font-family: 'Minecraftia', sans-serif; text-decoration: underline; border: 0; font-size: 1rem;";
|
||||
uploadBtn.innerHTML = 'Upload...';
|
||||
uploadBtn.addEventListener('click', function uploadBtnListener() {
|
||||
var filePicker = document.createElement('input');
|
||||
filePicker.type = 'file';
|
||||
filePicker.accept = '.js';
|
||||
filePicker.addEventListener('input', function onInput() {
|
||||
if (filePicker.files[0]) {
|
||||
var reader = new FileReader();
|
||||
reader.addEventListener('load', function onModRead() {
|
||||
var newMod = reader.result.replace(';base64', `;fs=${encodeURIComponent(filePicker.files[0].name) || 'unknown'};base64`);
|
||||
Mods.push(newMod);
|
||||
localStorage.setItem('ml::Mods', JSON.stringify(Mods));
|
||||
if (window.ModLoader) {
|
||||
ModLoader([newMod]);
|
||||
}
|
||||
gui();
|
||||
});
|
||||
reader.readAsDataURL(filePicker.files[0]);
|
||||
}
|
||||
});
|
||||
filePicker.click();
|
||||
});
|
||||
|
||||
container.appendChild(table);
|
||||
container.appendChild(addBtn);
|
||||
container.appendChild(uploadBtn);
|
||||
|
||||
var notice = document.createElement('a');
|
||||
notice.innerHTML = 'Refresh GUI';
|
||||
notice.href = 'javascript:void(0)';
|
||||
notice.addEventListener('click', function reloadListener() {
|
||||
setTimeout(gui, 500);
|
||||
this.remove();
|
||||
});
|
||||
notice.style = 'color: yellow; display: block; margin-top: 2rem; width: 0; white-space: nowrap;';
|
||||
container.appendChild(notice);
|
||||
ModAPI.events.callEvent('gui', {});
|
||||
document.body.appendChild(container);
|
||||
}
|
||||
gui();
|
||||
}
|
||||
</script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/main.js"></script>
|
||||
</head>
|
||||
<body style="margin:0px;width:100vw;height:100vh;overflow:hidden;" id="game_frame">
|
||||
</body>
|
||||
</html>
|
||||
<body id="game_frame"></body>
|
||||
</html>
|
||||
|
BIN
public/game/web/clients/starlike/assets.epk
Normal file
BIN
public/game/web/clients/starlike/assets.epk
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
14
public/game/web/clients/starlike/index.html
Normal file
14
public/game/web/clients/starlike/index.html
Normal file
@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Starlike Client</title>
|
||||
<link rel="icon" type="image/webp" href="/resources/images/icons/clients/starlike.webp" />
|
||||
<link rel="stylesheet" href="/resources/styles/eagler.css" />
|
||||
<script src="/resources/scripts/google-tag.js"></script>
|
||||
<script src="/game/web/clients/starlike/classes.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.8.8/eaglerpocketmobile.js"></script>
|
||||
<script src="/resources/scripts/eagler-launch/1.9.4/main.js"></script>
|
||||
</head>
|
||||
<body id="game_frame"></body>
|
||||
</html>
|
1683
public/game/web/clients/starlike/lang/af_ZA.lang
Normal file
1683
public/game/web/clients/starlike/lang/af_ZA.lang
Normal file
File diff suppressed because it is too large
Load Diff
1696
public/game/web/clients/starlike/lang/ar_SA.lang
Normal file
1696
public/game/web/clients/starlike/lang/ar_SA.lang
Normal file
File diff suppressed because it is too large
Load Diff
1812
public/game/web/clients/starlike/lang/ast_ES.lang
Normal file
1812
public/game/web/clients/starlike/lang/ast_ES.lang
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user