UNPKG

57.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["index.js"],"names":["Translator","require","hasProperty","Plugin","Tus","Assembly","Client","AssemblyOptions","AssemblyWatcher","defaultGetAssemblyOptions","file","options","params","signature","fields","COMPANION","ALLOWED_COMPANION_PATTERN","TL_COMPANION","TL_UPPY_SERVER","module","exports","uppy","opts","type","id","title","defaultLocale","strings","creatingAssembly","creatingAssemblyFailed","encoding","defaultOptions","service","errorReporting","waitForEncoding","waitForMetadata","alwaysRunAssembly","importFromUploadURLs","getAssemblyOptions","limit","i18nInit","_prepareUpload","bind","_afterUpload","_onError","_onTusError","_onCancelAll","_onFileUploadURLAvailable","_onRestored","_getPersistentData","hasCustomAssemblyOptions","validateParams","client","_getClientVersion","activeAssemblies","assemblyWatchers","completedFiles","Object","create","setOptions","newOpts","translator","locale","i18n","translate","i18nArray","translateArray","setPluginState","list","constructor","VERSION","addPluginVersion","pluginName","versionName","plugin","getPlugin","push","join","_attachAssemblyMetadata","status","meta","assembly_url","filename","name","fieldname","tus","endpoint","tus_url","addRequestId","remote","test","companionUrl","err","Error","log","newHost","companion_url","replace","path","url","newFile","transloadit","assembly","assembly_id","_createAssembly","fileIDs","uploadID","createAssembly","expectedFiles","length","then","newAssembly","assemblyID","getPluginState","assemblies","uploadsAssemblies","getState","files","updatedFiles","forEach","getFile","setState","emit","catch","message","_createAssemblyWatcher","watcher","on","getAssemblyFiles","error","_shouldWaitAfterUpload","_reserveFiles","Promise","all","map","fileID","reserveFile","addFile","_findFile","uploadedFile","getFiles","i","uploadURL","tus_upload_url","uploadUrl","is_tus_file","size","_onFileUploadComplete","assemblyId","state","getAssembly","_onResult","stepName","result","original_id","localId","entry","results","_onAssemblyFinished","assembly_ssl_url","getAssemblyStatus","finalStatus","_cancelAssembly","cancelAssembly","assemblyIDs","keys","reduce","acc","cancelPromises","setData","pluginData","savedState","previousAssemblies","restoreState","uploads","restoreAssemblies","fileIDsInUpload","fileIDsInAssembly","allAssemblyIDs","_connectAssembly","updateAssemblies","update","restored","resolve","newStatus","ok","connected","reject","once","connect","filter","mode","createdAssembly","assemblyOptions","build","createdAssemblies","close","addResultData","incompleteFiles","promise","xhr","originalRequest","getUnderlyingObject","responseURL","submitError","_","install","addPreProcessor","addPostProcessor","use","storeFingerprintForResuming","resume","useFastRemoteRetry","metaFields","capabilities","individualCancellation","uninstall","removePreProcessor","removePostProcessor","off","UPPY_SERVER","COMPANION_PATTERN"],"mappings":"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","sourcesContent":["const Translator = require('@uppy/utils/lib/Translator')\nconst hasProperty = require('@uppy/utils/lib/hasProperty')\nconst { Plugin } = require('@uppy/core')\nconst Tus = require('@uppy/tus')\nconst Assembly = require('./Assembly')\nconst Client = require('./Client')\nconst AssemblyOptions = require('./AssemblyOptions')\nconst AssemblyWatcher = require('./AssemblyWatcher')\n\nfunction defaultGetAssemblyOptions (file, options) {\n return {\n params: options.params,\n signature: options.signature,\n fields: options.fields\n }\n}\n\nconst COMPANION = 'https://api2.transloadit.com/companion'\n// Regex matching acceptable postMessage() origins for authentication feedback from companion.\nconst ALLOWED_COMPANION_PATTERN = /\\.transloadit\\.com$/\n// Regex used to check if a Companion address is run by Transloadit.\nconst TL_COMPANION = /https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/companion/\nconst TL_UPPY_SERVER = /https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/uppy-server/\n\n/**\n * Upload files to Transloadit using Tus.\n */\nmodule.exports = class Transloadit extends Plugin {\n static VERSION = require('../package.json').version\n\n constructor (uppy, opts) {\n super(uppy, opts)\n this.type = 'uploader'\n this.id = this.opts.id || 'Transloadit'\n this.title = 'Transloadit'\n\n this.defaultLocale = {\n strings: {\n creatingAssembly: 'Preparing upload...',\n creatingAssemblyFailed: 'Transloadit: Could not create Assembly',\n encoding: 'Encoding...'\n }\n }\n\n const defaultOptions = {\n service: 'https://api2.transloadit.com',\n errorReporting: true,\n waitForEncoding: false,\n waitForMetadata: false,\n alwaysRunAssembly: false,\n importFromUploadURLs: false,\n signature: null,\n params: null,\n fields: {},\n getAssemblyOptions: defaultGetAssemblyOptions,\n limit: 0\n }\n\n this.opts = { ...defaultOptions, ...opts }\n\n this.i18nInit()\n\n this._prepareUpload = this._prepareUpload.bind(this)\n this._afterUpload = this._afterUpload.bind(this)\n this._onError = this._onError.bind(this)\n this._onTusError = this._onTusError.bind(this)\n this._onCancelAll = this._onCancelAll.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 const hasCustomAssemblyOptions = this.opts.getAssemblyOptions !== defaultOptions.getAssemblyOptions\n if (this.opts.params) {\n AssemblyOptions.validateParams(this.opts.params)\n } else if (!hasCustomAssemblyOptions) {\n // Throw the same error that we'd throw if the `params` returned from a\n // `getAssemblyOptions()` function is null.\n AssemblyOptions.validateParams(null)\n }\n\n this.client = new Client({\n service: this.opts.service,\n client: this._getClientVersion(),\n errorReporting: this.opts.errorReporting\n })\n // Contains Assembly instances for in-progress Assemblies.\n this.activeAssemblies = {}\n // Contains a mapping of uploadID to AssemblyWatcher\n this.assemblyWatchers = {}\n // Contains a file IDs that have completed postprocessing before the upload they belong to has entered the postprocess stage.\n this.completedFiles = Object.create(null)\n }\n\n setOptions (newOpts) {\n super.setOptions(newOpts)\n this.i18nInit()\n }\n\n i18nInit () {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale])\n this.i18n = this.translator.translate.bind(this.translator)\n this.i18nArray = this.translator.translateArray.bind(this.translator)\n this.setPluginState() // so that UI re-renders and we see the updated locale\n }\n\n _getClientVersion () {\n const list = [\n `uppy-core:${this.uppy.constructor.VERSION}`,\n `uppy-transloadit:${this.constructor.VERSION}`,\n `uppy-tus:${Tus.VERSION}`\n ]\n\n const addPluginVersion = (pluginName, versionName) => {\n const plugin = this.uppy.getPlugin(pluginName)\n if (plugin) {\n list.push(`${versionName}:${plugin.constructor.VERSION}`)\n }\n }\n\n if (this.opts.importFromUploadURLs) {\n addPluginVersion('XHRUpload', 'uppy-xhr-upload')\n addPluginVersion('AwsS3', 'uppy-aws-s3')\n addPluginVersion('AwsS3Multipart', 'uppy-aws-s3-multipart')\n }\n\n addPluginVersion('Dropbox', 'uppy-dropbox')\n addPluginVersion('Facebook', 'uppy-facebook')\n addPluginVersion('GoogleDrive', 'uppy-google-drive')\n addPluginVersion('Instagram', 'uppy-instagram')\n addPluginVersion('OneDrive', 'uppy-onedrive')\n addPluginVersion('Zoom', 'uppy-zoom')\n addPluginVersion('Url', 'uppy-url')\n\n return list.join(',')\n }\n\n /**\n * Attach metadata to files to configure the Tus plugin to upload to Transloadit.\n * Also use Transloadit's Companion\n *\n * See: https://github.com/tus/tusd/wiki/Uploading-to-Transloadit-using-tus#uploading-using-tus\n *\n * @param {object} file\n * @param {object} status\n */\n _attachAssemblyMetadata (file, status) {\n // Add the metadata parameters Transloadit needs.\n const meta = {\n ...file.meta,\n assembly_url: status.assembly_url,\n filename: file.name,\n fieldname: 'file'\n }\n // Add Assembly-specific Tus endpoint.\n const tus = {\n ...file.tus,\n endpoint: status.tus_url,\n // Include X-Request-ID headers for better debugging.\n addRequestId: true\n }\n\n // Set Companion location. We only add this, if 'file' has the attribute\n // remote, because this is the criteria to identify remote files.\n // We only replace the hostname for Transloadit's companions, so that\n // people can also self-host them while still using Transloadit for encoding.\n let remote = file.remote\n if (file.remote && TL_UPPY_SERVER.test(file.remote.companionUrl)) {\n const err = new Error(\n 'The https://api2.transloadit.com/uppy-server endpoint was renamed to ' +\n 'https://api2.transloadit.com/companion, please update your `companionUrl` ' +\n 'options accordingly.')\n // Explicitly log this error here because it is caught by the `createAssembly`\n // Promise further along.\n // That's fine, but createAssembly only shows the informer, we need something a\n // little more noisy.\n this.uppy.log(err)\n throw err\n }\n\n if (file.remote && TL_COMPANION.test(file.remote.companionUrl)) {\n const newHost = status.companion_url\n .replace(/\\/$/, '')\n const path = file.remote.url\n .replace(file.remote.companionUrl, '')\n .replace(/^\\//, '')\n\n remote = {\n ...file.remote,\n companionUrl: newHost,\n url: `${newHost}/${path}`\n }\n }\n\n // Store the Assembly ID this file is in on the file under the `transloadit` key.\n const newFile = {\n ...file,\n transloadit: {\n assembly: status.assembly_id\n }\n }\n // Only configure the Tus plugin if we are uploading straight to Transloadit (the default).\n if (!this.opts.importFromUploadURLs) {\n Object.assign(newFile, { meta, tus, remote })\n }\n return newFile\n }\n\n _createAssembly (fileIDs, uploadID, options) {\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((newAssembly) => {\n const assembly = new Assembly(newAssembly)\n const status = assembly.status\n const assemblyID = status.assembly_id\n\n const { assemblies, uploadsAssemblies } = this.getPluginState()\n this.setPluginState({\n // Store the Assembly status.\n assemblies: {\n ...assemblies,\n [assemblyID]: status\n },\n // Store the list of Assemblies related to this upload.\n uploadsAssemblies: {\n ...uploadsAssemblies,\n [uploadID]: [\n ...uploadsAssemblies[uploadID],\n assemblyID\n ]\n }\n })\n\n const { files } = this.uppy.getState()\n const updatedFiles = {}\n fileIDs.forEach((id) => {\n updatedFiles[id] = this._attachAssemblyMetadata(this.uppy.getFile(id), status)\n })\n this.uppy.setState({\n files: {\n ...files,\n ...updatedFiles\n }\n })\n\n this.uppy.emit('transloadit:assembly-created', status, fileIDs)\n\n this.uppy.log(`[Transloadit] Created Assembly ${assemblyID}`)\n return assembly\n }).catch((err) => {\n err.message = `${this.i18n('creatingAssemblyFailed')}: ${err.message}`\n // Reject the promise.\n throw err\n })\n }\n\n _createAssemblyWatcher (assemblyID, fileIDs, uploadID) {\n // AssemblyWatcher tracks completion states of all Assemblies in this upload.\n const watcher = new AssemblyWatcher(this.uppy, assemblyID)\n\n watcher.on('assembly-complete', (id) => {\n const files = this.getAssemblyFiles(id)\n files.forEach((file) => {\n this.completedFiles[file.id] = true\n this.uppy.emit('postprocess-complete', file)\n })\n })\n\n watcher.on('assembly-error', (id, error) => {\n // Clear postprocessing state for all our files.\n const files = this.getAssemblyFiles(id)\n files.forEach((file) => {\n // TODO Maybe make a postprocess-error event here?\n this.uppy.emit('upload-error', file, error)\n\n this.uppy.emit('postprocess-complete', file)\n })\n })\n\n this.assemblyWatchers[uploadID] = watcher\n }\n\n _shouldWaitAfterUpload () {\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 (file) {\n if (!file || !file.transloadit || !file.transloadit.assembly) {\n return\n }\n\n const { assemblies } = this.getPluginState()\n const assembly = 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.getFiles()\n for (let i = 0; i < files.length; i++) {\n const file = files[i]\n // Completed file upload.\n if (file.uploadURL === uploadedFile.tus_upload_url) {\n return file\n }\n // In-progress file upload.\n if (file.tus && file.tus.uploadUrl === uploadedFile.tus_upload_url) {\n return file\n }\n if (!uploadedFile.is_tus_file) {\n // Fingers-crossed check for non-tus uploads, eg imported from S3.\n if (file.name === uploadedFile.name && file.size === uploadedFile.size) {\n return file\n }\n }\n }\n }\n\n _onFileUploadComplete (assemblyId, uploadedFile) {\n const state = this.getPluginState()\n const file = this._findFile(uploadedFile)\n if (!file) {\n this.uppy.log('[Transloadit] Couldn’t file the file, it was likely removed in the process')\n return\n }\n this.setPluginState({\n files: {\n ...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 /**\n * Callback when a new Assembly result comes in.\n *\n * @param {string} assemblyId\n * @param {string} stepName\n * @param {object} result\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 /**\n * When an Assembly has finished processing, get the final state\n * and emit it.\n *\n * @param {object} status\n */\n _onAssemblyFinished (status) {\n const url = status.assembly_ssl_url\n this.client.getAssemblyStatus(url).then((finalStatus) => {\n const assemblyId = finalStatus.assembly_id\n const state = this.getPluginState()\n this.setPluginState({\n assemblies: {\n ...state.assemblies,\n [assemblyId]: finalStatus\n }\n })\n this.uppy.emit('transloadit:complete', finalStatus)\n })\n }\n\n _cancelAssembly (assembly) {\n return this.client.cancelAssembly(assembly).then(() => {\n // TODO bubble this through AssemblyWatcher so its event handlers can clean up correctly\n this.uppy.emit('transloadit:assembly-cancelled', assembly)\n })\n }\n\n /**\n * When all files are removed, cancel in-progress Assemblies.\n */\n _onCancelAll () {\n const { uploadsAssemblies } = this.getPluginState()\n\n const assemblyIDs = Object.keys(uploadsAssemblies).reduce((acc, uploadID) => {\n acc.push(...uploadsAssemblies[uploadID])\n return acc\n }, [])\n\n const cancelPromises = assemblyIDs.map((assemblyID) => {\n const assembly = this.getAssembly(assemblyID)\n return this._cancelAssembly(assembly)\n })\n\n Promise.all(cancelPromises).catch((err) => {\n this.uppy.log(err)\n })\n }\n\n /**\n * Custom state serialization for the Golden Retriever plugin.\n * It will pass this back to the `_onRestored` function.\n *\n * @param {Function} setData\n */\n _getPersistentData (setData) {\n const state = this.getPluginState()\n const assemblies = state.assemblies\n const uploadsAssemblies = state.uploadsAssemblies\n\n setData({\n [this.id]: {\n assemblies,\n uploadsAssemblies\n }\n })\n }\n\n _onRestored (pluginData) {\n const savedState = pluginData && pluginData[this.id] ? pluginData[this.id] : {}\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 // Convert loaded Assembly statuses to a Transloadit plugin state object.\n const restoreState = (assemblies) => {\n const files = {}\n const results = []\n Object.keys(assemblies).forEach((id) => {\n const status = assemblies[id]\n\n status.uploads.forEach((uploadedFile) => {\n const file = this._findFile(uploadedFile)\n files[uploadedFile.id] = {\n id: file.id,\n assembly: id,\n uploadedFile\n }\n })\n\n const state = this.getPluginState()\n Object.keys(status.results).forEach((stepName) => {\n status.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: id\n })\n })\n })\n })\n\n this.setPluginState({\n assemblies,\n files,\n results,\n uploadsAssemblies\n })\n }\n\n // Set up the Assembly instances and AssemblyWatchers for existing Assemblies.\n const restoreAssemblies = () => {\n const { assemblies, uploadsAssemblies } = this.getPluginState()\n\n // Set up the assembly watchers again for all the ongoing uploads.\n Object.keys(uploadsAssemblies).forEach((uploadID) => {\n const assemblyIDs = uploadsAssemblies[uploadID]\n const fileIDsInUpload = assemblyIDs.reduce((acc, assemblyID) => {\n const fileIDsInAssembly = this.getAssemblyFiles(assemblyID).map((file) => file.id)\n acc.push(...fileIDsInAssembly)\n return acc\n }, [])\n this._createAssemblyWatcher(assemblyIDs, fileIDsInUpload, uploadID)\n })\n\n const allAssemblyIDs = Object.keys(assemblies)\n allAssemblyIDs.forEach((id) => {\n const assembly = new Assembly(assemblies[id])\n this._connectAssembly(assembly)\n })\n }\n\n // Force-update all Assemblies to check for missed events.\n const updateAssemblies = () => {\n const { assemblies } = this.getPluginState()\n return Promise.all(\n Object.keys(assemblies).map((id) => {\n return this.activeAssemblies[id].update()\n })\n )\n }\n\n // Restore all Assembly state.\n this.restored = Promise.resolve().then(() => {\n restoreState(previousAssemblies)\n restoreAssemblies()\n return updateAssemblies()\n })\n\n this.restored.then(() => {\n this.restored = null\n })\n }\n\n _connectAssembly (assembly) {\n const { status } = assembly\n const id = status.assembly_id\n this.activeAssemblies[id] = assembly\n\n // Sync local `assemblies` state\n assembly.on('status', (newStatus) => {\n const { assemblies } = this.getPluginState()\n this.setPluginState({\n assemblies: {\n ...assemblies,\n [id]: newStatus\n }\n })\n })\n\n assembly.on('upload', (file) => {\n this._onFileUploadComplete(id, file)\n })\n assembly.on('error', (error) => {\n error.assembly = assembly.status\n this.uppy.emit('transloadit:assembly-error', assembly.status, error)\n })\n\n assembly.on('executing', () => {\n this.uppy.emit('transloadit:assembly-executing', assembly.status)\n })\n\n if (this.opts.waitForEncoding) {\n assembly.on('result', (stepName, result) => {\n this._onResult(id, stepName, result)\n })\n }\n\n if (this.opts.waitForEncoding) {\n assembly.on('finished', () => {\n this._onAssemblyFinished(assembly.status)\n })\n } else if (this.opts.waitForMetadata) {\n assembly.on('metadata', () => {\n this._onAssemblyFinished(assembly.status)\n })\n }\n\n // No need to connect to the socket if the Assembly has completed by now.\n if (assembly.ok === 'ASSEMBLY_COMPLETE') {\n return assembly\n }\n\n // TODO Do we still need this for anything…?\n // eslint-disable-next-line no-unused-vars\n const connected = new Promise((resolve, reject) => {\n assembly.once('connect', resolve)\n assembly.once('status', resolve)\n assembly.once('error', reject)\n }).then(() => {\n this.uppy.log('[Transloadit] Socket is ready')\n })\n\n assembly.connect()\n return assembly\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 const file = this.uppy.getFile(fileID)\n this.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('creatingAssembly')\n })\n })\n\n const createAssembly = ({ fileIDs, options }) => {\n let createdAssembly\n return this._createAssembly(fileIDs, uploadID, options).then((assembly) => {\n createdAssembly = assembly\n if (this.opts.importFromUploadURLs) {\n return this._reserveFiles(assembly, fileIDs)\n }\n }).then(() => {\n fileIDs.forEach((fileID) => {\n const file = this.uppy.getFile(fileID)\n this.uppy.emit('preprocess-complete', file)\n })\n return createdAssembly\n }).catch((err) => {\n fileIDs.forEach((fileID) => {\n const file = this.uppy.getFile(fileID)\n // Clear preprocessing state when the Assembly could not be created,\n // otherwise the UI gets confused about the lingering progress keys\n this.uppy.emit('preprocess-complete', file)\n this.uppy.emit('upload-error', file, err)\n })\n throw err\n })\n }\n\n const { uploadsAssemblies } = this.getPluginState()\n this.setPluginState({\n uploadsAssemblies: {\n ...uploadsAssemblies,\n [uploadID]: []\n }\n })\n\n const files = fileIDs.map((id) => this.uppy.getFile(id))\n const assemblyOptions = new AssemblyOptions(files, this.opts)\n\n return assemblyOptions.build().then(\n (assemblies) => Promise.all(\n assemblies.map(createAssembly)\n ).then((createdAssemblies) => {\n const assemblyIDs = createdAssemblies.map(assembly => assembly.status.assembly_id)\n this._createAssemblyWatcher(assemblyIDs, fileIDs, uploadID)\n createdAssemblies.map(assembly => this._connectAssembly(assembly))\n }),\n // If something went wrong before any Assemblies could be created,\n // clear all processing state.\n (err) => {\n fileIDs.forEach((fileID) => {\n const file = this.uppy.getFile(fileID)\n this.uppy.emit('preprocess-complete', file)\n this.uppy.emit('upload-error', file, err)\n })\n throw err\n }\n )\n }\n\n _afterUpload (fileIDs, uploadID) {\n const files = fileIDs.map(fileID => this.uppy.getFile(fileID))\n // Only use files without errors\n fileIDs = files.filter((file) => !file.error).map(file => file.id)\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(() => {\n return this._afterUpload(fileIDs, uploadID)\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._shouldWaitAfterUpload()) {\n assemblyIDs.forEach((assemblyID) => {\n const assembly = this.activeAssemblies[assemblyID]\n assembly.close()\n delete this.activeAssemblies[assemblyID]\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 const incompleteFiles = files.filter(file => !hasProperty(this.completedFiles, file.id))\n incompleteFiles.forEach((file) => {\n this.uppy.emit('postprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('encoding')\n })\n })\n\n const watcher = this.assemblyWatchers[uploadID]\n return watcher.promise.then(() => {\n const assemblies = assemblyIDs.map((id) => this.getAssembly(id))\n\n // Remove the Assembly ID list for this upload,\n // it's no longer going to be used anywhere.\n const state = this.getPluginState()\n const uploadsAssemblies = { ...state.uploadsAssemblies }\n delete uploadsAssemblies[uploadID]\n this.setPluginState({ uploadsAssemblies })\n\n this.uppy.addResultData(uploadID, {\n transloadit: assemblies\n })\n })\n }\n\n _onError (err = null, uploadID) {\n const state = this.getPluginState()\n const assemblyIDs = state.uploadsAssemblies[uploadID]\n\n assemblyIDs.forEach((assemblyID) => {\n if (this.activeAssemblies[assemblyID]) {\n this.activeAssemblies[assemblyID].close()\n }\n })\n }\n\n _onTusError (err) {\n if (err && /^tus: /.test(err.message)) {\n const xhr = err.originalRequest ? err.originalRequest.getUnderlyingObject() : null\n const url = xhr && xhr.responseURL ? xhr.responseURL : null\n this.client.submitError(err, { url, type: 'TUS_ERROR' }).then((_) => {\n // if we can't report the error that sucks\n })\n }\n }\n\n install () {\n this.uppy.addPreProcessor(this._prepareUpload)\n this.uppy.addPostProcessor(this._afterUpload)\n\n // We may need to close socket.io connections on error.\n this.uppy.on('error', this._onError)\n\n // Handle cancellation.\n this.uppy.on('cancel-all', this._onCancelAll)\n\n // For error reporting.\n this.uppy.on('upload-error', this._onTusError)\n\n if (this.opts.importFromUploadURLs) {\n // No uploader needed when importing; instead we take the upload URL from an existing uploader.\n this.uppy.on('upload-success', this._onFileUploadURLAvailable)\n } else {\n this.uppy.use(Tus, {\n // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times\n // will upload to an outdated Assembly, and we won't get socket events for it.\n //\n // To resume a Transloadit upload, we need to reconnect to the websocket, and the state that's\n // required to do that is not saved by tus-js-client's fingerprinting. We need the tus URL,\n // the Assembly URL, and the WebSocket URL, at least. We also need to know _all_ the files that\n // were added to the Assembly, so we can properly complete it. All that state is handled by\n // Golden Retriever. So, Golden Retriever is required to do resumability with the Transloadit plugin,\n // and we disable Tus's default resume implementation to prevent bad behaviours.\n storeFingerprintForResuming: false,\n resume: false,\n // Disable Companion's retry optimisation; we need to change the endpoint on retry\n // so it can't just reuse the same tus.Upload instance server-side.\n useFastRemoteRetry: false,\n // Only send Assembly metadata to the tus endpoint.\n metaFields: ['assembly_url', 'filename', 'fieldname'],\n // Pass the limit option to @uppy/tus\n limit: this.opts.limit\n })\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 // We cannot cancel individual files because Assemblies tend to contain many files.\n const { capabilities } = this.uppy.getState()\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n individualCancellation: false\n }\n })\n }\n\n uninstall () {\n this.uppy.removePreProcessor(this._prepareUpload)\n this.uppy.removePostProcessor(this._afterUpload)\n this.uppy.off('error', this._onError)\n\n if (this.opts.importFromUploadURLs) {\n this.uppy.off('upload-success', this._onFileUploadURLAvailable)\n }\n\n const { capabilities } = this.uppy.getState()\n this.uppy.setState({\n capabilities: {\n ...capabilities,\n individualCancellation: true\n }\n })\n }\n\n getAssembly (id) {\n const { assemblies } = this.getPluginState()\n return assemblies[id]\n }\n\n getAssemblyFiles (assemblyID) {\n return this.uppy.getFiles().filter((file) => {\n return file && file.transloadit && file.transloadit.assembly === assemblyID\n })\n }\n}\n\nmodule.exports.COMPANION = COMPANION\nmodule.exports.UPPY_SERVER = COMPANION\nmodule.exports.COMPANION_PATTERN = ALLOWED_COMPANION_PATTERN\n"]}
\No newline at end of file