diff --git a/grunt_config.json b/grunt_config.json
index 77f19187..609f2068 100644
--- a/grunt_config.json
+++ b/grunt_config.json
@@ -32,7 +32,7 @@
"src": [
"<%= dirs.js.node_modules %>/jquery/dist/jquery.min.js",
"<%= dirs.js.node_modules %>/mousetrap/mousetrap.min.js",
- "<%= dirs.js.node_modules %>/moment/min/moment.min.js",
+ "<%= dirs.js.node_modules %>/luxon/build/global/luxon.min.js",
"<%= dirs.js.node_modules %>/clipboard/dist/clipboard.min.js",
"<%= dirs.js.node_modules %>/favico.js/favico-0.3.10.min.js",
"<%= dirs.js.node_modules %>/dropzone/dist/min/dropzone.min.js",
diff --git a/package-lock.json b/package-lock.json
index f0d9d3d8..9838d53e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -41,10 +41,11 @@
"html-loader": "^0.4.4",
"html-webpack-plugin": "^3.2.0",
"imports-loader": "^0.7.1",
- "jquery": "1.11.3",
+ "install": "^0.13.0",
+ "jquery": "^3.7.1",
"jshint": "^2.9.1-rc3",
+ "luxon": "^3.7.2",
"mark.js": "8.11.1",
- "moment": "^2.18.1",
"mousetrap": "^1.6.1",
"polymer-webpack-loader": "^2.0.1",
"raw-loader": "1.0.0-beta.0",
@@ -5888,6 +5889,15 @@
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true
},
+ "node_modules/install": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz",
+ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/internal-slot": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
@@ -6388,10 +6398,11 @@
"optional": true
},
"node_modules/jquery": {
- "version": "1.11.3",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz",
- "integrity": "sha512-pHM/XLofp0FJc0/0AsRm8q/5ob+a1kno+vfclXGozaMBPv3qD7Xq19loECVcBB4MOLdygnyneQMPTsH5QiVNBQ==",
- "dev": true
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
+ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/js-base64": {
"version": "2.6.4",
@@ -6823,6 +6834,15 @@
"yallist": "^2.1.2"
}
},
+ "node_modules/luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
@@ -7145,15 +7165,6 @@
"mkdirp": "bin/cmd.js"
}
},
- "node_modules/moment": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
- "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/mousetrap": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
@@ -16865,6 +16876,12 @@
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true
},
+ "install": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz",
+ "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==",
+ "dev": true
+ },
"internal-slot": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
@@ -17223,9 +17240,9 @@
"optional": true
},
"jquery": {
- "version": "1.11.3",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz",
- "integrity": "sha512-pHM/XLofp0FJc0/0AsRm8q/5ob+a1kno+vfclXGozaMBPv3qD7Xq19loECVcBB4MOLdygnyneQMPTsH5QiVNBQ==",
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
+ "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"dev": true
},
"js-base64": {
@@ -17581,6 +17598,12 @@
"yallist": "^2.1.2"
}
},
+ "luxon": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
+ "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
+ "dev": true
+ },
"make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
@@ -17850,12 +17873,6 @@
"minimist": "^1.2.6"
}
},
- "moment": {
- "version": "2.30.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
- "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
- "dev": true
- },
"mousetrap": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
diff --git a/package.json b/package.json
index a909f18b..85240e78 100644
--- a/package.json
+++ b/package.json
@@ -41,10 +41,11 @@
"html-loader": "^0.4.4",
"html-webpack-plugin": "^3.2.0",
"imports-loader": "^0.7.1",
- "jquery": "1.11.3",
+ "install": "^0.13.0",
+ "jquery": "^3.7.1",
"jshint": "^2.9.1-rc3",
+ "luxon": "^3.7.2",
"mark.js": "8.11.1",
- "moment": "^2.18.1",
"mousetrap": "^1.6.1",
"polymer-webpack-loader": "^2.0.1",
"raw-loader": "1.0.0-beta.0",
diff --git a/rhodecode/public/js/mode/swift/swift.js b/rhodecode/public/js/mode/swift/swift.js
index 55e31e27..f81e6d8d 100644
--- a/rhodecode/public/js/mode/swift/swift.js
+++ b/rhodecode/public/js/mode/swift/swift.js
@@ -75,7 +75,7 @@
}
var stringMatch
if (stringMatch = stream.match(/("""|"|')/)) {
- var tokenize = tokenString.bind(null, stringMatch[0])
+ var tokenize = tokenString.on(null, stringMatch[0])
state.tokenize.push(tokenize)
return tokenize(stream, state)
}
diff --git a/rhodecode/public/js/src/bootstrap.js b/rhodecode/public/js/src/bootstrap.js
index 2c642571..b7e19c90 100644
--- a/rhodecode/public/js/src/bootstrap.js
+++ b/rhodecode/public/js/src/bootstrap.js
@@ -745,7 +745,7 @@ if (!jQuery) { throw new Error("Bootstrap requires jQuery") }
if (!isActive || (isActive && e.keyCode == 27)) {
if (e.which == 27) $parent.find(toggle).focus()
- return $this.click()
+ return $this.trigger('click')
}
var $items = $('[role=menu] li:not(.divider):visible a', $parent)
diff --git a/rhodecode/public/js/src/codemirror/codemirror.js b/rhodecode/public/js/src/codemirror/codemirror.js
index 86692203..6c6dcf61 100644
--- a/rhodecode/public/js/src/codemirror/codemirror.js
+++ b/rhodecode/public/js/src/codemirror/codemirror.js
@@ -9660,7 +9660,7 @@
var wrappedSubmit = form.submit = function () {
save();
form.submit = realSubmit;
- form.submit();
+ form.trigger('submit');
form.submit = wrappedSubmit;
};
} catch(e) {}
diff --git a/rhodecode/public/js/src/plugins/jquery.auto-grow-input.js b/rhodecode/public/js/src/plugins/jquery.auto-grow-input.js
index eaf23041..1d013f90 100644
--- a/rhodecode/public/js/src/plugins/jquery.auto-grow-input.js
+++ b/rhodecode/public/js/src/plugins/jquery.auto-grow-input.js
@@ -51,7 +51,7 @@
testSubject.insertAfter(input);
- $(this).bind('keyup keydown blur update', check);
+ $(this).on('keyup keydown blur update', check);
});
diff --git a/rhodecode/public/js/src/plugins/jquery.autocomplete.js b/rhodecode/public/js/src/plugins/jquery.autocomplete.js
index 82d11bdd..ec150ce0 100644
--- a/rhodecode/public/js/src/plugins/jquery.autocomplete.js
+++ b/rhodecode/public/js/src/plugins/jquery.autocomplete.js
@@ -215,7 +215,7 @@
$.extend(options, suppliedOptions);
- that.isLocal = $.isArray(options.lookup);
+ that.isLocal = Array.isArray(options.lookup);
if (that.isLocal) {
options.lookup = that.verifySuggestionsFormat(options.lookup);
@@ -525,14 +525,14 @@
if (that.isLocal) {
response = that.getSuggestionsLocal(query);
} else {
- if ($.isFunction(serviceUrl)) {
+ if (typeof serviceUrl === 'function') {
serviceUrl = serviceUrl.call(that.element, query);
}
var callParams = {};
//make an evaluated copy of params
$.each(params, function(index, value) {
- if($.isFunction(value)){
+ if(typeof value === 'function'){
callParams[index] = value();
}
else {
@@ -544,7 +544,7 @@
response = that.cachedResponse[cacheKey];
}
- if (response && $.isArray(response.suggestions)) {
+ if (response && Array.isArray(response.suggestions)) {
that.suggestions = response.suggestions;
that.suggest();
} else if (!that.isBadQuery(query)) {
@@ -658,7 +658,7 @@
container.children().first().addClass(classSelected);
}
- if ($.isFunction(beforeRender)) {
+ if (typeof beforeRender === 'function') {
beforeRender.call(that.element, container);
}
@@ -886,7 +886,7 @@
that.suggestions = [];
that.selection = suggestion;
- if ($.isFunction(onSelectCallback)) {
+ if (typeof onSelectCallback === 'function') {
onSelectCallback.call(this, that.element, suggestion, prevElem);
}
},
diff --git a/rhodecode/public/js/src/plugins/jquery.dataTables.js b/rhodecode/public/js/src/plugins/jquery.dataTables.js
index 0184b877..4b8d4e4a 100644
--- a/rhodecode/public/js/src/plugins/jquery.dataTables.js
+++ b/rhodecode/public/js/src/plugins/jquery.dataTables.js
@@ -251,7 +251,7 @@
var api = this.api( true );
/* Check if we want to add multiple rows or not */
- var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
+ var rows = Array.isArray(data) && ( Array.isArray(data[0]) || $.isPlainObject(data[0]) ) ?
api.rows.add( data ) :
api.row.add( data );
@@ -337,7 +337,7 @@
* var oTable;
*
* // 'open' an information row when a row is clicked on
- * $('#example tbody tr').click( function () {
+ * $('#example tbody tr').on('click', function () {
* if ( oTable.fnIsOpen(this) ) {
* oTable.fnClose( this );
* } else {
@@ -489,7 +489,7 @@
* $(document).ready(function() {
* oTable = $('#example').dataTable();
*
- * oTable.$('tr').click( function () {
+ * oTable.$('tr').on('click', function () {
* var data = oTable.fnGetData( this );
* // ... do something with the array / object of data for the row
* } );
@@ -500,7 +500,7 @@
* $(document).ready(function() {
* oTable = $('#example').dataTable();
*
- * oTable.$('td').click( function () {
+ * oTable.$('td').on('click', function () {
* var sData = oTable.fnGetData( this );
* alert( 'The cell clicked on had the value of '+sData );
* } );
@@ -562,7 +562,7 @@
*
* @example
* $(document).ready(function() {
- * $('#example tbody td').click( function () {
+ * $('#example tbody td').on('click', function () {
* // Get the position of the current data from the node
* var aPos = oTable.fnGetPosition( this );
*
@@ -611,7 +611,7 @@
* var oTable;
*
* // 'open' an information row when a row is clicked on
- * $('#example tbody tr').click( function () {
+ * $('#example tbody tr').on('click', function () {
* if ( oTable.fnIsOpen(this) ) {
* oTable.fnClose( this );
* } else {
@@ -647,7 +647,7 @@
* var oTable;
*
* // 'open' an information row when a row is clicked on
- * $('#example tbody tr').click( function () {
+ * $('#example tbody tr').on('click', function () {
* if ( oTable.fnIsOpen(this) ) {
* oTable.fnClose( this );
* } else {
@@ -976,7 +976,7 @@
// If the length menu is given, but the init display length is not, use the length menu
if ( oInit.aLengthMenu && ! oInit.iDisplayLength )
{
- oInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?
+ oInit.iDisplayLength = Array.isArray( oInit.aLengthMenu[0] ) ?
oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];
}
@@ -1092,7 +1092,7 @@
if ( oInit.iDeferLoading !== null )
{
oSettings.bDeferLoading = true;
- var tmp = $.isArray( oInit.iDeferLoading );
+ var tmp = Array.isArray( oInit.iDeferLoading );
oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
}
@@ -1822,7 +1822,7 @@
// orderData can be given as an integer
var dataSort = init.aDataSort;
- if ( dataSort && ! $.isArray( dataSort ) ) {
+ if ( dataSort && ! Array.isArray( dataSort ) ) {
init.aDataSort = [ dataSort ];
}
}
@@ -2303,7 +2303,7 @@
def.targets :
def.aTargets;
- if ( ! $.isArray( aTargets ) )
+ if ( ! Array.isArray( aTargets ) )
{
aTargets = [ aTargets ];
}
@@ -2622,7 +2622,7 @@
innerSrc = a.join('.');
// Traverse each entry in the array getting the properties requested
- if ( $.isArray( data ) ) {
+ if ( Array.isArray( data ) ) {
for ( var j=0, jLen=data.length ; j