From fd7dbcdff6b4cec9efadfa4a3e290c397afa3a02 Mon Sep 17 00:00:00 2001
From: Timmy Willison
Date: Tue, 18 Feb 2025 14:52:04 -0500
Subject: [PATCH 01/11] Build: Upgrade jtr to 0.2.5
Closes gh-2332
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 56f60f34dd..5e8b700ff8 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"grunt-eslint": "24.0.1",
"grunt-git-authors": "3.2.0",
"grunt-html": "17.1.0",
- "jquery-test-runner": "0.2.1",
+ "jquery-test-runner": "0.2.5",
"load-grunt-tasks": "5.1.0",
"rimraf": "6.0.1"
},
From 302b488b9214e14830496578f7cf0aebcc33c132 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 3 Mar 2025 18:58:38 +0100
Subject: [PATCH 02/11] Build: Switch from UglifyJS to SWC minify, make the
minified file ES5
More recent UglifyJS versions have started converting regular functions to arrow
ones, making ES5 source file migrated to a ES2015+ minified one. We want to
avoid that even in 1.14.x as long as we keep the source file in ES5.
Closes gh-2335
Ref mishoo/UglifyJS#5967
Ref jquery/download.jqueryui.com#629
---
Gruntfile.js | 11 ++++-----
build/tasks/minify.js | 53 +++++++++++++++++++++++++++++++++++++++++++
package.json | 2 +-
3 files changed, 58 insertions(+), 8 deletions(-)
create mode 100644 build/tasks/minify.js
diff --git a/Gruntfile.js b/Gruntfile.js
index 334e4bb1ae..cc532b6e93 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -51,9 +51,6 @@ const cssFiles = [
// minified files
const minify = {
- options: {
- preserveComments: false
- },
main: {
options: {
banner: createBanner( uiFiles )
@@ -174,7 +171,7 @@ grunt.initConfig( {
}
},
- uglify: minify,
+ minify,
htmllint: {
good: {
options: {
@@ -403,9 +400,9 @@ grunt.registerTask( "lint", [
"csslint",
"htmllint"
] );
-grunt.registerTask( "build", [ "requirejs", "concat" ] );
+grunt.registerTask( "build", [ "requirejs", "concat", "minify:main" ] );
grunt.registerTask( "default", [ "lint", "build" ] );
-grunt.registerTask( "sizer", [ "requirejs:js", "uglify:main", "compare_size:all" ] );
-grunt.registerTask( "sizer_all", [ "requirejs:js", "uglify", "compare_size" ] );
+grunt.registerTask( "sizer", [ "requirejs:js", "minify:main", "compare_size:all" ] );
+grunt.registerTask( "sizer_all", [ "requirejs:js", "minify", "compare_size" ] );
};
diff --git a/build/tasks/minify.js b/build/tasks/minify.js
new file mode 100644
index 0000000000..6d83831ee3
--- /dev/null
+++ b/build/tasks/minify.js
@@ -0,0 +1,53 @@
+"use strict";
+
+const swc = require( "@swc/core" );
+
+module.exports = function( grunt ) {
+
+grunt.registerMultiTask( "minify", async function() {
+ const done = this.async();
+ const options = this.options();
+
+ for ( const file of this.files ) {
+ if ( file.src.length === 0 ) {
+ grunt.log.writeln(
+ `No source file found, skipping minification to "${ file.dest }".` );
+ continue;
+ }
+ if ( file.src.length !== 1 ) {
+ grunt.fail.warn( "Minifying multiple source files into one " +
+ "destination file not supported" );
+ }
+
+ const contents = grunt.file.read( file.src[ 0 ] );
+
+ const { code } = await swc.minify(
+ contents,
+ {
+ compress: {
+ ecma: 5,
+ hoist_funs: false,
+ loops: false
+ },
+ format: {
+ ecma: 5,
+ asciiOnly: true,
+ comments: false,
+ preamble: options.banner
+ },
+ inlineSourcesContent: false,
+ mangle: true,
+ module: false,
+ sourceMap: false
+ }
+ );
+
+ grunt.file.write( file.dest, code );
+
+ grunt.log.writeln( `File ${ file.dest } created.` );
+ }
+
+ done();
+} );
+
+};
diff --git a/package.json b/package.json
index 5e8b700ff8..c34bef799c 100644
--- a/package.json
+++ b/package.json
@@ -55,6 +55,7 @@
"jquery": ">=1.12.0 <5.0.0"
},
"devDependencies": {
+ "@swc/core": "1.11.5",
"commitplease": "3.2.0",
"eslint-config-jquery": "3.0.2",
"grunt": "1.6.1",
@@ -63,7 +64,6 @@
"grunt-contrib-concat": "2.1.0",
"grunt-contrib-csslint": "2.0.0",
"grunt-contrib-requirejs": "1.0.0",
- "grunt-contrib-uglify": "5.2.2",
"grunt-eslint": "24.0.1",
"grunt-git-authors": "3.2.0",
"grunt-html": "17.1.0",
From 1da395de2e6759dfe9a7a199b03a39365e30f16c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Mon, 3 Mar 2025 20:15:14 +0100
Subject: [PATCH 03/11] Build: Update ESLint to v9, migrate to flat config,
lint dist files
Dist files linting is limited to checking if they're proper ES5.
Closes gh-2336
---
.eslintignore | 4 -
.eslintrc.json | 21 -----
.github/workflows/node.js.yml | 7 +-
Gruntfile.js | 5 +-
demos/.eslintrc.json | 9 --
eslint.config.mjs | 162 ++++++++++++++++++++++++++++++++++
package.json | 3 +-
ui/.eslintrc.json | 42 ---------
ui/effect.js | 4 +-
ui/effects/effect-explode.js | 2 -
ui/widgets/accordion.js | 2 -
ui/widgets/datepicker.js | 10 +--
ui/widgets/progressbar.js | 2 -
ui/widgets/resizable.js | 2 +-
ui/widgets/selectmenu.js | 2 -
ui/widgets/tabs.js | 4 +-
16 files changed, 181 insertions(+), 100 deletions(-)
delete mode 100644 .eslintignore
delete mode 100644 .eslintrc.json
delete mode 100644 demos/.eslintrc.json
create mode 100644 eslint.config.mjs
delete mode 100644 ui/.eslintrc.json
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 5e992599f8..0000000000
--- a/.eslintignore
+++ /dev/null
@@ -1,4 +0,0 @@
-dist/**/*
-external/**/*
-tests/lib/vendor/**/*
-ui/vendor/**/*
diff --git a/.eslintrc.json b/.eslintrc.json
deleted file mode 100644
index e7d67eb0e5..0000000000
--- a/.eslintrc.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "root": true,
-
- "extends": "jquery",
-
- // Uncomment to find useless comment disable directives
- // "reportUnusedDisableDirectives": true,
-
- "parserOptions": {
- "ecmaVersion": 2018
- },
-
- "env": {
- "es6": true,
- "node": true
- },
-
- "rules": {
- "strict": [ "error", "global" ]
- }
-}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 6279223a35..eef7c86e73 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -49,12 +49,13 @@ jobs:
- name: Install npm dependencies
run: npm install
- - name: Lint
- run: npm run lint
-
- name: Build
run: npm run build
+ # Lint must happen after build as we lint generated files.
+ - name: Lint
+ run: npm run lint
+
- name: Test
run: |
npm run test:unit -- \
diff --git a/Gruntfile.js b/Gruntfile.js
index cc532b6e93..bbb71d33e5 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -204,9 +204,12 @@ grunt.initConfig( {
"ui/**/*.js",
"!ui/vendor/**/*.js",
"Gruntfile.js",
+ "dist/jquery-ui.js",
+ "dist/jquery-ui.min.js",
"build/**/*.js",
"tests/unit/**/*.js",
"tests/lib/**/*.js",
+ "!tests/lib/vendor/**/*.js",
"demos/**/*.js"
]
},
@@ -401,7 +404,7 @@ grunt.registerTask( "lint", [
"htmllint"
] );
grunt.registerTask( "build", [ "requirejs", "concat", "minify:main" ] );
-grunt.registerTask( "default", [ "lint", "build" ] );
+grunt.registerTask( "default", [ "build", "lint" ] );
grunt.registerTask( "sizer", [ "requirejs:js", "minify:main", "compare_size:all" ] );
grunt.registerTask( "sizer_all", [ "requirejs:js", "minify", "compare_size" ] );
diff --git a/demos/.eslintrc.json b/demos/.eslintrc.json
deleted file mode 100644
index 805ec8eb26..0000000000
--- a/demos/.eslintrc.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "root": true,
-
- "extends": "../ui/.eslintrc.json",
-
- "globals": {
- "require": true
- }
-}
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000000..4fb03f6b3e
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,162 @@
+import jqueryConfig from "eslint-config-jquery";
+import globals from "globals";
+
+export default [
+ {
+ ignores: [
+ "dist/**/*",
+ "!dist/jquery-ui.js",
+ "!dist/jquery-ui.min.js",
+ "external/**/*",
+ "tests/lib/vendor/**/*",
+ "ui/vendor/**/*"
+ ]
+ },
+
+ {
+ ignores: [ "dist/**/*" ],
+ rules: {
+ ...jqueryConfig.rules,
+ "no-unused-vars": [
+ "error",
+ {
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_"
+ }
+ ]
+ }
+ },
+
+ {
+ files: [ "Gruntfile.js" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "commonjs",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ strict: [ "error", "global" ]
+ }
+ },
+
+ {
+ files: [ "eslint.config.mjs" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "module",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ strict: [ "error", "global" ]
+ }
+ },
+
+ // Source, demos
+ {
+ files: [ "ui/**/*.js", "demos/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script",
+ globals: {
+ ...globals.browser,
+ ...globals.jquery,
+ define: false,
+ Globalize: false
+ }
+ },
+ rules: {
+ strict: [ "error", "function" ],
+
+ // The following rule is relaxed due to too many violations:
+ "no-unused-vars": [
+ "error",
+ {
+ args: "after-used",
+ argsIgnorePattern: "^_",
+ caughtErrorsIgnorePattern: "^_"
+ }
+ ],
+
+ // Too many violations:
+ camelcase: "off",
+ "no-nested-ternary": "off"
+ }
+ },
+ {
+ files: [ "ui/i18n/**/*.js" ],
+ rules: {
+
+ // We want to keep all the strings in separate single lines
+ "max-len": "off"
+ }
+ },
+
+ // Dist files
+ // For dist files, we don't include any jQuery rules on purpose.
+ // We just want to make sure the files are correct ES5.
+ {
+ files: [ "dist/jquery-ui.js", "dist/jquery-ui.min.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script"
+ },
+ linterOptions: {
+ reportUnusedDisableDirectives: "off"
+ }
+ },
+
+ // Build
+ {
+ files: [ "build/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: "latest",
+ sourceType: "commonjs",
+ globals: {
+ ...globals.node
+ }
+ },
+ rules: {
+ "no-implicit-globals": "error",
+ strict: [ "error", "global" ]
+ }
+ },
+
+ // Demos
+ {
+ files: [ "demos/**/*.js" ],
+ languageOptions: {
+ globals: {
+ require: true
+ }
+ }
+ },
+
+ // Tests
+ {
+ files: [ "tests/**/*.js" ],
+ languageOptions: {
+ ecmaVersion: 5,
+ sourceType: "script",
+ globals: {
+ ...globals.browser,
+ ...globals.jquery,
+ define: false,
+ Globalize: false,
+ QUnit: false,
+ require: true,
+ requirejs: true
+ }
+ },
+ "rules": {
+
+ // Too many violations:
+ "max-len": "off",
+ "no-unused-vars": "off",
+ strict: "off" // ideally, `[ "error", "function" ]`
+ }
+ }
+];
diff --git a/package.json b/package.json
index c34bef799c..00f9e07fef 100644
--- a/package.json
+++ b/package.json
@@ -58,13 +58,14 @@
"@swc/core": "1.11.5",
"commitplease": "3.2.0",
"eslint-config-jquery": "3.0.2",
+ "globals": "16.0.0",
"grunt": "1.6.1",
"grunt-bowercopy": "1.2.5",
"grunt-compare-size": "0.4.2",
"grunt-contrib-concat": "2.1.0",
"grunt-contrib-csslint": "2.0.0",
"grunt-contrib-requirejs": "1.0.0",
- "grunt-eslint": "24.0.1",
+ "grunt-eslint": "25.0.0",
"grunt-git-authors": "3.2.0",
"grunt-html": "17.1.0",
"jquery-test-runner": "0.2.5",
diff --git a/ui/.eslintrc.json b/ui/.eslintrc.json
deleted file mode 100644
index eaba81af2a..0000000000
--- a/ui/.eslintrc.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "root": true,
-
- "extends": "jquery",
-
- "parserOptions": {
- "ecmaVersion": 5
- },
-
- "env": {
- "browser": true,
- "jquery": true,
- "node": false
- },
-
- "rules": {
- "strict": [ "error", "function" ],
-
- // The following rule is relaxed due to too many violations:
- "no-unused-vars": [ "error", { "vars": "all", "args": "after-used" } ],
-
- // Too many violations:
- "camelcase": "off",
- "no-nested-ternary": "off"
- },
-
- "globals": {
- "define": false,
- "Globalize": false
- },
-
- "overrides": [
- {
- "files": [ "i18n/**/*.js" ],
- "rules": {
-
- // We want to keep all the strings in separate single lines
- "max-len": "off"
- }
- }
- ]
-}
diff --git a/ui/effect.js b/ui/effect.js
index bbbb733c3d..cb9ab80433 100644
--- a/ui/effect.js
+++ b/ui/effect.js
@@ -9,9 +9,7 @@
//>>label: Effects Core
//>>group: Effects
-/* eslint-disable max-len */
//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/category/effects-core/
//>>demos: https://jqueryui.com/effect/
@@ -320,7 +318,7 @@ if ( $.uiBackCompat === true ) {
try {
// eslint-disable-next-line no-unused-expressions
active.id;
- } catch ( e ) {
+ } catch ( _e ) {
active = document.body;
}
diff --git a/ui/effects/effect-explode.js b/ui/effects/effect-explode.js
index ed40833a89..da38b4d556 100644
--- a/ui/effects/effect-explode.js
+++ b/ui/effects/effect-explode.js
@@ -9,9 +9,7 @@
//>>label: Explode Effect
//>>group: Effects
-/* eslint-disable max-len */
//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/explode-effect/
//>>demos: https://jqueryui.com/effect/
diff --git a/ui/widgets/accordion.js b/ui/widgets/accordion.js
index ff6e4631da..43a50db831 100644
--- a/ui/widgets/accordion.js
+++ b/ui/widgets/accordion.js
@@ -9,9 +9,7 @@
//>>label: Accordion
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/accordion/
//>>demos: https://jqueryui.com/accordion/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/datepicker.js b/ui/widgets/datepicker.js
index 323723b893..029f255e87 100644
--- a/ui/widgets/datepicker.js
+++ b/ui/widgets/datepicker.js
@@ -1,4 +1,4 @@
-/* eslint-disable max-len, camelcase */
+/* eslint-disable max-len */
/*!
* jQuery UI Datepicker @VERSION
* https://jqueryui.com
@@ -535,7 +535,7 @@ $.extend( Datepicker.prototype, {
_getInst: function( target ) {
try {
return $.data( target, "datepicker" );
- } catch ( err ) {
+ } catch ( _err ) {
throw "Missing instance data for this datepicker";
}
},
@@ -768,7 +768,7 @@ $.extend( Datepicker.prototype, {
$.datepicker._updateAlternate( inst );
$.datepicker._updateDatepicker( inst );
}
- } catch ( err ) {
+ } catch ( _err ) {
}
}
return true;
@@ -1540,7 +1540,7 @@ $.extend( Datepicker.prototype, {
try {
date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
- } catch ( event ) {
+ } catch ( _err ) {
dates = ( noDefault ? "" : dates );
}
inst.selectedDay = date.getDate();
@@ -1569,7 +1569,7 @@ $.extend( Datepicker.prototype, {
try {
return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
offset, $.datepicker._getFormatConfig( inst ) );
- } catch ( e ) {
+ } catch ( _e ) {
// Ignore
}
diff --git a/ui/widgets/progressbar.js b/ui/widgets/progressbar.js
index 20e96440a0..ad5366adea 100644
--- a/ui/widgets/progressbar.js
+++ b/ui/widgets/progressbar.js
@@ -9,9 +9,7 @@
//>>label: Progressbar
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/progressbar/
//>>demos: https://jqueryui.com/progressbar/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js
index 6f1e0ebdec..0123152831 100644
--- a/ui/widgets/resizable.js
+++ b/ui/widgets/resizable.js
@@ -104,7 +104,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
el[ scroll ] = 1;
has = ( el[ scroll ] > 0 );
el[ scroll ] = 0;
- } catch ( e ) {
+ } catch ( _e ) {
// `el` might be a string, then setting `scroll` will throw
// an error in strict mode; ignore it.
diff --git a/ui/widgets/selectmenu.js b/ui/widgets/selectmenu.js
index f1b48fa603..749e334919 100644
--- a/ui/widgets/selectmenu.js
+++ b/ui/widgets/selectmenu.js
@@ -9,9 +9,7 @@
//>>label: Selectmenu
//>>group: Widgets
-/* eslint-disable max-len */
//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
-/* eslint-enable max-len */
//>>docs: https://api.jqueryui.com/selectmenu/
//>>demos: https://jqueryui.com/selectmenu/
//>>css.structure: ../../themes/base/core.css
diff --git a/ui/widgets/tabs.js b/ui/widgets/tabs.js
index 7b7907c327..49468feb39 100644
--- a/ui/widgets/tabs.js
+++ b/ui/widgets/tabs.js
@@ -73,10 +73,10 @@ $.widget( "ui.tabs", {
// Decoding may throw an error if the URL isn't UTF-8 (#9518)
try {
anchorUrl = decodeURIComponent( anchorUrl );
- } catch ( error ) {}
+ } catch ( _error ) {}
try {
locationUrl = decodeURIComponent( locationUrl );
- } catch ( error ) {}
+ } catch ( _error ) {}
return anchor.hash.length > 1 && anchorUrl === locationUrl;
};
From 1749a5f4151b3e63662ddc53549cb5b99da3567a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 14 Mar 2025 19:56:04 +0100
Subject: [PATCH 04/11] Build: Bump the github-actions group with 2 updates
Bumps the github-actions group with 2 updates: [github/codeql-action](https://github.com/github/codeql-action) and [actions/cache](https://github.com/actions/cache).
Closes gh-2334
Updates `github/codeql-action` from 3.28.8 to 3.28.10
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/dd746615b3b9d728a6a37ca2045b68ca76d4841a...b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d)
Updates `actions/cache` from 4.2.0 to 4.2.2
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/1bd1e32a3bdc45362d1e726936510720a7c30a57...d4323d4df104b026a6aa633fdb11d772146be0bf)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/codeql-analysis.yml | 6 +++---
.github/workflows/filestash.yml | 2 +-
.github/workflows/node.js.yml | 6 +++---
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index e7c145c0a6..cc842ea8e2 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -33,7 +33,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
+ uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
# Override language selection by uncommenting this and choosing your languages
# with:
# languages: go, javascript, csharp, python, cpp, java
@@ -41,7 +41,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
+ uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
# âšī¸ Command-line programs to run using the OS shell.
# đ https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -55,4 +55,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@dd746615b3b9d728a6a37ca2045b68ca76d4841a # v3.28.8
+ uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
diff --git a/.github/workflows/filestash.yml b/.github/workflows/filestash.yml
index 7716025a08..88c949ea42 100644
--- a/.github/workflows/filestash.yml
+++ b/.github/workflows/filestash.yml
@@ -25,7 +25,7 @@ jobs:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
+ uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index eef7c86e73..7614468f85 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -39,7 +39,7 @@ jobs:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
+ uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
@@ -84,7 +84,7 @@ jobs:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
+ uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
@@ -122,7 +122,7 @@ jobs:
node-version: ${{ env.NODE_VERSION }}
- name: Cache
- uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
+ uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ env.NODE_VERSION }}-npm-lock-${{ hashFiles('**/package-lock.json') }}
From ef28a5f57036e32a66e6d469e345d7376ecdaffc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Tue, 18 Mar 2025 09:35:16 +0100
Subject: [PATCH 05/11] Build: Remove an obsolete `test/.eslintrc.json` file
The file was erroneously left in during the migration to the flat config.
Closes gh-2340
Ref gh-2336
---
tests/.eslintrc.json | 26 --------------------------
1 file changed, 26 deletions(-)
delete mode 100644 tests/.eslintrc.json
diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json
deleted file mode 100644
index 714077182a..0000000000
--- a/tests/.eslintrc.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "parserOptions": {
- "ecmaVersion": 5
- },
-
- "env": {
- "browser": true,
- "jquery": true,
- "node": false
- },
-
- "rules": {
- // Too many violations:
- "max-len": "off",
- "no-unused-vars": "off",
- "strict": "off" // ideally, `[ "error", "function" ]`
- },
-
- "globals": {
- "define": false,
- "Globalize": false,
- "QUnit": false,
- "require": true,
- "requirejs": true
- }
-}
From 6843ced12e4051aefbee47cf87fa79794737eb8a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Go=C5=82=C4=99biowski-Owczarek?=
Date: Tue, 18 Mar 2025 11:45:00 +0100
Subject: [PATCH 06/11] Spinner: Drop dependency on jQuery Mousewheel
1. Listen to the native `wheel` event without depending on any wrapper plugins.
2. Keep listening to the `mousewheel` event for compatibility with projects
using the jQuery Mousewheel plugin but route it to the `wheel` handler.
Closes gh-2338
---
Gruntfile.js | 3 -
bower.json | 1 -
demos/spinner/currency.html | 2 +-
demos/spinner/decimal.html | 2 +-
demos/spinner/default.html | 2 +-
demos/spinner/latlong.html | 2 +-
demos/spinner/overflow.html | 2 +-
demos/spinner/time.html | 2 +-
external/jquery-mousewheel/LICENSE.txt | 20 --
.../jquery-mousewheel/jquery.mousewheel.js | 221 ------------------
tests/unit/spinner/core.js | 42 +++-
ui/widgets/spinner.js | 19 +-
12 files changed, 64 insertions(+), 254 deletions(-)
delete mode 100644 external/jquery-mousewheel/LICENSE.txt
delete mode 100644 external/jquery-mousewheel/jquery.mousewheel.js
diff --git a/Gruntfile.js b/Gruntfile.js
index bbb71d33e5..4f7dcc73e7 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -247,9 +247,6 @@ grunt.initConfig( {
"requirejs/require.js": "requirejs/require.js",
- "jquery-mousewheel/jquery.mousewheel.js": "jquery-mousewheel/jquery.mousewheel.js",
- "jquery-mousewheel/LICENSE.txt": "jquery-mousewheel/LICENSE.txt",
-
"jquery-simulate/jquery.simulate.js": "jquery-simulate/jquery.simulate.js",
"jquery-simulate/LICENSE.txt": "jquery-simulate/LICENSE.txt",
diff --git a/bower.json b/bower.json
index eec454dea0..3ed76cee9c 100644
--- a/bower.json
+++ b/bower.json
@@ -13,7 +13,6 @@
},
"devDependencies": {
"jquery-color": "3.0.0",
- "jquery-mousewheel": "3.1.12",
"jquery-simulate": "1.1.1",
"qunit": "2.19.4",
"requirejs": "2.1.14",
diff --git a/demos/spinner/currency.html b/demos/spinner/currency.html
index 4180b12e11..fa3744ba51 100644
--- a/demos/spinner/currency.html
+++ b/demos/spinner/currency.html
@@ -7,7 +7,7 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+