{"version":3,"file":"index.js","names":["_fetch","require","_prefix","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","utils","_interopRequireWildcard","callbacks","_method","_errors","_utils2","_interface","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","MatrixHttpApi","FetchHttpApi","constructor","args","_defineProperty2","uploadContent","file","opts","_opts$includeFilename","_opts$abortController","_ref","_opts$type","_opts$name","includeFilename","abortController","AbortController","contentType","type","fileName","name","upload","loaded","total","defer","global","XMLHttpRequest","xhr","timeoutFn","abort","reject","Error","timeoutTimer","setTimeout","onreadystatechange","readyState","DONE","clearTimeout","status","DOMException","statusText","responseText","parseErrorResponse","resolve","JSON","parse","err","ConnectionError","onprogress","ev","_opts$progressHandler","progressHandler","url","getUrl","undefined","MediaPrefix","R0","searchParams","encodeURIComponent","useAuthorizationHeader","accessToken","open","Method","Post","href","setRequestHeader","send","signal","addEventListener","queryParams","filename","headers","authedRequest","prefix","abortSignal","then","response","onlyData","json","promise","finally","removeElement","uploads","elem","push","cancelUpload","find","u","getCurrentUploads","getContentUri","base","baseUrl","path","params","access_token"],"sources":["../../src/http-api/index.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { FetchHttpApi } from \"./fetch\";\nimport { FileType, IContentUri, IHttpOpts, Upload, UploadOpts, UploadResponse } from \"./interface\";\nimport { MediaPrefix } from \"./prefix\";\nimport * as utils from \"../utils\";\nimport * as callbacks from \"../realtime-callbacks\";\nimport { Method } from \"./method\";\nimport { ConnectionError } from \"./errors\";\nimport { parseErrorResponse } from \"./utils\";\n\nexport * from \"./interface\";\nexport * from \"./prefix\";\nexport * from \"./errors\";\nexport * from \"./method\";\nexport * from \"./utils\";\n\nexport class MatrixHttpApi<O extends IHttpOpts> extends FetchHttpApi<O> {\n    private uploads: Upload[] = [];\n\n    /**\n     * Upload content to the homeserver\n     *\n     * @param file - The object to upload. On a browser, something that\n     *   can be sent to XMLHttpRequest.send (typically a File).  Under node.js,\n     *   a Buffer, String or ReadStream.\n     *\n     * @param opts - options object\n     *\n     * @returns Promise which resolves to response object, as\n     *    determined by this.opts.onlyData, opts.rawResponse, and\n     *    opts.onlyContentUri.  Rejects with an error (usually a MatrixError).\n     */\n    public uploadContent(file: FileType, opts: UploadOpts = {}): Promise<UploadResponse> {\n        const includeFilename = opts.includeFilename ?? true;\n        const abortController = opts.abortController ?? new AbortController();\n\n        // If the file doesn't have a mime type, use a default since the HS errors if we don't supply one.\n        const contentType = opts.type ?? (file as File).type ?? \"application/octet-stream\";\n        const fileName = opts.name ?? (file as File).name;\n\n        const upload = {\n            loaded: 0,\n            total: 0,\n            abortController,\n        } as Upload;\n        const defer = utils.defer<UploadResponse>();\n\n        if (global.XMLHttpRequest) {\n            const xhr = new global.XMLHttpRequest();\n\n            const timeoutFn = function (): void {\n                xhr.abort();\n                defer.reject(new Error(\"Timeout\"));\n            };\n\n            // set an initial timeout of 30s; we'll advance it each time we get a progress notification\n            let timeoutTimer = callbacks.setTimeout(timeoutFn, 30000);\n\n            xhr.onreadystatechange = function (): void {\n                switch (xhr.readyState) {\n                    case global.XMLHttpRequest.DONE:\n                        callbacks.clearTimeout(timeoutTimer);\n                        try {\n                            if (xhr.status === 0) {\n                                throw new DOMException(xhr.statusText, \"AbortError\"); // mimic fetch API\n                            }\n                            if (!xhr.responseText) {\n                                throw new Error(\"No response body.\");\n                            }\n\n                            if (xhr.status >= 400) {\n                                defer.reject(parseErrorResponse(xhr, xhr.responseText));\n                            } else {\n                                defer.resolve(JSON.parse(xhr.responseText));\n                            }\n                        } catch (err) {\n                            if ((<Error>err).name === \"AbortError\") {\n                                defer.reject(err);\n                                return;\n                            }\n                            defer.reject(new ConnectionError(\"request failed\", <Error>err));\n                        }\n                        break;\n                }\n            };\n\n            xhr.upload.onprogress = (ev: ProgressEvent): void => {\n                callbacks.clearTimeout(timeoutTimer);\n                upload.loaded = ev.loaded;\n                upload.total = ev.total;\n                timeoutTimer = callbacks.setTimeout(timeoutFn, 30000);\n                opts.progressHandler?.({\n                    loaded: ev.loaded,\n                    total: ev.total,\n                });\n            };\n\n            const url = this.getUrl(\"/upload\", undefined, MediaPrefix.R0);\n\n            if (includeFilename && fileName) {\n                url.searchParams.set(\"filename\", encodeURIComponent(fileName));\n            }\n\n            if (!this.opts.useAuthorizationHeader && this.opts.accessToken) {\n                url.searchParams.set(\"access_token\", encodeURIComponent(this.opts.accessToken));\n            }\n\n            xhr.open(Method.Post, url.href);\n            if (this.opts.useAuthorizationHeader && this.opts.accessToken) {\n                xhr.setRequestHeader(\"Authorization\", \"Bearer \" + this.opts.accessToken);\n            }\n            xhr.setRequestHeader(\"Content-Type\", contentType);\n            xhr.send(file);\n\n            abortController.signal.addEventListener(\"abort\", () => {\n                xhr.abort();\n            });\n        } else {\n            const queryParams: utils.QueryDict = {};\n            if (includeFilename && fileName) {\n                queryParams.filename = fileName;\n            }\n\n            const headers: Record<string, string> = { \"Content-Type\": contentType };\n\n            this.authedRequest<UploadResponse>(Method.Post, \"/upload\", queryParams, file, {\n                prefix: MediaPrefix.R0,\n                headers,\n                abortSignal: abortController.signal,\n            })\n                .then((response) => {\n                    return this.opts.onlyData ? <UploadResponse>response : response.json();\n                })\n                .then(defer.resolve, defer.reject);\n        }\n\n        // remove the upload from the list on completion\n        upload.promise = defer.promise.finally(() => {\n            utils.removeElement(this.uploads, (elem) => elem === upload);\n        });\n        abortController.signal.addEventListener(\"abort\", () => {\n            utils.removeElement(this.uploads, (elem) => elem === upload);\n            defer.reject(new DOMException(\"Aborted\", \"AbortError\"));\n        });\n        this.uploads.push(upload);\n        return upload.promise;\n    }\n\n    public cancelUpload(promise: Promise<UploadResponse>): boolean {\n        const upload = this.uploads.find((u) => u.promise === promise);\n        if (upload) {\n            upload.abortController.abort();\n            return true;\n        }\n        return false;\n    }\n\n    public getCurrentUploads(): Upload[] {\n        return this.uploads;\n    }\n\n    /**\n     * Get the content repository url with query parameters.\n     * @returns An object with a 'base', 'path' and 'params' for base URL,\n     *          path and query parameters respectively.\n     */\n    public getContentUri(): IContentUri {\n        return {\n            base: this.opts.baseUrl,\n            path: MediaPrefix.R0 + \"/upload\",\n            params: {\n                access_token: this.opts.accessToken!,\n            },\n        };\n    }\n}\n"],"mappings":"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"}