SECURITY: updates lodash from 1.3.0 to 4.17.5 (#7546)

This commit is contained in:
Joffrey JAFFEUX 2019-05-16 10:34:19 +02:00 committed by GitHub
parent cabc203885
commit d47bf8b6c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 7563 additions and 5401 deletions

View File

@ -45,7 +45,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
changed(name) {
if (!this.originals) return false;
if (this.originals.name !== name) return true;
if (_.any(this.colors, c => c.get("changed"))) return true;
if (this.colors.any(c => c.get("changed"))) return true;
return false;
},
@ -56,7 +56,7 @@ const ColorScheme = Discourse.Model.extend(Ember.Copyable, {
return false;
}
return !changed || this.saving || _.any(this.colors, c => !c.get("valid"));
return !changed || this.saving || this.colors.any(c => !c.get("valid"));
},
newRecord: Ember.computed.not("id"),

View File

@ -138,7 +138,7 @@ const Theme = RestModel.extend({
@computed("theme_fields", "theme_fields.@each.error")
isBroken(fields) {
return (
fields && fields.some(field => field.error && field.error.length > 0)
fields && fields.any(field => field.error && field.error.length > 0)
);
},

View File

@ -24,6 +24,7 @@
//= require ./discourse/lib/lock-on
//= require ./discourse/lib/url
//= require ./discourse/lib/debounce
//= require ./discourse/lib/throttle
//= require ./discourse/lib/quote
//= require ./discourse/lib/key-value-store
//= require ./discourse/lib/computed
@ -53,7 +54,6 @@
//= require ./discourse/lib/export-csv
//= require ./discourse/lib/autocomplete
//= require ./discourse/lib/after-transition
//= require ./discourse/lib/debounce
//= require ./discourse/lib/safari-hacks
//= require_tree ./discourse/adapters
//= require ./discourse/models/post-action-type

View File

@ -598,7 +598,7 @@ export default Ember.Component.extend({
},
_scrollTo(y) {
const yPosition = _.isUndefined(y) ? this.scrollPosition : y;
const yPosition = typeof y === "undefined" ? this.scrollPosition : y;
this.$list.scrollTop(yPosition);

View File

@ -1,3 +1,4 @@
import debounce from "discourse/lib/debounce";
import { selectedText } from "discourse/lib/utilities";
export default Ember.Component.extend({
@ -122,7 +123,7 @@ export default Ember.Component.extend({
didInsertElement() {
const { isWinphone, isAndroid } = this.capabilities;
const wait = isWinphone || isAndroid ? 250 : 25;
const onSelectionChanged = _.debounce(() => this._selectionChanged(), wait);
const onSelectionChanged = debounce(() => this._selectionChanged(), wait);
$(document)
.on("mousedown.quote-button", e => {

View File

@ -53,7 +53,7 @@ export default Ember.Component.extend(
if (categoryId) {
const category = Category.findById(categoryId);
options = _.assign(
options = Object.assign(
{
categoryName: category.get("slug"),
categoryUrl: category.get("url")

View File

@ -67,7 +67,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
this.set("topicActionByName", lookup);
return this.site.get("topic_flag_types").filter(item => {
return _.any(this.get("model.actions_summary"), a => {
return this.get("model.actions_summary").some(a => {
return a.id === item.get("id") && a.can_act;
});
});

View File

@ -112,7 +112,11 @@ export default Ember.Controller.extend(PreferencesTabController, {
@computed()
userSelectableHome() {
let homeValues = _.invert(USER_HOMES);
let homeValues = {};
Object.keys(USER_HOMES).forEach(newValue => {
const newKey = USER_HOMES[newValue];
homeValues[newKey] = newValue;
});
let result = [];
this.siteSettings.top_menu.split("|").forEach(m => {

View File

@ -1,3 +1,4 @@
import debounce from "discourse/lib/debounce";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
import Category from "discourse/models/category";
import { TAG_HASHTAG_POSTFIX } from "discourse/lib/tag-hashtags";
@ -19,7 +20,7 @@ function searchTags(term, categories, limit) {
resolve(CANCELLED_STATUS);
}, 5000);
const debouncedSearch = _.debounce((q, cats, resultFunc) => {
const debouncedSearch = debounce((q, cats, resultFunc) => {
oldSearch = $.ajax(Discourse.getURL("/tags/filter/search"), {
type: "GET",
cache: true,

View File

@ -104,7 +104,7 @@ export function endWith() {
const substring = args.pop();
const computed = Ember.computed(function() {
const self = this;
return _.all(
return _.every(
args.map(function(a) {
return self.get(a);
}),

View File

@ -410,13 +410,13 @@ export default {
_globalBindToFunction(func, binding) {
if (typeof this[func] === "function") {
this.keyTrapper.bindGlobal(binding, _.bind(this[func], this));
this.keyTrapper.bindGlobal(binding, this[func].bind(this));
}
},
_bindToFunction(func, binding) {
if (typeof this[func] === "function") {
this.keyTrapper.bind(binding, _.bind(this[func], this));
this.keyTrapper.bind(binding, this[func].bind(this));
}
},

View File

@ -1,3 +1,4 @@
import debounce from "discourse/lib/debounce";
import { isAppleDevice, safariHacksDisabled } from "discourse/lib/utilities";
// we can't tell what the actual visible window height is
@ -106,7 +107,7 @@ function positioningWorkaround($fixedElement) {
positioningWorkaround.blur(evt);
};
var blurred = _.debounce(blurredNow, 250);
var blurred = debounce(blurredNow, 250);
var positioningHack = function(evt) {
const self = this;
@ -161,7 +162,7 @@ function positioningWorkaround($fixedElement) {
}
}
const checkForInputs = _.debounce(function() {
const checkForInputs = debounce(function() {
$fixedElement
.find(
"button:not(.hide-preview),a:not(.mobile-file-upload):not(.toggle-toolbar)"

View File

@ -0,0 +1,18 @@
/**
Throttle a Javascript function. This means if it's called many times in a time limit it
should only be executed one time at most during this time limit
Original function will be called with the context and arguments from the last call made.
**/
export default function(func, spacing, immediate) {
let self, args;
const later = function() {
func.apply(self, args);
};
return function() {
self = this;
args = arguments;
Ember.run.throttle(null, later, spacing, immediate);
};
}

View File

@ -1,3 +1,4 @@
import debounce from "discourse/lib/debounce";
import { CANCELLED_STATUS } from "discourse/lib/autocomplete";
import { userPath } from "discourse/lib/url";
import { emailValid } from "discourse/lib/utilities";
@ -61,7 +62,7 @@ function performSearch(
});
}
var debouncedSearch = _.debounce(performSearch, 300);
var debouncedSearch = debounce(performSearch, 300);
function organizeResults(r, options) {
if (r === CANCELLED_STATUS) {

View File

@ -10,6 +10,7 @@ import {
} from "ember-addons/ember-computed-decorators";
import { escapeExpression, tinyAvatar } from "discourse/lib/utilities";
import { propertyNotEqual } from "discourse/lib/computed";
import throttle from "discourse/lib/throttle";
// The actions the composer can take
export const CREATE_TOPIC = "createTopic",
@ -200,13 +201,13 @@ const Composer = RestModel.extend({
},
// view detected user is typing
typing: _.throttle(
typing: throttle(
function() {
const typingTime = this.typingTime || 0;
this.set("typingTime", typingTime + 100);
},
100,
{ leading: false, trailing: true }
false
),
editingFirstPost: Ember.computed.and("editingPost", "post.firstPost"),

View File

@ -337,8 +337,8 @@ const TopicTrackingState = Discourse.Model.extend({
countNew(category_id) {
return _.chain(this.states)
.where(isNew)
.where(
.filter(isNew)
.filter(
topic =>
topic.archetype !== "private_message" &&
!topic.deleted &&
@ -359,8 +359,8 @@ const TopicTrackingState = Discourse.Model.extend({
countUnread(category_id) {
return _.chain(this.states)
.where(isUnread)
.where(
.filter(isUnread)
.filter(
topic =>
topic.archetype !== "private_message" &&
!topic.deleted &&

View File

@ -68,7 +68,7 @@ export default RestModel.extend({
// 2) remove the parents that have no children
const content = this.content.filter(ua => {
return ["likes", "stars", "edits", "bookmarks"].any(group => {
return ["likes", "stars", "edits", "bookmarks"].some(group => {
return ua.get(`childGroups.${group}.items.length`) > 0;
});
});

View File

@ -39,10 +39,7 @@ export default createWidget("post-links", {
}
// only show incoming
const links = _(this.attrs.links)
.filter(l => l.reflection)
.uniq(true, l => l.title)
.value();
const links = this.attrs.links.filter(l => l.reflection).uniqBy("title");
if (links.length === 0) {
return;

View File

@ -9,9 +9,9 @@ QUnit.module("lib:keyboard-shortcuts", {
testMouseTrap = {
bind: function(bindings, callback) {
var registerBinding = _.bind(function(binding) {
var registerBinding = function(binding) {
_bindings[binding] = callback;
}, this);
}.bind(this);
if (_.isArray(bindings)) {
bindings.forEach(registerBinding, this);

File diff suppressed because it is too large Load Diff