diff --git a/background.html b/background.html index f29d0177e..3ced72b69 100644 --- a/background.html +++ b/background.html @@ -19,7 +19,7 @@ img-src 'self' blob: data:; media-src 'self' blob:; object-src 'none'; - script-src 'self'; + script-src 'self' 'sha256-5J9nLKMi84ERvoy7r/3XVwiW1iZ5YaPic9BNaF/0rtI='; style-src 'self' 'unsafe-inline';" > Signal @@ -348,14 +348,11 @@ - - - @@ -386,6 +383,12 @@ - + + diff --git a/debug_log.html b/debug_log.html index fb5d01cfb..1ae262a28 100644 --- a/debug_log.html +++ b/debug_log.html @@ -55,8 +55,6 @@ - - diff --git a/debug_log_preload.js b/debug_log_preload.js index 1e97475bc..6f8c18fa9 100644 --- a/debug_log_preload.js +++ b/debug_log_preload.js @@ -29,6 +29,9 @@ window.nodeSetImmediate = setImmediate; window.getNodeVersion = () => config.node_version; window.getEnvironment = getEnvironment; +window.Backbone = require('backbone'); +require('./ts/backbone/views/whisper_view'); +require('./ts/backbone/views/toast_view'); require('./ts/logging/set_up_renderer_logging'); window.closeDebugLog = () => ipcRenderer.send('close-debug-log'); diff --git a/js/views/banner_view.js b/js/views/banner_view.js index 70eea630b..92e9e6f06 100644 --- a/js/views/banner_view.js +++ b/js/views/banner_view.js @@ -1,7 +1,7 @@ // Copyright 2017-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Whisper */ +/* global Whisper, $ */ // eslint-disable-next-line func-names (function () { @@ -9,7 +9,7 @@ Whisper.BannerView = Whisper.View.extend({ className: 'banner', - templateName: 'banner', + template: () => $('#banner').html(), events: { 'click .dismiss': 'onDismiss', 'click .body': 'onClick', diff --git a/js/views/clear_data_view.js b/js/views/clear_data_view.js index ebdae23e4..b09acaac8 100644 --- a/js/views/clear_data_view.js +++ b/js/views/clear_data_view.js @@ -1,10 +1,7 @@ // Copyright 2018-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global i18n: false */ -/* global Whisper: false */ - -/* eslint-disable no-new */ +/* global i18n, Whisper, $ */ // eslint-disable-next-line func-names (function () { @@ -16,7 +13,7 @@ DELETING: 2, }; window.Whisper.ClearDataView = Whisper.View.extend({ - templateName: 'clear-data', + template: () => $('#clear-data').html(), className: 'full-screen-flow overlay', events: { 'click .cancel': 'onCancel', diff --git a/js/views/contact_list_view.js b/js/views/contact_list_view.js index fdbe5d2b6..39c32e613 100644 --- a/js/views/contact_list_view.js +++ b/js/views/contact_list_view.js @@ -1,8 +1,7 @@ // Copyright 2015-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Whisper: false */ -/* global textsecure: false */ +/* global Whisper, textsecure, $ */ // eslint-disable-next-line func-names (function () { @@ -13,7 +12,7 @@ itemView: Whisper.View.extend({ tagName: 'div', className: 'contact', - templateName: 'contact', + template: () => $('#contact').html(), initialize(options) { this.ourNumber = textsecure.storage.user.getNumber(); this.listenBack = options.listenBack; diff --git a/js/views/debug_log_view.js b/js/views/debug_log_view.js index c4b737679..239ae7da3 100644 --- a/js/views/debug_log_view.js +++ b/js/views/debug_log_view.js @@ -1,8 +1,7 @@ // Copyright 2015-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global i18n: false */ -/* global Whisper: false */ +/* global i18n, Whisper, $ */ // eslint-disable-next-line func-names (function () { @@ -31,7 +30,7 @@ }); Whisper.DebugLogLinkView = Whisper.View.extend({ - templateName: 'debug-log-link', + template: () => $('#debug-log-link').html(), initialize(options) { this.url = options.url; }, @@ -66,7 +65,7 @@ * edit them in their own editor. This is mostly a stopgap solution. */ Whisper.DebugLogView = Whisper.View.extend({ - templateName: 'debug-log', + template: () => $('#debug-log').html(), className: 'debug-log modal', initialize() { this.render(); diff --git a/js/views/group_member_list_view.js b/js/views/group_member_list_view.js index d0c75b616..2ade0085a 100644 --- a/js/views/group_member_list_view.js +++ b/js/views/group_member_list_view.js @@ -1,16 +1,15 @@ // Copyright 2015-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Whisper, i18n */ +/* global Whisper, i18n, $ */ // eslint-disable-next-line func-names (function () { window.Whisper = window.Whisper || {}; - // TODO: take a title string which could replace the 'members' header Whisper.GroupMemberList = Whisper.View.extend({ className: 'group-member-list panel', - templateName: 'group-member-list', + template: () => $('#group-member-list').html(), initialize(options) { this.needVerify = options.needVerify; diff --git a/js/views/identicon_svg_view.js b/js/views/identicon_svg_view.js index 9933ca8ac..7bad681e7 100644 --- a/js/views/identicon_svg_view.js +++ b/js/views/identicon_svg_view.js @@ -1,7 +1,7 @@ // Copyright 2015-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Whisper, loadImage */ +/* global Whisper, loadImage, $ */ // eslint-disable-next-line func-names (function () { @@ -11,7 +11,7 @@ * Render an avatar identicon to an svg for use in a notification. */ Whisper.IdenticonSVGView = Whisper.View.extend({ - templateName: 'identicon-svg', + template: () => $('#identicon-svg').html(), initialize(options) { this.render_attributes = options; this.render_attributes.color = COLORS[this.render_attributes.color]; diff --git a/js/views/inbox_view.js b/js/views/inbox_view.js index 7d23b4bb9..f6db2621e 100644 --- a/js/views/inbox_view.js +++ b/js/views/inbox_view.js @@ -5,7 +5,8 @@ ConversationController, i18n, Whisper, - Signal + Signal, + $ */ // eslint-disable-next-line func-names @@ -60,7 +61,7 @@ }); Whisper.AppLoadingScreen = Whisper.View.extend({ - templateName: 'app-loading-screen', + template: () => $('#app-loading-screen').html(), className: 'app-loading-screen', updateProgress(count) { if (count > 0) { @@ -74,7 +75,7 @@ }); Whisper.InboxView = Whisper.View.extend({ - templateName: 'two-column', + template: () => $('#two-column').html(), className: 'inbox index', initialize(options = {}) { this.ready = false; diff --git a/js/views/install_view.js b/js/views/install_view.js index 221ccb888..a188abd48 100644 --- a/js/views/install_view.js +++ b/js/views/install_view.js @@ -24,7 +24,7 @@ const TOO_OLD = 409; Whisper.InstallView = Whisper.View.extend({ - templateName: 'link-flow-template', + template: () => $('#link-flow-template').html(), className: 'main full-screen-flow', events: { 'click .try-again': 'connect', diff --git a/js/views/key_verification_view.js b/js/views/key_verification_view.js index 116f3cce9..d5c49a68e 100644 --- a/js/views/key_verification_view.js +++ b/js/views/key_verification_view.js @@ -1,9 +1,7 @@ // Copyright 2015-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Backbone, Signal, Whisper */ - -/* eslint-disable more/no-then */ +/* global Backbone, Signal, Whisper, $ */ // eslint-disable-next-line func-names (function () { @@ -11,7 +9,7 @@ Whisper.KeyVerificationPanelView = Whisper.View.extend({ className: 'panel', - templateName: 'key-verification', + template: () => $('#key-verification').html(), initialize(options) { this.render(); diff --git a/js/views/phone-input-view.js b/js/views/phone-input-view.js index 8e185fcc9..1b74d6500 100644 --- a/js/views/phone-input-view.js +++ b/js/views/phone-input-view.js @@ -1,7 +1,7 @@ // Copyright 2015-2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global libphonenumber, Whisper */ +/* global libphonenumber, Whisper, $ */ // eslint-disable-next-line func-names (function () { @@ -10,7 +10,7 @@ Whisper.PhoneInputView = Whisper.View.extend({ tagName: 'div', className: 'phone-input', - templateName: 'phone-number', + template: () => $('#phone-number').html(), initialize() { this.$('input.number').intlTelInput(); }, diff --git a/js/views/recorder_view.js b/js/views/recorder_view.js index b481da405..a982f9f4f 100644 --- a/js/views/recorder_view.js +++ b/js/views/recorder_view.js @@ -11,7 +11,7 @@ Whisper.RecorderView = Whisper.View.extend({ className: 'recorder clearfix', - templateName: 'recorder', + template: () => $('#recorder').html(), initialize() { this.startTime = Date.now(); this.interval = setInterval(this.updateTime.bind(this), 1000); diff --git a/js/views/safety_number_change_dialog_view.js b/js/views/safety_number_change_dialog_view.js index 64ff82001..792ae258e 100644 --- a/js/views/safety_number_change_dialog_view.js +++ b/js/views/safety_number_change_dialog_view.js @@ -1,14 +1,14 @@ // Copyright 2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -/* global Whisper, Signal */ +/* global Whisper, Signal, $ */ // eslint-disable-next-line func-names (function () { window.Whisper = window.Whisper || {}; Whisper.SafetyNumberChangeDialogView = Whisper.View.extend({ - templateName: 'safety-number-change-dialog', + template: () => $('#safety-number-change-dialog').html(), initialize(options) { const dialog = new Whisper.ReactWrapperView({ Component: window.Signal.Components.SafetyNumberChangeDialog, diff --git a/js/views/settings_view.js b/js/views/settings_view.js index d5eff2de3..ebc652996 100644 --- a/js/views/settings_view.js +++ b/js/views/settings_view.js @@ -91,7 +91,7 @@ }); Whisper.SettingsView = Whisper.View.extend({ className: 'settings modal expand', - templateName: 'settings', + template: () => $('#settings').html(), initialize() { this.render(); new RadioButtonGroupView({ @@ -271,7 +271,7 @@ }); const SyncView = Whisper.View.extend({ - templateName: 'syncSettings', + template: () => $('#syncSettings').html(), className: 'syncSettings', events: { 'click .sync': 'sync', diff --git a/js/views/standalone_registration_view.js b/js/views/standalone_registration_view.js index 3df07054c..d5dfe9251 100644 --- a/js/views/standalone_registration_view.js +++ b/js/views/standalone_registration_view.js @@ -10,7 +10,7 @@ window.Whisper = window.Whisper || {}; Whisper.StandaloneRegistrationView = Whisper.View.extend({ - templateName: 'standalone', + template: () => $('#standalone').html(), className: 'full-screen-flow', initialize() { window.readyForUpdates(); diff --git a/js/views/toast_view.js b/js/views/toast_view.js deleted file mode 100644 index 51e14a213..000000000 --- a/js/views/toast_view.js +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015-2020 Signal Messenger, LLC -// SPDX-License-Identifier: AGPL-3.0-only - -/* global Whisper, Mustache, _ */ - -// eslint-disable-next-line func-names -(function () { - window.Whisper = window.Whisper || {}; - - Whisper.ToastView = Whisper.View.extend({ - className: 'toast', - templateName: 'toast', - initialize() { - this.$el.hide(); - this.timeout = 2000; - }, - - close() { - this.$el.fadeOut(this.remove.bind(this)); - }, - - render() { - this.$el.html( - Mustache.render( - _.result(this, 'template', ''), - _.result(this, 'render_attributes', '') - ) - ); - this.$el.attr('tabIndex', 0); - this.$el.show(); - setTimeout(this.close.bind(this), this.timeout); - }, - }); - - Whisper.ToastView.show = (View, el) => { - const toast = new View(); - toast.$el.appendTo(el); - toast.render(); - }; -})(); diff --git a/js/views/whisper_view.js b/js/views/whisper_view.js deleted file mode 100644 index 4fb4fbadd..000000000 --- a/js/views/whisper_view.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015-2020 Signal Messenger, LLC -// SPDX-License-Identifier: AGPL-3.0-only - -/* global Whisper, Backbone, Mustache, _, $ */ - -/* - * Whisper.View - * - * This is the base for most of our views. The Backbone view is extended - * with some conveniences: - * - * 1. Pre-parses all our mustache templates for performance. - * https://github.com/janl/mustache.js#pre-parsing-and-caching-templates - * - * 2. Defines a default definition for render() which allows sub-classes - * to simply specify a templateName and renderAttributes which are plugged - * into Mustache.render - * - * 3. Makes all the templates available for rendering as partials. - * https://github.com/janl/mustache.js#partials - * - * 4. Provides some common functionality, e.g. confirmation dialog - * - */ - -// eslint-disable-next-line func-names -(function () { - window.Whisper = window.Whisper || {}; - - Whisper.View = Backbone.View.extend( - { - constructor(...params) { - Backbone.View.call(this, ...params); - Mustache.parse(_.result(this, 'template')); - }, - render_attributes() { - return _.result(this.model, 'attributes', {}); - }, - render_partials() { - return Whisper.View.Templates; - }, - template() { - if (this.templateName) { - return Whisper.View.Templates[this.templateName]; - } - return ''; - }, - render() { - const attrs = _.result(this, 'render_attributes', {}); - const template = _.result(this, 'template', ''); - const partials = _.result(this, 'render_partials', ''); - this.$el.html(Mustache.render(template, attrs, partials)); - return this; - }, - confirm(message, okText) { - return new Promise((resolve, reject) => { - window.showConfirmationDialog({ - message, - okText, - resolve, - reject, - }); - }); - }, - }, - { - // Class attributes - Templates: (() => { - const templates = {}; - $('script[type="text/x-tmpl-mustache"]').each((i, el) => { - const $el = $(el); - const id = $el.attr('id'); - templates[id] = $el.html(); - }); - return templates; - })(), - } - ); -})(); diff --git a/permissions_popup.html b/permissions_popup.html index da6d2cd1b..14b6103a7 100644 --- a/permissions_popup.html +++ b/permissions_popup.html @@ -25,7 +25,6 @@ - diff --git a/preload.js b/preload.js index fa1b31111..386fcf9d4 100644 --- a/preload.js +++ b/preload.js @@ -520,6 +520,11 @@ try { require('./ts/models/messages'); require('./ts/models/conversations'); + require('./ts/backbone/views/whisper_view'); + require('./ts/backbone/views/toast_view'); + require('./ts/views/conversation_view'); + require('./ts/background'); + function wrapWithPromise(fn) { return (...args) => Promise.resolve(fn(...args)); } diff --git a/settings.html b/settings.html index 3c37c5e3f..fde6bcf2e 100644 --- a/settings.html +++ b/settings.html @@ -168,7 +168,6 @@ - diff --git a/settings_preload.js b/settings_preload.js index ca280c26c..9a4d21aa6 100644 --- a/settings_preload.js +++ b/settings_preload.js @@ -126,6 +126,7 @@ function makeSetter(name) { }); } -require('./ts/logging/set_up_renderer_logging'); - window.Backbone = require('backbone'); +require('./ts/backbone/views/whisper_view'); +require('./ts/backbone/views/toast_view'); +require('./ts/logging/set_up_renderer_logging'); diff --git a/ts/backbone/views/toast_view.ts b/ts/backbone/views/toast_view.ts new file mode 100644 index 000000000..1e46c68a8 --- /dev/null +++ b/ts/backbone/views/toast_view.ts @@ -0,0 +1,35 @@ +// Copyright 2015-2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +window.Whisper = window.Whisper || {}; + +window.Whisper.ToastView = window.Whisper.View.extend({ + className: 'toast', + template: () => $('#toast').html(), + initialize() { + this.$el.hide(); + this.timeout = 2000; + }, + + close() { + this.$el.fadeOut(this.remove.bind(this)); + }, + + render() { + this.$el.html( + window.Mustache.render( + window._.result(this, 'template', ''), + window._.result(this, 'render_attributes', '') + ) + ); + this.$el.attr('tabIndex', 0); + this.$el.show(); + setTimeout(this.close.bind(this), this.timeout); + }, +}); + +window.Whisper.ToastView.show = (View, el) => { + const toast = new View(); + toast.$el.appendTo(el); + toast.render(); +}; diff --git a/ts/backbone/views/whisper_view.ts b/ts/backbone/views/whisper_view.ts new file mode 100644 index 000000000..21888400a --- /dev/null +++ b/ts/backbone/views/whisper_view.ts @@ -0,0 +1,32 @@ +// Copyright 2015-2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +/* + * Defines a default definition for render() which allows sub-classes + * to simply specify a template property and renderAttributes which are plugged + * into Mustache.render + */ + +// eslint-disable-next-line func-names +(function () { + window.Whisper = window.Whisper || {}; + + window.Whisper.View = Backbone.View.extend({ + /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ + constructor(...params: Array) { + window.Backbone.View.call(this, ...params); + + // Checks for syntax errors + window.Mustache.parse(_.result(this, 'template')); + }, + render_attributes() { + return _.result(this.model, 'attributes', {}); + }, + render() { + const attrs = window._.result(this, 'render_attributes', {}); + const template = window._.result(this, 'template', ''); + this.$el.html(window.Mustache.render(template, attrs)); + return this; + }, + }); +})(); diff --git a/ts/background.ts b/ts/background.ts index c02714d3a..59d95fe46 100644 --- a/ts/background.ts +++ b/ts/background.ts @@ -1,15 +1,10 @@ // Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -// This allows us to pull in types despite the fact that this is not a module. We can't -// use normal import syntax, nor can we use 'import type' syntax, or this will be turned -// into a module, and we'll get the dreaded 'exports is not defined' error. -// see https://github.com/microsoft/TypeScript/issues/41562 -type DataMessageClass = import('./textsecure.d').DataMessageClass; -type WhatIsThis = import('./window.d').WhatIsThis; +import { DataMessageClass } from './textsecure.d'; +import { WhatIsThis } from './window.d'; -// eslint-disable-next-line func-names -(async function () { +export async function startApp(): Promise { const eventHandlerQueue = new window.PQueue({ concurrency: 1, timeout: 1000 * 60 * 2, @@ -23,7 +18,7 @@ type WhatIsThis = import('./window.d').WhatIsThis; wait: 500, maxSize: 500, processBatch: async (items: WhatIsThis) => { - const byConversationId = _.groupBy(items, item => + const byConversationId = window._.groupBy(items, item => window.ConversationController.ensureContactIds({ e164: item.source, uuid: item.sourceUuid, @@ -205,12 +200,12 @@ type WhatIsThis = import('./window.d').WhatIsThis; if (messageReceiver) { return messageReceiver.getStatus(); } - if (_.isNumber(preMessageReceiverStatus)) { + if (window._.isNumber(preMessageReceiverStatus)) { return preMessageReceiverStatus; } return WebSocket.CLOSED; }; - window.Whisper.events = _.clone(window.Backbone.Events); + window.Whisper.events = window._.clone(window.Backbone.Events); let accountManager: typeof window.textsecure.AccountManager; window.getAccountManager = () => { if (!accountManager) { @@ -2632,7 +2627,7 @@ type WhatIsThis = import('./window.d').WhatIsThis; sentTo = data.unidentifiedStatus.map( (item: WhatIsThis) => item.destinationUuid || item.destination ); - const unidentified = _.filter(data.unidentifiedStatus, item => + const unidentified = window._.filter(data.unidentifiedStatus, item => Boolean(item.unidentified) ); // eslint-disable-next-line no-param-reassign @@ -3284,4 +3279,6 @@ type WhatIsThis = import('./window.d').WhatIsThis; // Note: We don't wait for completion here window.Whisper.DeliveryReceipts.onReceipt(receipt); } -})(); +} + +window.startApp = startApp; diff --git a/ts/groups/joinViaLink.ts b/ts/groups/joinViaLink.ts index 1d23c1a24..1c9347f72 100644 --- a/ts/groups/joinViaLink.ts +++ b/ts/groups/joinViaLink.ts @@ -61,7 +61,7 @@ export async function joinViaLink(hash: string): Promise { window.reduxActions.conversations.openConversationInternal({ conversationId: existingConversation.id, }); - window.window.Whisper.ToastView.show( + window.Whisper.ToastView.show( window.Whisper.AlreadyGroupMemberToast, document.getElementsByClassName('conversation-stack')[0] ); @@ -333,7 +333,7 @@ export async function joinViaLink(hash: string): Promise { window.log.info(`joinViaLink/${logId}: Showing modal`); - let groupV2InfoDialog = new Whisper.ReactWrapperView({ + let groupV2InfoDialog = new window.Whisper.ReactWrapperView({ className: 'group-v2-join-dialog-wrapper', JSX: window.Signal.State.Roots.createGroupV2JoinModal(window.reduxStore, { join, diff --git a/ts/models/conversations.ts b/ts/models/conversations.ts index bffc43a8f..a378a1c8f 100644 --- a/ts/models/conversations.ts +++ b/ts/models/conversations.ts @@ -4052,7 +4052,7 @@ export class ConversationModel extends window.Backbone.Model< this.set({ left: true }); window.Signal.Data.updateConversation(this.attributes); - const model = new Whisper.Message(({ + const model = new window.Whisper.Message(({ group_update: { left: 'You' }, conversationId: this.id, type: 'outgoing', @@ -4062,7 +4062,7 @@ export class ConversationModel extends window.Backbone.Model< } as unknown) as MessageAttributesType); const id = await window.Signal.Data.saveMessage(model.attributes, { - Message: Whisper.Message, + Message: window.Whisper.Message, }); model.set({ id }); @@ -5128,13 +5128,13 @@ window.Whisper.ConversationCollection = window.Backbone.Collection.extend({ // We create a new model if it's not already a model if (!item.get) { - hydratedData.push(new Whisper.Conversation(item)); + hydratedData.push(new window.Whisper.Conversation(item)); } else { hydratedData.push(item); } } } else if (!data.get) { - hydratedData = new Whisper.Conversation(data); + hydratedData = new window.Whisper.Conversation(data); } else { hydratedData = data; } diff --git a/ts/shims/showConfirmationDialog.tsx b/ts/shims/showConfirmationDialog.tsx index 71decba03..89a62b0c7 100644 --- a/ts/shims/showConfirmationDialog.tsx +++ b/ts/shims/showConfirmationDialog.tsx @@ -13,7 +13,7 @@ type ConfirmationDialogViewProps = { confirmStyle?: 'affirmative' | 'negative'; message: string; okText: string; - reject?: () => void; + reject?: (error: Error) => void; resolve: () => void; }; @@ -65,7 +65,7 @@ function showConfirmationDialog(options: ConfirmationDialogViewProps) { onClose={() => { removeConfirmationDialog(); if (options.reject) { - options.reject(); + options.reject(new Error('showConfirmationDialog: onClose called')); } }} title={options.message} diff --git a/ts/test-electron/models/messages_test.ts b/ts/test-electron/models/messages_test.ts index adbf2e2d1..9dafe9896 100644 --- a/ts/test-electron/models/messages_test.ts +++ b/ts/test-electron/models/messages_test.ts @@ -22,7 +22,7 @@ describe('Message', () => { const ourUuid = window.getGuid(); function createMessage(attrs: { [key: string]: unknown }) { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); return messages.add(attrs); } @@ -136,13 +136,13 @@ describe('Message', () => { describe('getContact', () => { it('gets outgoing contact', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); const message = messages.add(attributes); message.getContact(); }); it('gets incoming contact', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); const message = messages.add({ type: 'incoming', source, @@ -153,7 +153,7 @@ describe('Message', () => { describe('isIncoming', () => { it('checks if is incoming message', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); let message = messages.add(attributes); assert.notOk(message.isIncoming()); message = messages.add({ type: 'incoming' }); @@ -163,7 +163,7 @@ describe('Message', () => { describe('isOutgoing', () => { it('checks if is outgoing message', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); let message = messages.add(attributes); assert.ok(message.isOutgoing()); message = messages.add({ type: 'incoming' }); @@ -173,7 +173,7 @@ describe('Message', () => { describe('isGroupUpdate', () => { it('checks if is group update', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); let message = messages.add(attributes); assert.notOk(message.isGroupUpdate()); @@ -584,7 +584,7 @@ describe('Message', () => { describe('isEndSession', () => { it('checks if it is end of the session', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); let message = messages.add(attributes); assert.notOk(message.isEndSession()); @@ -596,7 +596,7 @@ describe('Message', () => { describe('MessageCollection', () => { it('should be ordered oldest to newest', () => { - const messages = new Whisper.MessageCollection(); + const messages = new window.Whisper.MessageCollection(); // Timestamps const today = Date.now(); const tomorrow = today + 12345; diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json index 0255e8207..82953a14f 100644 --- a/ts/util/lint/exceptions.json +++ b/ts/util/lint/exceptions.json @@ -316,11 +316,65 @@ "updated": "2018-09-19T18:13:29.628Z", "reasonDetail": "Interacting with already-existing DOM nodes" }, + { + "rule": "jQuery-$(", + "path": "js/views/banner_view.js", + "line": " template: () => $('#banner').html(),", + "lineNumber": 12, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/banner_view.js", + "line": " template: () => $('#banner').html(),", + "lineNumber": 12, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-$(", + "path": "js/views/clear_data_view.js", + "line": " template: () => $('#clear-data').html(),", + "lineNumber": 16, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/clear_data_view.js", + "line": " template: () => $('#clear-data').html(),", + "lineNumber": 16, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-$(", + "path": "js/views/contact_list_view.js", + "line": " template: () => $('#contact').html(),", + "lineNumber": 15, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/contact_list_view.js", + "line": " template: () => $('#contact').html(),", + "lineNumber": 15, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-append(", "path": "js/views/contact_list_view.js", "line": " this.$el.append(this.contactView.el);", - "lineNumber": 45, + "lineNumber": 44, "reasonCategory": "usageTrusted", "updated": "2019-07-31T00:19:18.696Z", "reasonDetail": "Known DOM elements" @@ -328,110 +382,182 @@ { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", - "line": " this.textarea = this.$('.textarea').get(0);", - "lineNumber": 74, + "line": " template: () => $('#debug-log-link').html(),", + "lineNumber": 33, "reasonCategory": "usageTrusted", - "updated": "2021-01-13T23:20:15.717Z", - "reasonDetail": "Needed to get a reference to a textarea." + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/debug_log_view.js", + "line": " template: () => $('#debug-log-link').html(),", + "lineNumber": 33, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-$(", + "path": "js/views/debug_log_view.js", + "line": " template: () => $('#debug-log').html(),", + "lineNumber": 68, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/debug_log_view.js", + "line": " template: () => $('#debug-log').html(),", + "lineNumber": 68, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-$(", + "path": "js/views/debug_log_view.js", + "line": " this.textarea = this.$('.textarea').get(0);", + "lineNumber": 73, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.submit').attr('disabled', 'disabled');", - "lineNumber": 106, + "lineNumber": 105, "reasonCategory": "usageTrusted", - "updated": "2021-01-13T23:20:15.717Z", - "reasonDetail": "Only changes attributes; doesn't write other data to the DOM. Is also trusted input." + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, attribute change" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.submit').removeAttr('disabled');", - "lineNumber": 120, + "lineNumber": 119, "reasonCategory": "usageTrusted", - "updated": "2021-01-13T23:20:15.717Z", - "reasonDetail": "Only changes attributes; doesn't write other data to the DOM. Is also trusted input." + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, attribute change" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.buttons, .textarea').remove();", - "lineNumber": 178, + "lineNumber": 177, "reasonCategory": "usageTrusted", - "updated": "2020-05-01T17:11:39.527Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, DOM removal" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.result').addClass('loading');", - "lineNumber": 179, + "lineNumber": 178, "reasonCategory": "usageTrusted", - "updated": "2020-09-11T17:24:56.124Z", - "reasonDetail": "Static selector argument" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, addition of a class" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " el: this.$('.result'),", - "lineNumber": 188, + "lineNumber": 187, "reasonCategory": "usageTrusted", - "updated": "2020-05-01T17:11:39.527Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Providing a reference to a local DOM node to a trusted view" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.loading').removeClass('loading');", - "lineNumber": 190, + "lineNumber": 189, "reasonCategory": "usageTrusted", - "updated": "2020-05-01T17:11:39.527Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, removal of a class" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.link').focus().select();", - "lineNumber": 192, + "lineNumber": 191, "reasonCategory": "usageTrusted", - "updated": "2020-11-18T03:39:29.033Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, setting focus" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.loading').removeClass('loading');", - "lineNumber": 198, + "lineNumber": 197, "reasonCategory": "usageTrusted", - "updated": "2020-11-18T03:39:29.033Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, removal of a class" }, { "rule": "jQuery-$(", "path": "js/views/debug_log_view.js", "line": " this.$('.result').text(i18n('debugLogError'));", - "lineNumber": 199, + "lineNumber": 198, "reasonCategory": "usageTrusted", - "updated": "2020-11-18T03:39:29.033Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding plain text" + }, + { + "rule": "jQuery-$(", + "path": "js/views/group_member_list_view.js", + "line": " template: () => $('#group-member-list').html(),", + "lineNumber": 12, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/group_member_list_view.js", + "line": " template: () => $('#group-member-list').html(),", + "lineNumber": 12, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/group_member_list_view.js", "line": " this.$('.container').append(this.member_list_view.el);", - "lineNumber": 29, + "lineNumber": 28, "reasonCategory": "usageTrusted", - "updated": "2018-09-19T21:59:32.770Z", - "reasonDetail": "Protected from arbitrary input" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding sub-view to DOM" }, { "rule": "jQuery-append(", "path": "js/views/group_member_list_view.js", "line": " this.$('.container').append(this.member_list_view.el);", - "lineNumber": 29, + "lineNumber": 28, "reasonCategory": "usageTrusted", - "updated": "2018-09-19T18:13:29.628Z", - "reasonDetail": "Interacting with already-existing DOM nodes" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding sub-view to DOM" + }, + { + "rule": "jQuery-$(", + "path": "js/views/identicon_svg_view.js", + "line": " template: () => $('#identicon-svg').html(),", + "lineNumber": 14, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/identicon_svg_view.js", + "line": " template: () => $('#identicon-svg').html(),", + "lineNumber": 14, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-html(", @@ -446,154 +572,208 @@ "rule": "jQuery-appendTo(", "path": "js/views/inbox_view.js", "line": " view.$el.appendTo(this.el);", - "lineNumber": 34, + "lineNumber": 35, "reasonCategory": "usageTrusted", - "updated": "2019-10-21T22:30:15.622Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding sub-view to DOM" + }, + { + "rule": "jQuery-$(", + "path": "js/views/inbox_view.js", + "line": " template: () => $('#app-loading-screen').html(),", + "lineNumber": 64, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/inbox_view.js", + "line": " template: () => $('#app-loading-screen').html(),", + "lineNumber": 64, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.message').text(message);", - "lineNumber": 68, + "lineNumber": 69, "reasonCategory": "usageTrusted", - "updated": "2019-10-21T22:30:15.622Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding plain text" + }, + { + "rule": "jQuery-$(", + "path": "js/views/inbox_view.js", + "line": " template: () => $('#two-column').html(),", + "lineNumber": 78, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/inbox_view.js", + "line": " template: () => $('#two-column').html(),", + "lineNumber": 78, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " el: this.$('.conversation-stack'),", - "lineNumber": 84, + "lineNumber": 85, "reasonCategory": "usageTrusted", - "updated": "2019-10-21T22:30:15.622Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Providing reference to DOM for sub-view" }, { "rule": "jQuery-prependTo(", "path": "js/views/inbox_view.js", "line": " this.appLoadingScreen.$el.prependTo(this.el);", - "lineNumber": 98, + "lineNumber": 99, "reasonCategory": "usageTrusted", - "updated": "2019-10-21T22:30:15.622Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-appendTo(", "path": "js/views/inbox_view.js", "line": " toast.$el.appendTo(this.$el);", - "lineNumber": 107, + "lineNumber": 108, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.call-manager-placeholder').append(this.callManagerView.el);", - "lineNumber": 126, + "lineNumber": 127, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-append(", "path": "js/views/inbox_view.js", "line": " this.$('.call-manager-placeholder').append(this.callManagerView.el);", - "lineNumber": 126, + "lineNumber": 127, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.left-pane-placeholder').append(this.leftPaneView.el);", - "lineNumber": 137, + "lineNumber": 138, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-append(", "path": "js/views/inbox_view.js", "line": " this.$('.left-pane-placeholder').append(this.leftPaneView.el);", - "lineNumber": 137, + "lineNumber": 138, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " if (e && this.$(e.target).closest('.placeholder').length) {", - "lineNumber": 190, + "lineNumber": 191, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('#header, .gutter').addClass('inactive');", - "lineNumber": 194, + "lineNumber": 195, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding or removing classes" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.conversation-stack').removeClass('inactive');", - "lineNumber": 195, + "lineNumber": 196, "reasonCategory": "usageTrusted", - "updated": "2020-09-11T17:24:56.124Z", - "reasonDetail": "Static selector argument" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding or removing classes" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.conversation-stack').addClass('inactive');", - "lineNumber": 198, + "lineNumber": 199, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding or removing classes" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('#header, .gutter').removeClass('inactive');", - "lineNumber": 199, + "lineNumber": 200, "reasonCategory": "usageTrusted", - "updated": "2020-09-11T17:24:56.124Z", - "reasonDetail": "Static selector argument" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, adding or removing classes" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.conversation:first .menu').trigger('close');", - "lineNumber": 200, + "lineNumber": 201, "reasonCategory": "usageTrusted", - "updated": "2020-05-28T17:42:35.329Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, trigging DOM event" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " if (e && this.$(e.target).closest('.capture-audio').length > 0) {", - "lineNumber": 222, + "lineNumber": 223, "reasonCategory": "usageTrusted", - "updated": "2020-05-29T18:29:18.234Z", - "reasonDetail": "Known DOM elements" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", "path": "js/views/inbox_view.js", "line": " this.$('.conversation:first .recorder').trigger('close');", - "lineNumber": 225, + "lineNumber": 226, "reasonCategory": "usageTrusted", - "updated": "2020-05-29T18:29:18.234Z", - "reasonDetail": "Hardcoded selector" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, triggering DOM event" + }, + { + "rule": "jQuery-$(", + "path": "js/views/install_view.js", + "line": " template: () => $('#link-flow-template').html(),", + "lineNumber": 27, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/install_view.js", + "line": " template: () => $('#link-flow-template').html(),", + "lineNumber": 27, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" }, { "rule": "jQuery-$(", @@ -733,18 +913,38 @@ { "rule": "jQuery-$(", "path": "js/views/key_verification_view.js", - "line": " this.$('.key-verification-wrapper').append(this.view.el);", - "lineNumber": 29, + "line": " template: () => $('#key-verification').html(),", + "lineNumber": 12, "reasonCategory": "usageTrusted", - "updated": "2020-06-23T06:48:06.829Z" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/key_verification_view.js", + "line": " template: () => $('#key-verification').html(),", + "lineNumber": 12, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-$(", + "path": "js/views/key_verification_view.js", + "line": " this.$('.key-verification-wrapper').append(this.view.el);", + "lineNumber": 27, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-append(", "path": "js/views/key_verification_view.js", "line": " this.$('.key-verification-wrapper').append(this.view.el);", - "lineNumber": 29, + "lineNumber": 27, "reasonCategory": "usageTrusted", - "updated": "2020-06-23T06:48:06.829Z" + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" }, { "rule": "jQuery-append(", @@ -764,6 +964,24 @@ "updated": "2018-09-15T00:38:04.183Z", "reasonDetail": "Hard-coded value" }, + { + "rule": "jQuery-$(", + "path": "js/views/phone-input-view.js", + "line": " template: () => $('#phone-number').html(),", + "lineNumber": 13, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/phone-input-view.js", + "line": " template: () => $('#phone-number').html(),", + "lineNumber": 13, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/phone-input-view.js", @@ -818,6 +1036,24 @@ "updated": "2018-09-19T21:59:32.770Z", "reasonDetail": "Protected from arbitrary input" }, + { + "rule": "jQuery-$(", + "path": "js/views/recorder_view.js", + "line": " template: () => $('#recorder').html(),", + "lineNumber": 14, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/recorder_view.js", + "line": " template: () => $('#recorder').html(),", + "lineNumber": 14, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/recorder_view.js", @@ -845,6 +1081,24 @@ "updated": "2018-10-11T19:22:47.331Z", "reasonDetail": "Operating on already-existing DOM elements" }, + { + "rule": "jQuery-$(", + "path": "js/views/safety_number_change_dialog_view.js", + "line": " template: () => $('#safety-number-change-dialog').html(),", + "lineNumber": 11, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/safety_number_change_dialog_view.js", + "line": " template: () => $('#safety-number-change-dialog').html(),", + "lineNumber": 11, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/safety_number_change_dialog_view.js", @@ -905,6 +1159,24 @@ "updated": "2020-06-02T21:51:34.813Z", "reasonDetail": "Protected from arbitrary input" }, + { + "rule": "jQuery-$(", + "path": "js/views/settings_view.js", + "line": " template: () => $('#settings').html(),", + "lineNumber": 94, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/settings_view.js", + "line": " template: () => $('#settings').html(),", + "lineNumber": 94, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/settings_view.js", @@ -1058,6 +1330,24 @@ "updated": "2020-08-21T11:29:29.636Z", "reasonDetail": "Interacting with already-existing DOM nodes" }, + { + "rule": "jQuery-$(", + "path": "js/views/settings_view.js", + "line": " template: () => $('#syncSettings').html(),", + "lineNumber": 274, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/settings_view.js", + "line": " template: () => $('#syncSettings').html(),", + "lineNumber": 274, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/settings_view.js", @@ -1121,6 +1411,24 @@ "updated": "2020-08-21T11:29:29.636Z", "reasonDetail": "Protected from arbitrary input" }, + { + "rule": "jQuery-$(", + "path": "js/views/standalone_registration_view.js", + "line": " template: () => $('#standalone').html(),", + "lineNumber": 13, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "js/views/standalone_registration_view.js", + "line": " template: () => $('#standalone').html(),", + "lineNumber": 13, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, { "rule": "jQuery-$(", "path": "js/views/standalone_registration_view.js", @@ -1283,59 +1591,6 @@ "updated": "2020-11-18T03:39:29.033Z", "reasonDetail": "Protected from arbitrary input" }, - { - "rule": "jQuery-html(", - "path": "js/views/toast_view.js", - "line": " this.$el.html(", - "lineNumber": 23, - "reasonCategory": "usageTrusted", - "updated": "2018-09-15T00:38:04.183Z" - }, - { - "rule": "jQuery-appendTo(", - "path": "js/views/toast_view.js", - "line": " toast.$el.appendTo(el);", - "lineNumber": 37, - "reasonCategory": "usageTrusted", - "updated": "2019-11-06T19:56:38.557Z", - "reasonDetail": "Protected from arbitrary input" - }, - { - "rule": "jQuery-html(", - "path": "js/views/whisper_view.js", - "line": " this.$el.html(Mustache.render(template, attrs, partials));", - "lineNumber": 52, - "reasonCategory": "usageTrusted", - "updated": "2018-09-15T00:38:04.183Z", - "reasonDetail": "Value set came directly from Mustache tempating engine" - }, - { - "rule": "jQuery-$(", - "path": "js/views/whisper_view.js", - "line": " $('script[type=\"text/x-tmpl-mustache\"]').each((i, el) => {", - "lineNumber": 70, - "reasonCategory": "usageTrusted", - "updated": "2018-09-19T21:59:32.770Z", - "reasonDetail": "Protected from arbitrary input" - }, - { - "rule": "jQuery-$(", - "path": "js/views/whisper_view.js", - "line": " const $el = $(el);", - "lineNumber": 71, - "reasonCategory": "usageTrusted", - "updated": "2018-09-19T21:59:32.770Z", - "reasonDetail": "Protected from arbitrary input" - }, - { - "rule": "jQuery-html(", - "path": "js/views/whisper_view.js", - "line": " templates[id] = $el.html();", - "lineNumber": 73, - "reasonCategory": "usageTrusted", - "updated": "2018-09-15T00:38:04.183Z", - "reasonDetail": "Getting the value, not setting it" - }, { "rule": "DOM-innerHTML", "path": "node_modules/@electron/get/node_modules/@sindresorhus/is/dist/index.js", @@ -6851,8 +7106,7 @@ "line": " $({ global: true, forced: Constructor != NativeConstructor }, exported);", "lineNumber": 90, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6860,8 +7114,7 @@ "line": " } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);", "lineNumber": 86, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6869,8 +7122,7 @@ "line": " reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));", "lineNumber": 31, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6878,8 +7130,7 @@ "line": " $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {", "lineNumber": 103, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6887,8 +7138,7 @@ "line": " $({", "lineNumber": 209, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6896,8 +7146,7 @@ "line": "$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6905,8 +7154,7 @@ "line": "$({ target: 'ArrayBuffer', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6914,8 +7162,7 @@ "line": "$({ target: 'ArrayBuffer', proto: true, unsafe: true, forced: INCORRECT_SLICE }, {", "lineNumber": 20, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6923,8 +7170,7 @@ "line": "$({ target: 'Array', proto: true, forced: FORCED }, {", "lineNumber": 36, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6932,8 +7178,7 @@ "line": "$({ target: 'Array', proto: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6941,8 +7186,7 @@ "line": "$({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6950,8 +7194,7 @@ "line": "$({ target: 'Array', proto: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6959,8 +7202,7 @@ "line": "$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('filter') }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6968,8 +7210,7 @@ "line": "$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6977,8 +7218,7 @@ "line": "$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6986,8 +7226,7 @@ "line": "$({ target: 'Array', proto: true }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -6995,8 +7234,7 @@ "line": "$({ target: 'Array', proto: true }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7004,8 +7242,7 @@ "line": "$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7013,8 +7250,7 @@ "line": "$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7022,8 +7258,7 @@ "line": "$({ target: 'Array', proto: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7031,8 +7266,7 @@ "line": "$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7040,8 +7274,7 @@ "line": "$({ target: 'Array', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7049,8 +7282,7 @@ "line": "$({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7058,8 +7290,7 @@ "line": "$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7067,8 +7298,7 @@ "line": "$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('map') }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7076,8 +7306,7 @@ "line": "$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7085,8 +7314,7 @@ "line": "$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduceRight') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7094,8 +7322,7 @@ "line": "$({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7103,8 +7330,7 @@ "line": "$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7112,8 +7338,7 @@ "line": "$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {", "lineNumber": 19, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7121,8 +7346,7 @@ "line": "$({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7130,8 +7354,7 @@ "line": "$({ target: 'Array', proto: true, forced: FORCED }, {", "lineNumber": 26, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7139,8 +7362,7 @@ "line": "$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {", "lineNumber": 19, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7148,8 +7370,7 @@ "line": "$({ global: true, forced: !NATIVE_ARRAY_BUFFER }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7157,8 +7378,7 @@ "line": "$({ target: 'Date', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7166,8 +7386,7 @@ "line": "$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7175,8 +7394,7 @@ "line": "$({ target: 'Date', proto: true, forced: FORCED }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7184,8 +7402,7 @@ "line": "$({ target: 'Function', proto: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7193,8 +7410,7 @@ "line": "$({ target: 'Math', stat: true, forced: FORCED }, {", "lineNumber": 17, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7202,8 +7418,7 @@ "line": "$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7211,8 +7426,7 @@ "line": "$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7220,8 +7434,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7229,8 +7442,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7238,8 +7450,7 @@ "line": "$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7247,8 +7458,7 @@ "line": "$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 });", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7256,8 +7466,7 @@ "line": "$({ target: 'Math', stat: true }, { fround: fround });", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7265,8 +7474,7 @@ "line": "$({ target: 'Math', stat: true, forced: BUGGY }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7274,8 +7482,7 @@ "line": "$({ target: 'Math', stat: true, forced: FORCED }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7283,8 +7490,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7292,8 +7498,7 @@ "line": "$({ target: 'Math', stat: true }, { log1p: log1p });", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7301,8 +7506,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7310,8 +7514,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7319,8 +7522,7 @@ "line": "$({ target: 'Math', stat: true, forced: FORCED }, {", "lineNumber": 16, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7328,8 +7530,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7337,8 +7538,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7346,8 +7546,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7355,8 +7554,7 @@ "line": "$({ target: 'Number', stat: true }, { isFinite: numberIsFinite });", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7364,8 +7562,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7373,8 +7570,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7382,8 +7578,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7391,8 +7586,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7400,8 +7594,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7409,8 +7602,7 @@ "line": "$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7418,8 +7610,7 @@ "line": "$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7427,8 +7618,7 @@ "line": "$({ target: 'Number', proto: true, forced: FORCED }, {", "lineNumber": 40, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7436,8 +7626,7 @@ "line": "$({ target: 'Number', proto: true, forced: FORCED }, {", "lineNumber": 18, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7445,8 +7634,7 @@ "line": "$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7454,8 +7642,7 @@ "line": "$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7463,8 +7650,7 @@ "line": " $({ target: 'Object', proto: true, forced: FORCED }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7472,8 +7658,7 @@ "line": "$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7481,8 +7666,7 @@ "line": "$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7490,8 +7674,7 @@ "line": " $({ target: 'Object', proto: true, forced: FORCED }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7499,8 +7682,7 @@ "line": "$({ target: 'Object', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7508,8 +7690,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7517,8 +7698,7 @@ "line": "$({ target: 'Object', stat: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7526,8 +7706,7 @@ "line": "$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7535,8 +7714,7 @@ "line": "$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7544,8 +7722,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7553,8 +7730,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7562,8 +7738,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7571,8 +7746,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7580,8 +7754,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7589,8 +7762,7 @@ "line": "$({ target: 'Object', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7598,8 +7770,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7607,8 +7778,7 @@ "line": " $({ target: 'Object', proto: true, forced: FORCED }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7616,8 +7786,7 @@ "line": " $({ target: 'Object', proto: true, forced: FORCED }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7625,8 +7794,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7634,8 +7802,7 @@ "line": "$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7643,8 +7810,7 @@ "line": "$({ target: 'Object', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7652,8 +7818,7 @@ "line": "$({ target: 'Object', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7661,8 +7826,7 @@ "line": "$({ global: true, forced: parseFloat != parseFloatImplementation }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7670,8 +7834,7 @@ "line": "$({ global: true, forced: parseInt != parseIntImplementation }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7679,8 +7842,7 @@ "line": "$({ target: 'Promise', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7688,8 +7850,7 @@ "line": "$({ target: 'Promise', proto: true, real: true }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7697,8 +7858,7 @@ "line": " if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {", "lineNumber": 289, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7706,8 +7866,7 @@ "line": "$({ global: true, wrap: true, forced: FORCED }, {", "lineNumber": 298, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7715,8 +7874,7 @@ "line": "$({ target: PROMISE, stat: true, forced: FORCED }, {", "lineNumber": 308, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7724,8 +7882,7 @@ "line": "$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {", "lineNumber": 318, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7733,8 +7890,7 @@ "line": "$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {", "lineNumber": 326, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7742,8 +7898,7 @@ "line": "$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {", "lineNumber": 17, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7751,8 +7906,7 @@ "line": "$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {", "lineNumber": 25, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7760,8 +7914,7 @@ "line": "$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, {", "lineNumber": 16, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7769,8 +7922,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7778,8 +7930,7 @@ "line": "$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7787,8 +7938,7 @@ "line": "$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7796,8 +7946,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 22, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7805,8 +7954,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7814,8 +7962,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7823,8 +7970,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7832,8 +7978,7 @@ "line": "$({ target: 'Reflect', stat: true, sham: !FREEZING }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7841,8 +7986,7 @@ "line": "if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7850,8 +7994,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 34, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7859,8 +8002,7 @@ "line": "$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7868,8 +8010,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7877,8 +8018,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7886,8 +8026,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7895,8 +8034,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7904,8 +8042,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7913,8 +8050,7 @@ "line": "$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('endsWith') }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7922,8 +8058,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7931,8 +8066,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7940,8 +8074,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7949,8 +8082,7 @@ "line": "$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7958,8 +8090,7 @@ "line": "$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7967,8 +8098,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7976,8 +8106,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7985,8 +8114,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 79, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -7994,8 +8122,7 @@ "line": "$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8003,8 +8130,7 @@ "line": "$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8012,8 +8138,7 @@ "line": "$({ target: 'String', stat: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8021,8 +8146,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8030,8 +8154,7 @@ "line": "var SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8039,8 +8162,7 @@ "line": "var SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;", "lineNumber": 15, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8048,8 +8170,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8057,8 +8178,7 @@ "line": "$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('startsWith') }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8066,8 +8186,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8075,8 +8194,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8084,8 +8202,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8093,8 +8210,7 @@ "line": "$({ target: 'String', proto: true, forced: FORCED }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8102,8 +8218,7 @@ "line": "$({ target: 'String', proto: true, forced: FORCED }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8111,8 +8226,7 @@ "line": "$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8120,8 +8234,7 @@ "line": " $({ global: true, forced: true }, {", "lineNumber": 47, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-wrap(", @@ -8129,8 +8242,7 @@ "line": " return wrap(tag, description);", "lineNumber": 173, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-wrap(", @@ -8138,8 +8250,7 @@ "line": " return wrap(wellKnownSymbol(name), name);", "lineNumber": 200, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8147,8 +8258,7 @@ "line": "$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {", "lineNumber": 204, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8156,8 +8266,7 @@ "line": "$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {", "lineNumber": 212, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8165,8 +8274,7 @@ "line": "$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {", "lineNumber": 233, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8174,8 +8282,7 @@ "line": "$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {", "lineNumber": 248, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8183,8 +8290,7 @@ "line": "$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {", "lineNumber": 259, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8192,8 +8298,7 @@ "line": "JSON && $({ target: 'JSON', stat: true, forced: !NATIVE_SYMBOL || fails(function () {", "lineNumber": 267, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8201,8 +8306,7 @@ "line": "$({ global: true }, {", "lineNumber": 27, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8210,8 +8314,7 @@ "line": "$({ target: 'Array', stat: true }, {", "lineNumber": 21, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8219,8 +8322,7 @@ "line": "$({ global: true }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8228,8 +8330,7 @@ "line": "$({ global: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8237,8 +8338,7 @@ "line": "$({ global: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8246,8 +8346,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8255,8 +8354,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8264,8 +8362,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8273,8 +8370,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8282,8 +8378,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8291,8 +8386,7 @@ "line": "$({ target: 'Map', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8300,8 +8394,7 @@ "line": "$({ target: 'Map', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8309,8 +8402,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8318,8 +8410,7 @@ "line": "$({ target: 'Map', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8327,8 +8418,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8336,8 +8426,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8345,8 +8434,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8354,8 +8442,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8363,8 +8450,7 @@ "line": "$({ target: 'Map', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8372,8 +8458,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8381,8 +8466,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8390,8 +8474,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8399,8 +8482,7 @@ "line": "$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 9, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8408,8 +8490,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8417,8 +8498,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8426,8 +8506,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8435,8 +8514,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8444,8 +8522,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8453,8 +8530,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8462,8 +8538,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8471,8 +8546,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8480,8 +8554,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8489,8 +8562,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8498,8 +8570,7 @@ "line": "$({ target: 'Math', stat: true, forced: true }, {", "lineNumber": 27, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8507,8 +8578,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8516,8 +8586,7 @@ "line": "$({ target: 'Math', stat: true }, {", "lineNumber": 5, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8525,8 +8594,7 @@ "line": "$({ target: 'Number', stat: true }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8534,8 +8602,7 @@ "line": "$({ global: true }, {", "lineNumber": 203, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8543,8 +8610,7 @@ "line": "$({ target: 'Promise', stat: true }, {", "lineNumber": 13, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8552,8 +8618,7 @@ "line": "$({ target: 'Promise', stat: true }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8561,8 +8626,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8570,8 +8634,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8579,8 +8642,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 28, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8588,8 +8650,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 19, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8597,8 +8658,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8606,8 +8666,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8615,8 +8674,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 18, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8624,8 +8682,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8633,8 +8690,7 @@ "line": "$({ target: 'Reflect', stat: true }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8642,8 +8698,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8651,8 +8706,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8660,8 +8714,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8669,8 +8722,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8678,8 +8730,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8687,8 +8738,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8696,8 +8746,7 @@ "line": "$({ target: 'Set', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8705,8 +8754,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8714,8 +8762,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8723,8 +8770,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8732,8 +8778,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8741,8 +8786,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 10, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8750,8 +8794,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 14, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8759,8 +8802,7 @@ "line": "$({ target: 'Set', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8768,8 +8810,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8777,8 +8818,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8786,8 +8826,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8795,8 +8834,7 @@ "line": "$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 12, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8804,8 +8842,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 7, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8813,8 +8850,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 34, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8822,8 +8858,7 @@ "line": "$({ target: 'String', proto: true }, {", "lineNumber": 26, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8831,8 +8866,7 @@ "line": "$({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8840,8 +8874,7 @@ "line": "$({ target: 'WeakMap', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8849,8 +8882,7 @@ "line": "$({ target: 'WeakMap', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8858,8 +8890,7 @@ "line": "$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8867,8 +8898,7 @@ "line": "$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, {", "lineNumber": 8, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8876,8 +8906,7 @@ "line": "$({ target: 'WeakSet', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8885,8 +8914,7 @@ "line": "$({ target: 'WeakSet', stat: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8894,8 +8922,7 @@ "line": "$({ global: true, enumerable: true, noTargetGet: true }, {", "lineNumber": 11, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8903,8 +8930,7 @@ "line": "$({ global: true, bind: true, forced: MSIE }, {", "lineNumber": 21, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-wrap(", @@ -8912,8 +8938,7 @@ "line": " setTimeout: wrap(global.setTimeout),", "lineNumber": 24, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-wrap(", @@ -8921,8 +8946,7 @@ "line": " setInterval: wrap(global.setInterval)", "lineNumber": 27, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-append(", @@ -8930,8 +8954,7 @@ "line": " append: function append(name, value) {", "lineNumber": 159, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8939,8 +8962,7 @@ "line": "$({ global: true, forced: !USE_NATIVE_URL }, {", "lineNumber": 304, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8948,8 +8970,7 @@ "line": "$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {", "lineNumber": 1006, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -8957,8 +8978,7 @@ "line": "$({ target: 'URL', proto: true, enumerable: true }, {", "lineNumber": 6, "reasonCategory": "falseMatch", - "updated": "2020-01-06T20:40:04.973Z", - "reasonDetail": "" + "updated": "2020-01-06T20:40:04.973Z" }, { "rule": "jQuery-$(", @@ -14342,6 +14362,96 @@ "updated": "2018-09-17T20:50:40.689Z", "reasonDetail": "Hard-coded value" }, + { + "rule": "jQuery-$(", + "path": "ts/backbone/views/toast_view.js", + "line": " template: () => $('#toast').html(),", + "lineNumber": 7, + "reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted", + "updated": "2021-02-26T19:21:25.912Z", + "reasonDetail": "" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/toast_view.js", + "line": " template: () => $('#toast').html(),", + "lineNumber": 7, + "reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted", + "updated": "2021-02-26T19:21:25.912Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/toast_view.js", + "line": " this.$el.html(window.Mustache.render(window._.result(this, 'template', ''), window._.result(this, 'render_attributes', '')));", + "lineNumber": 16, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding Mustache render to DOM" + }, + { + "rule": "jQuery-appendTo(", + "path": "ts/backbone/views/toast_view.js", + "line": " toast.$el.appendTo(el);", + "lineNumber": 24, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Add sub-view to DOM" + }, + { + "rule": "jQuery-$(", + "path": "ts/backbone/views/toast_view.ts", + "line": " template: () => $('#toast').html(),", + "lineNumber": 8, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/toast_view.ts", + "line": " template: () => $('#toast').html(),", + "lineNumber": 8, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T19:23:51.217Z", + "reasonDetail": "Static selector, read-only access" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/toast_view.ts", + "line": " this.$el.html(", + "lineNumber": 19, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Rendering provided template" + }, + { + "rule": "jQuery-appendTo(", + "path": "ts/backbone/views/toast_view.ts", + "line": " toast.$el.appendTo(el);", + "lineNumber": 33, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Adding sub-view to DOM" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/whisper_view.js", + "line": " this.$el.html(window.Mustache.render(template, attrs));", + "lineNumber": 25, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Rendering provided template" + }, + { + "rule": "jQuery-html(", + "path": "ts/backbone/views/whisper_view.ts", + "line": " this.$el.html(window.Mustache.render(template, attrs));", + "lineNumber": 28, + "reasonCategory": "usageTrusted", + "updated": "2021-02-26T18:44:56.450Z", + "reasonDetail": "Rendered template has been sanitized" + }, { "rule": "React-useRef", "path": "ts/calling/useGetCallingFrameBuffer.js", @@ -15312,4 +15422,4 @@ "updated": "2021-01-08T15:46:32.143Z", "reasonDetail": "Doesn't manipulate the DOM. This is just a function." } -] +] \ No newline at end of file diff --git a/ts/util/longRunningTaskWrapper.ts b/ts/util/longRunningTaskWrapper.ts index 88d916174..0ef131e51 100644 --- a/ts/util/longRunningTaskWrapper.ts +++ b/ts/util/longRunningTaskWrapper.ts @@ -16,14 +16,14 @@ export async function longRunningTaskWrapper({ const ONE_SECOND = 1000; const TWO_SECONDS = 2000; - let progressView: typeof Whisper.ReactWrapperView | undefined; + let progressView: typeof window.Whisper.ReactWrapperView | undefined; let spinnerStart; let progressTimeout: NodeJS.Timeout | undefined = setTimeout(() => { window.log.info(`longRunningTaskWrapper/${idLog}: Creating spinner`); // Note: this component uses a portal to render itself into the top-level DOM. No // need to attach it to the DOM here. - progressView = new Whisper.ReactWrapperView({ + progressView = new window.Whisper.ReactWrapperView({ className: 'progress-modal-wrapper', Component: window.Signal.Components.ProgressModal, }); @@ -76,7 +76,7 @@ export async function longRunningTaskWrapper({ // Note: this component uses a portal to render itself into the top-level DOM. No // need to attach it to the DOM here. - const errorView = new Whisper.ReactWrapperView({ + const errorView = new window.Whisper.ReactWrapperView({ className: 'error-modal-wrapper', Component: window.Signal.Components.ErrorModal, props: { diff --git a/ts/views/conversation_view.ts b/ts/views/conversation_view.ts index df8836300..3b36574e5 100644 --- a/ts/views/conversation_view.ts +++ b/ts/views/conversation_view.ts @@ -3,14 +3,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -// This allows us to pull in types despite the fact that this is not a module. We can't -// use normal import syntax, nor can we use 'import type' syntax, or this will be turned -// into a module, and we'll get the dreaded 'exports is not defined' error. -// see https://github.com/microsoft/TypeScript/issues/41562 -type AttachmentType = import('../types/Attachment').AttachmentType; -type GroupV2PendingMemberType = import('../model-types.d').GroupV2PendingMemberType; -type MediaItemType = import('../components/LightboxGallery').MediaItemType; -type MessageType = import('../state/ducks/conversations').MessageType; +import { AttachmentType } from '../types/Attachment'; +import { GroupV2PendingMemberType } from '../model-types.d'; +import { MediaItemType } from '../components/LightboxGallery'; +import { MessageType } from '../state/ducks/conversations'; type GetLinkPreviewImageResult = { data: ArrayBuffer; @@ -250,7 +246,7 @@ Whisper.MessageBodyTooLongToast = Whisper.ToastView.extend({ }); Whisper.FileSizeToast = Whisper.ToastView.extend({ - templateName: 'file-size-modal', + template: () => $('#file-size-modal').html(), render_attributes() { return { 'file-size-warning': window.i18n('fileSizeWarning'), @@ -267,31 +263,31 @@ Whisper.UnableToLoadToast = Whisper.ToastView.extend({ }); Whisper.DangerousFileTypeToast = Whisper.ToastView.extend({ - template: window.i18n('dangerousFileType'), + template: () => window.i18n('dangerousFileType'), }); Whisper.OneNonImageAtATimeToast = Whisper.ToastView.extend({ - template: window.i18n('oneNonImageAtATimeToast'), + template: () => window.i18n('oneNonImageAtATimeToast'), }); Whisper.CannotMixImageAndNonImageAttachmentsToast = Whisper.ToastView.extend({ - template: window.i18n('cannotMixImageAndNonImageAttachments'), + template: () => window.i18n('cannotMixImageAndNonImageAttachments'), }); Whisper.MaxAttachmentsToast = Whisper.ToastView.extend({ - template: window.i18n('maximumAttachments'), + template: () => window.i18n('maximumAttachments'), }); Whisper.AlreadyGroupMemberToast = Whisper.ToastView.extend({ - template: window.i18n('GroupV2--join--already-in-group'), + template: () => window.i18n('GroupV2--join--already-in-group'), }); Whisper.AlreadyRequestedToJoinToast = Whisper.ToastView.extend({ - template: window.i18n('GroupV2--join--already-awaiting-approval'), + template: () => window.i18n('GroupV2--join--already-awaiting-approval'), }); Whisper.ConversationLoadingScreen = Whisper.View.extend({ - templateName: 'conversation-loading-screen', + template: () => $('#conversation-loading-screen').html(), className: 'conversation-loading-screen', }); @@ -302,7 +298,7 @@ Whisper.ConversationView = Whisper.View.extend({ id() { return `conversation-${this.model.cid}`; }, - template: $('#conversation').html(), + template: () => $('#conversation').html(), render_attributes() { return { 'send-message': window.i18n('sendMessage'), @@ -374,31 +370,37 @@ Whisper.ConversationView = Whisper.View.extend({ this.downloadNewVersion ); - this.lazyUpdateVerified = _.debounce( + this.lazyUpdateVerified = window._.debounce( this.model.updateVerified.bind(this.model), 1000 // one second ); this.model.throttledGetProfiles = this.model.throttledGetProfiles || - _.throttle(this.model.getProfiles.bind(this.model), FIVE_MINUTES); + window._.throttle(this.model.getProfiles.bind(this.model), FIVE_MINUTES); this.model.throttledUpdateSharedGroups = this.model.throttledUpdateSharedGroups || - _.throttle(this.model.updateSharedGroups.bind(this.model), FIVE_MINUTES); + window._.throttle( + this.model.updateSharedGroups.bind(this.model), + FIVE_MINUTES + ); this.model.throttledFetchLatestGroupV2Data = this.model.throttledFetchLatestGroupV2Data || - _.throttle( + window._.throttle( this.model.fetchLatestGroupV2Data.bind(this.model), FIVE_MINUTES ); this.model.throttledMaybeMigrateV1Group = this.model.throttledMaybeMigrateV1Group || - _.throttle(this.model.maybeMigrateV1Group.bind(this.model), FIVE_MINUTES); + window._.throttle( + this.model.maybeMigrateV1Group.bind(this.model), + FIVE_MINUTES + ); - this.debouncedMaybeGrabLinkPreview = _.debounce( + this.debouncedMaybeGrabLinkPreview = window._.debounce( this.maybeGrabLinkPreview.bind(this), 200 ); - this.debouncedSaveDraft = _.debounce(this.saveDraft.bind(this), 200); + this.debouncedSaveDraft = window._.debounce(this.saveDraft.bind(this), 200); this.render(); @@ -1506,7 +1508,7 @@ Whisper.ConversationView = Whisper.View.extend({ const draftAttachments = this.model.get('draftAttachments') || []; this.model.set({ - draftAttachments: _.reject( + draftAttachments: window._.reject( draftAttachments, item => item.path === attachment.path ), @@ -1553,7 +1555,7 @@ Whisper.ConversationView = Whisper.View.extend({ } const draftAttachments = this.model.get('draftAttachments') || []; - const files = _.compact( + const files = window._.compact( await Promise.all( draftAttachments.map((attachment: any) => this.getFile(attachment)) ) @@ -1575,7 +1577,7 @@ Whisper.ConversationView = Whisper.View.extend({ } return { - ..._.pick(attachment, [ + ...window._.pick(attachment, [ 'contentType', 'fileName', 'size', @@ -1620,14 +1622,14 @@ Whisper.ConversationView = Whisper.View.extend({ if (toWrite.data) { const path = await writeNewDraftData(toWrite.data); toWrite = { - ..._.omit(toWrite, ['data']), + ...window._.omit(toWrite, ['data']), path, }; } if (toWrite.screenshotData) { const screenshotPath = await writeNewDraftData(toWrite.screenshotData); toWrite = { - ..._.omit(toWrite, ['screenshotData']), + ...window._.omit(toWrite, ['screenshotData']), screenshotPath, }; } @@ -3168,19 +3170,23 @@ Whisper.ConversationView = Whisper.View.extend({ }, async destroyMessages() { - try { - await this.confirm(window.i18n('deleteConversationConfirmation')); - this.longRunningTaskWrapper({ - name: 'destroymessages', - task: async () => { - this.model.trigger('unload', 'delete messages'); - await this.model.destroyMessages(); - this.model.updateLastMessage(); - }, - }); - } catch (error) { - // nothing to see here, user canceled out of dialog - } + window.showConfirmationDialog({ + message: window.i18n('deleteConversationConfirmation'), + okText: window.i18n('delete'), + resolve: () => { + this.longRunningTaskWrapper({ + name: 'destroymessages', + task: async () => { + this.model.trigger('unload', 'delete messages'); + await this.model.destroyMessages(); + this.model.updateLastMessage(); + }, + }); + }, + reject: () => { + window.log.info('destroyMessages: User canceled delete'); + }, + }); }, async isCallSafe() { @@ -3981,7 +3987,7 @@ Whisper.ConversationView = Whisper.View.extend({ // We eliminate the ObjectURL here, unneeded for send or save return { ...item, - image: _.omit(item.image, 'url'), + image: window._.omit(item.image, 'url'), }; } diff --git a/ts/window.d.ts b/ts/window.d.ts index 414fdbea5..5879559d7 100644 --- a/ts/window.d.ts +++ b/ts/window.d.ts @@ -107,7 +107,7 @@ type ConfirmationDialogViewProps = { confirmStyle?: 'affirmative' | 'negative'; message: string; okText: string; - reject?: () => void; + reject?: (error: Error) => void; resolve: () => void; }; @@ -115,6 +115,8 @@ declare global { // We want to extend `window`'s properties, so we need an interface. // eslint-disable-next-line no-restricted-syntax interface Window { + startApp: () => void; + _: typeof Underscore; $: typeof jQuery; @@ -127,6 +129,10 @@ declare global { PQueue: typeof PQueue; PQueueType: PQueue; + Mustache: { + render: (template: string, data: any, partials?: any) => string; + parse: (template: string) => void; + }; WhatIsThis: WhatIsThis; @@ -655,7 +661,7 @@ export type WhisperType = { ClearDataView: WhatIsThis; ReactWrapperView: WhatIsThis; activeConfirmationView: WhatIsThis; - ToastView: typeof Whisper.View & { + ToastView: typeof window.Whisper.View & { show: (view: typeof Backbone.View, el: Element) => void; }; ConversationArchivedToast: WhatIsThis; @@ -731,33 +737,35 @@ export type WhisperType = { deliveryReceiptBatcher: BatcherType; RotateSignedPreKeyListener: WhatIsThis; - AlreadyGroupMemberToast: typeof Whisper.ToastView; - AlreadyRequestedToJoinToast: typeof Whisper.ToastView; - BlockedGroupToast: typeof Whisper.ToastView; - BlockedToast: typeof Whisper.ToastView; - CannotMixImageAndNonImageAttachmentsToast: typeof Whisper.ToastView; - DangerousFileTypeToast: typeof Whisper.ToastView; - ExpiredToast: typeof Whisper.ToastView; - FileSavedToast: typeof Whisper.ToastView; + AlreadyGroupMemberToast: typeof window.Whisper.ToastView; + AlreadyRequestedToJoinToast: typeof window.Whisper.ToastView; + BlockedGroupToast: typeof window.Whisper.ToastView; + BlockedToast: typeof window.Whisper.ToastView; + CannotMixImageAndNonImageAttachmentsToast: typeof window.Whisper.ToastView; + DangerousFileTypeToast: typeof window.Whisper.ToastView; + ExpiredToast: typeof window.Whisper.ToastView; + FileSavedToast: typeof window.Whisper.ToastView; FileSizeToast: any; - FoundButNotLoadedToast: typeof Whisper.ToastView; - InvalidConversationToast: typeof Whisper.ToastView; - LeftGroupToast: typeof Whisper.ToastView; - MaxAttachmentsToast: typeof Whisper.ToastView; - MessageBodyTooLongToast: typeof Whisper.ToastView; - OneNonImageAtATimeToast: typeof Whisper.ToastView; - OriginalNoLongerAvailableToast: typeof Whisper.ToastView; - OriginalNotFoundToast: typeof Whisper.ToastView; - PinnedConversationsFullToast: typeof Whisper.ToastView; - ReactionFailedToast: typeof Whisper.ToastView; - TapToViewExpiredIncomingToast: typeof Whisper.ToastView; - TapToViewExpiredOutgoingToast: typeof Whisper.ToastView; - TimerConflictToast: typeof Whisper.ToastView; - UnableToLoadToast: typeof Whisper.ToastView; - VoiceNoteLimit: typeof Whisper.ToastView; - VoiceNoteMustBeOnlyAttachmentToast: typeof Whisper.ToastView; + FoundButNotLoadedToast: typeof window.Whisper.ToastView; + InvalidConversationToast: typeof window.Whisper.ToastView; + LeftGroupToast: typeof window.Whisper.ToastView; + MaxAttachmentsToast: typeof window.Whisper.ToastView; + MessageBodyTooLongToast: typeof window.Whisper.ToastView; + OneNonImageAtATimeToast: typeof window.Whisper.ToastView; + OriginalNoLongerAvailableToast: typeof window.Whisper.ToastView; + OriginalNotFoundToast: typeof window.Whisper.ToastView; + PinnedConversationsFullToast: typeof window.Whisper.ToastView; + ReactionFailedToast: typeof window.Whisper.ToastView; + TapToViewExpiredIncomingToast: typeof window.Whisper.ToastView; + TapToViewExpiredOutgoingToast: typeof window.Whisper.ToastView; + TimerConflictToast: typeof window.Whisper.ToastView; + UnableToLoadToast: typeof window.Whisper.ToastView; + VoiceNoteLimit: typeof window.Whisper.ToastView; + VoiceNoteMustBeOnlyAttachmentToast: typeof window.Whisper.ToastView; - ConversationLoadingScreen: typeof Whisper.View; - ConversationView: typeof Whisper.View; - View: typeof Backbone.View; + ConversationLoadingScreen: typeof window.Whisper.View; + ConversationView: typeof window.Whisper.View; + View: typeof Backbone.View & { + Templates: Record; + }; };