mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
Changing to file level use strict statement
This commit is contained in:
@@ -5,7 +5,8 @@
|
|||||||
"require": true
|
"require": true
|
||||||
},
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true
|
"browser": true,
|
||||||
|
"node": true
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"quotes": "single"
|
"quotes": "single"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var defaults = require('./../defaults');
|
var defaults = require('./../defaults');
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
var buildUrl = require('./../helpers/buildUrl');
|
var buildUrl = require('./../helpers/buildUrl');
|
||||||
@@ -9,8 +11,6 @@ var pkg = require('./../../package.json');
|
|||||||
var Buffer = require('buffer').Buffer;
|
var Buffer = require('buffer').Buffer;
|
||||||
|
|
||||||
module.exports = function httpAdapter(resolve, reject, config) {
|
module.exports = function httpAdapter(resolve, reject, config) {
|
||||||
'use strict';
|
|
||||||
|
|
||||||
// Transform request data
|
// Transform request data
|
||||||
var data = transformData(
|
var data = transformData(
|
||||||
config.data,
|
config.data,
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/*global ActiveXObject:true*/
|
/*global ActiveXObject:true*/
|
||||||
|
|
||||||
var defaults = require('./../defaults');
|
var defaults = require('./../defaults');
|
||||||
@@ -9,8 +11,6 @@ var transformData = require('./../helpers/transformData');
|
|||||||
var urlIsSameOrigin = require('./../helpers/urlIsSameOrigin');
|
var urlIsSameOrigin = require('./../helpers/urlIsSameOrigin');
|
||||||
|
|
||||||
module.exports = function xhrAdapter(resolve, reject, config) {
|
module.exports = function xhrAdapter(resolve, reject, config) {
|
||||||
'use strict';
|
|
||||||
|
|
||||||
// Transform request data
|
// Transform request data
|
||||||
var data = transformData(
|
var data = transformData(
|
||||||
config.data,
|
config.data,
|
||||||
|
|||||||
+2
-7
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var defaults = require('./defaults');
|
var defaults = require('./defaults');
|
||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
var deprecatedMethod = require('./helpers/deprecatedMethod');
|
var deprecatedMethod = require('./helpers/deprecatedMethod');
|
||||||
@@ -6,8 +8,6 @@ var InterceptorManager = require('./core/InterceptorManager');
|
|||||||
|
|
||||||
// Polyfill ES6 Promise if needed
|
// Polyfill ES6 Promise if needed
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
|
||||||
|
|
||||||
// webpack is being used to set es6-promise to the native Promise
|
// webpack is being used to set es6-promise to the native Promise
|
||||||
// for the standalone build. It's necessary to make sure polyfill exists.
|
// for the standalone build. It's necessary to make sure polyfill exists.
|
||||||
var P = require('es6-promise');
|
var P = require('es6-promise');
|
||||||
@@ -17,8 +17,6 @@ var InterceptorManager = require('./core/InterceptorManager');
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
var axios = module.exports = function axios(config) {
|
var axios = module.exports = function axios(config) {
|
||||||
'use strict';
|
|
||||||
|
|
||||||
config = utils.merge({
|
config = utils.merge({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
headers: {},
|
headers: {},
|
||||||
@@ -73,7 +71,6 @@ axios.defaults = defaults;
|
|||||||
|
|
||||||
// Expose all/spread
|
// Expose all/spread
|
||||||
axios.all = function (promises) {
|
axios.all = function (promises) {
|
||||||
'use strict';
|
|
||||||
return Promise.all(promises);
|
return Promise.all(promises);
|
||||||
};
|
};
|
||||||
axios.spread = require('./helpers/spread');
|
axios.spread = require('./helpers/spread');
|
||||||
@@ -86,8 +83,6 @@ axios.interceptors = {
|
|||||||
|
|
||||||
// Provide aliases for supported request methods
|
// Provide aliases for supported request methods
|
||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
|
||||||
|
|
||||||
function createShortMethods() {
|
function createShortMethods() {
|
||||||
utils.forEach(arguments, function (method) {
|
utils.forEach(arguments, function (method) {
|
||||||
axios[method] = function (url, config) {
|
axios[method] = function (url, config) {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
|
|
||||||
function InterceptorManager() {
|
function InterceptorManager() {
|
||||||
'use strict';
|
|
||||||
this.handlers = [];
|
this.handlers = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -14,7 +15,6 @@ function InterceptorManager() {
|
|||||||
* @return {Number} An ID used to remove interceptor later
|
* @return {Number} An ID used to remove interceptor later
|
||||||
*/
|
*/
|
||||||
InterceptorManager.prototype.use = function (fulfilled, rejected) {
|
InterceptorManager.prototype.use = function (fulfilled, rejected) {
|
||||||
'use strict';
|
|
||||||
this.handlers.push({
|
this.handlers.push({
|
||||||
fulfilled: fulfilled,
|
fulfilled: fulfilled,
|
||||||
rejected: rejected
|
rejected: rejected
|
||||||
@@ -28,7 +28,6 @@ InterceptorManager.prototype.use = function (fulfilled, rejected) {
|
|||||||
* @param {Number} id The ID that was returned by `use`
|
* @param {Number} id The ID that was returned by `use`
|
||||||
*/
|
*/
|
||||||
InterceptorManager.prototype.eject = function (id) {
|
InterceptorManager.prototype.eject = function (id) {
|
||||||
'use strict';
|
|
||||||
if (this.handlers[id]) {
|
if (this.handlers[id]) {
|
||||||
this.handlers[id] = null;
|
this.handlers[id] = null;
|
||||||
}
|
}
|
||||||
@@ -43,7 +42,6 @@ InterceptorManager.prototype.eject = function (id) {
|
|||||||
* @param {Function} fn The function to call for each interceptor
|
* @param {Function} fn The function to call for each interceptor
|
||||||
*/
|
*/
|
||||||
InterceptorManager.prototype.forEach = function (fn) {
|
InterceptorManager.prototype.forEach = function (fn) {
|
||||||
'use strict';
|
|
||||||
utils.forEach(this.handlers, function (h) {
|
utils.forEach(this.handlers, function (h) {
|
||||||
if (h !== null) {
|
if (h !== null) {
|
||||||
fn(h);
|
fn(h);
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dispatch a request to the server using whichever adapter
|
* Dispatch a request to the server using whichever adapter
|
||||||
* is supported by the current environment.
|
* is supported by the current environment.
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
|
|
||||||
var JSON_START = /^\s*(\[|\{[^\{])/;
|
var JSON_START = /^\s*(\[|\{[^\{])/;
|
||||||
@@ -9,7 +11,6 @@ var DEFAULT_CONTENT_TYPE = {
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
transformRequest: [function (data, headers) {
|
transformRequest: [function (data, headers) {
|
||||||
'use strict';
|
|
||||||
if (utils.isArrayBuffer(data)) {
|
if (utils.isArrayBuffer(data)) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
@@ -27,7 +28,6 @@ module.exports = {
|
|||||||
}],
|
}],
|
||||||
|
|
||||||
transformResponse: [function (data) {
|
transformResponse: [function (data) {
|
||||||
'use strict';
|
|
||||||
if (typeof data === 'string') {
|
if (typeof data === 'string') {
|
||||||
data = data.replace(PROTECTION_PREFIX, '');
|
data = data.replace(PROTECTION_PREFIX, '');
|
||||||
if (JSON_START.test(data) && JSON_END.test(data)) {
|
if (JSON_START.test(data) && JSON_END.test(data)) {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
|
|
||||||
function encode(val) {
|
function encode(val) {
|
||||||
'use strict';
|
|
||||||
return encodeURIComponent(val).
|
return encodeURIComponent(val).
|
||||||
replace(/%40/gi, '@').
|
replace(/%40/gi, '@').
|
||||||
replace(/%3A/gi, ':').
|
replace(/%3A/gi, ':').
|
||||||
@@ -18,7 +19,6 @@ function encode(val) {
|
|||||||
* @returns {string} The formatted url
|
* @returns {string} The formatted url
|
||||||
*/
|
*/
|
||||||
module.exports = function buildUrl(url, params) {
|
module.exports = function buildUrl(url, params) {
|
||||||
'use strict';
|
|
||||||
if (!params) {
|
if (!params) {
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
write: function write(name, value, expires, path, domain, secure) {
|
write: function write(name, value, expires, path, domain, secure) {
|
||||||
'use strict';
|
|
||||||
var cookie = [];
|
var cookie = [];
|
||||||
cookie.push(name + '=' + encodeURIComponent(value));
|
cookie.push(name + '=' + encodeURIComponent(value));
|
||||||
|
|
||||||
@@ -26,13 +27,11 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
read: function read(name) {
|
read: function read(name) {
|
||||||
'use strict';
|
|
||||||
var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
|
var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
|
||||||
return (match ? decodeURIComponent(match[3]) : null);
|
return (match ? decodeURIComponent(match[3]) : null);
|
||||||
},
|
},
|
||||||
|
|
||||||
remove: function remove(name) {
|
remove: function remove(name) {
|
||||||
'use strict';
|
|
||||||
this.write(name, '', Date.now() - 86400000);
|
this.write(name, '', Date.now() - 86400000);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Supply a warning to the developer that a method they are using
|
* Supply a warning to the developer that a method they are using
|
||||||
* has been deprecated.
|
* has been deprecated.
|
||||||
@@ -7,9 +9,6 @@
|
|||||||
* @param {string} [docs] The documentation URL to get further details
|
* @param {string} [docs] The documentation URL to get further details
|
||||||
*/
|
*/
|
||||||
module.exports = function deprecatedMethod(method, instead, docs) {
|
module.exports = function deprecatedMethod(method, instead, docs) {
|
||||||
/*eslint-env node*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.warn(
|
console.warn(
|
||||||
'DEPRECATED method `' + method + '`.' +
|
'DEPRECATED method `' + method + '`.' +
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -14,7 +16,6 @@ var utils = require('./../utils');
|
|||||||
* @returns {Object} Headers parsed into an object
|
* @returns {Object} Headers parsed into an object
|
||||||
*/
|
*/
|
||||||
module.exports = function parseHeaders(headers) {
|
module.exports = function parseHeaders(headers) {
|
||||||
'use strict';
|
|
||||||
var parsed = {}, key, val, i;
|
var parsed = {}, key, val, i;
|
||||||
|
|
||||||
if (!headers) { return parsed; }
|
if (!headers) { return parsed; }
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Syntactic sugar for invoking a function and expanding an array for arguments.
|
* Syntactic sugar for invoking a function and expanding an array for arguments.
|
||||||
*
|
*
|
||||||
@@ -19,7 +21,6 @@
|
|||||||
* @returns {Function}
|
* @returns {Function}
|
||||||
*/
|
*/
|
||||||
module.exports = function spread(callback) {
|
module.exports = function spread(callback) {
|
||||||
'use strict';
|
|
||||||
return function (arr) {
|
return function (arr) {
|
||||||
callback.apply(null, arr);
|
callback.apply(null, arr);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -9,7 +11,6 @@ var utils = require('./../utils');
|
|||||||
* @returns {*} The resulting transformed data
|
* @returns {*} The resulting transformed data
|
||||||
*/
|
*/
|
||||||
module.exports = function transformData(data, headers, fns) {
|
module.exports = function transformData(data, headers, fns) {
|
||||||
'use strict';
|
|
||||||
utils.forEach(fns, function (fn) {
|
utils.forEach(fns, function (fn) {
|
||||||
data = fn(data, headers);
|
data = fn(data, headers);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var utils = require('./../utils');
|
var utils = require('./../utils');
|
||||||
var msie = /(msie|trident)/i.test(navigator.userAgent);
|
var msie = /(msie|trident)/i.test(navigator.userAgent);
|
||||||
var urlParsingNode = document.createElement('a');
|
var urlParsingNode = document.createElement('a');
|
||||||
@@ -10,7 +12,6 @@ var originUrl;
|
|||||||
* @returns {Object}
|
* @returns {Object}
|
||||||
*/
|
*/
|
||||||
function urlResolve(url) {
|
function urlResolve(url) {
|
||||||
'use strict';
|
|
||||||
var href = url;
|
var href = url;
|
||||||
|
|
||||||
if (msie) {
|
if (msie) {
|
||||||
@@ -45,7 +46,6 @@ originUrl = urlResolve(window.location.href);
|
|||||||
* @returns {boolean} True if URL shares the same origin, otherwise false
|
* @returns {boolean} True if URL shares the same origin, otherwise false
|
||||||
*/
|
*/
|
||||||
module.exports = function urlIsSameOrigin(requestUrl) {
|
module.exports = function urlIsSameOrigin(requestUrl) {
|
||||||
'use strict';
|
|
||||||
var parsed = (utils.isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
|
var parsed = (utils.isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl;
|
||||||
return (parsed.protocol === originUrl.protocol &&
|
return (parsed.protocol === originUrl.protocol &&
|
||||||
parsed.host === originUrl.host);
|
parsed.host === originUrl.host);
|
||||||
|
|||||||
+3
-14
@@ -1,4 +1,7 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
/*global toString:true*/
|
/*global toString:true*/
|
||||||
|
|
||||||
// utils is a library of generic helper functions non-specific to axios
|
// utils is a library of generic helper functions non-specific to axios
|
||||||
|
|
||||||
var toString = Object.prototype.toString;
|
var toString = Object.prototype.toString;
|
||||||
@@ -10,7 +13,6 @@ var toString = Object.prototype.toString;
|
|||||||
* @returns {boolean} True if value is an Array, otherwise false
|
* @returns {boolean} True if value is an Array, otherwise false
|
||||||
*/
|
*/
|
||||||
function isArray(val) {
|
function isArray(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object Array]';
|
return toString.call(val) === '[object Array]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,7 +23,6 @@ function isArray(val) {
|
|||||||
* @returns {boolean} True if value is an ArrayBuffer, otherwise false
|
* @returns {boolean} True if value is an ArrayBuffer, otherwise false
|
||||||
*/
|
*/
|
||||||
function isArrayBuffer(val) {
|
function isArrayBuffer(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object ArrayBuffer]';
|
return toString.call(val) === '[object ArrayBuffer]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +33,6 @@ function isArrayBuffer(val) {
|
|||||||
* @returns {boolean} True if value is an FormData, otherwise false
|
* @returns {boolean} True if value is an FormData, otherwise false
|
||||||
*/
|
*/
|
||||||
function isFormData(val) {
|
function isFormData(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object FormData]';
|
return toString.call(val) === '[object FormData]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +43,6 @@ function isFormData(val) {
|
|||||||
* @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
|
* @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
|
||||||
*/
|
*/
|
||||||
function isArrayBufferView(val) {
|
function isArrayBufferView(val) {
|
||||||
'use strict';
|
|
||||||
if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
|
if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
|
||||||
return ArrayBuffer.isView(val);
|
return ArrayBuffer.isView(val);
|
||||||
} else {
|
} else {
|
||||||
@@ -58,7 +57,6 @@ function isArrayBufferView(val) {
|
|||||||
* @returns {boolean} True if value is a String, otherwise false
|
* @returns {boolean} True if value is a String, otherwise false
|
||||||
*/
|
*/
|
||||||
function isString(val) {
|
function isString(val) {
|
||||||
'use strict';
|
|
||||||
return typeof val === 'string';
|
return typeof val === 'string';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +67,6 @@ function isString(val) {
|
|||||||
* @returns {boolean} True if value is a Number, otherwise false
|
* @returns {boolean} True if value is a Number, otherwise false
|
||||||
*/
|
*/
|
||||||
function isNumber(val) {
|
function isNumber(val) {
|
||||||
'use strict';
|
|
||||||
return typeof val === 'number';
|
return typeof val === 'number';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +77,6 @@ function isNumber(val) {
|
|||||||
* @returns {boolean} True if the value is undefined, otherwise false
|
* @returns {boolean} True if the value is undefined, otherwise false
|
||||||
*/
|
*/
|
||||||
function isUndefined(val) {
|
function isUndefined(val) {
|
||||||
'use strict';
|
|
||||||
return typeof val === 'undefined';
|
return typeof val === 'undefined';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +87,6 @@ function isUndefined(val) {
|
|||||||
* @returns {boolean} True if value is an Object, otherwise false
|
* @returns {boolean} True if value is an Object, otherwise false
|
||||||
*/
|
*/
|
||||||
function isObject(val) {
|
function isObject(val) {
|
||||||
'use strict';
|
|
||||||
return val !== null && typeof val === 'object';
|
return val !== null && typeof val === 'object';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +97,6 @@ function isObject(val) {
|
|||||||
* @returns {boolean} True if value is a Date, otherwise false
|
* @returns {boolean} True if value is a Date, otherwise false
|
||||||
*/
|
*/
|
||||||
function isDate(val) {
|
function isDate(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object Date]';
|
return toString.call(val) === '[object Date]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +107,6 @@ function isDate(val) {
|
|||||||
* @returns {boolean} True if value is a File, otherwise false
|
* @returns {boolean} True if value is a File, otherwise false
|
||||||
*/
|
*/
|
||||||
function isFile(val) {
|
function isFile(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object File]';
|
return toString.call(val) === '[object File]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +117,6 @@ function isFile(val) {
|
|||||||
* @returns {boolean} True if value is a Blob, otherwise false
|
* @returns {boolean} True if value is a Blob, otherwise false
|
||||||
*/
|
*/
|
||||||
function isBlob(val) {
|
function isBlob(val) {
|
||||||
'use strict';
|
|
||||||
return toString.call(val) === '[object Blob]';
|
return toString.call(val) === '[object Blob]';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +127,6 @@ function isBlob(val) {
|
|||||||
* @returns {String} The String freed of excess whitespace
|
* @returns {String} The String freed of excess whitespace
|
||||||
*/
|
*/
|
||||||
function trim(str) {
|
function trim(str) {
|
||||||
'use strict';
|
|
||||||
return str.replace(/^\s*/, '').replace(/\s*$/, '');
|
return str.replace(/^\s*/, '').replace(/\s*$/, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +143,6 @@ function trim(str) {
|
|||||||
* @param {Function} fn The callback to invoke for each item
|
* @param {Function} fn The callback to invoke for each item
|
||||||
*/
|
*/
|
||||||
function forEach(obj, fn) {
|
function forEach(obj, fn) {
|
||||||
'use strict';
|
|
||||||
// Don't bother if no value provided
|
// Don't bother if no value provided
|
||||||
if (obj === null || typeof obj === 'undefined') {
|
if (obj === null || typeof obj === 'undefined') {
|
||||||
return;
|
return;
|
||||||
@@ -200,7 +190,6 @@ function forEach(obj, fn) {
|
|||||||
* @returns {Object} Result of all merge properties
|
* @returns {Object} Result of all merge properties
|
||||||
*/
|
*/
|
||||||
function merge(/*obj1, obj2, obj3, ...*/) {
|
function merge(/*obj1, obj2, obj3, ...*/) {
|
||||||
'use strict';
|
|
||||||
var result = {};
|
var result = {};
|
||||||
forEach(arguments, function (obj) {
|
forEach(arguments, function (obj) {
|
||||||
forEach(obj, function (val, key) {
|
forEach(obj, function (val, key) {
|
||||||
|
|||||||
Reference in New Issue
Block a user