diff --git a/components/play-runner/element.js b/components/play-runner/element.js index 06a6f3045..5f65d4113 100644 --- a/components/play-runner/element.js +++ b/components/play-runner/element.js @@ -119,6 +119,23 @@ export class MDNPlayRunner extends LitElement { // pass the uuid for postMessage isolation url.searchParams.set("uuid", subdomain); url.searchParams.set("state", state); + if (url.href.length > 8000) { + console.error(`OH NO! Playground URL is ${url.href.length} bytes`); + const { minify } = await import("terser"); + const minJs = await minify(code?.js || ""); + console.log(minJs.code); + const { state } = await compressAndBase64Encode( + JSON.stringify({ + html: code?.html || "", + css: code?.css || "", + js: minJs.code, + defaults: defaults, + theme: theme, + }), + ); + url.searchParams.set("state", state); + console.error(`Playground URL is now ${url.href.length} bytes`); + } this._subdomain = subdomain; this._src = url.href; this.dispatchEvent( diff --git a/package-lock.json b/package-lock.json index db11f3cfb..35bd4ea51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,8 @@ "open-editor": "^6.0.0", "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", - "source-map-support": "^0.5.21" + "source-map-support": "^0.5.21", + "terser": "^5.46.2" }, "bin": { "fred-server": "scripts/server.js", @@ -5403,7 +5404,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -5418,7 +5418,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -5428,7 +5427,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -5438,7 +5436,6 @@ "version": "0.3.11", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -5449,14 +5446,12 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -11038,7 +11033,6 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -30756,10 +30750,9 @@ } }, "node_modules/terser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", - "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", - "dev": true, + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -30843,7 +30836,6 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, "license": "MIT" }, "node_modules/text-decoder": { diff --git a/package.json b/package.json index fc0efe4cb..38f2b69e6 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,8 @@ "open-editor": "^6.0.0", "prism-svelte": "^0.5.0", "prismjs": "^1.29.0", - "source-map-support": "^0.5.21" + "source-map-support": "^0.5.21", + "terser": "^5.46.2" }, "devDependencies": { "@codemirror/autocomplete": "^6.20.1",