{ "version": 3, "sources": [ "node_modules/browser-pack-flat/_prelude", "node_modules/browserify/node_modules/process/browser.js", "src/core/Utils.js", "node_modules/cuid/index.js", "node_modules/wildcard/index.js", "src/plugins/AwsS3/index.js", "node_modules/drag-drop/index.js", "src/plugins/GoldenRetriever/IndexedDBStore.js", "src/plugins/GoldenRetriever/MetaDataStore.js", "node_modules/ms/index.js", "node_modules/debug/src/debug.js", "node_modules/backo2/index.js", "node_modules/component-emitter/index.js", "node_modules/after/index.js", "node_modules/engine.io-client/lib/transport.js", "node_modules/engine.io-client/node_modules/ms/index.js", "node_modules/engine.io-client/node_modules/debug/src/debug.js", "node_modules/yeast/index.js", "node_modules/engine.io-client/lib/transports/polling.js", "node_modules/socket.io-parser/index.js", "node_modules/socket.io-client/lib/socket.js", "node_modules/socket.io-client/lib/manager.js", "node_modules/socket.io-client/lib/index.js", "node_modules/querystringify/index.js", "src/plugins/Transloadit/index.js", "node_modules/tus-js-client/lib.es5/upload.js", "src/plugins/Tus.js", "src/plugins/Webcam/CameraScreen.js", "node_modules/preact/dist/preact.js", "node_modules/browser-resolve/empty.js", "node_modules/es6-promise/dist/es6-promise.js", "node_modules/lodash.throttle/index.js", "src/vendor/file-type/index.js", "src/core/Plugin.js", "node_modules/cuid/lib/pad.js", "node_modules/cuid/lib/fingerprint.browser.js", "node_modules/mime-match/index.js", "node_modules/namespace-emitter/index.js", "node_modules/prettier-bytes/index.js", "src/core/Translator.js", "src/store/DefaultStore.js", "src/core/Core.js", "src/core/index.js", "src/core/UppySocket.js", "src/plugins/XHRUpload.js", "node_modules/flatten/index.js", "node_modules/run-parallel/index.js", "node_modules/classnames/index.js", "src/plugins/Dashboard/icons.js", "src/plugins/Dashboard/getFileTypeIcon.js", "src/plugins/Dashboard/FileCard.js", "src/plugins/Dashboard/ActionBrowseTagline.js", "src/plugins/Dashboard/FileItemProgress.js", "src/plugins/Dashboard/FileItem.js", "src/plugins/Dashboard/FileList.js", "src/plugins/Dashboard/Tabs.js", "src/plugins/Dashboard/Dashboard.js", "src/plugins/Informer.js", "src/plugins/StatusBar/StatusBar.js", "src/plugins/StatusBar/index.js", "src/plugins/ThumbnailGenerator/index.js", "src/plugins/Dashboard/index.js", "src/plugins/DragDrop/index.js", "src/plugins/Dropbox/icons.js", "node_modules/whatwg-fetch/fetch.js", "src/plugins/Provider/index.js", "src/plugins/Provider/view/Loader.js", "src/plugins/Provider/view/AuthView.js", "src/plugins/Provider/view/Breadcrumb.js", "src/plugins/Provider/view/Breadcrumbs.js", "src/plugins/Provider/view/Filter.js", "src/plugins/Provider/view/TableRow.js", "src/plugins/Provider/view/Table.js", "src/plugins/Provider/view/Browser.js", "src/plugins/Provider/view/index.js", "src/plugins/Dropbox/index.js", "src/plugins/Dummy.js", "src/plugins/FileInput.js", "src/plugins/GoldenRetriever/ServiceWorkerStore.js", "src/plugins/GoldenRetriever/index.js", "src/plugins/GoogleDrive/index.js", "src/plugins/Instagram/index.js", "src/plugins/ProgressBar.js", "src/plugins/Redux.js", "src/plugins/ReduxDevTools.js", "src/plugins/Transloadit/Client.js", "node_modules/debug/src/browser.js", "node_modules/component-bind/index.js", "node_modules/base64-arraybuffer/lib/base64-arraybuffer.js", "node_modules/blob/index.js", "node_modules/engine.io-parser/lib/keys.js", "node_modules/engine.io-parser/lib/utf8.js", "node_modules/engine.io-parser/node_modules/arraybuffer.slice/index.js", "node_modules/isarray/index.js", "node_modules/has-binary2/index.js", "node_modules/engine.io-parser/lib/browser.js", "node_modules/component-inherit/index.js", "node_modules/has-cors/index.js", "node_modules/engine.io-client/lib/xmlhttprequest.js", "node_modules/engine.io-client/node_modules/debug/src/browser.js", "node_modules/parseqs/index.js", "node_modules/engine.io-client/lib/transports/polling-jsonp.js", "node_modules/engine.io-client/lib/transports/polling-xhr.js", "node_modules/engine.io-client/lib/transports/websocket.js", "node_modules/engine.io-client/lib/transports/index.js", "node_modules/indexof/index.js", "node_modules/parseuri/index.js", "node_modules/engine.io-client/lib/socket.js", "node_modules/engine.io-client/lib/index.js", "node_modules/socket.io-client/lib/on.js", "node_modules/socket.io-parser/is-buffer.js", "node_modules/socket.io-parser/binary.js", "node_modules/to-array/index.js", "node_modules/socket.io-client/lib/url.js", "node_modules/requires-port/index.js", "node_modules/url-parse/index.js", "src/plugins/Transloadit/Socket.js", "node_modules/tus-js-client/lib.es5/browser/storage.js", "node_modules/extend/index.js", "node_modules/tus-js-client/lib.es5/browser/base64.js", "node_modules/resolve-url/resolve-url.js", "node_modules/tus-js-client/lib.es5/browser/request.js", "node_modules/tus-js-client/lib.es5/browser/source.js", "node_modules/tus-js-client/lib.es5/error.js", "node_modules/tus-js-client/lib.es5/fingerprint.js", "node_modules/tus-js-client/lib.es5/index.js", "src/plugins/Webcam/RecordStartIcon.js", "src/plugins/Webcam/RecordStopIcon.js", "src/plugins/Webcam/RecordButton.js", "src/plugins/Webcam/CameraIcon.js", "src/plugins/Webcam/SnapshotButton.js", "src/plugins/Webcam/PermissionsScreen.js", "src/plugins/Webcam/WebcamIcon.js", "src/plugins/Webcam/supportsMediaRecorder.js", "src/plugins/Webcam/index.js", "node_modules/browser-pack-flat/_postlude", "src/index.js" ], "names": [ "f", "exports", "module", "define", "amd", "window", "global", "self", "this", "Uppy", "defaultSetTimout", "Error", "defaultClearTimeout", "runTimeout", "fun", "cachedSetTimeout", "setTimeout", "e", "call", "cleanUpNextTick", "draining", "currentQueue", "length", "queue", "concat", "queueIndex", "drainQueue", "timeout", "len", "run", "marker", "cachedClearTimeout", "clearTimeout", "Item", "array", "noop", "secondsToTime", "rawSeconds", "hours", "Math", "floor", "minutes", "seconds", "pad", "str", "getArrayBuffer", "chunk", "_Promise", "resolve", "reject", "reader", "FileReader", "addEventListener", "target", "result", "err", "console", "error", "readAsArrayBuffer", "getFileNameAndExtension", "fullFileName", "fileExt", "exec", "name", "replace", "extension", "dataURItoBlob", "dataURI", "opts", "toFile", "data", "split", "mimeType", "binary", "atob", "i", "push", "charCodeAt", "File", "Uint8Array", "type", "Blob", "getSpeed", "fileProgress", "bytesUploaded", "timeElapsed", "Date", "uploadStarted", "getBytesRemaining", "bytesTotal", "isDOMElement", "obj", "_typeof", "nodeType", "Node", "ELEMENT_NODE", "randomBlock", "_$pad_13", "random", "discreteValues", "toString", "base", "blockSize", "safeCounter", "c", "cuid", "getTime", "_$fingerprintBrowser_12", "WildcardMatcher", "text", "separator", "hasWild", "indexOf", "parts", "isXml", "xhr", "contentType", "getResponseHeader", "toLowerCase", "toArray", "list", "Array", "prototype", "slice", "connect", "dbName", "request", "indexedDB", "open", "DB_VERSION", "___Promise_96", "onupgradeneeded", "event", "db", "transaction", "currentTarget", "oldVersion", "createObjectStore", "STORE_NAME", "keyPath", "createIndex", "unique", "_store", "objectStore", "openCursor", "onsuccess", "cursor", "entry", "value", "expires", "now", "DEFAULT_EXPIRY", "update", "oncomplete", "onerror", "waitForRequest", "maybeParse", "JSON", "parse", "plural", "ms", "n", "ceil", "createDebug", "namespace", "debug", "enabled", "curr", "prevTime", "diff", "prev", "args", "arguments", "_$debug_15", "coerce", "unshift", "index", "match", "format", "formatter", "formatters", "val", "splice", "formatArgs", "log", "bind", "apply", "useColors", "color", "hash", "colors", "abs", "init", "Backoff", "min", "max", "factor", "jitter", "attempts", "Emitter", "key", "__noop_1", "Transport", "path", "hostname", "port", "secure", "query", "timestampParam", "timestampRequests", "readyState", "agent", "socket", "enablesXDR", "pfx", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "forceNode", "extraHeaders", "localAddress", "__plural_28", "__createDebug_27", "__prevTime_27", "_$debug_27", "encode", "num", "encoded", "alphabet", "yeast", "seed", "Polling", "forceBase64", "hasXHR2", "supportsBinary", "_$transport_19", "Encoder", "encodeAsString", "_$socketIoParser_58", "BINARY_EVENT", "BINARY_ACK", "attachments", "nsp", "id", "stringify", "__debug_58", "Decoder", "reconstructor", "BinaryReconstructor", "packet", "reconPack", "buffers", "ERROR", "Socket", "io", "json", "ids", "acks", "receiveBuffer", "sendBuffer", "connected", "disconnected", "autoConnect", "Manager", "uri", "nsps", "subs", "reconnection", "reconnectionAttempts", "reconnectionDelay", "reconnectionDelayMax", "randomizationFactor", "backoff", "_$backo2_2", "connecting", "lastPing", "encoding", "packetBuffer", "_parser", "parser", "encoder", "decoder", "lookup", "parsed", "_$url_56", "source", "sameNamespace", "cache", "forceNew", "multiplex", "__debug_52", "_$manager_53", "decode", "input", "decodeURIComponent", "defaultGetAssemblyOptions", "file", "options", "params", "signature", "fields", "_interopRequireWildcard", "__esModule", "newObj", "Object", "hasOwnProperty", "default", "_interopRequireDefault", "inStatusCategory", "status", "category", "createEventTracker", "emitter", "events", "on", "fn", "remove", "forEach", "_ref", "off", "isModeAvailable", "modes", "mode", "_$preact_46", "h", "nodeName", "attributes", "lastSimple", "child", "simple", "children", "EMPTY_CHILDREN", "stack", "pop", "String", "p", "vnode", "extend", "props", "enqueueRender", "component", "__d", "items", "debounceRendering", "defer", "rerender", "renderComponent", "isNamedNode", "node", "__n", "getNodeProps", "defaultProps", "removeNode", "parentNode", "removeChild", "setAccessor", "old", "isSvg", "style", "cssText", "IS_NON_DIMENSIONAL", "test", "innerHTML", "__html", "useCapture", "substring", "eventProxy", "removeEventListener", "__l", "removeAttribute", "ns", "removeAttributeNS", "setAttributeNS", "setAttribute", "className", "flushMounts", "mounts", "afterMount", "componentDidMount", "dom", "context", "mountAll", "parent", "componentRoot", "diffLevel", "isSvgMode", "ownerSVGElement", "hydrating", "ret", "idiff", "appendChild", "out", "prevSvgMode", "splitText", "_component", "nodeValue", "document", "createTextNode", "replaceChild", "recollectNodeTree", "__preactattr_", "vnodeName", "originalComponent", "oldDom", "isDirectOwner", "_componentConstructor", "isOwner", "__u", "constructor", "setComponentProps", "unmountComponent", "createComponent", "__b", "createElementNS", "createElement", "firstChild", "fc", "vchildren", "a", "nextSibling", "isHydrating", "j", "vchild", "originalChildren", "childNodes", "keyed", "keyedLen", "childrenLen", "vlen", "_child", "__k", "trim", "insertBefore", "dangerouslySetInnerHTML", "attrs", "unmountOnly", "ref", "removeChildren", "lastChild", "next", "previousSibling", "Ctor", "inst", "components", "render", "Component", "doRender", "state", "__x", "__r", "componentWillMount", "componentWillReceiveProps", "__c", "__p", "syncComponentUpdates", "isChild", "rendered", "cbase", "previousProps", "previousState", "__s", "previousContext", "isUpdate", "nextBase", "initialBase", "initialChildComponent", "skip", "shouldComponentUpdate", "componentWillUpdate", "getChildContext", "toUnmount", "childComponent", "childProps", "baseParent", "componentRef", "t", "componentDidUpdate", "afterUpdate", "__h", "beforeUnmount", "componentWillUnmount", "inner", "Promise", "then", "setState", "callback", "s", "forceUpdate", "preact", "cloneElement", "merge", "_$empty_5", "_$browser_6", "process", "nextTick", "title", "browser", "env", "argv", "version", "versions", "addListener", "once", "removeListener", "removeAllListeners", "emit", "prependListener", "prependOnceListener", "listeners", "binding", "cwd", "chdir", "dir", "umask", "factory", "_$es6Promise_33", "ES6Promise", "isFunction", "x", "useSetTimeout", "globalSetTimeout", "flush", "onFulfillment", "onRejection", "PROMISE_ID", "makePromise", "_state", "asap", "invokeCallback", "_result", "subscribe", "resolve$1", "object", "promise", "getThen", "GET_THEN_ERROR", "handleMaybeThenable", "maybeThenable", "then$$1", "thenable", "FULFILLED", "fulfill", "REJECTED", "reason", "sealed", "fulfillmentHandler", "rejectionHandler", "_label", "TypeError", "publishRejection", "_onerror", "publish", "PENDING", "_subscribers", "subscribers", "settled", "detail", "ErrorObject", "hasCallback", "succeeded", "failed", "TRY_CATCH_ERROR", "channel", "iterations", "observer", "isArray", "vertxNext", "customSchedulerFn", "arg", "scheduleFlush", "browserWindow", "browserGlobal", "BrowserMutationObserver", "MutationObserver", "WebKitMutationObserver", "isNode", "isWorker", "Uint8ClampedArray", "importScripts", "MessageChannel", "observe", "characterData", "port1", "onmessage", "port2", "postMessage", "require", "runOnLoop", "runOnContext", "Enumerator", "Constructor", "_instanceConstructor", "_remaining", "_enumerate", "_eachEntry", "resolve$$1", "_then", "_settledAt", "Promise$1", "_willSettleAt", "enumerator", "resolver", "catch", "finally", "all", "entries", "race", "_", "_setScheduler", "scheduleFn", "_setAsap", "asapFn", "_asap", "polyfill", "local", "Function", "P", "promiseToString", "cast", "debounce", "func", "wait", "invokeFunc", "time", "lastArgs", "thisArg", "lastThis", "lastInvokeTime", "shouldInvoke", "timeSinceLastCall", "lastCallTime", "maxing", "maxWait", "timerExpired", "trailingEdge", "timerId", "nativeMin", "trailing", "debounced", "isInvoking", "leading", "FUNC_ERROR_TEXT", "toNumber", "isObject", "nativeMax", "cancel", "objectToString", "symbolTag", "NAN", "other", "valueOf", "reTrim", "isBinary", "reIsBinary", "reIsOctal", "freeParseInt", "reIsBadHex", "NaN", "parseInt", "freeGlobal", "freeSelf", "root", "_$lodashThrottle_40", "_extends", "assign", "_$fileType_135", "buf", "check", "header", "offset", "ext", "mime", "sliced", "subarray", "idPos", "findIndex", "el", "arr", "docTypePos", "findDocType", "from", "every", "mimeToExtensions", "video/ogg", "audio/ogg", "video/webm", "audio/webm", "video/mp4", "audio/mp3", "_$Utils_77", "generateFileID", "size", "lastModified", "filter", "join", "getTimeStamp", "date", "getHours", "getMinutes", "getSeconds", "isTouchDevice", "navigator", "maxTouchPoints", "truncateString", "substr", "getFileTypeExtension", "getFileType", "extensionsToMime", "md", "markdown", "mp4", "mp3", "svg", "jpg", "png", "gif", "fileExtension", "isRemote", "buffer", "isPreviewSupported", "fileType", "fileTypeSpecific", "isObjectURL", "url", "canvasToBlob", "canvas", "quality", "toBlob", "toDataURL", "getETA", "uploadSpeed", "bytesRemaining", "round", "copyToClipboard", "textToCopy", "fallbackString", "textArea", "position", "top", "left", "width", "height", "padding", "border", "outline", "boxShadow", "background", "body", "select", "magicCopyFailed", "prompt", "execCommand", "prettyETA", "hoursStr", "minutesVal", "findDOMElement", "element", "querySelector", "findAllDOMElements", "elements", "querySelectorAll", "getSocketHost", "host", "location", "protocol", "emitSocketProgress", "uploader", "progressData", "progress", "uppy", "settle", "promises", "resolved", "resolutions", "rejected", "rejections", "map", "successful", "limitPromises", "limit", "onfinish", "pending", "shift", "_len2", "_key2", "_$Plugin_74", "Plugin", "instance", "mount", "install", "uninstall", "getPluginState", "plugins", "setPluginState", "___extends_74", "updateUI", "plugin", "_this", "callerPluginName", "targetElement", "replaceTargetContent", "targetPlugin", "___typeof_74", "Target", "iteratePlugins", "targetPluginName", "addTarget", "unmount", "globalCount", "keys", "clientId", "mimeTypes", "userAgent", "pow", "slug", "counter", "print", "fingerprint", "_$cuid_11", "ii", "testParts", "matches", "partsCount", "_$wildcard_71", "matcher", "reMimePartSplit", "_$mimeMatch_41", "pattern", "_$namespaceEmitter_43", "_fns", "arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "toEmit", "idx", "l", "fns", "one", "keep", "_$prettierBytes_47", "isNaN", "neg", "units", "exponent", "Number", "unit", "toFixed", "_$Translator_75", "Translator", "defaultOptions", "locale", "strings", "pluralize", "___extends_75", "interpolate", "phrase", "dollarRegex", "replacement", "RegExp", "translate", "smart_count", "DefaultStore", "callbacks", "getState", "patch", "prevState", "___extends_134", "nextState", "_publish", "listener", "_len", "_key", "_$DefaultStore_134", "defaultLocale", "youCanOnlyUploadX", "0", "1", "youHaveToAtLeastSelectX", "exceedsSize", "youCanOnlyUploadFileTypes", "uppyServerError", "autoProceed", "restrictions", "maxFileSize", "maxNumberOfFiles", "minNumberOfFiles", "allowedFileTypes", "meta", "onBeforeFileAdded", "currentFile", "files", "onBeforeUpload", "done", "store", "translator", "i18n", "getPlugin", "setFileMeta", "setFileState", "info", "hideInfo", "addFile", "removeFile", "pauseResume", "_calculateProgress", "updateOnlineStatus", "resetProgress", "pauseAll", "resumeAll", "retryAll", "cancelAll", "retryUpload", "upload", "preProcessors", "uploaders", "postProcessors", "currentUploads", "capabilities", "resumableUploads", "totalProgress", "isHidden", "message", "_storeUnsubscribe", "updateAll", "uppyLog", "fileID", "_extends2", "defaultProgress", "percentage", "uploadComplete", "updatedFiles", "updatedFile", "addPreProcessor", "removePreProcessor", "addPostProcessor", "removePostProcessor", "addUploader", "removeUploader", "setMeta", "updatedMeta", "newMeta", "getFile", "_checkMinNumberOfFiles", "_checkRestrictions", "_opts$restrictions", "allowedFileTypesString", "_this2", "fileName", "newFile", "remote", "preview", "scheduledAutoProceed", "_this3", "removedFile", "updatedUploads", "removeUploads", "uploadID", "newFileIDs", "fileIDs", "uploadFileID", "_removeUpload", "_calculateTotalProgress", "URL", "revokeObjectURL", "isPaused", "filesToRetry", "_createUpload", "_runUpload", "reset", "inProgress", "progressMax", "progressAll", "actions", "_this4", "details", "_throttledCalculateProgress", "uploadResp", "uploadURL", "preprocess", "postprocess", "onLine", "wasOffline", "getID", "use", "msg", "pluginId", "existsPluginAlready", "_msg", "foundPlugin", "method", "_this5", "pluginType", "removePlugin", "close", "duration", "isComplexMessage", "infoTimeoutID", "newInfo", "warn", "restore", "_extends3", "step", "_getUpload", "addResultData", "_extends4", "currentUpload", "_this6", "uploadData", "restoreStep", "steps", "lastStep", "_extends5", "_this7", "currentlyUploadingFiles", "reduce", "waitingFileIDs", "_createClass", "get", "_$Core_73", "_$Core_78", "_$UppySocket_76", "UppySocket", "queued", "isOpen", "WebSocket", "onopen", "first", "send", "action", "payload", "onclose", "_handleMessage", "handler", "__emitSocketProgress_133", "_$XHRUpload_133", "_Plugin", "XHRUpload", "ReferenceError", "timedOut", "formData", "fieldName", "metaFields", "responseUrlFieldName", "bundle", "headers", "getResponseData", "response", "getResponseError", "___extends_133", "handleUpload", "limitUploads", "subClass", "superClass", "create", "enumerable", "writable", "configurable", "setPrototypeOf", "__proto__", "getOptions", "xhrUpload", "createFormDataUpload", "formPost", "FormData", "item", "append", "createBareUpload", "current", "total", "___Promise_133", "onTimedOut", "abort", "aliveTimer", "isAlive", "XMLHttpRequest", "ev", "loaded", "lengthComputable", "resp", "toUpperCase", "endpoint", "setRequestHeader", "uploadRemote", "fetch", "credentials", "Accept", "Content-Type", "fieldname", "metadata", "res", "statusText", "token", "errData", "uploadFiles", "__limitPromises_80", "_$AwsS3_80", "AwsS3", "preparingUpload", "getUploadParameters", "___extends_80", "prepareUpload", "limitRequests", "filename", "encodeURIComponent", "accept", "___Promise_80", "responses", "_responses$index", "_responses$index$meth", "xhrOpts", "getValue", "responseXML", "textContent", "bucket", "etag", "responseURL", "_$flatten_35", "depth", "_flatten", "d", "acc", "_$runParallel_51", "tasks", "cb", "end", "results", "isSync", "each", "task", "_$dragDrop_16", "elem", "onDragEnter", "stopPropagation", "preventDefault", "onDragOver", "dataTransfer", "fileItems", "kind", "textItems", "onDropText", "onDrop", "classList", "add", "dropEffect", "onDragLeave", "removeDragClass", "pos", "clientX", "y", "clientY", "getData", "processEntry", "doneEntries", "isFile", "fullPath", "isDirectory", "createReader", "readEntries", "entries_", "webkitGetAsEntry", "selector", "classNames", "classes", "argType", "hasOwn", "_$classnames_7", "_$icons_89", "defaultTabIcon", "aria-hidden", "class", "viewBox", "iconCopy", "iconRetry", "xmlns", "iconEdit", "localIcon", "closeIcon", "checkIcon", "points", "iconAudio", "iconVideo", "iconPDF", "iconText", "fill-rule", "fill", "dashboardBgIcon", "_$getFileTypeIcon_88", "defaultChoice", "icon", "fileTypeGeneral", "__h_83", "_$FileCard_83", "_Component", "FileCard", "tempStoreMetaOrSubmit", "renderMetaFields", "handleClick", "fileCardFor", "keyCode", "fileCardDone", "dataset", "field", "data-name", "placeholder", "onkeyup", "onkeydown", "onkeypress", "onclick", "backgroundColor", "alt", "src", "__h_81", "_$ActionBrowseTagline_81", "ActionBrowseTagline", "click", "acquirers", "hidden", "tabindex", "multiple", "onchange", "handleInputChange", "__h_85", "circleLength", "PI", "_$FileItemProgress_85", "r", "cx", "cy", "stroke-width", "transform", "stroke-dasharray", "stroke-dashoffset", "rx", "__getSpeed_84", "__getFileNameAndExtension_84", "__h_84", "_$FileItem_84", "isProcessing", "isUploaded", "uploadInProgressOrComplete", "uploadInProgress", "truncatedFileName", "isWide", "dashboardItemClass", "is-inprogress", "is-processing", "is-complete", "is-paused", "is-error", "is-resumable", "pauseUpload", "cancelUpload", "showProgressDetails", "aria-label", "href", "acquirer", "showFileCard", "stroke", "vector-effect", "__h_86", "_$FileList_86", "noFiles", "totalFileCount", "dashboardFilesClass", "uppy-Dashboard-files--noFiles", "note", "__h_87", "_$Tabs_87", "Tabs", "role", "aria-controls", "aria-selected", "activePanel", "showPanel", "__h_82", "_$Dashboard_82", "dashboardClassName", "Uppy--isTouchDevice", "uppy-Dashboard--modal", "inline", "uppy-Dashboard--wide", "modal", "onpaste", "handlePaste", "handleClickOutside", "aria-modal", "maxWidth", "maxHeight", "closeModal", "hideAllPanels", "progressindicators", "__h_101", "_$Informer_101", "Informer", "___extends_101", "typeColors", "bg", "warning", "success", "_state$info", "data-microtip-position", "data-microtip-size", "__h_116", "ThrottledProgressDetails", "complete", "totalUploadedSize", "totalSize", "totalSpeed", "totalETA", "_$StatusBar_116", "uploadState", "isAllErrored", "isAllComplete", "progressValue", "progressMode", "progressBarContent", "progresses", "_progresses$", "ProgressBarProcessing", "ProgressBarComplete", "ProgressBarUploading", "ProgressBarError", "hideUploadButton", "newFiles", "hideAfterFinish", "aria-valuemin", "aria-valuemax", "aria-valuenow", "UploadBtn", "RetryBtn", "startUpload", "isUploadStarted", "isAllPaused", "PauseResumeButtons", "_ref2", "__getSpeed_117", "__getBytesRemaining_117", "__prettyETA_117", "_$StatusBar_117", "StatusBar", "uploading", "uploadFailed", "pleasePressRetry", "paused", "retry", "pressToRetry", "resumeUpload", "uploadXFiles", "uploadXNewFiles", "___extends_117", "getTotalSpeed", "getTotalETA", "totalBytesRemaining", "uploadStartedFiles", "completeFiles", "erroredFiles", "inProgressFiles", "processingFiles", "inProgressFilesArray", "_$ThumbnailGenerator_118", "ThumbnailGenerator", "queueProcessing", "___extends_118", "thumbnailWidth", "addToQueue", "createThumbnail", "targetWidth", "originalUrl", "createObjectURL", "___Promise_118", "image", "Image", "onload", "targetHeight", "getProportionalHeight", "resizeImage", "blob", "sourceWidth", "sourceHeight", "stepScaled", "downScaleInSteps", "getContext", "drawImage", "currentWidth", "currentHeight", "img", "aspect", "setPreviewURL", "processQueue", "requestThumbnail", "__toArray_90", "FOCUSABLE_ELEMENTS", "_$Dashboard_90", "Dashboard", "selectToUpload", "importFrom", "dashboardWindowTitle", "dashboardTitle", "copyLinkToClipboardSuccess", "copyLinkToClipboardFallback", "copyLink", "fileSource", "editFile", "editing", "finishEditingFile", "localDisk", "myDevice", "dropPasteImport", "dropPaste", "browse", "numberOfSelectedFiles", "uploadAllNewFiles", "emptyFolderAdded", "folderAdded", "trigger", "hideProgressAfterFinish", "closeModalOnClickOutside", "disableStatusBar", "disableInformer", "disableThumbnailGenerator", "disablePageScrollWhenModalOpen", "onRequestCloseModal", "___extends_90", "openModal", "requestCloseModal", "isModalOpen", "getFocusableNodes", "setFocusToFirstNode", "maintainFocus", "initEvents", "onKeydown", "handleFileCard", "handleDrop", "updateDashboardElWidth", "callerPluginId", "callerPluginType", "newTargets", "targets", "nodes", "focusableNodes", "focus", "focusedItemIndex", "activeElement", "shiftKey", "savedScrollPosition", "scrollY", "savedActiveElement", "clipboardData", "getAsFile", "showModalTrigger", "removeDragDropListener", "removeEvents", "dashboardEl", "offsetWidth", "containerWidth", "fileId", "pluginState", "attachRenderFunctionToTarget", "isSupported", "discoverProviderPlugins", "_this8", "_this9", "pluginID", "_this10", "informer", "statusBar", "thumbnail", "__toArray_91", "__h_91", "_$DragDrop_91", "DragDrop", "dropHereOr", "defaultOpts", "___extends_91", "isDragDropSupported", "checkDragDropSupport", "handleBrowseClick", "div", "DragDropClass", "DragDropStyle", "__h_92", "_$icons_92", "folder", "normalizeName", "normalizeValue", "iteratorFor", "iterator", "support", "iterable", "Symbol", "Headers", "getOwnPropertyNames", "consumed", "bodyUsed", "fileReaderReady", "readBlobAsArrayBuffer", "bufferClone", "view", "byteLength", "set", "Body", "_initBody", "_bodyInit", "_bodyText", "isPrototypeOf", "_bodyBlob", "_bodyFormData", "searchParams", "URLSearchParams", "arrayBuffer", "isDataView", "_bodyArrayBuffer", "ArrayBuffer", "isArrayBufferView", "readAsText", "chars", "fromCharCode", "Request", "upcased", "methods", "referrer", "form", "bytes", "Response", "bodyInit", "ok", "viewClasses", "DataView", "isView", "oldValue", "delete", "has", "values", "clone", "redirectStatuses", "redirect", "RangeError", "rawHeaders", "getAllResponseHeaders", "line", "responseText", "ontimeout", "withCredentials", "responseType", "___extends_104", "defineProperties", "descriptor", "defineProperty", "protoProps", "staticProps", "_getName", "charAt", "_$Provider_104", "Provider", "provider", "authProvider", "onReceiveResponse", "uppyServer", "checkAuth", "authenticated", "authUrl", "fileUrl", "directory", "logout", "__h_110", "_$Loader_110", "__h_105", "_$AuthView_105", "AuthView", "checkAuthInProgress", "pluginName", "handleAuth", "demo", "handleDemoAuth", "__h_106", "_$Breadcrumb_106", "getFolder", "__h_107", "_$Breadcrumbs_107", "directories", "__h_109", "_$Filter_109", "Filter", "handleKeyPress", "filterQuery", "display", "filterInput", "toggleSearch", "__h_112", "_$TableRow_112", "uniqueId", "stop", "isChecked", "checked", "disabled", "isDisabled", "handleCheckboxClick", "for", "getItemIcon", "__h_111", "_$Table_111", "onscroll", "handleScroll", "folders", "loading", "getItemName", "handleFolderClick", "toggleCheckbox", "columns", "handleFileClick", "__h_108", "_$Browser_108", "filteredFolders", "filteredFiles", "filterItems", "viewType", "isSearchVisible", "activeRow", "isActiveRow", "sortByTitle", "sortByDate", "getNextFolder", "__h_113", "_$view_113", "View", "___extends_113", "updateFolderState", "handleError", "donePicking", "tearDown", "_updateFilesAndFolders", "getItemSubList", "isFolder", "onAuth", "_loaderWrapper", "updatedDirectories", "getItemRequestPath", "lastCheckbox", "isCheckbox", "tagFile", "getItemData", "getItemId", "getMimeType", "getItemThumbnailUrl", "inputEl", "sorting", "sortedFiles", "sort", "fileA", "fileB", "localeCompare", "sortedFolders", "folderA", "folderB", "getItemModifiedDate", "b", "sortBySize", "itemId", "providerFileToId", "selectedFolders", "addFolder", "folderId", "dashboard", "removeFolder", "_iterator", "_isArray", "_i", "_plugin$getPluginStat", "itemsToToggle", "prevIndex", "currentIndex", "_iterator2", "_isArray2", "_i2", "_iterator3", "_isArray3", "_i3", "_ref3", "_item", "_this11", "urlId", "search", "authState", "btoa", "link", "authWindow", "authWindowUrl", "DOMException", "_this12", "scrollPos", "scrollHeight", "scrollTop", "offsetHeight", "getNextPagePath", "_isHandlingScroll", "_plugin$getPluginStat2", "catch_", "_this13", "_plugin$getPluginStat3", "browserProps", "__h_93", "_$Dropbox_93", "Dropbox", "___extends_93", "path_lower", "server_modified", "__h_94", "_$Dummy_94", "Dummy", "___extends_94", "strange", "addFakeFileJustToTest", "bla", "dummy", "__toArray_95", "__h_95", "_$FileInput_95", "FileInput", "chooseFiles", "allowMultipleFiles", "pretty", "inputName", "___extends_95", "opacity", "overflow", "zIndex", "webkitIndexedDB", "mozIndexedDB", "OIndexedDB", "msIndexedDB", "DB_NAME", "cleanedUp", "IndexedDBStore", "___extends_96", "storeName", "maxTotalSize", "createConnection", "ready", "cleanup", "getAll", "IDBKeyRange", "only", "getSize", "continue", "put", "upperBound", "_$IndexedDBStore_96", "__cleanedUp_97", "_$MetaDataStore_97", "MetaDataStore", "___extends_97", "load", "savedState", "localStorage", "getItem", "save", "setItem", "instanceIDs", "instances", "removeItem", "__isSupported_98", "ServiceWorkerStore", "___Promise_98", "serviceWorker", "controller", "onMessage", "_$ServiceWorkerStore_98", "_$GoldenRetriever_99", "GoldenRetriever", "___extends_99", "saveFilesStateToLocalStorage", "loadFilesStateFromLocalStorage", "loadFileBlobsFromServiceWorker", "loadFileBlobsFromIndexedDB", "onBlobsLoaded", "savedPluginData", "pluginData", "getWaitingFiles", "waitingFiles", "allFiles", "getUploadingFiles", "uploadingFiles", "filesToSave", "blobs", "numberOfFilesRecovered", "obsoleteBlobs", "originalFile", "cachedData", "isRestored", "generatePreview", "deleteBlobs", "___Promise_99", "uploadId", "__h_100", "_$GoogleDrive_100", "GoogleDrive", "___extends_100", "parseFloat", "fileSize", "iconLink", "startsWith", "modifiedByMeDate", "__h_102", "_$Instagram_102", "Instagram", "___extends_102", "images", "subItems", "subItem", "carousel_media", "created_time", "newSubItem", "carousel_id", "suffix", "__h_103", "_$ProgressBar_103", "ProgressBar", "___extends_103", "fixed", "_$Redux_114", "Redux", "dispatch", "handleStateUpdate", "_$ReduxDevTools_115", "ReduxDevTools", "___extends_115", "handleStateChange", "initDevTools", "devTools", "devToolsExtension", "devToolsUnsubscribe", "computedStates", "nextLiftedState", "withDevTools", "__REDUX_DEVTOOLS_EXTENSION__", "_$Client_119", "Client", "apiUrl", "createAssembly", "templateId", "expectedFiles", "assembly", "code", "reserveFile", "assembly_ssl_url", "___Promise_119", "qs", "getAssemblyStatus", "m", "disable", "enable", "namespaces", "names", "skips", "humanize", "long", "_$browser_14", "storage", "DEBUG", "lastC", "documentElement", "firebug", "exception", "table", "$1", "chrome", "v", "rand", "deviation", "setMin", "setMax", "setJitter", "_$componentBind_8", "_$componentEmitter_9", "_callbacks", "hasListeners", "_$after_1", "count", "err_cb", "proxy", "bail", "_$base64Arraybuffer_3", "arraybuffer", "base64", "encoded1", "encoded2", "encoded3", "encoded4", "bufferLength", "mapArrayBufferViews", "ary", "copy", "byteOffset", "BlobBuilder", "WebKitBlobBuilder", "MSBlobBuilder", "MozBlobBuilder", "blobSupported", "blobSupportsArrayBufferView", "blobBuilderSupported", "getBlob", "_$blob_4", "bb", "_$keys_30", "ucs2decode", "string", "extra", "output", "checkScalarValue", "codePoint", "strict", "createByte", "stringFromCharCode", "encodeCodePoint", "symbol", "readContinuationByte", "byteIndex", "byteCount", "continuationByte", "byteArray", "decodeSymbol", "byte1", "freeExports", "_$utf8_31", "freeModule", "utf8", "codePoints", "byteString", "tmp", "_$arraybufferSlice_32", "start", "abv", "_$isarray_39", "withNativeBlob", "withNativeFile", "_$hasBinary_36", "hasBinary", "Buffer", "isBuffer", "toJSON", "eachWithIndex", "base64encoder", "isAndroid", "isPhantomJS", "dontSendBlobs", "_$browser_29", "packets", "ping", "pong", "upgrade", "packetslist", "encodePacket", "utf8encode", "encodeBase64Packet", "contentArray", "resultBuffer", "fr", "b64data", "b64", "readAsDataURL", "typed", "basic", "decodePacket", "binaryType", "utf8decode", "decodeBase64Packet", "rest", "encodePayload", "encodePayloadAsBlob", "encodePayloadAsArrayBuffer", "doneCallback", "decodePayload", "decodePayloadAsBinary", "chr", "encodedPackets", "totalLength", "resultArray", "bufferIndex", "isString", "ab", "lenStr", "binaryIdentifier", "lengthAry", "bufferTail", "tailArray", "msgLength", "onError", "desc", "description", "doOpen", "doClose", "onClose", "write", "onOpen", "onData", "onPacket", "_$componentInherit_10", "_$hasCors_37", "_$xmlhttprequest_25", "xdomain", "xscheme", "XDomainRequest", "_$browser_26", "WebkitAppearance", "_$parseqs_44", "qry", "pairs", "pair", "decoded", "_$yeast_72", "_$Polling_23", "poll", "pause", "onPause", "polling", "doPoll", "callbackfn", "doWrite", "schema", "sid", "empty", "JSONPPolling", "___eio", "script", "_$JSONPPolling_21", "rNewline", "rEscapedNewline", "iframe", "async", "insertAt", "getElementsByTagName", "head", "initIframe", "html", "iframeId", "area", "submit", "attachEvent", "onreadystatechange", "XHR", "requestTimeout", "isSSL", "xd", "xs", "unloadHandler", "requests", "_$pollingXhr_22", "req", "sendXhr", "pollXhr", "setDisableHeaderCheck", "hasXDR", "onLoad", "requestsCount", "onSuccess", "fromError", "WS", "perMessageDeflate", "usingBrowserWebSocket", "BrowserWebSocket", "protocols", "NodeWebSocket", "MozWebSocket", "_$websocket_24", "ws", "supports", "addEventListeners", "compress", "threshold", "_$transports_20", "jsonp", "forceJSONP", "websocket", "_$indexof_38", "re", "_$parseuri_45", "authority", "ipv6uri", "transports", "transportOptions", "writeBuffer", "prevBufferLen", "policyPort", "rememberUpgrade", "onlyBinaryUpgrades", "upgrades", "pingInterval", "pingTimeout", "pingIntervalTimer", "pingTimeoutTimer", "_$socket_18", "priorWebsocketSuccess", "createTransport", "o", "EIO", "transport", "setTransport", "onDrain", "probe", "onTransportOpen", "upgradeLosesBinary", "upgrading", "freezeTransport", "onTransportClose", "onupgrade", "to", "onHandshake", "setPing", "filterUpgrades", "onHeartbeat", "sendPacket", "cleanupAndClose", "waitForUpgrade", "filteredUpgrades", "_$lib_17", "_$on_54", "destroy", "_$isBuffer_59", "_$binary_57", "deconstructPacket", "packetData", "pack", "_deconstructPacket", "_placeholder", "newData", "reconstructPacket", "_reconstructPacket", "removeBlobs", "pendingBlobs", "bloblessData", "_removeBlobs", "curKey", "containingObject", "fileReader", "types", "CONNECT", "DISCONNECT", "EVENT", "ACK", "deconstruction", "takeBinaryData", "finishedReconstruction", "binData", "_$toArray_60", "__debug_55", "_$socket_55", "connect_error", "connect_timeout", "disconnect", "reconnect", "reconnect_attempt", "reconnect_failed", "reconnect_error", "reconnecting", "subEvents", "flags", "onpacket", "onconnect", "onevent", "onack", "ondisconnect", "ack", "sent", "emitBuffered", "__debug_53", "emitAll", "updateSocketIds", "generateId", "engine", "_reconnection", "_reconnectionAttempts", "_reconnectionDelay", "_randomizationFactor", "_reconnectionDelayMax", "_timeout", "maybeReconnectOnOpen", "skipReconnect", "openSub", "errorSub", "timer", "onping", "onpong", "ondata", "ondecoded", "onConnecting", "processPacketQueue", "subsLength", "delay", "onreconnect", "attempt", "loc", "_$lib_52", "managers", "__has_48", "_$querystringify_48", "prefix", "part", "_$requiresPort_49", "lolcation", "finaldestination", "unescape", "pathname", "ignore", "slashes", "extractProtocol", "address", "protocolre", "relative", "extracted", "instruction", "instructions", "rules", "last", "up", "username", "password", "auth", "origin", "char", "ins", "_$urlParse_69", "_$Socket_120", "TransloaditSocket", "attachDefaultHandlers", "assembly_id", "stepName", "___extends_120", "_$Transloadit_121", "Transloadit", "creatingAssembly", "creatingAssemblyFailed", "waitForEncoding", "waitForMetadata", "alwaysRunAssembly", "importFromUploadURLs", "getAssemblyOptions", "___extends_121", "afterUpload", "onFileUploadURLAvailable", "onRestored", "getPersistentData", "validateParams", "client", "sockets", "___Promise_121", "assemblyOptions", "dedupeAssemblyOptions", "dedupeMap", "_dedupeMap$id$fileIDs", "pluginOptions", "assemblyList", "uploadsAssemblies", "assemblies", "tlMeta", "assembly_url", "tus", "tus_url", "uploadUrl", "resume", "transloadit", "connectSocket", "shouldWait", "reserveFiles", "findFile", "uploadedFile", "tus_upload_url", "is_tus_file", "onFileUploadComplete", "assemblyId", "getAssembly", "onResult", "original_id", "localId", "onAssemblyFinished", "setData", "_setData", "uploads", "emitEventsDiff", "diffAssemblyStatus", "upload_meta_data_extracted", "newUploads", "newResults", "some", "newAssemblies", "previousAssemblies", "oldAssembly", "knownUploads", "knownResults", "restored", "assemblyIDs", "assemblyID", "assembliesById", "newState", "previousFiles", "_ref4", "websocket_url", "_extends6", "_ref5", "optionsPromise", "allOptions", "emitMissedEvents", "finishedAssemblies", "getAssemblyFiles", "checkAllComplete", "onAssemblyError", "onImportError", "removeListeners", "_assemblies", "_$storage_64", "hasStorage", "SECURITY_ERR", "QUOTA_EXCEEDED_ERR", "canStoreURLs", "toStr", "isPlainObject", "hasOwnConstructor", "hasIsPrototypeOf", "_$base64_61", "__btoa_61", "numUrls", "_$resolveUrl_50", "resolveUrl", "_$request_62", "newRequest", "_resolveUrl2", "___createClass_63", "_$source_63", "getSource", "FileSource", "_file", "_$error_65", "DetailedError", "_Error", "causingErr", "getPrototypeOf", "originalRequest", "causingError", "_$fingerprint_66", "___createClass_68", "_$upload_68", "_fingerprint2", "_error2", "_extend2", "copyIsArray", "deep", "Base64", "Storage", "onProgress", "onChunkComplete", "chunkSize", "uploadSize", "overridePatchMethod", "retryDelays", "Upload", "_xhr", "_fingerprint", "_offset", "_aborted", "_size", "_source", "_retryAttempt", "_retryTimeout", "_offsetBeforeRetry", "errorCallback", "isOnline", "_emitError", "_resumeUpload", "resumedUrl", "bytesSent", "bytesAccepted", "_startUpload", "_emitXhrError", "_setupXHR", "_emitProgress", "_emitSuccess", "_emitChunkComplete", "onprogress", "__obj_67", "_upload2", "_window", "__XMLHttpRequest_67", "__Blob_67", "_$libEs5_67", "__emitSocketProgress_122", "__getSocketHost_122", "__settle_122", "tusDefaultOptions", "_$Tus_122", "Tus", "___extends_122", "autoRetry", "uploaderEvents", "uploaderSockets", "handleResetProgress", "tusState", "resetUploaderReferences", "___Promise_122", "optsTus", "onReceiveUploadUrl", "onFileRemove", "targetFileID", "onPauseAll", "onCancelAll", "onResumeAll", "serverToken", "connectToServerSocket", "onRetry", "onRetryAll", "updateFile", "filesToUpload", "addResumableUploadsCapabilityFlag", "newCapabilities", "__h_127", "_$RecordStartIcon_127", "__h_128", "_$RecordStopIcon_128", "__h_126", "_$RecordButton_126", "recording", "onStartRecording", "onStopRecording", "__h_123", "_$CameraIcon_123", "__h_129", "_$SnapshotButton_129", "onSnapshot", "__h_124", "_$CameraScreen_124", "CameraScreen", "onFocus", "btnContainer", "onStop", "shouldShowRecordButton", "supportsRecording", "shouldShowSnapshotButton", "autoplay", "muted", "__h_125", "_$PermissionsScreen_125", "__h_130", "_$WebcamIcon_130", "_$supportsMediaRecorder_132", "MediaRecorder", "__h_131", "__canvasToBlob_131", "_$Webcam_131", "Webcam", "mediaDevices", "getUserMedia", "_getUserMedia", "mozGetUserMedia", "webkitGetUserMedia", "___Promise_131", "supportsUserMedia", "smile", "onBeforeSnapshot", "countdown", "___extends_131", "takeSnapshot", "startRecording", "stopRecording", "oneTwoThreeSmile", "webcamActive", "getConstraints", "audio", "video", "constraints", "stream", "streamSrc", "cameraReady", "cameraError", "recorder", "recordingChunks", "isRecording", "getVideo", "getAudioTracks", "track", "getVideoTracks", "getVideoElement", "countDown", "setInterval", "clearInterval", "captureInProgress", "___typeof_131", "getImage", "videoWidth", "videoHeight", "webcamState", "Core", "ReduxStore" ], "mappings": "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", "sourcesContent": [ "(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Uppy = f()}})(function(){var define,module,exports;\n", "// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n", "const throttle = require('lodash.throttle')\n// we inline file-type module, as opposed to using the NPM version,\n// because of this https://github.com/sindresorhus/file-type/issues/78\n// and https://github.com/sindresorhus/copy-text-to-clipboard/issues/5\nconst fileType = require('../vendor/file-type')\n\n/**\n * A collection of small utility functions that help with dom manipulation, adding listeners,\n * promises and other good things.\n *\n * @module Utils\n */\n\nfunction isTouchDevice () {\n return 'ontouchstart' in window || // works on most browsers\n navigator.maxTouchPoints // works on IE10/11 and Surface\n}\n\nfunction truncateString (str, length) {\n if (str.length > length) {\n return str.substr(0, length / 2) + '...' + str.substr(str.length - length / 4, str.length)\n }\n return str\n\n // more precise version if needed\n // http://stackoverflow.com/a/831583\n}\n\nfunction secondsToTime (rawSeconds) {\n const hours = Math.floor(rawSeconds / 3600) % 24\n const minutes = Math.floor(rawSeconds / 60) % 60\n const seconds = Math.floor(rawSeconds % 60)\n\n return { hours, minutes, seconds }\n}\n\n/**\n * Converts list into array\n*/\nfunction toArray (list) {\n return Array.prototype.slice.call(list || [], 0)\n}\n\n/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n*/\nfunction getTimeStamp () {\n var date = new Date()\n var hours = pad(date.getHours().toString())\n var minutes = pad(date.getMinutes().toString())\n var seconds = pad(date.getSeconds().toString())\n return hours + ':' + minutes + ':' + seconds\n}\n\n/**\n * Adds zero to strings shorter than two characters\n*/\nfunction pad (str) {\n return str.length !== 2 ? 0 + str : str\n}\n\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {Object} file\n * @return {String} the fileID\n *\n */\nfunction generateFileID (file) {\n // filter is needed to not join empty values with `-`\n return [\n 'uppy',\n file.name ? file.name.toLowerCase().replace(/[^A-Z0-9]/ig, '') : '',\n file.type,\n file.data.size,\n file.data.lastModified\n ].filter(val => val).join('-')\n}\n\n/**\n * Runs an array of promise-returning functions in sequence.\n */\nfunction runPromiseSequence (functions, ...args) {\n let promise = Promise.resolve()\n functions.forEach((func) => {\n promise = promise.then(() => func(...args))\n })\n return promise\n}\n\nfunction isPreviewSupported (fileType) {\n if (!fileType) return false\n const fileTypeSpecific = fileType.split('/')[1]\n // list of images that browsers can preview\n if (/^(jpeg|gif|png|svg|svg\\+xml|bmp)$/.test(fileTypeSpecific)) {\n return true\n }\n return false\n}\n\nfunction getArrayBuffer (chunk) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader()\n reader.addEventListener('load', function (e) {\n // e.target.result is an ArrayBuffer\n resolve(e.target.result)\n })\n reader.addEventListener('error', function (err) {\n console.error('FileReader error' + err)\n reject(err)\n })\n // file-type only needs the first 4100 bytes\n reader.readAsArrayBuffer(chunk)\n })\n}\n\nfunction getFileType (file) {\n const extensionsToMime = {\n 'md': 'text/markdown',\n 'markdown': 'text/markdown',\n 'mp4': 'video/mp4',\n 'mp3': 'audio/mp3',\n 'svg': 'image/svg+xml',\n 'jpg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif'\n }\n\n const fileExtension = file.name ? getFileNameAndExtension(file.name).extension : null\n\n if (file.isRemote) {\n // some remote providers do not support file types\n const mime = file.type ? file.type : extensionsToMime[fileExtension]\n return Promise.resolve(mime)\n }\n\n // 1. try to determine file type from magic bytes with file-type module\n // this should be the most trustworthy way\n const chunk = file.data.slice(0, 4100)\n return getArrayBuffer(chunk)\n .then((buffer) => {\n const type = fileType(buffer)\n if (type && type.mime) {\n return type.mime\n }\n\n // 2. if that’s no good, check if mime type is set in the file object\n if (file.type) {\n return file.type\n }\n\n // 3. if that’s no good, see if we can map extension to a mime type\n if (fileExtension && extensionsToMime[fileExtension]) {\n return extensionsToMime[fileExtension]\n }\n\n // if all fails, well, return empty\n return null\n })\n .catch(() => {\n return null\n })\n}\n\n// TODO Check which types are actually supported in browsers. Chrome likes webm\n// from my testing, but we may need more.\n// We could use a library but they tend to contain dozens of KBs of mappings,\n// most of which will go unused, so not sure if that's worth it.\nconst mimeToExtensions = {\n 'video/ogg': 'ogv',\n 'audio/ogg': 'ogg',\n 'video/webm': 'webm',\n 'audio/webm': 'webm',\n 'video/mp4': 'mp4',\n 'audio/mp3': 'mp3'\n}\n\nfunction getFileTypeExtension (mimeType) {\n return mimeToExtensions[mimeType] || null\n}\n\n/**\n* Takes a full filename string and returns an object {name, extension}\n*\n* @param {string} fullFileName\n* @return {object} {name, extension}\n*/\nfunction getFileNameAndExtension (fullFileName) {\n var re = /(?:\\.([^.]+))?$/\n var fileExt = re.exec(fullFileName)[1]\n var fileName = fullFileName.replace('.' + fileExt, '')\n return {\n name: fileName,\n extension: fileExt\n }\n}\n\n/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @return {boolean}\n */\nfunction isObjectURL (url) {\n return url.indexOf('blob:') === 0\n}\n\nfunction getProportionalHeight (img, width) {\n const aspect = img.width / img.height\n return Math.round(width / aspect)\n}\n\n/**\n * Create a thumbnail for the given Uppy file object.\n *\n * @param {{data: Blob}} file\n * @param {number} width\n * @return {Promise}\n */\nfunction createThumbnail (file, targetWidth) {\n const originalUrl = URL.createObjectURL(file.data)\n const onload = new Promise((resolve, reject) => {\n const image = new Image()\n image.src = originalUrl\n image.onload = () => {\n URL.revokeObjectURL(originalUrl)\n resolve(image)\n }\n image.onerror = () => {\n // The onerror event is totally useless unfortunately, as far as I know\n URL.revokeObjectURL(originalUrl)\n reject(new Error('Could not create thumbnail'))\n }\n })\n\n return onload.then((image) => {\n const targetHeight = getProportionalHeight(image, targetWidth)\n const canvas = resizeImage(image, targetWidth, targetHeight)\n return canvasToBlob(canvas, 'image/png')\n }).then((blob) => {\n return URL.createObjectURL(blob)\n })\n}\n\n/**\n * Resize an image to the target `width` and `height`.\n *\n * Returns a Canvas with the resized image on it.\n */\nfunction resizeImage (image, targetWidth, targetHeight) {\n let sourceWidth = image.width\n let sourceHeight = image.height\n\n if (targetHeight < image.height / 2) {\n const steps = Math.floor(Math.log(image.width / targetWidth) / Math.log(2))\n const stepScaled = downScaleInSteps(image, steps)\n image = stepScaled.image\n sourceWidth = stepScaled.sourceWidth\n sourceHeight = stepScaled.sourceHeight\n }\n\n const canvas = document.createElement('canvas')\n canvas.width = targetWidth\n canvas.height = targetHeight\n\n const context = canvas.getContext('2d')\n context.drawImage(image,\n 0, 0, sourceWidth, sourceHeight,\n 0, 0, targetWidth, targetHeight)\n\n return canvas\n}\n\n/**\n * Downscale an image by 50% `steps` times.\n */\nfunction downScaleInSteps (image, steps) {\n let source = image\n let currentWidth = source.width\n let currentHeight = source.height\n\n for (let i = 0; i < steps; i += 1) {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n canvas.width = currentWidth / 2\n canvas.height = currentHeight / 2\n context.drawImage(source,\n // The entire source image. We pass width and height here,\n // because we reuse this canvas, and should only scale down\n // the part of the canvas that contains the previous scale step.\n 0, 0, currentWidth, currentHeight,\n // Draw to 50% size\n 0, 0, currentWidth / 2, currentHeight / 2)\n currentWidth /= 2\n currentHeight /= 2\n source = canvas\n }\n\n return {\n image: source,\n sourceWidth: currentWidth,\n sourceHeight: currentHeight\n }\n}\n\n/**\n * Save a element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @return {Promise}\n */\nfunction canvasToBlob (canvas, type, quality) {\n if (canvas.toBlob) {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, type, quality)\n })\n }\n return Promise.resolve().then(() => {\n return dataURItoBlob(canvas.toDataURL(type, quality), {})\n })\n}\n\nfunction dataURItoBlob (dataURI, opts, toFile) {\n // get the base64 data\n var data = dataURI.split(',')[1]\n\n // user may provide mime type, if not get it from data URI\n var mimeType = opts.mimeType || dataURI.split(',')[0].split(':')[1].split(';')[0]\n\n // default to plain/text if data URI has no mimeType\n if (mimeType == null) {\n mimeType = 'plain/text'\n }\n\n var binary = atob(data)\n var array = []\n for (var i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i))\n }\n\n // Convert to a File?\n if (toFile) {\n return new File([new Uint8Array(array)], opts.name || '', {type: mimeType})\n }\n\n return new Blob([new Uint8Array(array)], {type: mimeType})\n}\n\nfunction dataURItoFile (dataURI, opts) {\n return dataURItoBlob(dataURI, opts, true)\n}\n\n/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {String} textToCopy\n * @param {String} fallbackString\n * @return {Promise}\n */\nfunction copyToClipboard (textToCopy, fallbackString) {\n fallbackString = fallbackString || 'Copy the URL below'\n\n return new Promise((resolve) => {\n const textArea = document.createElement('textarea')\n textArea.setAttribute('style', {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '2em',\n height: '2em',\n padding: 0,\n border: 'none',\n outline: 'none',\n boxShadow: 'none',\n background: 'transparent'\n })\n\n textArea.value = textToCopy\n document.body.appendChild(textArea)\n textArea.select()\n\n const magicCopyFailed = () => {\n document.body.removeChild(textArea)\n window.prompt(fallbackString, textToCopy)\n resolve()\n }\n\n try {\n const successful = document.execCommand('copy')\n if (!successful) {\n return magicCopyFailed('copy command unavailable')\n }\n document.body.removeChild(textArea)\n return resolve()\n } catch (err) {\n document.body.removeChild(textArea)\n return magicCopyFailed(err)\n }\n })\n}\n\nfunction getSpeed (fileProgress) {\n if (!fileProgress.bytesUploaded) return 0\n\n const timeElapsed = (new Date()) - fileProgress.uploadStarted\n const uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000)\n return uploadSpeed\n}\n\nfunction getBytesRemaining (fileProgress) {\n return fileProgress.bytesTotal - fileProgress.bytesUploaded\n}\n\nfunction getETA (fileProgress) {\n if (!fileProgress.bytesUploaded) return 0\n\n const uploadSpeed = getSpeed(fileProgress)\n const bytesRemaining = getBytesRemaining(fileProgress)\n const secondsRemaining = Math.round(bytesRemaining / uploadSpeed * 10) / 10\n\n return secondsRemaining\n}\n\nfunction prettyETA (seconds) {\n const time = secondsToTime(seconds)\n\n // Only display hours and minutes if they are greater than 0 but always\n // display minutes if hours is being displayed\n // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n const hoursStr = time.hours ? time.hours + 'h ' : ''\n const minutesVal = time.hours ? ('0' + time.minutes).substr(-2) : time.minutes\n const minutesStr = minutesVal ? minutesVal + 'm ' : ''\n const secondsVal = minutesVal ? ('0' + time.seconds).substr(-2) : time.seconds\n const secondsStr = secondsVal + 's'\n\n return `${hoursStr}${minutesStr}${secondsStr}`\n}\n\n/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nfunction isDOMElement (obj) {\n return obj && typeof obj === 'object' && obj.nodeType === Node.ELEMENT_NODE\n}\n\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @return {Node|null}\n */\nfunction findDOMElement (element) {\n if (typeof element === 'string') {\n return document.querySelector(element)\n }\n\n if (typeof element === 'object' && isDOMElement(element)) {\n return element\n }\n}\n\n/**\n * Find one or more DOM elements.\n *\n * @param {string} element\n * @return {Array|null}\n */\nfunction findAllDOMElements (element) {\n if (typeof element === 'string') {\n const elements = [].slice.call(document.querySelectorAll(element))\n return elements.length > 0 ? elements : null\n }\n\n if (typeof element === 'object' && isDOMElement(element)) {\n return [element]\n }\n}\n\nfunction getSocketHost (url) {\n // get the host domain\n var regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/\n var host = regex.exec(url)[1]\n var socketProtocol = location.protocol === 'https:' ? 'wss' : 'ws'\n\n return `${socketProtocol}://${host}`\n}\n\nfunction _emitSocketProgress (uploader, progressData, file) {\n const { progress, bytesUploaded, bytesTotal } = progressData\n if (progress) {\n uploader.uppy.log(`Upload progress: ${progress}`)\n uploader.uppy.emit('upload-progress', {\n uploader,\n id: file.id,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n })\n }\n}\n\nconst emitSocketProgress = throttle(_emitSocketProgress, 300, {leading: true, trailing: true})\n\nfunction settle (promises) {\n const resolutions = []\n const rejections = []\n function resolved (value) {\n resolutions.push(value)\n }\n function rejected (error) {\n rejections.push(error)\n }\n\n const wait = Promise.all(\n promises.map((promise) => promise.then(resolved, rejected))\n )\n\n return wait.then(() => {\n return {\n successful: resolutions,\n failed: rejections\n }\n })\n}\n\n/**\n * Limit the amount of simultaneously pending Promises.\n * Returns a function that, when passed a function `fn`,\n * will make sure that at most `limit` calls to `fn` are pending.\n *\n * @param {number} limit\n * @return {function()}\n */\nfunction limitPromises (limit) {\n let pending = 0\n const queue = []\n return (fn) => {\n return (...args) => {\n const call = () => {\n pending++\n const promise = fn(...args)\n promise.then(onfinish, onfinish)\n return promise\n }\n\n if (pending >= limit) {\n return new Promise((resolve, reject) => {\n queue.push(() => {\n call().then(resolve, reject)\n })\n })\n }\n return call()\n }\n }\n function onfinish () {\n pending--\n const next = queue.shift()\n if (next) next()\n }\n}\n\nmodule.exports = {\n generateFileID,\n toArray,\n getTimeStamp,\n runPromiseSequence,\n isTouchDevice,\n getFileNameAndExtension,\n truncateString,\n getFileTypeExtension,\n getFileType,\n getArrayBuffer,\n isPreviewSupported,\n isObjectURL,\n createThumbnail,\n secondsToTime,\n dataURItoBlob,\n dataURItoFile,\n canvasToBlob,\n getSpeed,\n getBytesRemaining,\n getETA,\n copyToClipboard,\n prettyETA,\n findDOMElement,\n findAllDOMElements,\n getSocketHost,\n emitSocketProgress,\n settle,\n limitPromises\n}\n", "/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n return pad((Math.random() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\n\nfunction cuid () {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c', // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = (new Date().getTime()).toString(base),\n\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.slug = function slug () {\n var date = new Date().getTime().toString(36),\n counter = safeCounter().toString(36).slice(-4),\n print = fingerprint().slice(0, 1) +\n fingerprint().slice(-1),\n random = randomBlock().slice(-2);\n\n return date.slice(-2) +\n counter + print + random;\n};\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n", "/* jshint node: true */\n'use strict';\n\n/**\n # wildcard\n\n Very simple wildcard matching, which is designed to provide the same\n functionality that is found in the\n [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n ## Usage\n\n It works with strings:\n\n <<< examples/strings.js\n\n Arrays:\n\n <<< examples/arrays.js\n\n Objects (matching against keys):\n\n <<< examples/objects.js\n\n While the library works in Node, if you are are looking for file-based\n wildcard matching then you should have a look at:\n\n \n**/\n\nfunction WildcardMatcher(text, separator) {\n this.text = text = text || '';\n this.hasWild = ~text.indexOf('*');\n this.separator = separator;\n this.parts = text.split(separator);\n}\n\nWildcardMatcher.prototype.match = function(input) {\n var matches = true;\n var parts = this.parts;\n var ii;\n var partsCount = parts.length;\n var testParts;\n\n if (typeof input == 'string' || input instanceof String) {\n if (!this.hasWild && this.text != input) {\n matches = false;\n } else {\n testParts = (input || '').split(this.separator);\n for (ii = 0; matches && ii < partsCount; ii++) {\n if (parts[ii] === '*') {\n continue;\n } else if (ii < testParts.length) {\n matches = parts[ii] === testParts[ii];\n } else {\n matches = false;\n }\n }\n\n // If matches, then return the component parts\n matches = matches && testParts;\n }\n }\n else if (typeof input.splice == 'function') {\n matches = [];\n\n for (ii = input.length; ii--; ) {\n if (this.match(input[ii])) {\n matches[matches.length] = input[ii];\n }\n }\n }\n else if (typeof input == 'object') {\n matches = {};\n\n for (var key in input) {\n if (this.match(key)) {\n matches[key] = input[key];\n }\n }\n }\n\n return matches;\n};\n\nmodule.exports = function(text, test, separator) {\n var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n if (typeof test != 'undefined') {\n return matcher.match(test);\n }\n\n return matcher;\n};\n", "const Plugin = require('../../core/Plugin')\nconst Translator = require('../../core/Translator')\nconst { limitPromises } = require('../../core/Utils')\nconst XHRUpload = require('../XHRUpload')\n\nfunction isXml (xhr) {\n const contentType = xhr.getResponseHeader('Content-Type')\n return typeof contentType === 'string' && contentType.toLowerCase() === 'application/xml'\n}\n\nmodule.exports = class AwsS3 extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'uploader'\n this.id = 'AwsS3'\n this.title = 'AWS S3'\n\n const defaultLocale = {\n strings: {\n preparingUpload: 'Preparing upload...'\n }\n }\n\n const defaultOptions = {\n timeout: 30 * 1000,\n limit: 0,\n getUploadParameters: this.getUploadParameters.bind(this),\n locale: defaultLocale\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n this.translator = new Translator({ locale: this.locale })\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.prepareUpload = this.prepareUpload.bind(this)\n\n if (typeof this.opts.limit === 'number' && this.opts.limit !== 0) {\n this.limitRequests = limitPromises(this.opts.limit)\n } else {\n this.limitRequests = (fn) => fn\n }\n }\n\n getUploadParameters (file) {\n if (!this.opts.host) {\n throw new Error('Expected a `host` option containing an uppy-server address.')\n }\n\n const filename = encodeURIComponent(file.name)\n const type = encodeURIComponent(file.type)\n return fetch(`${this.opts.host}/s3/params?filename=${filename}&type=${type}`, {\n method: 'get',\n headers: { accept: 'application/json' }\n }).then((response) => response.json())\n }\n\n prepareUpload (fileIDs) {\n fileIDs.forEach((id) => {\n this.uppy.emit('preprocess-progress', id, {\n mode: 'determinate',\n message: this.i18n('preparingUpload'),\n value: 0\n })\n })\n\n const getUploadParameters = this.limitRequests(this.opts.getUploadParameters)\n\n return Promise.all(\n fileIDs.map((id) => {\n const file = this.uppy.getFile(id)\n const paramsPromise = Promise.resolve()\n .then(() => getUploadParameters(file))\n return paramsPromise.then((params) => {\n this.uppy.emit('preprocess-progress', file.id, {\n mode: 'determinate',\n message: this.i18n('preparingUpload'),\n value: 1\n })\n return params\n }).catch((error) => {\n this.uppy.emit('upload-error', file.id, error)\n })\n })\n ).then((responses) => {\n const updatedFiles = {}\n fileIDs.forEach((id, index) => {\n const file = this.uppy.getFile(id)\n if (file.error) {\n return\n }\n\n const {\n method = 'post',\n url,\n fields,\n headers\n } = responses[index]\n const xhrOpts = {\n method,\n formData: method.toLowerCase() === 'post',\n endpoint: url,\n metaFields: Object.keys(fields)\n }\n\n if (headers) {\n xhrOpts.headers = headers\n }\n\n const updatedFile = Object.assign({}, file, {\n meta: Object.assign({}, file.meta, fields),\n xhrUpload: xhrOpts\n })\n\n updatedFiles[id] = updatedFile\n })\n\n this.uppy.setState({\n files: Object.assign({}, this.uppy.getState().files, updatedFiles)\n })\n\n fileIDs.forEach((id) => {\n this.uppy.emit('preprocess-complete', id)\n })\n })\n }\n\n install () {\n this.uppy.addPreProcessor(this.prepareUpload)\n\n this.uppy.use(XHRUpload, {\n fieldName: 'file',\n responseUrlFieldName: 'location',\n timeout: this.opts.timeout,\n limit: this.opts.limit,\n getResponseData (xhr) {\n // If no response, we've hopefully done a PUT request to the file\n // in the bucket on its full URL.\n if (!isXml(xhr)) {\n return { location: xhr.responseURL }\n }\n function getValue (key) {\n const el = xhr.responseXML.querySelector(key)\n return el ? el.textContent : ''\n }\n return {\n location: getValue('Location'),\n bucket: getValue('Bucket'),\n key: getValue('Key'),\n etag: getValue('ETag')\n }\n },\n getResponseError (xhr) {\n // If no response, we don't have a specific error message, use the default.\n if (!isXml(xhr)) {\n return\n }\n const error = xhr.responseXML.querySelector('Error > Message')\n return new Error(error.textContent)\n }\n })\n }\n\n uninstall () {\n const uploader = this.uppy.getPlugin('XHRUpload')\n this.uppy.removePlugin(uploader)\n\n this.uppy.removePreProcessor(this.prepareUpload)\n }\n}\n", "module.exports = dragDrop\n\nvar flatten = require('flatten')\nvar parallel = require('run-parallel')\n\nfunction dragDrop (elem, listeners) {\n if (typeof elem === 'string') {\n var selector = elem\n elem = window.document.querySelector(elem)\n if (!elem) {\n throw new Error('\"' + selector + '\" does not match any HTML elements')\n }\n }\n\n if (!elem) {\n throw new Error('\"' + elem + '\" is not a valid HTML element')\n }\n\n if (typeof listeners === 'function') {\n listeners = { onDrop: listeners }\n }\n\n var timeout\n\n elem.addEventListener('dragenter', onDragEnter, false)\n elem.addEventListener('dragover', onDragOver, false)\n elem.addEventListener('dragleave', onDragLeave, false)\n elem.addEventListener('drop', onDrop, false)\n\n // Function to remove drag-drop listeners\n return function remove () {\n removeDragClass()\n elem.removeEventListener('dragenter', onDragEnter, false)\n elem.removeEventListener('dragover', onDragOver, false)\n elem.removeEventListener('dragleave', onDragLeave, false)\n elem.removeEventListener('drop', onDrop, false)\n }\n\n function onDragEnter (e) {\n if (listeners.onDragEnter) {\n listeners.onDragEnter(e)\n }\n\n // Prevent event\n e.stopPropagation()\n e.preventDefault()\n return false\n }\n\n function onDragOver (e) {\n e.stopPropagation()\n e.preventDefault()\n if (e.dataTransfer.items) {\n // Only add \"drag\" class when `items` contains items that are able to be\n // handled by the registered listeners (files vs. text)\n var items = toArray(e.dataTransfer.items)\n var fileItems = items.filter(function (item) { return item.kind === 'file' })\n var textItems = items.filter(function (item) { return item.kind === 'string' })\n\n if (fileItems.length === 0 && !listeners.onDropText) return\n if (textItems.length === 0 && !listeners.onDrop) return\n if (fileItems.length === 0 && textItems.length === 0) return\n }\n\n elem.classList.add('drag')\n clearTimeout(timeout)\n\n if (listeners.onDragOver) {\n listeners.onDragOver(e)\n }\n\n e.dataTransfer.dropEffect = 'copy'\n return false\n }\n\n function onDragLeave (e) {\n e.stopPropagation()\n e.preventDefault()\n\n if (listeners.onDragLeave) {\n listeners.onDragLeave(e)\n }\n\n clearTimeout(timeout)\n timeout = setTimeout(removeDragClass, 50)\n\n return false\n }\n\n function onDrop (e) {\n e.stopPropagation()\n e.preventDefault()\n\n if (listeners.onDragLeave) {\n listeners.onDragLeave(e)\n }\n\n clearTimeout(timeout)\n removeDragClass()\n\n var pos = {\n x: e.clientX,\n y: e.clientY\n }\n\n // text drop support\n var text = e.dataTransfer.getData('text')\n if (text && listeners.onDropText) {\n listeners.onDropText(text, pos)\n }\n\n // file drop support\n if (e.dataTransfer.items) {\n // Handle directories in Chrome using the proprietary FileSystem API\n var items = toArray(e.dataTransfer.items).filter(function (item) {\n return item.kind === 'file'\n })\n\n if (items.length === 0) return\n\n parallel(items.map(function (item) {\n return function (cb) {\n processEntry(item.webkitGetAsEntry(), cb)\n }\n }), function (err, results) {\n // This catches permission errors with file:// in Chrome. This should never\n // throw in production code, so the user does not need to use try-catch.\n if (err) throw err\n if (listeners.onDrop) {\n listeners.onDrop(flatten(results), pos)\n }\n })\n } else {\n var files = toArray(e.dataTransfer.files)\n\n if (files.length === 0) return\n\n files.forEach(function (file) {\n file.fullPath = '/' + file.name\n })\n\n if (listeners.onDrop) {\n listeners.onDrop(files, pos)\n }\n }\n\n return false\n }\n\n function removeDragClass () {\n elem.classList.remove('drag')\n }\n}\n\nfunction processEntry (entry, cb) {\n var entries = []\n\n if (entry.isFile) {\n entry.file(function (file) {\n file.fullPath = entry.fullPath // preserve pathing for consumer\n cb(null, file)\n }, function (err) {\n cb(err)\n })\n } else if (entry.isDirectory) {\n var reader = entry.createReader()\n readEntries()\n }\n\n function readEntries () {\n reader.readEntries(function (entries_) {\n if (entries_.length > 0) {\n entries = entries.concat(toArray(entries_))\n readEntries() // continue reading entries until `readEntries` returns no more\n } else {\n doneEntries()\n }\n })\n }\n\n function doneEntries () {\n parallel(entries.map(function (entry) {\n return function (cb) {\n processEntry(entry, cb)\n }\n }), cb)\n }\n}\n\nfunction toArray (list) {\n return Array.prototype.slice.call(list || [], 0)\n}\n", "const prettyBytes = require('prettier-bytes')\nconst indexedDB = typeof window !== 'undefined' &&\n (window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB)\n\nconst isSupported = !!indexedDB\n\nconst DB_NAME = 'uppy-blobs'\nconst STORE_NAME = 'files' // maybe have a thumbnail store in the future\nconst DEFAULT_EXPIRY = 24 * 60 * 60 * 1000 // 24 hours\nconst DB_VERSION = 3\n\n// Set default `expires` dates on existing stored blobs.\nfunction migrateExpiration (store) {\n const request = store.openCursor()\n request.onsuccess = (event) => {\n const cursor = event.target.result\n if (!cursor) {\n return\n }\n const entry = cursor.value\n entry.expires = Date.now() + DEFAULT_EXPIRY\n cursor.update(entry)\n }\n}\n\nfunction connect (dbName) {\n const request = indexedDB.open(dbName, DB_VERSION)\n return new Promise((resolve, reject) => {\n request.onupgradeneeded = (event) => {\n const db = event.target.result\n const transaction = event.currentTarget.transaction\n\n if (event.oldVersion < 2) {\n // Added in v2: DB structure changed to a single shared object store\n const store = db.createObjectStore(STORE_NAME, { keyPath: 'id' })\n store.createIndex('store', 'store', { unique: false })\n }\n\n if (event.oldVersion < 3) {\n // Added in v3\n const store = transaction.objectStore(STORE_NAME)\n store.createIndex('expires', 'expires', { unique: false })\n\n migrateExpiration(store)\n }\n\n transaction.oncomplete = () => {\n resolve(db)\n }\n }\n request.onsuccess = (event) => {\n resolve(event.target.result)\n }\n request.onerror = reject\n })\n}\n\nfunction waitForRequest (request) {\n return new Promise((resolve, reject) => {\n request.onsuccess = (event) => {\n resolve(event.target.result)\n }\n request.onerror = reject\n })\n}\n\nlet cleanedUp = false\nclass IndexedDBStore {\n constructor (opts) {\n this.opts = Object.assign({\n dbName: DB_NAME,\n storeName: 'default',\n expires: DEFAULT_EXPIRY, // 24 hours\n maxFileSize: 10 * 1024 * 1024, // 10 MB\n maxTotalSize: 300 * 1024 * 1024 // 300 MB\n }, opts)\n\n this.name = this.opts.storeName\n\n const createConnection = () => {\n return connect(this.opts.dbName)\n }\n\n if (!cleanedUp) {\n cleanedUp = true\n this.ready = IndexedDBStore.cleanup()\n .then(createConnection, createConnection)\n } else {\n this.ready = createConnection()\n }\n }\n\n key (fileID) {\n return `${this.name}!${fileID}`\n }\n\n /**\n * List all file blobs currently in the store.\n */\n list () {\n return this.ready.then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.index('store')\n .getAll(IDBKeyRange.only(this.name))\n return waitForRequest(request)\n }).then((files) => {\n const result = {}\n files.forEach((file) => {\n result[file.fileID] = file.data\n })\n return result\n })\n }\n\n /**\n * Get one file blob from the store.\n */\n get (fileID) {\n return this.ready.then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readonly')\n const request = transaction.objectStore(STORE_NAME)\n .get(this.key(fileID))\n return waitForRequest(request)\n }).then((result) => ({\n id: result.data.fileID,\n data: result.data.data\n }))\n }\n\n /**\n * Get the total size of all stored files.\n *\n * @private\n */\n getSize () {\n return this.ready.then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readonly')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.index('store')\n .openCursor(IDBKeyRange.only(this.name))\n return new Promise((resolve, reject) => {\n let size = 0\n request.onsuccess = (event) => {\n const cursor = event.target.result\n if (cursor) {\n size += cursor.value.data.size\n cursor.continue()\n } else {\n resolve(size)\n }\n }\n request.onerror = () => {\n reject(new Error('Could not retrieve stored blobs size'))\n }\n })\n })\n }\n\n /**\n * Save a file in the store.\n */\n put (file) {\n if (file.data.size > this.opts.maxFileSize) {\n return Promise.reject(new Error('File is too big to store.'))\n }\n return this.getSize().then((size) => {\n if (size > this.opts.maxTotalSize) {\n return Promise.reject(new Error('No space left'))\n }\n return this.ready\n }).then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readwrite')\n const request = transaction.objectStore(STORE_NAME).add({\n id: this.key(file.id),\n fileID: file.id,\n store: this.name,\n expires: Date.now() + this.opts.expires,\n data: file.data\n })\n return waitForRequest(request)\n })\n }\n\n /**\n * Delete a file blob from the store.\n */\n delete (fileID) {\n return this.ready.then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readwrite')\n const request = transaction.objectStore(STORE_NAME)\n .delete(this.key(fileID))\n return waitForRequest(request)\n })\n }\n\n /**\n * Delete all stored blobs that have an expiry date that is before Date.now().\n * This is a static method because it deletes expired blobs from _all_ Uppy instances.\n */\n static cleanup () {\n return connect(DB_NAME).then((db) => {\n const transaction = db.transaction([STORE_NAME], 'readwrite')\n const store = transaction.objectStore(STORE_NAME)\n const request = store.index('expires')\n .openCursor(IDBKeyRange.upperBound(Date.now()))\n return new Promise((resolve, reject) => {\n request.onsuccess = (event) => {\n const cursor = event.target.result\n if (cursor) {\n const entry = cursor.value\n console.log(\n '[IndexedDBStore] Deleting record', entry.fileID,\n 'of size', prettyBytes(entry.data.size),\n '- expired on', new Date(entry.expires))\n cursor.delete() // Ignoring return value … it's not terrible if this goes wrong.\n cursor.continue()\n } else {\n resolve(db)\n }\n }\n request.onerror = reject\n })\n }).then((db) => {\n db.close()\n })\n }\n}\n\nIndexedDBStore.isSupported = isSupported\n\nmodule.exports = IndexedDBStore\n", "/**\n * Get uppy instance IDs for which state is stored.\n */\nfunction findUppyInstances () {\n const instances = []\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i)\n if (/^uppyState:/.test(key)) {\n instances.push(key.slice('uppyState:'.length))\n }\n }\n return instances\n}\n\n/**\n * Try to JSON-parse a string, return null on failure.\n */\nfunction maybeParse (str) {\n try {\n return JSON.parse(str)\n } catch (err) {\n return null\n }\n}\n\nlet cleanedUp = false\nmodule.exports = class MetaDataStore {\n constructor (opts) {\n this.opts = Object.assign({\n expires: 24 * 60 * 60 * 1000 // 24 hours\n }, opts)\n this.name = `uppyState:${opts.storeName}`\n\n if (!cleanedUp) {\n cleanedUp = true\n MetaDataStore.cleanup()\n }\n }\n\n /**\n *\n */\n load () {\n const savedState = localStorage.getItem(this.name)\n if (!savedState) return null\n const data = maybeParse(savedState)\n if (!data) return null\n\n // Upgrade pre-0.20.0 uppyState: it used to be just a flat object,\n // without `expires`.\n if (!data.metadata) {\n this.save(data)\n return data\n }\n\n return data.metadata\n }\n\n save (metadata) {\n const expires = Date.now() + this.opts.expires\n const state = JSON.stringify({\n metadata,\n expires\n })\n localStorage.setItem(this.name, state)\n }\n\n /**\n * Remove all expired state.\n */\n static cleanup () {\n const instanceIDs = findUppyInstances()\n const now = Date.now()\n instanceIDs.forEach((id) => {\n const data = localStorage.getItem(`uppyState:${id}`)\n if (!data) return null\n const obj = maybeParse(data)\n if (!obj) return null\n\n if (obj.expires && obj.expires < now) {\n localStorage.removeItem(`uppyState:${id}`)\n }\n })\n }\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000\nvar m = s * 60\nvar h = m * 60\nvar d = h * 24\nvar y = d * 365.25\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {}\n var type = typeof val\n if (type === 'string' && val.length > 0) {\n return parse(val)\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ?\n\t\t\tfmtLong(val) :\n\t\t\tfmtShort(val)\n }\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))\n}\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str)\n if (str.length > 10000) {\n return\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)\n if (!match) {\n return\n }\n var n = parseFloat(match[1])\n var type = (match[2] || 'ms').toLowerCase()\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y\n case 'days':\n case 'day':\n case 'd':\n return n * d\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n\n default:\n return undefined\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd'\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h'\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm'\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's'\n }\n return ms + 'ms'\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms'\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name\n }\n return Math.ceil(ms / n) + ' ' + name + 's'\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n", "\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n", "module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n", "/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n", "'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n", "/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n", "\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar hasBin = require('has-binary2');\nvar binary = require('./binary');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n if ((obj.type === exports.EVENT || obj.type === exports.ACK) && hasBin(obj.data)) {\n obj.type = obj.type === exports.EVENT ? exports.BINARY_EVENT : exports.BINARY_ACK;\n }\n\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = JSON.parse(str);\n } catch(e){\n return error();\n }\n return p; \n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error() {\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n", "\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = { type: parser.EVENT, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n", "\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n", "\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String} The decoded string.\n * @api private\n */\nfunction decode(input) {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n //\n // Little nifty parsing hack, leverage the fact that RegExp.exec increments\n // the lastIndex property so we can continue executing this loop until we've\n // parsed all results.\n //\n for (;\n part = parser.exec(query);\n result[decode(part[1])] = decode(part[2])\n );\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = [];\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (var key in obj) {\n if (has.call(obj, key)) {\n pairs.push(encodeURIComponent(key) +'='+ encodeURIComponent(obj[key]));\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n", "const Translator = require('../../core/Translator')\nconst Plugin = require('../../core/Plugin')\nconst Client = require('./Client')\nconst StatusSocket = require('./Socket')\n\nfunction defaultGetAssemblyOptions (file, options) {\n return {\n params: options.params,\n signature: options.signature,\n fields: options.fields\n }\n}\n\n/**\n * Upload files to Transloadit using Tus.\n */\nmodule.exports = class Transloadit extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'uploader'\n this.id = 'Transloadit'\n this.title = 'Transloadit'\n\n const defaultLocale = {\n strings: {\n creatingAssembly: 'Preparing upload...',\n creatingAssemblyFailed: 'Transloadit: Could not create assembly',\n encoding: 'Encoding...'\n }\n }\n\n const defaultOptions = {\n waitForEncoding: false,\n waitForMetadata: false,\n alwaysRunAssembly: false,\n importFromUploadURLs: false,\n signature: null,\n params: null,\n fields: {},\n getAssemblyOptions: defaultGetAssemblyOptions,\n locale: defaultLocale\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n this.translator = new Translator({ locale: this.locale })\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.prepareUpload = this.prepareUpload.bind(this)\n this.afterUpload = this.afterUpload.bind(this)\n this.onFileUploadURLAvailable = this.onFileUploadURLAvailable.bind(this)\n this.onRestored = this.onRestored.bind(this)\n this.getPersistentData = this.getPersistentData.bind(this)\n\n if (this.opts.params) {\n this.validateParams(this.opts.params)\n }\n\n this.client = new Client()\n this.sockets = {}\n }\n\n validateParams (params) {\n if (!params) {\n throw new Error('Transloadit: The `params` option is required.')\n }\n\n if (typeof params === 'string') {\n try {\n params = JSON.parse(params)\n } catch (err) {\n // Tell the user that this is not an Uppy bug!\n err.message = 'Transloadit: The `params` option is a malformed JSON string: ' +\n err.message\n throw err\n }\n }\n\n if (!params.auth || !params.auth.key) {\n throw new Error('Transloadit: The `params.auth.key` option is required. ' +\n 'You can find your Transloadit API key at https://transloadit.com/accounts/credentials.')\n }\n }\n\n getAssemblyOptions (fileIDs) {\n const options = this.opts\n return Promise.all(\n fileIDs.map((fileID) => {\n const file = this.uppy.getFile(fileID)\n const promise = Promise.resolve()\n .then(() => options.getAssemblyOptions(file, options))\n return promise.then((assemblyOptions) => {\n this.validateParams(assemblyOptions.params)\n\n return {\n fileIDs: [fileID],\n options: assemblyOptions\n }\n })\n })\n )\n }\n\n dedupeAssemblyOptions (list) {\n const dedupeMap = Object.create(null)\n list.forEach(({ fileIDs, options }) => {\n const id = JSON.stringify(options)\n if (dedupeMap[id]) {\n dedupeMap[id].fileIDs.push(...fileIDs)\n } else {\n dedupeMap[id] = {\n options,\n fileIDs: [...fileIDs]\n }\n }\n })\n\n return Object.keys(dedupeMap).map((id) => dedupeMap[id])\n }\n\n createAssembly (fileIDs, uploadID, options) {\n const pluginOptions = this.opts\n\n this.uppy.log('[Transloadit] create assembly')\n\n return this.client.createAssembly({\n params: options.params,\n fields: options.fields,\n expectedFiles: fileIDs.length,\n signature: options.signature\n }).then((assembly) => {\n // Store the list of assemblies related to this upload.\n const state = this.getPluginState()\n const assemblyList = state.uploadsAssemblies[uploadID]\n const uploadsAssemblies = Object.assign({}, state.uploadsAssemblies, {\n [uploadID]: assemblyList.concat([ assembly.assembly_id ])\n })\n\n this.setPluginState({\n assemblies: Object.assign(state.assemblies, {\n [assembly.assembly_id]: assembly\n }),\n uploadsAssemblies\n })\n\n function attachAssemblyMetadata (file, assembly) {\n // Attach meta parameters for the Tus plugin. See:\n // https://github.com/tus/tusd/wiki/Uploading-to-Transloadit-using-tus#uploading-using-tus\n // TODO Should this `meta` be moved to a `tus.meta` property instead?\n const tlMeta = {\n assembly_url: assembly.assembly_url,\n filename: file.name,\n fieldname: 'file'\n }\n const meta = Object.assign({}, file.meta, tlMeta)\n // Add assembly-specific Tus endpoint.\n const tus = Object.assign({}, file.tus, {\n endpoint: assembly.tus_url,\n // Only send assembly metadata to the tus endpoint.\n metaFields: Object.keys(tlMeta),\n // Make sure tus doesn't resume a previous upload.\n uploadUrl: null,\n // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times\n // will upload to the same assembly.\n resume: false\n })\n const transloadit = {\n assembly: assembly.assembly_id\n }\n\n const newFile = Object.assign({}, file, { transloadit })\n // Only configure the Tus plugin if we are uploading straight to Transloadit (the default).\n if (!pluginOptions.importFromUploadURLs) {\n Object.assign(newFile, { meta, tus })\n }\n return newFile\n }\n\n const files = Object.assign({}, this.uppy.state.files)\n fileIDs.forEach((id) => {\n files[id] = attachAssemblyMetadata(files[id], assembly)\n })\n\n this.uppy.setState({ files })\n\n this.uppy.emit('transloadit:assembly-created', assembly, fileIDs)\n\n return this.connectSocket(assembly)\n .then(() => assembly)\n }).then((assembly) => {\n this.uppy.log('[Transloadit] Created assembly')\n return assembly\n }).catch((err) => {\n this.uppy.info(this.i18n('creatingAssemblyFailed'), 'error', 0)\n\n // Reject the promise.\n throw err\n })\n }\n\n shouldWait () {\n return this.opts.waitForEncoding || this.opts.waitForMetadata\n }\n\n /**\n * Used when `importFromUploadURLs` is enabled: reserves all files in\n * the assembly.\n */\n reserveFiles (assembly, fileIDs) {\n return Promise.all(fileIDs.map((fileID) => {\n const file = this.uppy.getFile(fileID)\n return this.client.reserveFile(assembly, file)\n }))\n }\n\n /**\n * Used when `importFromUploadURLs` is enabled: adds files to the assembly\n * once they have been fully uploaded.\n */\n onFileUploadURLAvailable (fileID) {\n const file = this.uppy.getFile(fileID)\n if (!file || !file.transloadit || !file.transloadit.assembly) {\n return\n }\n\n const state = this.getPluginState()\n const assembly = state.assemblies[file.transloadit.assembly]\n\n this.client.addFile(assembly, file).catch((err) => {\n this.uppy.log(err)\n this.uppy.emit('transloadit:import-error', assembly, file.id, err)\n })\n }\n\n findFile (uploadedFile) {\n const files = this.uppy.state.files\n for (const id in files) {\n if (!files.hasOwnProperty(id)) {\n continue\n }\n // Completed file upload.\n if (files[id].uploadURL === uploadedFile.tus_upload_url) {\n return files[id]\n }\n // In-progress file upload.\n if (files[id].tus && files[id].tus.uploadUrl === uploadedFile.tus_upload_url) {\n return files[id]\n }\n if (!uploadedFile.is_tus_file) {\n // Fingers-crossed check for non-tus uploads, eg imported from S3.\n if (files[id].name === uploadedFile.name && files[id].size === uploadedFile.size) {\n return files[id]\n }\n }\n }\n }\n\n onFileUploadComplete (assemblyId, uploadedFile) {\n const state = this.getPluginState()\n const file = this.findFile(uploadedFile)\n this.setPluginState({\n files: Object.assign({}, state.files, {\n [uploadedFile.id]: {\n assembly: assemblyId,\n id: file.id,\n uploadedFile\n }\n })\n })\n this.uppy.emit('transloadit:upload', uploadedFile, this.getAssembly(assemblyId))\n }\n\n onResult (assemblyId, stepName, result) {\n const state = this.getPluginState()\n const file = state.files[result.original_id]\n // The `file` may not exist if an import robot was used instead of a file upload.\n result.localId = file ? file.id : null\n\n const entry = {\n result,\n stepName,\n id: result.id,\n assembly: assemblyId\n }\n\n this.setPluginState({\n results: [...state.results, entry]\n })\n this.uppy.emit('transloadit:result', stepName, result, this.getAssembly(assemblyId))\n }\n\n onAssemblyFinished (url) {\n this.client.getAssemblyStatus(url).then((assembly) => {\n const state = this.getPluginState()\n this.setPluginState({\n assemblies: Object.assign({}, state.assemblies, {\n [assembly.assembly_id]: assembly\n })\n })\n this.uppy.emit('transloadit:complete', assembly)\n })\n }\n\n getPersistentData (setData) {\n const state = this.getPluginState()\n const assemblies = state.assemblies\n const uploadsAssemblies = state.uploadsAssemblies\n const uploads = Object.keys(state.files)\n const results = state.results.map((result) => result.id)\n\n setData({\n [this.id]: {\n assemblies,\n uploadsAssemblies,\n uploads,\n results\n }\n })\n }\n\n /**\n * Emit the necessary events that must have occured to get from the `prevState`,\n * to the current state.\n * For completed uploads, `transloadit:upload` is emitted.\n * For new results, `transloadit:result` is emitted.\n * For completed or errored assemblies, `transloadit:complete` or `transloadit:assembly-error` is emitted.\n */\n emitEventsDiff (prevState) {\n const opts = this.opts\n const state = this.getPluginState()\n\n const emitMissedEvents = () => {\n // Emit events for completed uploads and completed results\n // that we've missed while we were away.\n const newUploads = Object.keys(state.files).filter((fileID) => {\n return !prevState.files.hasOwnProperty(fileID)\n }).map((fileID) => state.files[fileID])\n const newResults = state.results.filter((result) => {\n return !prevState.results.some((prev) => prev.id === result.id)\n })\n\n this.uppy.log('[Transloadit] New fully uploaded files since restore:')\n this.uppy.log(newUploads)\n newUploads.forEach(({ assembly, uploadedFile }) => {\n this.uppy.log(`[Transloadit] emitting transloadit:upload ${uploadedFile.id}`)\n this.uppy.emit('transloadit:upload', uploadedFile, this.getAssembly(assembly))\n })\n this.uppy.log('[Transloadit] New results since restore:')\n this.uppy.log(newResults)\n newResults.forEach(({ assembly, stepName, result, id }) => {\n this.uppy.log(`[Transloadit] emitting transloadit:result ${stepName}, ${id}`)\n this.uppy.emit('transloadit:result', stepName, result, this.getAssembly(assembly))\n })\n\n const newAssemblies = state.assemblies\n const previousAssemblies = prevState.assemblies\n this.uppy.log('[Transloadit] Current assembly status after restore')\n this.uppy.log(newAssemblies)\n this.uppy.log('[Transloadit] Assembly status before restore')\n this.uppy.log(previousAssemblies)\n Object.keys(newAssemblies).forEach((assemblyId) => {\n const oldAssembly = previousAssemblies[assemblyId]\n diffAssemblyStatus(oldAssembly, newAssemblies[assemblyId])\n })\n }\n\n // Emit events for assemblies that have completed or errored while we were away.\n const diffAssemblyStatus = (prev, next) => {\n this.uppy.log('[Transloadit] Diff assemblies')\n this.uppy.log(prev)\n this.uppy.log(next)\n\n if (opts.waitForEncoding && next.ok === 'ASSEMBLY_COMPLETED' && prev.ok !== 'ASSEMBLY_COMPLETED') {\n this.uppy.log(`[Transloadit] Emitting transloadit:complete for ${next.assembly_id}`)\n this.uppy.log(next)\n this.uppy.emit('transloadit:complete', next)\n } else if (opts.waitForMetadata && next.upload_meta_data_extracted && !prev.upload_meta_data_extracted) {\n this.uppy.log(`[Transloadit] Emitting transloadit:complete after metadata extraction for ${next.assembly_id}`)\n this.uppy.log(next)\n this.uppy.emit('transloadit:complete', next)\n }\n\n if (next.error && !prev.error) {\n this.uppy.log(`[Transloadit] !!! Emitting transloadit:assembly-error for ${next.assembly_id}`)\n this.uppy.log(next)\n this.uppy.emit('transloadit:assembly-error', next, new Error(next.message))\n }\n }\n\n emitMissedEvents()\n }\n\n onRestored (pluginData) {\n const savedState = pluginData && pluginData[this.id] ? pluginData[this.id] : {}\n const knownUploads = savedState.files || []\n const knownResults = savedState.results || []\n const previousAssemblies = savedState.assemblies || {}\n const uploadsAssemblies = savedState.uploadsAssemblies || {}\n\n if (Object.keys(uploadsAssemblies).length === 0) {\n // Nothing to restore.\n return\n }\n\n // Fetch up-to-date assembly statuses.\n const loadAssemblies = () => {\n const assemblyIDs = []\n Object.keys(uploadsAssemblies).forEach((uploadID) => {\n assemblyIDs.push(...uploadsAssemblies[uploadID])\n })\n\n return Promise.all(\n assemblyIDs.map((assemblyID) => {\n const url = `https://api2.transloadit.com/assemblies/${assemblyID}`\n return this.client.getAssemblyStatus(url)\n })\n )\n }\n\n const reconnectSockets = (assemblies) => {\n return Promise.all(assemblies.map((assembly) => {\n // No need to connect to the socket if the assembly has completed by now.\n if (assembly.ok === 'ASSEMBLY_COMPLETE') {\n return null\n }\n return this.connectSocket(assembly)\n }))\n }\n\n // Convert loaded assembly statuses to a Transloadit plugin state object.\n const restoreState = (assemblies) => {\n const assembliesById = {}\n const files = {}\n const results = []\n assemblies.forEach((assembly) => {\n assembliesById[assembly.assembly_id] = assembly\n\n assembly.uploads.forEach((uploadedFile) => {\n const file = this.findFile(uploadedFile)\n files[uploadedFile.id] = {\n id: file.id,\n assembly: assembly.assembly_id,\n uploadedFile\n }\n })\n\n const state = this.getPluginState()\n Object.keys(assembly.results).forEach((stepName) => {\n assembly.results[stepName].forEach((result) => {\n const file = state.files[result.original_id]\n result.localId = file ? file.id : null\n results.push({\n id: result.id,\n result,\n stepName,\n assembly: assembly.assembly_id\n })\n })\n })\n })\n\n this.setPluginState({\n assemblies: assembliesById,\n files: files,\n results: results,\n uploadsAssemblies: uploadsAssemblies\n })\n }\n\n // Restore all assembly state.\n this.restored = Promise.resolve()\n .then(loadAssemblies)\n .then((assemblies) => {\n restoreState(assemblies)\n return reconnectSockets(assemblies)\n })\n .then(() => {\n // Return a callback that will be called by `afterUpload`\n // once it has attached event listeners etc.\n const newState = this.getPluginState()\n const previousFiles = {}\n knownUploads.forEach((id) => {\n previousFiles[id] = newState.files[id]\n })\n return () => this.emitEventsDiff({\n assemblies: previousAssemblies,\n files: previousFiles,\n results: newState.results.filter(({ id }) => knownResults.indexOf(id) !== -1),\n uploadsAssemblies\n })\n })\n\n this.restored.then(() => {\n this.restored = null\n })\n }\n\n connectSocket (assembly) {\n const socket = new StatusSocket(\n assembly.websocket_url,\n assembly\n )\n this.sockets[assembly.assembly_id] = socket\n\n socket.on('upload', this.onFileUploadComplete.bind(this, assembly.assembly_id))\n socket.on('error', (error) => {\n this.uppy.emit('transloadit:assembly-error', assembly, error)\n })\n\n socket.on('executing', () => {\n this.uppy.emit('transloadit:assembly-executing', assembly)\n })\n\n if (this.opts.waitForEncoding) {\n socket.on('result', this.onResult.bind(this, assembly.assembly_id))\n }\n\n if (this.opts.waitForEncoding) {\n socket.on('finished', () => {\n this.onAssemblyFinished(assembly.assembly_ssl_url)\n })\n } else if (this.opts.waitForMetadata) {\n socket.on('metadata', () => {\n this.onAssemblyFinished(assembly.assembly_ssl_url)\n })\n }\n\n return new Promise((resolve, reject) => {\n socket.on('connect', resolve)\n socket.on('error', reject)\n }).then(() => {\n this.uppy.log('[Transloadit] Socket is ready')\n })\n }\n\n prepareUpload (fileIDs, uploadID) {\n // Only use files without errors\n fileIDs = fileIDs.filter((file) => !file.error)\n\n fileIDs.forEach((fileID) => {\n this.uppy.emit('preprocess-progress', fileID, {\n mode: 'indeterminate',\n message: this.i18n('creatingAssembly')\n })\n })\n\n const createAssembly = ({ fileIDs, options }) => {\n return this.createAssembly(fileIDs, uploadID, options).then((assembly) => {\n if (this.opts.importFromUploadURLs) {\n return this.reserveFiles(assembly, fileIDs)\n }\n }).then(() => {\n fileIDs.forEach((fileID) => {\n this.uppy.emit('preprocess-complete', fileID)\n })\n })\n }\n\n const state = this.getPluginState()\n const uploadsAssemblies = Object.assign({},\n state.uploadsAssemblies,\n { [uploadID]: [] })\n this.setPluginState({ uploadsAssemblies })\n\n let optionsPromise\n if (fileIDs.length > 0) {\n optionsPromise = this.getAssemblyOptions(fileIDs)\n .then((allOptions) => this.dedupeAssemblyOptions(allOptions))\n } else if (this.opts.alwaysRunAssembly) {\n optionsPromise = Promise.resolve(\n this.opts.getAssemblyOptions(null, this.opts)\n ).then((options) => {\n this.validateParams(options.params)\n return [\n { fileIDs, options }\n ]\n })\n } else {\n // If there are no files and we do not `alwaysRunAssembly`,\n // don't do anything.\n return Promise.resolve()\n }\n\n return optionsPromise.then((assemblies) => Promise.all(\n assemblies.map(createAssembly)\n ))\n }\n\n afterUpload (fileIDs, uploadID) {\n // Only use files without errors\n fileIDs = fileIDs.filter((file) => !file.error)\n\n const state = this.getPluginState()\n\n // If we're still restoring state, wait for that to be done.\n if (this.restored) {\n return this.restored.then((emitMissedEvents) => {\n const promise = this.afterUpload(fileIDs, uploadID)\n emitMissedEvents()\n return promise\n })\n }\n\n const assemblyIDs = state.uploadsAssemblies[uploadID]\n\n // If we don't have to wait for encoding metadata or results, we can close\n // the socket immediately and finish the upload.\n if (!this.shouldWait()) {\n assemblyIDs.forEach((assemblyID) => {\n const socket = this.sockets[assemblyID]\n socket.close()\n })\n const assemblies = assemblyIDs.map((id) => this.getAssembly(id))\n this.uppy.addResultData(uploadID, { transloadit: assemblies })\n return Promise.resolve()\n }\n\n // If no assemblies were created for this upload, we also do not have to wait.\n // There's also no sockets or anything to close, so just return immediately.\n if (assemblyIDs.length === 0) {\n this.uppy.addResultData(uploadID, { transloadit: [] })\n return Promise.resolve()\n }\n\n let finishedAssemblies = 0\n\n return new Promise((resolve, reject) => {\n fileIDs.forEach((fileID) => {\n this.uppy.emit('postprocess-progress', fileID, {\n mode: 'indeterminate',\n message: this.i18n('encoding')\n })\n })\n\n const onAssemblyFinished = (assembly) => {\n // An assembly for a different upload just finished. We can ignore it.\n if (assemblyIDs.indexOf(assembly.assembly_id) === -1) {\n this.uppy.log(`[Transloadit] afterUpload(): Ignoring finished assembly ${assembly.assembly_id}`)\n return\n }\n this.uppy.log(`[Transloadit] afterUpload(): Got assembly finish ${assembly.assembly_id}`)\n\n // TODO set the `file.uploadURL` to a result?\n // We will probably need an option here so the plugin user can tell us\n // which result to pick…?\n\n const files = this.getAssemblyFiles(assembly.assembly_id)\n files.forEach((file) => {\n this.uppy.emit('postprocess-complete', file.id)\n })\n\n checkAllComplete()\n }\n\n const onAssemblyError = (assembly, error) => {\n // An assembly for a different upload just errored. We can ignore it.\n if (assemblyIDs.indexOf(assembly.assembly_id) === -1) {\n this.uppy.log(`[Transloadit] afterUpload(): Ignoring errored assembly ${assembly.assembly_id}`)\n return\n }\n this.uppy.log(`[Transloadit] afterUpload(): Got assembly error ${assembly.assembly_id}`)\n this.uppy.log(error)\n\n // Clear postprocessing state for all our files.\n const files = this.getAssemblyFiles(assembly.assembly_id)\n files.forEach((file) => {\n // TODO Maybe make a postprocess-error event here?\n this.uppy.emit('upload-error', file.id, error)\n\n this.uppy.emit('postprocess-complete', file.id)\n })\n\n checkAllComplete()\n }\n\n const onImportError = (assembly, fileID, error) => {\n if (assemblyIDs.indexOf(assembly.assembly_id) === -1) {\n return\n }\n\n // Not sure if we should be doing something when it's just one file failing.\n // ATM, the only options are 1) ignoring or 2) failing the entire upload.\n // I think failing the upload is better than silently ignoring.\n // In the future we should maybe have a way to resolve uploads with some failures,\n // like returning an object with `{ successful, failed }` uploads.\n onAssemblyError(assembly, error)\n }\n\n const checkAllComplete = () => {\n finishedAssemblies += 1\n if (finishedAssemblies === assemblyIDs.length) {\n // We're done, these listeners can be removed\n removeListeners()\n const assemblies = assemblyIDs.map((id) => this.getAssembly(id))\n this.uppy.addResultData(uploadID, { transloadit: assemblies })\n resolve()\n }\n }\n\n const removeListeners = () => {\n this.uppy.off('transloadit:complete', onAssemblyFinished)\n this.uppy.off('transloadit:assembly-error', onAssemblyError)\n this.uppy.off('transloadit:import-error', onImportError)\n }\n\n this.uppy.on('transloadit:complete', onAssemblyFinished)\n this.uppy.on('transloadit:assembly-error', onAssemblyError)\n this.uppy.on('transloadit:import-error', onImportError)\n }).then((result) => {\n // Clean up uploadID → assemblyIDs, they're no longer going to be used anywhere.\n const state = this.getPluginState()\n const uploadsAssemblies = Object.assign({}, state.uploadsAssemblies)\n delete uploadsAssemblies[uploadID]\n this.setPluginState({ uploadsAssemblies })\n\n return result\n })\n }\n\n install () {\n this.uppy.addPreProcessor(this.prepareUpload)\n this.uppy.addPostProcessor(this.afterUpload)\n\n if (this.opts.importFromUploadURLs) {\n this.uppy.on('upload-success', this.onFileUploadURLAvailable)\n }\n\n this.uppy.on('restore:get-data', this.getPersistentData)\n this.uppy.on('restored', this.onRestored)\n\n this.setPluginState({\n // Contains assembly status objects, indexed by their ID.\n assemblies: {},\n // Contains arrays of assembly IDs, indexed by the upload ID that they belong to.\n uploadsAssemblies: {},\n // Contains file data from Transloadit, indexed by their Transloadit-assigned ID.\n files: {},\n // Contains result data from Transloadit.\n results: []\n })\n }\n\n uninstall () {\n this.uppy.removePreProcessor(this.prepareUpload)\n this.uppy.removePostProcessor(this.afterUpload)\n\n if (this.opts.importFromUploadURLs) {\n this.uppy.off('upload-success', this.onFileUploadURLAvailable)\n }\n }\n\n getAssembly (id) {\n const state = this.getPluginState()\n return state.assemblies[id]\n }\n\n getAssemblyFiles (assemblyID) {\n const fileIDs = Object.keys(this.uppy.state.files)\n return fileIDs.map((fileID) => {\n return this.uppy.getFile(fileID)\n }).filter((file) => {\n return file && file.transloadit && file.transloadit.assembly === assemblyID\n })\n }\n}\n", "// Generated by Babel\n\"use strict\";\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global window */\n\n\n// We import the files used inside the Node environment which are rewritten\n// for browsers using the rules defined in the package.json\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _fingerprint = require(\"./fingerprint\");\n\nvar _fingerprint2 = _interopRequireDefault(_fingerprint);\n\nvar _error = require(\"./error\");\n\nvar _error2 = _interopRequireDefault(_error);\n\nvar _extend = require(\"extend\");\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _request = require(\"./node/request\");\n\nvar _source = require(\"./node/source\");\n\nvar _base = require(\"./node/base64\");\n\nvar Base64 = _interopRequireWildcard(_base);\n\nvar _storage = require(\"./node/storage\");\n\nvar Storage = _interopRequireWildcard(_storage);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultOptions = {\n endpoint: \"\",\n fingerprint: _fingerprint2.default,\n resume: true,\n onProgress: null,\n onChunkComplete: null,\n onSuccess: null,\n onError: null,\n headers: {},\n chunkSize: Infinity,\n withCredentials: false,\n uploadUrl: null,\n uploadSize: null,\n overridePatchMethod: false,\n retryDelays: null\n};\n\nvar Upload = function () {\n function Upload(file, options) {\n _classCallCheck(this, Upload);\n\n this.options = (0, _extend2.default)(true, {}, defaultOptions, options);\n\n // The underlying File/Blob object\n this.file = file;\n\n // The URL against which the file will be uploaded\n this.url = null;\n\n // The underlying XHR object for the current PATCH request\n this._xhr = null;\n\n // The fingerpinrt for the current file (set after start())\n this._fingerprint = null;\n\n // The offset used in the current PATCH request\n this._offset = null;\n\n // True if the current PATCH request has been aborted\n this._aborted = false;\n\n // The file's size in bytes\n this._size = null;\n\n // The Source object which will wrap around the given file and provides us\n // with a unified interface for getting its size and slice chunks from its\n // content allowing us to easily handle Files, Blobs, Buffers and Streams.\n this._source = null;\n\n // The current count of attempts which have been made. Null indicates none.\n this._retryAttempt = 0;\n\n // The timeout's ID which is used to delay the next retry\n this._retryTimeout = null;\n\n // The offset of the remote upload before the latest attempt was started.\n this._offsetBeforeRetry = 0;\n }\n\n _createClass(Upload, [{\n key: \"start\",\n value: function start() {\n var _this = this;\n\n var file = this.file;\n\n if (!file) {\n this._emitError(new Error(\"tus: no file or stream to upload provided\"));\n return;\n }\n\n if (!this.options.endpoint) {\n this._emitError(new Error(\"tus: no endpoint provided\"));\n return;\n }\n\n var source = this._source = (0, _source.getSource)(file, this.options.chunkSize);\n\n // Firstly, check if the caller has supplied a manual upload size or else\n // we will use the calculated size by the source object.\n if (this.options.uploadSize != null) {\n var size = +this.options.uploadSize;\n if (isNaN(size)) {\n throw new Error(\"tus: cannot convert `uploadSize` option into a number\");\n }\n\n this._size = size;\n } else {\n var size = source.size;\n\n // The size property will be null if we cannot calculate the file's size,\n // for example if you handle a stream.\n if (size == null) {\n throw new Error(\"tus: cannot automatically derive upload's size from input and must be specified manually using the `uploadSize` option\");\n }\n\n this._size = size;\n }\n\n var retryDelays = this.options.retryDelays;\n if (retryDelays != null) {\n if (Object.prototype.toString.call(retryDelays) !== \"[object Array]\") {\n throw new Error(\"tus: the `retryDelays` option must either be an array or null\");\n } else {\n (function () {\n var errorCallback = _this.options.onError;\n _this.options.onError = function (err) {\n // Restore the original error callback which may have been set.\n _this.options.onError = errorCallback;\n\n // We will reset the attempt counter if\n // - we were already able to connect to the server (offset != null) and\n // - we were able to upload a small chunk of data to the server\n var shouldResetDelays = _this._offset != null && _this._offset > _this._offsetBeforeRetry;\n if (shouldResetDelays) {\n _this._retryAttempt = 0;\n }\n\n var isOnline = true;\n if (typeof window !== \"undefined\" && \"navigator\" in window && window.navigator.onLine === false) {\n isOnline = false;\n }\n\n // We only attempt a retry if\n // - we didn't exceed the maxium number of retries, yet, and\n // - this error was caused by a request or it's response and\n // - the error is not a client error (status 4xx) and\n // - the browser does not indicate that we are offline\n var shouldRetry = _this._retryAttempt < retryDelays.length && err.originalRequest != null && !inStatusCategory(err.originalRequest.status, 400) && isOnline;\n\n if (!shouldRetry) {\n _this._emitError(err);\n return;\n }\n\n var delay = retryDelays[_this._retryAttempt++];\n\n _this._offsetBeforeRetry = _this._offset;\n _this.options.uploadUrl = _this.url;\n\n _this._retryTimeout = setTimeout(function () {\n _this.start();\n }, delay);\n };\n })();\n }\n }\n\n // Reset the aborted flag when the upload is started or else the\n // _startUpload will stop before sending a request if the upload has been\n // aborted previously.\n this._aborted = false;\n\n // The upload had been started previously and we should reuse this URL.\n if (this.url != null) {\n this._resumeUpload();\n return;\n }\n\n // A URL has manually been specified, so we try to resume\n if (this.options.uploadUrl != null) {\n this.url = this.options.uploadUrl;\n this._resumeUpload();\n return;\n }\n\n // Try to find the endpoint for the file in the storage\n if (this.options.resume) {\n this._fingerprint = this.options.fingerprint(file);\n var resumedUrl = Storage.getItem(this._fingerprint);\n\n if (resumedUrl != null) {\n this.url = resumedUrl;\n this._resumeUpload();\n return;\n }\n }\n\n // An upload has not started for the file yet, so we start a new one\n this._createUpload();\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (this._xhr !== null) {\n this._xhr.abort();\n this._source.close();\n this._aborted = true;\n }\n\n if (this._retryTimeout != null) {\n clearTimeout(this._retryTimeout);\n this._retryTimeout = null;\n }\n }\n }, {\n key: \"_emitXhrError\",\n value: function _emitXhrError(xhr, err, causingErr) {\n this._emitError(new _error2.default(err, causingErr, xhr));\n }\n }, {\n key: \"_emitError\",\n value: function _emitError(err) {\n if (typeof this.options.onError === \"function\") {\n this.options.onError(err);\n } else {\n throw err;\n }\n }\n }, {\n key: \"_emitSuccess\",\n value: function _emitSuccess() {\n if (typeof this.options.onSuccess === \"function\") {\n this.options.onSuccess();\n }\n }\n\n /**\n * Publishes notification when data has been sent to the server. This\n * data may not have been accepted by the server yet.\n * @param {number} bytesSent Number of bytes sent to the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n */\n\n }, {\n key: \"_emitProgress\",\n value: function _emitProgress(bytesSent, bytesTotal) {\n if (typeof this.options.onProgress === \"function\") {\n this.options.onProgress(bytesSent, bytesTotal);\n }\n }\n\n /**\n * Publishes notification when a chunk of data has been sent to the server\n * and accepted by the server.\n * @param {number} chunkSize Size of the chunk that was accepted by the\n * server.\n * @param {number} bytesAccepted Total number of bytes that have been\n * accepted by the server.\n * @param {number} bytesTotal Total number of bytes to be sent to the server.\n */\n\n }, {\n key: \"_emitChunkComplete\",\n value: function _emitChunkComplete(chunkSize, bytesAccepted, bytesTotal) {\n if (typeof this.options.onChunkComplete === \"function\") {\n this.options.onChunkComplete(chunkSize, bytesAccepted, bytesTotal);\n }\n }\n\n /**\n * Set the headers used in the request and the withCredentials property\n * as defined in the options\n *\n * @param {XMLHttpRequest} xhr\n */\n\n }, {\n key: \"_setupXHR\",\n value: function _setupXHR(xhr) {\n this._xhr = xhr;\n\n xhr.setRequestHeader(\"Tus-Resumable\", \"1.0.0\");\n var headers = this.options.headers;\n\n for (var name in headers) {\n xhr.setRequestHeader(name, headers[name]);\n }\n\n xhr.withCredentials = this.options.withCredentials;\n }\n\n /**\n * Create a new upload using the creation extension by sending a POST\n * request to the endpoint. After successful creation the file will be\n * uploaded\n *\n * @api private\n */\n\n }, {\n key: \"_createUpload\",\n value: function _createUpload() {\n var _this2 = this;\n\n var xhr = (0, _request.newRequest)();\n xhr.open(\"POST\", this.options.endpoint, true);\n\n xhr.onload = function () {\n if (!inStatusCategory(xhr.status, 200)) {\n _this2._emitXhrError(xhr, new Error(\"tus: unexpected response while creating upload\"));\n return;\n }\n\n var location = xhr.getResponseHeader(\"Location\");\n if (location == null) {\n _this2._emitXhrError(xhr, new Error(\"tus: invalid or missing Location header\"));\n return;\n }\n\n _this2.url = (0, _request.resolveUrl)(_this2.options.endpoint, location);\n\n if (_this2.options.resume) {\n Storage.setItem(_this2._fingerprint, _this2.url);\n }\n\n _this2._offset = 0;\n _this2._startUpload();\n };\n\n xhr.onerror = function (err) {\n _this2._emitXhrError(xhr, new Error(\"tus: failed to create upload\"), err);\n };\n\n this._setupXHR(xhr);\n xhr.setRequestHeader(\"Upload-Length\", this._size);\n\n // Add metadata if values have been added\n var metadata = encodeMetadata(this.options.metadata);\n if (metadata !== \"\") {\n xhr.setRequestHeader(\"Upload-Metadata\", metadata);\n }\n\n xhr.send(null);\n }\n\n /*\n * Try to resume an existing upload. First a HEAD request will be sent\n * to retrieve the offset. If the request fails a new upload will be\n * created. In the case of a successful response the file will be uploaded.\n *\n * @api private\n */\n\n }, {\n key: \"_resumeUpload\",\n value: function _resumeUpload() {\n var _this3 = this;\n\n var xhr = (0, _request.newRequest)();\n xhr.open(\"HEAD\", this.url, true);\n\n xhr.onload = function () {\n if (!inStatusCategory(xhr.status, 200)) {\n if (_this3.options.resume && inStatusCategory(xhr.status, 400)) {\n // Remove stored fingerprint and corresponding endpoint,\n // on client errors since the file can not be found\n Storage.removeItem(_this3._fingerprint);\n }\n\n // If the upload is locked (indicated by the 423 Locked status code), we\n // emit an error instead of directly starting a new upload. This way the\n // retry logic can catch the error and will retry the upload. An upload\n // is usually locked for a short period of time and will be available\n // afterwards.\n if (xhr.status === 423) {\n _this3._emitXhrError(xhr, new Error(\"tus: upload is currently locked; retry later\"));\n return;\n }\n\n // Try to create a new upload\n _this3.url = null;\n _this3._createUpload();\n return;\n }\n\n var offset = parseInt(xhr.getResponseHeader(\"Upload-Offset\"), 10);\n if (isNaN(offset)) {\n _this3._emitXhrError(xhr, new Error(\"tus: invalid or missing offset value\"));\n return;\n }\n\n var length = parseInt(xhr.getResponseHeader(\"Upload-Length\"), 10);\n if (isNaN(length)) {\n _this3._emitXhrError(xhr, new Error(\"tus: invalid or missing length value\"));\n return;\n }\n\n // Upload has already been completed and we do not need to send additional\n // data to the server\n if (offset === length) {\n _this3._emitProgress(length, length);\n _this3._emitSuccess();\n return;\n }\n\n _this3._offset = offset;\n _this3._startUpload();\n };\n\n xhr.onerror = function (err) {\n _this3._emitXhrError(xhr, new Error(\"tus: failed to resume upload\"), err);\n };\n\n this._setupXHR(xhr);\n xhr.send(null);\n }\n\n /**\n * Start uploading the file using PATCH requests. The file will be divided\n * into chunks as specified in the chunkSize option. During the upload\n * the onProgress event handler may be invoked multiple times.\n *\n * @api private\n */\n\n }, {\n key: \"_startUpload\",\n value: function _startUpload() {\n var _this4 = this;\n\n // If the upload has been aborted, we will not send the next PATCH request.\n // This is important if the abort method was called during a callback, such\n // as onChunkComplete or onProgress.\n if (this._aborted) {\n return;\n }\n\n var xhr = (0, _request.newRequest)();\n\n // Some browser and servers may not support the PATCH method. For those\n // cases, you can tell tus-js-client to use a POST request with the\n // X-HTTP-Method-Override header for simulating a PATCH request.\n if (this.options.overridePatchMethod) {\n xhr.open(\"POST\", this.url, true);\n xhr.setRequestHeader(\"X-HTTP-Method-Override\", \"PATCH\");\n } else {\n xhr.open(\"PATCH\", this.url, true);\n }\n\n xhr.onload = function () {\n if (!inStatusCategory(xhr.status, 200)) {\n _this4._emitXhrError(xhr, new Error(\"tus: unexpected response while uploading chunk\"));\n return;\n }\n\n var offset = parseInt(xhr.getResponseHeader(\"Upload-Offset\"), 10);\n if (isNaN(offset)) {\n _this4._emitXhrError(xhr, new Error(\"tus: invalid or missing offset value\"));\n return;\n }\n\n _this4._emitProgress(offset, _this4._size);\n _this4._emitChunkComplete(offset - _this4._offset, offset, _this4._size);\n\n _this4._offset = offset;\n\n if (offset == _this4._size) {\n // Yay, finally done :)\n _this4._emitSuccess();\n _this4._source.close();\n return;\n }\n\n _this4._startUpload();\n };\n\n xhr.onerror = function (err) {\n // Don't emit an error if the upload was aborted manually\n if (_this4._aborted) {\n return;\n }\n\n _this4._emitXhrError(xhr, new Error(\"tus: failed to upload chunk at offset \" + _this4._offset), err);\n };\n\n // Test support for progress events before attaching an event listener\n if (\"upload\" in xhr) {\n xhr.upload.onprogress = function (e) {\n if (!e.lengthComputable) {\n return;\n }\n\n _this4._emitProgress(start + e.loaded, _this4._size);\n };\n }\n\n this._setupXHR(xhr);\n\n xhr.setRequestHeader(\"Upload-Offset\", this._offset);\n xhr.setRequestHeader(\"Content-Type\", \"application/offset+octet-stream\");\n\n var start = this._offset;\n var end = this._offset + this.options.chunkSize;\n\n // The specified chunkSize may be Infinity or the calcluated end position\n // may exceed the file's size. In both cases, we limit the end position to\n // the input's total size for simpler calculations and correctness.\n if (end === Infinity || end > this._size) {\n end = this._size;\n }\n\n xhr.send(this._source.slice(start, end));\n\n // Emit an progress event when a new chunk begins being uploaded.\n this._emitProgress(this._offset, this._size);\n }\n }]);\n\n return Upload;\n}();\n\nfunction encodeMetadata(metadata) {\n if (!Base64.isSupported) {\n return \"\";\n }\n\n var encoded = [];\n\n for (var key in metadata) {\n encoded.push(key + \" \" + Base64.encode(metadata[key]));\n }\n\n return encoded.join(\",\");\n}\n\n/**\n * Checks whether a given status is in the range of the expected category.\n * For example, only a status between 200 and 299 will satisfy the category 200.\n *\n * @api private\n */\nfunction inStatusCategory(status, category) {\n return status >= category && status < category + 100;\n}\n\nUpload.defaultOptions = defaultOptions;\n\nexports.default = Upload;", "const Plugin = require('../core/Plugin')\nconst tus = require('tus-js-client')\nconst UppySocket = require('../core/UppySocket')\nconst {\n emitSocketProgress,\n getSocketHost,\n settle\n} = require('../core/Utils')\nrequire('whatwg-fetch')\n\n// Extracted from https://github.com/tus/tus-js-client/blob/master/lib/upload.js#L13\n// excepted we removed 'fingerprint' key to avoid adding more dependencies\nconst tusDefaultOptions = {\n endpoint: '',\n resume: true,\n onProgress: null,\n onChunkComplete: null,\n onSuccess: null,\n onError: null,\n headers: {},\n chunkSize: Infinity,\n withCredentials: false,\n uploadUrl: null,\n uploadSize: null,\n overridePatchMethod: false,\n retryDelays: null\n}\n\n/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nfunction createEventTracker (emitter) {\n const events = []\n return {\n on (event, fn) {\n events.push([ event, fn ])\n return emitter.on(event, fn)\n },\n remove () {\n events.forEach(([ event, fn ]) => {\n emitter.off(event, fn)\n })\n }\n }\n}\n\n/**\n * Tus resumable file uploader\n *\n */\nmodule.exports = class Tus extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'uploader'\n this.id = 'Tus'\n this.title = 'Tus'\n\n // set default options\n const defaultOptions = {\n resume: true,\n autoRetry: true,\n retryDelays: [0, 1000, 3000, 5000]\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.uploaders = Object.create(null)\n this.uploaderEvents = Object.create(null)\n this.uploaderSockets = Object.create(null)\n\n this.handleResetProgress = this.handleResetProgress.bind(this)\n this.handleUpload = this.handleUpload.bind(this)\n }\n\n handleResetProgress () {\n const files = Object.assign({}, this.uppy.state.files)\n Object.keys(files).forEach((fileID) => {\n // Only clone the file object if it has a Tus `uploadUrl` attached.\n if (files[fileID].tus && files[fileID].tus.uploadUrl) {\n const tusState = Object.assign({}, files[fileID].tus)\n delete tusState.uploadUrl\n files[fileID] = Object.assign({}, files[fileID], { tus: tusState })\n }\n })\n\n this.uppy.setState({ files })\n }\n\n /**\n * Clean up all references for a file's upload: the tus.Upload instance,\n * any events related to the file, and the uppy-server WebSocket connection.\n */\n resetUploaderReferences (fileID) {\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort()\n this.uploaders[fileID] = null\n }\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove()\n this.uploaderEvents[fileID] = null\n }\n if (this.uploaderSockets[fileID]) {\n this.uploaderSockets[fileID].close()\n this.uploaderSockets[fileID] = null\n }\n }\n\n /**\n * Create a new Tus upload\n *\n * @param {object} file for use with upload\n * @param {integer} current file in a queue\n * @param {integer} total number of files in a queue\n * @returns {Promise}\n */\n upload (file, current, total) {\n this.resetUploaderReferences(file.id)\n\n // Create a new tus upload\n return new Promise((resolve, reject) => {\n const optsTus = Object.assign(\n {},\n tusDefaultOptions,\n this.opts,\n // Install file-specific upload overrides.\n file.tus || {}\n )\n\n optsTus.onError = (err) => {\n this.uppy.log(err)\n this.uppy.emit('upload-error', file.id, err)\n err.message = `Failed because: ${err.message}`\n\n this.resetUploaderReferences(file.id)\n reject(err)\n }\n\n optsTus.onProgress = (bytesUploaded, bytesTotal) => {\n this.onReceiveUploadUrl(file, upload.url)\n this.uppy.emit('upload-progress', {\n uploader: this,\n id: file.id,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n })\n }\n\n optsTus.onSuccess = () => {\n this.uppy.emit('upload-success', file.id, upload, upload.url)\n\n if (upload.url) {\n this.uppy.log('Download ' + upload.file.name + ' from ' + upload.url)\n }\n\n this.resetUploaderReferences(file.id)\n resolve(upload)\n }\n optsTus.metadata = file.meta\n\n const upload = new tus.Upload(file.data, optsTus)\n this.uploaders[file.id] = upload\n this.uploaderEvents[file.id] = createEventTracker(this.uppy)\n\n this.onFileRemove(file.id, (targetFileID) => {\n this.resetUploaderReferences(file.id)\n resolve(`upload ${targetFileID} was removed`)\n })\n\n this.onPause(file.id, (isPaused) => {\n if (isPaused) {\n upload.abort()\n } else {\n upload.start()\n }\n })\n\n this.onPauseAll(file.id, () => {\n upload.abort()\n })\n\n this.onCancelAll(file.id, () => {\n this.resetUploaderReferences(file.id)\n })\n\n this.onResumeAll(file.id, () => {\n if (file.error) {\n upload.abort()\n }\n upload.start()\n })\n\n if (!file.isPaused) {\n upload.start()\n }\n if (!file.isRestored) {\n this.uppy.emit('upload-started', file.id, upload)\n }\n })\n }\n\n uploadRemote (file, current, total) {\n this.resetUploaderReferences(file.id)\n\n return new Promise((resolve, reject) => {\n this.uppy.log(file.remote.url)\n if (file.serverToken) {\n return this.connectToServerSocket(file)\n .then(() => resolve())\n .catch(reject)\n }\n\n let endpoint = this.opts.endpoint\n if (file.tus && file.tus.endpoint) {\n endpoint = file.tus.endpoint\n }\n\n this.uppy.emit('upload-started', file.id)\n\n fetch(file.remote.url, {\n method: 'post',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(Object.assign({}, file.remote.body, {\n endpoint,\n protocol: 'tus',\n size: file.data.size,\n metadata: file.meta\n }))\n })\n .then((res) => {\n if (res.status < 200 || res.status > 300) {\n return reject(res.statusText)\n }\n\n return res.json().then((data) => {\n this.uppy.setFileState(file.id, { serverToken: data.token })\n file = this.getFile(file.id)\n return file\n })\n })\n .then((file) => {\n return this.connectToServerSocket(file)\n })\n .then(() => {\n resolve()\n })\n .catch((err) => {\n reject(new Error(err))\n })\n })\n }\n\n connectToServerSocket (file) {\n return new Promise((resolve, reject) => {\n const token = file.serverToken\n const host = getSocketHost(file.remote.host)\n const socket = new UppySocket({ target: `${host}/api/${token}` })\n this.uploaderSockets[file.id] = socket\n this.uploaderEvents[file.id] = createEventTracker(this.uppy)\n\n this.onFileRemove(file.id, () => {\n socket.send('pause', {})\n resolve(`upload ${file.id} was removed`)\n })\n\n this.onPause(file.id, (isPaused) => {\n isPaused ? socket.send('pause', {}) : socket.send('resume', {})\n })\n\n this.onPauseAll(file.id, () => socket.send('pause', {}))\n\n this.onCancelAll(file.id, () => socket.send('pause', {}))\n\n this.onResumeAll(file.id, () => {\n if (file.error) {\n socket.send('pause', {})\n }\n socket.send('resume', {})\n })\n\n this.onRetry(file.id, () => {\n socket.send('pause', {})\n socket.send('resume', {})\n })\n\n this.onRetryAll(file.id, () => {\n socket.send('pause', {})\n socket.send('resume', {})\n })\n\n if (file.isPaused) {\n socket.send('pause', {})\n }\n\n socket.on('progress', (progressData) => emitSocketProgress(this, progressData, file))\n\n socket.on('error', (errData) => {\n this.uppy.emit('upload-error', file.id, new Error(errData.error))\n reject(new Error(errData.error))\n })\n\n socket.on('success', (data) => {\n this.uppy.emit('upload-success', file.id, data, data.url)\n this.resetUploaderReferences(file.id)\n resolve()\n })\n })\n }\n\n getFile (fileID) {\n return this.uppy.state.files[fileID]\n }\n\n updateFile (file) {\n const files = Object.assign({}, this.uppy.state.files, {\n [file.id]: file\n })\n this.uppy.setState({ files })\n }\n\n onReceiveUploadUrl (file, uploadURL) {\n const currentFile = this.getFile(file.id)\n if (!currentFile) return\n // Only do the update if we didn't have an upload URL yet,\n // or resume: false in options\n if ((!currentFile.tus || currentFile.tus.uploadUrl !== uploadURL) && this.opts.resume) {\n this.uppy.log('[Tus] Storing upload url')\n const newFile = Object.assign({}, currentFile, {\n tus: Object.assign({}, currentFile.tus, {\n uploadUrl: uploadURL\n })\n })\n this.updateFile(newFile)\n }\n }\n\n onFileRemove (fileID, cb) {\n this.uploaderEvents[fileID].on('file-removed', (targetFileID) => {\n if (fileID === targetFileID) cb(targetFileID)\n })\n }\n\n onPause (fileID, cb) {\n this.uploaderEvents[fileID].on('upload-pause', (targetFileID, isPaused) => {\n if (fileID === targetFileID) {\n // const isPaused = this.uppy.pauseResume(fileID)\n cb(isPaused)\n }\n })\n }\n\n onRetry (fileID, cb) {\n this.uploaderEvents[fileID].on('upload-retry', (targetFileID) => {\n if (fileID === targetFileID) {\n cb()\n }\n })\n }\n\n onRetryAll (fileID, cb) {\n this.uploaderEvents[fileID].on('retry-all', (filesToRetry) => {\n if (!this.uppy.getFile(fileID)) return\n cb()\n })\n }\n\n onPauseAll (fileID, cb) {\n this.uploaderEvents[fileID].on('pause-all', () => {\n if (!this.uppy.getFile(fileID)) return\n cb()\n })\n }\n\n onCancelAll (fileID, cb) {\n this.uploaderEvents[fileID].on('cancel-all', () => {\n if (!this.uppy.getFile(fileID)) return\n cb()\n })\n }\n\n onResumeAll (fileID, cb) {\n this.uploaderEvents[fileID].on('resume-all', () => {\n if (!this.uppy.getFile(fileID)) return\n cb()\n })\n }\n\n uploadFiles (files) {\n const promises = files.map((file, index) => {\n const current = parseInt(index, 10) + 1\n const total = files.length\n\n if (file.error) {\n return Promise.reject(new Error(file.error))\n }\n\n this.uppy.log(`uploading ${current} of ${total}`)\n\n if (file.isRemote) {\n return this.uploadRemote(file, current, total)\n } else {\n return this.upload(file, current, total)\n }\n })\n\n return settle(promises)\n }\n\n handleUpload (fileIDs) {\n if (fileIDs.length === 0) {\n this.uppy.log('Tus: no files to upload!')\n return Promise.resolve()\n }\n\n this.uppy.log('Tus is uploading...')\n const filesToUpload = fileIDs.map((fileID) => this.uppy.getFile(fileID))\n\n return this.uploadFiles(filesToUpload)\n .then(() => null)\n }\n\n addResumableUploadsCapabilityFlag () {\n const newCapabilities = Object.assign({}, this.uppy.getState().capabilities)\n newCapabilities.resumableUploads = true\n this.uppy.setState({\n capabilities: newCapabilities\n })\n }\n\n install () {\n this.addResumableUploadsCapabilityFlag()\n this.uppy.addUploader(this.handleUpload)\n\n this.uppy.on('reset-progress', this.handleResetProgress)\n\n if (this.opts.autoRetry) {\n this.uppy.on('back-online', this.uppy.retryAll)\n }\n }\n\n uninstall () {\n this.uppy.removeUploader(this.handleUpload)\n\n if (this.opts.autoRetry) {\n this.uppy.off('back-online', this.uppy.retryAll)\n }\n }\n}\n", "const { h, Component } = require('preact')\nconst SnapshotButton = require('./SnapshotButton')\nconst RecordButton = require('./RecordButton')\n\nfunction isModeAvailable (modes, mode) {\n return modes.indexOf(mode) !== -1\n}\n\nclass CameraScreen extends Component {\n componentDidMount () {\n this.props.onFocus()\n this.btnContainer.firstChild.focus()\n }\n\n componentWillUnmount () {\n this.props.onStop()\n }\n\n render () {\n const shouldShowRecordButton = this.props.supportsRecording && (\n isModeAvailable(this.props.modes, 'video-only') ||\n isModeAvailable(this.props.modes, 'audio-only') ||\n isModeAvailable(this.props.modes, 'video-audio')\n )\n const shouldShowSnapshotButton = isModeAvailable(this.props.modes, 'picture')\n\n return (\n
\n
\n
\n
{ this.btnContainer = el }}>\n {shouldShowSnapshotButton ? SnapshotButton(this.props) : null}\n {' '}\n {shouldShowRecordButton ? RecordButton(this.props) : null}\n
\n \n
\n )\n }\n}\n\nmodule.exports = CameraScreen\n", "!function() {\n 'use strict';\n function VNode() {}\n function h(nodeName, attributes) {\n var lastSimple, child, simple, i, children = EMPTY_CHILDREN;\n for (i = arguments.length; i-- > 2; ) stack.push(arguments[i]);\n if (attributes && null != attributes.children) {\n if (!stack.length) stack.push(attributes.children);\n delete attributes.children;\n }\n while (stack.length) if ((child = stack.pop()) && void 0 !== child.pop) for (i = child.length; i--; ) stack.push(child[i]); else {\n if ('boolean' == typeof child) child = null;\n if (simple = 'function' != typeof nodeName) if (null == child) child = ''; else if ('number' == typeof child) child = String(child); else if ('string' != typeof child) simple = !1;\n if (simple && lastSimple) children[children.length - 1] += child; else if (children === EMPTY_CHILDREN) children = [ child ]; else children.push(child);\n lastSimple = simple;\n }\n var p = new VNode();\n p.nodeName = nodeName;\n p.children = children;\n p.attributes = null == attributes ? void 0 : attributes;\n p.key = null == attributes ? void 0 : attributes.key;\n if (void 0 !== options.vnode) options.vnode(p);\n return p;\n }\n function extend(obj, props) {\n for (var i in props) obj[i] = props[i];\n return obj;\n }\n function cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n }\n function enqueueRender(component) {\n if (!component.__d && (component.__d = !0) && 1 == items.push(component)) (options.debounceRendering || defer)(rerender);\n }\n function rerender() {\n var p, list = items;\n items = [];\n while (p = list.pop()) if (p.__d) renderComponent(p);\n }\n function isSameNodeType(node, vnode, hydrating) {\n if ('string' == typeof vnode || 'number' == typeof vnode) return void 0 !== node.splitText;\n if ('string' == typeof vnode.nodeName) return !node._componentConstructor && isNamedNode(node, vnode.nodeName); else return hydrating || node._componentConstructor === vnode.nodeName;\n }\n function isNamedNode(node, nodeName) {\n return node.__n === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n }\n function getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n var defaultProps = vnode.nodeName.defaultProps;\n if (void 0 !== defaultProps) for (var i in defaultProps) if (void 0 === props[i]) props[i] = defaultProps[i];\n return props;\n }\n function createNode(nodeName, isSvg) {\n var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n node.__n = nodeName;\n return node;\n }\n function removeNode(node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n }\n function setAccessor(node, name, old, value, isSvg) {\n if ('className' === name) name = 'class';\n if ('key' === name) ; else if ('ref' === name) {\n if (old) old(null);\n if (value) value(node);\n } else if ('class' === name && !isSvg) node.className = value || ''; else if ('style' === name) {\n if (!value || 'string' == typeof value || 'string' == typeof old) node.style.cssText = value || '';\n if (value && 'object' == typeof value) {\n if ('string' != typeof old) for (var i in old) if (!(i in value)) node.style[i] = '';\n for (var i in value) node.style[i] = 'number' == typeof value[i] && !1 === IS_NON_DIMENSIONAL.test(i) ? value[i] + 'px' : value[i];\n }\n } else if ('dangerouslySetInnerHTML' === name) {\n if (value) node.innerHTML = value.__html || '';\n } else if ('o' == name[0] && 'n' == name[1]) {\n var useCapture = name !== (name = name.replace(/Capture$/, ''));\n name = name.toLowerCase().substring(2);\n if (value) {\n if (!old) node.addEventListener(name, eventProxy, useCapture);\n } else node.removeEventListener(name, eventProxy, useCapture);\n (node.__l || (node.__l = {}))[name] = value;\n } else if ('list' !== name && 'type' !== name && !isSvg && name in node) {\n setProperty(node, name, null == value ? '' : value);\n if (null == value || !1 === value) node.removeAttribute(name);\n } else {\n var ns = isSvg && name !== (name = name.replace(/^xlink\\:?/, ''));\n if (null == value || !1 === value) if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase()); else node.removeAttribute(name); else if ('function' != typeof value) if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value); else node.setAttribute(name, value);\n }\n }\n function setProperty(node, name, value) {\n try {\n node[name] = value;\n } catch (e) {}\n }\n function eventProxy(e) {\n return this.__l[e.type](options.event && options.event(e) || e);\n }\n function flushMounts() {\n var c;\n while (c = mounts.pop()) {\n if (options.afterMount) options.afterMount(c);\n if (c.componentDidMount) c.componentDidMount();\n }\n }\n function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n if (!diffLevel++) {\n isSvgMode = null != parent && void 0 !== parent.ownerSVGElement;\n hydrating = null != dom && !('__preactattr_' in dom);\n }\n var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n if (!--diffLevel) {\n hydrating = !1;\n if (!componentRoot) flushMounts();\n }\n return ret;\n }\n function idiff(dom, vnode, context, mountAll, componentRoot) {\n var out = dom, prevSvgMode = isSvgMode;\n if (null == vnode || 'boolean' == typeof vnode) vnode = '';\n if ('string' == typeof vnode || 'number' == typeof vnode) {\n if (dom && void 0 !== dom.splitText && dom.parentNode && (!dom._component || componentRoot)) {\n if (dom.nodeValue != vnode) dom.nodeValue = vnode;\n } else {\n out = document.createTextNode(vnode);\n if (dom) {\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n out.__preactattr_ = !0;\n return out;\n }\n var vnodeName = vnode.nodeName;\n if ('function' == typeof vnodeName) return buildComponentFromVNode(dom, vnode, context, mountAll);\n isSvgMode = 'svg' === vnodeName ? !0 : 'foreignObject' === vnodeName ? !1 : isSvgMode;\n vnodeName = String(vnodeName);\n if (!dom || !isNamedNode(dom, vnodeName)) {\n out = createNode(vnodeName, isSvgMode);\n if (dom) {\n while (dom.firstChild) out.appendChild(dom.firstChild);\n if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n recollectNodeTree(dom, !0);\n }\n }\n var fc = out.firstChild, props = out.__preactattr_, vchildren = vnode.children;\n if (null == props) {\n props = out.__preactattr_ = {};\n for (var a = out.attributes, i = a.length; i--; ) props[a[i].name] = a[i].value;\n }\n if (!hydrating && vchildren && 1 === vchildren.length && 'string' == typeof vchildren[0] && null != fc && void 0 !== fc.splitText && null == fc.nextSibling) {\n if (fc.nodeValue != vchildren[0]) fc.nodeValue = vchildren[0];\n } else if (vchildren && vchildren.length || null != fc) innerDiffNode(out, vchildren, context, mountAll, hydrating || null != props.dangerouslySetInnerHTML);\n diffAttributes(out, vnode.attributes, props);\n isSvgMode = prevSvgMode;\n return out;\n }\n function innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n var j, c, f, vchild, child, originalChildren = dom.childNodes, children = [], keyed = {}, keyedLen = 0, min = 0, len = originalChildren.length, childrenLen = 0, vlen = vchildren ? vchildren.length : 0;\n if (0 !== len) for (var i = 0; i < len; i++) {\n var _child = originalChildren[i], props = _child.__preactattr_, key = vlen && props ? _child._component ? _child._component.__k : props.key : null;\n if (null != key) {\n keyedLen++;\n keyed[key] = _child;\n } else if (props || (void 0 !== _child.splitText ? isHydrating ? _child.nodeValue.trim() : !0 : isHydrating)) children[childrenLen++] = _child;\n }\n if (0 !== vlen) for (var i = 0; i < vlen; i++) {\n vchild = vchildren[i];\n child = null;\n var key = vchild.key;\n if (null != key) {\n if (keyedLen && void 0 !== keyed[key]) {\n child = keyed[key];\n keyed[key] = void 0;\n keyedLen--;\n }\n } else if (!child && min < childrenLen) for (j = min; j < childrenLen; j++) if (void 0 !== children[j] && isSameNodeType(c = children[j], vchild, isHydrating)) {\n child = c;\n children[j] = void 0;\n if (j === childrenLen - 1) childrenLen--;\n if (j === min) min++;\n break;\n }\n child = idiff(child, vchild, context, mountAll);\n f = originalChildren[i];\n if (child && child !== dom && child !== f) if (null == f) dom.appendChild(child); else if (child === f.nextSibling) removeNode(f); else dom.insertBefore(child, f);\n }\n if (keyedLen) for (var i in keyed) if (void 0 !== keyed[i]) recollectNodeTree(keyed[i], !1);\n while (min <= childrenLen) if (void 0 !== (child = children[childrenLen--])) recollectNodeTree(child, !1);\n }\n function recollectNodeTree(node, unmountOnly) {\n var component = node._component;\n if (component) unmountComponent(component); else {\n if (null != node.__preactattr_ && node.__preactattr_.ref) node.__preactattr_.ref(null);\n if (!1 === unmountOnly || null == node.__preactattr_) removeNode(node);\n removeChildren(node);\n }\n }\n function removeChildren(node) {\n node = node.lastChild;\n while (node) {\n var next = node.previousSibling;\n recollectNodeTree(node, !0);\n node = next;\n }\n }\n function diffAttributes(dom, attrs, old) {\n var name;\n for (name in old) if ((!attrs || null == attrs[name]) && null != old[name]) setAccessor(dom, name, old[name], old[name] = void 0, isSvgMode);\n for (name in attrs) if (!('children' === name || 'innerHTML' === name || name in old && attrs[name] === ('value' === name || 'checked' === name ? dom[name] : old[name]))) setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n }\n function collectComponent(component) {\n var name = component.constructor.name;\n (components[name] || (components[name] = [])).push(component);\n }\n function createComponent(Ctor, props, context) {\n var inst, list = components[Ctor.name];\n if (Ctor.prototype && Ctor.prototype.render) {\n inst = new Ctor(props, context);\n Component.call(inst, props, context);\n } else {\n inst = new Component(props, context);\n inst.constructor = Ctor;\n inst.render = doRender;\n }\n if (list) for (var i = list.length; i--; ) if (list[i].constructor === Ctor) {\n inst.__b = list[i].__b;\n list.splice(i, 1);\n break;\n }\n return inst;\n }\n function doRender(props, state, context) {\n return this.constructor(props, context);\n }\n function setComponentProps(component, props, opts, context, mountAll) {\n if (!component.__x) {\n component.__x = !0;\n if (component.__r = props.ref) delete props.ref;\n if (component.__k = props.key) delete props.key;\n if (!component.base || mountAll) {\n if (component.componentWillMount) component.componentWillMount();\n } else if (component.componentWillReceiveProps) component.componentWillReceiveProps(props, context);\n if (context && context !== component.context) {\n if (!component.__c) component.__c = component.context;\n component.context = context;\n }\n if (!component.__p) component.__p = component.props;\n component.props = props;\n component.__x = !1;\n if (0 !== opts) if (1 === opts || !1 !== options.syncComponentUpdates || !component.base) renderComponent(component, 1, mountAll); else enqueueRender(component);\n if (component.__r) component.__r(component);\n }\n }\n function renderComponent(component, opts, mountAll, isChild) {\n if (!component.__x) {\n var rendered, inst, cbase, props = component.props, state = component.state, context = component.context, previousProps = component.__p || props, previousState = component.__s || state, previousContext = component.__c || context, isUpdate = component.base, nextBase = component.__b, initialBase = isUpdate || nextBase, initialChildComponent = component._component, skip = !1;\n if (isUpdate) {\n component.props = previousProps;\n component.state = previousState;\n component.context = previousContext;\n if (2 !== opts && component.shouldComponentUpdate && !1 === component.shouldComponentUpdate(props, state, context)) skip = !0; else if (component.componentWillUpdate) component.componentWillUpdate(props, state, context);\n component.props = props;\n component.state = state;\n component.context = context;\n }\n component.__p = component.__s = component.__c = component.__b = null;\n component.__d = !1;\n if (!skip) {\n rendered = component.render(props, state, context);\n if (component.getChildContext) context = extend(extend({}, context), component.getChildContext());\n var toUnmount, base, childComponent = rendered && rendered.nodeName;\n if ('function' == typeof childComponent) {\n var childProps = getNodeProps(rendered);\n inst = initialChildComponent;\n if (inst && inst.constructor === childComponent && childProps.key == inst.__k) setComponentProps(inst, childProps, 1, context, !1); else {\n toUnmount = inst;\n component._component = inst = createComponent(childComponent, childProps, context);\n inst.__b = inst.__b || nextBase;\n inst.__u = component;\n setComponentProps(inst, childProps, 0, context, !1);\n renderComponent(inst, 1, mountAll, !0);\n }\n base = inst.base;\n } else {\n cbase = initialBase;\n toUnmount = initialChildComponent;\n if (toUnmount) cbase = component._component = null;\n if (initialBase || 1 === opts) {\n if (cbase) cbase._component = null;\n base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, !0);\n }\n }\n if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n var baseParent = initialBase.parentNode;\n if (baseParent && base !== baseParent) {\n baseParent.replaceChild(base, initialBase);\n if (!toUnmount) {\n initialBase._component = null;\n recollectNodeTree(initialBase, !1);\n }\n }\n }\n if (toUnmount) unmountComponent(toUnmount);\n component.base = base;\n if (base && !isChild) {\n var componentRef = component, t = component;\n while (t = t.__u) (componentRef = t).base = base;\n base._component = componentRef;\n base._componentConstructor = componentRef.constructor;\n }\n }\n if (!isUpdate || mountAll) mounts.unshift(component); else if (!skip) {\n if (component.componentDidUpdate) component.componentDidUpdate(previousProps, previousState, previousContext);\n if (options.afterUpdate) options.afterUpdate(component);\n }\n if (null != component.__h) while (component.__h.length) component.__h.pop().call(component);\n if (!diffLevel && !isChild) flushMounts();\n }\n }\n function buildComponentFromVNode(dom, vnode, context, mountAll) {\n var c = dom && dom._component, originalComponent = c, oldDom = dom, isDirectOwner = c && dom._componentConstructor === vnode.nodeName, isOwner = isDirectOwner, props = getNodeProps(vnode);\n while (c && !isOwner && (c = c.__u)) isOwner = c.constructor === vnode.nodeName;\n if (c && isOwner && (!mountAll || c._component)) {\n setComponentProps(c, props, 3, context, mountAll);\n dom = c.base;\n } else {\n if (originalComponent && !isDirectOwner) {\n unmountComponent(originalComponent);\n dom = oldDom = null;\n }\n c = createComponent(vnode.nodeName, props, context);\n if (dom && !c.__b) {\n c.__b = dom;\n oldDom = null;\n }\n setComponentProps(c, props, 1, context, mountAll);\n dom = c.base;\n if (oldDom && dom !== oldDom) {\n oldDom._component = null;\n recollectNodeTree(oldDom, !1);\n }\n }\n return dom;\n }\n function unmountComponent(component) {\n if (options.beforeUnmount) options.beforeUnmount(component);\n var base = component.base;\n component.__x = !0;\n if (component.componentWillUnmount) component.componentWillUnmount();\n component.base = null;\n var inner = component._component;\n if (inner) unmountComponent(inner); else if (base) {\n if (base.__preactattr_ && base.__preactattr_.ref) base.__preactattr_.ref(null);\n component.__b = base;\n removeNode(base);\n collectComponent(component);\n removeChildren(base);\n }\n if (component.__r) component.__r(null);\n }\n function Component(props, context) {\n this.__d = !0;\n this.context = context;\n this.props = props;\n this.state = this.state || {};\n }\n function render(vnode, parent, merge) {\n return diff(merge, vnode, {}, !1, parent, !1);\n }\n var options = {};\n var stack = [];\n var EMPTY_CHILDREN = [];\n var defer = 'function' == typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n var IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n var items = [];\n var mounts = [];\n var diffLevel = 0;\n var isSvgMode = !1;\n var hydrating = !1;\n var components = {};\n extend(Component.prototype, {\n setState: function(state, callback) {\n var s = this.state;\n if (!this.__s) this.__s = extend({}, s);\n extend(s, 'function' == typeof state ? state(s, this.props) : state);\n if (callback) (this.__h = this.__h || []).push(callback);\n enqueueRender(this);\n },\n forceUpdate: function(callback) {\n if (callback) (this.__h = this.__h || []).push(callback);\n renderComponent(this, 2);\n },\n render: function() {}\n });\n var preact = {\n h: h,\n createElement: h,\n cloneElement: cloneElement,\n Component: Component,\n render: render,\n rerender: rerender,\n options: options\n };\n if ('undefined' != typeof module) module.exports = preact; else self.preact = preact;\n}();\n//# sourceMappingURL=preact.js.map", "var _$empty_5 = {};\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=", "/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.2+97478eb6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n", "/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n", "'use strict';\n\nmodule.exports = input => {\n\tconst buf = new Uint8Array(input);\n\n\tif (!(buf && buf.length > 1)) {\n\t\treturn null;\n\t}\n\n\tconst check = (header, opts) => {\n\t\topts = Object.assign({\n\t\t\toffset: 0\n\t\t}, opts);\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\tif (header[i] !== buf[i + opts.offset]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\t// Needs to be before `tif` check\n\tif (\n\t\t(check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) &&\n\t\tcheck([0x43, 0x52], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'cr2',\n\t\t\tmime: 'image/x-canon-cr2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x49, 0x2A, 0x0]) ||\n\t\tcheck([0x4D, 0x4D, 0x0, 0x2A])\n\t) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x38, 0x42, 0x50, 0x53])) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\t// Needs to be before the `zip` check\n\tif (\n\t\tcheck([0x50, 0x4B, 0x3, 0x4]) &&\n\t\tcheck([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30})\n\t) {\n\t\treturn {\n\t\t\text: 'epub',\n\t\t\tmime: 'application/epub+zip'\n\t\t};\n\t}\n\n\t// Needs to be before `zip` check\n\t// Assumes signed `.xpi` from addons.mozilla.org\n\tif (\n\t\tcheck([0x50, 0x4B, 0x3, 0x4]) &&\n\t\tcheck([0x4D, 0x45, 0x54, 0x41, 0x2D, 0x49, 0x4E, 0x46, 0x2F, 0x6D, 0x6F, 0x7A, 0x69, 0x6C, 0x6C, 0x61, 0x2E, 0x72, 0x73, 0x61], {offset: 30})\n\t) {\n\t\treturn {\n\t\t\text: 'xpi',\n\t\t\tmime: 'application/x-xpinstall'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) &&\n\t\t(buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) &&\n\t\t(buf[6] === 0x0 || buf[6] === 0x1)\n\t) {\n\t\treturn {\n\t\t\text: 'rar',\n\t\t\tmime: 'application/x-rar-compressed'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\treturn {\n\t\t\text: '7z',\n\t\t\tmime: 'application/x-7z-compressed'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\tif (\n\t\t(\n\t\t\tcheck([0x0, 0x0, 0x0]) &&\n\t\t\t(buf[3] === 0x18 || buf[3] === 0x20) &&\n\t\t\tcheck([0x66, 0x74, 0x79, 0x70], {offset: 4})\n\t\t) ||\n\t\tcheck([0x33, 0x67, 0x70, 0x35]) ||\n\t\t(\n\t\t\tcheck([0x0, 0x0, 0x0, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32]) &&\n\t\t\tcheck([0x6D, 0x70, 0x34, 0x31, 0x6D, 0x70, 0x34, 0x32, 0x69, 0x73, 0x6F, 0x6D], {offset: 16})\n\t\t) ||\n\t\tcheck([0x0, 0x0, 0x0, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x69, 0x73, 0x6F, 0x6D]) ||\n\t\tcheck([0x0, 0x0, 0x0, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32, 0x0, 0x0, 0x0, 0x0])\n\t) {\n\t\treturn {\n\t\t\text: 'mp4',\n\t\t\tmime: 'video/mp4'\n\t\t};\n\t}\n\n\tif (check([0x0, 0x0, 0x0, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x56])) {\n\t\treturn {\n\t\t\text: 'm4v',\n\t\t\tmime: 'video/x-m4v'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x54, 0x68, 0x64])) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) {\n\t\tconst sliced = buf.subarray(4, 4 + 4096);\n\t\tconst idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82);\n\n\t\tif (idPos >= 0) {\n\t\t\tconst docTypePos = idPos + 3;\n\t\t\tconst findDocType = type => Array.from(type).every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0));\n\n\t\t\tif (findDocType('matroska')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (findDocType('webm')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tif (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) ||\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) ||\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) ||\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4})) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x49, 0x46, 0x46]) &&\n\t\tcheck([0x41, 0x56, 0x49], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'avi',\n\t\t\tmime: 'video/x-msvideo'\n\t\t};\n\t}\n\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\treturn {\n\t\t\text: 'wmv',\n\t\t\tmime: 'video/x-ms-wmv'\n\t\t};\n\t}\n\n\tif (check([0x0, 0x0, 0x1, 0xBA])) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x44, 0x33]) ||\n\t\tcheck([0xFF, 0xFB])\n\t) {\n\t\treturn {\n\t\t\text: 'mp3',\n\t\t\tmime: 'audio/mpeg'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4}) ||\n\t\tcheck([0x4D, 0x34, 0x41, 0x20])\n\t) {\n\t\treturn {\n\t\t\text: 'm4a',\n\t\t\tmime: 'audio/m4a'\n\t\t};\n\t}\n\n\t// Needs to be before `ogg` check\n\tif (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) {\n\t\treturn {\n\t\t\text: 'opus',\n\t\t\tmime: 'audio/opus'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x67, 0x67, 0x53])) {\n\t\treturn {\n\t\t\text: 'ogg',\n\t\t\tmime: 'audio/ogg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x4C, 0x61, 0x43])) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x49, 0x46, 0x46]) &&\n\t\tcheck([0x57, 0x41, 0x56, 0x45], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'wav',\n\t\t\tmime: 'audio/x-wav'\n\t\t};\n\t}\n\n\tif (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x50, 0x44, 0x46])) {\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (\n\t\t(buf[0] === 0x43 || buf[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\tif (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x46]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x32]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/octet-stream'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (check([0x53, 0x51, 0x4C, 0x69])) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (check([0x43, 0x72, 0x32, 0x34])) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4D, 0x53, 0x43, 0x46]) ||\n\t\tcheck([0x49, 0x53, 0x63, 0x28])\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\t// Needs to be before `ar` check\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) {\n\t\treturn {\n\t\t\text: 'deb',\n\t\t\tmime: 'application/x-deb'\n\t\t};\n\t}\n\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) {\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x5A, 0x49, 0x50])) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) {\n\t\treturn {\n\t\t\text: 'blend',\n\t\t\tmime: 'application/x-blender'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\treturn null;\n};", "const preact = require('preact')\nconst { findDOMElement } = require('../core/Utils')\n\n/**\n * Boilerplate that all Plugins share - and should not be used\n * directly. It also shows which methods final plugins should implement/override,\n * this deciding on structure.\n *\n * @param {object} main Uppy core object\n * @param {object} object with plugin options\n * @return {array | string} files or success/fail message\n */\nmodule.exports = class Plugin {\n constructor (uppy, opts) {\n this.uppy = uppy\n this.opts = opts || {}\n\n this.update = this.update.bind(this)\n this.mount = this.mount.bind(this)\n this.install = this.install.bind(this)\n this.uninstall = this.uninstall.bind(this)\n }\n\n getPluginState () {\n return this.uppy.state.plugins[this.id]\n }\n\n setPluginState (update) {\n const plugins = Object.assign({}, this.uppy.state.plugins)\n plugins[this.id] = Object.assign({}, plugins[this.id], update)\n\n this.uppy.setState({\n plugins: plugins\n })\n }\n\n update (state) {\n if (typeof this.el === 'undefined') {\n return\n }\n\n if (this.updateUI) {\n this.updateUI(state)\n }\n }\n\n /**\n * Check if supplied `target` is a DOM element or an `object`.\n * If it’s an object — target is a plugin, and we search `plugins`\n * for a plugin with same name and return its target.\n *\n * @param {String|Object} target\n *\n */\n mount (target, plugin) {\n const callerPluginName = plugin.id\n\n const targetElement = findDOMElement(target)\n\n if (targetElement) {\n this.updateUI = (state) => {\n this.el = preact.render(this.render(state), targetElement, this.el)\n }\n\n this.uppy.log(`Installing ${callerPluginName} to a DOM element`)\n\n // clear everything inside the target container\n if (this.opts.replaceTargetContent) {\n targetElement.innerHTML = ''\n }\n\n this.el = preact.render(this.render(this.uppy.state), targetElement)\n\n return this.el\n }\n\n let targetPlugin\n if (typeof target === 'object' && target instanceof Plugin) {\n // Targeting a plugin *instance*\n targetPlugin = target\n } else if (typeof target === 'function') {\n // Targeting a plugin type\n const Target = target\n // Find the target plugin instance.\n this.uppy.iteratePlugins((plugin) => {\n if (plugin instanceof Target) {\n targetPlugin = plugin\n return false\n }\n })\n }\n\n if (targetPlugin) {\n const targetPluginName = targetPlugin.id\n this.uppy.log(`Installing ${callerPluginName} to ${targetPluginName}`)\n this.el = targetPlugin.addTarget(plugin)\n return this.el\n }\n\n this.uppy.log(`Not installing ${callerPluginName}`)\n throw new Error(`Invalid target option given to ${callerPluginName}`)\n }\n\n render (state) {\n throw (new Error('Extend the render method to add your plugin to a DOM element'))\n }\n\n addTarget (plugin) {\n throw (new Error('Extend the addTarget method to add your plugin to another plugin\\'s target'))\n }\n\n unmount () {\n if (this.el && this.el.parentNode) {\n this.el.parentNode.removeChild(this.el)\n }\n // this.target = null\n }\n\n install () {\n\n }\n\n uninstall () {\n this.unmount()\n }\n}\n", "module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n", "var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env);\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\n};\n", "var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n # mime-match\n\n A simple function to checker whether a target mime type matches a mime-type\n pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n ## Example Usage\n\n <<< example.js\n\n**/\nmodule.exports = function(target, pattern) {\n function test(pattern) {\n var result = wildcard(pattern, target, reMimePartSplit);\n\n // ensure that we have a valid mime type (should have two parts)\n return result && result.length >= 2;\n }\n\n return pattern ? test(pattern.split(';')[0]) : test;\n};\n", "/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n", "module.exports = prettierBytes\n\nfunction prettierBytes (num) {\n if (typeof num !== 'number' || isNaN(num)) {\n throw new TypeError('Expected a number, got ' + typeof num)\n }\n\n var neg = num < 0\n var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n if (neg) {\n num = -num\n }\n\n if (num < 1) {\n return (neg ? '-' : '') + num + ' B'\n }\n\n var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1)\n num = Number(num / Math.pow(1000, exponent))\n var unit = units[exponent]\n\n if (num >= 10 || num % 1 === 0) {\n // Do not show decimals when the number is two-digit, or if the number has no\n // decimal component.\n return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit\n } else {\n return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit\n }\n}\n", "/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n *\n * @param {object} opts\n */\nmodule.exports = class Translator {\n constructor (opts) {\n const defaultOptions = {\n locale: {\n strings: {},\n pluralize: function (n) {\n if (n === 1) {\n return 0\n }\n return 1\n }\n }\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n this.locale = Object.assign({}, defaultOptions.locale, opts.locale)\n\n // console.log(this.opts.locale)\n\n // this.locale.pluralize = this.locale ? this.locale.pluralize : defaultPluralize\n // this.locale.strings = Object.assign({}, en_US.strings, this.opts.locale.strings)\n }\n\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @return {string} interpolated\n */\n interpolate (phrase, options) {\n const replace = String.prototype.replace\n const dollarRegex = /\\$/g\n const dollarBillsYall = '$$$$'\n\n for (let arg in options) {\n if (arg !== '_' && options.hasOwnProperty(arg)) {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n var replacement = options[arg]\n if (typeof replacement === 'string') {\n replacement = replace.call(options[arg], dollarRegex, dollarBillsYall)\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n phrase = replace.call(phrase, new RegExp('%\\\\{' + arg + '\\\\}', 'g'), replacement)\n }\n }\n return phrase\n }\n\n/**\n * Public translate method\n *\n * @param {string} key\n * @param {object} options with values that will be used later to replace placeholders in string\n * @return {string} translated (and interpolated)\n */\n translate (key, options) {\n if (options && options.smart_count) {\n var plural = this.locale.pluralize(options.smart_count)\n return this.interpolate(this.opts.locale.strings[key][plural], options)\n }\n\n return this.interpolate(this.opts.locale.strings[key], options)\n }\n}\n", "/**\n * Default store that keeps state in a simple object.\n */\nclass DefaultStore {\n constructor () {\n this.state = {}\n this.callbacks = []\n }\n\n getState () {\n return this.state\n }\n\n setState (patch) {\n const prevState = Object.assign({}, this.state)\n const nextState = Object.assign({}, this.state, patch)\n\n this.state = nextState\n this._publish(prevState, nextState, patch)\n }\n\n subscribe (listener) {\n this.callbacks.push(listener)\n return () => {\n // Remove the listener.\n this.callbacks.splice(\n this.callbacks.indexOf(listener),\n 1\n )\n }\n }\n\n _publish (...args) {\n this.callbacks.forEach((listener) => {\n listener(...args)\n })\n }\n}\n\nmodule.exports = function defaultStore () {\n return new DefaultStore()\n}\n", "const Utils = require('../core/Utils')\nconst Translator = require('../core/Translator')\nconst ee = require('namespace-emitter')\nconst cuid = require('cuid')\nconst throttle = require('lodash.throttle')\nconst prettyBytes = require('prettier-bytes')\nconst match = require('mime-match')\nconst DefaultStore = require('../store/DefaultStore')\n\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n *\n * @param {object} opts — Uppy options\n */\nclass Uppy {\n constructor (opts) {\n const defaultLocale = {\n strings: {\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n exceedsSize: 'This file exceeds maximum allowed size of',\n youCanOnlyUploadFileTypes: 'You can only upload:',\n uppyServerError: 'Connection with Uppy Server failed'\n }\n }\n\n // set default options\n const defaultOptions = {\n id: 'uppy',\n autoProceed: true,\n debug: false,\n restrictions: {\n maxFileSize: false,\n maxNumberOfFiles: false,\n minNumberOfFiles: false,\n allowedFileTypes: false\n },\n meta: {},\n onBeforeFileAdded: (currentFile, files) => Promise.resolve(),\n onBeforeUpload: (files, done) => Promise.resolve(),\n locale: defaultLocale,\n store: new DefaultStore()\n }\n\n // Merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n // i18n\n this.translator = new Translator({locale: this.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n\n // Container for different types of plugins\n this.plugins = {}\n\n this.translator = new Translator({locale: this.opts.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n this.getState = this.getState.bind(this)\n this.getPlugin = this.getPlugin.bind(this)\n this.setFileMeta = this.setFileMeta.bind(this)\n this.setFileState = this.setFileState.bind(this)\n this.log = this.log.bind(this)\n this.info = this.info.bind(this)\n this.hideInfo = this.hideInfo.bind(this)\n this.addFile = this.addFile.bind(this)\n this.removeFile = this.removeFile.bind(this)\n this.pauseResume = this.pauseResume.bind(this)\n this._calculateProgress = this._calculateProgress.bind(this)\n this.updateOnlineStatus = this.updateOnlineStatus.bind(this)\n this.resetProgress = this.resetProgress.bind(this)\n\n this.pauseAll = this.pauseAll.bind(this)\n this.resumeAll = this.resumeAll.bind(this)\n this.retryAll = this.retryAll.bind(this)\n this.cancelAll = this.cancelAll.bind(this)\n this.retryUpload = this.retryUpload.bind(this)\n this.upload = this.upload.bind(this)\n\n this.emitter = ee()\n this.on = this.emitter.on.bind(this.emitter)\n this.off = this.emitter.off.bind(this.emitter)\n this.once = this.emitter.once.bind(this.emitter)\n this.emit = this.emitter.emit.bind(this.emitter)\n\n this.preProcessors = []\n this.uploaders = []\n this.postProcessors = []\n\n this.store = this.opts.store\n this.setState({\n plugins: {},\n files: {},\n currentUploads: {},\n capabilities: {\n resumableUploads: false\n },\n totalProgress: 0,\n meta: Object.assign({}, this.opts.meta),\n info: {\n isHidden: true,\n type: 'info',\n message: ''\n }\n })\n\n this._storeUnsubscribe = this.store.subscribe((prevState, nextState, patch) => {\n this.emit('state-update', prevState, nextState, patch)\n this.updateAll(nextState)\n })\n\n // for debugging and testing\n // this.updateNum = 0\n if (this.opts.debug) {\n global.uppyLog = ''\n global[this.opts.id] = this\n }\n }\n\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n updateAll (state) {\n this.iteratePlugins(plugin => {\n plugin.update(state)\n })\n }\n\n /**\n * Updates state\n *\n * @param {patch} object\n */\n setState (patch) {\n this.store.setState(patch)\n }\n\n /**\n * Returns current state.\n */\n getState () {\n return this.store.getState()\n }\n\n /**\n * Back compat for when this.state is used instead of this.getState().\n */\n get state () {\n return this.getState()\n }\n\n /**\n * Shorthand to set state for a specific file.\n */\n setFileState (fileID, state) {\n this.setState({\n files: Object.assign({}, this.getState().files, {\n [fileID]: Object.assign({}, this.getState().files[fileID], state)\n })\n })\n }\n\n resetProgress () {\n const defaultProgress = {\n percentage: 0,\n bytesUploaded: 0,\n uploadComplete: false,\n uploadStarted: false\n }\n const files = Object.assign({}, this.getState().files)\n const updatedFiles = {}\n Object.keys(files).forEach(fileID => {\n const updatedFile = Object.assign({}, files[fileID])\n updatedFile.progress = Object.assign({}, updatedFile.progress, defaultProgress)\n updatedFiles[fileID] = updatedFile\n })\n\n this.setState({\n files: updatedFiles,\n totalProgress: 0\n })\n\n // TODO Document on the website\n this.emit('reset-progress')\n }\n\n addPreProcessor (fn) {\n this.preProcessors.push(fn)\n }\n\n removePreProcessor (fn) {\n const i = this.preProcessors.indexOf(fn)\n if (i !== -1) {\n this.preProcessors.splice(i, 1)\n }\n }\n\n addPostProcessor (fn) {\n this.postProcessors.push(fn)\n }\n\n removePostProcessor (fn) {\n const i = this.postProcessors.indexOf(fn)\n if (i !== -1) {\n this.postProcessors.splice(i, 1)\n }\n }\n\n addUploader (fn) {\n this.uploaders.push(fn)\n }\n\n removeUploader (fn) {\n const i = this.uploaders.indexOf(fn)\n if (i !== -1) {\n this.uploaders.splice(i, 1)\n }\n }\n\n setMeta (data) {\n const updatedMeta = Object.assign({}, this.getState().meta, data)\n const updatedFiles = Object.assign({}, this.getState().files)\n\n Object.keys(updatedFiles).forEach((fileID) => {\n updatedFiles[fileID] = Object.assign({}, updatedFiles[fileID], {\n meta: Object.assign({}, updatedFiles[fileID].meta, data)\n })\n })\n\n this.log('Adding metadata:')\n this.log(data)\n\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n })\n }\n\n setFileMeta (fileID, data) {\n const updatedFiles = Object.assign({}, this.getState().files)\n if (!updatedFiles[fileID]) {\n this.log('Was trying to set metadata for a file that’s not with us anymore: ', fileID)\n return\n }\n const newMeta = Object.assign({}, updatedFiles[fileID].meta, data)\n updatedFiles[fileID] = Object.assign({}, updatedFiles[fileID], {\n meta: newMeta\n })\n this.setState({files: updatedFiles})\n }\n\n /**\n * Get a file object.\n *\n * @param {string} fileID The ID of the file object to return.\n */\n getFile (fileID) {\n return this.getState().files[fileID]\n }\n\n /**\n * Check if minNumberOfFiles restriction is reached before uploading.\n *\n * @return {boolean}\n * @private\n */\n _checkMinNumberOfFiles () {\n const {minNumberOfFiles} = this.opts.restrictions\n if (Object.keys(this.getState().files).length < minNumberOfFiles) {\n this.info(`${this.i18n('youHaveToAtLeastSelectX', { smart_count: minNumberOfFiles })}`, 'error', 5000)\n return false\n }\n return true\n }\n\n /**\n * Check if file passes a set of restrictions set in options: maxFileSize,\n * maxNumberOfFiles and allowedFileTypes.\n *\n * @param {object} file object to check\n * @return {boolean}\n * @private\n */\n _checkRestrictions (file) {\n const {maxFileSize, maxNumberOfFiles, allowedFileTypes} = this.opts.restrictions\n\n if (maxNumberOfFiles) {\n if (Object.keys(this.getState().files).length + 1 > maxNumberOfFiles) {\n this.info(`${this.i18n('youCanOnlyUploadX', { smart_count: maxNumberOfFiles })}`, 'error', 5000)\n return false\n }\n }\n\n if (allowedFileTypes) {\n const isCorrectFileType = allowedFileTypes.filter((type) => {\n if (!file.type) return false\n return match(file.type, type)\n }).length > 0\n\n if (!isCorrectFileType) {\n const allowedFileTypesString = allowedFileTypes.join(', ')\n this.info(`${this.i18n('youCanOnlyUploadFileTypes')} ${allowedFileTypesString}`, 'error', 5000)\n return false\n }\n }\n\n if (maxFileSize) {\n if (file.data.size > maxFileSize) {\n this.info(`${this.i18n('exceedsSize')} ${prettyBytes(maxFileSize)}`, 'error', 5000)\n return false\n }\n }\n\n return true\n }\n\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n *\n * @param {object} file object to add\n */\n addFile (file) {\n // Wrap this in a Promise `.then()` handler so errors will reject the Promise\n // instead of throwing.\n const beforeFileAdded = Promise.resolve()\n .then(() => this.opts.onBeforeFileAdded(file, this.getState().files))\n\n return beforeFileAdded.catch((err) => {\n const message = typeof err === 'object' ? err.message : err\n this.info(message, 'error', 5000)\n return Promise.reject(new Error(`onBeforeFileAdded: ${message}`))\n }).then(() => {\n return Utils.getFileType(file).then((fileType) => {\n const updatedFiles = Object.assign({}, this.getState().files)\n let fileName\n if (file.name) {\n fileName = file.name\n } else if (fileType.split('/')[0] === 'image') {\n fileName = fileType.split('/')[0] + '.' + fileType.split('/')[1]\n } else {\n fileName = 'noname'\n }\n const fileExtension = Utils.getFileNameAndExtension(fileName).extension\n const isRemote = file.isRemote || false\n\n const fileID = Utils.generateFileID(file)\n\n const newFile = {\n source: file.source || '',\n id: fileID,\n name: fileName,\n extension: fileExtension || '',\n meta: Object.assign({}, this.getState().meta, {\n name: fileName,\n type: fileType\n }),\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.data.size || 0,\n uploadComplete: false,\n uploadStarted: false\n },\n size: file.data.size || 0,\n isRemote: isRemote,\n remote: file.remote || '',\n preview: file.preview\n }\n\n const isFileAllowed = this._checkRestrictions(newFile)\n if (!isFileAllowed) {\n return Promise.reject(new Error('File not allowed'))\n }\n\n updatedFiles[fileID] = newFile\n this.setState({files: updatedFiles})\n\n this.emit('file-added', newFile)\n this.log(`Added file: ${fileName}, ${fileID}, mime type: ${fileType}`)\n\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(() => {\n this.scheduledAutoProceed = null\n this.upload().catch((err) => {\n console.error(err.stack || err.message || err)\n })\n }, 4)\n }\n })\n })\n }\n\n removeFile (fileID) {\n const { files, currentUploads } = this.state\n const updatedFiles = Object.assign({}, files)\n const removedFile = updatedFiles[fileID]\n delete updatedFiles[fileID]\n\n // Remove this file from its `currentUpload`.\n const updatedUploads = Object.assign({}, currentUploads)\n const removeUploads = []\n Object.keys(updatedUploads).forEach((uploadID) => {\n const newFileIDs = currentUploads[uploadID].fileIDs.filter((uploadFileID) => uploadFileID !== fileID)\n // Remove the upload if no files are associated with it anymore.\n if (newFileIDs.length === 0) {\n removeUploads.push(uploadID)\n return\n }\n\n updatedUploads[uploadID] = Object.assign({}, currentUploads[uploadID], {\n fileIDs: newFileIDs\n })\n })\n\n this.setState({\n currentUploads: updatedUploads,\n files: updatedFiles\n })\n\n removeUploads.forEach((uploadID) => {\n this._removeUpload(uploadID)\n })\n\n this._calculateTotalProgress()\n this.emit('file-removed', fileID)\n\n // Clean up object URLs.\n if (removedFile.preview && Utils.isObjectURL(removedFile.preview)) {\n URL.revokeObjectURL(removedFile.preview)\n }\n\n this.log(`Removed file: ${fileID}`)\n }\n\n pauseResume (fileID) {\n const updatedFiles = Object.assign({}, this.getState().files)\n\n if (updatedFiles[fileID].uploadComplete) return\n\n const wasPaused = updatedFiles[fileID].isPaused || false\n const isPaused = !wasPaused\n\n const updatedFile = Object.assign({}, updatedFiles[fileID], {\n isPaused: isPaused\n })\n\n updatedFiles[fileID] = updatedFile\n this.setState({files: updatedFiles})\n\n this.emit('upload-pause', fileID, isPaused)\n\n return isPaused\n }\n\n pauseAll () {\n const updatedFiles = Object.assign({}, this.getState().files)\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter((file) => {\n return !updatedFiles[file].progress.uploadComplete &&\n updatedFiles[file].progress.uploadStarted\n })\n\n inProgressUpdatedFiles.forEach((file) => {\n const updatedFile = Object.assign({}, updatedFiles[file], {\n isPaused: true\n })\n updatedFiles[file] = updatedFile\n })\n this.setState({files: updatedFiles})\n\n this.emit('pause-all')\n }\n\n resumeAll () {\n const updatedFiles = Object.assign({}, this.getState().files)\n const inProgressUpdatedFiles = Object.keys(updatedFiles).filter((file) => {\n return !updatedFiles[file].progress.uploadComplete &&\n updatedFiles[file].progress.uploadStarted\n })\n\n inProgressUpdatedFiles.forEach((file) => {\n const updatedFile = Object.assign({}, updatedFiles[file], {\n isPaused: false,\n error: null\n })\n updatedFiles[file] = updatedFile\n })\n this.setState({files: updatedFiles})\n\n this.emit('resume-all')\n }\n\n retryAll () {\n const updatedFiles = Object.assign({}, this.getState().files)\n const filesToRetry = Object.keys(updatedFiles).filter(file => {\n return updatedFiles[file].error\n })\n\n filesToRetry.forEach((file) => {\n const updatedFile = Object.assign({}, updatedFiles[file], {\n isPaused: false,\n error: null\n })\n updatedFiles[file] = updatedFile\n })\n this.setState({\n files: updatedFiles,\n error: null\n })\n\n this.emit('retry-all', filesToRetry)\n\n const uploadID = this._createUpload(filesToRetry)\n return this._runUpload(uploadID)\n }\n\n cancelAll () {\n this.emit('cancel-all')\n this.setState({ files: {}, totalProgress: 0 })\n }\n\n retryUpload (fileID) {\n const updatedFiles = Object.assign({}, this.getState().files)\n const updatedFile = Object.assign({}, updatedFiles[fileID],\n { error: null, isPaused: false }\n )\n updatedFiles[fileID] = updatedFile\n this.setState({\n files: updatedFiles\n })\n\n this.emit('upload-retry', fileID)\n\n const uploadID = this._createUpload([ fileID ])\n return this._runUpload(uploadID)\n }\n\n reset () {\n this.cancelAll()\n }\n\n _calculateProgress (data) {\n const fileID = data.id\n\n // skip progress event for a file that’s been removed\n if (!this.getFile(fileID)) {\n this.log('Trying to set progress for a file that’s been removed: ', fileID)\n return\n }\n\n this.setFileState(fileID, {\n progress: Object.assign({}, this.getState().files[fileID].progress, {\n bytesUploaded: data.bytesUploaded,\n bytesTotal: data.bytesTotal,\n percentage: Math.floor((data.bytesUploaded / data.bytesTotal * 100).toFixed(2))\n })\n })\n\n this._calculateTotalProgress()\n }\n\n _calculateTotalProgress () {\n // calculate total progress, using the number of files currently uploading,\n // multiplied by 100 and the summ of individual progress of each file\n const files = Object.assign({}, this.getState().files)\n\n const inProgress = Object.keys(files).filter((file) => {\n return files[file].progress.uploadStarted\n })\n const progressMax = inProgress.length * 100\n let progressAll = 0\n inProgress.forEach((file) => {\n progressAll = progressAll + files[file].progress.percentage\n })\n\n const totalProgress = progressMax === 0 ? 0 : Math.floor((progressAll * 100 / progressMax).toFixed(2))\n\n this.setState({\n totalProgress: totalProgress\n })\n }\n\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n *\n */\n actions () {\n // const log = this.log\n // this.on('*', function (payload) {\n // log(`[Core] Event: ${this.event}`)\n // log(payload)\n // })\n\n // stress-test re-rendering\n // setInterval(() => {\n // this.setState({bla: 'bla'})\n // }, 20)\n\n this.on('error', (error) => {\n this.setState({ error: error.message })\n })\n\n this.on('upload-error', (fileID, error) => {\n this.setFileState(fileID, { error: error.message })\n this.setState({ error: error.message })\n\n const fileName = this.getState().files[fileID].name\n let message = `Failed to upload ${fileName}`\n if (typeof error === 'object' && error.message) {\n message = { message: message, details: error.message }\n }\n this.info(message, 'error', 5000)\n })\n\n this.on('upload', () => {\n this.setState({ error: null })\n })\n\n // this.on('file-add', (data) => {\n // this.addFile(data)\n // })\n\n this.on('file-remove', (fileID) => {\n this.removeFile(fileID)\n })\n\n this.on('upload-started', (fileID, upload) => {\n const file = this.getFile(fileID)\n this.setFileState(fileID, {\n progress: Object.assign({}, file.progress, {\n uploadStarted: Date.now(),\n uploadComplete: false,\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.size\n })\n })\n })\n\n // upload progress events can occur frequently, especially when you have a good\n // connection to the remote server. Therefore, we are throtteling them to\n // prevent accessive function calls.\n // see also: https://github.com/tus/tus-js-client/commit/9940f27b2361fd7e10ba58b09b60d82422183bbb\n const _throttledCalculateProgress = throttle(this._calculateProgress, 100, { leading: true, trailing: false })\n\n this.on('upload-progress', _throttledCalculateProgress)\n\n this.on('upload-success', (fileID, uploadResp, uploadURL) => {\n this.setFileState(fileID, {\n progress: Object.assign({}, this.getState().files[fileID].progress, {\n uploadComplete: true,\n percentage: 100\n }),\n uploadURL: uploadURL,\n isPaused: false\n })\n\n this._calculateTotalProgress()\n })\n\n this.on('preprocess-progress', (fileID, progress) => {\n this.setFileState(fileID, {\n progress: Object.assign({}, this.getState().files[fileID].progress, {\n preprocess: progress\n })\n })\n })\n\n this.on('preprocess-complete', (fileID) => {\n const files = Object.assign({}, this.getState().files)\n files[fileID] = Object.assign({}, files[fileID], {\n progress: Object.assign({}, files[fileID].progress)\n })\n delete files[fileID].progress.preprocess\n\n this.setState({ files: files })\n })\n\n this.on('postprocess-progress', (fileID, progress) => {\n this.setFileState(fileID, {\n progress: Object.assign({}, this.getState().files[fileID].progress, {\n postprocess: progress\n })\n })\n })\n\n this.on('postprocess-complete', (fileID) => {\n const files = Object.assign({}, this.getState().files)\n files[fileID] = Object.assign({}, files[fileID], {\n progress: Object.assign({}, files[fileID].progress)\n })\n delete files[fileID].progress.postprocess\n // TODO should we set some kind of `fullyComplete` property on the file object\n // so it's easier to see that the file is upload…fully complete…rather than\n // what we have to do now (`uploadComplete && !postprocess`)\n\n this.setState({ files: files })\n })\n\n this.on('restored', () => {\n // Files may have changed--ensure progress is still accurate.\n this._calculateTotalProgress()\n })\n\n // show informer if offline\n if (typeof window !== 'undefined') {\n window.addEventListener('online', () => this.updateOnlineStatus())\n window.addEventListener('offline', () => this.updateOnlineStatus())\n setTimeout(() => this.updateOnlineStatus(), 3000)\n }\n }\n\n updateOnlineStatus () {\n const online =\n typeof window.navigator.onLine !== 'undefined'\n ? window.navigator.onLine\n : true\n if (!online) {\n this.emit('is-offline')\n this.info('No internet connection', 'error', 0)\n this.wasOffline = true\n } else {\n this.emit('is-online')\n if (this.wasOffline) {\n this.emit('back-online')\n this.info('Connected!', 'success', 3000)\n this.wasOffline = false\n }\n }\n }\n\n getID () {\n return this.opts.id\n }\n\n /**\n * Registers a plugin with Core.\n *\n * @param {Class} Plugin object\n * @param {Object} options object that will be passed to Plugin later\n * @return {Object} self for chaining\n */\n use (Plugin, opts) {\n if (typeof Plugin !== 'function') {\n let msg = `Expected a plugin class, but got ${Plugin === null ? 'null' : typeof Plugin}.` +\n ' Please verify that the plugin was imported and spelled correctly.'\n throw new TypeError(msg)\n }\n\n // Instantiate\n const plugin = new Plugin(this, opts)\n const pluginId = plugin.id\n this.plugins[plugin.type] = this.plugins[plugin.type] || []\n\n if (!pluginId) {\n throw new Error('Your plugin must have an id')\n }\n\n if (!plugin.type) {\n throw new Error('Your plugin must have a type')\n }\n\n let existsPluginAlready = this.getPlugin(pluginId)\n if (existsPluginAlready) {\n let msg = `Already found a plugin named '${existsPluginAlready.id}'.\n Tried to use: '${pluginId}'.\n Uppy is currently limited to running one of every plugin.\n Share your use case with us over at\n https://github.com/transloadit/uppy/issues/\n if you want us to reconsider.`\n throw new Error(msg)\n }\n\n this.plugins[plugin.type].push(plugin)\n plugin.install()\n\n return this\n }\n\n /**\n * Find one Plugin by name.\n *\n * @param string name description\n */\n getPlugin (name) {\n let foundPlugin = false\n this.iteratePlugins((plugin) => {\n const pluginName = plugin.id\n if (pluginName === name) {\n foundPlugin = plugin\n return false\n }\n })\n return foundPlugin\n }\n\n /**\n * Iterate through all `use`d plugins.\n *\n * @param function method description\n */\n iteratePlugins (method) {\n Object.keys(this.plugins).forEach(pluginType => {\n this.plugins[pluginType].forEach(method)\n })\n }\n\n /**\n * Uninstall and remove a plugin.\n *\n * @param {Plugin} instance The plugin instance to remove.\n */\n removePlugin (instance) {\n const list = this.plugins[instance.type]\n\n if (instance.uninstall) {\n instance.uninstall()\n }\n\n const index = list.indexOf(instance)\n if (index !== -1) {\n list.splice(index, 1)\n }\n }\n\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n close () {\n this.reset()\n\n this._storeUnsubscribe()\n\n this.iteratePlugins((plugin) => {\n plugin.uninstall()\n })\n }\n\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n *\n * @param {string} msg Message to be displayed by the informer\n */\n\n info (message, type = 'info', duration = 3000) {\n const isComplexMessage = typeof message === 'object'\n\n this.setState({\n info: {\n isHidden: false,\n type: type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }\n })\n\n this.emit('info-visible')\n\n window.clearTimeout(this.infoTimeoutID)\n if (duration === 0) {\n this.infoTimeoutID = undefined\n return\n }\n\n // hide the informer after `duration` milliseconds\n this.infoTimeoutID = setTimeout(this.hideInfo, duration)\n }\n\n hideInfo () {\n const newInfo = Object.assign({}, this.getState().info, {\n isHidden: true\n })\n this.setState({\n info: newInfo\n })\n this.emit('info-hidden')\n }\n\n /**\n * Logs stuff to console, only if `debug` is set to true. Silent in production.\n *\n * @param {String|Object} msg to log\n * @param {String} type optional `error` or `warning`\n */\n log (msg, type) {\n if (!this.opts.debug) {\n return\n }\n\n let message = `[Uppy] [${Utils.getTimeStamp()}] ${msg}`\n\n global.uppyLog = global.uppyLog + '\\n' + 'DEBUG LOG: ' + msg\n\n if (type === 'error') {\n console.error(message)\n return\n }\n\n if (type === 'warning') {\n console.warn(message)\n return\n }\n\n if (msg === `${msg}`) {\n console.log(message)\n } else {\n message = `[Uppy] [${Utils.getTimeStamp()}]`\n console.log(message)\n console.dir(msg)\n }\n }\n\n /**\n * Initializes actions.\n *\n */\n run () {\n this.log('Core is run, initializing actions...')\n this.actions()\n\n return this\n }\n\n /**\n * Restore an upload by its ID.\n */\n restore (uploadID) {\n this.log(`Core: attempting to restore upload \"${uploadID}\"`)\n\n if (!this.getState().currentUploads[uploadID]) {\n this._removeUpload(uploadID)\n return Promise.reject(new Error('Nonexistent upload'))\n }\n\n return this._runUpload(uploadID)\n }\n\n /**\n * Create an upload for a bunch of files.\n *\n * @param {Array} fileIDs File IDs to include in this upload.\n * @return {string} ID of this upload.\n */\n _createUpload (fileIDs) {\n const uploadID = cuid()\n\n this.emit('upload', {\n id: uploadID,\n fileIDs: fileIDs\n })\n\n this.setState({\n currentUploads: Object.assign({}, this.getState().currentUploads, {\n [uploadID]: {\n fileIDs: fileIDs,\n step: 0,\n result: {}\n }\n })\n })\n\n return uploadID\n }\n\n _getUpload (uploadID) {\n return this.getState().currentUploads[uploadID]\n }\n\n /**\n * Add data to an upload's result object.\n *\n * @param {string} uploadID The ID of the upload.\n * @param {object} data Data properties to add to the result object.\n */\n addResultData (uploadID, data) {\n const currentUploads = this.getState().currentUploads\n const currentUpload = Object.assign({}, currentUploads[uploadID], {\n result: Object.assign({}, currentUploads[uploadID].result, data)\n })\n this.setState({\n currentUploads: Object.assign({}, currentUploads, {\n [uploadID]: currentUpload\n })\n })\n }\n\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n * @param {string} uploadID The ID of the upload.\n */\n _removeUpload (uploadID) {\n const currentUploads = Object.assign({}, this.getState().currentUploads)\n delete currentUploads[uploadID]\n\n this.setState({\n currentUploads: currentUploads\n })\n }\n\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n *\n * @private\n */\n _runUpload (uploadID) {\n const uploadData = this.getState().currentUploads[uploadID]\n const fileIDs = uploadData.fileIDs\n const restoreStep = uploadData.step\n\n const steps = [\n ...this.preProcessors,\n ...this.uploaders,\n ...this.postProcessors\n ]\n let lastStep = Promise.resolve()\n steps.forEach((fn, step) => {\n // Skip this step if we are restoring and have already completed this step before.\n if (step < restoreStep) {\n return\n }\n\n lastStep = lastStep.then(() => {\n const { currentUploads } = this.getState()\n const currentUpload = Object.assign({}, currentUploads[uploadID], {\n step: step\n })\n this.setState({\n currentUploads: Object.assign({}, currentUploads, {\n [uploadID]: currentUpload\n })\n })\n // TODO give this the `currentUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n return fn(fileIDs, uploadID)\n }).then((result) => {\n return null\n })\n })\n\n // Not returning the `catch`ed promise, because we still want to return a rejected\n // promise from this method if the upload failed.\n lastStep.catch((err) => {\n this.emit('error', err)\n\n this._removeUpload(uploadID)\n })\n\n return lastStep.then(() => {\n const files = fileIDs.map((fileID) => this.getFile(fileID))\n const successful = files.filter((file) => file && !file.error)\n const failed = files.filter((file) => file && file.error)\n this.addResultData(uploadID, { successful, failed, uploadID })\n\n const { currentUploads } = this.getState()\n const result = currentUploads[uploadID].result\n this.emit('complete', result)\n // Compatibility with pre-0.21\n this.emit('success', fileIDs)\n\n this._removeUpload(uploadID)\n\n return result\n })\n }\n\n /**\n * Start an upload for all the files that are not currently being uploaded.\n *\n * @return {Promise}\n */\n upload () {\n if (!this.plugins.uploader) {\n this.log('No uploader type plugins are used', 'warning')\n }\n\n const isMinNumberOfFilesReached = this._checkMinNumberOfFiles()\n if (!isMinNumberOfFilesReached) {\n return Promise.reject(new Error('Minimum number of files has not been reached'))\n }\n\n const beforeUpload = Promise.resolve()\n .then(() => this.opts.onBeforeUpload(this.getState().files))\n\n return beforeUpload.catch((err) => {\n const message = typeof err === 'object' ? err.message : err\n this.info(message, 'error', 5000)\n return Promise.reject(new Error(`onBeforeUpload: ${message}`))\n }).then(() => {\n const { currentUploads } = this.getState()\n // get a list of files that are currently assigned to uploads\n const currentlyUploadingFiles = Object.keys(currentUploads).reduce((prev, curr) => prev.concat(currentUploads[curr].fileIDs), [])\n\n const waitingFileIDs = []\n Object.keys(this.getState().files).forEach((fileID) => {\n const file = this.getFile(fileID)\n // if the file hasn't started uploading and hasn't already been assigned to an upload..\n if ((!file.progress.uploadStarted) && (currentlyUploadingFiles.indexOf(fileID) === -1)) {\n waitingFileIDs.push(file.id)\n }\n })\n\n const uploadID = this._createUpload(waitingFileIDs)\n return this._runUpload(uploadID)\n })\n }\n}\n\nmodule.exports = function (opts) {\n return new Uppy(opts)\n}\n// Expose class constructor.\nmodule.exports.Uppy = Uppy\n", "const Core = require('./Core')\nmodule.exports = Core\n", "const ee = require('namespace-emitter')\n\nmodule.exports = class UppySocket {\n constructor (opts) {\n this.queued = []\n this.isOpen = false\n this.socket = new WebSocket(opts.target)\n this.emitter = ee()\n\n this.socket.onopen = (e) => {\n this.isOpen = true\n\n while (this.queued.length > 0 && this.isOpen) {\n const first = this.queued[0]\n this.send(first.action, first.payload)\n this.queued = this.queued.slice(1)\n }\n }\n\n this.socket.onclose = (e) => {\n this.isOpen = false\n }\n\n this._handleMessage = this._handleMessage.bind(this)\n\n this.socket.onmessage = this._handleMessage\n\n this.close = this.close.bind(this)\n this.emit = this.emit.bind(this)\n this.on = this.on.bind(this)\n this.once = this.once.bind(this)\n this.send = this.send.bind(this)\n }\n\n close () {\n return this.socket.close()\n }\n\n send (action, payload) {\n // attach uuid\n\n if (!this.isOpen) {\n this.queued.push({action, payload})\n return\n }\n\n this.socket.send(JSON.stringify({\n action,\n payload\n }))\n }\n\n on (action, handler) {\n console.log(action)\n this.emitter.on(action, handler)\n }\n\n emit (action, payload) {\n console.log(action)\n this.emitter.emit(action, payload)\n }\n\n once (action, handler) {\n this.emitter.once(action, handler)\n }\n\n _handleMessage (e) {\n try {\n const message = JSON.parse(e.data)\n console.log(message)\n this.emit(message.action, message.payload)\n } catch (err) {\n console.log(err)\n }\n }\n}\n", "const Plugin = require('../core/Plugin')\nconst cuid = require('cuid')\nconst Translator = require('../core/Translator')\nconst UppySocket = require('../core/UppySocket')\nconst {\n emitSocketProgress,\n getSocketHost,\n settle,\n limitPromises\n} = require('../core/Utils')\n\nmodule.exports = class XHRUpload extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'uploader'\n this.id = 'XHRUpload'\n this.title = 'XHRUpload'\n\n const defaultLocale = {\n strings: {\n timedOut: 'Upload stalled for %{seconds} seconds, aborting.'\n }\n }\n\n // Default options\n const defaultOptions = {\n formData: true,\n fieldName: 'files[]',\n method: 'post',\n metaFields: null,\n responseUrlFieldName: 'url',\n bundle: true,\n headers: {},\n locale: defaultLocale,\n timeout: 30 * 1000,\n limit: 0,\n getResponseData (xhr) {\n return JSON.parse(xhr.response)\n },\n getResponseError (xhr) {\n return new Error('Upload error')\n }\n }\n\n // Merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n // i18n\n this.translator = new Translator({ locale: this.locale })\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.handleUpload = this.handleUpload.bind(this)\n\n // Simultaneous upload limiting is shared across all uploads with this plugin.\n if (typeof this.opts.limit === 'number' && this.opts.limit !== 0) {\n this.limitUploads = limitPromises(this.opts.limit)\n } else {\n this.limitUploads = (fn) => fn\n }\n }\n\n getOptions (file) {\n const opts = Object.assign({},\n this.opts,\n this.uppy.state.xhrUpload || {},\n file.xhrUpload || {}\n )\n opts.headers = {}\n Object.assign(opts.headers, this.opts.headers)\n if (this.uppy.state.xhrUpload) {\n Object.assign(opts.headers, this.uppy.state.xhrUpload.headers)\n }\n if (file.xhrUpload) {\n Object.assign(opts.headers, file.xhrUpload.headers)\n }\n\n return opts\n }\n\n createFormDataUpload (file, opts) {\n const formPost = new FormData()\n\n const metaFields = Array.isArray(opts.metaFields)\n ? opts.metaFields\n // Send along all fields by default.\n : Object.keys(file.meta)\n metaFields.forEach((item) => {\n formPost.append(item, file.meta[item])\n })\n\n formPost.append(opts.fieldName, file.data)\n\n return formPost\n }\n\n createBareUpload (file, opts) {\n return file.data\n }\n\n upload (file, current, total) {\n const opts = this.getOptions(file)\n\n this.uppy.log(`uploading ${current} of ${total}`)\n return new Promise((resolve, reject) => {\n const data = opts.formData\n ? this.createFormDataUpload(file, opts)\n : this.createBareUpload(file, opts)\n\n const onTimedOut = () => {\n xhr.abort()\n this.uppy.log(`[XHRUpload] ${id} timed out`)\n const error = new Error(this.i18n('timedOut', { seconds: Math.ceil(opts.timeout / 1000) }))\n this.uppy.emit('upload-error', file.id, error)\n reject(error)\n }\n let aliveTimer\n const isAlive = () => {\n clearTimeout(aliveTimer)\n aliveTimer = setTimeout(onTimedOut, opts.timeout)\n }\n\n const xhr = new XMLHttpRequest()\n const id = cuid()\n\n xhr.upload.addEventListener('loadstart', (ev) => {\n this.uppy.log(`[XHRUpload] ${id} started`)\n if (opts.timeout > 0) {\n // Begin checking for timeouts when loading starts.\n isAlive()\n }\n })\n\n xhr.upload.addEventListener('progress', (ev) => {\n this.uppy.log(`[XHRUpload] ${id} progress: ${ev.loaded} / ${ev.total}`)\n if (opts.timeout > 0) {\n isAlive()\n }\n\n if (ev.lengthComputable) {\n this.uppy.emit('upload-progress', {\n uploader: this,\n id: file.id,\n bytesUploaded: ev.loaded,\n bytesTotal: ev.total\n })\n }\n })\n\n xhr.addEventListener('load', (ev) => {\n this.uppy.log(`[XHRUpload] ${id} finished`)\n clearTimeout(aliveTimer)\n\n if (ev.target.status >= 200 && ev.target.status < 300) {\n const resp = opts.getResponseData(xhr)\n const uploadURL = resp[opts.responseUrlFieldName]\n\n this.uppy.emit('upload-success', file.id, resp, uploadURL)\n\n if (uploadURL) {\n this.uppy.log(`Download ${file.name} from ${file.uploadURL}`)\n }\n\n return resolve(file)\n } else {\n const error = opts.getResponseError(xhr) || new Error('Upload error')\n error.request = xhr\n this.uppy.emit('upload-error', file.id, error)\n return reject(error)\n }\n })\n\n xhr.addEventListener('error', (ev) => {\n this.uppy.log(`[XHRUpload] ${id} errored`)\n clearTimeout(aliveTimer)\n\n const error = opts.getResponseError(xhr) || new Error('Upload error')\n this.uppy.emit('upload-error', file.id, error)\n return reject(error)\n })\n\n xhr.open(opts.method.toUpperCase(), opts.endpoint, true)\n\n Object.keys(opts.headers).forEach((header) => {\n xhr.setRequestHeader(header, opts.headers[header])\n })\n\n xhr.send(data)\n\n this.uppy.on('upload-cancel', (fileID) => {\n if (fileID === file.id) {\n xhr.abort()\n }\n })\n\n this.uppy.on('cancel-all', () => {\n // const files = this.uppy.getState().files\n // if (!files[file.id]) return\n xhr.abort()\n })\n })\n }\n\n uploadRemote (file, current, total) {\n const opts = this.getOptions(file)\n return new Promise((resolve, reject) => {\n const fields = {}\n const metaFields = Array.isArray(opts.metaFields)\n ? opts.metaFields\n // Send along all fields by default.\n : Object.keys(file.meta)\n\n metaFields.forEach((name) => {\n fields[name] = file.meta[name]\n })\n\n fetch(file.remote.url, {\n method: 'post',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(Object.assign({}, file.remote.body, {\n endpoint: opts.endpoint,\n size: file.data.size,\n fieldname: opts.fieldName,\n metadata: fields,\n headers: opts.headers\n }))\n })\n .then((res) => {\n if (res.status < 200 && res.status > 300) {\n return reject(res.statusText)\n }\n\n res.json().then((data) => {\n const token = data.token\n const host = getSocketHost(file.remote.host)\n const socket = new UppySocket({ target: `${host}/api/${token}` })\n\n socket.on('progress', (progressData) => emitSocketProgress(this, progressData, file))\n\n socket.on('success', (data) => {\n this.uppy.emit('upload-success', file.id, data, data.url)\n socket.close()\n return resolve()\n })\n\n socket.on('error', (errData) => {\n this.uppy.emit('upload-error', file.id, new Error(errData.error))\n reject(new Error(errData.error))\n })\n })\n })\n })\n }\n\n uploadFiles (files) {\n const actions = files.map((file, i) => {\n const current = parseInt(i, 10) + 1\n const total = files.length\n\n if (file.error) {\n return () => Promise.reject(new Error(file.error))\n } else if (file.isRemote) {\n // We emit upload-started here, so that it's also emitted for files\n // that have to wait due to the `limit` option.\n this.uppy.emit('upload-started', file.id)\n return this.uploadRemote.bind(this, file, current, total)\n } else {\n this.uppy.emit('upload-started', file.id)\n return this.upload.bind(this, file, current, total)\n }\n })\n\n const promises = actions.map((action) => {\n const limitedAction = this.limitUploads(action)\n return limitedAction()\n })\n\n return settle(promises)\n }\n\n handleUpload (fileIDs) {\n if (fileIDs.length === 0) {\n this.uppy.log('[XHRUpload] No files to upload!')\n return Promise.resolve()\n }\n\n this.uppy.log('[XHRUpload] Uploading...')\n const files = fileIDs.map(getFile, this)\n function getFile (fileID) {\n return this.uppy.state.files[fileID]\n }\n\n return this.uploadFiles(files).then(() => null)\n }\n\n install () {\n this.uppy.addUploader(this.handleUpload)\n }\n\n uninstall () {\n this.uppy.removeUploader(this.handleUpload)\n }\n}\n", "module.exports = function flatten(list, depth) {\n depth = (typeof depth == 'number') ? depth : Infinity;\n\n if (!depth) {\n if (Array.isArray(list)) {\n return list.map(function(i) { return i; });\n }\n return list;\n }\n\n return _flatten(list, 1);\n\n function _flatten(list, d) {\n return list.reduce(function (acc, item) {\n if (Array.isArray(item) && d < depth) {\n return acc.concat(_flatten(item, d + 1));\n }\n else {\n return acc.concat(item);\n }\n }, []);\n }\n};\n", "module.exports = function (tasks, cb) {\n var results, pending, keys\n var isSync = true\n\n if (Array.isArray(tasks)) {\n results = []\n pending = tasks.length\n } else {\n keys = Object.keys(tasks)\n results = {}\n pending = keys.length\n }\n\n function done (err) {\n function end () {\n if (cb) cb(err, results)\n cb = null\n }\n if (isSync) process.nextTick(end)\n else end()\n }\n\n function each (i, err, result) {\n results[i] = result\n if (--pending === 0 || err) {\n done(err)\n }\n }\n\n if (!pending) {\n // empty\n done(null)\n } else if (keys) {\n // object\n keys.forEach(function (key) {\n tasks[key](function (err, result) { each(key, err, result) })\n })\n } else {\n // array\n tasks.forEach(function (task, i) {\n task(function (err, result) { each(i, err, result) })\n })\n }\n\n isSync = false\n}\n", "/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n", "const { h } = require('preact')\n\n// https://css-tricks.com/creating-svg-icon-system-react/\n\nfunction defaultTabIcon () {\n return \n \n \n}\n\nfunction iconCopy () {\n return \n \n \n \n}\n\nfunction iconResume () {\n return \n \n \n}\n\nfunction iconPause () {\n return \n \n \n \n \n \n}\n\nfunction iconEdit () {\n return \n \n \n}\n\nfunction localIcon () {\n return \n \n \n \n}\n\nfunction closeIcon () {\n return \n \n \n}\n\nfunction iconRetry () {\n return \n \n \n \n \n \n}\n\nfunction pluginIcon () {\n return \n \n \n \n}\n\nfunction checkIcon () {\n return \n \n \n}\n\nfunction iconAudio () {\n return \n \n \n}\n\nfunction iconVideo () {\n return \n \n \n}\n\nfunction iconPDF () {\n return \n \n \n}\n\nfunction iconFile () {\n return \n \n \n}\n\nfunction iconText () {\n return \n \n \n}\n\nfunction uploadIcon () {\n return \n \n \n \n}\n\nfunction dashboardBgIcon () {\n return \n \n \n}\n\nmodule.exports = {\n defaultTabIcon,\n iconCopy,\n iconResume,\n iconPause,\n iconRetry,\n iconEdit,\n localIcon,\n closeIcon,\n pluginIcon,\n checkIcon,\n iconAudio,\n iconVideo,\n iconPDF,\n iconFile,\n iconText,\n uploadIcon,\n dashboardBgIcon\n}\n", "const { iconText, iconAudio, iconVideo, iconPDF } = require('./icons')\n\nmodule.exports = function getIconByMime (fileType) {\n const defaultChoice = {\n color: '#cbcbcb',\n icon: ''\n }\n\n if (!fileType) return defaultChoice\n\n const fileTypeGeneral = fileType.split('/')[0]\n const fileTypeSpecific = fileType.split('/')[1]\n\n if (fileTypeGeneral === 'text') {\n return {\n color: '#cbcbcb',\n icon: iconText()\n }\n }\n\n if (fileTypeGeneral === 'audio') {\n return {\n color: '#1abc9c',\n icon: iconAudio()\n }\n }\n\n if (fileTypeGeneral === 'video') {\n return {\n color: '#2980b9',\n icon: iconVideo()\n }\n }\n\n if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n return {\n color: '#e74c3c',\n icon: iconPDF()\n }\n }\n\n if (fileTypeGeneral === 'image') {\n return {\n color: '#f2f2f2',\n icon: ''\n }\n }\n\n return defaultChoice\n}\n", "const getFileTypeIcon = require('./getFileTypeIcon')\nconst { checkIcon } = require('./icons')\nconst { h, Component } = require('preact')\n\nmodule.exports = class FileCard extends Component {\n constructor (props) {\n super(props)\n\n this.meta = {}\n\n this.tempStoreMetaOrSubmit = this.tempStoreMetaOrSubmit.bind(this)\n this.renderMetaFields = this.renderMetaFields.bind(this)\n this.handleClick = this.handleClick.bind(this)\n }\n\n tempStoreMetaOrSubmit (ev) {\n const file = this.props.files[this.props.fileCardFor]\n\n if (ev.keyCode === 13) {\n ev.stopPropagation()\n ev.preventDefault()\n this.props.fileCardDone(this.meta, file.id)\n return\n }\n\n const value = ev.target.value\n const name = ev.target.dataset.name\n this.meta[name] = value\n }\n\n renderMetaFields (file) {\n const metaFields = this.props.metaFields || []\n return metaFields.map((field) => {\n return
\n \n
\n })\n }\n\n handleClick (ev) {\n const file = this.props.files[this.props.fileCardFor]\n this.props.fileCardDone(this.meta, file.id)\n }\n\n render () {\n const file = this.props.files[this.props.fileCardFor]\n\n return
\n {this.props.fileCardFor &&\n
\n
\n

{this.props.i18n('editing')} {file.meta ? file.meta.name : file.name}

\n \n
\n
\n
\n {file.preview\n ? {file.name}\n :
\n {getFileTypeIcon(file.type).icon}\n \n
\n }\n
\n
\n
\n \n \n
\n {this.renderMetaFields(file)}\n
\n
\n
\n \n
\n
\n }\n
\n }\n}\n", "const { h, Component } = require('preact')\n\nclass ActionBrowseTagline extends Component {\n constructor (props) {\n super(props)\n this.handleClick = this.handleClick.bind(this)\n }\n\n handleClick (ev) {\n this.input.click()\n }\n\n render () {\n // empty value=\"\" on file input, so we can select same file\n // after removing it from Uppy — otherwise OS thinks it’s selected\n return (\n \n {this.props.acquirers.length === 0\n ? this.props.i18n('dropPaste')\n : this.props.i18n('dropPasteImport')\n } \n {\n this.input = input\n }} />\n \n )\n }\n}\n\nmodule.exports = ActionBrowseTagline\n", "const { h } = require('preact')\n\n// http://codepen.io/Harkko/pen/rVxvNM\n// https://css-tricks.com/svg-line-animation-works/\n// https://gist.github.com/eswak/ad4ea57bcd5ff7aa5d42\n\n// circle length equals 2 * PI * R\nconst circleLength = 2 * Math.PI * 15\n\n// stroke-dashoffset is a percentage of the progress from circleLength,\n// substracted from circleLength, because its an offset\nmodule.exports = (props) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n", "const { getETA,\n getSpeed,\n prettyETA,\n getFileNameAndExtension,\n truncateString,\n copyToClipboard } = require('../../core/Utils')\nconst prettyBytes = require('prettier-bytes')\nconst FileItemProgress = require('./FileItemProgress')\nconst getFileTypeIcon = require('./getFileTypeIcon')\nconst { iconEdit, iconCopy, iconRetry } = require('./icons')\nconst classNames = require('classnames')\nconst { h } = require('preact')\n\nmodule.exports = function fileItem (props) {\n const file = props.file\n const acquirers = props.acquirers\n\n const isProcessing = file.progress.preprocess || file.progress.postprocess\n const isUploaded = file.progress.uploadComplete && !isProcessing && !file.error\n const uploadInProgressOrComplete = file.progress.uploadStarted || isProcessing\n const uploadInProgress = (file.progress.uploadStarted && !file.progress.uploadComplete) || isProcessing\n const isPaused = file.isPaused || false\n const error = file.error || false\n\n const fileName = getFileNameAndExtension(file.meta.name).name\n const truncatedFileName = props.isWide ? truncateString(fileName, 14) : fileName\n\n const onPauseResumeCancelRetry = (ev) => {\n if (isUploaded) return\n if (error) {\n props.retryUpload(file.id)\n return\n }\n if (props.resumableUploads) {\n props.pauseUpload(file.id)\n } else {\n props.cancelUpload(file.id)\n }\n }\n\n const dashboardItemClass = classNames(\n 'uppy-DashboardItem',\n { 'is-inprogress': uploadInProgress },\n { 'is-processing': isProcessing },\n { 'is-complete': isUploaded },\n { 'is-paused': isPaused },\n { 'is-error': error },\n { 'is-resumable': props.resumableUploads }\n )\n\n return
  • \n
    \n
    \n {file.preview\n ? {file.name}\n :
    \n {getFileTypeIcon(file.type).icon}\n \n
    \n }\n
    \n
    \n {isUploaded\n ?
    \n {FileItemProgress({\n progress: file.progress.percentage,\n fileID: file.id\n })}\n
    \n : \n }\n {props.showProgressDetails &&\n
    \n {(!file.isPaused && !isUploaded) &&\n {prettyETA(getETA(file.progress))} ・ ↑ {prettyBytes(getSpeed(file.progress))}/s\n }\n
    \n }\n
    \n
    \n
    \n

    \n {file.uploadURL\n ? \n {file.extension ? truncatedFileName + '.' + file.extension : truncatedFileName}\n \n : file.extension ? truncatedFileName + '.' + file.extension : truncatedFileName\n }\n

    \n
    \n {file.data.size &&
    {prettyBytes(file.data.size)}
    }\n {file.source &&
    \n {acquirers.map(acquirer => {\n if (acquirer.id === file.source) return {acquirer.icon()}\n })}\n
    \n }\n
    \n {!uploadInProgressOrComplete &&\n \n }\n {file.uploadURL &&\n \n }\n
    \n
    \n {!isUploaded &&\n \n }\n
    \n
  • \n}\n", "const FileItem = require('./FileItem')\nconst ActionBrowseTagline = require('./ActionBrowseTagline')\nconst { dashboardBgIcon } = require('./icons')\nconst classNames = require('classnames')\nconst { h } = require('preact')\n\nmodule.exports = (props) => {\n const noFiles = props.totalFileCount === 0\n const dashboardFilesClass = classNames(\n 'uppy-Dashboard-files',\n { 'uppy-Dashboard-files--noFiles': noFiles }\n )\n\n return
      \n {noFiles &&\n
      \n {dashboardBgIcon()}\n

      \n {h(ActionBrowseTagline, {\n acquirers: props.acquirers,\n handleInputChange: props.handleInputChange,\n i18n: props.i18n\n })}\n

      \n { props.note &&

      {props.note}

      }\n
      \n }\n {Object.keys(props.files).map((fileID) => {\n return FileItem({\n acquirers: props.acquirers,\n file: props.files[fileID],\n showFileCard: props.showFileCard,\n showProgressDetails: props.showProgressDetails,\n info: props.info,\n log: props.log,\n i18n: props.i18n,\n removeFile: props.removeFile,\n pauseUpload: props.pauseUpload,\n cancelUpload: props.cancelUpload,\n retryUpload: props.retryUpload,\n resumableUploads: props.resumableUploads,\n isWide: props.isWide\n })\n })}\n
    \n}\n", "const ActionBrowseTagline = require('./ActionBrowseTagline')\nconst { localIcon } = require('./icons')\nconst { h, Component } = require('preact')\n\nclass Tabs extends Component {\n constructor (props) {\n super(props)\n this.handleClick = this.handleClick.bind(this)\n }\n\n handleClick (ev) {\n this.input.click()\n }\n\n render () {\n const isHidden = Object.keys(this.props.files).length === 0\n const hasAcquirers = this.props.acquirers.length !== 0\n\n if (!hasAcquirers) {\n return (\n
    \n
    \n \n
    \n
    \n )\n }\n\n // empty value=\"\" on file input, so we can select same file\n // after removing it from Uppy — otherwise OS thinks it’s selected\n\n return
    \n
      \n
    • \n \n { this.input = input }} />\n
    • \n {this.props.acquirers.map((target) => {\n return
    • \n \n
    • \n })}\n
    \n
    \n }\n}\n\nmodule.exports = Tabs\n", "const FileList = require('./FileList')\nconst Tabs = require('./Tabs')\nconst FileCard = require('./FileCard')\nconst classNames = require('classnames')\nconst { isTouchDevice } = require('../../core/Utils')\nconst { closeIcon } = require('./icons')\nconst { h } = require('preact')\n\n// http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\nconst renderInnerPanel = (props) => {\n return
    \n
    \n
    \n {props.i18n('importFrom')} {props.activePanel ? props.activePanel.name : null}\n
    \n \n
    \n {props.getPlugin(props.activePanel.id).render(props.state)}\n
    \n}\n\nmodule.exports = function Dashboard (props) {\n const dashboardClassName = classNames(\n 'uppy',\n 'uppy-Dashboard',\n { 'Uppy--isTouchDevice': isTouchDevice() },\n { 'uppy-Dashboard--modal': !props.inline },\n { 'uppy-Dashboard--wide': props.isWide }\n )\n\n return (\n
    \n\n
    \n\n
    \n \n\n
    \n \n\n \n\n
    \n \n
    \n\n
    \n {props.activePanel && renderInnerPanel(props)}\n
    \n\n
    \n {props.progressindicators.map((target) => {\n return props.getPlugin(target.id).render(props.state)\n })}\n
    \n
    \n
    \n
    \n )\n}\n", "const Plugin = require('../core/Plugin')\nconst { h } = require('preact')\n\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\nmodule.exports = class Informer extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'progressindicator'\n this.id = this.opts.id || 'Informer'\n this.title = 'Informer'\n\n // set default options\n const defaultOptions = {\n typeColors: {\n info: {\n text: '#fff',\n bg: '#000'\n },\n warning: {\n text: '#fff',\n bg: '#F6A623'\n },\n error: {\n text: '#fff',\n bg: '#e74c3c'\n },\n success: {\n text: '#fff',\n bg: '#7ac824'\n }\n }\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.render = this.render.bind(this)\n }\n\n render (state) {\n const { isHidden, type, message, details } = state.info\n const style = {\n backgroundColor: this.opts.typeColors[type].bg,\n color: this.opts.typeColors[type].text\n }\n\n return (\n
    \n

    \n {message}\n {' '}\n {details && ?\n }\n

    \n
    \n )\n }\n\n install () {\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n}\n", "const throttle = require('lodash.throttle')\nconst { h } = require('preact')\n\nfunction progressDetails (props) {\n return {props.totalProgress || 0}%・{props.complete} / {props.inProgress}・{props.totalUploadedSize} / {props.totalSize}・↑ {props.totalSpeed}/s・{props.totalETA}\n}\n\nconst ThrottledProgressDetails = throttle(progressDetails, 500, {leading: true, trailing: true})\n\nconst STATE_ERROR = 'error'\nconst STATE_WAITING = 'waiting'\nconst STATE_PREPROCESSING = 'preprocessing'\nconst STATE_UPLOADING = 'uploading'\nconst STATE_POSTPROCESSING = 'postprocessing'\nconst STATE_COMPLETE = 'complete'\n\nfunction getUploadingState (props, files) {\n if (props.isAllErrored) {\n return STATE_ERROR\n }\n\n // If ALL files have been completed, show the completed state.\n if (props.isAllComplete) {\n return STATE_COMPLETE\n }\n\n let state = STATE_WAITING\n const fileIDs = Object.keys(files)\n for (let i = 0; i < fileIDs.length; i++) {\n const progress = files[fileIDs[i]].progress\n // If ANY files are being uploaded right now, show the uploading state.\n if (progress.uploadStarted && !progress.uploadComplete) {\n return STATE_UPLOADING\n }\n // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n if (progress.preprocess && state !== STATE_UPLOADING) {\n state = STATE_PREPROCESSING\n }\n // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n if (progress.postprocess && state !== STATE_UPLOADING && state !== STATE_PREPROCESSING) {\n state = STATE_POSTPROCESSING\n }\n }\n return state\n}\n\nfunction calculateProcessingProgress (files) {\n // Collect pre or postprocessing progress states.\n const progresses = []\n Object.keys(files).forEach((fileID) => {\n const { progress } = files[fileID]\n if (progress.preprocess) {\n progresses.push(progress.preprocess)\n }\n if (progress.postprocess) {\n progresses.push(progress.postprocess)\n }\n })\n\n // In the future we should probably do this differently. For now we'll take the\n // mode and message from the first file…\n const { mode, message } = progresses[0]\n const value = progresses.filter(isDeterminate).reduce((total, progress, index, all) => {\n return total + progress.value / all.length\n }, 0)\n function isDeterminate (progress) {\n return progress.mode === 'determinate'\n }\n\n return {\n mode,\n message,\n value\n }\n}\n\nfunction togglePauseResume (props) {\n if (props.isAllComplete) return\n\n if (!props.resumableUploads) {\n return props.cancelAll()\n }\n\n if (props.isAllPaused) {\n return props.resumeAll()\n }\n\n return props.pauseAll()\n}\n\nmodule.exports = (props) => {\n props = props || {}\n\n const uploadState = getUploadingState(props, props.files || {})\n\n let progressValue = props.totalProgress\n let progressMode\n let progressBarContent\n if (uploadState === STATE_PREPROCESSING || uploadState === STATE_POSTPROCESSING) {\n const progress = calculateProcessingProgress(props.files)\n progressMode = progress.mode\n if (progressMode === 'determinate') {\n progressValue = progress.value * 100\n }\n\n progressBarContent = ProgressBarProcessing(progress)\n } else if (uploadState === STATE_COMPLETE) {\n progressBarContent = ProgressBarComplete(props)\n } else if (uploadState === STATE_UPLOADING) {\n progressBarContent = ProgressBarUploading(props)\n } else if (uploadState === STATE_ERROR) {\n progressValue = undefined\n progressBarContent = ProgressBarError(props)\n }\n\n const width = typeof progressValue === 'number' ? progressValue : 100\n const isHidden = (uploadState === STATE_WAITING && props.hideUploadButton) ||\n (uploadState === STATE_WAITING && !props.newFiles > 0) ||\n (uploadState === STATE_COMPLETE && props.hideAfterFinish)\n\n const progressClasses = `uppy-StatusBar-progress\n ${progressMode ? 'is-' + progressMode : ''}`\n\n return (\n
    \n
    \n {progressBarContent}\n
    \n { props.newFiles && !props.hideUploadButton ? : null }\n { props.error ? : null }\n
    \n
    \n )\n}\n\nconst UploadBtn = (props) => {\n return \n}\n\nconst RetryBtn = (props) => {\n return \n}\n\nconst ProgressBarProcessing = (props) => {\n const value = Math.round(props.value * 100)\n\n return
    \n {props.mode === 'determinate' ? `${value}%・` : ''}\n {props.message}\n
    \n}\n\nconst ProgressBarUploading = (props) => {\n return (\n
    \n {props.isUploadStarted && !props.isAllComplete\n ? !props.isAllPaused\n ?
    { } Uploading... { }
    \n :
    { } Paused・{props.totalProgress}%
    \n : null\n }\n
    \n )\n}\n\nconst ProgressBarComplete = ({ totalProgress, i18n }) => {\n return (\n
    \n \n \n \n \n {i18n('uploadComplete')}・{totalProgress}%\n \n
    \n )\n}\n\nconst ProgressBarError = ({ error, retryAll, i18n }) => {\n return (\n
    \n {i18n('uploadFailed')}. {i18n('pleasePressRetry')}\n ?\n
    \n )\n}\n\nconst PauseResumeButtons = (props) => {\n const { resumableUploads, isAllPaused, i18n } = props\n const title = resumableUploads\n ? isAllPaused\n ? i18n('resumeUpload')\n : i18n('pauseUpload')\n : i18n('cancelUpload')\n\n return \n}\n", "const Plugin = require('../../core/Plugin')\nconst Translator = require('../../core/Translator')\nconst StatusBarUI = require('./StatusBar')\nconst { getSpeed } = require('../../core/Utils')\nconst { getBytesRemaining } = require('../../core/Utils')\nconst { prettyETA } = require('../../core/Utils')\nconst prettyBytes = require('prettier-bytes')\n\n/**\n * A status bar.\n */\nmodule.exports = class StatusBar extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.id = this.opts.id || 'StatusBar'\n this.title = 'StatusBar'\n this.type = 'progressindicator'\n\n const defaultLocale = {\n strings: {\n uploading: 'Uploading',\n uploadComplete: 'Upload complete',\n uploadFailed: 'Upload failed',\n pleasePressRetry: 'Please press Retry to upload again',\n paused: 'Paused',\n error: 'Error',\n retry: 'Retry',\n pressToRetry: 'Press to retry',\n retryUpload: 'Retry upload',\n resumeUpload: 'Resume upload',\n cancelUpload: 'Cancel upload',\n pauseUpload: 'Pause upload',\n uploadXFiles: {\n 0: 'Upload %{smart_count} file',\n 1: 'Upload %{smart_count} files'\n },\n uploadXNewFiles: {\n 0: 'Upload +%{smart_count} file',\n 1: 'Upload +%{smart_count} files'\n }\n }\n }\n\n // set default options\n const defaultOptions = {\n target: 'body',\n hideUploadButton: false,\n showProgressDetails: false,\n locale: defaultLocale,\n hideAfterFinish: true\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n this.translator = new Translator({locale: this.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.render = this.render.bind(this)\n this.install = this.install.bind(this)\n }\n\n getTotalSpeed (files) {\n let totalSpeed = 0\n files.forEach((file) => {\n totalSpeed = totalSpeed + getSpeed(file.progress)\n })\n return totalSpeed\n }\n\n getTotalETA (files) {\n const totalSpeed = this.getTotalSpeed(files)\n if (totalSpeed === 0) {\n return 0\n }\n\n const totalBytesRemaining = files.reduce((total, file) => {\n return total + getBytesRemaining(file.progress)\n }, 0)\n\n return Math.round(totalBytesRemaining / totalSpeed * 10) / 10\n }\n\n render (state) {\n const files = state.files\n\n const uploadStartedFiles = Object.keys(files).filter((file) => {\n return files[file].progress.uploadStarted\n })\n const newFiles = Object.keys(files).filter((file) => {\n return !files[file].progress.uploadStarted &&\n !files[file].progress.preprocess &&\n !files[file].progress.postprocess\n })\n const completeFiles = Object.keys(files).filter((file) => {\n return files[file].progress.uploadComplete\n })\n const erroredFiles = Object.keys(files).filter((file) => {\n return files[file].error\n })\n const inProgressFiles = Object.keys(files).filter((file) => {\n return !files[file].progress.uploadComplete &&\n files[file].progress.uploadStarted &&\n !files[file].isPaused\n })\n const processingFiles = Object.keys(files).filter((file) => {\n return files[file].progress.preprocess || files[file].progress.postprocess\n })\n\n let inProgressFilesArray = []\n inProgressFiles.forEach((file) => {\n inProgressFilesArray.push(files[file])\n })\n\n const totalSpeed = prettyBytes(this.getTotalSpeed(inProgressFilesArray))\n const totalETA = prettyETA(this.getTotalETA(inProgressFilesArray))\n\n // total size and uploaded size\n let totalSize = 0\n let totalUploadedSize = 0\n inProgressFilesArray.forEach((file) => {\n totalSize = totalSize + (file.progress.bytesTotal || 0)\n totalUploadedSize = totalUploadedSize + (file.progress.bytesUploaded || 0)\n })\n totalSize = prettyBytes(totalSize)\n totalUploadedSize = prettyBytes(totalUploadedSize)\n\n const isUploadStarted = uploadStartedFiles.length > 0\n\n const isAllComplete = state.totalProgress === 100 &&\n completeFiles.length === Object.keys(files).length &&\n processingFiles.length === 0\n\n const isAllErrored = isUploadStarted &&\n erroredFiles.length === uploadStartedFiles.length\n\n const isAllPaused = inProgressFiles.length === 0 &&\n !isAllComplete &&\n !isAllErrored &&\n uploadStartedFiles.length > 0\n\n const resumableUploads = this.uppy.getState().capabilities.resumableUploads || false\n\n return StatusBarUI({\n error: state.error,\n totalProgress: state.totalProgress,\n totalSize: totalSize,\n totalUploadedSize: totalUploadedSize,\n uploadStartedFiles: uploadStartedFiles,\n isAllComplete: isAllComplete,\n isAllPaused: isAllPaused,\n isAllErrored: isAllErrored,\n isUploadStarted: isUploadStarted,\n i18n: this.i18n,\n pauseAll: this.uppy.pauseAll,\n resumeAll: this.uppy.resumeAll,\n retryAll: this.uppy.retryAll,\n cancelAll: this.uppy.cancelAll,\n startUpload: this.uppy.upload,\n complete: completeFiles.length,\n newFiles: newFiles.length,\n inProgress: uploadStartedFiles.length,\n totalSpeed: totalSpeed,\n totalETA: totalETA,\n files: state.files,\n resumableUploads: resumableUploads,\n hideUploadButton: this.opts.hideUploadButton,\n hideAfterFinish: this.opts.hideAfterFinish\n })\n }\n\n install () {\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.unmount()\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Utils = require('../../core/Utils')\n/**\n * The Thumbnail Generator plugin\n *\n */\n\nmodule.exports = class ThumbnailGenerator extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'thumbnail'\n this.id = 'ThumbnailGenerator'\n this.title = 'Thumbnail Generator'\n this.queue = []\n this.queueProcessing = false\n\n const defaultOptions = {\n thumbnailWidth: 200\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.addToQueue = this.addToQueue.bind(this)\n }\n\n /**\n * Create a thumbnail for the given Uppy file object.\n *\n * @param {{data: Blob}} file\n * @param {number} width\n * @return {Promise}\n */\n createThumbnail (file, targetWidth) {\n const originalUrl = URL.createObjectURL(file.data)\n const onload = new Promise((resolve, reject) => {\n const image = new Image()\n image.src = originalUrl\n image.onload = () => {\n URL.revokeObjectURL(originalUrl)\n resolve(image)\n }\n image.onerror = () => {\n // The onerror event is totally useless unfortunately, as far as I know\n URL.revokeObjectURL(originalUrl)\n reject(new Error('Could not create thumbnail'))\n }\n })\n\n return onload\n .then(image => {\n const targetHeight = this.getProportionalHeight(image, targetWidth)\n const canvas = this.resizeImage(image, targetWidth, targetHeight)\n return this.canvasToBlob(canvas, 'image/png')\n })\n .then(blob => {\n return URL.createObjectURL(blob)\n })\n }\n\n /**\n * Resize an image to the target `width` and `height`.\n *\n * Returns a Canvas with the resized image on it.\n */\n resizeImage (image, targetWidth, targetHeight) {\n let sourceWidth = image.width\n let sourceHeight = image.height\n\n if (targetHeight < image.height / 2) {\n const steps = Math.floor(\n Math.log(image.width / targetWidth) / Math.log(2)\n )\n const stepScaled = this.downScaleInSteps(image, steps)\n image = stepScaled.image\n sourceWidth = stepScaled.sourceWidth\n sourceHeight = stepScaled.sourceHeight\n }\n\n const canvas = document.createElement('canvas')\n canvas.width = targetWidth\n canvas.height = targetHeight\n\n const context = canvas.getContext('2d')\n context.drawImage(\n image,\n 0,\n 0,\n sourceWidth,\n sourceHeight,\n 0,\n 0,\n targetWidth,\n targetHeight\n )\n return canvas\n }\n\n /**\n * Downscale an image by 50% `steps` times.\n */\n downScaleInSteps (image, steps) {\n let source = image\n let currentWidth = source.width\n let currentHeight = source.height\n\n for (let i = 0; i < steps; i += 1) {\n const canvas = document.createElement('canvas')\n const context = canvas.getContext('2d')\n canvas.width = currentWidth / 2\n canvas.height = currentHeight / 2\n context.drawImage(\n source,\n // The entire source image. We pass width and height here,\n // because we reuse this canvas, and should only scale down\n // the part of the canvas that contains the previous scale step.\n 0,\n 0,\n currentWidth,\n currentHeight,\n // Draw to 50% size\n 0,\n 0,\n currentWidth / 2,\n currentHeight / 2\n )\n currentWidth /= 2\n currentHeight /= 2\n source = canvas\n }\n\n return {\n image: source,\n sourceWidth: currentWidth,\n sourceHeight: currentHeight\n }\n }\n\n /**\n * Save a element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @return {Promise}\n */\n canvasToBlob (canvas, type, quality) {\n if (canvas.toBlob) {\n return new Promise(resolve => {\n canvas.toBlob(resolve, type, quality)\n })\n }\n return Promise.resolve().then(() => {\n return Utils.dataURItoBlob(canvas.toDataURL(type, quality), {})\n })\n }\n\n getProportionalHeight (img, width) {\n const aspect = img.width / img.height\n return Math.round(width / aspect)\n }\n\n /**\n * Set the preview URL for a file.\n */\n setPreviewURL (fileID, preview) {\n const { files } = this.uppy.state\n this.uppy.setState({\n files: Object.assign({}, files, {\n [fileID]: Object.assign({}, files[fileID], {\n preview: preview\n })\n })\n })\n }\n\n addToQueue (item) {\n this.queue.push(item)\n if (this.queueProcessing === false) {\n this.processQueue()\n }\n }\n\n processQueue () {\n this.queueProcessing = true\n if (this.queue.length > 0) {\n const current = this.queue.shift()\n return this.requestThumbnail(current)\n .catch(err => {}) // eslint-disable-line handle-callback-err\n .then(() => this.processQueue())\n } else {\n this.queueProcessing = false\n }\n }\n\n requestThumbnail (file) {\n if (Utils.isPreviewSupported(file.type) && !file.isRemote) {\n return this.createThumbnail(file, this.opts.thumbnailWidth)\n .then(preview => {\n this.setPreviewURL(file.id, preview)\n })\n .catch(err => {\n console.warn(err.stack || err.message)\n })\n }\n return Promise.resolve()\n }\n\n install () {\n this.uppy.on('file-added', this.addToQueue)\n }\n uninstall () {\n this.uppy.off('file-added', this.addToQueue)\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Translator = require('../../core/Translator')\nconst dragDrop = require('drag-drop')\nconst DashboardUI = require('./Dashboard')\nconst StatusBar = require('../StatusBar')\nconst Informer = require('../Informer')\nconst ThumbnailGenerator = require('../ThumbnailGenerator')\nconst { findAllDOMElements, toArray } = require('../../core/Utils')\nconst prettyBytes = require('prettier-bytes')\nconst { defaultTabIcon } = require('./icons')\n\n// Some code for managing focus was adopted from https://github.com/ghosh/micromodal\n// MIT licence, https://github.com/ghosh/micromodal/blob/master/LICENSE.md\n// Copyright (c) 2017 Indrashish Ghosh\nconst FOCUSABLE_ELEMENTS = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\n 'select:not([disabled]):not([aria-hidden])',\n 'textarea:not([disabled]):not([aria-hidden])',\n 'button:not([disabled]):not([aria-hidden])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable]',\n '[tabindex]:not([tabindex^=\"-\"])'\n]\n\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\nmodule.exports = class Dashboard extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.id = this.opts.id || 'Dashboard'\n this.title = 'Dashboard'\n this.type = 'orchestrator'\n\n const defaultLocale = {\n strings: {\n selectToUpload: 'Select files to upload',\n closeModal: 'Close Modal',\n upload: 'Upload',\n importFrom: 'Import files from',\n dashboardWindowTitle: 'Uppy Dashboard Window (Press escape to close)',\n dashboardTitle: 'Uppy Dashboard',\n copyLinkToClipboardSuccess: 'Link copied to clipboard.',\n copyLinkToClipboardFallback: 'Copy the URL below',\n copyLink: 'Copy link',\n fileSource: 'File source',\n done: 'Done',\n name: 'Name',\n removeFile: 'Remove file',\n editFile: 'Edit file',\n editing: 'Editing',\n finishEditingFile: 'Finish editing file',\n localDisk: 'Local Disk',\n myDevice: 'My Device',\n dropPasteImport: 'Drop files here, paste, import from one of the locations above or',\n dropPaste: 'Drop files here, paste or',\n browse: 'browse',\n fileProgress: 'File progress: upload speed and ETA',\n numberOfSelectedFiles: 'Number of selected files',\n uploadAllNewFiles: 'Upload all new files',\n emptyFolderAdded: 'No files were added from empty folder',\n uploadXFiles: {\n 0: 'Upload %{smart_count} file',\n 1: 'Upload %{smart_count} files'\n },\n uploadXNewFiles: {\n 0: 'Upload +%{smart_count} file',\n 1: 'Upload +%{smart_count} files'\n },\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}'\n }\n }\n }\n\n // set default options\n const defaultOptions = {\n target: 'body',\n metaFields: [],\n trigger: '#uppy-select-files',\n inline: false,\n width: 750,\n height: 550,\n thumbnailWidth: 280,\n defaultTabIcon: defaultTabIcon,\n showProgressDetails: false,\n hideUploadButton: false,\n hideProgressAfterFinish: false,\n note: null,\n closeModalOnClickOutside: false,\n disableStatusBar: false,\n disableInformer: false,\n disableThumbnailGenerator: false,\n disablePageScrollWhenModalOpen: true,\n onRequestCloseModal: () => this.closeModal(),\n locale: defaultLocale\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n this.translator = new Translator({locale: this.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.openModal = this.openModal.bind(this)\n this.closeModal = this.closeModal.bind(this)\n this.requestCloseModal = this.requestCloseModal.bind(this)\n this.isModalOpen = this.isModalOpen.bind(this)\n\n this.addTarget = this.addTarget.bind(this)\n this.hideAllPanels = this.hideAllPanels.bind(this)\n this.showPanel = this.showPanel.bind(this)\n this.getFocusableNodes = this.getFocusableNodes.bind(this)\n this.setFocusToFirstNode = this.setFocusToFirstNode.bind(this)\n this.maintainFocus = this.maintainFocus.bind(this)\n\n this.initEvents = this.initEvents.bind(this)\n this.onKeydown = this.onKeydown.bind(this)\n this.handleClickOutside = this.handleClickOutside.bind(this)\n this.handleFileCard = this.handleFileCard.bind(this)\n this.handleDrop = this.handleDrop.bind(this)\n this.handlePaste = this.handlePaste.bind(this)\n this.handleInputChange = this.handleInputChange.bind(this)\n this.updateDashboardElWidth = this.updateDashboardElWidth.bind(this)\n this.render = this.render.bind(this)\n this.install = this.install.bind(this)\n }\n\n addTarget (plugin) {\n const callerPluginId = plugin.id || plugin.constructor.name\n const callerPluginName = plugin.title || callerPluginId\n const callerPluginType = plugin.type\n\n if (callerPluginType !== 'acquirer' &&\n callerPluginType !== 'progressindicator' &&\n callerPluginType !== 'presenter') {\n let msg = 'Dashboard: Modal can only be used by plugins of types: acquirer, progressindicator, presenter'\n this.uppy.log(msg)\n return\n }\n\n const target = {\n id: callerPluginId,\n name: callerPluginName,\n type: callerPluginType\n }\n\n const state = this.getPluginState()\n const newTargets = state.targets.slice()\n newTargets.push(target)\n\n this.setPluginState({\n targets: newTargets\n })\n\n return this.el\n }\n\n hideAllPanels () {\n this.setPluginState({\n activePanel: false\n })\n }\n\n showPanel (id) {\n const { targets } = this.getPluginState()\n\n const activePanel = targets.filter((target) => {\n return target.type === 'acquirer' && target.id === id\n })[0]\n\n this.setPluginState({\n activePanel: activePanel\n })\n }\n\n requestCloseModal () {\n if (this.opts.onRequestCloseModal) {\n return this.opts.onRequestCloseModal()\n } else {\n this.closeModal()\n }\n }\n\n getFocusableNodes () {\n const nodes = this.el.querySelectorAll(FOCUSABLE_ELEMENTS)\n return Object.keys(nodes).map((key) => nodes[key])\n }\n\n setFocusToFirstNode () {\n const focusableNodes = this.getFocusableNodes()\n if (focusableNodes.length) focusableNodes[0].focus()\n }\n\n maintainFocus (event) {\n var focusableNodes = this.getFocusableNodes()\n var focusedItemIndex = focusableNodes.indexOf(document.activeElement)\n\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus()\n event.preventDefault()\n }\n\n if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus()\n event.preventDefault()\n }\n }\n\n openModal () {\n this.setPluginState({\n isHidden: false\n })\n\n // save scroll position\n this.savedScrollPosition = window.scrollY\n // save active element, so we can restore focus when modal is closed\n this.savedActiveElement = document.activeElement\n\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.add('uppy-Dashboard-isOpen')\n }\n\n this.updateDashboardElWidth()\n this.setFocusToFirstNode()\n }\n\n closeModal () {\n this.setPluginState({\n isHidden: true\n })\n\n if (this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isOpen')\n }\n\n this.savedActiveElement.focus()\n }\n\n isModalOpen () {\n return !this.getPluginState().isHidden || false\n }\n\n onKeydown (event) {\n // close modal on esc key press\n if (event.keyCode === 27) this.requestCloseModal(event)\n // maintainFocus on tab key press\n if (event.keyCode === 9) this.maintainFocus(event)\n }\n\n handleClickOutside () {\n if (this.opts.closeModalOnClickOutside) this.requestCloseModal()\n }\n\n handlePaste (ev) {\n const files = toArray(ev.clipboardData.items)\n files.forEach((file) => {\n if (file.kind !== 'file') return\n\n const blob = file.getAsFile()\n if (!blob) {\n this.uppy.log('[Dashboard] File pasted, but the file blob is empty')\n this.uppy.info('Error pasting file', 'error')\n return\n }\n this.uppy.log('[Dashboard] File pasted')\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: blob\n })\n })\n }\n\n handleInputChange (ev) {\n ev.preventDefault()\n const files = toArray(ev.target.files)\n\n files.forEach((file) => {\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n })\n })\n }\n\n initEvents () {\n // Modal open button\n const showModalTrigger = findAllDOMElements(this.opts.trigger)\n if (!this.opts.inline && showModalTrigger) {\n showModalTrigger.forEach(trigger => trigger.addEventListener('click', this.openModal))\n }\n\n if (!this.opts.inline && !showModalTrigger) {\n this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options unless you are planning to call openModal() method yourself')\n }\n\n if (!this.opts.inline) {\n document.addEventListener('keydown', this.onKeydown)\n }\n\n // Drag Drop\n this.removeDragDropListener = dragDrop(this.el, (files) => {\n this.handleDrop(files)\n })\n\n this.uppy.on('dashboard:file-card', this.handleFileCard)\n\n this.updateDashboardElWidth()\n window.addEventListener('resize', this.updateDashboardElWidth)\n }\n\n removeEvents () {\n const showModalTrigger = findAllDOMElements(this.opts.trigger)\n if (!this.opts.inline && showModalTrigger) {\n showModalTrigger.forEach(trigger => trigger.removeEventListener('click', this.openModal))\n }\n\n if (!this.opts.inline) {\n document.removeEventListener('keydown', this.onKeydown)\n }\n\n this.removeDragDropListener()\n this.uppy.off('dashboard:file-card', this.handleFileCard)\n window.removeEventListener('resize', this.updateDashboardElWidth)\n }\n\n updateDashboardElWidth () {\n const dashboardEl = this.el.querySelector('.uppy-Dashboard-inner')\n this.uppy.log(`Dashboard width: ${dashboardEl.offsetWidth}`)\n\n this.setPluginState({\n containerWidth: dashboardEl.offsetWidth\n })\n }\n\n handleFileCard (fileId) {\n this.setPluginState({\n fileCardFor: fileId || false\n })\n }\n\n handleDrop (files) {\n this.uppy.log('[Dashboard] Files were dropped')\n\n files.forEach((file) => {\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n })\n })\n }\n\n render (state) {\n const pluginState = this.getPluginState()\n const files = state.files\n\n const newFiles = Object.keys(files).filter((file) => {\n return !files[file].progress.uploadStarted\n })\n const inProgressFiles = Object.keys(files).filter((file) => {\n return !files[file].progress.uploadComplete &&\n files[file].progress.uploadStarted &&\n !files[file].isPaused\n })\n\n let inProgressFilesArray = []\n inProgressFiles.forEach((file) => {\n inProgressFilesArray.push(files[file])\n })\n\n let totalSize = 0\n let totalUploadedSize = 0\n inProgressFilesArray.forEach((file) => {\n totalSize = totalSize + (file.progress.bytesTotal || 0)\n totalUploadedSize = totalUploadedSize + (file.progress.bytesUploaded || 0)\n })\n totalSize = prettyBytes(totalSize)\n totalUploadedSize = prettyBytes(totalUploadedSize)\n\n const attachRenderFunctionToTarget = (target) => {\n const plugin = this.uppy.getPlugin(target.id)\n return Object.assign({}, target, {\n icon: plugin.icon || this.opts.defaultTabIcon,\n render: plugin.render\n })\n }\n\n const isSupported = (target) => {\n const plugin = this.uppy.getPlugin(target.id)\n // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n if (typeof plugin.isSupported !== 'function') {\n return true\n }\n return plugin.isSupported()\n }\n\n const acquirers = pluginState.targets\n .filter(target => target.type === 'acquirer' && isSupported(target))\n .map(attachRenderFunctionToTarget)\n\n const progressindicators = pluginState.targets\n .filter(target => target.type === 'progressindicator')\n .map(attachRenderFunctionToTarget)\n\n const startUpload = (ev) => {\n this.uppy.upload().catch((err) => {\n // Log error.\n this.uppy.log(err.stack || err.message || err)\n })\n }\n\n const cancelUpload = (fileID) => {\n this.uppy.emit('upload-cancel', fileID)\n this.uppy.removeFile(fileID)\n }\n\n const showFileCard = (fileID) => {\n this.uppy.emit('dashboard:file-card', fileID)\n }\n\n const fileCardDone = (meta, fileID) => {\n this.uppy.setFileMeta(fileID, meta)\n this.uppy.emit('dashboard:file-card')\n }\n\n return DashboardUI({\n state: state,\n modal: pluginState,\n newFiles: newFiles,\n files: files,\n totalFileCount: Object.keys(files).length,\n totalProgress: state.totalProgress,\n acquirers: acquirers,\n activePanel: pluginState.activePanel,\n getPlugin: this.uppy.getPlugin,\n progressindicators: progressindicators,\n autoProceed: this.uppy.opts.autoProceed,\n hideUploadButton: this.opts.hideUploadButton,\n id: this.id,\n closeModal: this.requestCloseModal,\n handleClickOutside: this.handleClickOutside,\n handleInputChange: this.handleInputChange,\n handlePaste: this.handlePaste,\n showProgressDetails: this.opts.showProgressDetails,\n inline: this.opts.inline,\n showPanel: this.showPanel,\n hideAllPanels: this.hideAllPanels,\n log: this.uppy.log,\n i18n: this.i18n,\n addFile: this.uppy.addFile,\n removeFile: this.uppy.removeFile,\n info: this.uppy.info,\n note: this.opts.note,\n metaFields: this.getPluginState().metaFields,\n resumableUploads: this.uppy.state.capabilities.resumableUploads || false,\n startUpload: startUpload,\n pauseUpload: this.uppy.pauseResume,\n retryUpload: this.uppy.retryUpload,\n cancelUpload: cancelUpload,\n fileCardFor: pluginState.fileCardFor,\n showFileCard: showFileCard,\n fileCardDone: fileCardDone,\n updateDashboardElWidth: this.updateDashboardElWidth,\n maxWidth: this.opts.maxWidth,\n maxHeight: this.opts.maxHeight,\n currentWidth: pluginState.containerWidth,\n isWide: pluginState.containerWidth > 400\n })\n }\n\n discoverProviderPlugins () {\n this.uppy.iteratePlugins((plugin) => {\n if (plugin && !plugin.target && plugin.opts && plugin.opts.target === this.constructor) {\n this.addTarget(plugin)\n }\n })\n }\n\n install () {\n // Set default state for Modal\n this.setPluginState({\n isHidden: true,\n showFileCard: false,\n activePanel: false,\n metaFields: this.opts.metaFields,\n targets: []\n })\n\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n\n const plugins = this.opts.plugins || []\n plugins.forEach((pluginID) => {\n const plugin = this.uppy.getPlugin(pluginID)\n if (plugin) plugin.mount(this, plugin)\n })\n\n if (!this.opts.disableStatusBar) {\n this.uppy.use(StatusBar, {\n target: this,\n hideUploadButton: this.opts.hideUploadButton,\n hideAfterFinish: this.opts.hideProgressAfterFinish,\n locale: this.opts.locale\n })\n }\n\n if (!this.opts.disableInformer) {\n this.uppy.use(Informer, {\n target: this\n })\n }\n\n if (!this.opts.disableThumbnailGenerator) {\n this.uppy.use(ThumbnailGenerator, {\n thumbnailWidth: this.opts.thumbnailWidth\n })\n }\n\n this.discoverProviderPlugins()\n\n this.initEvents()\n }\n\n uninstall () {\n if (!this.opts.disableInformer) {\n const informer = this.uppy.getPlugin('Informer')\n // Checking if this plugin exists, in case it was removed by uppy-core\n // before the Dashboard was.\n if (informer) this.uppy.removePlugin(informer)\n }\n\n if (!this.opts.disableStatusBar) {\n const statusBar = this.uppy.getPlugin('StatusBar')\n if (statusBar) this.uppy.removePlugin(statusBar)\n }\n\n if (!this.opts.disableThumbnailGenerator) {\n const thumbnail = this.uppy.getPlugin('ThumbnailGenerator')\n if (thumbnail) this.uppy.removePlugin(thumbnail)\n }\n\n const plugins = this.opts.plugins || []\n plugins.forEach((pluginID) => {\n const plugin = this.uppy.getPlugin(pluginID)\n if (plugin) plugin.unmount()\n })\n\n this.unmount()\n this.removeEvents()\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Translator = require('../../core/Translator')\nconst { toArray } = require('../../core/Utils')\nconst dragDrop = require('drag-drop')\nconst { h } = require('preact')\n\n/**\n * Drag & Drop plugin\n *\n */\nmodule.exports = class DragDrop extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'acquirer'\n this.id = this.opts.id || 'DragDrop'\n this.title = 'Drag & Drop'\n\n const defaultLocale = {\n strings: {\n dropHereOr: 'Drop files here or',\n browse: 'browse'\n }\n }\n\n // Default options\n const defaultOpts = {\n target: null,\n width: '100%',\n height: '100%',\n note: '',\n locale: defaultLocale\n }\n\n // Merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOpts, opts)\n\n // Check for browser dragDrop support\n this.isDragDropSupported = this.checkDragDropSupport()\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n // i18n\n this.translator = new Translator({locale: this.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n\n // Bind `this` to class methods\n this.handleDrop = this.handleDrop.bind(this)\n this.handleBrowseClick = this.handleBrowseClick.bind(this)\n this.handleInputChange = this.handleInputChange.bind(this)\n this.checkDragDropSupport = this.checkDragDropSupport.bind(this)\n this.render = this.render.bind(this)\n }\n\n /**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n * @return {Boolean}\n */\n checkDragDropSupport () {\n const div = document.createElement('div')\n\n if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n return false\n }\n\n if (!('FormData' in window)) {\n return false\n }\n\n if (!('FileReader' in window)) {\n return false\n }\n\n return true\n }\n\n handleDrop (files) {\n this.uppy.log('[DragDrop] Files dropped')\n\n files.forEach((file) => {\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n })\n })\n }\n\n handleInputChange (ev) {\n this.uppy.log('[DragDrop] Files selected through input')\n\n const files = toArray(ev.target.files)\n\n files.forEach((file) => {\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n })\n })\n }\n\n handleBrowseClick (ev) {\n ev.stopPropagation()\n this.input.click()\n }\n\n render (state) {\n const DragDropClass = `uppy uppy-DragDrop-container ${this.isDragDropSupported ? 'is-dragdrop-supported' : ''}`\n const DragDropStyle = {\n width: this.opts.width,\n height: this.opts.height\n }\n return (\n
    \n
    \n \n \n \n {\n this.input = input\n }}\n onchange={this.handleInputChange} />\n \n {this.opts.note}\n
    \n
    \n )\n }\n\n install () {\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n this.removeDragDropListener = dragDrop(this.el, (files) => {\n this.handleDrop(files)\n this.uppy.log(files)\n })\n }\n\n uninstall () {\n this.unmount()\n this.removeDragDropListener()\n }\n}\n", "const { h } = require('preact')\n\nmodule.exports = {\n folder: () => {\n return \n \n \n },\n file: () => {\n return \n \n \n }\n}\n", "(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n", "'use strict'\n\nrequire('whatwg-fetch')\n\nconst _getName = (id) => {\n return id.split('-').map((s) => s.charAt(0).toUpperCase() + s.slice(1)).join(' ')\n}\n\nmodule.exports = class Provider {\n constructor (uppy, opts) {\n this.uppy = uppy\n this.opts = opts\n this.provider = opts.provider\n this.id = this.provider\n this.authProvider = opts.authProvider || this.provider\n this.name = this.opts.name || _getName(this.id)\n\n this.onReceiveResponse = this.onReceiveResponse.bind(this)\n }\n\n get hostname () {\n const uppyServer = this.uppy.state.uppyServer || {}\n const host = this.opts.host\n return uppyServer[host] || host\n }\n\n onReceiveResponse (response) {\n const uppyServer = this.uppy.state.uppyServer || {}\n const host = this.opts.host\n const headers = response.headers\n // Store the self-identified domain name for the uppy-server we just hit.\n if (headers.has('i-am') && headers.get('i-am') !== uppyServer[host]) {\n this.uppy.setState({\n uppyServer: Object.assign({}, uppyServer, {\n [host]: headers.get('i-am')\n })\n })\n }\n return response\n }\n\n checkAuth () {\n return fetch(`${this.hostname}/${this.id}/authorized`, {\n method: 'get',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n })\n .then(this.onReceiveResponse)\n .then((res) => {\n return res.json()\n .then((payload) => {\n return payload.authenticated\n })\n })\n }\n\n authUrl () {\n return `${this.hostname}/${this.id}/connect`\n }\n\n fileUrl (id) {\n return `${this.hostname}/${this.id}/get/${id}`\n }\n\n list (directory) {\n return fetch(`${this.hostname}/${this.id}/list/${directory || ''}`, {\n method: 'get',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n })\n .then(this.onReceiveResponse)\n .then((res) => res.json())\n }\n\n logout (redirect = location.href) {\n return fetch(`${this.hostname}/${this.id}/logout?redirect=${redirect}`, {\n method: 'get',\n credentials: 'include',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n })\n }\n}\n", "const { h } = require('preact')\n\nmodule.exports = (props) => {\n return
    \n Loading...\n
    \n}\n", "const LoaderView = require('./Loader')\nconst { h, Component } = require('preact')\n\nclass AuthView extends Component {\n componentDidMount () {\n this.props.checkAuth()\n }\n\n render () {\n const AuthBlock = () => {\n return
    \n

    Please authenticate with {this.props.pluginName}
    to select files

    \n \n {this.props.demo &&\n \n }\n
    \n }\n\n return (\n
    \n {this.props.checkAuthInProgress\n ? LoaderView()\n : AuthBlock()\n }\n
    \n )\n }\n}\n\nmodule.exports = AuthView\n", "const { h } = require('preact')\n\nmodule.exports = (props) => {\n return
  • \n}\n", "const { h } = require('preact')\nconst Breadcrumb = require('./Breadcrumb')\n\nmodule.exports = (props) => {\n return (\n
      \n {\n props.directories.map((directory, i) => {\n return Breadcrumb({\n getFolder: () => props.getFolder(directory.id),\n title: i === 0 ? props.title : directory.title\n })\n })\n }\n
    \n )\n}\n", "const { h, Component } = require('preact')\n\nmodule.exports = class Filter extends Component {\n constructor (props) {\n super(props)\n\n this.handleKeyPress = this.handleKeyPress.bind(this)\n }\n\n componentDidMount () {\n this.input.focus()\n }\n\n handleKeyPress (ev) {\n if (ev.keyCode === 13) {\n ev.stopPropagation()\n ev.preventDefault()\n return\n }\n this.props.filterQuery(ev)\n }\n\n render () {\n return
    \n { this.input = input }} />\n \n \n \n \n \n
    \n }\n}\n", "const cuid = require('cuid')\nconst { h } = require('preact')\n\nmodule.exports = (props) => {\n const uniqueId = cuid()\n\n const stop = (ev) => {\n if (ev.keyCode === 13) {\n ev.stopPropagation()\n ev.preventDefault()\n }\n }\n\n const handleItemClick = (ev) => {\n ev.preventDefault()\n // when file is clicked, select it, but when folder is clicked, open it\n if (props.type === 'folder') {\n return props.handleClick(ev)\n }\n props.handleCheckboxClick(ev)\n }\n\n return (\n
  • \n
    \n \n
    \n \n
  • \n )\n}\n", "const Row = require('./TableRow')\nconst { h } = require('preact')\n\nmodule.exports = (props) => {\n // const headers = props.columns.map((column) => {\n // return html`\n // \n // ${column.name}\n // \n // `\n // })\n\n // \n // ${headers}\n // \n\n return (\n
    \n
      \n {props.folders.map(folder => {\n let isDisabled = false\n let isChecked = props.isChecked(folder)\n if (isChecked) {\n isDisabled = isChecked.loading\n }\n return Row({\n title: props.getItemName(folder),\n type: 'folder',\n // active: props.activeRow(folder),\n getItemIcon: () => props.getItemIcon(folder),\n handleClick: () => props.handleFolderClick(folder),\n isDisabled: isDisabled,\n isChecked: isChecked,\n handleCheckboxClick: (e) => props.toggleCheckbox(e, folder),\n columns: props.columns\n })\n })}\n {props.files.map(file => {\n return Row({\n title: props.getItemName(file),\n type: 'file',\n // active: props.activeRow(file),\n getItemIcon: () => props.getItemIcon(file),\n handleClick: () => props.handleFileClick(file),\n isDisabled: false,\n isChecked: props.isChecked(file),\n handleCheckboxClick: (e) => props.toggleCheckbox(e, file),\n columns: props.columns\n })\n })}\n
    \n
    \n )\n}\n", "const Breadcrumbs = require('./Breadcrumbs')\nconst Filter = require('./Filter')\nconst Table = require('./Table')\nconst { h } = require('preact')\n\nmodule.exports = (props) => {\n let filteredFolders = props.folders\n let filteredFiles = props.files\n\n if (props.filterInput !== '') {\n filteredFolders = props.filterItems(props.folders)\n filteredFiles = props.filterItems(props.files)\n }\n\n return (\n
    \n
    \n
    \n { props.isSearchVisible && }\n
    \n
    \n \n {Breadcrumbs({\n getFolder: props.getFolder,\n directories: props.directories,\n title: props.title\n })}\n \n
    \n
    \n {Table({\n columns: [{\n name: 'Name',\n key: 'title'\n }],\n folders: filteredFolders,\n files: filteredFiles,\n activeRow: props.isActiveRow,\n sortByTitle: props.sortByTitle,\n sortByDate: props.sortByDate,\n handleFileClick: props.addFile,\n handleFolderClick: props.getNextFolder,\n isChecked: props.isChecked,\n toggleCheckbox: props.toggleCheckbox,\n getItemName: props.getItemName,\n getItemIcon: props.getItemIcon,\n handleScroll: props.handleScroll,\n title: props.title\n })}\n \n
    \n )\n}\n", "const AuthView = require('./AuthView')\nconst Browser = require('./Browser')\nconst LoaderView = require('./Loader')\nconst Utils = require('../../../core/Utils')\nconst { h } = require('preact')\n\n/**\n * Class to easily generate generic views for plugins\n *\n *\n * This class expects the plugin instance using it to have the following\n * accessor methods.\n * Each method takes the item whose property is to be accessed\n * as a param\n *\n * isFolder\n * @return {Boolean} for if the item is a folder or not\n * getItemData\n * @return {Object} that is format ready for uppy upload/download\n * getItemIcon\n * @return {Object} html instance of the item's icon\n * getItemSubList\n * @return {Array} sub-items in the item. e.g a folder may contain sub-items\n * getItemName\n * @return {String} display friendly name of the item\n * getMimeType\n * @return {String} mime type of the item\n * getItemId\n * @return {String} unique id of the item\n * getItemRequestPath\n * @return {String} unique request path of the item when making calls to uppy server\n * getItemModifiedDate\n * @return {object} or {String} date of when last the item was modified\n * getItemThumbnailUrl\n * @return {String}\n */\nmodule.exports = class View {\n /**\n * @param {object} instance of the plugin\n */\n constructor (plugin, opts) {\n this.plugin = plugin\n this.Provider = plugin[plugin.id]\n\n // set default options\n const defaultOptions = {\n viewType: 'list'\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n // Logic\n this.updateFolderState = this.updateFolderState.bind(this)\n this.addFile = this.addFile.bind(this)\n this.filterItems = this.filterItems.bind(this)\n this.filterQuery = this.filterQuery.bind(this)\n this.toggleSearch = this.toggleSearch.bind(this)\n this.getFolder = this.getFolder.bind(this)\n this.getNextFolder = this.getNextFolder.bind(this)\n this.logout = this.logout.bind(this)\n this.checkAuth = this.checkAuth.bind(this)\n this.handleAuth = this.handleAuth.bind(this)\n this.handleDemoAuth = this.handleDemoAuth.bind(this)\n this.sortByTitle = this.sortByTitle.bind(this)\n this.sortByDate = this.sortByDate.bind(this)\n this.isActiveRow = this.isActiveRow.bind(this)\n this.isChecked = this.isChecked.bind(this)\n this.toggleCheckbox = this.toggleCheckbox.bind(this)\n this.handleError = this.handleError.bind(this)\n this.handleScroll = this.handleScroll.bind(this)\n this.donePicking = this.donePicking.bind(this)\n\n this.plugin.uppy.on('file-removed', this.updateFolderState)\n\n // Visual\n this.render = this.render.bind(this)\n }\n\n tearDown () {\n this.plugin.uppy.off('file-removed', this.updateFolderState)\n }\n\n _updateFilesAndFolders (res, files, folders) {\n this.plugin.getItemSubList(res).forEach((item) => {\n if (this.plugin.isFolder(item)) {\n folders.push(item)\n } else {\n files.push(item)\n }\n })\n\n this.plugin.setPluginState({ folders, files })\n }\n\n checkAuth () {\n this.plugin.setPluginState({ checkAuthInProgress: true })\n this.Provider.checkAuth()\n .then((authenticated) => {\n this.plugin.setPluginState({ checkAuthInProgress: false })\n this.plugin.onAuth(authenticated)\n })\n .catch((err) => {\n this.plugin.setPluginState({ checkAuthInProgress: false })\n this.handleError(err)\n })\n }\n\n /**\n * Based on folder ID, fetch a new folder and update it to state\n * @param {String} id Folder id\n * @return {Promise} Folders/files in folder\n */\n getFolder (id, name) {\n return this._loaderWrapper(\n this.Provider.list(id),\n (res) => {\n let folders = []\n let files = []\n let updatedDirectories\n\n const state = this.plugin.getPluginState()\n const index = state.directories.findIndex((dir) => id === dir.id)\n\n if (index !== -1) {\n updatedDirectories = state.directories.slice(0, index + 1)\n } else {\n updatedDirectories = state.directories.concat([{id, title: name || this.plugin.getItemName(res)}])\n }\n\n this._updateFilesAndFolders(res, files, folders)\n this.plugin.setPluginState({ directories: updatedDirectories })\n },\n this.handleError)\n }\n\n /**\n * Fetches new folder\n * @param {Object} Folder\n * @param {String} title Folder title\n */\n getNextFolder (folder) {\n let id = this.plugin.getItemRequestPath(folder)\n this.getFolder(id, this.plugin.getItemName(folder))\n this.lastCheckbox = undefined\n }\n\n addFile (file, isCheckbox = false) {\n const tagFile = {\n source: this.plugin.id,\n data: this.plugin.getItemData(file),\n name: this.plugin.getItemName(file) || this.plugin.getItemId(file),\n type: this.plugin.getMimeType(file),\n isRemote: true,\n body: {\n fileId: this.plugin.getItemId(file)\n },\n remote: {\n host: this.plugin.opts.host,\n url: `${this.Provider.fileUrl(this.plugin.getItemRequestPath(file))}`,\n body: {\n fileId: this.plugin.getItemId(file)\n }\n }\n }\n\n Utils.getFileType(tagFile).then(fileType => {\n if (fileType && Utils.isPreviewSupported(fileType)) {\n tagFile.preview = this.plugin.getItemThumbnailUrl(file)\n }\n this.plugin.uppy.log('Adding remote file')\n this.plugin.uppy.addFile(tagFile)\n if (!isCheckbox) {\n this.donePicking()\n }\n })\n }\n\n /**\n * Removes session token on client side.\n */\n logout () {\n this.Provider.logout(location.href)\n .then((res) => res.json())\n .then((res) => {\n if (res.ok) {\n const newState = {\n authenticated: false,\n files: [],\n folders: [],\n directories: []\n }\n this.plugin.setPluginState(newState)\n }\n }).catch(this.handleError)\n }\n\n filterQuery (e) {\n const state = this.plugin.getPluginState()\n this.plugin.setPluginState(Object.assign({}, state, {\n filterInput: e.target.value\n }))\n }\n\n toggleSearch (inputEl) {\n const state = this.plugin.getPluginState()\n\n this.plugin.setPluginState({\n isSearchVisible: !state.isSearchVisible,\n filterInput: ''\n })\n }\n\n filterItems (items) {\n const state = this.plugin.getPluginState()\n return items.filter((folder) => {\n return this.plugin.getItemName(folder).toLowerCase().indexOf(state.filterInput.toLowerCase()) !== -1\n })\n }\n\n sortByTitle () {\n const state = Object.assign({}, this.plugin.getPluginState())\n const {files, folders, sorting} = state\n\n let sortedFiles = files.sort((fileA, fileB) => {\n if (sorting === 'titleDescending') {\n return this.plugin.getItemName(fileB).localeCompare(this.plugin.getItemName(fileA))\n }\n return this.plugin.getItemName(fileA).localeCompare(this.plugin.getItemName(fileB))\n })\n\n let sortedFolders = folders.sort((folderA, folderB) => {\n if (sorting === 'titleDescending') {\n return this.plugin.getItemName(folderB).localeCompare(this.plugin.getItemName(folderA))\n }\n return this.plugin.getItemName(folderA).localeCompare(this.plugin.getItemName(folderB))\n })\n\n this.plugin.setPluginState(Object.assign({}, state, {\n files: sortedFiles,\n folders: sortedFolders,\n sorting: (sorting === 'titleDescending') ? 'titleAscending' : 'titleDescending'\n }))\n }\n\n sortByDate () {\n const state = Object.assign({}, this.plugin.getPluginState())\n const {files, folders, sorting} = state\n\n let sortedFiles = files.sort((fileA, fileB) => {\n let a = new Date(this.plugin.getItemModifiedDate(fileA))\n let b = new Date(this.plugin.getItemModifiedDate(fileB))\n\n if (sorting === 'dateDescending') {\n return a > b ? -1 : a < b ? 1 : 0\n }\n return a > b ? 1 : a < b ? -1 : 0\n })\n\n let sortedFolders = folders.sort((folderA, folderB) => {\n let a = new Date(this.plugin.getItemModifiedDate(folderA))\n let b = new Date(this.plugin.getItemModifiedDate(folderB))\n\n if (sorting === 'dateDescending') {\n return a > b ? -1 : a < b ? 1 : 0\n }\n\n return a > b ? 1 : a < b ? -1 : 0\n })\n\n this.plugin.setPluginState(Object.assign({}, state, {\n files: sortedFiles,\n folders: sortedFolders,\n sorting: (sorting === 'dateDescending') ? 'dateAscending' : 'dateDescending'\n }))\n }\n\n sortBySize () {\n const state = Object.assign({}, this.plugin.getPluginState())\n const {files, sorting} = state\n\n // check that plugin supports file sizes\n if (!files.length || !this.plugin.getItemData(files[0]).size) {\n return\n }\n\n let sortedFiles = files.sort((fileA, fileB) => {\n let a = this.plugin.getItemData(fileA).size\n let b = this.plugin.getItemData(fileB).size\n\n if (sorting === 'sizeDescending') {\n return a > b ? -1 : a < b ? 1 : 0\n }\n return a > b ? 1 : a < b ? -1 : 0\n })\n\n this.plugin.setPluginState(Object.assign({}, state, {\n files: sortedFiles,\n sorting: (sorting === 'sizeDescending') ? 'sizeAscending' : 'sizeDescending'\n }))\n }\n\n isActiveRow (file) {\n return this.plugin.getPluginState().activeRow === this.plugin.getItemId(file)\n }\n\n isChecked (item) {\n const itemId = this.providerFileToId(item)\n if (this.plugin.isFolder(item)) {\n const state = this.plugin.getPluginState()\n const folders = state.selectedFolders || {}\n if (itemId in folders) {\n return folders[itemId]\n }\n return false\n }\n return (itemId in this.plugin.uppy.getState().files)\n }\n\n /**\n * Adds all files found inside of specified folder.\n *\n * Uses separated state while folder contents are being fetched and\n * mantains list of selected folders, which are separated from files.\n */\n addFolder (folder) {\n const folderId = this.providerFileToId(folder)\n let state = this.plugin.getPluginState()\n let folders = state.selectedFolders || {}\n if (folderId in folders && folders[folderId].loading) {\n return\n }\n folders[folderId] = {loading: true, files: []}\n this.plugin.setPluginState({selectedFolders: folders})\n this.Provider.list(this.plugin.getItemRequestPath(folder)).then((res) => {\n let files = []\n this.plugin.getItemSubList(res).forEach((item) => {\n if (!this.plugin.isFolder(item)) {\n this.addFile(item, true)\n files.push(this.providerFileToId(item))\n }\n })\n state = this.plugin.getPluginState()\n state.selectedFolders[folderId] = {loading: false, files: files}\n this.plugin.setPluginState({selectedFolders: folders})\n const dashboard = this.plugin.uppy.getPlugin('Dashboard')\n let message\n if (files.length) {\n message = dashboard.i18n('folderAdded', {\n smart_count: files.length, folder: this.plugin.getItemName(folder)\n })\n } else {\n message = dashboard.i18n('emptyFolderAdded')\n }\n this.plugin.uppy.info(message)\n }).catch((e) => {\n state = this.plugin.getPluginState()\n delete state.selectedFolders[folderId]\n this.plugin.setPluginState({selectedFolders: state.selectedFolders})\n this.handleError(e)\n })\n }\n\n removeFolder (folderId) {\n let state = this.plugin.getPluginState()\n let folders = state.selectedFolders || {}\n if (!(folderId in folders)) {\n return\n }\n let folder = folders[folderId]\n if (folder.loading) {\n return\n }\n // deepcopy the files before iteration because the\n // original array constantly gets mutated during\n // the iteration by updateFolderState as each file\n // is removed and 'core:file-removed' is emitted.\n const files = folder.files.concat([])\n for (const fileId of files) {\n if (fileId in this.plugin.uppy.getState().files) {\n this.plugin.uppy.removeFile(fileId)\n }\n }\n delete folders[folderId]\n this.plugin.setPluginState({selectedFolders: folders})\n }\n\n /**\n * Updates selected folders state everytime file is being removed.\n *\n * Note that this is only important when files are getting removed from the\n * main screen, and will do nothing when you uncheck folder directly, since\n * it's already been done in removeFolder method.\n */\n updateFolderState (fileId) {\n let state = this.plugin.getPluginState()\n let folders = state.selectedFolders || {}\n for (let folderId in folders) {\n let folder = folders[folderId]\n if (folder.loading) {\n continue\n }\n let i = folder.files.indexOf(fileId)\n if (i > -1) {\n folder.files.splice(i, 1)\n }\n if (!folder.files.length) {\n delete folders[folderId]\n }\n }\n this.plugin.setPluginState({selectedFolders: folders})\n }\n\n /**\n * Toggles file/folder checkbox to on/off state while updating files list.\n *\n * Note that some extra complexity comes from supporting shift+click to\n * toggle multiple checkboxes at once, which is done by getting all files\n * in between last checked file and current one, and applying an on/off state\n * for all of them, depending on current file state.\n */\n toggleCheckbox (e, file) {\n e.stopPropagation()\n e.preventDefault()\n let { folders, files, filterInput } = this.plugin.getPluginState()\n let items = folders.concat(files)\n if (filterInput !== '') {\n items = this.filterItems(items)\n }\n let itemsToToggle = [file]\n if (this.lastCheckbox && e.shiftKey) {\n let prevIndex = items.indexOf(this.lastCheckbox)\n let currentIndex = items.indexOf(file)\n if (prevIndex < currentIndex) {\n itemsToToggle = items.slice(prevIndex, currentIndex + 1)\n } else {\n itemsToToggle = items.slice(currentIndex, prevIndex + 1)\n }\n }\n this.lastCheckbox = file\n if (this.isChecked(file)) {\n for (let item of itemsToToggle) {\n const itemId = this.providerFileToId(item)\n if (this.plugin.isFolder(item)) {\n this.removeFolder(itemId)\n } else {\n if (itemId in this.plugin.uppy.getState().files) {\n this.plugin.uppy.removeFile(itemId)\n }\n }\n }\n } else {\n for (let item of itemsToToggle) {\n if (this.plugin.isFolder(item)) {\n this.addFolder(item)\n } else {\n this.addFile(item, true)\n }\n }\n }\n }\n\n providerFileToId (file) {\n return Utils.generateFileID({\n data: this.plugin.getItemData(file),\n name: this.plugin.getItemName(file) || this.plugin.getItemId(file),\n type: this.plugin.getMimeType(file)\n })\n }\n\n handleDemoAuth () {\n const state = this.plugin.getPluginState()\n this.plugin.setPluginState({}, state, {\n authenticated: true\n })\n }\n\n handleAuth () {\n const urlId = Math.floor(Math.random() * 999999) + 1\n const redirect = `${location.href}${location.search ? '&' : '?'}id=${urlId}`\n\n const authState = btoa(JSON.stringify({ redirect }))\n const link = `${this.Provider.authUrl()}?state=${authState}`\n\n const authWindow = window.open(link, '_blank')\n const checkAuth = () => {\n let authWindowUrl\n\n try {\n authWindowUrl = authWindow.location.href\n } catch (e) {\n if (e instanceof DOMException || e instanceof TypeError) {\n return setTimeout(checkAuth, 100)\n } else throw e\n }\n\n // split url because chrome adds '#' to redirects\n if (authWindowUrl && authWindowUrl.split('#')[0] === redirect) {\n authWindow.close()\n this._loaderWrapper(this.Provider.checkAuth(), this.plugin.onAuth, this.handleError)\n } else {\n setTimeout(checkAuth, 100)\n }\n }\n\n checkAuth()\n }\n\n handleError (error) {\n const uppy = this.plugin.uppy\n const message = uppy.i18n('uppyServerError')\n uppy.log(error.toString())\n uppy.info({message: message, details: error.toString()}, 'error', 5000)\n }\n\n handleScroll (e) {\n const scrollPos = e.target.scrollHeight - (e.target.scrollTop + e.target.offsetHeight)\n const path = this.plugin.getNextPagePath ? this.plugin.getNextPagePath() : null\n\n if (scrollPos < 50 && path && !this._isHandlingScroll) {\n this.Provider.list(path)\n .then((res) => {\n const { files, folders } = this.plugin.getPluginState()\n this._updateFilesAndFolders(res, files, folders)\n }).catch(this.handleError)\n .then(() => { this._isHandlingScroll = false }) // always called\n\n this._isHandlingScroll = true\n }\n }\n\n donePicking () {\n const dashboard = this.plugin.uppy.getPlugin('Dashboard')\n if (dashboard) dashboard.hideAllPanels()\n }\n\n // displays loader view while asynchronous request is being made.\n _loaderWrapper (promise, then, catch_) {\n promise\n .then(then).catch(catch_)\n .then(() => this.plugin.setPluginState({ loading: false })) // always called.\n this.plugin.setPluginState({ loading: true })\n }\n\n render (state) {\n const { authenticated, checkAuthInProgress, loading } = this.plugin.getPluginState()\n\n if (loading) {\n return LoaderView()\n }\n\n if (!authenticated) {\n return h(AuthView, {\n pluginName: this.plugin.title,\n demo: this.plugin.opts.demo,\n checkAuth: this.checkAuth,\n handleAuth: this.handleAuth,\n handleDemoAuth: this.handleDemoAuth,\n checkAuthInProgress: checkAuthInProgress\n })\n }\n\n const browserProps = Object.assign({}, this.plugin.getPluginState(), {\n getNextFolder: this.getNextFolder,\n getFolder: this.getFolder,\n addFile: this.addFile,\n filterItems: this.filterItems,\n filterQuery: this.filterQuery,\n toggleSearch: this.toggleSearch,\n sortByTitle: this.sortByTitle,\n sortByDate: this.sortByDate,\n logout: this.logout,\n demo: this.plugin.opts.demo,\n isActiveRow: this.isActiveRow,\n isChecked: this.isChecked,\n toggleCheckbox: this.toggleCheckbox,\n getItemName: this.plugin.getItemName,\n getItemIcon: this.plugin.getItemIcon,\n handleScroll: this.handleScroll,\n done: this.donePicking,\n title: this.plugin.title,\n viewType: this.opts.viewType\n })\n\n return Browser(browserProps)\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Provider = require('../Provider')\nconst View = require('../Provider/view')\nconst icons = require('./icons')\nconst { h } = require('preact')\n\nmodule.exports = class Dropbox extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'acquirer'\n this.id = this.opts.id || 'Dropbox'\n this.title = 'Dropbox'\n this.icon = () => (\n \n \n \n \n \n )\n\n // writing out the key explicitly for readability the key used to store\n // the provider instance must be equal to this.id.\n this[this.id] = new Provider(uppy, {\n host: this.opts.host,\n provider: 'dropbox'\n })\n\n this.files = []\n\n this.onAuth = this.onAuth.bind(this)\n this.render = this.render.bind(this)\n\n // set default options\n const defaultOptions = {}\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n }\n\n install () {\n this.view = new View(this)\n // Set default state for Dropbox\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n })\n\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.view.tearDown()\n this.unmount()\n }\n\n onAuth (authenticated) {\n this.setPluginState({ authenticated })\n if (authenticated) {\n this.view.getFolder()\n }\n }\n\n isFolder (item) {\n return item['.tag'] === 'folder'\n }\n\n getItemData (item) {\n return item\n }\n\n getItemIcon (item) {\n return icons[item['.tag']]()\n }\n\n getItemSubList (item) {\n return item.entries\n }\n\n getItemName (item) {\n return item.name || ''\n }\n\n getMimeType (item) {\n // mime types aren't supported.\n return null\n }\n\n getItemId (item) {\n return item.id\n }\n\n getItemRequestPath (item) {\n return encodeURIComponent(item.path_lower)\n }\n\n getItemModifiedDate (item) {\n return item.server_modified\n }\n\n getItemThumbnailUrl (item) {\n return `${this.opts.host}/${this.Dropbox.id}/thumbnail/${this.getItemRequestPath(item)}`\n }\n\n render (state) {\n return this.view.render(state)\n }\n}\n", "const Plugin = require('../core/Plugin')\nconst { h } = require('preact')\n\n/**\n * Dummy\n * A test plugin, does nothing useful\n */\nmodule.exports = class Dummy extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'acquirer'\n this.id = this.opts.id || 'Dummy'\n this.title = 'Mr. Plugin'\n\n // set default options\n const defaultOptions = {}\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.strange =

    this is strange 1

    \n this.render = this.render.bind(this)\n this.install = this.install.bind(this)\n }\n\n addFakeFileJustToTest () {\n const blob = new Blob(\n ['data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTIwIDEyMCI+CiAgPGNpcmNsZSBjeD0iNjAiIGN5PSI2MCIgcj0iNTAiLz4KPC9zdmc+Cg=='],\n {type: 'image/svg+xml'}\n )\n const file = {\n source: 'acceptance-test',\n name: 'test-file',\n type: 'image/svg+xml',\n data: blob\n }\n this.props.log('Adding fake file blob')\n this.props.addFile(file)\n }\n\n render (state) {\n const bla =

    this is strange 2

    \n return (\n
    \n \n {this.strange}\n {bla}\n {state.dummy.text}\n
    \n )\n }\n\n install () {\n this.uppy.setState({\n dummy: { text: '123' }\n })\n\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n\n setTimeout(() => {\n this.uppy.setState({\n dummy: {text: '!!!'}\n })\n }, 2000)\n }\n}\n\n// module.exports = function (core, opts) {\n// if (!(this instanceof Dummy)) {\n// return new Dummy(core, opts)\n// }\n// }\n", "const Plugin = require('../core/Plugin')\nconst { toArray } = require('../core/Utils')\nconst Translator = require('../core/Translator')\nconst { h } = require('preact')\n\nmodule.exports = class FileInput extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.id = this.opts.id || 'FileInput'\n this.title = 'File Input'\n this.type = 'acquirer'\n\n const defaultLocale = {\n strings: {\n chooseFiles: 'Choose files'\n }\n }\n\n // Default options\n const defaultOptions = {\n target: null,\n allowMultipleFiles: true,\n pretty: true,\n inputName: 'files[]',\n locale: defaultLocale\n }\n\n // Merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.locale = Object.assign({}, defaultLocale, this.opts.locale)\n this.locale.strings = Object.assign({}, defaultLocale.strings, this.opts.locale.strings)\n\n // i18n\n this.translator = new Translator({locale: this.locale})\n this.i18n = this.translator.translate.bind(this.translator)\n\n this.render = this.render.bind(this)\n this.handleInputChange = this.handleInputChange.bind(this)\n this.handleClick = this.handleClick.bind(this)\n }\n\n handleInputChange (ev) {\n this.uppy.log('[FileInput] Something selected through input...')\n\n const files = toArray(ev.target.files)\n\n files.forEach((file) => {\n this.uppy.addFile({\n source: this.id,\n name: file.name,\n type: file.type,\n data: file\n })\n })\n }\n\n handleClick (ev) {\n this.input.click()\n }\n\n render (state) {\n const hiddenInputStyle = {\n width: '0.1px',\n height: '0.1px',\n opacity: 0,\n overflow: 'hidden',\n position: 'absolute',\n zIndex: -1\n }\n\n return
    \n { this.input = input }} />\n {this.opts.pretty &&\n \n }\n
    \n }\n\n install () {\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.unmount()\n }\n}\n", "const isSupported = typeof navigator !== 'undefined' && 'serviceWorker' in navigator\n\nfunction waitForServiceWorker () {\n return new Promise((resolve, reject) => {\n if (!isSupported) {\n reject(new Error('Unsupported'))\n } else if (navigator.serviceWorker.controller) {\n // A serviceWorker is already registered and active.\n resolve()\n } else {\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n resolve()\n })\n }\n })\n}\n\nclass ServiceWorkerStore {\n constructor (opts) {\n this.ready = waitForServiceWorker()\n this.name = opts.storeName\n }\n\n list () {\n const defer = {}\n const promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n\n console.log('Loading stored blobs from Service Worker')\n const onMessage = (event) => {\n if (event.data.store !== this.name) {\n return\n }\n switch (event.data.type) {\n case 'uppy/ALL_FILES':\n defer.resolve(event.data.files)\n navigator.serviceWorker.removeEventListener('message', onMessage)\n break\n }\n }\n\n this.ready.then(() => {\n navigator.serviceWorker.addEventListener('message', onMessage)\n\n navigator.serviceWorker.controller.postMessage({\n type: 'uppy/GET_FILES',\n store: this.name\n })\n })\n\n return promise\n }\n\n put (file) {\n return this.ready.then(() => {\n navigator.serviceWorker.controller.postMessage({\n type: 'uppy/ADD_FILE',\n store: this.name,\n file: file\n })\n })\n }\n\n delete (fileID) {\n return this.ready.then(() => {\n navigator.serviceWorker.controller.postMessage({\n type: 'uppy/REMOVE_FILE',\n store: this.name,\n fileID: fileID\n })\n })\n }\n}\n\nServiceWorkerStore.isSupported = isSupported\n\nmodule.exports = ServiceWorkerStore\n", "const Plugin = require('../../core/Plugin')\nconst ServiceWorkerStore = require('./ServiceWorkerStore')\nconst IndexedDBStore = require('./IndexedDBStore')\nconst MetaDataStore = require('./MetaDataStore')\n\n/**\n* The Golden Retriever plugin — restores selected files and resumes uploads\n* after a closed tab or a browser crash!\n*\n* Uses localStorage, IndexedDB and ServiceWorker to do its magic, read more:\n* https://uppy.io/blog/2017/07/golden-retriever/\n*/\nmodule.exports = class GoldenRetriever extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'debugger'\n this.id = 'GoldenRetriever'\n this.title = 'Golden Retriever'\n\n const defaultOptions = {\n expires: 24 * 60 * 60 * 1000, // 24 hours\n serviceWorker: false\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.MetaDataStore = new MetaDataStore({\n expires: this.opts.expires,\n storeName: uppy.getID()\n })\n this.ServiceWorkerStore = null\n if (this.opts.serviceWorker) {\n this.ServiceWorkerStore = new ServiceWorkerStore({ storeName: uppy.getID() })\n }\n this.IndexedDBStore = new IndexedDBStore(Object.assign(\n { expires: this.opts.expires },\n opts.indexedDB || {},\n { storeName: uppy.getID() }))\n\n this.saveFilesStateToLocalStorage = this.saveFilesStateToLocalStorage.bind(this)\n this.loadFilesStateFromLocalStorage = this.loadFilesStateFromLocalStorage.bind(this)\n this.loadFileBlobsFromServiceWorker = this.loadFileBlobsFromServiceWorker.bind(this)\n this.loadFileBlobsFromIndexedDB = this.loadFileBlobsFromIndexedDB.bind(this)\n this.onBlobsLoaded = this.onBlobsLoaded.bind(this)\n }\n\n loadFilesStateFromLocalStorage () {\n const savedState = this.MetaDataStore.load()\n\n if (savedState) {\n this.uppy.log('[GoldenRetriever] Recovered some state from Local Storage')\n this.uppy.setState({\n currentUploads: savedState.currentUploads || {},\n files: savedState.files || {}\n })\n\n this.savedPluginData = savedState.pluginData\n }\n }\n\n /**\n * Get file objects that are currently waiting: they've been selected,\n * but aren't yet being uploaded.\n */\n getWaitingFiles () {\n const waitingFiles = {}\n\n const allFiles = this.uppy.state.files\n Object.keys(allFiles).forEach((fileID) => {\n const file = this.uppy.getFile(fileID)\n if (!file.progress || !file.progress.uploadStarted) {\n waitingFiles[fileID] = file\n }\n })\n\n return waitingFiles\n }\n\n /**\n * Get file objects that are currently being uploaded. If a file has finished\n * uploading, but the other files in the same batch have not, the finished\n * file is also returned.\n */\n getUploadingFiles () {\n const uploadingFiles = {}\n\n const { currentUploads } = this.uppy.state\n if (currentUploads) {\n const uploadIDs = Object.keys(currentUploads)\n uploadIDs.forEach((uploadID) => {\n const filesInUpload = currentUploads[uploadID].fileIDs\n filesInUpload.forEach((fileID) => {\n uploadingFiles[fileID] = this.uppy.getFile(fileID)\n })\n })\n }\n\n return uploadingFiles\n }\n\n saveFilesStateToLocalStorage () {\n const filesToSave = Object.assign(\n this.getWaitingFiles(),\n this.getUploadingFiles()\n )\n\n const pluginData = {}\n // TODO Find a better way to do this?\n // Other plugins can attach a restore:get-data listener that receives this callback.\n // Plugins can then use this callback (sync) to provide data to be stored.\n this.uppy.emit('restore:get-data', (data) => {\n Object.assign(pluginData, data)\n })\n\n this.MetaDataStore.save({\n currentUploads: this.uppy.state.currentUploads,\n files: filesToSave,\n pluginData: pluginData\n })\n }\n\n loadFileBlobsFromServiceWorker () {\n this.ServiceWorkerStore.list().then((blobs) => {\n const numberOfFilesRecovered = Object.keys(blobs).length\n const numberOfFilesTryingToRecover = Object.keys(this.uppy.state.files).length\n if (numberOfFilesRecovered === numberOfFilesTryingToRecover) {\n this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from Service Worker!`)\n this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)\n this.onBlobsLoaded(blobs)\n } else {\n this.uppy.log('[GoldenRetriever] Failed to recover blobs from Service Worker, trying IndexedDB now...')\n this.loadFileBlobsFromIndexedDB()\n }\n })\n }\n\n loadFileBlobsFromIndexedDB () {\n this.IndexedDBStore.list().then((blobs) => {\n const numberOfFilesRecovered = Object.keys(blobs).length\n\n if (numberOfFilesRecovered > 0) {\n this.uppy.log(`[GoldenRetriever] Successfully recovered ${numberOfFilesRecovered} blobs from Indexed DB!`)\n this.uppy.info(`Successfully recovered ${numberOfFilesRecovered} files`, 'success', 3000)\n return this.onBlobsLoaded(blobs)\n }\n this.uppy.log('[GoldenRetriever] Couldn’t recover anything from IndexedDB :(')\n })\n }\n\n onBlobsLoaded (blobs) {\n const obsoleteBlobs = []\n const updatedFiles = Object.assign({}, this.uppy.state.files)\n Object.keys(blobs).forEach((fileID) => {\n const originalFile = this.uppy.getFile(fileID)\n if (!originalFile) {\n obsoleteBlobs.push(fileID)\n return\n }\n\n const cachedData = blobs[fileID]\n\n const updatedFileData = {\n data: cachedData,\n isRestored: true\n }\n const updatedFile = Object.assign({}, originalFile, updatedFileData)\n updatedFiles[fileID] = updatedFile\n\n this.uppy.generatePreview(updatedFile)\n })\n\n this.uppy.setState({\n files: updatedFiles\n })\n\n this.uppy.emit('restored', this.savedPluginData)\n\n if (obsoleteBlobs.length) {\n this.deleteBlobs(obsoleteBlobs).then(() => {\n this.uppy.log(`[GoldenRetriever] Cleaned up ${obsoleteBlobs.length} old files`)\n })\n }\n }\n\n deleteBlobs (fileIDs) {\n const promises = []\n fileIDs.forEach((id) => {\n if (this.ServiceWorkerStore) {\n promises.push(this.ServiceWorkerStore.delete(id))\n }\n if (this.IndexedDBStore) {\n promises.push(this.IndexedDBStore.delete(id))\n }\n })\n return Promise.all(promises)\n }\n\n install () {\n this.loadFilesStateFromLocalStorage()\n\n if (Object.keys(this.uppy.state.files).length > 0) {\n if (this.ServiceWorkerStore) {\n this.uppy.log('[GoldenRetriever] Attempting to load files from Service Worker...')\n this.loadFileBlobsFromServiceWorker()\n } else {\n this.uppy.log('[GoldenRetriever] Attempting to load files from Indexed DB...')\n this.loadFileBlobsFromIndexedDB()\n }\n } else {\n this.uppy.log('[GoldenRetriever] No files need to be loaded, only restoring processing state...')\n this.onBlobsLoaded([])\n }\n\n this.uppy.on('file-added', (file) => {\n if (file.isRemote) return\n\n if (this.ServiceWorkerStore) {\n this.ServiceWorkerStore.put(file).catch((err) => {\n this.uppy.log('[GoldenRetriever] Could not store file', 'error')\n this.uppy.log(err)\n })\n }\n\n this.IndexedDBStore.put(file).catch((err) => {\n this.uppy.log('[GoldenRetriever] Could not store file', 'error')\n this.uppy.log(err)\n })\n })\n\n this.uppy.on('file-removed', (fileID) => {\n if (this.ServiceWorkerStore) this.ServiceWorkerStore.delete(fileID)\n this.IndexedDBStore.delete(fileID)\n })\n\n this.uppy.on('complete', ({ successful }) => {\n const fileIDs = successful.map((file) => file.id)\n this.deleteBlobs(fileIDs).then(() => {\n this.uppy.log(`[GoldenRetriever] Removed ${successful.length} files that finished uploading`)\n })\n })\n\n this.uppy.on('state-update', this.saveFilesStateToLocalStorage)\n\n this.uppy.on('restored', () => {\n // start all uploads again when file blobs are restored\n const { currentUploads } = this.uppy.getState()\n if (currentUploads) {\n Object.keys(currentUploads).forEach((uploadId) => {\n this.uppy.restore(uploadId, currentUploads[uploadId])\n })\n }\n })\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Provider = require('../Provider')\nconst View = require('../Provider/view')\nconst { h } = require('preact')\n\nmodule.exports = class GoogleDrive extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'acquirer'\n this.id = this.opts.id || 'GoogleDrive'\n this.title = 'Google Drive'\n this.icon = () =>\n \n \n \n\n this[this.id] = new Provider(uppy, {\n host: this.opts.host,\n provider: 'drive',\n authProvider: 'google'\n })\n\n this.files = []\n\n this.onAuth = this.onAuth.bind(this)\n this.render = this.render.bind(this)\n\n // set default options\n const defaultOptions = {}\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n }\n\n install () {\n this.view = new View(this)\n // Set default state for Google Drive\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n })\n\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.view.tearDown()\n this.unmount()\n }\n\n onAuth (authenticated) {\n this.setPluginState({ authenticated })\n if (authenticated) {\n this.view.getFolder('root')\n }\n }\n\n isFolder (item) {\n return item.mimeType === 'application/vnd.google-apps.folder'\n }\n\n getItemData (item) {\n return Object.assign({}, item, {size: parseFloat(item.fileSize)})\n }\n\n getItemIcon (item) {\n return \n }\n\n getItemSubList (item) {\n return item.items.filter((i) => {\n return this.isFolder(i) || !i.mimeType.startsWith('application/vnd.google')\n })\n }\n\n getItemName (item) {\n return item.title ? item.title : '/'\n }\n\n getMimeType (item) {\n return item.mimeType\n }\n\n getItemId (item) {\n return item.id\n }\n\n getItemRequestPath (item) {\n return this.getItemId(item)\n }\n\n getItemModifiedDate (item) {\n return item.modifiedByMeDate\n }\n\n getItemThumbnailUrl (item) {\n return `${this.opts.host}/${this.GoogleDrive.id}/thumbnail/${this.getItemRequestPath(item)}`\n }\n\n render (state) {\n return this.view.render(state)\n }\n}\n", "const Plugin = require('../../core/Plugin')\nconst Provider = require('../Provider')\nconst View = require('../Provider/view')\nconst { h } = require('preact')\n\nmodule.exports = class Instagram extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'acquirer'\n this.id = this.opts.id || 'Instagram'\n this.title = 'Instagram'\n this.icon = () => (\n \n \n \n \n \n )\n\n this[this.id] = new Provider(uppy, {\n host: this.opts.host,\n provider: 'instagram',\n authProvider: 'instagram'\n })\n\n this.files = []\n\n this.onAuth = this.onAuth.bind(this)\n this.render = this.render.bind(this)\n\n // set default options\n const defaultOptions = {}\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n }\n\n install () {\n this.view = new View(this, {\n viewType: 'grid'\n })\n // Set default state for Instagram\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n })\n\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.view.tearDown()\n this.unmount()\n }\n\n onAuth (authenticated) {\n this.setPluginState({ authenticated })\n if (authenticated) {\n this.view.getFolder('recent')\n }\n }\n\n isFolder (item) {\n return false\n }\n\n getItemData (item) {\n return item\n }\n\n getItemIcon (item) {\n return \n }\n\n getItemSubList (item) {\n const subItems = []\n item.data.forEach((subItem) => {\n if (subItem.carousel_media) {\n subItem.carousel_media.forEach((i, index) => {\n const { id, created_time } = subItem\n const newSubItem = Object.assign({}, i, { id, created_time })\n newSubItem.carousel_id = index\n subItems.push(newSubItem)\n })\n } else {\n subItems.push(subItem)\n }\n })\n return subItems\n }\n\n getItemName (item) {\n return ''\n }\n\n getMimeType (item) {\n return item.type === 'video' ? 'video/mp4' : 'image/jpeg'\n }\n\n getItemId (item) {\n return `${item.id}${item.carousel_id || ''}`\n }\n\n getItemRequestPath (item) {\n const suffix = isNaN(item.carousel_id) ? '' : `?carousel_id=${item.carousel_id}`\n return `${item.id}${suffix}`\n }\n\n getItemModifiedDate (item) {\n return item.created_time\n }\n\n getItemThumbnailUrl (item) {\n return item.images.thumbnail.url\n }\n\n getNextPagePath () {\n const { files } = this.getPluginState()\n return `recent?max_id=${this.getItemId(files[files.length - 1])}`\n }\n\n render (state) {\n return this.view.render(state)\n }\n}\n", "const Plugin = require('../core/Plugin')\nconst { h } = require('preact')\n\n/**\n * Progress bar\n *\n */\nmodule.exports = class ProgressBar extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.id = this.opts.id || 'ProgressBar'\n this.title = 'Progress Bar'\n this.type = 'progressindicator'\n\n // set default options\n const defaultOptions = {\n target: 'body',\n replaceTargetContent: false,\n fixed: false,\n hideAfterFinish: true\n }\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.render = this.render.bind(this)\n }\n\n render (state) {\n const progress = state.totalProgress || 0\n const isHidden = progress === 100 && this.opts.hideAfterFinish\n return
    \n
    \n
    {progress}
    \n
    \n }\n\n install () {\n const target = this.opts.target\n if (target) {\n this.mount(target, this)\n }\n }\n\n uninstall () {\n this.unmount()\n }\n}\n", "const Plugin = require('../core/Plugin')\n\nmodule.exports = class Redux extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'state-sync'\n this.id = 'Redux'\n this.title = 'Redux Emitter'\n\n if (typeof opts.action === 'undefined') {\n throw new Error('action option is not defined')\n }\n if (typeof opts.dispatch === 'undefined') {\n throw new Error('dispatch option is not defined')\n }\n this.opts = opts\n\n this.handleStateUpdate = this.handleStateUpdate.bind(this)\n }\n\n handleStateUpdate (prev, state, patch) {\n this.opts.dispatch(this.opts.action(prev, state, patch)) // this dispatches a redux event with the new state\n }\n\n install () {\n this.uppy.on('state-update', this.handleStateUpdate)\n this.handleStateUpdate({}, this.uppy.state, this.uppy.state) // set the initial redux state\n }\n\n uninstall () {\n this.uppy.off('state-update', this.handleStateUpdate)\n }\n}\n", "const Plugin = require('../core/Plugin')\n\n/**\n * Add Redux DevTools support to Uppy\n *\n * See https://medium.com/@zalmoxis/redux-devtools-without-redux-or-how-to-have-a-predictable-state-with-any-architecture-61c5f5a7716f\n * and https://github.com/zalmoxisus/mobx-remotedev/blob/master/src/monitorActions.js\n */\nmodule.exports = class ReduxDevTools extends Plugin {\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'debugger'\n this.id = 'ReduxDevTools'\n this.title = 'Redux DevTools'\n\n // set default options\n const defaultOptions = {}\n\n // merge default options with the ones set by user\n this.opts = Object.assign({}, defaultOptions, opts)\n\n this.handleStateChange = this.handleStateChange.bind(this)\n this.initDevTools = this.initDevTools.bind(this)\n }\n\n handleStateChange (prevState, nextState, patch) {\n this.devTools.send('UPPY_STATE_UPDATE', nextState)\n }\n\n initDevTools () {\n this.devTools = window.devToolsExtension.connect()\n this.devToolsUnsubscribe = this.devTools.subscribe((message) => {\n if (message.type === 'DISPATCH') {\n console.log(message.payload.type)\n\n // Implement monitors actions\n switch (message.payload.type) {\n case 'RESET':\n this.uppy.reset()\n return\n case 'IMPORT_STATE':\n const computedStates = message.payload.nextLiftedState.computedStates\n this.uppy.state = Object.assign({}, this.uppy.state, computedStates[computedStates.length - 1].state)\n this.uppy.updateAll(this.uppy.state)\n return\n case 'JUMP_TO_STATE':\n case 'JUMP_TO_ACTION':\n this.uppy.store.state = Object.assign({}, this.uppy.state, JSON.parse(message.state))\n this.uppy.updateAll(this.uppy.state)\n }\n }\n })\n }\n\n install () {\n this.withDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__\n if (this.withDevTools) {\n this.initDevTools()\n this.uppy.on('state-update', this.handleStateChange)\n }\n }\n\n uninstall () {\n if (this.withDevTools) {\n this.devToolsUnsubscribe()\n this.uppy.off('state-update', this.handleStateUpdate)\n }\n }\n}\n", "/**\n * A Barebones HTTP API client for Transloadit.\n */\nmodule.exports = class Client {\n constructor (opts = {}) {\n this.apiUrl = 'https://api2.transloadit.com'\n this.opts = opts\n }\n\n /**\n * Create a new assembly.\n *\n * @param {object} options\n */\n createAssembly ({\n templateId,\n params,\n fields,\n signature,\n expectedFiles\n }) {\n const data = new FormData()\n data.append('params', typeof params === 'string'\n ? params\n : JSON.stringify(params))\n if (signature) {\n data.append('signature', signature)\n }\n\n Object.keys(fields).forEach((key) => {\n data.append(key, fields[key])\n })\n data.append('num_expected_upload_files', expectedFiles)\n\n return fetch(`${this.apiUrl}/assemblies`, {\n method: 'post',\n body: data\n }).then((response) => response.json()).then((assembly) => {\n if (assembly.error) {\n const error = new Error(assembly.message)\n error.code = assembly.error\n error.status = assembly\n throw error\n }\n\n return assembly\n })\n }\n\n reserveFile (assembly, file) {\n const size = encodeURIComponent(file.size)\n return fetch(`${assembly.assembly_ssl_url}/reserve_file?size=${size}`, { method: 'post' })\n .then((response) => response.json())\n }\n\n addFile (assembly, file) {\n if (!file.uploadURL) {\n return Promise.reject(new Error('File does not have an `uploadURL`.'))\n }\n const size = encodeURIComponent(file.size)\n const url = encodeURIComponent(file.uploadURL)\n const filename = encodeURIComponent(file.name)\n const fieldname = 'file'\n\n const qs = `size=${size}&filename=${filename}&fieldname=${fieldname}&s3Url=${url}`\n return fetch(`${assembly.assembly_ssl_url}/add_file?${qs}`, { method: 'post' })\n .then((response) => response.json())\n }\n\n /**\n * Get the current status for an assembly.\n *\n * @param {string} url The status endpoint of the assembly.\n */\n getAssemblyStatus (url) {\n return fetch(url)\n .then((response) => response.json())\n }\n}\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window && typeof window.process !== 'undefined' && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document && 'WebkitAppearance' in document.documentElement.style) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window && window.console && (console.firebug || (console.exception && console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n", "/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n", "/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n", "\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n", "/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n", "/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n", "/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n", "/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * [ ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * :data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string>[...]\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n", "\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};", "\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n", "// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n", "/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n", "/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n", "\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '