feat: complete Ancestor quote bot with production-ready Docker support
This commit is contained in:
166
node_modules/matrix-js-sdk/lib/http-api/index.js
generated
vendored
166
node_modules/matrix-js-sdk/lib/http-api/index.js
generated
vendored
@@ -1,4 +1,79 @@
|
||||
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
var _exportNames = {
|
||||
MatrixHttpApi: true
|
||||
};
|
||||
exports.MatrixHttpApi = void 0;
|
||||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
||||
var _fetch = require("./fetch");
|
||||
var _prefix = require("./prefix");
|
||||
Object.keys(_prefix).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _prefix[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _prefix[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _utils = require("../utils");
|
||||
var callbacks = _interopRequireWildcard(require("../realtime-callbacks"));
|
||||
var _method = require("./method");
|
||||
Object.keys(_method).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _method[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _method[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _errors = require("./errors");
|
||||
Object.keys(_errors).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _errors[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _errors[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _utils2 = require("./utils");
|
||||
Object.keys(_utils2).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _utils2[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _utils2[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
var _interface = require("./interface");
|
||||
Object.keys(_interface).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
||||
if (key in exports && exports[key] === _interface[key]) return;
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _interface[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
||||
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
||||
/*
|
||||
Copyright 2022 The Matrix.org Foundation C.I.C.
|
||||
|
||||
@@ -15,22 +90,10 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { FetchHttpApi } from "./fetch.js";
|
||||
import { MediaPrefix } from "./prefix.js";
|
||||
import { removeElement } from "../utils.js";
|
||||
import * as callbacks from "../realtime-callbacks.js";
|
||||
import { Method } from "./method.js";
|
||||
import { ConnectionError } from "./errors.js";
|
||||
import { parseErrorResponse } from "./utils.js";
|
||||
export * from "./interface.js";
|
||||
export * from "./prefix.js";
|
||||
export * from "./errors.js";
|
||||
export * from "./method.js";
|
||||
export * from "./utils.js";
|
||||
export class MatrixHttpApi extends FetchHttpApi {
|
||||
class MatrixHttpApi extends _fetch.FetchHttpApi {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
_defineProperty(this, "uploads", []);
|
||||
(0, _defineProperty2.default)(this, "uploads", []);
|
||||
}
|
||||
/**
|
||||
* Upload content to the homeserver
|
||||
@@ -41,76 +104,79 @@ export class MatrixHttpApi extends FetchHttpApi {
|
||||
*
|
||||
* @param opts - options object
|
||||
*
|
||||
* @returns Promise which resolves to response object, or rejects with an error (usually a MatrixError).
|
||||
* @throws May throw a `MatrixSafetyError` if content is deemed unsafe.
|
||||
* @see MatrixSafetyError
|
||||
* @returns Promise which resolves to response object, as
|
||||
* determined by this.opts.onlyData, opts.rawResponse, and
|
||||
* opts.onlyContentUri. Rejects with an error (usually a MatrixError).
|
||||
*/
|
||||
uploadContent(file, opts = {}) {
|
||||
const includeFilename = opts.includeFilename ?? true;
|
||||
const abortController = opts.abortController ?? new AbortController();
|
||||
var _opts$includeFilename, _opts$abortController, _ref, _opts$type, _opts$name;
|
||||
const includeFilename = (_opts$includeFilename = opts.includeFilename) !== null && _opts$includeFilename !== void 0 ? _opts$includeFilename : true;
|
||||
const abortController = (_opts$abortController = opts.abortController) !== null && _opts$abortController !== void 0 ? _opts$abortController : new AbortController();
|
||||
|
||||
// If the file doesn't have a mime type, use a default since the HS errors if we don't supply one.
|
||||
const contentType = (opts.type ?? file.type) || "application/octet-stream";
|
||||
const fileName = opts.name ?? file.name;
|
||||
const contentType = (_ref = (_opts$type = opts.type) !== null && _opts$type !== void 0 ? _opts$type : file.type) !== null && _ref !== void 0 ? _ref : "application/octet-stream";
|
||||
const fileName = (_opts$name = opts.name) !== null && _opts$name !== void 0 ? _opts$name : file.name;
|
||||
const upload = {
|
||||
loaded: 0,
|
||||
total: 0,
|
||||
abortController
|
||||
};
|
||||
const uploadResolvers = Promise.withResolvers();
|
||||
if (globalThis.XMLHttpRequest) {
|
||||
const xhr = new globalThis.XMLHttpRequest();
|
||||
const deferred = (0, _utils.defer)();
|
||||
if (global.XMLHttpRequest) {
|
||||
const xhr = new global.XMLHttpRequest();
|
||||
const timeoutFn = function () {
|
||||
xhr.abort();
|
||||
uploadResolvers.reject(new Error("Timeout"));
|
||||
deferred.reject(new Error("Timeout"));
|
||||
};
|
||||
|
||||
// set an initial timeout of 30s; we'll advance it each time we get a progress notification
|
||||
let timeoutTimer = callbacks.setTimeout(timeoutFn, 30000);
|
||||
xhr.onreadystatechange = function () {
|
||||
switch (xhr.readyState) {
|
||||
case globalThis.XMLHttpRequest.DONE:
|
||||
case global.XMLHttpRequest.DONE:
|
||||
callbacks.clearTimeout(timeoutTimer);
|
||||
try {
|
||||
if (xhr.status === 0) {
|
||||
throw new DOMException(xhr.statusText, "AbortError"); // mimic fetch API
|
||||
}
|
||||
|
||||
if (!xhr.responseText) {
|
||||
throw new Error("No response body.");
|
||||
}
|
||||
if (xhr.status >= 400) {
|
||||
uploadResolvers.reject(parseErrorResponse(xhr, xhr.responseText));
|
||||
deferred.reject((0, _utils2.parseErrorResponse)(xhr, xhr.responseText));
|
||||
} else {
|
||||
uploadResolvers.resolve(JSON.parse(xhr.responseText));
|
||||
deferred.resolve(JSON.parse(xhr.responseText));
|
||||
}
|
||||
} catch (err) {
|
||||
if (err.name === "AbortError") {
|
||||
uploadResolvers.reject(err);
|
||||
deferred.reject(err);
|
||||
return;
|
||||
}
|
||||
uploadResolvers.reject(new ConnectionError("request failed", err));
|
||||
deferred.reject(new _errors.ConnectionError("request failed", err));
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
xhr.upload.onprogress = ev => {
|
||||
var _opts$progressHandler;
|
||||
callbacks.clearTimeout(timeoutTimer);
|
||||
upload.loaded = ev.loaded;
|
||||
upload.total = ev.total;
|
||||
timeoutTimer = callbacks.setTimeout(timeoutFn, 30000);
|
||||
opts.progressHandler?.({
|
||||
(_opts$progressHandler = opts.progressHandler) === null || _opts$progressHandler === void 0 ? void 0 : _opts$progressHandler.call(opts, {
|
||||
loaded: ev.loaded,
|
||||
total: ev.total
|
||||
});
|
||||
};
|
||||
const url = this.getUrl("/upload", undefined, MediaPrefix.V3);
|
||||
const url = this.getUrl("/upload", undefined, _prefix.MediaPrefix.R0);
|
||||
if (includeFilename && fileName) {
|
||||
url.searchParams.set("filename", encodeURIComponent(fileName));
|
||||
}
|
||||
if (!this.opts.useAuthorizationHeader && this.opts.accessToken) {
|
||||
url.searchParams.set("access_token", encodeURIComponent(this.opts.accessToken));
|
||||
}
|
||||
xhr.open(Method.Post, url.href);
|
||||
xhr.open(_method.Method.Post, url.href);
|
||||
if (this.opts.useAuthorizationHeader && this.opts.accessToken) {
|
||||
xhr.setRequestHeader("Authorization", "Bearer " + this.opts.accessToken);
|
||||
}
|
||||
@@ -127,20 +193,22 @@ export class MatrixHttpApi extends FetchHttpApi {
|
||||
const headers = {
|
||||
"Content-Type": contentType
|
||||
};
|
||||
this.authedRequest(Method.Post, "/upload", queryParams, file, {
|
||||
prefix: MediaPrefix.V3,
|
||||
this.authedRequest(_method.Method.Post, "/upload", queryParams, file, {
|
||||
prefix: _prefix.MediaPrefix.R0,
|
||||
headers,
|
||||
abortSignal: abortController.signal
|
||||
}).then(uploadResolvers.resolve, uploadResolvers.reject);
|
||||
}).then(response => {
|
||||
return this.opts.onlyData ? response : response.json();
|
||||
}).then(deferred.resolve, deferred.reject);
|
||||
}
|
||||
|
||||
// remove the upload from the list on completion
|
||||
upload.promise = uploadResolvers.promise.finally(() => {
|
||||
removeElement(this.uploads, elem => elem === upload);
|
||||
upload.promise = deferred.promise.finally(() => {
|
||||
(0, _utils.removeElement)(this.uploads, elem => elem === upload);
|
||||
});
|
||||
abortController.signal.addEventListener("abort", () => {
|
||||
removeElement(this.uploads, elem => elem === upload);
|
||||
uploadResolvers.reject(new DOMException("Aborted", "AbortError"));
|
||||
(0, _utils.removeElement)(this.uploads, elem => elem === upload);
|
||||
deferred.reject(new DOMException("Aborted", "AbortError"));
|
||||
});
|
||||
this.uploads.push(upload);
|
||||
return upload.promise;
|
||||
@@ -156,5 +224,21 @@ export class MatrixHttpApi extends FetchHttpApi {
|
||||
getCurrentUploads() {
|
||||
return this.uploads;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content repository url with query parameters.
|
||||
* @returns An object with a 'base', 'path' and 'params' for base URL,
|
||||
* path and query parameters respectively.
|
||||
*/
|
||||
getContentUri() {
|
||||
return {
|
||||
base: this.opts.baseUrl,
|
||||
path: _prefix.MediaPrefix.R0 + "/upload",
|
||||
params: {
|
||||
access_token: this.opts.accessToken
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.MatrixHttpApi = MatrixHttpApi;
|
||||
//# sourceMappingURL=index.js.map
|
||||
Reference in New Issue
Block a user