This commit is contained in:
Russell2259
2023-12-03 21:48:05 -07:00
parent b3a2bcf764
commit e4c0cb6920
33 changed files with 1326 additions and 474 deletions
+6
View File
@@ -0,0 +1,6 @@
export default {
port: 8080,
mode: 'dev',
minify: false,
assetScrambling: false
}
+672 -13
View File
@@ -14,14 +14,40 @@
"easyviolet": "github:Russell2259/Easyviolet",
"express": "*",
"html-minifier": "^4.0.0",
"javascript-obfuscator": "^4.1.0",
"jsdom": "^23.0.1",
"mime": "*",
"uglify-js": "^3.17.4"
"uuid": "^9.0.1"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
},
"node_modules/@javascript-obfuscator/escodegen": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@javascript-obfuscator/escodegen/-/escodegen-2.3.0.tgz",
"integrity": "sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==",
"dependencies": {
"@javascript-obfuscator/estraverse": "^5.3.0",
"esprima": "^4.0.1",
"esutils": "^2.0.2",
"optionator": "^0.8.1"
},
"engines": {
"node": ">=6.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/@javascript-obfuscator/estraverse": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/@javascript-obfuscator/estraverse/-/estraverse-5.4.0.tgz",
"integrity": "sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/@titaniumnetwork-dev/ultraviolet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@titaniumnetwork-dev/ultraviolet/-/ultraviolet-2.0.0.tgz",
@@ -69,6 +95,16 @@
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz",
"integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg=="
},
"node_modules/@types/minimatch": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="
},
"node_modules/@types/validator": {
"version": "13.11.7",
"resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.7.tgz",
"integrity": "sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q=="
},
"node_modules/abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -87,6 +123,17 @@
"node": ">= 0.6"
}
},
"node_modules/acorn": {
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
"bin": {
"acorn": "bin/acorn"
},
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/agent-base": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
@@ -119,6 +166,20 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -132,11 +193,46 @@
"node": ">= 8"
}
},
"node_modules/array-differ": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
"integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
"engines": {
"node": ">=8"
}
},
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
},
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"engines": {
"node": ">=8"
}
},
"node_modules/arrify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
"engines": {
"node": ">=8"
}
},
"node_modules/assert": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
"integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
"dependencies": {
"es6-object-assign": "^1.1.0",
"is-nan": "^1.2.1",
"object-is": "^1.0.1",
"util": "^0.12.0"
}
},
"node_modules/async-exit-hook": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
@@ -150,11 +246,21 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"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
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/binary-extensions": {
"version": "2.2.0",
@@ -192,7 +298,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -245,6 +350,61 @@
"upper-case": "^1.1.1"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chalk/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/chalk/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/chance": {
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/chance/-/chance-1.1.9.tgz",
"integrity": "sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ=="
},
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
"integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
"engines": {
"node": ">=10"
}
},
"node_modules/charenc": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
"engines": {
"node": "*"
}
},
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -272,17 +432,32 @@
"fsevents": "~2.3.2"
}
},
"node_modules/clean-css": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
"integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
"node_modules/class-validator": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz",
"integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==",
"dependencies": {
"source-map": "~0.6.0"
"@types/validator": "^13.7.10",
"libphonenumber-js": "^1.10.14",
"validator": "^13.7.0"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">= 4.0"
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -305,8 +480,7 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/content-disposition": {
"version": "0.5.4",
@@ -352,6 +526,14 @@
"node": ">= 0.10"
}
},
"node_modules/crypt": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
"engines": {
"node": "*"
}
},
"node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
@@ -400,6 +582,11 @@
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"node_modules/define-data-property": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
@@ -413,6 +600,22 @@
"node": ">= 0.4"
}
},
"node_modules/define-properties": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
"object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -482,11 +685,36 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/es6-object-assign": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
"integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw=="
},
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
},
"node_modules/eslint-scope": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
"integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/esotope-hammerhead": {
"version": "0.6.7",
"resolved": "https://registry.npmjs.org/esotope-hammerhead/-/esotope-hammerhead-0.6.7.tgz",
@@ -495,6 +723,45 @@
"@types/estree": "0.0.46"
}
},
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
},
"engines": {
"node": ">=4"
}
},
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dependencies": {
"estraverse": "^5.2.0"
},
"engines": {
"node": ">=4.0"
}
},
"node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -552,6 +819,16 @@
"node": ">= 0.10.0"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -581,6 +858,14 @@
"node": ">= 0.8"
}
},
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
"dependencies": {
"is-callable": "^1.1.3"
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
@@ -711,6 +996,20 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
"dependencies": {
"has-symbols": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
@@ -766,6 +1065,17 @@
"node": ">=6"
}
},
"node_modules/html-minifier/node_modules/clean-css": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
"integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
"dependencies": {
"source-map": "~0.6.0"
},
"engines": {
"node": ">= 4.0"
}
},
"node_modules/html-minifier/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -879,6 +1189,11 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/inversify": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz",
"integrity": "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ=="
},
"node_modules/ipaddr.js": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
@@ -887,6 +1202,21 @@
"node": ">= 10"
}
},
"node_modules/is-arguments": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"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-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -899,6 +1229,22 @@
"node": ">=8"
}
},
"node_modules/is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -908,6 +1254,20 @@
"node": ">=0.10.0"
}
},
"node_modules/is-generator-function": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
"integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -920,6 +1280,21 @@
"node": ">=0.10.0"
}
},
"node_modules/is-nan": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz",
"integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"dependencies": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
@@ -934,6 +1309,77 @@
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
"integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="
},
"node_modules/is-typed-array": {
"version": "1.1.12",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
"integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
"dependencies": {
"which-typed-array": "^1.1.11"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/javascript-obfuscator": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-4.1.0.tgz",
"integrity": "sha512-ckC0VFKQ0/sFtLH9apW/ZLfsP8LuZqZhVEM4VTJ5KLzyLaodW6C1lTU8808eboDmddKyvd2uyRx5bzc0Me0GYg==",
"hasInstallScript": true,
"dependencies": {
"@javascript-obfuscator/escodegen": "2.3.0",
"@javascript-obfuscator/estraverse": "5.4.0",
"acorn": "8.8.2",
"assert": "2.0.0",
"chalk": "4.1.2",
"chance": "1.1.9",
"class-validator": "0.14.0",
"commander": "10.0.0",
"eslint-scope": "7.1.1",
"eslint-visitor-keys": "3.3.0",
"fast-deep-equal": "3.1.3",
"inversify": "6.0.1",
"js-string-escape": "1.0.1",
"md5": "2.3.0",
"mkdirp": "2.1.3",
"multimatch": "5.0.0",
"opencollective-postinstall": "2.0.3",
"process": "0.11.10",
"reflect-metadata": "0.1.13",
"source-map-support": "0.5.21",
"string-template": "1.0.0",
"stringz": "2.1.0",
"tslib": "2.5.0"
},
"bin": {
"javascript-obfuscator": "bin/javascript-obfuscator"
},
"engines": {
"node": "^12.22.0 || ^14.0.0 || ^16.0.0 || ^17.0.0 || >=18.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/javascript-obfuscator"
}
},
"node_modules/javascript-obfuscator/node_modules/commander": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz",
"integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==",
"engines": {
"node": ">=14"
}
},
"node_modules/js-string-escape": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz",
"integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/jsdom": {
"version": "23.0.1",
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz",
@@ -973,6 +1419,23 @@
}
}
},
"node_modules/levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dependencies": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/libphonenumber-js": {
"version": "1.10.51",
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.51.tgz",
"integrity": "sha512-vY2I+rQwrDQzoPds0JeTEpeWzbUJgqoV0O4v31PauHBb/e+1KCXKylHcDnBMgJZ9fH9mErsEbROJY3Z3JtqEmg=="
},
"node_modules/lower-case": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
@@ -990,6 +1453,16 @@
"node": ">=10"
}
},
"node_modules/md5": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
"dependencies": {
"charenc": "0.0.2",
"crypt": "0.0.2",
"is-buffer": "~1.1.6"
}
},
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
@@ -1061,7 +1534,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -1069,11 +1541,43 @@
"node": "*"
}
},
"node_modules/mkdirp": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz",
"integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==",
"bin": {
"mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/multimatch": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz",
"integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==",
"dependencies": {
"@types/minimatch": "^3.0.3",
"array-differ": "^3.0.0",
"array-union": "^2.1.0",
"arrify": "^2.0.1",
"minimatch": "^3.0.4"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -1178,6 +1682,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object-is": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -1189,6 +1716,30 @@
"node": ">= 0.8"
}
},
"node_modules/opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
"bin": {
"opencollective-postinstall": "index.js"
}
},
"node_modules/optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dependencies": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"word-wrap": "~1.2.3"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/param-case": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
@@ -1233,6 +1784,22 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"engines": {
"node": ">= 0.6.0"
}
},
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -1325,6 +1892,11 @@
"node": ">=8.10.0"
}
},
"node_modules/reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"node_modules/relateurl": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
@@ -1528,6 +2100,19 @@
"node": ">= 0.8"
}
},
"node_modules/string-template": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz",
"integrity": "sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg=="
},
"node_modules/stringz": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/stringz/-/stringz-2.1.0.tgz",
"integrity": "sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==",
"dependencies": {
"char-regex": "^1.0.2"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -1602,6 +2187,22 @@
"node": ">=18"
}
},
"node_modules/tslib": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dependencies": {
"prelude-ls": "~1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -1661,6 +2262,18 @@
"requires-port": "^1.0.0"
}
},
"node_modules/util": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
"integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
"dependencies": {
"inherits": "^2.0.3",
"is-arguments": "^1.0.4",
"is-generator-function": "^1.0.7",
"is-typed-array": "^1.1.3",
"which-typed-array": "^1.1.2"
}
},
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -1669,6 +2282,26 @@
"node": ">= 0.4.0"
}
},
"node_modules/uuid": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
"funding": [
"https://github.com/sponsors/broofa",
"https://github.com/sponsors/ctavan"
],
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/validator": {
"version": "13.11.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz",
"integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -1738,6 +2371,32 @@
"node": ">=18"
}
},
"node_modules/which-typed-array": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz",
"integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
"dependencies": {
"available-typed-arrays": "^1.0.5",
"call-bind": "^1.0.4",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
"has-tostringtag": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/word-wrap": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
"integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ws": {
"version": "8.14.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz",
+3 -2
View File
@@ -1,7 +1,7 @@
{
"name": "polaris",
"version": "1.0.0",
"description": "The future of school gaming.",
"description": "The future of school gaming",
"main": "index.js",
"type": "module",
"scripts": {
@@ -15,9 +15,10 @@
"easyviolet": "github:Russell2259/Easyviolet",
"express": "*",
"html-minifier": "^4.0.0",
"javascript-obfuscator": "^4.1.0",
"jsdom": "^23.0.1",
"mime": "*",
"uglify-js": "^3.17.4"
"uuid": "^9.0.1"
},
"devDependencies": {
"nodemon": "^3.0.1"
+21 -22
View File
@@ -1,30 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/assets/css/main.css">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/assets/css/main.css">
<title>404 Error | Polaris</title>
</head>
<title>404 Error | Polaris</title>
</head>
<body>
<div class="content box">
<h1 style="font-size: 50px;">404</h1>
<p>Looks you found a page that does not exist! Try checking your url for spelling mistakes.<br><br>Or, you can report it in our <a href="//dsc.gg/skoolworld">discord server</a>.</p>
</div>
<body>
<div class="content box">
<h1 style="font-size: 50px;">404</h1>
<script src="/assets/js/main.js" type="module"></script>
<script src='https://cdn.jsdelivr.net/npm/@widgetbot/crate@3' async defer>
new Crate({
server: '950407933408198717',
channel: '1172313771985870938'
})
</script>
</body>
<p>
Looks you found a page that does not exist! Try checking your url for spelling mistakes.
<br>
<br>
Or, you can report it in our <a href="https://dsc.gg/skoolworld" class="link">discord server</a>.
</p>
</div>
<script src="/assets/js/main.js" type="module"></script>
</body>
</html>
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Loading...</title>
</head>
<body>
<script>
</script>
</body>
</html>
+1 -1
View File
@@ -5,7 +5,7 @@ services:
plan: free
runtime: node
buildCommand: npm i
startCommand: node index.js
startCommand: npm start
envVars:
- key: NODE_VERSION
value: 20.0.0
+38 -56
View File
@@ -1,12 +1,10 @@
import { createBareServer } from '@tomphttp/bare-server-node';
import { minify } from 'html-minifier';
import { JSDOM } from 'jsdom';
import UglifyJS from 'uglify-js';
import express from 'express';
import mime from 'mime';
import cors from 'cors';
import { pathToFile } from './utils.js';
import { pathToFile, TokenManager, rewriter } from './utils.js';
import config from '../config.js';
import path from 'node:path';
import http from 'node:http';
@@ -16,21 +14,9 @@ import fs from 'node:fs';
const app = express();
const server = http.createServer();
const bareServer = createBareServer('/bare/');
const port = process.env.PORT || process.argv[2] || 8080;
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
let navbar = fs.readFileSync('./templates/navbar.html', 'utf-8');
let meta = fs.readFileSync('./templates/meta.html', 'utf-8');
/*fs.readdirSync('./pages').forEach(file => {
let fileData = fs.readFileSync('./pages/' + file, 'utf-8');
fileData = fileData.replace('<body>', '<body> ' + navbar).replace('</head>', meta + '</head>');
app.get(`/${file.split('.')[0] === 'index' ? '' : file.split('.')[0]}`, (req, res) => res.status(200).send(fileData));
});*/
//app.use(express.static(path.join(__dirname, '../static'), { extensions: ['html'] }));
app.get('/cdn/*', cors({
origin: false
}), async (req, res, next) => {
@@ -51,57 +37,53 @@ app.get('/cdn/*', cors({
} else next();
});
app.use((req, res, next) => {
app.get('/asset', (req, res, next) => {
if (req.query.asset) {
const {
exists,
path: filePath
} = pathToFile(req.query.asset, path.join(__dirname, '../static/assets'));
if (exists) {
if (filePath.startsWith(path.join(__dirname, '../static/assets'))) res.setHeader('content-type', mime.getType(filePath)).end(fs.readFileSync(filePath));
else next();
} else next();
} else next();
});
app.get('/asset/:token', async (req, res, next) => {
if (req.params.token && !req.query.asset) {
if (TokenManager.exists(req.params.token)) {
const token = TokenManager.get(req.params.token);
if (TokenManager.get(req.params.token).type === 'asset') {
TokenManager.delete(req.params.token);
res.setHeader('content-type', token.data.type);
res.end(await rewriter.auto(fs.readFileSync(token.data.asset), token.data.type));
} else next();
} else next();
}
});
app.get('/uv/*', (req, res) => res.setHeader('Service-Worker-Allowed', 'true'));
app.use(async (req, res, next) => {
const {
exists,
path: filePath
} = pathToFile(req.path, path.join(__dirname, '../static'));
res.setHeader('Service-Worker-Allowed', 'true');
if (exists) {
res.setHeader('content-type', mime.getType(filePath));
if (mime.getType(filePath) === 'text/html') {
const html = fs.readFileSync(filePath).toString().split('<body>');
html[0] += fs.readFileSync('./templates/navbar.html').toString();
const dom = new JSDOM(html.join('<body>'));
dom.window.document.documentElement.querySelectorAll('script').forEach(script => {
if (script) {
}
});
res.setHeader('content-type', 'text/html');
res.end(minify(dom.serialize(), {
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
removeScriptTypeAttributes: true,
useShortDoctype: true,
collapseWhitespace: true,
removeComments: true
}));
} else if (mime.getType(filePath) === 'text/javascript') res.end(UglifyJS.minify(fs.readFileSync(filePath).toString()).code);
if (mime.getType(filePath) === 'text/html') res.end(await rewriter.html(fs.readFileSync(filePath)));
else if (mime.getType(filePath) === 'text/javascript') res.end(await rewriter.javascript(fs.readFileSync(filePath)));
else if (mime.getType(filePath) === 'text/css') res.end(await rewriter.css(fs.readFileSync(filePath)));
else res.sendFile(filePath);
} else {
const html = fs.readFileSync(path.join(__dirname, '../pages/404.html')).toString().split('<body>');
html[0] += fs.readFileSync('./templates/navbar.html').toString()
res.setHeader('content-type', 'text/html');
res.end(minify(html.join('<body>'), {
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
removeScriptTypeAttributes: true,
useShortDoctype: true,
collapseWhitespace: true,
removeComments: true
}));
res.status(404).end(await rewriter.html(fs.readFileSync(path.join(__dirname, '../pages/404.html'))));
}
});
+12 -1
View File
@@ -1,3 +1,6 @@
import * as rewriter from './utils/rewriter.js';
import TokenManager from './utils/token.js';
import path from 'node:path';
import fs from 'node:fs';
@@ -18,6 +21,14 @@ const pathToFile = (url = '', folderPath) => {
};
};
export default {
pathToFile,
TokenManager,
rewriter
};
export {
pathToFile
pathToFile,
TokenManager,
rewriter
};
+172
View File
@@ -0,0 +1,172 @@
import JavaScriptObfuscator from 'javascript-obfuscator';
import { minify as minifyHTML } from 'html-minifier';
import { JSDOM } from 'jsdom';
import mime from 'mime';
import { TokenManager } from '../utils.js';
import config from '../../config.js';
import path from 'node:path';
import url from 'node:url';
import fs from 'node:fs';
const __dirname = url.fileURLToPath(new URL('../', import.meta.url));
const html = (data) => {
return new Promise((resolve, reject) => {
var html = String(data);
const templates = html.split('<!--el:')
.map(data => {
if (data.split('\n')[0].trim().endsWith('-->')) return data.split('\n')[0].trim().replace('-->', '');
else return undefined;
})
.filter(data => fs.existsSync(path.join(__dirname, '../templates', data + '.html')))
.map(data => {
return {
name: data,
file: fs.readFileSync(path.join(__dirname, '../templates', data + '.html'))
};
});
templates.forEach(template => {
html = html.replace(`<!--el:${template.name}-->`, template.file.toString());
});
const dom = new JSDOM(html);
if (config.assetScrambling) {
for (let i = 0; i < dom.window.document.documentElement.querySelectorAll('script').length; i++) {
const script = dom.window.document.documentElement.querySelectorAll('script')[i];
if (script.src.startsWith('/') && !script.src.startsWith('//')) script.setAttribute('src', `/asset/${TokenManager.generate('asset', 20000, {
asset: path.join(__dirname, '../static', script.src),
type: 'application/javascript'
}).token}`);
}
for (let i = 0; i < dom.window.document.documentElement.querySelectorAll('link[rel="stylesheet"]').length; i++) {
const css = dom.window.document.documentElement.querySelectorAll('link[rel="stylesheet"]')[i];
if (css.href.startsWith('/') && !css.href.startsWith('//')) css.setAttribute('href', `/asset/${TokenManager.generate('asset', 20000, {
asset: path.join(__dirname, '../static', css.href),
type: 'text/css'
}).token}`);
}
for (let i = 0; i < dom.window.document.documentElement.querySelectorAll('img').length; i++) {
const img = dom.window.document.documentElement.querySelectorAll('img')[i];
if (img.src.startsWith('/') && !img.src.startsWith('//')) img.setAttribute('src', `/asset/${TokenManager.generate('asset', 20000, {
asset: path.join(__dirname, '../static', img.src),
type: mime.getType(path.join(__dirname, '../static', img.src))
}).token}`);
}
}
if (config.minify) resolve(minifyHTML(dom.serialize(), {
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
removeScriptTypeAttributes: true,
useShortDoctype: true,
collapseWhitespace: true,
removeComments: true
}))
else resolve(dom.serialize());
});
};
const javascript = (data) => {
return new Promise((resolve, reject) => {
const imports = String(data).split('import ')
.map(data => data.split('from ')[1])
.filter(data => Boolean(data))
.map(data => data.split(';')[0]
.replaceAll('\'', '')
.replaceAll('`', '')
.replaceAll('"', ''));
let javascript = String(data);
if (config.assetScrambling) {
for (let i = 0; i < imports.length; i++) {
javascript = javascript.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
asset: path.join(__dirname, '../static', imports[i]),
type: 'text/javascript'
}).token);
}
}
if (config.minify) resolve(JavaScriptObfuscator.obfuscate(javascript,
{
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 1,
numbersToExpressions: true,
simplify: true,
stringArrayShuffle: true,
splitStrings: true,
stringArrayThreshold: 1
}).getObfuscatedCode());
else resolve(javascript);
});
};
const css = (data) => {
return new Promise((resolve, reject) => {
const imports = String(data).split('url(')
.map(data => {
if (data.split('\n')[0].split(' ')[0].replace(';', '').trim().endsWith(')')) return data.split('\n')[0]
.split(' ')[0]
.trim()
.replace(';', '')
.replace(')', '')
.replaceAll('\'', '')
.replaceAll('`', '')
.replaceAll('"', '');
else return undefined;
})
.filter(data => {
if (data) {
try {
new URL(data);
return false;
} catch (e) {
if (data.startsWith('/')) return true;
else return false;
}
} else return false;
});
let css = String(data);
if (config.assetScrambling) {
for (let i = 0; i < imports.length; i++) {
css = css.replace(imports[i], '/asset/' + TokenManager.generate('asset', 20000, {
asset: path.join(__dirname, '../static', imports[i]),
type: mime.getType(path.join(__dirname, '../static', imports[i]))
}).token);
}
}
if (config.minify) resolve(css.replace(/(\r\n|\n|\r)/gm, '').replaceAll(' ', ' '));
else resolve(css);
});
};
const auto = async (data, type) => {
if (type === 'text/html') return await html(data);
else if (type === 'text/javascript' || type === 'application/javascript') return await javascript(data);
else if (type === 'text/css') return await css(data);
else return data;
};
export {
auto,
html,
javascript,
css
};
+79
View File
@@ -0,0 +1,79 @@
import { v4 as uuid } from 'uuid';
class TokenManager {
constructor() {
this.tokens = {};
setInterval(() => {
const currentDate = Date.now();
Object.keys(this.tokens).forEach(key => {
const token = this.tokens[key];
if (currentDate > token.expires) delete this.tokens[key];
});
}, 100);
}
/**
* Generate a token
* @param {string} type The type of token you are generating
* @param {number} expires How long it will take for the token to expire in miliseconds
* @param {object | string} data The data to be stored with the token
* @returns {{token: number, expires: number}} The token data
*/
generate = (type, expires, data) => {
const token = uuid();
this.tokens[token] = {
token: token,
type: type,
expires: Date.now() + expires,
data: data
}
return {
token: token,
expires: Date.now() + expires
}
}
/**
* Check if a token exists
* @param {string} token The token
* @returns {boolean}
*/
exists = (token) => {
return this.tokens[token] ? true : false;
}
/**
* Get all tokens in a category
* @param {string} type The token category
* @returns {Array.<{token: stromg, type: string, expires: number, data: object | string}>} The list of tokens
*/
getAll = (type) => {
const tokens = [];
Object.keys(this.tokens).forEach(key => {
const token = this.tokens[key];
if (token.type == type) tokens.push(token);
});
return tokens;
}
/**
* Get token information from a token
* @param {string} token The token
* @returns {{token: stromg, type: string, expires: number, data: object | string}} Token data
*/
get = (token) => {
return this.tokens[token];
}
delete = (token) => delete this.tokens[token];
}
export default new TokenManager();
+26 -27
View File
@@ -1,6 +1,6 @@
<head>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<!--el:meta-->
<!--el:analytics-->
</head>
<style>
[data-custom-class='body'],
@@ -943,8 +943,8 @@ line-height:115%;">
style="line-height: 115%; font-family: Arial; font-size: 19px;">7.</span></strong></span> </strong>SUBMISSIONS</span></strong>
</div>
<div style="line-height: 1;"><br></div>
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">You acknowledge and agree that any questions, comments,
suggestions, ideas, feedback, or other information regarding the Site ("Submissions") provided by you to us
are non-confidential and shall become our sole property. We shall own exclusive rights, including all
@@ -965,7 +965,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">You acknowledge a
style="line-height: 115%; font-family: Arial; font-size: 19px;">8.</span></strong></span> </strong>THIRD-PARTY
WEBSITE AND CONTENT</span></strong></div>
<div style="line-height: 1;"><br></div>
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">The Site may contain (or you may be sent via the Site)
links to other websites ("Third-Party Websites") as well as articles, photographs, text, graphics, pictures,
designs, music, sound, video, information, applications, software, and other content or items belonging to or
@@ -1013,7 +1013,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">The Site may cont
<bdt class="block-container if" data-type="if">
<bdt data-type="conditional-block">
<bdt data-type="body">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We allow advertisers to display their advertisements and
other information in certain areas of the Site, such as sidebar advertisements or banner advertisements.
If you are an advertiser, you shall take full responsibility for any advertisements you place on the
@@ -1051,7 +1051,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We allow advertis
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left; line-height: 1.5;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We reserve the
right, but not the obligation, to: (1) monitor the Site for violations of
these Terms of Use; (2) take appropriate legal action against anyone who, in
@@ -1082,7 +1082,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We reserve the
POLICY</span></strong>
</div>
<div class="MsoNormal" style="line-height: 1;"><br></div>
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We care about data privacy and security. </span><span
style="color: rgb(89, 89, 89); font-size: 14.6667px;">Please review our Privacy Policy:</span><b
style="color: rgb(89, 89, 89); font-size: 14.6667px;"> <bdt
@@ -1210,7 +1210,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We care about dat
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">If we terminate
or suspend your account for any reason, you are prohibited from registering and
creating a new account under your name, a fake or borrowed name, or the name of
@@ -1231,7 +1231,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">If we terminate
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We reserve the right to change, modify, or remove the
contents of the Site at any time or for any reason at our sole discretion without notice. However, we have no
obligation to update any information on our Site. We also reserve the right to modify or discontinue all or part
@@ -1240,7 +1240,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We reserve the ri
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We cannot guarantee
the Site will be available at all times. We may experience hardware, software,
or other problems or need to perform maintenance related to the Site, resulting
@@ -1265,7 +1265,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We cannot guarant
<div class="MsoNormal" style="line-height: 115%;">
<bdt class="block-component"><span style="font-size: 15px;"></span></bdt>
</div>
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">These Terms of Use and your use of the Site are governed
by and construed in accordance with the laws of <bdt class="block-container if" data-type="if"
id="b86653c1-52f0-c88c-a218-e300b912dd6b">
@@ -1278,7 +1278,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">These Terms of Us
<bdt class="statement-end-if-in-editor" data-type="close"></bdt>
</bdt> applicable to agreements made and to be entirely performed within<bdt class="block-container if"
data-type="if" id="b86653c1-52f0-c88c-a218-e300b912dd6b" style="font-size: 14.6667px;">
<bdt data-type="conditional-block"> <span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<bdt data-type="conditional-block"> <span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
<bdt class="block-container if" data-type="if" id="b86653c1-52f0-c88c-a218-e300b912dd6b">
<bdt data-type="conditional-block">
@@ -1556,7 +1556,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">There may be
information on the Site that contains typographical errors, inaccuracies, or
omissions, including descriptions, pricing, availability, and various other
@@ -1576,7 +1576,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">There may be
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">THE SITE IS PROVIDED
ON AN AS-IS AND AS-AVAILABLE BASIS. YOU
AGREE THAT YOUR USE OF THE SITE AND OUR SERVICES WILL BE AT YOUR SOLE RISK. TO THE
@@ -1616,7 +1616,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">THE SITE IS PROVI
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">IN NO EVENT WILL WE OR OUR DIRECTORS, EMPLOYEES, OR
AGENTS BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, EXEMPLARY, INCIDENTAL,
SPECIAL, OR PUNITIVE DAMAGES, INCLUDING LOST PROFIT, LOST REVENUE, LOSS OF DATA, OR OTHER DAMAGES ARISING FROM
@@ -1663,7 +1663,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">IN NO EVENT WILL
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">You agree to
defend, indemnify, and hold us harmless, including our subsidiaries,
affiliates, and all of our respective officers, agents, partners, and
@@ -1701,7 +1701,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">You agree to
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We will maintain
certain data that you transmit to the Site for the purpose of managing the
performance of the Site, as well as data relating to your use of the Site. Although we perform regular routine
@@ -1724,7 +1724,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">We will maintain
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">Visiting the Site, sending us emails, and completing
online forms constitute electronic communications. You consent to receive electronic communications, and you
agree that all agreements, notices, disclosures, and other communications we provide to you electronically,
@@ -1736,7 +1736,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">Visiting the Site
payments or the granting of credits by any means other than electronic means.</span></div>
<div class="MsoNormal" style="line-height: 1.5;"><br></div>
<div class="MsoNormal" style="line-height: 1.5;"><br></div>
<div class="MsoNormal" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
<bdt class="block-component"></bdt>
</span></div>
@@ -1749,7 +1749,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">If any complaint
with us is not satisfactorily resolved, you can contact the Complaint
Assistance Unit of the Division of Consumer Services of the California
@@ -1758,8 +1758,8 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">If any complaint
445-1254.</span></div>
<div class="MsoNormal" style="line-height: 1.5;"><br></div>
<div class="MsoNormal" style="line-height: 1.5;"><br></div>
<div class="MsoNormal" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
<bdt class="statement-end-if-in-editor"></bdt>
</span></span></div>
@@ -1772,7 +1772,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">These Terms of Use and any policies or operating rules
posted by us on the Site or in respect to the Site constitute the entire agreement and understanding between
you and us. Our failure to exercise or enforce any right or provision of these Terms of Use shall not operate
@@ -1786,7 +1786,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">These Terms of Us
use of the Site. You agree that these Terms of Use will not be construed against us by virtue of having
drafted them. You hereby waive any and all defenses you may have based on the electronic form of these Terms
of Use and the lack of signing by the parties hereto to execute these Terms of Use.</span></div>
<div class="MsoNormal" style="line-height: 1;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
<div class="MsoNormal" style="line-height: 1;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
<bdt class="block-component"></bdt>
</span></div>
@@ -1802,8 +1802,7 @@ Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
<div align="center" style="text-align: left;">
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family:Arial;
Calibri;color:#595959;mso-themecolor:text1;mso-themetint:166;">In order to resolve a complaint regarding the Site or to
<div class="MsoNormal" data-custom-class="body_text" style="line-height: 1.5;"><span style="font-size:11.0pt;line-height:115%;font-family: Arial;color:#595959;mso-themecolor:text1;mso-themetint:166;">In order to resolve a complaint regarding the Site or to
receive further information regarding use of the Site, please contact us at:</span></div>
</div>
<div align="center" style="text-align: left; line-height: 1;"><br></div>
+35 -38
View File
@@ -1,44 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/assets/css/main.css">
<script src="https://cdn.counter.dev/script.js" data-id="b0b2d4b2-daca-47e1-9287-b9e649b3dcd2" data-utcoffset="-5"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<title>Apps | Polaris</title>
<script data-cfasync="false">window.nitroAds=window.nitroAds||{createAd:function(){return new Promise(e=>{window.nitroAds.queue.push(["createAd",arguments,e])})},addUserToken:function(){window.nitroAds.queue.push(["addUserToken",arguments])},queue:[]};</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
</head>
<head>
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<body>
<div class="content">
<h1>Apps</h1>
<br>
<div class="apps"></div>
</div>
<link rel="stylesheet" href="/assets/css/main.css">
<script src="/assets/js/main.js" type="module"></script>
<span data-ccpa-link="1"></span>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
"format": "anchor",
"anchor": "bottom",
"anchorPersistClose": false,
"report": {
"enabled": true,
"icon": true,
"wording": "Report Ad",
"position": "top-right"
},
"mediaQuery": "(min-width: 1025px)"
});
</script>
</body>
<title>Apps | Polaris</title>
</head>
</html>
<body>
<!--el:navbar-->
<div class="content">
<h1>Apps</h1>
<br>
<div class="apps"></div>
</div>
<script src="/assets/js/main.js" type="module"></script>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
"format": "anchor",
"anchor": "bottom",
"anchorPersistClose": false,
"report": {
"enabled": true,
"icon": true,
"wording": "Report Ad",
"position": "top-right"
},
"mediaQuery": "(min-width: 1025px)"
});
</script>
</body>
</html>
+46 -112
View File
@@ -19,6 +19,7 @@ body {
color: var(--text);
text-align: center;
padding-top: 20vh;
background-repeat: no-repeat;
}
html {
@@ -71,7 +72,8 @@ body::-webkit-scrollbar-corner {
.row.mainpage {
position: absolute;
top: 10vh;
margin-top: 0px;
top: calc(calc(9vh + 2.5em) + 100px);
bottom: 50px;
}
@@ -103,49 +105,10 @@ hr {
background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0));
}
.welcome {
padding-bottom: 0px;
}
.small {
font-size: 3vh;
}
.settings-input {
text-align: center;
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
border: none;
border-radius: 2vh;
cursor: pointer;
background: var(--sidebar-bg);
width: 25vh;
height: 4vh;
color: var(--text);
transition: 0.4s;
margin: auto;
margin-top: 2vh;
}
.proxycontainer {
background-color: var(--background-color);
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
width: 60vw;
height: 30vh;
margin: auto;
margin-top: 10vh;
padding-top: 1vh;
padding-bottom: 2vh;
padding-left: 1.5vh;
padding-right: 1.5vh;
border-radius: 2vh;
color: var(--text);
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.proxytitle {
margin-bottom: 1vh;
font-size: 5.5vh;
@@ -168,7 +131,7 @@ hr {
width: 55vw;
height: 6vh;
color: var(--text);
transition: 0.4s;
transition: 0.5s;
margin: auto;
margin-top: 2vh;
}
@@ -176,54 +139,39 @@ hr {
button {
text-align: center;
border: none;
border-radius: 1vh;
border-radius: 1.5vh;
cursor: pointer;
background-color: var(--button-bg);
color: var(--text);
transition: 0.5s;
font-size: 20px;
font-family: 'Lato';
padding: 5px;
padding-left: 10px;
padding-right: 10px;
}
input {
text-align: center;
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
border: none;
border-radius: 100px;
cursor: pointer;
background: var(--sidebar-bg);
width: 25vh;
height: 4vh;
color: var(--text);
transition: 0.4s;
font-size: 2.5vh;
font-family: 'Lato';
transition: 0.5s;
margin: auto;
margin-top: 2vh;
}
.mainpageimage-button {
background-color: transparent;
border: none;
padding: 0;
cursor: pointer;
justify-content: center;
width: 45vh;
margin-top: 10vh;
transition: all 0.4s ease;
}
.mainpageimage-button:hover {
transform: scale(1.025);
opacity: 1;
}
.mainpage-text {
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
background-color: var(--background-color);
margin-right: 15vh;
width: 75vh;
height: 52vh;
input::placeholder {
color: var(--text);
text-align: center;
border-radius: 2vh;
opacity: 0.9;
padding: 2vh;
line-height: 2vh;
}
.mainpage-text>h1 {
padding: 2vh;
margin: 0px;
}
.mainpage-text>p {
padding: 3vh;
margin: 0px;
input:not(:read-only) {
outline: none;
}
.blue {
@@ -232,28 +180,6 @@ button {
text-shadow: 0vh 0vh 1.5vh rgb(45, 129, 255);
}
.chromebook-btn-div {
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
background-color: var(--background-color);
width: 30vh;
height: 4.3vh;
color: var(--text);
text-align: center;
border-radius: 2vh;
justify-content: center;
padding: 0.5vh;
margin: 0 auto;
margin-top: 3vh;
position: relative;
opacity: 0.9;
padding: 2vh;
line-height: 2vh;
}
.settings-button {
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
}
select {
text-align: center;
box-shadow: 0.5vh 0.5vh 1vh 0vh var(--shadow-color);
@@ -264,7 +190,7 @@ select {
min-width: 7vh;
height: 4vh;
color: var(--text);
transition: 0.4s;
transition: 0.5s;
margin-left: 1vh;
margin-right: 1vh;
padding-left: 2vh;
@@ -495,8 +421,6 @@ input:checked+.slider:before {
background: var(--solid);
}
;
.notifications>.notification.error {
background: rgba(171, 61, 222, 0.801);
color: #fff;
@@ -592,22 +516,32 @@ input:checked+.slider:before {
border-radius: 2vh;
color: var(--text);
min-width: 40vw;
margin: 50px;
overflow: hidden;
margin-bottom: 0px;
margin-left: 50px;
margin-right: 25px;
}
h1.nomargin {
margin: 0px;
.container.centered {
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.container.left {
margin-right: 25px;
}
.container.right {
margin-right: 50px;
margin-left: 0;
margin-left: 25px;
}
h1.nomargin {
margin: 0px;
}
img.featured {
width: 100%;
height: 100%;
@@ -621,12 +555,12 @@ img.featured {
border-width: 0.5vh;
border-radius: 2vh;
border-color: rgba(0, 0, 0, 0);
transition: border 0.4s linear;
transition: border 0.5s linear;
}
img.featured:hover {
border-color: rgba(255, 255, 255, 1);
transition: border 0.4s linear;
transition: border 0.5s linear;
}
/*
+12 -2
View File
@@ -1,3 +1,9 @@
@media (max-width:960px) {
.navbar>.right {
display: none;
}
}
.navbar {
box-shadow: 0vh 0.75vh 1.5vh 0vh var(--shadow-color);
position: fixed;
@@ -59,11 +65,15 @@
padding: 0.8rem;
cursor: pointer;
font-size: 2.7vh;
border-radius: 2vh;
border-color: rgba( 0, 0, 0, 0);
border-radius: 1.5vh;
border-color: rgba(0, 0, 0, 0);
transition: border-color 0.4s linear;
}
.navbar>.right>a:hover {
border-color: rgba(255, 255, 255, 1);
}
.navbar>.right>a.active {
border-color: rgba(255, 255, 255, 1);
}
+5 -4
View File
@@ -1,11 +1,11 @@
.sidebar {
position: fixed;
margin-top: calc(10vh + 50px);
margin-top: calc(calc(9vh + 2.5em) + 100px);
bottom: 50px;
top: 0;
right: -60vh;
width: 50vh;
height: 75vh;
background: var(--sidebar-bg);
background-color: var(--background-darker);
border-radius: 2vh;
box-shadow: 0vh 0.75vh 1.5vh 0vh var(--shadow-color);
text-align: center;
@@ -16,7 +16,7 @@
}
.sidebar.active {
right: calc(5vh + 25px);
right: 50px;
transition: all 0.5s ease;
}
@@ -33,6 +33,7 @@
top: 87vh;
opacity: 0;
z-index: 9999999999999999999;
display: none;
}
.sidebar>.scroll.active {
+2 -2
View File
@@ -44,8 +44,8 @@ body[data-theme='flamingo'] {
--scrollbar-color: rgba(0, 0, 0, 0.8);
--solid: #FB5E4C;
--hover: #ed58b4;
background: linear-gradient(122deg, rgba(255, 41, 191, 1) 0%, rgba(215, 67, 46, 1) 85%);
animation: flamingo-gradient 12s ease infinite;
background: linear-gradient(304deg, rgb(255, 136, 0), rgb(245, 7, 226)) 0% 0% / 120% 120%;
animation: 12s ease 0s infinite normal none running flamingo-gradient;
@keyframes flamingo-gradient {
0% {
+11 -16
View File
@@ -1,12 +1,12 @@
import PolarisError from './error.js';
import { workerLoaded, loadWorker } from './wpm.js';
import PolarisError from '/assets/js/error.js';
import { workerLoaded, loadWorker } from '/assets/js/wpm.js';
const tiltEffectSettings = {
max: 8, // max tilt rotation (degrees (deg))
perspective: 1000, // transform perspective, the lower the more extreme the tilt gets (pixels (px))
scale: 1.05, // transform scale - 2 = 200%, 1.5 = 150%, etc..
speed: 800, // speed (transition-duration) of the enter/exit transition (milliseconds (ms))
easing: 'cubic-bezier(.03,.98,.52,.99)' // easing (transition-timing-function) of the enter/exit transition
max: 8,
perspective: 1000,
scale: 1.05,
speed: 800,
easing: 'cubic-bezier(.03,.98,.52,.99)'
};
const load = () => {
@@ -47,13 +47,10 @@ function appMouseMove(event) {
const mouseY = event.clientY - centerY;
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (appHeight / 2);
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (appWidth / 2);
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max : (rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max : (rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
app.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
app.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
}
function appMouseLeave(event) {
@@ -65,9 +62,7 @@ function setTransition(event) {
const app = event.currentTarget;
clearTimeout(app.transitionTimeoutId);
app.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
app.transitionTimeoutId = setTimeout(() => {
app.style.transition = '';
}, tiltEffectSettings.speed);
app.transitionTimeoutId = setTimeout(() => app.style.transition = '', tiltEffectSettings.speed);
}
export default {
+6 -13
View File
@@ -1,4 +1,4 @@
import PolarisError from './error.js';
import PolarisError from '/assets/js/error.js';
const tiltEffectSettings = {
max: 8,
@@ -31,9 +31,7 @@ const load = () => {
}).catch(e => new PolarisError('Failed to load cheats.'));
};
function gameMouseEnter(event) {
setTransition(event);
}
const gameMouseEnter = setTransition;
function gameMouseMove(event) {
const game = event.currentTarget;
@@ -45,13 +43,10 @@ function gameMouseMove(event) {
const mouseY = event.clientY - centerY;
const rotateXUncapped = (+1) * tiltEffectSettings.max * mouseY / (gameHeight / 2);
const rotateYUncapped = (-1) * tiltEffectSettings.max * mouseX / (gameWidth / 2);
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
(rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max :
(rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
const rotateX = rotateXUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max : (rotateXUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateXUncapped);
const rotateY = rotateYUncapped < -tiltEffectSettings.max ? -tiltEffectSettings.max : (rotateYUncapped > tiltEffectSettings.max ? tiltEffectSettings.max : rotateYUncapped);
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)
scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
game.style.transform = `perspective(${tiltEffectSettings.perspective}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale3d(${tiltEffectSettings.scale}, ${tiltEffectSettings.scale}, ${tiltEffectSettings.scale})`;
}
function gameMouseLeave(event) {
@@ -63,9 +58,7 @@ function setTransition(event) {
const game = event.currentTarget;
clearTimeout(game.transitionTimeoutId);
game.style.transition = `transform ${tiltEffectSettings.speed}ms ${tiltEffectSettings.easing}`;
game.transitionTimeoutId = setTimeout(() => {
game.style.transition = '';
}, tiltEffectSettings.speed);
game.transitionTimeoutId = setTimeout(() => game.style.transition = '', tiltEffectSettings.speed);
}
export default {
+2 -2
View File
@@ -1,5 +1,5 @@
import PolarisError from './error.js';
import { workerLoaded, loadWorker } from './wpm.js';
import PolarisError from '/assets/js/error.js';
import { workerLoaded, loadWorker } from '/assets/js/wpm.js';
const tiltEffectSettings = {
max: 8,
+7 -7
View File
@@ -1,10 +1,10 @@
import PolarisError from './error.js';
import { load } from './settings.js';
import Search from './search.js';
import Cheats from './cheats.js';
import Games from './games.js';
import Frame from './frame.js';
import Apps from './apps.js';
import PolarisError from '/assets/js/error.js';
import { load } from '/assets/js/settings.js';
import Search from '/assets/js/search.js';
import Cheats from '/assets/js/cheats.js';
import Games from '/assets/js/games.js';
import Frame from '/assets/js/frame.js';
import Apps from '/assets/js/apps.js';
const Settings = {
load: load
+1 -1
View File
@@ -1,4 +1,4 @@
import { workerLoaded, loadWorker } from './wpm.js';
import { workerLoaded, loadWorker } from '/assets/js/wpm.js';
const load = () => {
const xor = {
+2 -2
View File
@@ -1,5 +1,5 @@
import Theme from './themes.js';
import PolarisError from './error.js';
import Theme from '/assets/js/themes.js';
import PolarisError from '/assets/js/error.js';
const isScrollable = (element) => element.scrollWidth > element.clientWidth || element.scrollHeight > element.clientHeight;
+45 -48
View File
@@ -1,54 +1,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="/assets/css/main.css">
<script src="https://cdn.counter.dev/script.js" data-id="b0b2d4b2-daca-47e1-9287-b9e649b3dcd2" data-utcoffset="-5"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<title>Cheats | Polaris</title>
<script data-cfasync="false">window.nitroAds=window.nitroAds||{createAd:function(){return new Promise(e=>{window.nitroAds.queue.push(["createAd",arguments,e])})},addUserToken:function(){window.nitroAds.queue.push(["addUserToken",arguments])},queue:[]};</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
</head>
<head>
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<body>
<div class="content">
<h1>Cheats</h1>
<br>
<script type="text/javascript">
atOptions = {
'key' : 'ae1638b56336895e2ecf7d1adc3492a4',
'format' : 'iframe',
'height' : 50,
'width' : 320,
'params' : {}
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
<div class="games"></div>
</div>
<link rel="stylesheet" href="/assets/css/main.css">
<script src="/assets/js/main.js" type="module"></script>
<span data-ccpa-link="1"></span>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
"format": "anchor",
"anchor": "bottom",
"anchorPersistClose": false,
"report": {
"enabled": true,
"icon": true,
"wording": "Report Ad",
"position": "top-right"
},
"mediaQuery": "(min-width: 1025px)"
});
</script>
</body>
<title>Cheats | Polaris</title>
</head>
</html>
<body>
<!--el:navbar-->
<div class="content">
<h1>Cheats</h1>
<br>
<div class="games"></div>
</div>
<script src="/assets/js/main.js" type="module"></script>
<script type="text/javascript">
atOptions = {
'key' : 'ae1638b56336895e2ecf7d1adc3492a4',
'format' : 'iframe',
'height' : 50,
'width' : 320,
'params' : {}
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
"format": "anchor",
"anchor": "bottom",
"anchorPersistClose": false,
"report": {
"enabled": true,
"icon": true,
"wording": "Report Ad",
"position": "top-right"
},
"mediaQuery": "(min-width: 1025px)"
});
</script>
</body>
</html>
+23 -18
View File
@@ -2,32 +2,44 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<link rel="stylesheet" href="/assets/css/main.css">
<script src="https://cdn.counter.dev/script.js" data-id="b0b2d4b2-daca-47e1-9287-b9e649b3dcd2"
data-utcoffset="-5"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<title>Games | Polaris</title>
<script
data-cfasync="false">window.nitroAds = window.nitroAds || { createAd: function () { return new Promise(e => { window.nitroAds.queue.push(["createAd", arguments, e]) }) }, addUserToken: function () { window.nitroAds.queue.push(["addUserToken", arguments]) }, queue: [] };</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
</head>
<body>
<!--el:navbar-->
<div class="content">
<h1 style="font-size: 6vh;">Games</h1>
<h1 style="font-size: 4vh;" class="gamesectionheader">Popular</h1>
<div class="popular-games">
</div>
<h1 style="font-size: 4vh;" class="gamesectionheader">All Games</h1>
<input type="text" id="searchInput" class="settings-input" placeholder="Search Games...">
<br>
<div style="padding-bottom: 2vh;">
</div>
<br>
<div class="games">
</div>
<div style="margin-top: 5vh;">
</div>
<script src="/assets/js/main.js" type="module"></script>
<script type="text/javascript">
atOptions = {
'key': 'ae1638b56336895e2ecf7d1adc3492a4',
@@ -38,13 +50,6 @@
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
<br>
<div class="games">
</div>
<div style="margin-top: 5vh;">
</div>
<script src="/assets/js/main.js" type="module"></script>
<span data-ccpa-link="1"></span>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
+14 -39
View File
@@ -2,35 +2,18 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="6f9c120da628a61af2a67d51a1785baa69240b33" content="6f9c120da628a61af2a67d51a1785baa69240b33" />
<meta name="description" content="Start Learning Math and other subjects today." />
<meta name="keywords"
content="proxy, skool, games, unblock, half life, school, cheat, hack, no ads, ad-free, ad free, web proxy, ultraviolet, service workers, unblock websites, unblock chromebook, free web proxy, proxy list, proxy sites, un block chromebook, online proxy, proxy server, proxysite, proxy youtube, bypass securly, bypass iboss, bypass lightspeed filter, holy unblocker, chromebooks, titanium network, unblock youtube, youtube proxy, unblocked youtube, youtube unblocked, discord unblocked, blooket hacks, Games, Unblocking, Fun, Entertaining, Addictive, Challenging, Strategy, Puzzle, Multiplayer, Casual, Arcade, Action, Adventure, RPG, Sports, Racing, Shooter, Fighting, Platformer, Simulation, Open-World, Horror, Fantasy, Science Fiction, Casual Games, Skill Games, Board Games, Word Games, Card Games, Escape Games, Hidden Object, Match-3, Physics-Based, Time Management, Tycoon, Life Simulator, City Builder, Party Games, Music Games, Dance Games, Educational Games, Kids Games, Browser Games, Online Games, Mobile Games, PC Games, Console Games, Virtual Reality, Augmented Reality, Cross-Platform, Free-to-Play, Paid Games, In-App Purchases, Microtransactions, Free Games, Online Multiplayer, Local, Multiplayer, Co-op, Competitive, Fast-Paced, Relaxing, unbloc, notbroken, gameing, gameapps, noads, no ads, addfree, gamez, schoool, shcool unblocked, sjchool, schoolworld, shcool, no ad, free gam, free gamez, edpuzzle, edpuzzle hack, shcool wifi bypass, online game, shellshocker, front-end web developer, unblocked, games, google sites, unblocked games mom, ublocked, roblox, roblox games, roblox unblocked, roblox free, roblox free online, roblox working, roblox chromebook, chromebook roblox working, unblocker, unblocked, school, learn, blooket, blooket hack, blooket cheat, chatgpt unblocked, chatgpt, chatgpt free, chatgpt no signup, school chatgpt, free games, free movies, movies online, osu, osu unblocked, minecraft, free minecraft, eaglecrafter, minecraft 1.5, discord, discord unblocked, youtube, youtube unblocked, netflix, netflix online, tiktok, tiktok unblocked, edpuzzle, edpuzzle cheat, edpuzzle hack, autoclicker, bookmark, bookmarklet" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<link rel="stylesheet" href="/assets/css/main.css">
<script src="https://cdn.counter.dev/script.js" data-id="b0b2d4b2-daca-47e1-9287-b9e649b3dcd2" data-utcoffset="-5"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080" crossorigin="anonymous"></script>
<script data-cfasync="false">window.nitroAds = window.nitroAds || { createAd: function () { return new Promise(e => { window.nitroAds.queue.push(["createAd", arguments, e]) }) }, addUserToken: function () { window.nitroAds.queue.push(["addUserToken", arguments]) }, queue: [] };</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
<script src="https://polaris4.statuspage.io/embed/script.js"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-KZRKZE212Q"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-KZRKZE212Q');
</script>
<title>Home | Polaris</title>
</head>
<body>
<!--el:navbar-->
<div class="row mainpage">
<div class="container">
<h1 class="nomargin">Featured Game</h1>
@@ -43,11 +26,15 @@
<p>
<a href="https://discord.gg/skool-community-950407933408198717" target="_blank" class="link">Discord</a>
-
<a href="mailto:support@polarislearning.org" target="_blank" class="link">Support Email</a>
<a href="https://forms.gle/9knPLmyAua5Z3wZv5" target="_blank" class="link">Suggest a game</a></p>
-
<a href="https://forms.gle/9knPLmyAua5Z3wZv5" target="_blank" class="link">Suggest a game</a>
-
<a href="/privacy" class="link">Privacy Policy</a>
-
<a href="/tos" class="link">Terms of Service</a>
</p>
<hr>
<h2>Changelog</h2>
@@ -56,19 +43,7 @@
</div>
</div>
<span data-ccpa-link="1"></span>
<script src="/assets/js/main.js" type="module"></script>
<script type="text/javascript">
atOptions = {
'key': 'ae1638b56336895e2ecf7d1adc3492a4',
'format': 'iframe',
'height': 50,
'width': 320,
'params': {}
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
</body>
</html>
@@ -1,3 +1,6 @@
<!--el:meta-->
<!--el:analytics-->
By using our site your personal information may be collected including:
- email address
@@ -9,4 +12,4 @@ We do not store your personal information outside of advertising services and ou
Our sites code is open source and is hosted on github, it can be found here: https://github.com/Skoolgq
If you have any questions please contact us at skoolwrld@gmail.com
If you have any questions please contact us at skoolwrld@gmail.com
+21 -25
View File
@@ -2,45 +2,41 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<link rel="stylesheet" href="/assets/css/main.css">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<title>Search | Polaris</title>
<script
data-cfasync="false">window.nitroAds = window.nitroAds || { createAd: function () { return new Promise(e => { window.nitroAds.queue.push(["createAd", arguments, e]) }) }, addUserToken: function () { window.nitroAds.queue.push(["addUserToken", arguments]) }, queue: [] };</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
</head>
<body>
<!--el:navbar-->
<div class="content">
<div class="proxycontainer">
<h1 class="proxytitle">Proxy</h1>
<div class="container centered">
<h1 class="title">Proxy</h1>
<text class="proxyDescription">You can search anything.</text>
<form id="wpf">
<input class="proxyinput" type="text" id="query" placeholder="URL or Search Query" />
</form>
</div>
<div style="bottom: 0; margin-top: 5vh;">
</script>
<script type="text/javascript">
atOptions = {
'key': 'ae1638b56336895e2ecf7d1adc3492a4',
'format': 'iframe',
'height': 50,
'width': 320,
'params': {}
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
</div>
</div>
<script src="/assets/js/main.js" type="module"></script>
<span data-ccpa-link="1"></span>
<script type="text/javascript">
atOptions = {
'key': 'ae1638b56336895e2ecf7d1adc3492a4',
'format': 'iframe',
'height': 50,
'width': 320,
'params': {}
};
document.write('<scr' + 'ipt type="text/javascript" src="//outrightsham.com/ae1638b56336895e2ecf7d1adc3492a4/invoke.js"></scr' + 'ipt>');
</script>
<script>
window['nitroAds'].createAd('anchorad', {
"refreshTime": 30,
+12 -7
View File
@@ -2,30 +2,35 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!--el:meta-->
<!--el:adtop-->
<!--el:analytics-->
<link rel="stylesheet" href="/assets/css/main.css">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080"
crossorigin="anonymous"></script>
<title>View | Polaris</title>
</head>
<body>
<!--el:navbar-->
<div>
<div style="overflow: hidden; z-index: 1000000;">
<iframe class="frame" overflow: auto; frameborder="no"
sandbox="allow-scripts allow-forms allow-pointer-lock allow-same-origin"></iframe>
</div>
<div class="gamebar">
<img src="https://via.placeholder.com/20x20?text=img" id="gameicon" />
<p id="gametitle">Loading...</p>
<i class="fa-solid fa-expand" id="fullscreen"></i>
</div>
</div>
<br>
<a href="https://discord.gg/skool-community-950407933408198717"><button>Join our Discord Server</button></a>
<script src="/assets/js/main.js" type="module"></script>
</body>
+3
View File
@@ -0,0 +1,3 @@
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9661054437111080" crossorigin="anonymous"></script>
<script data-cfasync="false">window.nitroAds = window.nitroAds || { createAd: function () { return new Promise(e => { window.nitroAds.queue.push(["createAd", arguments, e]) }) }, addUserToken: function () { window.nitroAds.queue.push(["addUserToken", arguments]) }, queue: [] };</script>
<script data-cfasync="false" async src="https://s.nitropay.com/ads-1751.js"></script>
+10
View File
@@ -0,0 +1,10 @@
<script src="https://cdn.counter.dev/script.js" data-id="b0b2d4b2-daca-47e1-9287-b9e649b3dcd2" data-utcoffset="-5"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-KZRKZE212Q"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'G-KZRKZE212Q');
</script>
<script src="https://polaris4.statuspage.io/embed/script.js"></script>
+9 -6
View File
@@ -1,14 +1,17 @@
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="language" content="English">
<meta name="google" content="notranslate">
<meta name="charset" content="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Polaris">
<meta name="subject" content="unblocking">
<meta name="description" content="the future of school sites; bringing games, apps, proxies, advanced settings, and more.">
<meta name="author" content="Skool">
<meta name="description" content="The professional unblocked gaming site.">
<meta name="author" content="Polaris Development Group">
<meta name="og:type" content="website">
<meta name="og:url" content="https://polarislearning.org/">
<meta name="og:title" content="Polaris">
<meta name="og:description" content="the future of school sites; bringing games, apps, proxies, advanced settings, and more.">
<meta name="og:image" content="https://polarislearning.org/assets/img/logo.png">
<meta name="keywords" content="unblock, unblocked, unblocking, skool, skoolgq, skool game, skool app, skool roblox, skool github, skool tv, skool home, old skool, skoolgq, skool.gq, skool.world, skool.lol, skool hq, games, gaming, games unblocked, unblocked games, proxy, holy unblocker, titanium network, free games, online games, skool discord, chromebook unblocked, unblocked chromebook, school cheats, schoolcheats, school hacks, ezpuzzle hack, blooket hack, school hacks working, gimkit hack, polaris games, polaris apps, polaris cheats, autoclicker school, prodigy hack, quizizz hack, quizlet hack, discord unblocked, unblocked discord, tiktok unblocked, unblocked tiktok, twitch unblocked, unblocked twitch, youtube unblocked, unblocked youtube">
<meta name="og:description" content="The professional unblocked gaming site.">
<meta name="og:image" content="https://polarislearning.org/assets/img/logo.png">
+7 -7
View File
@@ -1,7 +1,10 @@
<div class="navbar">
<a class="title" href="/">
<img src="/assets/img/logo.png" loading="eager" />
<span>Polaris<span>By Skool</span></span>
<img src="/assets/img/logo.png" />
<span>Polaris
<span>By Skool</span>
</span>
</a>
<div class="right">
@@ -24,7 +27,7 @@
<input class="settings-input" type="text" name="Panic Key" id="panic_key" value="No Key Selected" readonly />
<button class="settings-button" id="reset_panic">Reset</button>
<br>
<h3>Panic URL</h3>
@@ -32,7 +35,7 @@
<input class="settings-input" type="url" id="panic_url" placeholder="eg: https://google.com" />
<br>
<h3>Theme</h3>
<div id="themes">
@@ -61,7 +64,4 @@
<input class="settings-input" type="text" placeholder="Title" id="title" />
<input class="settings-input" type="text" placeholder="eg: google.com" id="domain" />
</div>
<br>
<br>
</div>
+2 -2
View File
@@ -1,11 +1,11 @@
{
"version": 2,
"builds": [{
"src": "index.js",
"src": "server/index.js",
"use": "@vercel/node"
}],
"routes": [{
"src": "/(.*)",
"dest": "index.js"
"dest": "server/index.js"
}]
}