: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
import assign from 'lodash/assign';
* Wrapper function for ajax calls to WordPress.
function SmushFetcher() {
* Request ajax with a promise.
* Use FormData Object as data if you need to upload file
* @param {Object|FormData} data
* @return {Promise<any>} Request results.
function request(action, data = {}, method = 'POST') {
if (data instanceof FormData) {
data.append('action', action);
data.append('_ajax_nonce', window.wp_smush_msgs.nonce);
args.contentType = false;
args.processData = false;
data._ajax_nonce = data._ajax_nonce || window.smush_global.nonce || window.wp_smush_msgs.nonce;
return new Promise((resolve, reject) => {
jQuery.ajax(args).done(resolve).fail(reject);
if (typeof response !== 'object') {
response = JSON.parse(response);
console.error('Error:', error);
* Manage ajax for background.
* Start background process.
return request('bulk_smush_start');
* Cancel background process.
return request('bulk_smush_cancel');
* Initial State - Get stats on the first time.
return request('bulk_smush_get_status');
return request('bulk_smush_get_status');
return request('bulk_smush_get_global_stats');
backgroundHealthyCheck: () => {
return request('smush_start_background_pre_flight_check');
backgroundHealthyStatus: () => {
return request('smush_get_background_pre_flight_status');
return request('get_stats', data);
return request('wp_smush_ignore_all_failed_items', {
* Manage ajax for other requests
* @param {string} dismissId Notification id.
dismissNotice: (dismissId) => {
return request('smush_dismiss_notice', {
* Hide the new features modal.
* @param {string} modalID Notification id.
hideModal: (modalID) => request('hide_modal', {
track: ( event, properties ) => request('smush_analytics_track_event', {
request: (data) => data.action && request(data.action, data),
start: ( optimize_on_scan_completed = false ) => {
optimize_on_scan_completed = optimize_on_scan_completed ? 1 : 0;
const _ajax_nonce = window.wp_smushit_data.media_library_scan.nonce;
return request( 'wp_smush_start_background_scan', {
optimize_on_scan_completed,
const _ajax_nonce = window.wp_smushit_data.media_library_scan.nonce;
return request( 'wp_smush_cancel_background_scan', {
const _ajax_nonce = window.wp_smushit_data.media_library_scan.nonce;
return request( 'wp_smush_get_background_scan_status', {
switchMethod: ( method ) => {
return request( 'webp_switch_method', { method } );
const SmushAjax = new SmushFetcher();
export default SmushAjax;