Socket
Socket
Sign inDemoInstall

@uppy/companion-client

Package Overview
Dependencies
Maintainers
6
Versions
88
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@uppy/companion-client - npm Package Compare versions

Comparing version 3.7.0 to 3.7.1

src/AuthError.ts

10

CHANGELOG.md
# @uppy/companion-client
## 3.7.1
Released: 2024-02-19
Included in: Uppy v3.22.0
- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928)
- @uppy/companion-client: fix tests and linter (antoine du hamel / #4890)
- @uppy/companion-client: migrate to ts (merlijn vos / #4864)
- @uppy/companion-client: fix `typeerror` (antoine du hamel)
## 3.7.0

@@ -4,0 +14,0 @@

8

lib/index.js

@@ -6,7 +6,7 @@ 'use strict';

*/
export { default as RequestClient } from './RequestClient.js';
export { default as Provider } from './Provider.js';
export { default as SearchProvider } from './SearchProvider.js';
export { default as RequestClient } from "./RequestClient.js";
export { default as Provider } from "./Provider.js";
export { default as SearchProvider } from "./SearchProvider.js";
// TODO: remove in the next major
export { default as Socket } from './Socket.js';
export { default as Socket } from "./Socket.js";

@@ -1,8 +0,9 @@

'use strict';
function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
var id = 0;
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
import RequestClient, { authErrorStatusCode } from './RequestClient.js';
import * as tokenStorage from './tokenStorage.js';
import RequestClient, { authErrorStatusCode } from "./RequestClient.js";
import * as tokenStorage from "./tokenStorage.js";
// TODO: remove deprecated options in next major release
const getName = id => {

@@ -30,2 +31,3 @@ return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');

var _getAuthToken = /*#__PURE__*/_classPrivateFieldLooseKey("getAuthToken");
var _getPlugin = /*#__PURE__*/_classPrivateFieldLooseKey("getPlugin");
export default class Provider extends RequestClient {

@@ -35,2 +37,5 @@ constructor(uppy, opts) {

super(uppy, opts);
Object.defineProperty(this, _getPlugin, {
value: _getPlugin2
});
Object.defineProperty(this, _getAuthToken, {

@@ -52,3 +57,2 @@ value: _getAuthToken2

}
async headers() {

@@ -72,3 +76,3 @@ const [headers, token] = await Promise.all([super.headers(), _classPrivateFieldLooseBase(this, _getAuthToken)[_getAuthToken]()]);

super.onReceiveResponse(response);
const plugin = this.uppy.getPlugin(this.pluginId);
const plugin = _classPrivateFieldLooseBase(this, _getPlugin)[_getPlugin]();
const oldAuthenticated = plugin.getPluginState().authenticated;

@@ -82,9 +86,7 @@ const authenticated = oldAuthenticated ? response.status !== authErrorStatusCode : response.status < 400;

async setAuthToken(token) {
return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey, token);
return _classPrivateFieldLooseBase(this, _getPlugin)[_getPlugin]().storage.setItem(this.tokenKey, token);
}
/** @protected */
async removeAuthToken() {
return this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey);
return _classPrivateFieldLooseBase(this, _getPlugin)[_getPlugin]().storage.removeItem(this.tokenKey);
}
/**

@@ -103,11 +105,11 @@ * Ensure we have a preauth token if necessary. Attempts to fetch one if we don't,

// eslint-disable-next-line class-methods-use-this
authQuery() {
// eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
authQuery(data) {
return {};
}
authUrl(_temp) {
authUrl(_ref) {
let {
authFormData,
query
} = _temp === void 0 ? {} : _temp;
} = _ref;
const params = new URLSearchParams({

@@ -127,5 +129,3 @@ ...query,

}
/** @protected */
async loginSimpleAuth(_ref) {
async loginSimpleAuth(_ref2) {
let {

@@ -135,3 +135,3 @@ uppyVersions,

signal
} = _ref;
} = _ref2;
const response = await this.post(`${this.id}/simple-auth`, {

@@ -147,5 +147,3 @@ form: authFormData

}
/** @protected */
async loginOAuth(_ref2) {
async loginOAuth(_ref3) {
let {

@@ -155,3 +153,3 @@ uppyVersions,

signal
} = _ref2;
} = _ref3;
await this.ensurePreAuth();

@@ -185,3 +183,3 @@ signal.throwIfAborted();

companionAllowedHosts
} = this.uppy.getPlugin(this.pluginId).opts;
} = _classPrivateFieldLooseBase(this, _getPlugin)[_getPlugin]().opts;
if (!isOriginAllowed(e.origin, companionAllowedHosts)) {

@@ -214,3 +212,3 @@ reject(new Error(`rejecting event from ${e.origin} vs allowed pattern ${companionAllowedHosts}`));

cleanup = () => {
authWindow.close();
authWindow == null || authWindow.close();
window.removeEventListener('message', handleToken);

@@ -223,3 +221,3 @@ signal.removeEventListener('abort', cleanup);

}
async login(_ref3) {
async login(_ref4) {
let {

@@ -229,3 +227,3 @@ uppyVersions,

signal
} = _ref3;
} = _ref4;
return this.loginOAuth({

@@ -243,4 +241,2 @@ uppyVersions,

}
/** @protected */
async request() {

@@ -310,3 +306,5 @@ await _classPrivateFieldLooseBase(this, _refreshingTokenPromise)[_refreshingTokenPromise];

}
static initPlugin(plugin, opts, defaultOpts) {
static initPlugin(plugin,
// any because static methods cannot use class generics
opts, defaultOpts) {
/* eslint-disable no-param-reassign */

@@ -332,4 +330,5 @@ plugin.type = 'acquirer';

} else if (/^(?!https?:\/\/).*$/i.test(opts.companionUrl)) {
var _opts$companionUrl;
// does not start with https://
plugin.opts.companionAllowedHosts = `https://${opts.companionUrl.replace(/^\/\//, '')}`;
plugin.opts.companionAllowedHosts = `https://${(_opts$companionUrl = opts.companionUrl) == null ? void 0 : _opts$companionUrl.replace(/^\/\//, '')}`;
} else {

@@ -343,3 +342,8 @@ plugin.opts.companionAllowedHosts = new URL(opts.companionUrl).origin;

async function _getAuthToken2() {
return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey);
return _classPrivateFieldLooseBase(this, _getPlugin)[_getPlugin]().storage.getItem(this.tokenKey);
}
function _getPlugin2() {
const plugin = this.uppy.getPlugin(this.pluginId);
if (plugin == null) throw new Error('Plugin was nullish');
return plugin;
}

@@ -14,6 +14,9 @@ 'use strict';

import getSocketHost from '@uppy/utils/lib/getSocketHost';
import AuthError from './AuthError.js';
import AuthError from "./AuthError.js";
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore We don't want TS to generate types for the package.json
const packageJson = {
"version": "3.7.0"
}; // Remove the trailing slash so we can always safely append /xyz.
"version": "3.7.1"
};
// Remove the trailing slash so we can always safely append /xyz.
function stripSlash(url) {

@@ -33,3 +36,2 @@ return url.replace(/\/$/, '');

super(message);
this.statusCode = void 0;
this.name = 'HttpError';

@@ -77,4 +79,2 @@ this.statusCode = statusCode;

* It will retry if the websocket gets disconnected
*
* @param {{ file: UppyFile, queue: RateLimitedQueue, signal: AbortSignal }} file
*/

@@ -94,2 +94,3 @@ Object.defineProperty(this, _awaitRemoteFileUpload, {

value: async _ref2 => {
var _file$remote;
let {

@@ -100,3 +101,3 @@ file,

} = _ref2;
if (file.remote.url == null) {
if (((_file$remote = file.remote) == null ? void 0 : _file$remote.url) == null) {
throw new Error('Cannot connect to an undefined URL');

@@ -107,3 +108,5 @@ }

...postBody
}, signal);
}, {
signal
});
return res.token;

@@ -115,2 +118,3 @@ }

this.onReceiveResponse = this.onReceiveResponse.bind(this);
// TODO: Remove optional chaining
_classPrivateFieldLooseBase(this, _companionHeaders)[_companionHeaders] = opts == null ? void 0 : opts.companionHeaders;

@@ -147,6 +151,6 @@ }

}
onReceiveResponse(_ref3) {
let {
onReceiveResponse(res) {
const {
headers
} = _ref3;
} = res;
const state = this.uppy.getState();

@@ -166,4 +170,3 @@ const companion = state.companion || {};

}
/** @protected */
async request(_ref4) {
async request(_ref3) {
let {

@@ -175,3 +178,3 @@ path,

signal
} = _ref4;
} = _ref3;
try {

@@ -197,5 +200,2 @@ const headers = await this.headers(!data);

async get(path, options) {
if (options === void 0) {
options = undefined;
}
// TODO: remove boolean support for options that was added for backward compatibility.

@@ -212,5 +212,2 @@ // eslint-disable-next-line no-param-reassign

async post(path, data, options) {
if (options === void 0) {
options = undefined;
}
// TODO: remove boolean support for options that was added for backward compatibility.

@@ -229,5 +226,2 @@ // eslint-disable-next-line no-param-reassign

async delete(path, data, options) {
if (data === void 0) {
data = undefined;
}
// TODO: remove boolean support for options that was added for backward compatibility.

@@ -253,13 +247,5 @@ // eslint-disable-next-line no-param-reassign

* uploading or is otherwise done (failed, canceled)
*
* @param {*} file
* @param {*} reqBody
* @param {*} options
* @returns
*/
async uploadRemoteFile(file, reqBody, options) {
var _this = this;
if (options === void 0) {
options = {};
}
try {

@@ -269,3 +255,3 @@ const {

getQueue
} = options;
} = options || {};
return await pRetry(async () => {

@@ -340,3 +326,3 @@ var _this$uppy$getFile;

}
async function _awaitRemoteFileUpload2(_ref5) {
async function _awaitRemoteFileUpload2(_ref4) {
let {

@@ -346,3 +332,3 @@ file,

signal
} = _ref5;
} = _ref4;
let removeEventHandlers;

@@ -355,7 +341,5 @@ const {

const token = file.serverToken;
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const host = getSocketHost(file.remote.companionUrl);
/** @type {WebSocket} */
let socket;
/** @type {AbortController?} */
let socketAbortController;

@@ -390,3 +374,3 @@ let activityTimeout;

});
(_socketAbortControlle = socketAbortController) == null || _socketAbortControlle.abort == null ? void 0 : _socketAbortControlle.abort();
(_socketAbortControlle = socketAbortController) == null || _socketAbortControlle.abort == null || _socketAbortControlle.abort();
reject(err);

@@ -403,4 +387,5 @@ };

await queue.wrapPromiseFunction(async () => {
const reconnectWebsocket = async () =>
// eslint-disable-next-line promise/param-names
const reconnectWebsocket = async () => new Promise((resolveSocket, rejectSocket) => {
new Promise((_, rejectSocket) => {
socket = new WebSocket(`${host}/api/${token}`);

@@ -413,6 +398,6 @@ resetActivityTimeout();

socket.addEventListener('error', error => {
var _socket2;
this.uppy.log(`Companion socket error ${JSON.stringify(error)}, closing socket`, 'warning');
socket.close(); // will 'close' event to be emitted
(_socket2 = socket) == null || _socket2.close(); // will 'close' event to be emitted
});
socket.addEventListener('open', () => {

@@ -431,3 +416,3 @@ sendState();

{
emitSocketProgress(this, payload, file);
emitSocketProgress(this, payload, this.uppy.getFile(file.id));
break;

@@ -438,6 +423,9 @@ }

var _socketAbortControlle2;
this.uppy.emit('upload-success', file, {
this.uppy.emit('upload-success', this.uppy.getFile(file.id),
// @ts-expect-error event expects a lot more data.
// TODO: add missing data?
{
uploadURL: payload.url
});
(_socketAbortControlle2 = socketAbortController) == null || _socketAbortControlle2.abort == null ? void 0 : _socketAbortControlle2.abort();
(_socketAbortControlle2 = socketAbortController) == null || _socketAbortControlle2.abort == null || _socketAbortControlle2.abort();
resolve();

@@ -493,3 +481,3 @@ break;

// Remove this file from the queue so another file can start in its place.
(_socketAbortControlle3 = socketAbortController) == null || _socketAbortControlle3.abort == null ? void 0 : _socketAbortControlle3.abort(); // close socket to free up the request for other uploads
(_socketAbortControlle3 = socketAbortController) == null || _socketAbortControlle3.abort == null || _socketAbortControlle3.abort(); // close socket to free up the request for other uploads
} else {

@@ -506,15 +494,15 @@ // Resuming an upload should be queued, else you could pause and then

socketSend('cancel');
(_socketAbortControlle4 = socketAbortController) == null || _socketAbortControlle4.abort == null ? void 0 : _socketAbortControlle4.abort();
(_socketAbortControlle4 = socketAbortController) == null || _socketAbortControlle4.abort == null || _socketAbortControlle4.abort();
this.uppy.log(`upload ${file.id} was removed`, 'info');
resolve();
};
const onCancelAll = _ref6 => {
const onCancelAll = _ref5 => {
var _socketAbortControlle5;
let {
reason
} = _ref6;
} = _ref5;
if (reason === 'user') {
socketSend('cancel');
}
(_socketAbortControlle5 = socketAbortController) == null || _socketAbortControlle5.abort == null ? void 0 : _socketAbortControlle5.abort();
(_socketAbortControlle5 = socketAbortController) == null || _socketAbortControlle5.abort == null || _socketAbortControlle5.abort();
this.uppy.log(`upload ${file.id} was canceled`, 'info');

@@ -543,3 +531,3 @@ resolve();

var _socketAbortControlle6;
(_socketAbortControlle6 = socketAbortController) == null ? void 0 : _socketAbortControlle6.abort();
(_socketAbortControlle6 = socketAbortController) == null || _socketAbortControlle6.abort();
});

@@ -549,5 +537,6 @@ createWebsocket();

} finally {
removeEventHandlers == null ? void 0 : removeEventHandlers();
// @ts-expect-error used before defined
removeEventHandlers == null || removeEventHandlers();
}
}
RequestClient.VERSION = packageJson.version;
'use strict';
import RequestClient from './RequestClient.js';
import RequestClient from "./RequestClient.js";
const getName = id => {

@@ -5,0 +5,0 @@ return id.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');

@@ -5,2 +5,4 @@ let _Symbol$for, _Symbol$for2;

function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore no types
import ee from 'namespace-emitter';

@@ -65,2 +67,3 @@ var _queued = /*#__PURE__*/_classPrivateFieldLooseKey("queued");

const first = _classPrivateFieldLooseBase(this, _queued)[_queued].shift();
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
this.send(first.action, first.payload);

@@ -77,3 +80,3 @@ }

var _classPrivateFieldLoo;
(_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _socket)[_socket]) == null ? void 0 : _classPrivateFieldLoo.close();
(_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _socket)[_socket]) == null || _classPrivateFieldLoo.close();
}

@@ -80,0 +83,0 @@ send(action, payload) {

{
"name": "@uppy/companion-client",
"description": "Client library for communication with Companion. Intended for use in Uppy plugins.",
"version": "3.7.0",
"version": "3.7.1",
"license": "MIT",

@@ -25,3 +25,3 @@ "main": "lib/index.js",

"dependencies": {
"@uppy/utils": "^5.7.0",
"@uppy/utils": "^5.7.1",
"namespace-emitter": "^2.0.1",

@@ -31,4 +31,7 @@ "p-retry": "^6.1.0"

"devDependencies": {
"vitest": "^0.34.5"
"vitest": "^1.2.1"
},
"peerDependencies": {
"@uppy/core": "^3.9.0"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc