This is an automated email from the ASF dual-hosted git repository.
hainenber 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 613033b294b chore(build): replace external file-related deps with
native Node modules (#42939)
613033b294b is described below
commit 613033b294bb827ebbdfa662d99852c6c4459734
Author: Đỗ Trọng Hải <[email protected]>
AuthorDate: Thu Sep 24 22:17:02 2026 +0700
chore(build): replace external file-related deps with native Node modules
(#42939)
Signed-off-by: hainenber <[email protected]>
---
superset-frontend/package-lock.json | 24 ++++++++--
superset-frontend/package.json | 7 +--
.../packages/generator-superset/package.json | 1 -
.../generator-superset/test/plugin-chart.test.ts | 6 +--
superset-frontend/scripts/build.js | 21 ++++----
superset-frontend/scripts/copyAssets.js | 56 ----------------------
6 files changed, 38 insertions(+), 77 deletions(-)
diff --git a/superset-frontend/package-lock.json
b/superset-frontend/package-lock.json
index 8b34a3e8981..7a25297ee99 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -89,8 +89,6 @@
"dom-to-image-more": "^3.10.2",
"dom-to-pdf": "^0.3.2",
"echarts": "^6.1.0",
- "fast-glob": "^3.3.2",
- "fs-extra": "^11.4.0",
"fuse.js": "^7.5.0",
"geolib": "^3.3.14",
"geostyler": "^18.6.0",
@@ -8284,6 +8282,7 @@
"version": "2.1.5",
"resolved":
"https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity":
"sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
@@ -8297,6 +8296,7 @@
"version": "2.0.5",
"resolved":
"https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity":
"sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
@@ -8306,6 +8306,7 @@
"version": "1.2.8",
"resolved":
"https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity":
"sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
@@ -17991,6 +17992,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity":
"sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
@@ -22648,6 +22650,7 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity":
"sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -22771,6 +22774,7 @@
"version": "1.18.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
"integrity":
"sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+ "dev": true,
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
@@ -22937,6 +22941,7 @@
"version": "7.1.1",
"resolved":
"https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity":
"sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -23496,6 +23501,7 @@
"version": "11.4.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
"integrity":
"sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -24459,6 +24465,7 @@
"version": "5.1.2",
"resolved":
"https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity":
"sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
@@ -24702,6 +24709,7 @@
"version": "4.2.11",
"resolved":
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity":
"sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
"license": "ISC"
},
"node_modules/h3-js": {
@@ -26107,6 +26115,7 @@
"version": "2.1.1",
"resolved":
"https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity":
"sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -26169,6 +26178,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity":
"sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
@@ -26276,6 +26286,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity":
"sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
@@ -31058,6 +31069,7 @@
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity":
"sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"universalify": "^2.0.0"
@@ -33088,6 +33100,7 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity":
"sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
@@ -33666,6 +33679,7 @@
"version": "4.0.8",
"resolved":
"https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity":
"sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
@@ -37429,6 +37443,7 @@
"version": "1.2.3",
"resolved":
"https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity":
"sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -40158,6 +40173,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity":
"sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
"license": "MIT",
"engines": {
"iojs": ">=1.0.0",
@@ -40244,6 +40260,7 @@
"version": "1.2.0",
"resolved":
"https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity":
"sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
"funding": [
{
"type": "github",
@@ -43254,6 +43271,7 @@
"version": "5.0.1",
"resolved":
"https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity":
"sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
@@ -44263,6 +44281,7 @@
"version": "2.0.1",
"resolved":
"https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
"integrity":
"sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 10.0.0"
@@ -46772,7 +46791,6 @@
},
"devDependencies": {
"cross-env": "^10.1.0",
- "fs-extra": "^11.4.0",
"jest": "^30.5.1",
"yeoman-test": "^11.8.2"
},
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index 2a6471f2ac5..715a5f65231 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -52,8 +52,8 @@
"cover": "cross-env NODE_ENV=test
NODE_OPTIONS=\"--max-old-space-size=4096\" jest --coverage",
"dev": "webpack --mode=development --color --watch",
"dev-server": "cross-env NODE_ENV=development BABEL_ENV=development node
--max_old_space_size=4096
./node_modules/webpack-dev-server/bin/webpack-dev-server.js --mode=development",
- "format": "npm run _format --write",
- "format-check": "npm run _format --check",
+ "format": "npm run _format -- --write",
+ "format-check": "npm run _format -- --check",
"lint": "npx oxlint --config oxlint.json --quiet",
"lint:all": "npx oxlint --config oxlint.json && npm run type",
"lint-fix": "npx oxlint --config oxlint.json --fix --quiet",
@@ -66,7 +66,6 @@
"ensure-oxc": "echo 'OXC linter is ready' && npx oxlint --version",
"lint-stats": "node ./scripts/oxlint-metrics-uploader.js",
"plugins:build": "node ./scripts/build.js",
- "plugins:build-assets": "node ./scripts/copyAssets.js",
"plugins:create-conventional-version": "npm run prune && lerna version
--conventional-commits --create-release github --no-private --yes
--tag-version-prefix=\"plugins-and-packages-v\"",
"plugins:create-minor-version": "npm run prune && lerna version minor
--no-private --yes --tag-version-prefix=\"plugins-and-packages-v\"",
"plugins:create-patch-version": "npm run prune && lerna version patch
--no-private --yes --tag-version-prefix=\"plugins-and-packages-v\"",
@@ -167,8 +166,6 @@
"dom-to-image-more": "^3.10.2",
"dom-to-pdf": "^0.3.2",
"echarts": "^6.1.0",
- "fast-glob": "^3.3.2",
- "fs-extra": "^11.4.0",
"fuse.js": "^7.5.0",
"geolib": "^3.3.14",
"geostyler": "^18.6.0",
diff --git a/superset-frontend/packages/generator-superset/package.json
b/superset-frontend/packages/generator-superset/package.json
index 370541f3443..6699c1f9b1f 100644
--- a/superset-frontend/packages/generator-superset/package.json
+++ b/superset-frontend/packages/generator-superset/package.json
@@ -38,7 +38,6 @@
},
"devDependencies": {
"cross-env": "^10.1.0",
- "fs-extra": "^11.4.0",
"jest": "^30.5.1",
"yeoman-test": "^11.8.2"
},
diff --git
a/superset-frontend/packages/generator-superset/test/plugin-chart.test.ts
b/superset-frontend/packages/generator-superset/test/plugin-chart.test.ts
index 4687d27db5f..bdeea43bc5a 100644
--- a/superset-frontend/packages/generator-superset/test/plugin-chart.test.ts
+++ b/superset-frontend/packages/generator-superset/test/plugin-chart.test.ts
@@ -20,8 +20,7 @@
import { dirname, join } from 'path';
// @ts-ignore -- yeoman-test type resolution differs between local and Docker
environments
import helpers from 'yeoman-test';
-// @ts-ignore -- fs-extra/esm has no type declarations
-import { copySync } from 'fs-extra/esm';
+import { cpSync } from 'fs';
import { fileURLToPath } from 'url';
import pluginChartModule from '../generators/plugin-chart';
@@ -31,9 +30,10 @@ test('generator-superset:plugin-chart:creates files', async
() => {
.onTargetDirectory((dir: string) => {
// `dir` is the path to the new temporary directory
const generatorDirname = dirname(fileURLToPath(import.meta.url));
- copySync(
+ cpSync(
join(generatorDirname, '../generators/plugin-chart/templates'),
join(dir, 'unknown/templates'),
+ { recursive: true },
);
})
.withPrompts({
diff --git a/superset-frontend/scripts/build.js
b/superset-frontend/scripts/build.js
index ad3c8c696c6..6b0325ab257 100755
--- a/superset-frontend/scripts/build.js
+++ b/superset-frontend/scripts/build.js
@@ -25,7 +25,7 @@
*/
import { spawnSync } from 'node:child_process';
-import fastGlob from 'fast-glob';
+import { globSync } from 'node:fs';
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
@@ -61,26 +61,29 @@ function getPackages(packagePattern, tsOnly = false) {
// Find packages in both @superset-ui and @apache-superset scopes
const supersetUiPackages = [
...new Set(
- fastGlob
- .sync([
+ globSync(
+ [
`./node_modules/@superset-ui/${pattern}/src/**/*.${
tsOnly ? '{ts,tsx}' : '{ts,tsx,js,jsx}'
}`,
- ])
- .map(x => x.split('/')[3])
+ ],
+ { followSymlinks: true },
+ )
+ .map(x => x.split('/')[2])
.filter(x => !META_PACKAGES.has(x)),
),
];
const apachePackages = [
...new Set(
- fastGlob
- .sync([
+ globSync(
+ [
`./node_modules/@apache-superset/${pattern}/src/**/*.${
tsOnly ? '{ts,tsx}' : '{ts,tsx,js,jsx}'
}`,
- ])
- .map(x => x.split('/')[3]),
+ ],
+ { followSymlinks: true },
+ ).map(x => x.split('/')[2]),
),
];
diff --git a/superset-frontend/scripts/copyAssets.js
b/superset-frontend/scripts/copyAssets.js
deleted file mode 100644
index 7d37c33e18e..00000000000
--- a/superset-frontend/scripts/copyAssets.js
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env node
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-/* eslint-disable no-console */
-import { sync } from 'fast-glob';
-import { copy } from 'fs-extra';
-
-const pkgGlob = process.argv[2] || '*';
-
-const packages = sync([`{packages,plugins}/${pkgGlob}`], {
- onlyDirectories: true,
-});
-
-console.log('Copying asset files from package {src} to {lib,esm}...');
-packages.forEach(pkg => {
- const assets = sync([`${pkg}/src/**/*.{png,gif,jpg,css,geojson}`]);
- assets.forEach(filePath => {
- ['lib', 'esm']
- .map(dir => filePath.replace(`${pkg}/src`, `${pkg}/${dir}`))
- .forEach(newFilePath => {
- copy(filePath, newFilePath, err => {
- if (err) {
- console.error(err);
- }
- });
- });
- });
- if (assets.length > 0) {
- console.log(
- ` Copied ${assets.length
- .toString()
- .padStart(2)} asset files for ${pkg.replace(
- 'packages/superset-ui-',
- '',
- )}`,
- );
- }
-});