You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by kg...@apache.org on 2024/08/28 15:17:19 UTC

(superset) branch master updated: fix: Handle zstd encoding in webpack proxy config (#30034)

This is an automated email from the ASF dual-hosted git repository.

kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 75c500c9a5 fix: Handle zstd encoding in webpack proxy config (#30034)
75c500c9a5 is described below

commit 75c500c9a53ce503b8636761f17b5b63eb8ee8e2
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Wed Aug 28 17:17:12 2024 +0200

    fix: Handle zstd encoding in webpack proxy config (#30034)
---
 Dockerfile                                |   3 +-
 superset-frontend/package-lock.json       | 120 +++++++++++++++++++++++++++---
 superset-frontend/package.json            |   1 +
 superset-frontend/webpack.proxy-config.js |   3 +
 4 files changed, 117 insertions(+), 10 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index cd859490d3..ab41244654 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -31,7 +31,8 @@ RUN apt-get update -qq \
     && apt-get install \
         -yqq --no-install-recommends \
         build-essential \
-        python3
+        python3 \
+        zstd
 
 ENV BUILD_CMD=${NPM_BUILD_CMD} \
     PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json
index 1e5add2942..46931fce7d 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -135,6 +135,7 @@
         "rimraf": "^6.0.1",
         "rison": "^0.1.1",
         "scroll-into-view-if-needed": "^3.1.0",
+        "simple-zstd": "^1.4.2",
         "tinycolor2": "^1.4.2",
         "urijs": "^1.19.8",
         "use-event-callback": "^0.1.0",
@@ -22209,6 +22210,12 @@
       "version": "1.5.5",
       "license": "Apache-2.0"
     },
+    "node_modules/duplex-maker": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/duplex-maker/-/duplex-maker-1.0.0.tgz",
+      "integrity": "sha512-KoHuzggxg7f+vvjqOHfXxaQYI1POzBm+ah0eec7YDssZmbt6QFBI8d1nl5GQwAgR2f+VQCPvyvZtmWWqWuFtlA==",
+      "license": "MIT"
+    },
     "node_modules/duplexer": {
       "version": "0.1.2",
       "dev": true,
@@ -22223,7 +22230,6 @@
     },
     "node_modules/duplexify": {
       "version": "3.7.1",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "end-of-stream": "^1.0.0",
@@ -22408,7 +22414,6 @@
     },
     "node_modules/end-of-stream": {
       "version": "1.4.1",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "once": "^1.4.0"
@@ -29151,6 +29156,12 @@
         "node": ">=8"
       }
     },
+    "node_modules/is-zst": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-zst/-/is-zst-1.0.0.tgz",
+      "integrity": "sha512-ZA5lvshKAl8z30dX7saXLpVhpsq3d2EHK9uf7qtUjnOtdw4XBpAoWb2RvZ5kyoaebdoidnGI0g2hn9Z7ObPbww==",
+      "license": "MIT"
+    },
     "node_modules/isarray": {
       "version": "1.0.0",
       "license": "MIT"
@@ -42273,7 +42284,6 @@
     },
     "node_modules/peek-stream": {
       "version": "1.1.3",
-      "dev": true,
       "license": "MIT",
       "dependencies": {
         "buffer-from": "^1.0.0",
@@ -43168,6 +43178,19 @@
         "node": ">=8"
       }
     },
+    "node_modules/process-streams": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/process-streams/-/process-streams-1.0.3.tgz",
+      "integrity": "sha512-xkIaM5vYnyekB88WyET78YEqXiaJRy0xcvIdE22n+myhvBT7LlLmX6iAtq7jDvVH8CUx2rqQsd32JdRyJMV3NA==",
+      "funding": [
+        "https://www.paypal.com/donate/?hosted_button_id=GB656ZSAEQEXN",
+        "https://de.liberapay.com/nils.knappmeier/"
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "duplex-maker": "^1.0.0"
+      }
+    },
     "node_modules/process-warning": {
       "version": "1.0.0",
       "dev": true,
@@ -48078,6 +48101,41 @@
       "version": "0.3.2",
       "license": "MIT"
     },
+    "node_modules/simple-zstd": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/simple-zstd/-/simple-zstd-1.4.2.tgz",
+      "integrity": "sha512-kGYEvT33M5XfyQvvW4wxl3eKcWbdbCc1V7OZzuElnaXft0qbVzoIIXHXiCm3JCUki+MZKKmvjl8p2VGLJc5Y/A==",
+      "license": "MIT",
+      "dependencies": {
+        "is-zst": "^1.0.0",
+        "peek-stream": "^1.1.3",
+        "process-streams": "^1.0.1",
+        "through2": "^4.0.2"
+      }
+    },
+    "node_modules/simple-zstd/node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/simple-zstd/node_modules/through2": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+      "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+      "license": "MIT",
+      "dependencies": {
+        "readable-stream": "3"
+      }
+    },
     "node_modules/sinon": {
       "version": "18.0.0",
       "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz",
@@ -49070,7 +49128,6 @@
     },
     "node_modules/stream-shift": {
       "version": "1.0.3",
-      "dev": true,
       "license": "MIT"
     },
     "node_modules/streamx": {
@@ -73343,6 +73400,11 @@
     "draco3d": {
       "version": "1.5.5"
     },
+    "duplex-maker": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/duplex-maker/-/duplex-maker-1.0.0.tgz",
+      "integrity": "sha512-KoHuzggxg7f+vvjqOHfXxaQYI1POzBm+ah0eec7YDssZmbt6QFBI8d1nl5GQwAgR2f+VQCPvyvZtmWWqWuFtlA=="
+    },
     "duplexer": {
       "version": "0.1.2",
       "dev": true
@@ -73355,7 +73417,6 @@
     },
     "duplexify": {
       "version": "3.7.1",
-      "dev": true,
       "requires": {
         "end-of-stream": "^1.0.0",
         "inherits": "^2.0.1",
@@ -73498,7 +73559,6 @@
     },
     "end-of-stream": {
       "version": "1.4.1",
-      "dev": true,
       "requires": {
         "once": "^1.4.0"
       }
@@ -77821,6 +77881,11 @@
         "is-docker": "^2.0.0"
       }
     },
+    "is-zst": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-zst/-/is-zst-1.0.0.tgz",
+      "integrity": "sha512-ZA5lvshKAl8z30dX7saXLpVhpsq3d2EHK9uf7qtUjnOtdw4XBpAoWb2RvZ5kyoaebdoidnGI0g2hn9Z7ObPbww=="
+    },
     "isarray": {
       "version": "1.0.0"
     },
@@ -85783,7 +85848,6 @@
     },
     "peek-stream": {
       "version": "1.1.3",
-      "dev": true,
       "requires": {
         "buffer-from": "^1.0.0",
         "duplexify": "^3.5.0",
@@ -86274,6 +86338,14 @@
         "fromentries": "^1.2.0"
       }
     },
+    "process-streams": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/process-streams/-/process-streams-1.0.3.tgz",
+      "integrity": "sha512-xkIaM5vYnyekB88WyET78YEqXiaJRy0xcvIdE22n+myhvBT7LlLmX6iAtq7jDvVH8CUx2rqQsd32JdRyJMV3NA==",
+      "requires": {
+        "duplex-maker": "^1.0.0"
+      }
+    },
     "process-warning": {
       "version": "1.0.0",
       "dev": true
@@ -89377,6 +89449,37 @@
         }
       }
     },
+    "simple-zstd": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/simple-zstd/-/simple-zstd-1.4.2.tgz",
+      "integrity": "sha512-kGYEvT33M5XfyQvvW4wxl3eKcWbdbCc1V7OZzuElnaXft0qbVzoIIXHXiCm3JCUki+MZKKmvjl8p2VGLJc5Y/A==",
+      "requires": {
+        "is-zst": "^1.0.0",
+        "peek-stream": "^1.1.3",
+        "process-streams": "^1.0.1",
+        "through2": "^4.0.2"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.2",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+          "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "through2": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
+          "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
+          "requires": {
+            "readable-stream": "3"
+          }
+        }
+      }
+    },
     "sinon": {
       "version": "18.0.0",
       "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz",
@@ -90044,8 +90147,7 @@
       }
     },
     "stream-shift": {
-      "version": "1.0.3",
-      "dev": true
+      "version": "1.0.3"
     },
     "streamx": {
       "version": "2.18.0",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index 1c10bad2fb..17be2f3c1c 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -201,6 +201,7 @@
     "rimraf": "^6.0.1",
     "rison": "^0.1.1",
     "scroll-into-view-if-needed": "^3.1.0",
+    "simple-zstd": "^1.4.2",
     "tinycolor2": "^1.4.2",
     "urijs": "^1.19.8",
     "use-event-callback": "^0.1.0",
diff --git a/superset-frontend/webpack.proxy-config.js b/superset-frontend/webpack.proxy-config.js
index 29823144d4..c2070bb92b 100644
--- a/superset-frontend/webpack.proxy-config.js
+++ b/superset-frontend/webpack.proxy-config.js
@@ -17,6 +17,7 @@
  * under the License.
  */
 const zlib = require('zlib');
+const { ZSTDDecompress } = require('simple-zstd');
 
 const yargs = require('yargs');
 // eslint-disable-next-line import/no-extraneous-dependencies
@@ -127,6 +128,8 @@ function processHTML(proxyResponse, response) {
     uncompress = zlib.createBrotliDecompress();
   } else if (responseEncoding === 'deflate') {
     uncompress = zlib.createInflate();
+  } else if (responseEncoding === 'zstd') {
+    uncompress = ZSTDDecompress();
   }
   if (uncompress) {
     originalResponse.pipe(uncompress);