diff --git a/Gemfile b/Gemfile index adfc6365c6a..e0110794c49 100644 --- a/Gemfile +++ b/Gemfile @@ -474,7 +474,7 @@ end gem 'warning', '~> 1.3.0', feature_category: :shared group :development do - gem 'lefthook', '~> 1.10.0', require: false, feature_category: :tooling + gem 'lefthook', '~> 1.11.0', require: false, feature_category: :tooling gem 'rubocop', feature_category: :tooling gem 'solargraph', '~> 0.47.2', require: false, feature_category: :shared diff --git a/Gemfile.checksum b/Gemfile.checksum index 18b03cf89fa..3cc64574852 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -238,7 +238,7 @@ {"name":"gitlab-markup","version":"1.9.0","platform":"ruby","checksum":"7eda045a08ec2d110084252fa13a8c9eac8bdac0e302035ca7db4b82bcbd7ed4"}, {"name":"gitlab-net-dns","version":"0.10.0","platform":"ruby","checksum":"73b4613d8c851480b7b4e631f117bce4bbb4b6b8073ecf4eb167407e46097c6e"}, {"name":"gitlab-sdk","version":"0.3.1","platform":"ruby","checksum":"48ba49084f4ab92df7c7ef9f347020d9dfdf6ed9c1e782b67264e98ffe6ea710"}, -{"name":"gitlab-secret_detection","version":"0.18.0","platform":"ruby","checksum":"c143c22c8a70898b11141dd530fc740725835c54a5cd01117c1ecfefab798ae6"}, +{"name":"gitlab-secret_detection","version":"0.19.0","platform":"ruby","checksum":"995d87ef652dec742de8af5015018f975a01c8961a7c71892e9be19417215613"}, {"name":"gitlab-security_report_schemas","version":"0.1.2.min15.0.0.max15.2.1","platform":"ruby","checksum":"300037487ec9d51a814f648514ff521cb82b94fc51d9fe53389175b36ac680ae"}, {"name":"gitlab-styles","version":"13.1.0","platform":"ruby","checksum":"46c7c5729616355868b7b40a4ffcd052b36346076042abe8cafaee1688cbf2c1"}, {"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"}, @@ -366,7 +366,7 @@ {"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"}, {"name":"language_server-protocol","version":"3.17.0.3","platform":"ruby","checksum":"3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f"}, {"name":"launchy","version":"2.5.2","platform":"ruby","checksum":"8aa0441655aec5514008e1d04892c2de3ba57bd337afb984568da091121a241b"}, -{"name":"lefthook","version":"1.10.10","platform":"ruby","checksum":"344ddb720cdcc5ffaefabd47784766d931f4294babb9961f75db19d7765feea7"}, +{"name":"lefthook","version":"1.11.2","platform":"ruby","checksum":"4bcd3c5bba4996727d96fffcf02e090f50bf672ca76677f46ba0f98a862eddc2"}, {"name":"letter_opener","version":"1.10.0","platform":"ruby","checksum":"2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2"}, {"name":"letter_opener_web","version":"3.0.0","platform":"ruby","checksum":"3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860"}, {"name":"libyajl2","version":"2.1.0","platform":"ruby","checksum":"aa5df6c725776fc050c8418450de0f7c129cb7200b811907c4c0b3b5c0aea0ef"}, diff --git a/Gemfile.lock b/Gemfile.lock index 78f09a53f42..3d838c4accd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -775,7 +775,7 @@ GEM activesupport (>= 5.2.0) rake (~> 13.0) snowplow-tracker (~> 0.8.0) - gitlab-secret_detection (0.18.0) + gitlab-secret_detection (0.19.0) grpc (~> 1.63) grpc-tools (~> 1.63) grpc_reflection (~> 0.1) @@ -1097,7 +1097,7 @@ GEM language_server-protocol (3.17.0.3) launchy (2.5.2) addressable (~> 2.8) - lefthook (1.10.10) + lefthook (1.11.2) letter_opener (1.10.0) launchy (>= 2.2, < 4) letter_opener_web (3.0.0) @@ -2181,7 +2181,7 @@ DEPENDENCIES knapsack (~> 4.0.0) kramdown (~> 2.5.0) kubeclient (~> 4.11.0) - lefthook (~> 1.10.0) + lefthook (~> 1.11.0) letter_opener_web (~> 3.0.0) license_finder (~> 7.0) licensee (~> 9.16) @@ -2366,4 +2366,4 @@ DEPENDENCIES yajl-ruby (~> 1.4.3) BUNDLED WITH - 2.5.11 + 2.6.5 diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum index ebfe6993381..36b5550e298 100644 --- a/Gemfile.next.checksum +++ b/Gemfile.next.checksum @@ -238,7 +238,7 @@ {"name":"gitlab-markup","version":"1.9.0","platform":"ruby","checksum":"7eda045a08ec2d110084252fa13a8c9eac8bdac0e302035ca7db4b82bcbd7ed4"}, {"name":"gitlab-net-dns","version":"0.10.0","platform":"ruby","checksum":"73b4613d8c851480b7b4e631f117bce4bbb4b6b8073ecf4eb167407e46097c6e"}, {"name":"gitlab-sdk","version":"0.3.1","platform":"ruby","checksum":"48ba49084f4ab92df7c7ef9f347020d9dfdf6ed9c1e782b67264e98ffe6ea710"}, -{"name":"gitlab-secret_detection","version":"0.18.0","platform":"ruby","checksum":"c143c22c8a70898b11141dd530fc740725835c54a5cd01117c1ecfefab798ae6"}, +{"name":"gitlab-secret_detection","version":"0.19.0","platform":"ruby","checksum":"995d87ef652dec742de8af5015018f975a01c8961a7c71892e9be19417215613"}, {"name":"gitlab-security_report_schemas","version":"0.1.2.min15.0.0.max15.2.1","platform":"ruby","checksum":"300037487ec9d51a814f648514ff521cb82b94fc51d9fe53389175b36ac680ae"}, {"name":"gitlab-styles","version":"13.1.0","platform":"ruby","checksum":"46c7c5729616355868b7b40a4ffcd052b36346076042abe8cafaee1688cbf2c1"}, {"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"}, @@ -369,7 +369,7 @@ {"name":"kubeclient","version":"4.11.0","platform":"ruby","checksum":"4985fcd749fb8c364a668a8350a49821647f03aa52d9ee6cbc582beb8e883fcc"}, {"name":"language_server-protocol","version":"3.17.0.3","platform":"ruby","checksum":"3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f"}, {"name":"launchy","version":"2.5.2","platform":"ruby","checksum":"8aa0441655aec5514008e1d04892c2de3ba57bd337afb984568da091121a241b"}, -{"name":"lefthook","version":"1.10.10","platform":"ruby","checksum":"344ddb720cdcc5ffaefabd47784766d931f4294babb9961f75db19d7765feea7"}, +{"name":"lefthook","version":"1.11.2","platform":"ruby","checksum":"4bcd3c5bba4996727d96fffcf02e090f50bf672ca76677f46ba0f98a862eddc2"}, {"name":"letter_opener","version":"1.10.0","platform":"ruby","checksum":"2ff33f2e3b5c3c26d1959be54b395c086ca6d44826e8bf41a14ff96fdf1bdbb2"}, {"name":"letter_opener_web","version":"3.0.0","platform":"ruby","checksum":"3f391efe0e8b9b24becfab5537dfb17a5cf5eb532038f947daab58cb4b749860"}, {"name":"libyajl2","version":"2.1.0","platform":"ruby","checksum":"aa5df6c725776fc050c8418450de0f7c129cb7200b811907c4c0b3b5c0aea0ef"}, @@ -802,8 +802,8 @@ {"name":"webmock","version":"3.25.0","platform":"ruby","checksum":"573c23fc4887008c830f22da588db339ca38b6d59856fd57f5a068959474198e"}, {"name":"webrick","version":"1.8.2","platform":"ruby","checksum":"431746a349199546ff9dd272cae10849c865f938216e41c402a6489248f12f21"}, {"name":"websocket","version":"1.2.10","platform":"ruby","checksum":"2cc1a4a79b6e63637b326b4273e46adcddf7871caa5dc5711f2ca4061a629fa8"}, -{"name":"websocket-driver","version":"0.7.7","platform":"java","checksum":"e2520a6049feb88691e042d631063fa96d50620fb7f53b30180ae6fb2cf75eb1"}, -{"name":"websocket-driver","version":"0.7.7","platform":"ruby","checksum":"056d99f2cd545712cfb1291650fde7478e4f2661dc1db6a0fa3b966231a146b4"}, +{"name":"websocket-driver","version":"0.7.6","platform":"java","checksum":"bc894b9e9d5aee55ac04b61003e1957c4ef411a5a048199587d0499785b505c3"}, +{"name":"websocket-driver","version":"0.7.6","platform":"ruby","checksum":"f69400be7bc197879726ad8e6f5869a61823147372fd8928836a53c2c741d0db"}, {"name":"websocket-extensions","version":"0.1.5","platform":"ruby","checksum":"1c6ba63092cda343eb53fc657110c71c754c56484aad42578495227d717a8241"}, {"name":"wikicloth","version":"0.8.1","platform":"ruby","checksum":"7ac8a9ca0a948cf472851e521afc6c2a6b04a8f91ef1d824ba6a61ffbd60e6ca"}, {"name":"wisper","version":"2.0.1","platform":"ruby","checksum":"ce17bc5c3a166f241a2e6613848b025c8146fce2defba505920c1d1f3f88fae6"}, diff --git a/Gemfile.next.lock b/Gemfile.next.lock index c1698ff67c6..d60d5d5bd87 100644 --- a/Gemfile.next.lock +++ b/Gemfile.next.lock @@ -787,7 +787,7 @@ GEM activesupport (>= 5.2.0) rake (~> 13.0) snowplow-tracker (~> 0.8.0) - gitlab-secret_detection (0.18.0) + gitlab-secret_detection (0.19.0) grpc (~> 1.63) grpc-tools (~> 1.63) grpc_reflection (~> 0.1) @@ -1114,7 +1114,7 @@ GEM language_server-protocol (3.17.0.3) launchy (2.5.2) addressable (~> 2.8) - lefthook (1.10.10) + lefthook (1.11.2) letter_opener (1.10.0) launchy (>= 2.2, < 4) letter_opener_web (3.0.0) @@ -2010,8 +2010,7 @@ GEM hashdiff (>= 0.4.0, < 2.0.0) webrick (1.8.2) websocket (1.2.10) - websocket-driver (0.7.7) - base64 + websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) wikicloth (0.8.1) @@ -2216,7 +2215,7 @@ DEPENDENCIES knapsack (~> 4.0.0) kramdown (~> 2.5.0) kubeclient (~> 4.11.0) - lefthook (~> 1.10.0) + lefthook (~> 1.11.0) letter_opener_web (~> 3.0.0) license_finder (~> 7.0) licensee (~> 9.16) @@ -2401,4 +2400,4 @@ DEPENDENCIES yajl-ruby (~> 1.4.3) BUNDLED WITH - 2.5.11 + 2.6.5 diff --git a/app/assets/javascripts/lib/utils/url_utility.js b/app/assets/javascripts/lib/utils/url_utility.js index 48b7cb86bda..ae55adbce87 100644 --- a/app/assets/javascripts/lib/utils/url_utility.js +++ b/app/assets/javascripts/lib/utils/url_utility.js @@ -256,12 +256,39 @@ export function removeParams(params, url = window.location.href, skipEncoding = return `${root}${writableQuery}${writableFragment}`; } +export function updateHistory({ state = {}, title = '', url, replace = false, win = window } = {}) { + if (win.history) { + if (replace) { + win.history.replaceState(state, title, url); + } else { + win.history.pushState(state, title, url); + } + } +} + /** * Returns value after the '#' in the location hash * @returns Current value of the hash, undefined if not set */ export const getLocationHash = () => window.location.hash?.split('#')[1]; +/** + * Sets location hash to the given value. + * When value is undefined, the hash is removed. + * @param {string} hash - use undefined to remove location hash + */ +export const setLocationHash = (hash) => { + if (hash === undefined) { + updateHistory({ + title: document.title, + url: window.location.pathname + window.location.search, + replace: true, + }); + } else { + window.location.hash = hash; + } +}; + /** * Returns a boolean indicating whether the URL hash contains the given string value * @param {string} hashName @@ -299,16 +326,6 @@ export const setUrlFragment = (url, fragment) => { return `${rootUrl}#${encodedFragment}`; }; -export function updateHistory({ state = {}, title = '', url, replace = false, win = window } = {}) { - if (win.history) { - if (replace) { - win.history.replaceState(state, title, url); - } else { - win.history.pushState(state, title, url); - } - } -} - export const escapeFileUrl = (fileUrl) => encodeURIComponent(fileUrl).replace(/%2F/g, '/'); export function webIDEUrl(route = undefined) { diff --git a/app/assets/javascripts/projects/new_v2/components/app.vue b/app/assets/javascripts/projects/new_v2/components/app.vue index a446c3cdcbb..8176c11c4e9 100644 --- a/app/assets/javascripts/projects/new_v2/components/app.vue +++ b/app/assets/javascripts/projects/new_v2/components/app.vue @@ -1,6 +1,7 @@