diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9554290..5a9fc9c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,27 +7,6 @@ on:
jobs:
- # Updates the Auto branch to match Main
- update-auto:
- permissions:
- contents: write
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout Code
- uses: actions/checkout@v4
-
- - name: Update Auto To Main
- run: |
- git fetch origin
- git config --global user.name "github-actions[bot]"
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
- git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
- git checkout auto || git checkout -b auto
- git reset --hard origin/main
- git push --force origin auto
-
# Builds the code
# This is bundling, obfuscating, version bumping, etc.
build:
@@ -36,17 +15,9 @@ jobs:
runs-on: ubuntu-latest
- needs: [update-auto] # Needs the update-auto job to finish first
-
- outputs:
- msg: ${{ steps.get-commit-message.outputs.MSG }}
-
steps:
- name: Checkout code
uses: actions/checkout@v4
- with:
- ref: auto # Checks out the auto branch
- fetch-depth: 0
- name: Set up Node
uses: actions/setup-node@v4
@@ -85,63 +56,14 @@ jobs:
id: get-commit-message
run: echo "MSG=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT
- # This should happen on 'auto' branch
- name: Commit and push built script
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
- git checkout auto || git checkout -b auto
git add dist/*
git add src/BlueMarble.meta.js
git add package.json
git add docs/README.md
git commit -m "Bumped version; ${{ steps.get-commit-message.outputs.MSG }}" || echo "No changes to commit"
git push
-
- update-map:
-
- permissions:
- contents: write
-
- runs-on: ubuntu-latest
-
- needs: [update-auto, build] # Needs the update-auto and build jobs to finish first
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- with:
- ref: auto # Checks out the auto branch
- fetch-depth: 0
-
- - name: Get SHA of origin/auto
- run: |
- git fetch origin auto
- AUTO_SHA=$(git rev-parse origin/auto)
- echo "Auto SHA: $AUTO_SHA"
- echo "AUTO_SHA=$AUTO_SHA" >> $GITHUB_ENV
-
- - name: Update Source Map URL
- run: |
- sed -i "s|sourceMappingURL=.*|sourceMappingURL=https://raw.githubusercontent.com/${{ github.repository }}/${AUTO_SHA}/dist/BlueMarble.user.js.map|" dist/BlueMarble.user.js
- echo "Updated sourceMappingURL:"
- grep 'sourceMappingURL=' dist/BlueMarble.user.js
-
- - name: Commit New Source Map URL
- run: |
- git config --global user.name "github-actions[bot]"
- git config --global user.email "github-actions[bot]@users.noreply.github.com"
- git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
- git add dist/BlueMarble.user.js
- git commit -m "Merge version; ${{ needs.build.outputs.MSG }}" || echo "No changes to commit"
- git push
-
- - name: Merge Auto -> Main
- run: |
- git fetch origin
- git checkout origin/main -B main
- git merge --squash origin/auto
- git commit -m "Release version; ${{ needs.build.outputs.MSG }}" || echo "No changes to commit"
- git push origin main
-
\ No newline at end of file
diff --git a/build/build.js b/build/build.js
index 6d0e427..991376c 100644
--- a/build/build.js
+++ b/build/build.js
@@ -4,7 +4,6 @@
* 2. Bundle the JS files into one file (esbuild)
* 3. Bundle the CSS files into one file (esbuild)
* 4. Compress & obfuscate the bundled JS file (terner)
- * 5. Create a sourcemap
* @since 0.0.6
*/
@@ -55,23 +54,16 @@ const resultEsbuild = await esbuild.build({
platform: 'browser', // The platform the bundled code will be operating on
legalComments: 'inline', // What level of legal comments are preserved? (Hard: none, Soft: inline)
minify: false, // Should the code be minified?
- write: false, // Should we write the outfile?
- sourcemap: true,
+ write: false, // Should we write the outfile to the disk?
}).catch(() => process.exit(1));
// Retrieves the JS file and map file
const resultEsbuildJS = resultEsbuild.outputFiles.find(file => file.path.endsWith('.js'));
-const resultEsbuildMap = resultEsbuild.outputFiles.find(file => file.path.endsWith('.map'));
// Obfuscates the JS file
let resultTerser = await terser.minify(resultEsbuildJS.text, {
- sourceMap: {
- //content: resultEsbuildMap.text, // The esbundle sourcemap
- filename: 'BlueMarble.user.js', // The file to make a sourcemap for
- url: ' ' // (This value is intentional) The sourcemap url to point to.
- },
mangle: {
- toplevel: true, // Obfuscate top-level class/function names
+ //toplevel: true, // Obfuscate top-level class/function names
keep_classnames: false, // Should class names be preserved?
keep_fnames: false, // Should function names be preserved?
reserved: [], // List of keywords to preserve
@@ -83,11 +75,14 @@ let resultTerser = await terser.minify(resultEsbuildJS.text, {
},
format: {
comments: 'some' // Save legal comments
+ },
+ compress: {
+ dead_code: isGitHub, // Should unreachable code be removed?
+ drop_console: isGitHub, // Should console code be removed?
+ drop_debugger: isGitHub, // SHould debugger code be removed?
+ passes: 2 // How many times terser will compress the code
}
});
-// Creates the sourcemap file
-fs.writeFileSync('dist/BlueMarble.user.js.map', resultTerser.map.replace(`"sources":["0"]`, `"sources":["BlueMarble.user.js"]`), 'utf8');
-
// Adds the banner
fs.writeFileSync('dist/BlueMarble.user.js', metaContent + resultTerser.code, 'utf8');
\ No newline at end of file
diff --git a/dist/BlueMarble.user.js b/dist/BlueMarble.user.js
index c4b7e78..e5f1a0a 100644
--- a/dist/BlueMarble.user.js
+++ b/dist/BlueMarble.user.js
@@ -21,4 +21,4 @@
// License --> https://www.mozilla.org/en-US/MPL/2.0/
(()=>{var t,e,s=t=>{throw TypeError(t)},n=(t,e,n)=>(((t,e,n)=>{e.has(t)||s("Cannot "+n)})(t,e,"access private method"),n);t=new WeakSet,e=function(t,e={},s={}){const n=document.createElement(t);this.t?(this.i.appendChild(n),this.o.push(this.i),this.i=n):(this.t=n,this.i=n);for(const[t,s]of Object.entries(e))n[t]=s;for(const[t,e]of Object.entries(s))n[t]=e;return n};var i=class{static h(t){const e=document.createElement("div");return e.textContent=t,e.innerHTML}},o=GM_info.script.name.toString(),a=GM_info.script.version.toString();!function(t){const e=document.createElement("script");e.textContent=`(${t})();`,document.documentElement.appendChild(e),e.remove()}(()=>{const t=window.fetch;window.fetch=async function(...e){const s=await t.apply(this,e),n=s.clone();if((n.headers.get("content-type")||"").includes("application/json")){let t=(e[0]instanceof Request?e[0]?.url:e[0])||"ignore";console.log(`Sending JSON message about endpoint "${t}"`),n.json().then(e=>{window.postMessage({source:"blue-marble",endpoint:t,jsonData:e},"*")}).catch(t=>{console.error("BM - Failed to parse JSON:",t)})}return s}});var r=GM_getResourceText("CSS-BM-File");GM_addStyle(r);var c=document.createElement("link");c.href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap",c.rel="preload",c.as="style",c.onload=function(){this.onload=null,this.rel="stylesheet"},document.head.appendChild(c);new class{constructor(){this.l=null,this.u=null,this.m="#bm-display-coords"}p(t){return this.u=t,this.l=new MutationObserver(t=>{for(const e of t)for(const t of e.addedNodes)t instanceof HTMLElement&&t.matches?.(this.m)}),this}v(){return this.l}observe(t,e=!1,s=!1){t.observe(this.u,{childList:e,subtree:s})}};var h=new class{constructor(e,n){var i,o,a;i=this,(o=t).has(i)?s("Cannot add the same private member more than once"):o instanceof WeakSet?o.add(i):o.set(i,a),this.name=e,this.version=n,this.$=null,this.M="bm-output-status",this.t=null,this.i=null,this.o=[]}C(t){this.$=t}T(){return this.o.length>0&&(this.i=this.o.pop()),this}k(t){t.appendChild(this.t),this.t=null,this.i=null,this.o=[]}N(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"div",{},s)),this}S(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"p",{},s)),this}I(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"img",{},s)),this}H(s,i={},o=()=>{}){return o(this,n(this,t,e).call(this,"h"+s,{},i)),this}B(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"hr",{},s)),this}L(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"br",{},s)),this}D(s={},i=()=>{}){const o=n(this,t,e).call(this,"label",{textContent:s.textContent??""});delete s.textContent;const a=n(this,t,e).call(this,"input",{type:"checkbox"},s);return o.insertBefore(a,o.firstChild),this.T(),i(this,o,a),this}O(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"button",{},s)),this}P(s={},i=()=>{}){const o=s.title??s.textContent??"Help: No info";delete s.textContent,s.title=`Help: ${o}`;const a={textContent:"?",className:"bm-help",onclick:()=>{this.R(this.M,o)}};return i(this,n(this,t,e).call(this,"button",a,s)),this}j(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"input",{},s)),this}F(s={},i=()=>{}){const o=s.textContent??"";delete s.textContent;const a=n(this,t,e).call(this,"div"),r=n(this,t,e).call(this,"input",{type:"file",style:"display: none;"},s);this.T();const c=n(this,t,e).call(this,"button",{textContent:o});return this.T(),this.T(),c.addEventListener("click",()=>{r.click()}),r.addEventListener("change",()=>{c.style.maxWidth=`${c.offsetWidth}px`,r.files.length>0?c.textContent=r.files[0].name:c.textContent=o}),i(this,a,r,c),this}G(s={},i=()=>{}){return i(this,n(this,t,e).call(this,"textarea",{},s)),this}R(t,e,s=!1){const n=document.getElementById(t.replace(/^#/,""));n&&(n instanceof HTMLInputElement?n.value=e:s?n.textContent=e:n.innerHTML=e)}U(t,e){let s,n=!1,i=0;t=document.querySelector("#"==t?.[0]?t:"#"+t),e=document.querySelector("#"==e?.[0]?e:"#"+e),t&&e?(e.addEventListener("mousedown",function(o){n=!0,s=o.clientX-t.getBoundingClientRect().left,i=o.clientY-t.getBoundingClientRect().top,document.body.style.userSelect="none",e.classList.add("dragging")}),e.addEventListener("touchstart",function(o){n=!0;const a=o?.touches?.[0];a&&(s=a.clientX-t.getBoundingClientRect().left,i=a.clientY-t.getBoundingClientRect().top,document.body.style.userSelect="none",e.classList.add("dragging"))},{passive:!1}),document.addEventListener("mousemove",function(e){n&&(t.style.left=e.clientX-s+"px",t.style.top=e.clientY-i+"px",t.style.right="")}),document.addEventListener("touchmove",function(e){if(n){const n=e?.touches?.[0];if(!n)return;t.style.left=n.clientX-s+"px",t.style.top=n.clientY-i+"px",e.preventDefault()}},{passive:!1}),document.addEventListener("mouseup",function(){n=!1,document.body.style.userSelect="",e.classList.remove("dragging")}),document.addEventListener("touchend",function(){n=!1,document.body.style.userSelect="",e.classList.remove("dragging")}),document.addEventListener("touchcancel",function(){n=!1,document.body.style.userSelect="",e.classList.remove("dragging")})):this.W(`Can not drag! ${t?"":"moveMe"} ${t||e?"":"and "}${e?"":"iMoveThings "}was not found!`)}W(t){(0,console.error)(`${this.name}: ${t}`),this.R(this.M,"Error: "+t,!0)}}(o,a),l=new class{X(t,e){return[parseInt(t[0])%4*1e3+parseInt(e[0]),parseInt(t[1])%4*1e3+parseInt(e[1])]}},d=new class{constructor(t){this.Y=t,this._=!1,this.q=[]}J(t){window.addEventListener("message",e=>{const s=e.data,n=s.jsonData;if(!s||"blue-marble"!==s.source)return;const o=s.endpoint.split("?")[0].split("/").filter(t=>t&&isNaN(Number(t))).pop();switch(console.log(`Recieved message about "${o}"`),o){case"me":if(n.status&&"2"!=n.status?.toString()[0])return void t.W("The game is down!\nCould not fetch userdata.");const e=Math.ceil(Math.pow(Math.floor(n.level)*Math.pow(30,.65),1/.65)-n.pixelsPainted),o=console.log;o(n),o(n?.droplets),t.R("bm-user-name",`Username: ${i.h(n.name)}`),t.R("bm-user-droplets",`Droplets: ${(new Intl.NumberFormat).format(n.droplets)}`),t.R("bm-user-nextlevel",`Next level in ${(new Intl.NumberFormat).format(e)} pixel${1==e?"":"s"}`);break;case"pixel":const a=s.endpoint.split("?")[0].split("/").filter(t=>t&&!isNaN(Number(t))),r=new URLSearchParams(s.endpoint.split("?")[1]),c=[r.get("x"),r.get("y")];this.q=[...a,...c];const h=this.Y.X(a,c),l=document.querySelectorAll("span");for(const t of l)if(t.textContent.trim().includes(`${h[0]}, ${h[1]}`)){let e=document.querySelector("#bm-display-coords");const s=`(Tl X: ${a[0]}, Tl Y: ${a[1]}, Px X: ${c[0]}, Px Y: ${c[1]})`;e?e.textContent=s:(e=document.createElement("span"),e.id="bm-display-coords",e.textContent=s,e.style="margin-left: calc(var(--spacing)*3); font-size: small;",t.parentNode.parentNode.parentNode.insertAdjacentElement("afterend",e))}break;case"robots":this._="false"==n.userscript?.toString().toLowerCase()}})}}(l);h.C(d),h.N({id:"bm-overlay",style:"top: 10px; right: 75px;"}).N({id:"bm-contain-header"}).N({id:"bm-bar-drag"}).T().I({alt:"Blue Marble Icon",src:"https://raw.githubusercontent.com/SwingTheVine/Wplace-BlueMarble/main/src/assets/Favicon.png"}).T().H(1,{textContent:o}).T().T().B().T().N({id:"bm-contain-userinfo"}).S({id:"bm-user-name",textContent:"Username:"}).T().S({id:"bm-user-droplets",textContent:"Droplets:"}).T().S({id:"bm-user-nextlevel",textContent:"Next level in..."}).T().T().B().T().N({id:"bm-contain-automation"}).D({id:"bm-input-stealth",textContent:"Stealth",checked:!0}).T().P({title:"Waits for the website to make requests, instead of sending requests."}).T().L().T().D({id:"bm-input-possessed",textContent:"Possessed",checked:!0}).T().P({title:"Controls the website as if it were possessed."}).T().L().T().N({id:"bm-contain-coords"}).O({id:"bm-button-coords",className:"bm-help",style:"margin-top: 0;",innerHTML:''},(t,e)=>{e.onclick=()=>{const e=t.$?.q;e?.[0]?(t.R("bm-input-tx",e?.[0]||""),t.R("bm-input-ty",e?.[1]||""),t.R("bm-input-px",e?.[2]||""),t.R("bm-input-py",e?.[3]||"")):t.W("Coordinates are malformed! Did you try clicking on the canvas first?")}}).T().j({type:"number",id:"bm-input-tx",placeholder:"Tl X",min:0,max:2047,step:1}).T().j({type:"number",id:"bm-input-ty",placeholder:"Tl Y",min:0,max:2047,step:1}).T().j({type:"number",id:"bm-input-px",placeholder:"Px X",min:0,max:2047,step:1}).T().j({type:"number",id:"bm-input-py",placeholder:"Px Y",min:0,max:2047,step:1}).T().T().F({id:"bm-input-file-template",textContent:"Upload Template"}).T().N({id:"bm-contain-buttons"}).O({id:"bm-button-enable",textContent:"Enable"}).T().O({id:"bm-button-disable",textContent:"Disable"}).T().T().G({id:h.M,placeholder:`Status: Sleeping...\nVersion: ${a}`,readOnly:!0}).T().T().k(document.body),h.U("#bm-overlay","#bm-bar-drag"),d.J(h),console.log(`${o} (${a}) userscript has loaded!`)})();
-//# sourceMappingURL=https://raw.githubusercontent.com/SwingTheVine/Wplace-BlueMarble/38feac668720c2ddaba54a39cb294983f53b7a83/dist/BlueMarble.user.js.map
\ No newline at end of file
+//# sourceMappingURL=https://raw.githubusercontent.com/SwingTheVine/Wplace-BlueMarble/38feac668720c2ddaba54a39cb294983f53b7a83/dist/BlueMarble.user.js.map
diff --git a/dist/BlueMarble.user.js.map b/dist/BlueMarble.user.js.map
deleted file mode 100644
index f165dec..0000000
--- a/dist/BlueMarble.user.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"BlueMarble.user.js","names":["_Overlay_instances","createElement_fn","__typeError","msg","TypeError","__privateMethod","obj","member","method","has","__accessCheck","WeakSet","tag","properties","additionalProperties","element","document","createElement","this","overlay","currentParent","appendChild","parentStack","push","property","value","Object","entries","Utils","escapeHTML","text","div","textContent","innerHTML","name","GM_info","script","toString","version","fn","documentElement","remove","inject","originalFetch","window","fetch","async","args","response","apply","cloned","clone","headers","get","includes","endpointName","Request","url","console","log","json","then","jsonData","postMessage","source","endpoint","catch","err","error","cssOverlay","GM_getResourceText","GM_addStyle","stylesheetLink","href","rel","as","onload","head","constructor","observerBody","observerBodyTarget","targetDisplayCoords","createObserverBody","target","MutationObserver","mutations","mutation","node","addedNodes","HTMLElement","matches","getObserverBody","observe","observer","watchChildList","watchSubtree","childList","subtree","name2","version2","add","set","apiHandler","outputStatusId","setApiHandler","apiHandler2","buildElement","length","pop","buildOverlay","parent","addDiv","callback","call","addP","addImg","addHeader","level","addHr","addBr","addCheckbox","label","checkbox","type","insertBefore","firstChild","addButton","addButtonHelp","tooltip","className","onclick","updateInnerHTML","addInput","addInputFile","container","input","style","button","addEventListener","click","maxWidth","offsetWidth","files","addTextarea","id","html","doSafe","getElementById","replace","HTMLInputElement","handleDrag","moveMe","iMoveThings","offsetX","isDragging","offsetY","querySelector","event","clientX","getBoundingClientRect","left","clientY","top","body","userSelect","classList","touch","touches","passive","right","preventDefault","handleDisplayError","consoleError","coordsHandler","serverTPtoDisplayTP","tile","pixel","parseInt","coordsHandler2","disableAll","coordsTilePixel","spontaneousResponseListener","overlay2","data","dataJSON","endpointText","split","filter","s","isNaN","Number","nextLevelPixels","Math","ceil","pow","floor","clog","droplets","Intl","NumberFormat","format","coordsTile","payloadExtractor","URLSearchParams","coordsPixel","displayTP","spanElements","querySelectorAll","trim","displayCoords","parentNode","insertAdjacentElement","toLowerCase","alt","src","checked","title","instance","coords","placeholder","min","max","step","readOnly"],"sources":["BlueMarble.user.js"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
index b8723e6..0ccbd87 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -35,7 +35,7 @@
-
+
diff --git a/package-lock.json b/package-lock.json
index 06477cf..2cc0ffb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "wplace-bluemarble",
- "version": "0.50.4",
+ "version": "0.50.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "wplace-bluemarble",
- "version": "0.50.4",
+ "version": "0.50.7",
"devDependencies": {
"esbuild": "^0.25.0",
"terser": "^5.43.1"
diff --git a/src/apiHandler.js b/src/apiHandler.js
index 1a078d6..2b519ce 100644
--- a/src/apiHandler.js
+++ b/src/apiHandler.js
@@ -57,10 +57,6 @@ export default class ApiHandler {
const nextLevelPixels = Math.ceil(Math.pow(Math.floor(dataJSON['level']) * Math.pow(30, 0.65), (1/0.65)) - dataJSON['pixelsPainted']); // Calculates pixels to the next level
- const clog = console.log;
- clog(dataJSON);
- clog(dataJSON?.droplets);
-
overlay.updateInnerHTML('bm-user-name', `Username: ${Utils.escapeHTML(dataJSON['name'])}`); // Updates the text content of the username field
overlay.updateInnerHTML('bm-user-droplets', `Droplets: ${new Intl.NumberFormat().format(dataJSON['droplets'])}`); // Updates the text content of the droplets field
overlay.updateInnerHTML('bm-user-nextlevel', `Next level in ${new Intl.NumberFormat().format(nextLevelPixels)} pixel${nextLevelPixels == 1 ? '' : 's'}`); // Updates the text content of the next level field