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

rusackas 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 76a27d5360e chore(deps): bump d3-format from 1.4.5 to 3.1.2 in 
/superset-frontend/packages/superset-ui-core (#37442)
76a27d5360e is described below

commit 76a27d5360e05f12e47f39803f872b64df8c7b36
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
AuthorDate: Fri Feb 6 23:42:39 2026 -0800

    chore(deps): bump d3-format from 1.4.5 to 3.1.2 in 
/superset-frontend/packages/superset-ui-core (#37442)
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] 
<49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Evan Rusackas <[email protected]>
    Co-authored-by: Claude Opus 4.5 <[email protected]>
---
 superset-frontend/jest.config.js                           |  2 +-
 superset-frontend/package-lock.json                        | 11 ++++++++++-
 superset-frontend/packages/superset-ui-core/package.json   |  2 +-
 .../superset-ui-core/src/number-format/D3FormatConfig.ts   |  1 +
 .../src/number-format/factories/createD3NumberFormatter.ts | 12 +++---------
 .../factories/createSiAtMostNDigitFormatter.ts             |  6 ++++--
 .../number-format/factories/createSmartNumberFormatter.ts  | 10 ++++++----
 .../factories/createD3NumberFormatter.test.ts              | 14 ++++++++++++++
 .../factories/createSiAtMostNDigitFormatter.test.ts        |  6 ++++++
 .../factories/createSmartNumberFormatter.test.ts           |  5 +++++
 10 files changed, 51 insertions(+), 18 deletions(-)

diff --git a/superset-frontend/jest.config.js b/superset-frontend/jest.config.js
index 44ae74b3de4..6fbccc4b303 100644
--- a/superset-frontend/jest.config.js
+++ b/superset-frontend/jest.config.js
@@ -65,7 +65,7 @@ module.exports = {
   ],
   coverageReporters: ['lcov', 'json-summary', 'html', 'text'],
   transformIgnorePatterns: [
-    
'node_modules/(?!d3-(array|interpolate|color|time|scale|time-format)|internmap|@mapbox/tiny-sdf|remark-gfm|(?!@ngrx|(?!deck.gl)|d3-scale)|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|uuid|@rjsf/*.|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|unified|unist-.*|hast-
 [...]
+    
'node_modules/(?!d3-(array|interpolate|color|time|scale|time-format|format)|internmap|@mapbox/tiny-sdf|remark-gfm|(?!@ngrx|(?!deck.gl)|d3-scale)|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|uuid|@rjsf/*.|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|unified|unist-.
 [...]
   ],
   preset: 'ts-jest',
   transform: {
diff --git a/superset-frontend/package-lock.json 
b/superset-frontend/package-lock.json
index 1a97f933ab2..3d8ca618c2b 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -63696,7 +63696,7 @@
         "classnames": "^2.5.1",
         "core-js": "^3.48.0",
         "csstype": "^3.2.3",
-        "d3-format": "^1.3.2",
+        "d3-format": "^3.1.2",
         "d3-interpolate": "^3.0.1",
         "d3-scale": "^4.0.2",
         "d3-time": "^3.1.0",
@@ -63843,6 +63843,15 @@
       "integrity": 
"sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==",
       "license": "BSD-3-Clause"
     },
+    "packages/superset-ui-core/node_modules/d3-format": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz";,
+      "integrity": 
"sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "packages/superset-ui-core/node_modules/d3-scale": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz";,
diff --git a/superset-frontend/packages/superset-ui-core/package.json 
b/superset-frontend/packages/superset-ui-core/package.json
index c8bc4627b1d..1fec0042d74 100644
--- a/superset-frontend/packages/superset-ui-core/package.json
+++ b/superset-frontend/packages/superset-ui-core/package.json
@@ -35,7 +35,7 @@
     "classnames": "^2.5.1",
     "csstype": "^3.2.3",
     "core-js": "^3.48.0",
-    "d3-format": "^1.3.2",
+    "d3-format": "^3.1.2",
     "dayjs": "^1.11.19",
     "d3-interpolate": "^3.0.1",
     "d3-scale": "^4.0.2",
diff --git 
a/superset-frontend/packages/superset-ui-core/src/number-format/D3FormatConfig.ts
 
b/superset-frontend/packages/superset-ui-core/src/number-format/D3FormatConfig.ts
index 4dc84f8d843..0f3e7db1461 100644
--- 
a/superset-frontend/packages/superset-ui-core/src/number-format/D3FormatConfig.ts
+++ 
b/superset-frontend/packages/superset-ui-core/src/number-format/D3FormatConfig.ts
@@ -23,4 +23,5 @@ export const DEFAULT_D3_FORMAT: FormatLocaleDefinition = {
   thousands: ',',
   grouping: [3],
   currency: ['$', ''],
+  minus: '-', // Use ASCII hyphen for backward compatibility (d3-format v3 
defaults to Unicode minus sign)
 };
diff --git 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createD3NumberFormatter.ts
 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createD3NumberFormatter.ts
index b6e0b8c4d5e..2c9b3927547 100644
--- 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createD3NumberFormatter.ts
+++ 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createD3NumberFormatter.ts
@@ -16,14 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import {
-  format as d3Format,
-  formatLocale,
-  FormatLocaleDefinition,
-} from 'd3-format';
+import { formatLocale, FormatLocaleDefinition } from 'd3-format';
 import { isRequired } from '../../utils';
 import NumberFormatter from '../NumberFormatter';
 import { NumberFormatFunction } from '../types';
+import { DEFAULT_D3_FORMAT } from '../D3FormatConfig';
 
 export default function createD3NumberFormatter(config: {
   description?: string;
@@ -42,10 +39,7 @@ export default function createD3NumberFormatter(config: {
   let isInvalid = false;
 
   try {
-    formatFunc =
-      typeof locale === 'undefined'
-        ? d3Format(formatString)
-        : formatLocale(locale).format(formatString);
+    formatFunc = formatLocale(locale ?? 
DEFAULT_D3_FORMAT).format(formatString);
   } catch (error) {
     formatFunc = value => `${value} (Invalid format: ${formatString})`;
     isInvalid = true;
diff --git 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSiAtMostNDigitFormatter.ts
 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSiAtMostNDigitFormatter.ts
index b8af708fb7a..86dc2c399cc 100644
--- 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSiAtMostNDigitFormatter.ts
+++ 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSiAtMostNDigitFormatter.ts
@@ -17,8 +17,9 @@
  * under the License.
  */
 
-import { format as d3Format } from 'd3-format';
+import { formatLocale } from 'd3-format';
 import NumberFormatter from '../NumberFormatter';
+import { DEFAULT_D3_FORMAT } from '../D3FormatConfig';
 
 export default function createSiAtMostNDigitFormatter(
   config: {
@@ -29,7 +30,8 @@ export default function createSiAtMostNDigitFormatter(
   } = {},
 ) {
   const { description, n = 3, id, label } = config;
-  const siFormatter = d3Format(`.${n}s`);
+  const locale = formatLocale(DEFAULT_D3_FORMAT);
+  const siFormatter = locale.format(`.${n}s`);
 
   return new NumberFormatter({
     description,
diff --git 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSmartNumberFormatter.ts
 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSmartNumberFormatter.ts
index 7bb2da9c890..063b692fa85 100644
--- 
a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSmartNumberFormatter.ts
+++ 
b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createSmartNumberFormatter.ts
@@ -17,13 +17,15 @@
  * under the License.
  */
 
-import { format as d3Format } from 'd3-format';
+import { formatLocale } from 'd3-format';
 import NumberFormatter from '../NumberFormatter';
 import NumberFormats from '../NumberFormats';
+import { DEFAULT_D3_FORMAT } from '../D3FormatConfig';
 
-const siFormatter = d3Format(`.3~s`);
-const float2PointFormatter = d3Format(`.2~f`);
-const float4PointFormatter = d3Format(`.4~f`);
+const locale = formatLocale(DEFAULT_D3_FORMAT);
+const siFormatter = locale.format(`.3~s`);
+const float2PointFormatter = locale.format(`.2~f`);
+const float4PointFormatter = locale.format(`.4~f`);
 
 function formatValue(value: number) {
   if (value === 0) {
diff --git 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
index e438167a30d..677bdd403d7 100644
--- 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
+++ 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createD3NumberFormatter.test.ts
@@ -85,4 +85,18 @@ describe('createD3NumberFormatter(config)', () => {
       expect(formatter(200)).toEqual('€200.00');
     });
   });
+  describe('negative numbers', () => {
+    it('uses ASCII hyphen-minus (U+002D) for negative numbers, not Unicode 
minus (U+2212)', () => {
+      const formatter = createD3NumberFormatter({ formatString: ',d' });
+      const result = formatter(-1234);
+      // Verify the result contains ASCII hyphen-minus (char code 45), not 
Unicode minus (char code 8722)
+      // This is important for backward compatibility after d3-format v3 
upgrade
+      expect(result).toEqual('-1,234');
+      expect(result.charCodeAt(0)).toEqual(45); // ASCII hyphen-minus
+    });
+    it('formats negative decimals correctly', () => {
+      const formatter = createD3NumberFormatter({ formatString: ',.2f' });
+      expect(formatter(-1234.5)).toEqual('-1,234.50');
+    });
+  });
 });
diff --git 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSiAtMostNDigitFormatter.test.ts
 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSiAtMostNDigitFormatter.test.ts
index 3d9ddf24b5b..30d6b3a6b16 100644
--- 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSiAtMostNDigitFormatter.test.ts
+++ 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSiAtMostNDigitFormatter.test.ts
@@ -27,6 +27,12 @@ describe('createSiAtMostNDigitFormatter({ n })', () => {
     const formatter = createSiAtMostNDigitFormatter({ n: 4 });
     expect(formatter).toBeInstanceOf(NumberFormatter);
   });
+  it('uses ASCII hyphen-minus (U+002D) for negative numbers, not Unicode minus 
(U+2212)', () => {
+    // This is important for backward compatibility after d3-format v3 upgrade
+    const formatter = createSiAtMostNDigitFormatter({ n: 3 });
+    const result = formatter(-1000);
+    expect(result.charCodeAt(0)).toBe(45); // ASCII hyphen-minus
+  });
   it('when n is specified, it formats number in SI format with at most n 
significant digits', () => {
     const formatter = createSiAtMostNDigitFormatter({ n: 2 });
     expect(formatter(10)).toBe('10');
diff --git 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSmartNumberFormatter.test.ts
 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSmartNumberFormatter.test.ts
index a322203173f..427b096302a 100644
--- 
a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSmartNumberFormatter.test.ts
+++ 
b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createSmartNumberFormatter.test.ts
@@ -66,6 +66,11 @@ describe('createSmartNumberFormatter(options)', () => {
       });
     });
     describe('for negative numbers', () => {
+      it('uses ASCII hyphen-minus (U+002D), not Unicode minus (U+2212)', () => 
{
+        // This is important for backward compatibility after d3-format v3 
upgrade
+        const result = formatter(-1000);
+        expect(result.charCodeAt(0)).toBe(45); // ASCII hyphen-minus
+      });
       it('formats billion with B in stead of G', () => {
         expect(formatter(-1000000000)).toBe('-1B');
         expect(formatter(-4560000000)).toBe('-4.56B');

Reply via email to