|
@@ -8,8 +8,8 @@ const DefaultStore = require('@uppy/store-default')
|
|
|
const getFileType = require('@uppy/utils/lib/getFileType')
|
|
|
const getFileNameAndExtension = require('@uppy/utils/lib/getFileNameAndExtension')
|
|
|
const generateFileID = require('@uppy/utils/lib/generateFileID')
|
|
|
-const getTimeStamp = require('@uppy/utils/lib/getTimeStamp')
|
|
|
const supportsUploadProgress = require('./supportsUploadProgress')
|
|
|
+const { nullLogger, debugLogger } = require('./loggers')
|
|
|
const Plugin = require('./Plugin') // Exported from here.
|
|
|
|
|
|
class RestrictionError extends Error {
|
|
@@ -89,13 +89,22 @@ class Uppy {
|
|
|
meta: {},
|
|
|
onBeforeFileAdded: (currentFile, files) => currentFile,
|
|
|
onBeforeUpload: (files) => files,
|
|
|
- store: DefaultStore()
|
|
|
+ store: DefaultStore(),
|
|
|
+ logger: nullLogger
|
|
|
}
|
|
|
|
|
|
// Merge default options with the ones set by user
|
|
|
this.opts = Object.assign({}, defaultOptions, opts)
|
|
|
this.opts.restrictions = Object.assign({}, defaultOptions.restrictions, this.opts.restrictions)
|
|
|
|
|
|
+ // Support debug: true for backwards-compatability, unless logger is set in opts
|
|
|
+ // opts instead of this.opts to avoid comparing objects — we set logger: nullLogger in defaultOptions
|
|
|
+ if (opts && opts.logger && opts.debug) {
|
|
|
+ this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning')
|
|
|
+ } else if (opts && opts.debug) {
|
|
|
+ this.opts.logger = debugLogger
|
|
|
+ }
|
|
|
+
|
|
|
this.log(`Using Core v${this.constructor.VERSION}`)
|
|
|
|
|
|
// i18n
|
|
@@ -170,10 +179,8 @@ class Uppy {
|
|
|
this.updateAll(nextState)
|
|
|
})
|
|
|
|
|
|
- // for debugging and testing
|
|
|
- // this.updateNum = 0
|
|
|
+ // Exposing uppy object on window for debugging and testing
|
|
|
if (this.opts.debug && typeof window !== 'undefined') {
|
|
|
- window['uppyLog'] = ''
|
|
|
window[this.opts.id] = this
|
|
|
}
|
|
|
|
|
@@ -320,7 +327,7 @@ class Uppy {
|
|
|
setFileMeta (fileID, data) {
|
|
|
const updatedFiles = Object.assign({}, this.getState().files)
|
|
|
if (!updatedFiles[fileID]) {
|
|
|
- this.log('Was trying to set metadata for a file that’s not with us anymore: ', fileID)
|
|
|
+ this.log('Was trying to set metadata for a file that has been removed: ', fileID)
|
|
|
return
|
|
|
}
|
|
|
const newMeta = Object.assign({}, updatedFiles[fileID].meta, data)
|
|
@@ -1048,29 +1055,19 @@ class Uppy {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Logs stuff to console, only if `debug` is set to true. Silent in production.
|
|
|
+ * Passes messages to a function, provided in `opt.logger`.
|
|
|
+ * If `opt.logger: Uppy.debugLogger` or `opt.debug: true`, logs to the browser console.
|
|
|
*
|
|
|
* @param {string|Object} message to log
|
|
|
* @param {string} [type] optional `error` or `warning`
|
|
|
*/
|
|
|
log (message, type) {
|
|
|
- if (!this.opts.debug) {
|
|
|
- return
|
|
|
+ const { logger } = this.opts
|
|
|
+ switch (type) {
|
|
|
+ case 'error': logger.error(message); break
|
|
|
+ case 'warning': logger.warn(message); break
|
|
|
+ default: logger.debug(message); break
|
|
|
}
|
|
|
-
|
|
|
- const prefix = `[Uppy] [${getTimeStamp()}]`
|
|
|
-
|
|
|
- if (type === 'error') {
|
|
|
- console.error(prefix, message)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- if (type === 'warning') {
|
|
|
- console.warn(prefix, message)
|
|
|
- return
|
|
|
- }
|
|
|
-
|
|
|
- console.log(prefix, message)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1323,3 +1320,4 @@ module.exports = function (opts) {
|
|
|
// Expose class constructor.
|
|
|
module.exports.Uppy = Uppy
|
|
|
module.exports.Plugin = Plugin
|
|
|
+module.exports.debugLogger = debugLogger
|