diff options
76 files changed, 923 insertions, 1138 deletions
@@ -407,4 +407,4 @@ gem 'flipper-active_record', '~> 0.10.2' # Structured logging gem 'lograge', '~> 0.5' -gem 'grape_logging', '~> 1.6' +gem 'grape_logging', '~> 1.7' diff --git a/Gemfile.lock b/Gemfile.lock index d7e1c7581d5..bcbe6b4f394 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -355,7 +355,7 @@ GEM activesupport grape (>= 0.16.0) rake - grape_logging (1.6.0) + grape_logging (1.7.0) grape grpc (1.4.5) google-protobuf (~> 3.1) @@ -1037,7 +1037,7 @@ DEPENDENCIES grape (~> 1.0) grape-entity (~> 0.6.0) grape-route-helpers (~> 2.1.0) - grape_logging (~> 1.6) + grape_logging (~> 1.7) haml_lint (~> 0.26.0) hamlit (~> 2.6.1) hashie-forbidden_attributes diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index e115ee40219..06f6ec241f4 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -72,10 +72,6 @@ export default { required: false, default: () => [], }, - isConfidential: { - type: Boolean, - required: true, - }, markdownPreviewPath: { type: String, required: true, @@ -131,7 +127,6 @@ export default { this.showForm = true; this.store.setFormState({ title: this.state.titleText, - confidential: this.isConfidential, description: this.state.descriptionText, lockedWarningVisible: false, updateLoading: false, @@ -147,8 +142,6 @@ export default { .then((data) => { if (location.pathname !== data.web_url) { gl.utils.visitUrl(data.web_url); - } else if (data.confidential !== this.isConfidential) { - gl.utils.visitUrl(location.pathname); } return this.service.getData(); diff --git a/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue b/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue deleted file mode 100644 index a0ff08e9111..00000000000 --- a/app/assets/javascripts/issue_show/components/fields/confidential_checkbox.vue +++ /dev/null @@ -1,23 +0,0 @@ -<script> - export default { - props: { - formState: { - type: Object, - required: true, - }, - }, - }; -</script> - -<template> - <fieldset class="checkbox"> - <label for="issue-confidential"> - <input - type="checkbox" - value="1" - id="issue-confidential" - v-model="formState.confidential" /> - This issue is confidential and should only be visible to team members with at least Reporter access. - </label> - </fieldset> -</template> diff --git a/app/assets/javascripts/issue_show/components/form.vue b/app/assets/javascripts/issue_show/components/form.vue index 6a2dd502fe2..28bf6c67ea5 100644 --- a/app/assets/javascripts/issue_show/components/form.vue +++ b/app/assets/javascripts/issue_show/components/form.vue @@ -4,7 +4,6 @@ import descriptionField from './fields/description.vue'; import editActions from './edit_actions.vue'; import descriptionTemplate from './fields/description_template.vue'; - import confidentialCheckbox from './fields/confidential_checkbox.vue'; export default { props: { @@ -44,7 +43,6 @@ descriptionField, descriptionTemplate, editActions, - confidentialCheckbox, }, computed: { hasIssuableTemplates() { @@ -81,8 +79,6 @@ :form-state="formState" :markdown-preview-path="markdownPreviewPath" :markdown-docs-path="markdownDocsPath" /> - <confidential-checkbox - :form-state="formState" /> <edit-actions :form-state="formState" :can-destroy="canDestroy" /> diff --git a/app/assets/javascripts/issue_show/index.js b/app/assets/javascripts/issue_show/index.js index 8053ef57e6c..aca9dec2a96 100644 --- a/app/assets/javascripts/issue_show/index.js +++ b/app/assets/javascripts/issue_show/index.js @@ -35,7 +35,6 @@ document.addEventListener('DOMContentLoaded', () => { initialDescriptionHtml: this.initialDescriptionHtml, initialDescriptionText: this.initialDescriptionText, issuableTemplates: this.issuableTemplates, - isConfidential: this.isConfidential, markdownPreviewPath: this.markdownPreviewPath, markdownDocsPath: this.markdownDocsPath, projectPath: this.projectPath, diff --git a/app/assets/javascripts/issue_show/stores/index.js b/app/assets/javascripts/issue_show/stores/index.js index f4639e9ed2a..af8b0414266 100644 --- a/app/assets/javascripts/issue_show/stores/index.js +++ b/app/assets/javascripts/issue_show/stores/index.js @@ -3,7 +3,6 @@ export default class Store { this.state = initialState; this.formState = { title: '', - confidential: false, description: '', lockedWarningVisible: false, updateLoading: false, diff --git a/app/assets/javascripts/new_sidebar.js b/app/assets/javascripts/new_sidebar.js index 709a5d33b9f..cea4f35096a 100644 --- a/app/assets/javascripts/new_sidebar.js +++ b/app/assets/javascripts/new_sidebar.js @@ -19,6 +19,11 @@ export default class NewNavSidebar { } bindEvents() { + document.addEventListener('click', (e) => { + if (!e.target.closest('.nav-sidebar') && (bp.getBreakpointSize() === 'sm' || bp.getBreakpointSize() === 'md')) { + this.toggleCollapsedSidebar(true); + } + }); this.$openSidebar.on('click', () => this.toggleSidebarNav(true)); this.$closeSidebar.on('click', () => this.toggleSidebarNav(false)); this.$overlay.on('click', () => this.toggleSidebarNav(false)); @@ -63,7 +68,7 @@ export default class NewNavSidebar { if (breakpoint === 'sm' || breakpoint === 'md') { this.toggleCollapsedSidebar(true); } else if (breakpoint === 'lg') { - const collapse = this.$sidebar.hasClass('sidebar-icons-only'); + const collapse = Cookies.get('sidebar_collapsed') === 'true'; this.toggleCollapsedSidebar(collapse); } } diff --git a/app/assets/stylesheets/framework.scss b/app/assets/stylesheets/framework.scss index 35e7a10379f..c0524bf6aa3 100644 --- a/app/assets/stylesheets/framework.scss +++ b/app/assets/stylesheets/framework.scss @@ -19,7 +19,6 @@ @import "framework/flash"; @import "framework/forms"; @import "framework/gfm"; -@import "framework/gitlab-theme"; @import "framework/header"; @import "framework/highlight"; @import "framework/issue_box"; diff --git a/app/assets/stylesheets/framework/files.scss b/app/assets/stylesheets/framework/files.scss index 8ad082f7a65..588ec1ff3bc 100644 --- a/app/assets/stylesheets/framework/files.scss +++ b/app/assets/stylesheets/framework/files.scss @@ -17,8 +17,11 @@ max-width: $limited-layout-width-sm; margin-left: auto; margin-right: auto; - padding-top: 64px; - padding-bottom: 64px; + + @media (min-width: $screen-md-min) { + padding-top: 64px; + padding-bottom: 64px; + } } } diff --git a/app/assets/stylesheets/framework/gitlab-theme.scss b/app/assets/stylesheets/framework/gitlab-theme.scss deleted file mode 100644 index 71f764923ff..00000000000 --- a/app/assets/stylesheets/framework/gitlab-theme.scss +++ /dev/null @@ -1,265 +0,0 @@ -/** - * Styles the GitLab application with a specific color theme - */ - -@mixin gitlab-theme($color-100, $color-200, $color-500, $color-700, $color-800, $color-900, $color-alternate) { - // Header - - header.navbar-gitlab-new { - background: linear-gradient(to right, $color-900, $color-800); - - .navbar-collapse { - color: $color-200; - } - - .container-fluid { - .navbar-toggle { - border-left: 1px solid lighten($color-700, 10%); - } - } - - .navbar-sub-nav, - .navbar-nav { - > li { - > a:hover, - > a:focus { - background-color: rgba($color-200, .2); - } - - &.active > a, - &.dropdown.open > a { - color: $color-900; - background-color: $color-alternate; - - svg { - fill: currentColor; - } - } - - &.line-separator { - border-left: 1px solid rgba($color-200, .2); - } - } - } - - .navbar-sub-nav { - color: $color-200; - } - - .nav { - > li { - color: $color-200; - - > a { - svg { - fill: $color-200; - } - - &.header-user-dropdown-toggle { - .header-user-avatar { - border-color: $color-200; - } - } - - &:hover, - &:focus { - @media (min-width: $screen-sm-min) { - background-color: rgba($color-200, .2); - } - - svg { - fill: currentColor; - } - } - } - - &.active > a, - &.dropdown.open > a { - color: $color-900; - background-color: $color-alternate; - - &:hover { - svg { - fill: $color-900; - } - } - } - - .impersonated-user, - .impersonated-user:hover { - svg { - fill: $color-900; - } - } - } - } - } - - .title { - > a { - &:hover, - &:focus { - background-color: rgba($color-200, .2); - } - } - } - - .search { - form { - background-color: rgba($color-200, .2); - - &:hover { - background-color: rgba($color-200, .3); - } - } - - .location-badge { - color: $color-100; - background-color: rgba($color-200, .1); - border-right: 1px solid $color-800; - } - - .search-input::placeholder { - color: rgba($color-200, .8); - } - - .search-input-wrap { - .search-icon, - .clear-icon { - color: rgba($color-200, .8); - } - } - - &.search-active { - form { - background-color: $white-light; - } - - .location-badge { - color: $gl-text-color; - } - - .search-input-wrap { - .search-icon { - color: rgba($color-200, .8); - } - } - } - } - - .btn-sign-in { - background-color: $color-100; - color: $color-900; - } - - - // Sidebar - .nav-sidebar li.active { - box-shadow: inset 4px 0 0 $color-700; - - > a { - color: $color-900; - } - - svg { - fill: $color-900; - } - } -} - - -body { - &.ui_indigo { - @include gitlab-theme($indigo-100, $indigo-200, $indigo-500, $indigo-700, $indigo-800, $indigo-900, $white-light); - } - - &.ui_dark { - @include gitlab-theme($theme-gray-100, $theme-gray-200, $theme-gray-500, $theme-gray-700, $theme-gray-800, $theme-gray-900, $white-light); - } - - &.ui_blue { - @include gitlab-theme($theme-blue-100, $theme-blue-200, $theme-blue-500, $theme-blue-700, $theme-blue-800, $theme-blue-900, $white-light); - } - - &.ui_green { - @include gitlab-theme($theme-green-100, $theme-green-200, $theme-green-500, $theme-green-700, $theme-green-800, $theme-green-900, $white-light); - } - - &.ui_light { - @include gitlab-theme($theme-gray-900, $theme-gray-700, $theme-gray-800, $theme-gray-700, $theme-gray-700, $theme-gray-100, $theme-gray-700); - - header.navbar-gitlab-new { - background: $theme-gray-100; - box-shadow: 0 2px 0 0 $border-color; - - .logo-text svg { - fill: $theme-gray-900; - } - - .navbar-sub-nav, - .navbar-nav { - > li { - > a:hover, - > a:focus { - color: $theme-gray-900; - } - - &.active > a { - color: $white-light; - - &:hover { - color: $white-light; - } - } - } - } - - .container-fluid { - .navbar-toggle, - .navbar-toggle:hover { - color: $theme-gray-700; - border-left: 1px solid $theme-gray-200; - } - } - } - - .search { - form { - background-color: $white-light; - box-shadow: inset 0 0 0 1px $border-color; - - &:hover { - background-color: $white-light; - box-shadow: inset 0 0 0 1px $blue-100; - - .location-badge { - box-shadow: inset 0 0 0 1px $blue-100; - } - } - } - - .search-input-wrap { - .search-icon { - color: $theme-gray-200; - } - } - - .location-badge { - color: $theme-gray-700; - box-shadow: inset 0 0 0 1px $border-color; - background-color: $nav-badge-bg; - border-right: 0; - } - } - - .nav-sidebar li.active { - > a { - color: $theme-gray-900; - } - - svg { - fill: $theme-gray-900; - } - } - } -} diff --git a/app/assets/stylesheets/framework/header.scss b/app/assets/stylesheets/framework/header.scss index ab3c34df1fb..b00a2d053e2 100644 --- a/app/assets/stylesheets/framework/header.scss +++ b/app/assets/stylesheets/framework/header.scss @@ -111,6 +111,7 @@ header { svg { height: 16px; width: 23px; + fill: currentColor; } } diff --git a/app/assets/stylesheets/framework/variables.scss b/app/assets/stylesheets/framework/variables.scss index 3857226cddb..e300b006026 100644 --- a/app/assets/stylesheets/framework/variables.scss +++ b/app/assets/stylesheets/framework/variables.scss @@ -74,8 +74,6 @@ $red-700: #a62d19; $red-800: #8b2615; $red-900: #711e11; -// GitLab themes - $indigo-50: #f7f7ff; $indigo-100: #ebebfa; $indigo-200: #d1d1f0; @@ -88,43 +86,6 @@ $indigo-800: #393982; $indigo-900: #292961; $indigo-950: #1a1a40; -$theme-gray-50: #fafafa; -$theme-gray-100: #f2f2f2; -$theme-gray-200: #dfdfdf; -$theme-gray-300: #cccccc; -$theme-gray-400: #bababa; -$theme-gray-500: #a7a7a7; -$theme-gray-600: #949494; -$theme-gray-700: #707070; -$theme-gray-800: #4f4f4f; -$theme-gray-900: #2e2e2e; -$theme-gray-950: #1f1f1f; - -$theme-blue-50: #f4f8fc; -$theme-blue-100: #e6edf5; -$theme-blue-200: #c8d7e6; -$theme-blue-300: #97b3cf; -$theme-blue-400: #648cb4; -$theme-blue-500: #4a79a8; -$theme-blue-600: #3e6fa0; -$theme-blue-700: #305c88; -$theme-blue-800: #25496e; -$theme-blue-900: #1a3652; -$theme-blue-950: #0f2235; - -$theme-green-50: #f2faf6; -$theme-green-100: #e4f3ea; -$theme-green-200: #c0dfcd; -$theme-green-300: #8ac2a1; -$theme-green-400: #52a274; -$theme-green-500: #35935c; -$theme-green-600: #288a50; -$theme-green-700: #1c7441; -$theme-green-800: #145d33; -$theme-green-900: #0d4524; -$theme-green-950: #072d16; - - $black: #000; $black-transparent: rgba(0, 0, 0, 0.3); $almost-black: #242424; diff --git a/app/assets/stylesheets/new_nav.scss b/app/assets/stylesheets/new_nav.scss index 8e095cbdd7e..2b6c0fc015c 100644 --- a/app/assets/stylesheets/new_nav.scss +++ b/app/assets/stylesheets/new_nav.scss @@ -9,20 +9,10 @@ header.navbar-gitlab-new { color: $white-light; + background: linear-gradient(to right, $indigo-900, $indigo-800); border-bottom: 0; min-height: $new-navbar-height; - .logo-text { - line-height: initial; - - svg { - width: 55px; - height: 14px; - margin: 0; - fill: $white-light; - } - } - .header-content { display: -webkit-flex; display: flex; @@ -48,10 +38,10 @@ header.navbar-gitlab-new { img { height: 28px; - margin-right: 8px; + margin-right: 10px; } - a { + > a { display: -webkit-flex; display: flex; align-items: center; @@ -64,6 +54,22 @@ header.navbar-gitlab-new { margin-right: 8px; } } + + .logo-text { + line-height: initial; + + svg { + width: 55px; + height: 14px; + margin: 0; + fill: $white-light; + } + } + + &:hover, + &:focus { + background-color: rgba($indigo-200, .2); + } } } @@ -100,6 +106,7 @@ header.navbar-gitlab-new { .navbar-collapse { padding-left: 0; + color: $indigo-200; box-shadow: 0; @media (max-width: $screen-xs-max) { @@ -125,6 +132,7 @@ header.navbar-gitlab-new { font-size: 14px; text-align: center; color: currentColor; + border-left: 1px solid lighten($indigo-700, 10%); &:hover, &:focus, @@ -159,41 +167,51 @@ header.navbar-gitlab-new { will-change: color; margin: 4px 2px; padding: 6px 8px; + color: $indigo-200; height: 32px; @media (max-width: $screen-xs-max) { padding: 0; } + svg { + fill: $indigo-200; + } + &.header-user-dropdown-toggle { margin-left: 2px; .header-user-avatar { + border-color: $indigo-200; margin-right: 0; } } + } - &:hover, - &:focus { - text-decoration: none; - outline: 0; - opacity: 1; - color: $white-light; + .header-new-dropdown-toggle { + margin-right: 0; + } - svg { - fill: currentColor; - } + > a:hover, + > a:focus { + text-decoration: none; + outline: 0; + opacity: 1; + color: $white-light; - &.header-user-dropdown-toggle { - .header-user-avatar { - border-color: $white-light; - } - } + @media (min-width: $screen-sm-min) { + background-color: rgba($indigo-200, .2); } - } - .header-new-dropdown-toggle { - margin-right: 0; + svg { + fill: currentColor; + } + + &.header-user-dropdown-toggle { + .header-user-avatar { + border-color: $white-light; + } + } } .impersonated-user, @@ -202,6 +220,10 @@ header.navbar-gitlab-new { background-color: $white-light; border-top-right-radius: 0; border-bottom-right-radius: 0; + + svg { + fill: $indigo-900; + } } .impersonation-btn, @@ -219,6 +241,8 @@ header.navbar-gitlab-new { &.active > a, &.dropdown.open > a { + color: $indigo-900; + background-color: $white-light; svg { fill: currentColor; @@ -232,6 +256,7 @@ header.navbar-gitlab-new { display: -webkit-flex; display: flex; margin: 0 0 0 6px; + color: $indigo-200; .dropdown-chevron { position: relative; @@ -249,6 +274,17 @@ header.navbar-gitlab-new { text-decoration: none; outline: 0; color: $white-light; + background-color: rgba($indigo-200, .2); + + svg { + fill: currentColor; + } + } + + &.active > a, + &.dropdown.open > a { + color: $indigo-900; + background-color: $white-light; svg { fill: currentColor; @@ -273,6 +309,7 @@ header.navbar-gitlab-new { } &.line-separator { + border-left: 1px solid rgba($indigo-200, .2); margin: 8px; } } @@ -302,14 +339,17 @@ header.navbar-gitlab-new { height: 32px; border: 0; border-radius: $border-radius-default; + background-color: rgba($indigo-200, .2); transition: border-color ease-in-out 0.15s, background-color ease-in-out 0.15s; &:hover { + background-color: rgba($indigo-200, .3); box-shadow: none; } } &.search-active form { + background-color: $white-light; box-shadow: none; .search-input { @@ -337,26 +377,43 @@ header.navbar-gitlab-new { } .search-input::placeholder { + color: rgba($indigo-200, .8); transition: color ease-in-out 0.15s; } .location-badge { font-size: 12px; + color: $indigo-100; + background-color: rgba($indigo-200, .1); + will-change: color; margin: -4px 4px -4px -4px; line-height: 25px; padding: 4px 8px; border-radius: 2px 0 0 2px; + border-right: 1px solid $indigo-800; height: 32px; transition: border-color ease-in-out 0.15s; } + .search-input-wrap { + .search-icon, + .clear-icon { + color: rgba($indigo-200, .8); + } + } + &.search-active { .location-badge { + color: $gl-text-color; background-color: $nav-badge-bg; border-color: $border-color; } .search-input-wrap { + .search-icon { + color: rgba($indigo-200, .8); + } + .clear-icon { color: $white-light; } @@ -460,6 +517,8 @@ header.navbar-gitlab-new { .btn-sign-in { margin-top: 3px; + background-color: $indigo-100; + color: $indigo-900; font-weight: $gl-font-weight-bold; &:hover { diff --git a/app/assets/stylesheets/new_sidebar.scss b/app/assets/stylesheets/new_sidebar.scss index 4bbd30056a9..378ef8926d5 100644 --- a/app/assets/stylesheets/new_sidebar.scss +++ b/app/assets/stylesheets/new_sidebar.scss @@ -99,6 +99,13 @@ $new-sidebar-collapsed-width: 50px; box-shadow: inset -2px 0 0 $border-color; transform: translate3d(0, 0, 0); + &:not(.sidebar-icons-only) { + @media (min-width: $screen-sm-min) and (max-width: $screen-md-max) { + box-shadow: inset -2px 0 0 $border-color, + 2px 1px 3px $dropdown-shadow-color; + } + } + &.sidebar-icons-only { width: $new-sidebar-collapsed-width; @@ -155,9 +162,16 @@ $new-sidebar-collapsed-width: 50px; } li.active { + box-shadow: inset 4px 0 0 $active-border; + > a { + color: $active-color; font-weight: $gl-font-weight-bold; } + + svg { + fill: $active-color; + } } @media (max-width: $screen-xs-max) { diff --git a/app/assets/stylesheets/pages/profiles/preferences.scss b/app/assets/stylesheets/pages/profiles/preferences.scss index c197494b152..305feaacaa1 100644 --- a/app/assets/stylesheets/pages/profiles/preferences.scss +++ b/app/assets/stylesheets/pages/profiles/preferences.scss @@ -1,67 +1,3 @@ -@mixin application-theme-preview($color-1, $color-2, $color-3, $color-4) { - .one { - background-color: $color-1; - border-top-left-radius: $border-radius-default; - } - - .two { - background-color: $color-2; - border-top-right-radius: $border-radius-default; - } - - .three { - background-color: $color-3; - border-bottom-left-radius: $border-radius-default; - } - - .four { - background-color: $color-4; - border-bottom-right-radius: $border-radius-default; - } -} - -.application-theme { - label { - margin-right: 20px; - text-align: center; - } - - .preview { - font-size: 0; - margin-bottom: 10px; - - &.indigo { - @include application-theme-preview($indigo-900, $indigo-700, $indigo-800, $indigo-500); - } - - &.dark { - @include application-theme-preview($theme-gray-900, $theme-gray-700, $theme-gray-800, $theme-gray-600); - } - - &.light { - @include application-theme-preview($theme-gray-600, $theme-gray-200, $theme-gray-400, $theme-gray-100); - } - - &.blue { - @include application-theme-preview($theme-blue-900, $theme-blue-700, $theme-blue-800, $theme-blue-500); - } - - &.green { - @include application-theme-preview($theme-green-900, $theme-green-700, $theme-green-800, $theme-green-500); - } - } - - .preview-row { - display: block; - } - - .quadrant { - display: inline-block; - height: 50px; - width: 80px; - } -} - .syntax-theme { label { margin-right: 20px; diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index cbcef70e957..9ec7719fabb 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -211,7 +211,6 @@ class Admin::UsersController < Admin::ApplicationController :provider, :remember_me, :skype, - :theme_id, :twitter, :username, :website_url diff --git a/app/controllers/profiles/preferences_controller.rb b/app/controllers/profiles/preferences_controller.rb index cce2a847b53..1e557c47638 100644 --- a/app/controllers/profiles/preferences_controller.rb +++ b/app/controllers/profiles/preferences_controller.rb @@ -35,8 +35,7 @@ class Profiles::PreferencesController < Profiles::ApplicationController :color_scheme_id, :layout, :dashboard, - :project_view, - :theme_id + :project_view ) end end diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb index 66e1e607e01..df390dd5aab 100644 --- a/app/helpers/issuables_helper.rb +++ b/app/helpers/issuables_helper.rb @@ -213,7 +213,6 @@ module IssuablesHelper canUpdate: can?(current_user, :update_issue, issuable), canDestroy: can?(current_user, :destroy_issue, issuable), issuableRef: issuable.to_reference, - isConfidential: issuable.confidential, markdownPreviewPath: preview_markdown_path(@project), markdownDocsPath: help_page_path('user/markdown'), issuableTemplates: issuable_templates(issuable), diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 0d7347ed30d..d36bb4ab074 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -40,10 +40,6 @@ module PreferencesHelper ] end - def user_application_theme - @user_application_theme ||= Gitlab::Themes.for_user(current_user).css_class - end - def user_color_scheme Gitlab::ColorSchemes.for_user(current_user).css_class end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index c0114dd0256..0c8cb9ba235 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -137,15 +137,7 @@ module ProjectsHelper end def last_push_event - return unless current_user - return current_user.recent_push unless @project - - project_ids = [@project.id] - if fork = current_user.fork_of(@project) - project_ids << fork.id - end - - current_user.recent_push(project_ids) + current_user&.recent_push(@project) end def project_feature_access_select(field) diff --git a/app/models/event.rb b/app/models/event.rb index c313bbb66f8..8e9490b66f4 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -49,7 +49,7 @@ class Event < ActiveRecord::Base belongs_to :author, class_name: "User" belongs_to :project belongs_to :target, polymorphic: true # rubocop:disable Cop/PolymorphicAssociations - has_one :push_event_payload, foreign_key: :event_id + has_one :push_event_payload # Callbacks after_create :reset_project_activity diff --git a/app/models/gpg_signature.rb b/app/models/gpg_signature.rb index 454c90d5fc4..1f047a32c84 100644 --- a/app/models/gpg_signature.rb +++ b/app/models/gpg_signature.rb @@ -1,8 +1,5 @@ class GpgSignature < ActiveRecord::Base include ShaAttribute - include IgnorableColumn - - ignore_column :valid_signature sha_attribute :commit_sha sha_attribute :gpg_key_primary_keyid diff --git a/app/models/push_event.rb b/app/models/push_event.rb index 23ffb0d4ea8..708513c7861 100644 --- a/app/models/push_event.rb +++ b/app/models/push_event.rb @@ -30,6 +30,44 @@ class PushEvent < Event delegate :commit_count, to: :push_event_payload alias_method :commits_count, :commit_count + # Returns events of pushes that either pushed to an existing ref or created a + # new one. + def self.created_or_pushed + actions = [ + PushEventPayload.actions[:pushed], + PushEventPayload.actions[:created] + ] + + joins(:push_event_payload) + .where(push_event_payloads: { action: actions }) + end + + # Returns events of pushes to a branch. + def self.branch_events + ref_type = PushEventPayload.ref_types[:branch] + + joins(:push_event_payload) + .where(push_event_payloads: { ref_type: ref_type }) + end + + # Returns PushEvent instances for which no merge requests have been created. + def self.without_existing_merge_requests + existing_mrs = MergeRequest.except(:order) + .select(1) + .where('merge_requests.source_project_id = events.project_id') + .where('merge_requests.source_branch = push_event_payloads.ref') + + # For reasons unknown the use of #eager_load will result in the + # "push_event_payload" association not being set. Because of this we're + # using "joins" here, which does mean an additional query needs to be + # executed in order to retrieve the "push_event_association" when the + # returned PushEvent is used. + joins(:push_event_payload) + .where('NOT EXISTS (?)', existing_mrs) + .created_or_pushed + .branch_events + end + def self.sti_name PUSHED end diff --git a/app/models/user.rb b/app/models/user.rb index d7549409b15..358b04ac71f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -35,7 +35,6 @@ class User < ActiveRecord::Base default_value_for :project_view, :files default_value_for :notified_of_own_activity, false default_value_for :preferred_language, I18n.default_locale - default_value_for :theme_id, gitlab_config.default_theme attr_encrypted :otp_secret, key: Gitlab::Application.secrets.otp_key_base, @@ -651,20 +650,13 @@ class User < ActiveRecord::Base @personal_projects_count ||= personal_projects.count end - def recent_push(project_ids = nil) - # Get push events not earlier than 2 hours ago - events = recent_events.code_push.where("created_at > ?", Time.now - 2.hours) - events = events.where(project_id: project_ids) if project_ids + def recent_push(project = nil) + service = Users::LastPushEventService.new(self) - # Use the latest event that has not been pushed or merged recently - events.includes(:project).recent.find do |event| - next unless event.project.repository.branch_exists?(event.branch_name) - - merge_requests = MergeRequest.where("created_at >= ?", event.created_at) - .where(source_project_id: event.project.id, - source_branch: event.branch_name) - - merge_requests.empty? + if project + service.last_event_for_project(project) + else + service.last_event_for_user end end diff --git a/app/services/event_create_service.rb b/app/services/event_create_service.rb index 0b7e4f187f7..6328d567a07 100644 --- a/app/services/event_create_service.rb +++ b/app/services/event_create_service.rb @@ -74,12 +74,19 @@ class EventCreateService # We're using an explicit transaction here so that any errors that may occur # when creating push payload data will result in the event creation being # rolled back as well. - Event.transaction do - event = create_event(project, current_user, Event::PUSHED) + event = Event.transaction do + new_event = create_event(project, current_user, Event::PUSHED) - PushEventPayloadService.new(event, push_data).execute + PushEventPayloadService + .new(new_event, push_data) + .execute + + new_event end + Users::LastPushEventService.new(current_user) + .cache_last_push_event(event) + Users::ActivityService.new(current_user, 'push').execute end diff --git a/app/services/users/last_push_event_service.rb b/app/services/users/last_push_event_service.rb new file mode 100644 index 00000000000..f2bfb60604f --- /dev/null +++ b/app/services/users/last_push_event_service.rb @@ -0,0 +1,83 @@ +module Users + # Service class for caching and retrieving the last push event of a user. + class LastPushEventService + EXPIRATION = 2.hours + + def initialize(user) + @user = user + end + + # Caches the given push event for the current user in the Rails cache. + # + # event - An instance of PushEvent to cache. + def cache_last_push_event(event) + keys = [ + project_cache_key(event.project), + user_cache_key + ] + + if event.project.forked? + keys << project_cache_key(event.project.forked_from_project) + end + + keys.each { |key| set_key(key, event.id) } + end + + # Returns the last PushEvent for the current user. + # + # This method will return nil if no event was found. + def last_event_for_user + find_cached_event(user_cache_key) + end + + # Returns the last PushEvent for the current user and the given project. + # + # project - An instance of Project for which to retrieve the PushEvent. + # + # This method will return nil if no event was found. + def last_event_for_project(project) + find_cached_event(project_cache_key(project)) + end + + def find_cached_event(cache_key) + event_id = get_key(cache_key) + + return unless event_id + + unless (event = find_event_in_database(event_id)) + # We don't want to keep querying the same data over and over when a + # merge request has been created, thus we remove the key if no event + # (meaning an MR was created) is returned. + Rails.cache.delete(cache_key) + end + + event + end + + private + + def find_event_in_database(id) + PushEvent + .without_existing_merge_requests + .find_by(id: id) + end + + def user_cache_key + "last-push-event/#{@user.id}" + end + + def project_cache_key(project) + "last-push-event/#{@user.id}/#{project.id}" + end + + def get_key(key) + Rails.cache.read(key, raw: true) + end + + def set_key(key, value) + # We're using raw values here since this takes up less space and we don't + # store complex objects. + Rails.cache.write(key, value, raw: true, expires_in: EXPIRATION) + end + end +end diff --git a/app/views/layouts/_bootlint.haml b/app/views/layouts/_bootlint.haml deleted file mode 100644 index d603a74c4e4..00000000000 --- a/app/views/layouts/_bootlint.haml +++ /dev/null @@ -1,5 +0,0 @@ --# haml-lint:disable InlineJavaScript -:javascript - window.onload = function() { - var s=document.createElement("script");s.onload=function(){bootlint.showLintReportForCurrentDocument([], {hasProblems: false, problemFree: false});};s.src="https://maxcdn.bootstrapcdn.com/bootlint/latest/bootlint.min.js";document.body.appendChild(s); - } diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml index 34e85fef6d9..e6a10e500a4 100644 --- a/app/views/layouts/_head.html.haml +++ b/app/views/layouts/_head.html.haml @@ -76,4 +76,3 @@ = render 'layouts/google_analytics' if extra_config.has_key?('google_analytics_id') = render 'layouts/piwik' if extra_config.has_key?('piwik_url') && extra_config.has_key?('piwik_site_id') - = render 'layouts/bootlint' if Rails.env.development? diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 0ca34b276a7..65ac8aaa59b 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -1,7 +1,7 @@ !!! 5 %html{ lang: I18n.locale, class: page_class } = render "layouts/head" - %body{ class: "#{user_application_theme} #{@body_class}", data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}", find_file: find_file_path } } + %body{ class: @body_class, data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}", find_file: find_file_path } } = render "layouts/init_auto_complete" if @gfm_form = render 'peek/bar' = render "layouts/header/default" diff --git a/app/views/layouts/nav/sidebar/_admin.html.haml b/app/views/layouts/nav/sidebar/_admin.html.haml index 8ab2b686f86..fcebb385a65 100644 --- a/app/views/layouts/nav/sidebar/_admin.html.haml +++ b/app/views/layouts/nav/sidebar/_admin.html.haml @@ -6,7 +6,7 @@ = icon('wrench') .sidebar-context-title Admin Area %ul.sidebar-top-level-items - = nav_link(controller: %w(dashboard admin projects users groups jobs runners cohorts), html_options: {class: 'home'}) do + = nav_link(controller: %w(dashboard admin projects users groups jobs runners cohorts conversational_development_index), html_options: {class: 'home'}) do = sidebar_link admin_root_path, title: _('Overview'), css: 'shortcuts-tree' do .nav-icon-container = custom_icon('overview') @@ -14,7 +14,7 @@ Overview %ul.sidebar-sub-level-items - = nav_link(controller: %w(dashboard admin projects users groups jobs runners cohorts), html_options: { class: "fly-out-top-item" } ) do + = nav_link(controller: %w(dashboard admin projects users groups jobs runners cohorts conversational_development_index), html_options: { class: "fly-out-top-item" } ) do = link_to admin_root_path do %strong.fly-out-top-item-name #{ _('Overview') } @@ -52,16 +52,16 @@ %span ConvDev Index - = nav_link(controller: %w(conversational_development_index system_info background_jobs logs health_check requests_profiles)) do - = sidebar_link admin_conversational_development_index_path, title: _('Monitoring') do + = nav_link(controller: %w(system_info background_jobs logs health_check requests_profiles)) do + = sidebar_link admin_system_info_path, title: _('Monitoring') do .nav-icon-container = custom_icon('monitoring') %span.nav-item-name Monitoring %ul.sidebar-sub-level-items - = nav_link(controller: %w(conversational_development_index system_info background_jobs logs health_check requests_profiles), html_options: { class: "fly-out-top-item" } ) do - = link_to admin_conversational_development_index_path do + = nav_link(controller: %w(system_info background_jobs logs health_check requests_profiles), html_options: { class: "fly-out-top-item" } ) do + = link_to admin_system_info_path do %strong.fly-out-top-item-name #{ _('Monitoring') } %li.divider.fly-out-top-item diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml index 2b72eeab8d6..352c2d66bab 100644 --- a/app/views/profiles/preferences/show.html.haml +++ b/app/views/profiles/preferences/show.html.haml @@ -3,26 +3,6 @@ = render 'profiles/head' = form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { class: 'row prepend-top-default js-preferences-form' } do |f| - .col-lg-4.application-theme - %h4.prepend-top-0 - GitLab navigation theme - %p Customize the appearance of the application header and navigation sidebar. - .col-lg-8.application-theme - - Gitlab::Themes.each do |theme| - = label_tag do - .preview{ class: theme.name.downcase } - .preview-row - .quadrant.one - .quadrant.two - .preview-row - .quadrant.three - .quadrant.four - = f.radio_button :theme_id, theme.id - = theme.name - - .col-sm-12 - %hr - .col-lg-4.profile-settings-sidebar %h4.prepend-top-0 Syntax highlighting theme @@ -36,10 +16,10 @@ .preview= image_tag "#{scheme.css_class}-scheme-preview.png" = f.radio_button :color_scheme_id, scheme.id = scheme.name + .col-sm-12 %hr - .col-sm-12 - %hr + .col-lg-4.profile-settings-sidebar %h4.prepend-top-0 Behavior diff --git a/app/views/profiles/preferences/update.js.erb b/app/views/profiles/preferences/update.js.erb index 8966dd3fd86..431ab9d052b 100644 --- a/app/views/profiles/preferences/update.js.erb +++ b/app/views/profiles/preferences/update.js.erb @@ -1,7 +1,3 @@ -// Remove body class for any previous theme, re-add current one -$('body').removeClass('<%= Gitlab::Themes.body_classes %>') -$('body').addClass('<%= user_application_theme %>') - // Toggle container-fluid class if ('<%= current_user.layout %>' === 'fluid') { $('.content-wrapper .container-fluid').removeClass('container-limited') diff --git a/changelogs/unreleased/35012-navigation-add-option-to-change-navigation-color-palette.yml b/changelogs/unreleased/35012-navigation-add-option-to-change-navigation-color-palette.yml deleted file mode 100644 index 74aa337a18c..00000000000 --- a/changelogs/unreleased/35012-navigation-add-option-to-change-navigation-color-palette.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Add option in preferences to change navigation theme color -merge_request: -author: -type: added diff --git a/changelogs/unreleased/conv-dev-index-regression.yml b/changelogs/unreleased/conv-dev-index-regression.yml new file mode 100644 index 00000000000..799eafa4265 --- /dev/null +++ b/changelogs/unreleased/conv-dev-index-regression.yml @@ -0,0 +1,5 @@ +--- +title: Fix ConvDev Index nav item and Monitoring submenu regression +merge_request: !14124 +author: +type: fixed diff --git a/changelogs/unreleased/user-recent-push.yml b/changelogs/unreleased/user-recent-push.yml new file mode 100644 index 00000000000..defd5cdfd8e --- /dev/null +++ b/changelogs/unreleased/user-recent-push.yml @@ -0,0 +1,5 @@ +--- +title: Rework how recent push events are retrieved +merge_request: +author: +type: other diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example index cd44f888d3f..e9661090844 100644 --- a/config/gitlab.yml.example +++ b/config/gitlab.yml.example @@ -76,13 +76,6 @@ production: &base # default_can_create_group: false # default: true # username_changing_enabled: false # default: true - User can change her username/namespace - ## Default theme ID - ## 1 - Indigo - ## 2 - Dark - ## 3 - Light - ## 4 - Blue - ## 5 - Green - # default_theme: 1 # default: 1 ## Automatic issue closing # If a commit message matches this regular expression, all issues referenced from the matched text will be closed. diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb index 40fbdd3ef9b..7c1ca05a57b 100644 --- a/config/initializers/1_settings.rb +++ b/config/initializers/1_settings.rb @@ -232,7 +232,6 @@ Settings['gitlab'] ||= Settingslogic.new({}) Settings.gitlab['default_projects_limit'] ||= 100000 Settings.gitlab['default_branch_protection'] ||= 2 Settings.gitlab['default_can_create_group'] = true if Settings.gitlab['default_can_create_group'].nil? -Settings.gitlab['default_theme'] = Gitlab::Themes::APPLICATION_DEFAULT if Settings.gitlab['default_theme'].nil? Settings.gitlab['host'] ||= ENV['GITLAB_HOST'] || 'localhost' Settings.gitlab['ssh_host'] ||= Settings.gitlab.host Settings.gitlab['https'] = false if Settings.gitlab['https'].nil? diff --git a/db/migrate/20170816234252_add_theme_id_to_users.rb b/db/migrate/20170816234252_add_theme_id_to_users.rb deleted file mode 100644 index 5043f9ec591..00000000000 --- a/db/migrate/20170816234252_add_theme_id_to_users.rb +++ /dev/null @@ -1,10 +0,0 @@ -# See http://doc.gitlab.com/ce/development/migration_style_guide.html -# for more information on how to write migrations for GitLab. - -class AddThemeIdToUsers < ActiveRecord::Migration - DOWNTIME = false - - def change - add_column :users, :theme_id, :integer, limit: 2 - end -end diff --git a/db/schema.rb b/db/schema.rb index 2149f5ad23d..df941afa7d7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1608,7 +1608,6 @@ ActiveRecord::Schema.define(version: 20170905112933) do t.boolean "notified_of_own_activity" t.string "preferred_language" t.string "rss_token" - t.integer "theme_id", limit: 2 end add_index "users", ["admin"], name: "index_users_on_admin", using: :btree diff --git a/doc/README.md b/doc/README.md index 0d82a09d1f4..c6500a37aa9 100644 --- a/doc/README.md +++ b/doc/README.md @@ -53,6 +53,7 @@ Shortcuts to GitLab's most visited docs: ### Projects and groups - [Projects](user/project/index.md): + - [Project settings](user/project/settings/index.md) - [Create a project](gitlab-basics/create-project.md) - [Fork a project](gitlab-basics/fork-project.md) - [Importing and exporting projects between instances](user/project/settings/import_export.md). diff --git a/doc/administration/auth/ldap.md b/doc/administration/auth/ldap.md index d22815dfa5e..ad904908472 100644 --- a/doc/administration/auth/ldap.md +++ b/doc/administration/auth/ldap.md @@ -256,7 +256,7 @@ production: ``` Tip: If you want to limit access to the nested members of an Active Directory -group you can use the following syntax: +group, you can use the following syntax: ``` (memberOf:1.2.840.113556.1.4.1941:=CN=My Group,DC=Example,DC=com) diff --git a/doc/api/keys.md b/doc/api/keys.md index ddcf7830621..376ac27df3a 100644 --- a/doc/api/keys.md +++ b/doc/api/keys.md @@ -32,7 +32,6 @@ Parameters: "twitter": "", "website_url": "", "email": "john@example.com", - "theme_id": 2, "color_scheme_id": 1, "projects_limit": 10, "current_sign_in_at": null, diff --git a/doc/api/session.md b/doc/api/session.md index b97e26f34a2..f79eac11689 100644 --- a/doc/api/session.md +++ b/doc/api/session.md @@ -39,7 +39,6 @@ Example response: "twitter": "", "website_url": "", "email": "john@example.com", - "theme_id": 1, "color_scheme_id": 1, "projects_limit": 10, "current_sign_in_at": "2015-07-07T07:10:58.392Z", diff --git a/doc/api/users.md b/doc/api/users.md index 6d5db16b36a..9f3e4caf2f4 100644 --- a/doc/api/users.md +++ b/doc/api/users.md @@ -72,7 +72,6 @@ GET /users "organization": "", "last_sign_in_at": "2012-06-01T11:41:01Z", "confirmed_at": "2012-05-23T09:05:22Z", - "theme_id": 1, "last_activity_on": "2012-05-23", "color_scheme_id": 2, "projects_limit": 100, @@ -106,7 +105,6 @@ GET /users "organization": "", "last_sign_in_at": null, "confirmed_at": "2012-05-30T16:53:06.148Z", - "theme_id": 1, "last_activity_on": "2012-05-23", "color_scheme_id": 3, "projects_limit": 100, @@ -217,7 +215,6 @@ Parameters: "organization": "", "last_sign_in_at": "2012-06-01T11:41:01Z", "confirmed_at": "2012-05-23T09:05:22Z", - "theme_id": 1, "last_activity_on": "2012-05-23", "color_scheme_id": 2, "projects_limit": 100, @@ -344,7 +341,6 @@ GET /user "organization": "", "last_sign_in_at": "2012-06-01T11:41:01Z", "confirmed_at": "2012-05-23T09:05:22Z", - "theme_id": 1, "last_activity_on": "2012-05-23", "color_scheme_id": 2, "projects_limit": 100, @@ -391,7 +387,6 @@ GET /user "organization": "", "last_sign_in_at": "2012-06-01T11:41:01Z", "confirmed_at": "2012-05-23T09:05:22Z", - "theme_id": 1, "last_activity_on": "2012-05-23", "color_scheme_id": 2, "projects_limit": 100, diff --git a/doc/user/admin_area/monitoring/convdev.md b/doc/user/admin_area/monitoring/convdev.md index 3d93c7557a4..a98602c4d70 100644 --- a/doc/user/admin_area/monitoring/convdev.md +++ b/doc/user/admin_area/monitoring/convdev.md @@ -23,7 +23,7 @@ If you have just started using GitLab, it may take a few weeks for data to be collected before this feature is available. This feature is accessible only to a system admin, at -**Admin area > Monitoring > ConvDev Index**. +**Admin area > Overview > ConvDev Index**. [ce-30469]: https://gitlab.com/gitlab-org/gitlab-ce/issues/30469 [ping]: ../settings/usage_statistics.md#usage-ping diff --git a/doc/user/admin_area/monitoring/img/convdev_index.png b/doc/user/admin_area/monitoring/img/convdev_index.png Binary files differindex 4e47ff2228d..ffe18d76c96 100644 --- a/doc/user/admin_area/monitoring/img/convdev_index.png +++ b/doc/user/admin_area/monitoring/img/convdev_index.png diff --git a/doc/user/project/index.md b/doc/user/project/index.md index a56b3744480..03bbc46bd8c 100644 --- a/doc/user/project/index.md +++ b/doc/user/project/index.md @@ -89,6 +89,10 @@ You can [fork a project](../../gitlab-basics/fork-project.md) in order to: from your fork to the upstream project - Fork a sample project to work on the top of that +## Project settings + +Read through the documentation on [project settings](settings/index.md). + ## Import or export a project - [Import a project](import/index.md) from: diff --git a/doc/user/project/settings/index.md b/doc/user/project/settings/index.md index cd73c0687d6..22c343dc027 100644 --- a/doc/user/project/settings/index.md +++ b/doc/user/project/settings/index.md @@ -5,7 +5,7 @@ to your project's homepage and clicking **Settings**. ## General settings -Adjust your project's path and name, description, avatar, [default branch](../repository/branches/index.md#default-branches), and tags: +Adjust your project's path and name, description, avatar, [default branch](../repository/branches/index.md#default-branch), and tags: ![general project settings](img/general_settings.png) @@ -23,11 +23,11 @@ Add an [issue description template](../description_templates.md#description-temp Set up your project's merge request settings: -- Set up the merge request method (merge commit, [fast-forward merge](https://docs.gitlab.com/ee/user/project/merge_requests/fast_forward_merge.html#fast-forward-merge-requests)). Fast-forward is available in [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/). -- Merge request [description templates](../description_templates.md#description-templates) -- Enable [merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html#merge-request-approvals), available in [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/). -- Enable [merge only of pipeline succeeds](../merge_requests/merge_when_pipeline_succeeds.md) -- Enable [merge only when all discussions are resolved](../../discussions/index.md#only-allow-merge-requests-to-be-merged-if-all-discussions-are-resolved) +- Set up the merge request method (merge commit, [fast-forward merge](https://docs.gitlab.com/ee/user/project/merge_requests/fast_forward_merge.html#fast-forward-merge-requests)). _Fast-forward is available in [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/)._ +- Merge request [description templates](../description_templates.md#description-templates). +- Enable [merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/merge_request_approvals.html#merge-request-approvals), _available in [GitLab Enterprise Edition Starter](https://about.gitlab.com/gitlab-ee/)_. +- Enable [merge only of pipeline succeeds](../merge_requests/merge_when_pipeline_succeeds.md). +- Enable [merge only when all discussions are resolved](../../discussions/index.md#only-allow-merge-requests-to-be-merged-if-all-discussions-are-resolved). ![project's merge request settings](img/merge_requests_settings.png) diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 52c49e5caa9..216408064d1 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -45,7 +45,7 @@ module API expose :confirmed_at expose :last_activity_on expose :email - expose :theme_id, :color_scheme_id, :projects_limit, :current_sign_in_at + expose :color_scheme_id, :projects_limit, :current_sign_in_at expose :identities, using: Entities::Identity expose :can_create_group?, as: :can_create_group expose :can_create_project?, as: :can_create_project diff --git a/lib/gitlab/themes.rb b/lib/gitlab/themes.rb deleted file mode 100644 index d43eff5ba4a..00000000000 --- a/lib/gitlab/themes.rb +++ /dev/null @@ -1,84 +0,0 @@ -module Gitlab - # Module containing GitLab's application theme definitions and helper methods - # for accessing them. - module Themes - extend self - - # Theme ID used when no `default_theme` configuration setting is provided. - APPLICATION_DEFAULT = 1 - - # Struct class representing a single Theme - Theme = Struct.new(:id, :name, :css_class) - - # All available Themes - THEMES = [ - Theme.new(1, 'Indigo', 'ui_indigo'), - Theme.new(2, 'Dark', 'ui_dark'), - Theme.new(3, 'Light', 'ui_light'), - Theme.new(4, 'Blue', 'ui_blue'), - Theme.new(5, 'Green', 'ui_green') - ].freeze - - # Convenience method to get a space-separated String of all the theme - # classes that might be applied to the `body` element - # - # Returns a String - def body_classes - THEMES.collect(&:css_class).uniq.join(' ') - end - - # Get a Theme by its ID - # - # If the ID is invalid, returns the default Theme. - # - # id - Integer ID - # - # Returns a Theme - def by_id(id) - THEMES.detect { |t| t.id == id } || default - end - - # Returns the number of defined Themes - def count - THEMES.size - end - - # Get the default Theme - # - # Returns a Theme - def default - by_id(default_id) - end - - # Iterate through each Theme - # - # Yields the Theme object - def each(&block) - THEMES.each(&block) - end - - # Get the Theme for the specified user, or the default - # - # user - User record - # - # Returns a Theme - def for_user(user) - if user - by_id(user.theme_id) - else - default - end - end - - private - - def default_id - @default_id ||= begin - id = Gitlab.config.gitlab.default_theme.to_i - theme_ids = THEMES.map(&:id) - - theme_ids.include?(id) ? id : APPLICATION_DEFAULT - end - end - end -end diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb index 7ce4e9009f5..74e53d86266 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/main/menu.rb @@ -3,20 +3,19 @@ module QA module Main class Menu < Page::Base def go_to_groups - within_global_menu { click_link 'Groups' } + within_top_menu { click_link 'Groups' } end def go_to_projects - within_global_menu { click_link 'Projects' } + within_top_menu { click_link 'Projects' } end def go_to_admin_area - within_user_menu { click_link 'Admin area' } + within_top_menu { click_link 'Admin area' } end def sign_out within_user_menu do - find('.header-user-dropdown-toggle').click click_link('Sign out') end end @@ -27,17 +26,19 @@ module QA private - def within_global_menu - find('.global-dropdown-toggle').click - - page.within('.global-dropdown-menu') do + def within_top_menu + page.within('.navbar') do yield end end def within_user_menu - page.within('.navbar-nav') do - yield + within_top_menu do + find('.header-user-dropdown-toggle').click + + page.within('.dropdown-menu-nav') do + yield + end end end end diff --git a/spec/controllers/profiles/preferences_controller_spec.rb b/spec/controllers/profiles/preferences_controller_spec.rb index a66b4ab0902..a5f544b4f92 100644 --- a/spec/controllers/profiles/preferences_controller_spec.rb +++ b/spec/controllers/profiles/preferences_controller_spec.rb @@ -25,8 +25,7 @@ describe Profiles::PreferencesController do def go(params: {}, format: :js) params.reverse_merge!( color_scheme_id: '1', - dashboard: 'stars', - theme_id: '1' + dashboard: 'stars' ) patch :update, user: params, format: format @@ -41,8 +40,7 @@ describe Profiles::PreferencesController do it "changes the user's preferences" do prefs = { color_scheme_id: '1', - dashboard: 'stars', - theme_id: '2' + dashboard: 'stars' }.with_indifferent_access expect(user).to receive(:assign_attributes).with(prefs) diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb index e010b5f3444..33aca6cb527 100644 --- a/spec/features/boards/boards_spec.rb +++ b/spec/features/boards/boards_spec.rb @@ -13,7 +13,7 @@ describe 'Issue Boards', js: true do project.team << [user, :master] project.team << [user2, :master] - allow_any_instance_of(ApplicationHelper).to receive(:collapsed_sidebar?).and_return(true) + page.driver.set_cookie('sidebar_collapsed', 'true') sign_in(user) end diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb index 0613c158c54..9a7b8e3ba6b 100644 --- a/spec/features/dashboard/projects_spec.rb +++ b/spec/features/dashboard/projects_spec.rb @@ -83,12 +83,14 @@ feature 'Dashboard Projects' do end end - context 'last push widget' do + context 'last push widget', :use_clean_rails_memory_store_caching do before do event = create(:push_event, project: project, author: user) create(:push_event_payload, event: event, ref: 'feature', action: :created) + Users::LastPushEventService.new(user).cache_last_push_event(event) + visit dashboard_projects_path end diff --git a/spec/features/issues/filtered_search/visual_tokens_spec.rb b/spec/features/issues/filtered_search/visual_tokens_spec.rb index 4ae54fd6f4e..2b624f4842d 100644 --- a/spec/features/issues/filtered_search/visual_tokens_spec.rb +++ b/spec/features/issues/filtered_search/visual_tokens_spec.rb @@ -28,7 +28,7 @@ describe 'Visual tokens', js: true do sign_in(user) create(:issue, project: project) - allow_any_instance_of(ApplicationHelper).to receive(:collapsed_sidebar?).and_return(true) + page.driver.set_cookie('sidebar_collapsed', 'true') visit project_issues_path(project) end diff --git a/spec/features/merge_requests/diff_notes_avatars_spec.rb b/spec/features/merge_requests/diff_notes_avatars_spec.rb index ca536f2800c..9bcb78d5206 100644 --- a/spec/features/merge_requests/diff_notes_avatars_spec.rb +++ b/spec/features/merge_requests/diff_notes_avatars_spec.rb @@ -22,7 +22,7 @@ feature 'Diff note avatars', js: true do project.team << [user, :master] sign_in user - allow_any_instance_of(ApplicationHelper).to receive(:collapsed_sidebar?).and_return(true) + page.driver.set_cookie('sidebar_collapsed', 'true') end context 'discussion tab' do diff --git a/spec/features/merge_requests/user_posts_diff_notes_spec.rb b/spec/features/merge_requests/user_posts_diff_notes_spec.rb index 442ce14eb7e..2fb6d0b965f 100644 --- a/spec/features/merge_requests/user_posts_diff_notes_spec.rb +++ b/spec/features/merge_requests/user_posts_diff_notes_spec.rb @@ -6,7 +6,7 @@ feature 'Merge requests > User posts diff notes', :js do let(:project) { merge_request.source_project } before do - allow_any_instance_of(ApplicationHelper).to receive(:collapsed_sidebar?).and_return(true) + page.driver.set_cookie('sidebar_collapsed', 'true') project.add_developer(user) sign_in(user) diff --git a/spec/fixtures/api/schemas/public_api/v4/user/login.json b/spec/fixtures/api/schemas/public_api/v4/user/login.json index e6c1d9c9d84..6181b3ccc86 100644 --- a/spec/fixtures/api/schemas/public_api/v4/user/login.json +++ b/spec/fixtures/api/schemas/public_api/v4/user/login.json @@ -19,7 +19,6 @@ "organization", "last_sign_in_at", "confirmed_at", - "theme_id", "color_scheme_id", "projects_limit", "current_sign_in_at", diff --git a/spec/helpers/preferences_helper_spec.rb b/spec/helpers/preferences_helper_spec.rb index 8b8080563d3..a04c87b08eb 100644 --- a/spec/helpers/preferences_helper_spec.rb +++ b/spec/helpers/preferences_helper_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe PreferencesHelper do - describe '#dashboard_choices' do + describe 'dashboard_choices' do it 'raises an exception when defined choices may be missing' do expect(User).to receive(:dashboards).and_return(foo: 'foo') expect { helper.dashboard_choices }.to raise_error(RuntimeError) @@ -26,33 +26,7 @@ describe PreferencesHelper do end end - describe '#user_application_theme' do - context 'with a user' do - it "returns user's theme's css_class" do - stub_user(theme_id: 3) - - expect(helper.user_application_theme).to eq 'ui_light' - end - - it 'returns the default when id is invalid' do - stub_user(theme_id: Gitlab::Themes.count + 5) - - allow(Gitlab.config.gitlab).to receive(:default_theme).and_return(1) - - expect(helper.user_application_theme).to eq 'ui_indigo' - end - end - - context 'without a user' do - it 'returns the default theme' do - stub_user - - expect(helper.user_application_theme).to eq Gitlab::Themes.default.css_class - end - end - end - - describe '#user_color_scheme' do + describe 'user_color_scheme' do context 'with a user' do it "returns user's scheme's css_class" do allow(helper).to receive(:current_user) diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 49cb7c954b4..1437479831e 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -313,23 +313,10 @@ describe ProjectsHelper do it 'returns recent push on the current project' do event = double(:event) - expect(user).to receive(:recent_push).with([project.id]).and_return(event) + expect(user).to receive(:recent_push).with(project).and_return(event) expect(helper.last_push_event).to eq(event) end - - context 'when current user has a fork of the current project' do - let(:fork) { double(:fork, id: 2) } - - it 'returns recent push considering fork events' do - expect(user).to receive(:fork_of).with(project).and_return(fork) - - event_on_fork = double(:event) - expect(user).to receive(:recent_push).with([project.id, fork.id]).and_return(event_on_fork) - - expect(helper.last_push_event).to eq(event_on_fork) - end - end end describe "#project_feature_access_select" do diff --git a/spec/javascripts/issue_show/components/app_spec.js b/spec/javascripts/issue_show/components/app_spec.js index 39065814bc2..583a3a74d77 100644 --- a/spec/javascripts/issue_show/components/app_spec.js +++ b/spec/javascripts/issue_show/components/app_spec.js @@ -42,7 +42,6 @@ describe('Issuable output', () => { initialDescriptionText: '', markdownPreviewPath: '/', markdownDocsPath: '/', - isConfidential: false, projectNamespace: '/', projectPath: '/', }, @@ -157,30 +156,6 @@ describe('Issuable output', () => { }); }); - it('reloads the page if the confidential status has changed', (done) => { - spyOn(gl.utils, 'visitUrl'); - spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => { - resolve({ - json() { - return { - confidential: true, - web_url: location.pathname, - }; - }, - }); - })); - - vm.updateIssuable(); - - setTimeout(() => { - expect( - gl.utils.visitUrl, - ).toHaveBeenCalledWith(location.pathname); - - done(); - }); - }); - it('correctly updates issuable data', (done) => { spyOn(vm.service, 'updateIssuable').and.callFake(() => new Promise((resolve) => { resolve(); diff --git a/spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb b/spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb index cb52d971047..b155c20d8d3 100644 --- a/spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb +++ b/spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb @@ -215,17 +215,9 @@ end # to a specific version of the database where said table is still present. # describe Gitlab::BackgroundMigration::MigrateEventsToPushEventPayloads, :migration, schema: 20170825154015 do - let(:user_class) do - Class.new(ActiveRecord::Base) do - self.table_name = 'users' - end - end - let(:migration) { described_class.new } - let(:user_class) { table(:users) } - let(:author) { build(:user).becomes(user_class).tap(&:save!).becomes(User) } - let(:namespace) { create(:namespace, owner: author) } - let(:project) { create(:project_empty_repo, namespace: namespace, creator: author) } + let(:project) { create(:project_empty_repo) } + let(:author) { create(:user) } # We can not rely on FactoryGirl as the state of Event may change in ways that # the background migration does not expect, hence we use the Event class of diff --git a/spec/lib/gitlab/themes_spec.rb b/spec/lib/gitlab/themes_spec.rb deleted file mode 100644 index ecacea6bb35..00000000000 --- a/spec/lib/gitlab/themes_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'spec_helper' - -describe Gitlab::Themes, lib: true do - describe '.body_classes' do - it 'returns a space-separated list of class names' do - css = described_class.body_classes - - expect(css).to include('ui_indigo') - expect(css).to include(' ui_dark ') - expect(css).to include(' ui_blue') - end - end - - describe '.by_id' do - it 'returns a Theme by its ID' do - expect(described_class.by_id(1).name).to eq 'Indigo' - expect(described_class.by_id(3).name).to eq 'Light' - end - end - - describe '.default' do - it 'returns the default application theme' do - allow(described_class).to receive(:default_id).and_return(2) - expect(described_class.default.id).to eq 2 - end - - it 'prevents an infinite loop when configuration default is invalid' do - default = described_class::APPLICATION_DEFAULT - themes = described_class::THEMES - - config = double(default_theme: 0).as_null_object - allow(Gitlab).to receive(:config).and_return(config) - expect(described_class.default.id).to eq default - - config = double(default_theme: themes.size + 5).as_null_object - allow(Gitlab).to receive(:config).and_return(config) - expect(described_class.default.id).to eq default - end - end - - describe '.each' do - it 'passes the block to the THEMES Array' do - ids = [] - described_class.each { |theme| ids << theme.id } - expect(ids).not_to be_empty - end - end -end diff --git a/spec/migrations/convert_custom_notification_settings_to_columns_spec.rb b/spec/migrations/convert_custom_notification_settings_to_columns_spec.rb index 759e77ac9db..1396d12e5a9 100644 --- a/spec/migrations/convert_custom_notification_settings_to_columns_spec.rb +++ b/spec/migrations/convert_custom_notification_settings_to_columns_spec.rb @@ -2,8 +2,6 @@ require 'spec_helper' require Rails.root.join('db', 'post_migrate', '20170607121233_convert_custom_notification_settings_to_columns') describe ConvertCustomNotificationSettingsToColumns, :migration do - let(:user_class) { table(:users) } - let(:settings_params) do [ { level: 0, events: [:new_note] }, # disabled, single event @@ -21,7 +19,7 @@ describe ConvertCustomNotificationSettingsToColumns, :migration do events[event] = true end - user = build(:user).becomes(user_class).tap(&:save!) + user = create(:user) create_params = { user_id: user.id, level: params[:level], events: events } notification_setting = described_class::NotificationSetting.create(create_params) @@ -37,7 +35,7 @@ describe ConvertCustomNotificationSettingsToColumns, :migration do events[event] = true end - user = build(:user).becomes(user_class).tap(&:save!) + user = create(:user) create_params = events.merge(user_id: user.id, level: params[:level]) notification_setting = described_class::NotificationSetting.create(create_params) diff --git a/spec/models/push_event_spec.rb b/spec/models/push_event_spec.rb index 532fb024261..ad3c3a406d9 100644 --- a/spec/models/push_event_spec.rb +++ b/spec/models/push_event_spec.rb @@ -11,6 +11,94 @@ describe PushEvent do event end + describe '.created_or_pushed' do + let(:event1) { create(:push_event) } + let(:event2) { create(:push_event) } + let(:event3) { create(:push_event) } + + before do + create(:push_event_payload, event: event1, action: :pushed) + create(:push_event_payload, event: event2, action: :created) + create(:push_event_payload, event: event3, action: :removed) + end + + let(:relation) { described_class.created_or_pushed } + + it 'includes events for pushing to existing refs' do + expect(relation).to include(event1) + end + + it 'includes events for creating new refs' do + expect(relation).to include(event2) + end + + it 'does not include events for removing refs' do + expect(relation).not_to include(event3) + end + end + + describe '.branch_events' do + let(:event1) { create(:push_event) } + let(:event2) { create(:push_event) } + + before do + create(:push_event_payload, event: event1, ref_type: :branch) + create(:push_event_payload, event: event2, ref_type: :tag) + end + + let(:relation) { described_class.branch_events } + + it 'includes events for branches' do + expect(relation).to include(event1) + end + + it 'does not include events for tags' do + expect(relation).not_to include(event2) + end + end + + describe '.without_existing_merge_requests' do + let(:project) { create(:project, :repository) } + let(:event1) { create(:push_event, project: project) } + let(:event2) { create(:push_event, project: project) } + let(:event3) { create(:push_event, project: project) } + let(:event4) { create(:push_event, project: project) } + + before do + create(:push_event_payload, event: event1, ref: 'foo', action: :created) + create(:push_event_payload, event: event2, ref: 'bar', action: :created) + create(:push_event_payload, event: event3, ref: 'baz', action: :removed) + create(:push_event_payload, event: event4, ref: 'baz', ref_type: :tag) + + project.repository.create_branch('bar', 'master') + + create( + :merge_request, + source_project: project, + target_project: project, + source_branch: 'bar' + ) + end + + let(:relation) { described_class.without_existing_merge_requests } + + it 'includes events that do not have a corresponding merge request' do + expect(relation).to include(event1) + end + + it 'does not include events that have a corresponding merge request' do + expect(relation).not_to include(event2) + end + + it 'does not include events for removed refs' do + expect(relation).not_to include(event3) + end + + it 'does not include events for pushing to tags' do + expect(relation).not_to include(event4) + end + end + describe '.sti_name' do it 'returns Event::PUSHED' do expect(described_class.sti_name).to eq(Event::PUSHED) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 73a1e47149c..3ba01313efb 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -716,7 +716,6 @@ describe User do it "applies defaults to user" do expect(user.projects_limit).to eq(Gitlab.config.gitlab.default_projects_limit) expect(user.can_create_group).to eq(Gitlab.config.gitlab.default_can_create_group) - expect(user.theme_id).to eq(Gitlab.config.gitlab.default_theme) expect(user.external).to be_falsey end end @@ -727,7 +726,6 @@ describe User do it "applies defaults to user" do expect(user.projects_limit).to eq(123) expect(user.can_create_group).to be_falsey - expect(user.theme_id).to eq(1) end end @@ -1349,56 +1347,24 @@ describe User do end describe "#recent_push" do - subject { create(:user) } - let!(:project1) { create(:project, :repository) } - let!(:project2) { create(:project, :repository, forked_from_project: project1) } - - let!(:push_event) do - event = create(:push_event, project: project2, author: subject) - - create(:push_event_payload, - event: event, - commit_to: '1cf19a015df3523caf0a1f9d40c98a267d6a2fc2', - commit_count: 0, - ref: 'master') - - event - end - - before do - project1.team << [subject, :master] - project2.team << [subject, :master] - end - - it "includes push event" do - expect(subject.recent_push).to eq(push_event) - end - - it "excludes push event if branch has been deleted" do - allow_any_instance_of(Repository).to receive(:branch_exists?).with('master').and_return(false) - - expect(subject.recent_push).to eq(nil) - end + let(:user) { build(:user) } + let(:project) { build(:project) } + let(:event) { build(:push_event) } - it "excludes push event if MR is opened for it" do - create(:merge_request, source_project: project2, target_project: project1, source_branch: project2.default_branch, target_branch: 'fix', author: subject) + it 'returns the last push event for the user' do + expect_any_instance_of(Users::LastPushEventService) + .to receive(:last_event_for_user) + .and_return(event) - expect(subject.recent_push).to eq(nil) + expect(user.recent_push).to eq(event) end - it "includes push events on any of the provided projects" do - expect(subject.recent_push(project1)).to eq(nil) - expect(subject.recent_push(project2)).to eq(push_event) - - push_event1 = create(:push_event, project: project1, author: subject) - - create(:push_event_payload, - event: push_event1, - commit_to: '1cf19a015df3523caf0a1f9d40c98a267d6a2fc2', - commit_count: 0, - ref: 'master') + it 'returns the last push event for a project when one is given' do + expect_any_instance_of(Users::LastPushEventService) + .to receive(:last_event_for_project) + .and_return(event) - expect(subject.recent_push([project1, project2])).to eq(push_event1) # Newest + expect(user.recent_push(project)).to eq(event) end end diff --git a/spec/services/event_create_service_spec.rb b/spec/services/event_create_service_spec.rb index 02d7ddeb86b..13395a7cac3 100644 --- a/spec/services/event_create_service_spec.rb +++ b/spec/services/event_create_service_spec.rb @@ -149,6 +149,14 @@ describe EventCreateService do .to change { user_activity(user) } end + it 'caches the last push event for the user' do + expect_any_instance_of(Users::LastPushEventService) + .to receive(:cache_last_push_event) + .with(an_instance_of(PushEvent)) + + service.push(project, user, push_data) + end + it 'does not create any event data when an error is raised' do payload_service = double(:service) diff --git a/spec/services/users/last_push_event_service_spec.rb b/spec/services/users/last_push_event_service_spec.rb new file mode 100644 index 00000000000..956358738fe --- /dev/null +++ b/spec/services/users/last_push_event_service_spec.rb @@ -0,0 +1,112 @@ +require 'spec_helper' + +describe Users::LastPushEventService do + let(:user) { build(:user, id: 1) } + let(:project) { build(:project, id: 2) } + let(:event) { build(:push_event, id: 3, author: user, project: project) } + let(:service) { described_class.new(user) } + + describe '#cache_last_push_event' do + it "caches the event for the event's project and current user" do + expect(service).to receive(:set_key) + .ordered + .with('last-push-event/1/2', 3) + + expect(service).to receive(:set_key) + .ordered + .with('last-push-event/1', 3) + + service.cache_last_push_event(event) + end + + it 'caches the event for the origin project when pushing to a fork' do + source = build(:project, id: 5) + + allow(project).to receive(:forked?).and_return(true) + allow(project).to receive(:forked_from_project).and_return(source) + + expect(service).to receive(:set_key) + .ordered + .with('last-push-event/1/2', 3) + + expect(service).to receive(:set_key) + .ordered + .with('last-push-event/1', 3) + + expect(service).to receive(:set_key) + .ordered + .with('last-push-event/1/5', 3) + + service.cache_last_push_event(event) + end + end + + describe '#last_event_for_user' do + it 'returns the last push event for the current user' do + expect(service).to receive(:find_cached_event) + .with('last-push-event/1') + .and_return(event) + + expect(service.last_event_for_user).to eq(event) + end + + it 'returns nil when no push event could be found' do + expect(service).to receive(:find_cached_event) + .with('last-push-event/1') + .and_return(nil) + + expect(service.last_event_for_user).to be_nil + end + end + + describe '#last_event_for_project' do + it 'returns the last push event for the given project' do + expect(service).to receive(:find_cached_event) + .with('last-push-event/1/2') + .and_return(event) + + expect(service.last_event_for_project(project)).to eq(event) + end + + it 'returns nil when no push event could be found' do + expect(service).to receive(:find_cached_event) + .with('last-push-event/1/2') + .and_return(nil) + + expect(service.last_event_for_project(project)).to be_nil + end + end + + describe '#find_cached_event', :use_clean_rails_memory_store_caching do + context 'with a non-existing cache key' do + it 'returns nil' do + expect(service.find_cached_event('bla')).to be_nil + end + end + + context 'with an existing cache key' do + before do + service.cache_last_push_event(event) + end + + it 'returns a PushEvent when no merge requests exist for the event' do + allow(service).to receive(:find_event_in_database) + .with(event.id) + .and_return(event) + + expect(service.find_cached_event('last-push-event/1')).to eq(event) + end + + it 'removes the cache key when no event could be found and returns nil' do + allow(PushEvent).to receive(:without_existing_merge_requests) + .and_return(PushEvent.none) + + expect(Rails.cache).to receive(:delete) + .with('last-push-event/1') + .and_call_original + + expect(service.find_cached_event('last-push-event/1')).to be_nil + end + end + end +end diff --git a/spec/support/gitlab_stubs/session.json b/spec/support/gitlab_stubs/session.json index 688175369ae..cd55d63125e 100644 --- a/spec/support/gitlab_stubs/session.json +++ b/spec/support/gitlab_stubs/session.json @@ -7,7 +7,7 @@ "skype":"aertert", "linkedin":"", "twitter":"", - "theme_id":2,"color_scheme_id":2, + "color_scheme_id":2, "state":"active", "created_at":"2012-12-21T13:02:20Z", "extern_uid":null, diff --git a/spec/support/gitlab_stubs/user.json b/spec/support/gitlab_stubs/user.json index ce8dfe5ae75..cd55d63125e 100644 --- a/spec/support/gitlab_stubs/user.json +++ b/spec/support/gitlab_stubs/user.json @@ -7,7 +7,7 @@ "skype":"aertert", "linkedin":"", "twitter":"", - "theme_id":2,"color_scheme_id":2, + "color_scheme_id":2, "state":"active", "created_at":"2012-12-21T13:02:20Z", "extern_uid":null, @@ -17,4 +17,4 @@ "can_create_project":false, "private_token":"Wvjy2Krpb7y8xi93owUz", "access_token":"Wvjy2Krpb7y8xi93owUz" -}
\ No newline at end of file +} diff --git a/vendor/gitlab-ci-yml/CONTRIBUTING.md b/vendor/gitlab-ci-yml/CONTRIBUTING.md index 6e5160a2487..d4c057bf9dc 100644 --- a/vendor/gitlab-ci-yml/CONTRIBUTING.md +++ b/vendor/gitlab-ci-yml/CONTRIBUTING.md @@ -1,5 +1,47 @@ -The canonical repository for `.gitlab-ci.yml` templates is -https://gitlab.com/gitlab-org/gitlab-ci-yml. +## Contributing + +Thank you for your interest in contributing to this GitLab project! We welcome +all contributions. By participating in this project, you agree to abide by the +[code of conduct](#code-of-conduct). + +## Contributor license agreement + +By submitting code as an individual you agree to the [individual contributor +license agreement][individual-agreement]. + +By submitting code as an entity you agree to the [corporate contributor license +agreement][corporate-agreement]. + +## Code of conduct + +As contributors and maintainers of this project, we pledge to respect all people +who contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, or religion. + +Examples of unacceptable behavior by participants include the use of sexual +language or imagery, derogatory comments or personal attacks, trolling, public +or private harassment, insults, or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct. Project maintainers who do not follow the +Code of Conduct may be removed from the project team. + +This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior can be +reported by emailing contact@gitlab.com. + +This Code of Conduct is adapted from the [Contributor Covenant][contributor-covenant], version 1.1.0, +available at [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/). + +[contributor-covenant]: http://contributor-covenant.org +[individual-agreement]: https://docs.gitlab.com/ee/legal/individual_contributor_license_agreement.html +[corporate-agreement]: https://docs.gitlab.com/ee/legal/corporate_contributor_license_agreement.html -GitLab only mirrors the templates. Please submit your merge requests to -https://gitlab.com/gitlab-org/gitlab-ci-yml. diff --git a/vendor/gitlab-ci-yml/autodeploy/Kubernetes-with-canary.gitlab-ci.yml b/vendor/gitlab-ci-yml/autodeploy/Kubernetes-with-canary.gitlab-ci.yml index 06b0c84e516..6e5fe97cf6d 100644 --- a/vendor/gitlab-ci-yml/autodeploy/Kubernetes-with-canary.gitlab-ci.yml +++ b/vendor/gitlab-ci-yml/autodeploy/Kubernetes-with-canary.gitlab-ci.yml @@ -1,3 +1,6 @@ +# This template has been DEPRECATED. Consider using Auto DevOps instead: +# https://docs.gitlab.com/ee/topics/autodevops + # Explanation on the scripts: # https://gitlab.com/gitlab-examples/kubernetes-deploy/blob/master/README.md image: registry.gitlab.com/gitlab-examples/kubernetes-deploy diff --git a/vendor/gitlab-ci-yml/autodeploy/Kubernetes.gitlab-ci.yml b/vendor/gitlab-ci-yml/autodeploy/Kubernetes.gitlab-ci.yml index 722934b7981..019a4d4cd7d 100644 --- a/vendor/gitlab-ci-yml/autodeploy/Kubernetes.gitlab-ci.yml +++ b/vendor/gitlab-ci-yml/autodeploy/Kubernetes.gitlab-ci.yml @@ -1,3 +1,6 @@ +# This template has been DEPRECATED. Consider using Auto DevOps instead: +# https://docs.gitlab.com/ee/topics/autodevops + # Explanation on the scripts: # https://gitlab.com/gitlab-examples/kubernetes-deploy/blob/master/README.md image: registry.gitlab.com/gitlab-examples/kubernetes-deploy diff --git a/vendor/gitlab-ci-yml/autodeploy/OpenShift.gitlab-ci.yml b/vendor/gitlab-ci-yml/autodeploy/OpenShift.gitlab-ci.yml index acba718ebe4..60a9430a839 100644 --- a/vendor/gitlab-ci-yml/autodeploy/OpenShift.gitlab-ci.yml +++ b/vendor/gitlab-ci-yml/autodeploy/OpenShift.gitlab-ci.yml @@ -1,3 +1,6 @@ +# This template has been DEPRECATED. Consider using Auto DevOps instead: +# https://docs.gitlab.com/ee/topics/autodevops + # Explanation on the scripts: # https://gitlab.com/gitlab-examples/openshift-deploy/blob/master/README.md image: registry.gitlab.com/gitlab-examples/openshift-deploy diff --git a/vendor/licenses.csv b/vendor/licenses.csv index 5beb3e5e9bf..24623ff4c1f 100644 --- a/vendor/licenses.csv +++ b/vendor/licenses.csv @@ -1,5 +1,5 @@ RedCloth,4.3.2,MIT -abbrev,1.1.0,ISC +abbrev,1.0.9,ISC accepts,1.3.3,MIT ace-rails-ap,4.1.2,MIT acorn,5.1.1,MIT @@ -15,9 +15,8 @@ activesupport,4.2.8,MIT acts-as-taggable-on,4.0.0,MIT addressable,2.3.8,Apache 2.0 after,0.8.2,MIT -after_commit_queue,1.3.0,MIT -ajv,4.11.8,MIT -ajv-keywords,1.5.1,MIT +ajv,5.2.0,MIT +ajv-keywords,2.1.0,MIT akismet,2.0.0,MIT align-text,0.1.4,MIT allocations,1.0.5,MIT @@ -26,15 +25,15 @@ amdefine,1.0.1,BSD-3-Clause OR MIT ansi-escapes,1.4.0,MIT ansi-html,0.0.5,"Apache, Version 2.0" ansi-regex,2.1.1,MIT -ansi-styles,3.1.0,MIT -anymatch,1.3.0,ISC +ansi-styles,2.2.1,MIT +anymatch,1.3.2,ISC append-transform,0.4.0,MIT -aproba,1.1.2,ISC +aproba,1.1.1,ISC are-we-there-yet,1.1.4,ISC arel,6.0.4,MIT argparse,1.0.9,MIT arr-diff,2.0.0,MIT -arr-flatten,1.1.0,MIT +arr-flatten,1.0.1,MIT array-find,1.0.0,MIT array-find-index,1.0.2,MIT array-flatten,1.1.1,MIT @@ -51,7 +50,7 @@ asn1,0.2.3,MIT asn1.js,4.9.1,MIT assert,1.4.1,MIT assert-plus,0.2.0,MIT -async,0.2.10,MIT +async,2.4.1,MIT async-each,1.0.1,MIT asynckit,0.4.0,MIT atomic,1.1.99,Apache 2.0 @@ -63,28 +62,29 @@ autoprefixer-rails,6.2.3,MIT aws-sign2,0.6.0,Apache 2.0 aws4,1.6.0,MIT axiom-types,0.1.1,MIT +axios,0.16.2,MIT babel-code-frame,6.22.0,MIT -babel-core,6.25.0,MIT -babel-eslint,7.2.3,MIT -babel-generator,6.25.0,MIT -babel-helper-bindify-decorators,6.24.1,MIT -babel-helper-builder-binary-assignment-operator-visitor,6.24.1,MIT -babel-helper-call-delegate,6.24.1,MIT -babel-helper-define-map,6.24.1,MIT -babel-helper-explode-assignable-expression,6.24.1,MIT -babel-helper-explode-class,6.24.1,MIT -babel-helper-function-name,6.24.1,MIT -babel-helper-get-function-arity,6.24.1,MIT -babel-helper-hoist-variables,6.24.1,MIT -babel-helper-optimise-call-expression,6.24.1,MIT -babel-helper-regex,6.24.1,MIT -babel-helper-remap-async-to-generator,6.24.1,MIT -babel-helper-replace-supers,6.24.1,MIT -babel-helpers,6.24.1,MIT -babel-loader,6.4.1,MIT +babel-core,6.23.1,MIT +babel-eslint,7.2.1,MIT +babel-generator,6.23.0,MIT +babel-helper-bindify-decorators,6.22.0,MIT +babel-helper-builder-binary-assignment-operator-visitor,6.22.0,MIT +babel-helper-call-delegate,6.22.0,MIT +babel-helper-define-map,6.23.0,MIT +babel-helper-explode-assignable-expression,6.22.0,MIT +babel-helper-explode-class,6.22.0,MIT +babel-helper-function-name,6.23.0,MIT +babel-helper-get-function-arity,6.22.0,MIT +babel-helper-hoist-variables,6.22.0,MIT +babel-helper-optimise-call-expression,6.23.0,MIT +babel-helper-regex,6.22.0,MIT +babel-helper-remap-async-to-generator,6.22.0,MIT +babel-helper-replace-supers,6.23.0,MIT +babel-helpers,6.23.0,MIT +babel-loader,7.1.1,MIT babel-messages,6.23.0,MIT babel-plugin-check-es2015-constants,6.22.0,MIT -babel-plugin-istanbul,4.1.4,New BSD +babel-plugin-istanbul,4.0.0,New BSD babel-plugin-syntax-async-functions,6.13.0,MIT babel-plugin-syntax-async-generators,6.13.0,MIT babel-plugin-syntax-class-properties,6.13.0,MIT @@ -93,83 +93,82 @@ babel-plugin-syntax-dynamic-import,6.18.0,MIT babel-plugin-syntax-exponentiation-operator,6.13.0,MIT babel-plugin-syntax-object-rest-spread,6.13.0,MIT babel-plugin-syntax-trailing-function-commas,6.22.0,MIT -babel-plugin-transform-async-generator-functions,6.24.1,MIT -babel-plugin-transform-async-to-generator,6.24.1,MIT -babel-plugin-transform-class-properties,6.24.1,MIT -babel-plugin-transform-decorators,6.24.1,MIT -babel-plugin-transform-define,1.3.0,MIT +babel-plugin-transform-async-generator-functions,6.22.0,MIT +babel-plugin-transform-async-to-generator,6.22.0,MIT +babel-plugin-transform-class-properties,6.23.0,MIT +babel-plugin-transform-decorators,6.22.0,MIT +babel-plugin-transform-define,1.2.0,MIT babel-plugin-transform-es2015-arrow-functions,6.22.0,MIT babel-plugin-transform-es2015-block-scoped-functions,6.22.0,MIT -babel-plugin-transform-es2015-block-scoping,6.24.1,MIT -babel-plugin-transform-es2015-classes,6.24.1,MIT -babel-plugin-transform-es2015-computed-properties,6.24.1,MIT +babel-plugin-transform-es2015-block-scoping,6.23.0,MIT +babel-plugin-transform-es2015-classes,6.23.0,MIT +babel-plugin-transform-es2015-computed-properties,6.22.0,MIT babel-plugin-transform-es2015-destructuring,6.23.0,MIT -babel-plugin-transform-es2015-duplicate-keys,6.24.1,MIT +babel-plugin-transform-es2015-duplicate-keys,6.22.0,MIT babel-plugin-transform-es2015-for-of,6.23.0,MIT -babel-plugin-transform-es2015-function-name,6.24.1,MIT +babel-plugin-transform-es2015-function-name,6.22.0,MIT babel-plugin-transform-es2015-literals,6.22.0,MIT -babel-plugin-transform-es2015-modules-amd,6.24.1,MIT -babel-plugin-transform-es2015-modules-commonjs,6.24.1,MIT -babel-plugin-transform-es2015-modules-systemjs,6.24.1,MIT -babel-plugin-transform-es2015-modules-umd,6.24.1,MIT -babel-plugin-transform-es2015-object-super,6.24.1,MIT -babel-plugin-transform-es2015-parameters,6.24.1,MIT -babel-plugin-transform-es2015-shorthand-properties,6.24.1,MIT +babel-plugin-transform-es2015-modules-amd,6.24.0,MIT +babel-plugin-transform-es2015-modules-commonjs,6.24.0,MIT +babel-plugin-transform-es2015-modules-systemjs,6.23.0,MIT +babel-plugin-transform-es2015-modules-umd,6.24.0,MIT +babel-plugin-transform-es2015-object-super,6.22.0,MIT +babel-plugin-transform-es2015-parameters,6.23.0,MIT +babel-plugin-transform-es2015-shorthand-properties,6.22.0,MIT babel-plugin-transform-es2015-spread,6.22.0,MIT -babel-plugin-transform-es2015-sticky-regex,6.24.1,MIT +babel-plugin-transform-es2015-sticky-regex,6.22.0,MIT babel-plugin-transform-es2015-template-literals,6.22.0,MIT babel-plugin-transform-es2015-typeof-symbol,6.23.0,MIT -babel-plugin-transform-es2015-unicode-regex,6.24.1,MIT -babel-plugin-transform-exponentiation-operator,6.24.1,MIT +babel-plugin-transform-es2015-unicode-regex,6.22.0,MIT +babel-plugin-transform-exponentiation-operator,6.22.0,MIT babel-plugin-transform-object-rest-spread,6.23.0,MIT -babel-plugin-transform-regenerator,6.24.1,MIT -babel-plugin-transform-strict-mode,6.24.1,MIT -babel-preset-es2015,6.24.1,MIT -babel-preset-es2016,6.24.1,MIT -babel-preset-es2017,6.24.1,MIT -babel-preset-latest,6.24.1,MIT -babel-preset-stage-2,6.24.1,MIT -babel-preset-stage-3,6.24.1,MIT -babel-register,6.24.1,MIT -babel-runtime,6.23.0,MIT -babel-template,6.25.0,MIT -babel-traverse,6.25.0,MIT -babel-types,6.25.0,MIT +babel-plugin-transform-regenerator,6.22.0,MIT +babel-plugin-transform-strict-mode,6.22.0,MIT +babel-preset-es2015,6.24.0,MIT +babel-preset-es2016,6.22.0,MIT +babel-preset-es2017,6.22.0,MIT +babel-preset-latest,6.24.0,MIT +babel-preset-stage-2,6.22.0,MIT +babel-preset-stage-3,6.22.0,MIT +babel-register,6.23.0,MIT +babel-runtime,6.22.0,MIT +babel-template,6.23.0,MIT +babel-traverse,6.23.1,MIT +babel-types,6.23.0,MIT babosa,1.0.2,MIT -babylon,6.17.4,MIT +babylon,6.16.1,MIT backo2,1.0.2,MIT balanced-match,1.0.0,MIT base32,0.3.2,MIT base64-arraybuffer,0.1.5,MIT -base64-js,1.2.1,MIT +base64-js,1.2.0,MIT base64id,1.0.0,MIT batch,0.6.1,MIT bcrypt,3.1.11,MIT bcrypt-pbkdf,1.0.1,New BSD +bcrypt_pbkdf,1.0.0,MIT better-assert,1.0.2,MIT big.js,3.1.3,MIT -binary-extensions,1.8.0,MIT +binary-extensions,1.10.0,MIT bindata,2.3.5,ruby blob,0.0.4,unknown block-stream,0.0.9,ISC -bluebird,3.5.0,MIT -bn.js,4.11.7,MIT +bluebird,2.11.0,MIT +bn.js,4.11.6,MIT body-parser,1.17.2,MIT bonjour,3.5.0,MIT boom,2.10.1,New BSD -bootsnap,1.1.1,MIT bootstrap-sass,3.3.6,MIT -bootstrap-sass,3.3.7,MIT bootstrap_form,2.7.0,MIT brace-expansion,1.1.8,MIT braces,1.8.5,MIT -brorand,1.1.0,MIT +brorand,1.0.7,MIT browser,2.2.0,MIT browserify-aes,1.0.6,MIT browserify-cipher,1.0.0,MIT browserify-des,1.0.0,MIT browserify-rsa,4.0.1,MIT -browserify-sign,4.0.4,ISC +browserify-sign,4.0.0,ISC browserify-zlib,0.1.4,MIT browserslist,1.7.7,MIT buffer,4.9.1,MIT @@ -183,36 +182,33 @@ bytes,2.4.0,MIT caller-path,0.1.0,MIT callsite,1.0.0,unknown callsites,0.2.0,MIT -camelcase,1.2.1,MIT +camelcase,4.1.0,MIT camelcase-keys,2.1.0,MIT caniuse-api,1.6.1,MIT -caniuse-db,1.0.30000699,CC-BY-4.0 +caniuse-db,1.0.30000649,CC-BY-4.0 carrierwave,1.1.0,MIT caseless,0.12.0,Apache 2.0 cause,0.1,MIT center-align,0.1.3,MIT chalk,1.1.3,MIT -charlock_holmes,0.7.3,MIT +charlock_holmes,0.7.5,MIT chokidar,1.7.0,MIT chronic,0.10.2,MIT chronic_duration,0.10.6,MIT chunky_png,1.3.5,MIT -cipher-base,1.0.4,MIT -circular-json,0.3.1,MIT +cipher-base,1.0.3,MIT +circular-json,0.3.3,MIT citrus,3.0.2,MIT -clap,1.2.0,MIT +clap,1.1.3,MIT cli-cursor,1.0.2,MIT cli-width,2.1.0,ISC -clipboard,1.7.1,MIT -cliui,2.1.0,ISC +clipboard,1.6.1,MIT +cliui,3.2.0,ISC clone,1.0.2,MIT co,4.6.0,MIT -coa,1.0.4,MIT +coa,1.0.1,MIT code-point-at,1.1.0,MIT coercible,1.0.0,MIT -coffee-rails,4.1.1,MIT -coffee-script,2.4.1,MIT -coffee-script-source,1.10.0,MIT color,0.11.4,MIT color-convert,1.9.0,MIT color-name,1.1.2,MIT @@ -221,20 +217,20 @@ colormin,1.1.2,MIT colors,1.1.2,MIT combine-lists,1.0.1,MIT combined-stream,1.0.5,MIT -commander,2.11.0,MIT +commander,2.9.0,MIT commondir,1.0.1,MIT component-bind,1.0.0,unknown component-emitter,1.2.1,MIT component-inherit,0.0.3,unknown -compressible,2.0.10,MIT +compressible,2.0.11,MIT compression,1.7.0,MIT -compression-webpack-plugin,0.3.2,MIT +compression-webpack-plugin,1.0.0,MIT concat-map,0.0.1,MIT concat-stream,1.6.0,MIT concurrent-ruby-ext,1.0.5,MIT config-chain,1.1.11,MIT configstore,1.4.0,Simplified BSD -connect,3.6.2,MIT +connect,3.6.3,MIT connect-history-api-fallback,1.3.0,MIT connection_pool,2.2.1,MIT console-browserify,1.1.0,MIT @@ -244,22 +240,25 @@ constants-browserify,1.0.0,MIT contains-path,0.1.0,MIT content-disposition,0.5.2,MIT content-type,1.0.2,MIT -convert-source-map,1.5.0,MIT +convert-source-map,1.3.0,MIT cookie,0.3.1,MIT cookie-signature,1.0.6,MIT +copy-webpack-plugin,4.0.1,MIT core-js,2.4.1,MIT core-util-is,1.0.2,MIT -cosmiconfig,2.1.3,MIT +cosmiconfig,2.1.1,MIT crack,0.4.3,MIT create-ecdh,4.0.0,MIT -create-hash,1.1.3,MIT -create-hmac,1.1.6,MIT +create-hash,1.1.2,MIT +create-hmac,1.1.4,MIT creole,0.5.0,ruby +cropper,2.3.0,MIT +cross-spawn,5.1.0,MIT cryptiles,2.0.5,New BSD crypto-browserify,3.11.0,MIT css-color-names,0.0.4,MIT -css-loader,0.28.4,MIT -css-selector-tokenizer,"",unknown +css-loader,0.28.0,MIT +css-selector-tokenizer,0.7.0,MIT css_parser,1.5.0,MIT cssesc,0.1.0,MIT cssnano,3.10.0,MIT @@ -267,7 +266,7 @@ csso,2.3.2,MIT currently-unhandled,0.4.1,MIT custom-event,1.0.1,MIT d,1.0.0,MIT -d3,3.5.17,New BSD +d3,3.5.11,New BSD d3_rails,3.5.11,MIT dashdash,1.14.1,MIT date-now,0.1.4,MIT @@ -276,18 +275,18 @@ debug,2.6.8,MIT debugger-ruby_core_source,1.3.8,MIT decamelize,1.2.0,MIT deckar01-task_list,2.0.0,MIT +decompress-response,3.3.0,MIT deep-equal,1.0.1,MIT deep-extend,0.4.2,MIT deep-is,0.1.3,MIT default-require-extensions,1.0.0,MIT default_value_for,3.0.2,MIT -defaults,1.0.3,MIT defined,1.0.0,MIT del,2.2.2,MIT delayed-stream,1.0.0,MIT -delegate,3.1.3,MIT +delegate,3.1.2,MIT delegates,1.0.0,MIT -depd,1.1.0,MIT +depd,1.1.1,MIT des.js,1.0.0,MIT descendants_tracker,0.0.4,MIT destroy,1.0.4,MIT @@ -296,48 +295,49 @@ detect-node,2.0.3,ISC devise,4.2.0,MIT devise-two-factor,3.0.0,MIT di,0.0.1,MIT -diff-lcs,1.2.5,"MIT,Perl Artistic v2,GNU GPL v2" +diff-lcs,1.3,"MIT,Artistic-2.0,GPL-2.0+" diffie-hellman,5.0.2,MIT diffy,3.1.0,MIT dns-equal,1.0.0,MIT -dns-packet,1.1.1,MIT +dns-packet,1.2.2,MIT dns-txt,2.0.2,MIT doctrine,2.0.0,Apache 2.0 -document-register-element,1.5.0,MIT +document-register-element,1.3.0,MIT dom-serialize,2.2.1,MIT dom-serializer,0.1.0,MIT domain-browser,1.1.7,MIT domain_name,0.5.20161021,"Simplified BSD,New BSD,Mozilla Public License 2.0" domelementtype,1.3.0,unknown -domhandler,2.4.1,Simplified BSD -domutils,1.6.2,Simplified BSD +domhandler,2.3.0,unknown +domutils,1.5.1,unknown doorkeeper,4.2.0,MIT doorkeeper-openid_connect,1.1.2,MIT -dropzone,4.3.0,MIT +dropzone,4.2.0,MIT dropzonejs-rails,0.7.2,MIT duplexer,0.1.1,MIT -duplexify,3.5.0,MIT +duplexer3,0.1.4,New BSD +duplexify,3.5.1,MIT ecc-jsbn,0.1.1,MIT editorconfig,0.13.2,MIT ee-first,1.1.1,MIT ejs,2.5.6,Apache 2.0 -electron-to-chromium,1.3.15,ISC -elliptic,6.4.0,MIT +electron-to-chromium,1.3.3,ISC +elliptic,6.3.3,MIT email_reply_trimmer,0.1.6,MIT emoji-unicode-version,0.2.1,MIT emojis-list,2.1.0,MIT encodeurl,1.0.1,MIT encryptor,3.0.0,MIT -end-of-stream,1.0.0,MIT +end-of-stream,1.4.0,MIT engine.io,1.8.3,MIT engine.io-client,1.8.3,MIT engine.io-parser,1.3.2,MIT -enhanced-resolve,3.3.0,MIT +enhanced-resolve,3.4.1,MIT ent,2.2.0,MIT entities,1.1.1,BSD-like equalizer,0.0.11,MIT errno,0.1.4,MIT -error-ex,1.3.1,MIT +error-ex,1.3.0,MIT erubis,2.7.0,MIT es5-ext,0.10.24,MIT es6-iterator,2.0.1,MIT @@ -345,7 +345,7 @@ es6-map,0.1.5,MIT es6-promise,3.0.2,MIT es6-set,0.1.5,MIT es6-symbol,3.1.1,MIT -es6-weak-map,2.0.2,MIT +es6-weak-map,2.0.1,MIT escape-html,1.0.3,MIT escape-string-regexp,1.0.5,MIT escape_utils,1.1.1,MIT @@ -353,19 +353,19 @@ escodegen,1.8.1,Simplified BSD escope,3.6.0,Simplified BSD eslint,3.19.0,MIT eslint-config-airbnb-base,10.0.1,MIT -eslint-import-resolver-node,0.3.1,MIT +eslint-import-resolver-node,0.2.3,MIT eslint-import-resolver-webpack,0.8.3,MIT -eslint-module-utils,2.1.1,MIT -eslint-plugin-filenames,1.2.0,MIT -eslint-plugin-html,2.0.3,ISC -eslint-plugin-import,2.7.0,MIT -eslint-plugin-jasmine,2.7.1,MIT +eslint-module-utils,2.0.0,MIT +eslint-plugin-filenames,1.1.0,MIT +eslint-plugin-html,2.0.1,ISC +eslint-plugin-import,2.2.0,MIT +eslint-plugin-jasmine,2.2.0,MIT eslint-plugin-promise,3.5.0,ISC -espree,3.4.3,Simplified BSD -esprima,2.7.3,Simplified BSD +espree,3.5.0,Simplified BSD +esprima,4.0.0,Simplified BSD esquery,1.0.0,BSD -esrecurse,4.2.0,Simplified BSD -estraverse,4.2.0,Simplified BSD +esrecurse,4.1.0,Simplified BSD +estraverse,4.1.1,Simplified BSD esutils,2.0.2,BSD et-orbi,1.0.3,MIT etag,1.8.0,MIT @@ -376,14 +376,15 @@ eventemitter3,1.2.0,MIT events,1.1.1,MIT eventsource,0.1.6,MIT evp_bytestokey,1.0.0,MIT -excon,0.55.0,MIT +excon,0.57.1,MIT +execa,0.7.0,MIT execjs,2.6.0,MIT exit-hook,1.1.1,MIT expand-braces,0.1.2,MIT expand-brackets,0.1.5,MIT expand-range,1.8.2,MIT exports-loader,0.6.4,MIT -express,4.15.3,MIT +express,4.15.4,MIT expression_parser,0.9.0,MIT extend,3.0.1,MIT extglob,0.3.2,MIT @@ -392,40 +393,41 @@ extsprintf,1.0.2,MIT faraday,0.12.1,MIT faraday_middleware,0.11.0.1,MIT faraday_middleware-multi_json,0.0.6,MIT -fast-deep-equal,1.0.0,MIT +fast-deep-equal,0.1.0,MIT fast-levenshtein,2.0.6,MIT fast_gettext,1.4.0,"MIT,ruby" fastparse,1.1.1,MIT faye-websocket,0.7.3,MIT -ffi,1.9.10,BSD +ffi,1.9.18,New BSD figures,1.7.0,MIT file-entry-cache,2.0.0,MIT -file-loader,0.11.2,MIT -filename-regex,2.0.1,MIT +file-loader,0.11.1,MIT +filename-regex,2.0.0,MIT fileset,2.0.3,MIT filesize,3.3.0,New BSD fill-range,2.2.3,MIT -finalhandler,1.0.3,MIT -find-cache-dir,0.1.1,MIT +finalhandler,1.0.4,MIT +find-cache-dir,1.0.0,MIT find-root,0.1.2,MIT -find-up,1.1.2,MIT +find-up,2.1.0,MIT flat-cache,1.2.2,MIT flatten,1.0.2,MIT flipper,0.10.2,MIT flipper-active_record,0.10.2,MIT flowdock,0.7.1,MIT fog-aliyun,0.1.0,MIT -fog-aws,0.13.0,MIT -fog-core,1.44.1,MIT -fog-google,0.5.0,MIT +fog-aws,1.4.0,MIT +fog-core,1.44.3,MIT +fog-google,0.5.3,MIT fog-json,1.0.2,MIT -fog-local,0.3.0,MIT -fog-openstack,0.1.6,MIT +fog-local,0.3.1,MIT +fog-openstack,0.1.21,MIT fog-rackspace,0.1.1,MIT fog-xml,0.1.3,MIT +follow-redirects,1.2.3,MIT font-awesome-rails,4.7.0.1,"MIT,SIL Open Font License" -for-in,1.0.2,MIT -for-own,0.1.5,MIT +for-in,0.1.6,MIT +for-own,0.1.4,MIT forever-agent,0.6.1,Apache 2.0 form-data,2.1.4,MIT formatador,0.2.5,MIT @@ -433,6 +435,7 @@ forwarded,0.1.0,MIT fresh,0.5.0,MIT from,0.1.7,MIT fs-access,1.0.1,MIT +fs-extra,0.26.7,MIT fs.realpath,1.0.0,ISC fsevents,1.1.2,MIT fstream,1.0.11,ISC @@ -440,45 +443,50 @@ fstream-ignore,1.0.5,ISC function-bind,1.1.0,MIT gauge,2.7.4,ISC gemnasium-gitlab-service,0.2.6,MIT -gemojione,3.0.1,MIT +gemojione,3.3.0,MIT generate-function,2.0.0,MIT generate-object-property,1.2.0,MIT get-caller-file,1.0.2,ISC get-stdin,4.0.1,MIT +get-stream,3.0.0,MIT get_process_mem,0.2.0,MIT getpass,0.1.7,MIT gettext_i18n_rails,1.8.0,MIT gettext_i18n_rails_js,1.2.0,MIT -gitaly,0.14.0,MIT +gitaly-proto,0.33.0,MIT github-linguist,4.7.6,MIT -github-markup,1.4.0,MIT +github-markup,1.6.1,MIT gitlab-flowdock-git-hook,1.0.1,MIT gitlab-grit,2.8.1,MIT gitlab-markup,1.5.1,MIT -gitlab_omniauth-ldap,1.2.1,MIT -glob,7.1.2,ISC +gitlab_omniauth-ldap,2.0.4,MIT +glob,6.0.4,ISC glob-base,0.3.0,MIT glob-parent,2.0.0,ISC globalid,0.3.7,MIT globals,9.18.0,MIT globby,5.0.0,MIT gollum-grit_adapter,1.0.1,MIT -gollum-lib,4.2.1,MIT +gollum-lib,4.2.7,MIT gollum-rugged_adapter,0.4.4,MIT gon,6.1.0,MIT good-listener,1.2.2,MIT google-api-client,0.8.7,Apache 2.0 -google-protobuf,3.2.0.2,New BSD +google-protobuf,3.4.0.2,New BSD googleauth,0.5.1,Apache 2.0 -got,3.3.1,MIT +got,7.1.0,MIT +gpgme,2.0.13,LGPL-2.1+ graceful-fs,4.1.11,ISC -grape,0.19.1,MIT +graceful-readlink,1.0.1,MIT +grape,1.0.0,MIT grape-entity,0.6.0,MIT -grpc,1.4.0,New BSD +grape-route-helpers,2.1.0,MIT +grape_logging,1.6.0,MIT +grpc,1.4.5,New BSD gzip-size,3.0.0,MIT hamlit,2.6.1,MIT handle-thing,1.2.5,MIT -handlebars,4.0.10,MIT +handlebars,4.0.6,MIT har-schema,1.0.5,ISC har-validator,4.2.1,ISC has,1.0.1,MIT @@ -486,20 +494,20 @@ has-ansi,2.0.0,MIT has-binary,0.1.7,MIT has-cors,1.1.0,MIT has-flag,2.0.0,MIT +has-symbol-support-x,1.3.0,MIT +has-to-string-tag-x,1.3.0,MIT has-unicode,2.0.1,ISC -hash-base,2.0.2,MIT hash-sum,1.0.2,MIT -hash.js,1.1.3,MIT -hashie,3.5.5,MIT +hash.js,1.0.3,MIT +hashie,3.5.6,MIT hashie-forbidden_attributes,0.1.1,MIT hawk,3.1.3,New BSD he,1.1.1,MIT health_check,2.6.0,MIT hipchat,1.5.2,MIT -hmac-drbg,1.0.1,MIT hoek,2.16.3,New BSD home-or-tmp,2.0.0,MIT -hosted-git-info,2.5.0,ISC +hosted-git-info,2.2.0,ISC hpack.js,2.1.6,MIT html-comment-regex,1.1.1,MIT html-entities,1.2.0,MIT @@ -510,7 +518,7 @@ htmlparser2,3.9.2,MIT http,0.9.8,MIT http-cookie,1.0.3,MIT http-deceiver,1.2.7,MIT -http-errors,1.6.1,MIT +http-errors,1.6.2,MIT http-form_data,1.0.1,MIT http-proxy,1.16.2,MIT http-proxy-middleware,0.17.4,MIT @@ -519,15 +527,15 @@ http_parser.rb,0.6.0,MIT httparty,0.13.7,MIT httpclient,2.8.2,ruby https-browserify,0.0.1,MIT -i18n,0.8.1,MIT +i18n,0.8.6,MIT ice_nine,0.11.2,MIT iconv-lite,0.4.15,MIT -icss-replace-symbols,1.1.0,ISC -icss-utils,2.1.0,ISC +icss-replace-symbols,1.0.2,ISC ieee754,1.1.8,New BSD ignore,3.3.3,MIT ignore-by-default,1.0.1,ISC immediate,3.0.6,MIT +imports-loader,0.7.1,MIT imurmurhash,0.1.4,MIT indent-string,2.1.0,MIT indexes-of,1.0.1,MIT @@ -539,11 +547,11 @@ inherits,2.0.3,ISC ini,1.3.4,ISC inquirer,0.12.0,MIT internal-ip,1.2.0,MIT -interpret,1.0.3,MIT +interpret,1.0.1,MIT invariant,2.2.2,New BSD invert-kv,1.0.0,MIT ip,1.1.5,MIT -ipaddr.js,1.3.0,MIT +ipaddr.js,1.4.0,MIT ipaddress,0.8.3,MIT is-absolute,0.2.6,MIT is-absolute-url,2.1.0,MIT @@ -551,17 +559,17 @@ is-arrayish,0.2.1,MIT is-binary-path,1.0.1,MIT is-buffer,1.1.5,MIT is-builtin-module,1.0.0,MIT -is-directory,0.3.1,MIT -is-dotfile,1.0.3,MIT +is-dotfile,1.0.2,MIT is-equal-shallow,0.1.3,MIT is-extendable,0.1.1,MIT -is-extglob,1.0.0,MIT +is-extglob,2.1.1,MIT is-finite,1.0.2,MIT -is-fullwidth-code-point,1.0.0,MIT -is-glob,2.0.1,MIT +is-fullwidth-code-point,2.0.0,MIT +is-glob,3.1.0,MIT is-my-json-valid,2.16.0,MIT is-npm,1.0.0,MIT is-number,2.1.0,MIT +is-object,1.0.1,MIT is-path-cwd,1.0.0,MIT is-path-in-cwd,1.0.0,MIT is-path-inside,1.0.0,MIT @@ -572,6 +580,7 @@ is-property,1.0.2,MIT is-redirect,1.0.0,MIT is-relative,0.2.1,MIT is-resolvable,1.0.0,MIT +is-retry-allowed,1.1.0,MIT is-stream,1.1.0,MIT is-svg,2.1.0,MIT is-typedarray,1.0.0,MIT @@ -580,58 +589,64 @@ is-utf8,0.2.1,MIT is-windows,0.2.0,MIT isarray,1.0.0,MIT isbinaryfile,3.0.2,MIT -isexe,2.0.0,ISC +isexe,1.1.2,ISC isobject,2.1.0,MIT isstream,0.1.2,MIT istanbul,0.4.5,New BSD -istanbul-api,1.1.10,New BSD -istanbul-lib-coverage,1.1.1,New BSD -istanbul-lib-hook,1.0.7,New BSD -istanbul-lib-instrument,1.7.3,New BSD -istanbul-lib-report,1.1.1,New BSD -istanbul-lib-source-maps,1.2.1,New BSD -istanbul-reports,1.1.1,New BSD -jasmine-core,2.6.4,MIT +istanbul-api,1.1.1,New BSD +istanbul-lib-coverage,1.0.1,New BSD +istanbul-lib-hook,1.0.0,New BSD +istanbul-lib-instrument,1.4.2,New BSD +istanbul-lib-report,1.0.0-alpha.3,New BSD +istanbul-lib-source-maps,1.1.0,New BSD +istanbul-reports,1.0.1,New BSD +isurl,1.0.0,MIT +jasmine-core,2.6.3,MIT jasmine-jquery,2.1.1,MIT jed,1.1.1,MIT -jira-ruby,1.1.2,MIT +jira-ruby,1.4.1,MIT jodid25519,1.0.2,MIT -jquery,2.2.4,MIT +jquery,2.2.1,MIT jquery-atwho-rails,1.3.2,MIT jquery-rails,4.1.1,MIT -jquery-ujs,1.2.2,MIT +jquery-ujs,1.2.1,MIT js-base64,2.1.9,BSD -js-beautify,1.6.14,MIT -js-cookie,2.1.4,MIT -js-tokens,3.0.2,MIT -js-yaml,"",unknown +js-beautify,1.6.12,MIT +js-cookie,2.1.3,MIT +js-tokens,3.0.1,MIT +js-yaml,3.7.0,MIT jsbn,0.1.1,MIT jsesc,1.3.0,MIT json,1.8.6,ruby json-jwt,1.7.1,MIT -json-loader,0.5.4,MIT +json-loader,0.5.7,MIT json-schema,0.2.3,"AFLv2.1,BSD" json-schema-traverse,0.3.1,MIT json-stable-stringify,1.0.1,MIT json-stringify-safe,5.0.1,ISC json3,3.3.2,MIT json5,0.5.1,MIT +jsonfile,2.4.0,MIT jsonify,0.0.0,Public Domain jsonpointer,4.0.1,MIT jsprim,1.4.0,MIT jszip,3.1.3,(MIT OR GPL-3.0) jszip-utils,0.0.2,MIT or GPLv3 jwt,1.5.6,MIT -kaminari,0.17.0,MIT +kaminari,1.0.1,MIT +kaminari-actionview,1.0.1,MIT +kaminari-activerecord,1.0.1,MIT +kaminari-core,1.0.1,MIT karma,1.7.0,MIT -karma-chrome-launcher,2.2.0,MIT -karma-coverage-istanbul-reporter,0.2.3,MIT +karma-chrome-launcher,2.1.1,MIT +karma-coverage-istanbul-reporter,0.2.0,MIT karma-jasmine,1.1.0,MIT -karma-mocha-reporter,2.2.3,MIT +karma-mocha-reporter,2.2.2,MIT karma-sourcemap-loader,0.3.7,MIT karma-webpack,2.0.4,MIT kgio,2.10.0,LGPL-2.1+ -kind-of,3.2.2,MIT +kind-of,3.1.0,MIT +klaw,1.3.1,MIT kubeclient,2.2.0,MIT latest-version,1.0.1,MIT launchy,2.4.3,ISC @@ -641,9 +656,9 @@ levn,0.3.0,MIT licensee,8.7.0,MIT lie,3.1.1,MIT little-plugger,1.1.4,MIT -load-json-file,1.1.0,MIT +load-json-file,2.0.0,MIT loader-runner,2.3.0,MIT -loader-utils,"",unknown +loader-utils,1.1.0,MIT locale,2.1.2,"ruby,LGPLv3+" locate-path,2.0.0,MIT lodash,4.17.4,MIT @@ -657,20 +672,24 @@ lodash._isiterateecall,3.0.9,MIT lodash._topath,3.8.1,MIT lodash.assign,3.2.0,MIT lodash.camelcase,4.3.0,MIT +lodash.capitalize,4.2.1,MIT lodash.cond,4.5.2,MIT +lodash.deburr,4.1.0,MIT lodash.defaults,3.1.2,MIT -lodash.get,3.7.0,MIT +lodash.get,4.4.2,MIT lodash.isarguments,3.1.0,MIT lodash.isarray,3.0.4,MIT -lodash.kebabcase,4.1.1,MIT +lodash.kebabcase,4.0.1,MIT lodash.keys,3.1.2,MIT lodash.memoize,4.1.2,MIT lodash.restparam,3.6.1,MIT -lodash.snakecase,4.1.1,MIT +lodash.snakecase,4.0.1,MIT lodash.uniq,4.5.0,MIT -lodash.upperfirst,4.3.1,MIT +lodash.words,4.2.0,MIT log4js,0.6.38,Apache 2.0 logging,2.2.2,MIT +loglevel,1.4.1,MIT +lograge,0.5.1,MIT longest,1.0.1,MIT loofah,2.0.3,MIT loose-envify,1.3.1,MIT @@ -678,13 +697,15 @@ loud-rejection,1.6.0,MIT lowercase-keys,1.0.0,MIT lru-cache,3.2.0,ISC macaddress,0.2.8,MIT -mail,2.6.5,MIT +mail,2.6.6,MIT mail_room,0.9.1,MIT +make-dir,1.0.0,MIT map-obj,1.0.1,MIT map-stream,0.1.0,unknown marked,0.3.6,MIT -math-expression-evaluator,1.2.17,MIT +math-expression-evaluator,1.2.16,MIT media-typer,0.3.0,MIT +mem,1.1.0,MIT memoist,0.15.0,MIT memory-fs,0.4.1,MIT meow,3.7.0,MIT @@ -693,52 +714,53 @@ method_source,0.8.2,MIT methods,1.1.2,MIT micromatch,2.3.11,MIT miller-rabin,4.0.0,MIT -mime,1.3.6,MIT +mime,1.3.4,MIT mime-db,1.27.0,MIT -mime-types,2.1.15,MIT mime-types,2.99.3,"MIT,Artistic-2.0,GPL-2.0" mimemagic,0.3.0,MIT -mini_portile2,2.1.0,MIT +mimic-fn,1.1.0,MIT +mimic-response,1.0.0,MIT +mini_portile2,2.2.0,MIT minimalistic-assert,1.0.0,ISC -minimalistic-crypto-utils,1.0.1,MIT -minimatch,3.0.4,ISC +minimatch,3.0.3,ISC minimist,0.0.8,MIT mkdirp,0.5.1,MIT mmap2,2.2.7,ruby -moment,2.18.1,MIT -mousetrap,1.6.1,Apache 2.0 +moment,2.17.1,MIT +monaco-editor,0.8.3,MIT +mousetrap,1.4.6,Apache 2.0 mousetrap-rails,1.4.6,"MIT,Apache" ms,2.0.0,MIT -msgpack,1.1.0,Apache 2.0 multi_json,1.12.1,MIT multi_xml,0.6.0,MIT multicast-dns,6.1.1,MIT multicast-dns-service-types,1.1.0,MIT multipart-post,2.0.0,MIT -mustermann,0.4.0,MIT -mustermann-grape,0.4.0,MIT +mustermann,1.0.0,MIT +mustermann-grape,1.0.0,MIT mute-stream,0.0.5,ISC +mysql2,0.4.5,MIT name-all-modules-plugin,1.0.1,MIT nan,2.6.2,MIT natural-compare,1.4.0,MIT negotiator,0.6.1,MIT nested-error-stacks,1.0.2,MIT -net-ldap,0.12.1,MIT -net-ssh,3.0.1,MIT +net-ldap,0.16.0,MIT +net-ssh,4.1.0,MIT netrc,0.11.0,MIT -node-ensure,0.0.0,MIT +node-dir,0.1.17,MIT node-forge,0.6.33,BSD node-libs-browser,2.0.0,MIT node-pre-gyp,0.6.36,New BSD -node-zopfli,2.0.2,MIT nodemon,1.11.0,MIT -nokogiri,1.6.8.1,MIT -nopt,4.0.1,ISC +nokogiri,1.8.0,MIT +nopt,3.0.6,ISC normalize-package-data,2.4.0,Simplified BSD normalize-path,2.1.1,MIT normalize-range,0.1.2,MIT normalize-url,1.9.1,MIT -npmlog,4.1.2,ISC +npm-run-path,2.0.2,MIT +npmlog,4.1.0,ISC null-check,1.0.0,MIT num2fraction,1.2.2,MIT number-is-nan,1.0.1,MIT @@ -754,13 +776,13 @@ octokit,4.6.2,MIT oj,2.17.5,MIT omniauth,1.4.2,MIT omniauth-auth0,1.4.1,MIT -omniauth-authentiq,0.3.0,MIT +omniauth-authentiq,0.3.1,MIT omniauth-azure-oauth2,0.0.6,MIT -omniauth-cas3,1.1.3,MIT +omniauth-cas3,1.1.4,MIT omniauth-facebook,4.0.0,MIT omniauth-github,1.1.2,MIT omniauth-gitlab,1.0.2,MIT -omniauth-google-oauth2,0.4.1,MIT +omniauth-google-oauth2,0.5.2,MIT omniauth-kerberos,0.3.0,MIT omniauth-multipassword,0.4.2,MIT omniauth-oauth,1.1.0,MIT @@ -785,16 +807,19 @@ orm_adapter,0.5.0,MIT os,0.9.6,MIT os-browserify,0.2.1,MIT os-homedir,1.0.2,MIT -os-locale,1.4.0,MIT +os-locale,2.1.0,MIT os-tmpdir,1.0.2,MIT osenv,0.1.4,ISC +p-cancelable,0.3.0,MIT +p-finally,1.0.0,MIT p-limit,1.1.0,MIT p-locate,2.0.0,MIT p-map,1.1.1,MIT +p-timeout,1.2.0,MIT package-json,1.2.0,MIT pako,1.0.5,(MIT AND Zlib) paranoia,2.3.1,MIT -parse-asn1,5.1.0,ISC +parse-asn1,5.0.0,ISC parse-glob,3.0.4,MIT parse-json,2.2.0,MIT parsejson,0.0.3,MIT @@ -802,19 +827,20 @@ parseqs,0.0.5,MIT parseuri,0.0.5,MIT parseurl,1.3.1,MIT path-browserify,0.0.0,MIT -path-exists,2.1.0,MIT +path-exists,3.0.0,MIT path-is-absolute,1.0.1,MIT path-is-inside,1.0.2,(WTFPL OR MIT) +path-key,2.0.1,MIT path-parse,1.0.5,MIT path-to-regexp,0.1.7,MIT -path-type,1.1.0,MIT +path-type,2.0.0,MIT pause-stream,0.0.11,"MIT,Apache2" -pbkdf2,3.0.12,MIT -pdfjs-dist,1.8.527,Apache 2.0 +pbkdf2,3.0.9,MIT peek,1.0.1,MIT peek-gc,0.0.2,MIT peek-host,1.0.0,MIT -peek-performance_bar,1.2.1,MIT +peek-mysql2,1.1.0,MIT +peek-performance_bar,1.3.0,MIT peek-pg,1.3.0,MIT peek-rblineprof,0.2.0,MIT peek-redis,1.2.0,MIT @@ -822,15 +848,16 @@ peek-sidekiq,1.0.3,MIT performance-now,0.2.0,MIT pg,0.18.4,"BSD,ruby,GPL" pify,2.3.0,MIT -pikaday,1.6.1,(0BSD OR MIT) +pikaday,1.5.1,"BSD,MIT" pinkie,2.0.4,MIT pinkie-promise,2.0.1,MIT -pkg-dir,1.0.0,MIT +pkg-dir,2.0.0,MIT +pkg-up,1.0.0,MIT pluralize,1.2.1,MIT po_to_json,1.0.1,MIT portfinder,1.0.13,MIT -posix-spawn,0.3.11,"MIT,LGPL" -postcss,5.2.17,MIT +posix-spawn,0.3.13,MIT +postcss,5.2.16,MIT postcss-calc,5.3.1,MIT postcss-colormin,2.2.2,MIT postcss-convert-values,2.6.1,MIT @@ -851,10 +878,10 @@ postcss-minify-font-values,1.0.5,MIT postcss-minify-gradients,1.0.5,MIT postcss-minify-params,1.2.2,MIT postcss-minify-selectors,2.1.1,MIT -postcss-modules-extract-imports,1.1.0,ISC -postcss-modules-local-by-default,1.2.0,MIT -postcss-modules-scope,1.1.0,ISC -postcss-modules-values,1.3.0,ISC +postcss-modules-extract-imports,1.0.1,ISC +postcss-modules-local-by-default,1.1.1,MIT +postcss-modules-scope,1.0.2,ISC +postcss-modules-values,1.2.2,ISC postcss-normalize-charset,1.1.1,MIT postcss-normalize-url,3.0.8,MIT postcss-ordered-values,2.2.3,MIT @@ -873,12 +900,12 @@ prepend-http,1.0.4,MIT preserve,0.2.0,MIT prismjs,1.6.0,MIT private,0.1.7,MIT -process,0.11.10,MIT +process,0.11.9,MIT process-nextick-args,1.0.7,MIT progress,1.1.8,MIT -prometheus-client-mmap,0.7.0.beta8,Apache 2.0 +prometheus-client-mmap,0.7.0.beta14,Apache 2.0 proto-list,1.2.4,ISC -proxy-addr,1.1.4,MIT +proxy-addr,1.1.5,MIT prr,0.0.0,MIT ps-tree,1.1.0,MIT pseudomap,1.0.2,ISC @@ -887,12 +914,12 @@ punycode,1.4.1,MIT pyu-ruby-sasl,0.0.3.3,MIT q,1.5.0,MIT qjobs,1.1.5,MIT -qs,6.4.0,New BSD -query-string,4.3.4,MIT +qs,6.5.0,New BSD +query-string,4.3.2,MIT querystring,0.2.0,MIT querystring-es3,0.2.1,MIT querystringify,0.0.4,MIT -rack,1.6.5,MIT +rack,1.6.8,MIT rack-accept,0.4.5,MIT rack-attack,4.4.1,MIT rack-cors,0.4.0,MIT @@ -908,21 +935,24 @@ rails-i18n,4.0.9,MIT railties,4.2.8,MIT rainbow,2.2.2,MIT raindrops,0.18.0,LGPL-2.1+ -rake,10.5.0,MIT -randomatic,1.1.7,MIT -randombytes,2.0.5,MIT +rake,12.0.0,MIT +randomatic,1.1.6,MIT +randombytes,2.0.3,MIT range-parser,1.2.0,MIT raphael,2.2.7,MIT -raven-js,3.16.1,Simplified BSD +raven-js,3.14.0,Simplified BSD raw-body,2.2.0,MIT raw-loader,0.5.1,MIT +rbnacl,4.0.2,MIT +rbnacl-libsodium,1.0.11,MIT rc,1.2.1,(BSD-2-Clause OR MIT OR Apache-2.0) rdoc,4.2.2,ruby +re2,1.1.1,New BSD react-dev-utils,0.5.2,New BSD read-all-stream,3.1.0,MIT -read-pkg,1.1.0,MIT -read-pkg-up,1.0.1,MIT -readable-stream,2.3.3,MIT +read-pkg,2.0.0,MIT +read-pkg-up,2.0.0,MIT +readable-stream,2.0.6,MIT readdirp,2.1.0,MIT readline2,1.0.1,MIT recaptcha,3.0.0,MIT @@ -941,14 +971,14 @@ redis-store,1.2.0,MIT reduce-css-calc,1.3.0,MIT reduce-function-call,1.0.2,MIT regenerate,1.3.2,MIT -regenerator-runtime,0.10.5,MIT -regenerator-transform,0.9.11,BSD +regenerator-runtime,0.10.1,MIT +regenerator-transform,0.9.8,BSD regex-cache,0.4.3,MIT -regexpu-core,"",unknown +regexpu-core,2.0.0,MIT registry-url,3.1.0,MIT regjsgen,0.2.0,MIT regjsparser,0.1.5,BSD -remove-trailing-separator,1.0.2,ISC +remove-trailing-separator,1.1.0,ISC repeat-element,1.1.2,MIT repeat-string,1.6.1,MIT repeating,2.0.1,MIT @@ -959,7 +989,7 @@ require-from-string,1.2.1,MIT require-main-filename,1.0.1,ISC require-uncached,1.0.3,MIT requires-port,1.0.0,MIT -resolve,1.3.3,MIT +resolve,1.2.0,MIT resolve-from,1.0.1,MIT responders,2.3.0,MIT rest-client,2.0.0,MIT @@ -968,19 +998,19 @@ retriable,1.4.1,MIT right-align,0.1.3,MIT rimraf,2.6.1,ISC rinku,2.0.0,ISC -ripemd160,2.0.1,MIT +ripemd160,1.0.1,New BSD rotp,2.1.2,MIT -rouge,2.1.0,MIT +rouge,2.2.1,MIT rqrcode,0.7.0,MIT rqrcode-rails3,0.1.7,MIT ruby-fogbugz,0.2.1,MIT ruby-prof,0.16.2,Simplified BSD ruby-saml,1.4.1,MIT ruby_parser,3.9.0,MIT -rubyntlm,0.5.2,MIT +rubyntlm,0.6.2,MIT rubypants,0.2.0,BSD rufus-scheduler,3.4.0,MIT -rugged,0.25.1.1,MIT +rugged,0.26.0,MIT run-async,0.1.0,MIT rx-lite,3.1.2,Apache 2.0 safe-buffer,5.1.1,MIT @@ -989,21 +1019,20 @@ sanitize,2.1.0,MIT sass,3.4.22,MIT sass-rails,5.0.6,MIT sawyer,0.8.1,MIT -sax,1.2.4,ISC -schema-utils,0.3.0,MIT +sax,1.2.2,ISC securecompare,1.0.0,MIT seed-fu,2.3.6,MIT select,1.1.2,MIT select-hose,2.0.0,MIT select2,3.5.2-browserify,unknown select2-rails,3.5.9.3,MIT -selfsigned,1.9.1,MIT +selfsigned,1.10.1,MIT semver,5.3.0,ISC semver-diff,2.1.0,MIT -send,0.15.3,MIT +send,0.15.4,MIT sentry-raven,2.5.3,Apache 2.0 serve-index,1.9.0,MIT -serve-static,1.12.3,MIT +serve-static,1.12.4,MIT set-blocking,2.0.0,ISC set-immediate-shim,1.0.1,MIT setimmediate,1.0.5,MIT @@ -1011,8 +1040,10 @@ setprototypeof,1.0.3,ISC settingslogic,2.0.9,MIT sexp_processor,4.9.0,MIT sha.js,2.4.8,MIT +shebang-command,1.2.0,MIT +shebang-regex,1.0.0,MIT shelljs,0.7.8,New BSD -sidekiq,5.0.0,LGPL +sidekiq,5.0.4,LGPL sidekiq-cron,0.6.0,MIT sidekiq-limit_fetch,3.4.0,MIT sigmund,1.0.1,ISC @@ -1030,9 +1061,9 @@ socket.io-parser,2.3.1,MIT sockjs,0.3.18,MIT sockjs-client,1.0.1,MIT sort-keys,1.1.2,MIT -source-list-map,0.1.8,MIT +source-list-map,2.0.0,MIT source-map,0.5.6,New BSD -source-map-support,0.4.15,MIT +source-map-support,0.4.11,MIT spdx-correct,1.0.2,Apache 2.0 spdx-expression-parse,1.0.4,(MIT AND CC-BY-3.0) spdx-license-ids,1.2.2,Unlicense @@ -1043,62 +1074,61 @@ sprintf-js,1.0.3,New BSD sprockets,3.7.1,MIT sprockets-rails,3.2.0,MIT sql.js,0.4.0,MIT -sshpk,1.13.1,MIT +sshpk,1.13.0,MIT state_machines,0.4.0,MIT state_machines-activemodel,0.4.0,MIT state_machines-activerecord,0.4.0,MIT -stats-webpack-plugin,0.4.3,MIT statuses,1.3.1,MIT stream-browserify,2.0.1,MIT stream-combiner,0.0.4,MIT -stream-http,2.7.2,MIT +stream-http,2.6.3,MIT stream-shift,1.0.0,MIT strict-uri-encode,1.1.0,MIT string-length,1.0.1,MIT -string-width,1.0.2,MIT -string_decoder,0.10.31,MIT -stringex,2.5.2,MIT +string-width,2.0.0,MIT +string_decoder,1.0.3,MIT +stringex,2.7.1,MIT stringstream,0.0.5,MIT strip-ansi,3.0.1,MIT -strip-bom,2.0.0,MIT +strip-bom,3.0.0,MIT +strip-eof,1.0.0,MIT strip-indent,1.0.1,MIT strip-json-comments,2.0.1,MIT -supports-color,4.2.0,MIT +supports-color,4.2.1,MIT svgo,0.7.2,MIT sys-filesystem,1.1.6,Artistic 2.0 table,3.8.3,New BSD -tapable,0.2.6,MIT +tapable,0.2.8,MIT tar,2.2.1,ISC tar-pack,3.4.0,Simplified BSD temple,0.7.7,MIT -test-exclude,4.1.1,ISC +test-exclude,4.0.0,ISC text,1.3.1,MIT text-table,0.2.0,MIT thor,0.19.4,MIT thread_safe,0.3.6,Apache 2.0 three,0.84.0,MIT three-orbit-controls,82.1.0,MIT -three-stl-loader,1.0.5,MIT +three-stl-loader,1.0.4,MIT through,2.3.8,MIT thunky,0.1.0,unknown tilt,2.0.6,MIT timeago.js,2.0.5,MIT -timed-out,2.0.0,MIT -timers-browserify,2.0.2,MIT +timed-out,4.0.1,MIT +timers-browserify,2.0.4,MIT timfel-krb5-auth,0.8.3,LGPL -tiny-emitter,2.0.1,MIT +tiny-emitter,1.1.0,MIT tmp,0.0.31,MIT to-array,0.1.4,MIT to-arraybuffer,1.0.1,MIT -to-fast-properties,1.0.3,MIT +to-fast-properties,1.0.2,MIT toml-rb,0.3.15,MIT -tool,0.2.3,MIT touch,1.0.0,ISC tough-cookie,2.3.2,New BSD traverse,0.6.6,MIT trim-newlines,1.0.0,MIT trim-right,1.0.1,MIT -truncato,0.7.8,MIT +truncato,0.7.10,MIT tryit,1.0.3,MIT tty-browserify,0.0.0,MIT tunnel-agent,0.6.0,Apache 2.0 @@ -1106,17 +1136,17 @@ tweetnacl,0.14.5,Unlicense type-check,0.3.2,MIT type-is,1.6.15,MIT typedarray,0.0.6,MIT -tzinfo,1.2.2,MIT +tzinfo,1.2.3,MIT u2f,0.2.1,MIT uglifier,2.7.2,MIT uglify-js,2.8.29,Simplified BSD uglify-to-browserify,1.0.2,MIT +uglifyjs-webpack-plugin,0.4.6,MIT uid-number,0.0.6,ISC ultron,1.1.0,MIT unc-path-regex,0.1.2,MIT undefsafe,0.0.3,MIT / http://rem.mit-license.org underscore,1.8.3,MIT -underscore-rails,1.8.3,MIT unf,0.1.4,BSD unf_ext,0.0.7.2,MIT unicorn,5.1.0,ruby @@ -1127,15 +1157,17 @@ uniqs,2.0.0,MIT unpipe,1.0.0,MIT update-notifier,0.5.0,Simplified BSD url,0.11.0,MIT -url-loader,0.5.9,MIT +url-loader,0.5.8,MIT url-parse,1.0.5,MIT +url-parse-lax,1.0.0,MIT +url-to-options,1.0.1,MIT url_safe_base64,0.2.2,MIT user-home,2.0.0,MIT -useragent,2.2.0,MIT +useragent,2.2.1,MIT util,0.10.3,MIT util-deprecate,1.0.2,MIT utils-merge,1.0.0,MIT -uuid,3.1.0,MIT +uuid,3.0.1,MIT validate-npm-package-license,3.0.1,Apache 2.0 validates_hostname,1.0.6,MIT vary,1.1.1,MIT @@ -1147,32 +1179,33 @@ visibilityjs,1.2.4,MIT vm-browserify,0.0.4,MIT vmstat,2.3.0,MIT void-elements,2.0.1,MIT -vue,2.3.4,MIT -vue-hot-reload-api,2.1.0,MIT +vue,2.2.6,MIT +vue-hot-reload-api,2.0.11,MIT vue-loader,11.3.4,MIT -vue-resource,0.9.3,MIT +vue-resource,1.3.4,MIT vue-style-loader,2.0.5,MIT -vue-template-compiler,2.3.4,MIT -vue-template-es2015-compiler,1.5.3,MIT +vue-template-compiler,2.2.6,MIT +vue-template-es2015-compiler,1.5.1,MIT +vuex,2.3.1,MIT warden,1.2.6,MIT -watchpack,1.3.1,MIT +watchpack,1.4.0,MIT wbuf,1.7.2,MIT -webpack,2.6.1,MIT +webpack,3.5.5,MIT webpack-bundle-analyzer,2.8.2,MIT webpack-dev-middleware,1.11.0,MIT -webpack-dev-server,2.5.1,MIT +webpack-dev-server,2.7.1,MIT webpack-rails,0.9.10,MIT -webpack-sources,0.1.5,MIT +webpack-sources,1.0.1,MIT +webpack-stats-plugin,0.1.5,MIT websocket-driver,0.6.5,MIT websocket-extensions,0.1.1,MIT whet.extend,0.9.9,MIT -which,1.2.14,ISC -which-module,1.0.0,ISC +which,1.2.12,ISC +which-module,2.0.0,ISC wide-align,1.1.2,ISC wikicloth,0.8.1,MIT window-size,0.1.0,MIT wordwrap,0.0.2,MIT/X11 -worker-loader,0.8.1,MIT wrap-ansi,2.1.0,MIT wrappy,1.0.2,ISC write,0.2.1,MIT @@ -1185,6 +1218,6 @@ xmlhttprequest-ssl,1.5.3,MIT xtend,4.0.1,MIT y18n,3.2.1,ISC yallist,2.1.2,ISC -yargs,3.10.0,MIT -yargs-parser,4.2.1,ISC +yargs,8.0.2,MIT +yargs-parser,7.0.0,ISC yeast,0.1.2,MIT |