use-tus 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +71 -30
  2. package/dist/TusClientProvider/TusClientProvider.d.ts +6 -3
  3. package/dist/TusClientProvider/constants.d.ts +4 -0
  4. package/dist/TusClientProvider/index.d.ts +3 -2
  5. package/dist/{core → TusClientProvider/store}/contexts.d.ts +3 -3
  6. package/dist/{core → TusClientProvider/store}/tucClientActions.d.ts +9 -10
  7. package/dist/{core → TusClientProvider/store}/tusClientReducer.d.ts +5 -5
  8. package/dist/TusClientProvider/types.d.ts +2 -0
  9. package/dist/__stories__/Basic.stories.d.ts +1 -1
  10. package/dist/__stories__/CacheKey.stories.d.ts +1 -1
  11. package/dist/__stories__/DefaultOptions.stories.d.ts +1 -1
  12. package/dist/__stories__/components/BasicButton/BasicButton.d.ts +4 -4
  13. package/dist/__stories__/components/BasicButton/index.d.ts +1 -1
  14. package/dist/__stories__/components/LoadingCircle/LoadingCircle.d.ts +2 -2
  15. package/dist/__stories__/components/LoadingCircle/index.d.ts +1 -1
  16. package/dist/__stories__/components/ProgressBar/ProgressBar.d.ts +2 -2
  17. package/dist/__stories__/components/ProgressBar/index.d.ts +1 -1
  18. package/dist/__stories__/components/UploadIcon/UploadIcon.d.ts +2 -2
  19. package/dist/__stories__/components/UploadIcon/index.d.ts +1 -1
  20. package/dist/__tests__/useTusStore.test.d.ts +1 -0
  21. package/dist/__tests__/utils/getDefaultOptions.d.ts +2 -0
  22. package/dist/__tests__/utils/mock.d.ts +6 -1
  23. package/dist/index.cjs.js +266 -343
  24. package/dist/index.d.ts +3 -4
  25. package/dist/index.esm.js +267 -324
  26. package/dist/index.js +175 -211
  27. package/dist/useTus/index.d.ts +3 -2
  28. package/dist/useTus/types.d.ts +8 -9
  29. package/dist/useTus/useTus.d.ts +2 -2
  30. package/dist/useTus/useTusStore.d.ts +2 -0
  31. package/dist/useTus/utils/createUpload.d.ts +7 -0
  32. package/dist/useTus/utils/startOrResumeUpload.d.ts +2 -0
  33. package/dist/useTus/utils/useAutoAbort.d.ts +2 -0
  34. package/dist/useTus/utils/useMergeTusOptions.d.ts +6 -0
  35. package/dist/useTusClient/index.d.ts +1 -1
  36. package/dist/useTusClient/useTusClient.d.ts +1 -1
  37. package/package.json +9 -10
  38. package/dist/TusClientProvider/TusController.d.ts +0 -4
  39. package/dist/core/constants.d.ts +0 -4
  40. package/dist/core/tusHandler.d.ts +0 -17
  41. package/dist/core/types.d.ts +0 -8
  42. package/dist/useTus/utils.d.ts +0 -16
  43. package/dist/utils/uid.d.ts +0 -1
package/dist/index.esm.js CHANGED
@@ -1,6 +1,5 @@
1
- import { createContext, useMemo, useContext, useState, useCallback, useEffect, createElement, Fragment, useReducer } from 'react';
2
- import * as tus from 'tus-js-client';
3
- import { Upload } from 'tus-js-client';
1
+ import { useEffect, useMemo, useState, useCallback, createContext, useContext, useReducer, createElement } from 'react';
2
+ import { Upload, isSupported } from 'tus-js-client';
4
3
 
5
4
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
6
5
  try {
@@ -38,28 +37,6 @@ function _asyncToGenerator(fn) {
38
37
  };
39
38
  }
40
39
 
41
- function _classCallCheck(instance, Constructor) {
42
- if (!(instance instanceof Constructor)) {
43
- throw new TypeError("Cannot call a class as a function");
44
- }
45
- }
46
-
47
- function _defineProperties(target, props) {
48
- for (var i = 0; i < props.length; i++) {
49
- var descriptor = props[i];
50
- descriptor.enumerable = descriptor.enumerable || false;
51
- descriptor.configurable = true;
52
- if ("value" in descriptor) descriptor.writable = true;
53
- Object.defineProperty(target, descriptor.key, descriptor);
54
- }
55
- }
56
-
57
- function _createClass(Constructor, protoProps, staticProps) {
58
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
59
- if (staticProps) _defineProperties(Constructor, staticProps);
60
- return Constructor;
61
- }
62
-
63
40
  function _defineProperty(obj, key, value) {
64
41
  if (key in obj) {
65
42
  Object.defineProperty(obj, key, {
@@ -165,9 +142,204 @@ function _nonIterableRest() {
165
142
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
166
143
  }
167
144
 
145
+ var createUpload = function createUpload(file, options, dispatchIsAborted) {
146
+ var upload = new Upload(file, options);
147
+ var originalStart = upload.start.bind(upload);
148
+ var originalAbort = upload.abort.bind(upload);
149
+
150
+ var start = function start() {
151
+ originalStart();
152
+ dispatchIsAborted(false);
153
+ };
154
+
155
+ var abort = function () {
156
+ var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
157
+ return regeneratorRuntime.wrap(function _callee$(_context) {
158
+ while (1) {
159
+ switch (_context.prev = _context.next) {
160
+ case 0:
161
+ originalAbort();
162
+ dispatchIsAborted(true);
163
+
164
+ case 2:
165
+ case "end":
166
+ return _context.stop();
167
+ }
168
+ }
169
+ }, _callee);
170
+ }));
171
+
172
+ return function abort() {
173
+ return _ref.apply(this, arguments);
174
+ };
175
+ }();
176
+
177
+ upload.start = start;
178
+ upload.abort = abort;
179
+ return {
180
+ upload: upload,
181
+ originalStart: originalStart,
182
+ originalAbort: originalAbort
183
+ };
184
+ };
185
+
186
+ var startOrResumeUpload = function startOrResumeUpload(upload) {
187
+ upload.findPreviousUploads().then(function (previousUploads) {
188
+ if (previousUploads.length) {
189
+ upload.resumeFromPreviousUpload(previousUploads[0]);
190
+ }
191
+
192
+ upload.start();
193
+ });
194
+ };
195
+
196
+ var useAutoAbort = function useAutoAbort(upload, abort, autoAbort) {
197
+ useEffect(function () {
198
+ var abortUploading = function () {
199
+ var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
200
+ return regeneratorRuntime.wrap(function _callee$(_context) {
201
+ while (1) {
202
+ switch (_context.prev = _context.next) {
203
+ case 0:
204
+ if (!(!upload || !abort)) {
205
+ _context.next = 2;
206
+ break;
207
+ }
208
+
209
+ return _context.abrupt("return");
210
+
211
+ case 2:
212
+ _context.next = 4;
213
+ return abort();
214
+
215
+ case 4:
216
+ case "end":
217
+ return _context.stop();
218
+ }
219
+ }
220
+ }, _callee);
221
+ }));
222
+
223
+ return function abortUploading() {
224
+ return _ref.apply(this, arguments);
225
+ };
226
+ }();
227
+
228
+ return function () {
229
+ if (!autoAbort) {
230
+ return;
231
+ }
232
+
233
+ abortUploading();
234
+ };
235
+ }, [autoAbort, upload]);
236
+ };
237
+
238
+ var defaultUseTusOptionsValue = Object.freeze({
239
+ autoAbort: true,
240
+ autoStart: false
241
+ });
242
+ var useMergeTusOptions = function useMergeTusOptions(options) {
243
+ return useMemo(function () {
244
+ return _objectSpread2(_objectSpread2({}, defaultUseTusOptionsValue), options || {});
245
+ }, [options]);
246
+ };
247
+
248
+ var initialUseTusState = Object.freeze({
249
+ upload: undefined,
250
+ isSuccess: false,
251
+ isAborted: false,
252
+ error: undefined,
253
+ originalAbort: undefined
254
+ });
255
+ var useTus = function useTus(baseOption) {
256
+ var _useMergeTusOptions = useMergeTusOptions(baseOption),
257
+ autoAbort = _useMergeTusOptions.autoAbort,
258
+ autoStart = _useMergeTusOptions.autoStart,
259
+ uploadOptions = _useMergeTusOptions.uploadOptions;
260
+
261
+ var _useState = useState(initialUseTusState),
262
+ _useState2 = _slicedToArray(_useState, 2),
263
+ tusState = _useState2[0],
264
+ setTusState = _useState2[1];
265
+
266
+ var updateTusState = useCallback(function (newOptions) {
267
+ setTusState(function (tus) {
268
+ return _objectSpread2(_objectSpread2({}, tus), newOptions);
269
+ });
270
+ }, []);
271
+ var setUpload = useCallback(function (file) {
272
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
273
+
274
+ var targetOptions = _objectSpread2(_objectSpread2({}, uploadOptions), options);
275
+
276
+ var onSuccess = function onSuccess() {
277
+ var _targetOptions$onSucc;
278
+
279
+ updateTusState({
280
+ isSuccess: true
281
+ });
282
+ targetOptions === null || targetOptions === void 0 ? void 0 : (_targetOptions$onSucc = targetOptions.onSuccess) === null || _targetOptions$onSucc === void 0 ? void 0 : _targetOptions$onSucc.call(targetOptions);
283
+ };
284
+
285
+ var onError = function onError(error) {
286
+ var _targetOptions$onErro;
287
+
288
+ updateTusState({
289
+ error: error
290
+ });
291
+ targetOptions === null || targetOptions === void 0 ? void 0 : (_targetOptions$onErro = targetOptions.onError) === null || _targetOptions$onErro === void 0 ? void 0 : _targetOptions$onErro.call(targetOptions, error);
292
+ };
293
+
294
+ var mergedUploadOptions = _objectSpread2(_objectSpread2({}, targetOptions), {}, {
295
+ onSuccess: onSuccess,
296
+ onError: onError
297
+ });
298
+
299
+ var dispatchIsAborted = function dispatchIsAborted(isAborted) {
300
+ updateTusState({
301
+ isAborted: isAborted
302
+ });
303
+ };
304
+
305
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
306
+ upload = _createUpload.upload,
307
+ originalAbort = _createUpload.originalAbort;
308
+
309
+ if (autoStart) {
310
+ startOrResumeUpload(upload);
311
+ }
312
+
313
+ updateTusState(_objectSpread2(_objectSpread2({}, initialUseTusState), {}, {
314
+ upload: upload,
315
+ originalAbort: originalAbort
316
+ }));
317
+ }, [autoStart, updateTusState, uploadOptions]);
318
+ var remove = useCallback(function () {
319
+ var _tusState$originalAbo;
320
+
321
+ tusState === null || tusState === void 0 ? void 0 : (_tusState$originalAbo = tusState.originalAbort) === null || _tusState$originalAbo === void 0 ? void 0 : _tusState$originalAbo.call(tusState);
322
+ setTusState(initialUseTusState);
323
+ }, [tusState]);
324
+ var tusResult = useMemo(function () {
325
+ var _tusState$isSuccess, _tusState$isAborted;
326
+
327
+ return {
328
+ upload: tusState === null || tusState === void 0 ? void 0 : tusState.upload,
329
+ isSuccess: (_tusState$isSuccess = tusState === null || tusState === void 0 ? void 0 : tusState.isSuccess) !== null && _tusState$isSuccess !== void 0 ? _tusState$isSuccess : false,
330
+ error: tusState === null || tusState === void 0 ? void 0 : tusState.error,
331
+ isAborted: (_tusState$isAborted = tusState === null || tusState === void 0 ? void 0 : tusState.isAborted) !== null && _tusState$isAborted !== void 0 ? _tusState$isAborted : false,
332
+ setUpload: setUpload,
333
+ remove: remove
334
+ };
335
+ }, [tusState, setUpload, remove]);
336
+ useAutoAbort(tusResult.upload, tusState.originalAbort, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
337
+ return tusResult;
338
+ };
339
+
168
340
  var ERROR_MESSAGES = {
169
- tusClientHasNotFounded: 'No TusClient set, use TusClientProvider to set one',
170
- tusIsNotSupported: 'This browser does not support uploads. Please use a modern browser instead.'
341
+ tusClientHasNotFounded: "No TusClient set, use TusClientProvider to set one",
342
+ tusIsNotSupported: "This browser does not support uploads. Please use a modern browser instead."
171
343
  };
172
344
 
173
345
  var TusClientStateContext = createContext(undefined);
@@ -175,7 +347,7 @@ var TusClientDispatchContext = createContext(undefined);
175
347
  var useTusClientState = function useTusClientState() {
176
348
  var tusClientState = useContext(TusClientStateContext);
177
349
 
178
- if (!tusClientState && process.env.NODE_ENV !== 'production') {
350
+ if (!tusClientState && process.env.NODE_ENV !== "production") {
179
351
  throw new Error(ERROR_MESSAGES.tusClientHasNotFounded);
180
352
  }
181
353
 
@@ -186,7 +358,7 @@ var useTusClientState = function useTusClientState() {
186
358
  var useTusClientDispatch = function useTusClientDispatch() {
187
359
  var tusClientDispatch = useContext(TusClientDispatchContext);
188
360
 
189
- if (!tusClientDispatch && process.env.NODE_ENV !== 'production') {
361
+ if (!tusClientDispatch && process.env.NODE_ENV !== "production") {
190
362
  throw new Error(ERROR_MESSAGES.tusClientHasNotFounded);
191
363
  }
192
364
 
@@ -197,7 +369,7 @@ var useTusClientDispatch = function useTusClientDispatch() {
197
369
 
198
370
  var insertUploadInstance = function insertUploadInstance(cacheKey, upload) {
199
371
  return {
200
- type: 'INSERT_UPLOAD_INSTANCE',
372
+ type: "INSERT_UPLOAD_INSTANCE",
201
373
  payload: {
202
374
  cacheKey: cacheKey,
203
375
  uploadState: {
@@ -210,7 +382,7 @@ var insertUploadInstance = function insertUploadInstance(cacheKey, upload) {
210
382
  };
211
383
  var updateSuccessUpload = function updateSuccessUpload(cacheKey) {
212
384
  return {
213
- type: 'UPDATE_SUCCESS_UPLOAD',
385
+ type: "UPDATE_SUCCESS_UPLOAD",
214
386
  payload: {
215
387
  cacheKey: cacheKey
216
388
  }
@@ -218,7 +390,7 @@ var updateSuccessUpload = function updateSuccessUpload(cacheKey) {
218
390
  };
219
391
  var updateErrorUpload = function updateErrorUpload(cacheKey, error) {
220
392
  return {
221
- type: 'UPDATE_ERROR_UPLOAD',
393
+ type: "UPDATE_ERROR_UPLOAD",
222
394
  payload: {
223
395
  cacheKey: cacheKey,
224
396
  error: error
@@ -227,7 +399,7 @@ var updateErrorUpload = function updateErrorUpload(cacheKey, error) {
227
399
  };
228
400
  var updateIsAbortedUpload = function updateIsAbortedUpload(cacheKey, isAborted) {
229
401
  return {
230
- type: 'UPDATE_IS_ABORTED_UPLOAD',
402
+ type: "UPDATE_IS_ABORTED_UPLOAD",
231
403
  payload: {
232
404
  cacheKey: cacheKey,
233
405
  isAborted: isAborted
@@ -236,202 +408,78 @@ var updateIsAbortedUpload = function updateIsAbortedUpload(cacheKey, isAborted)
236
408
  };
237
409
  var removeUploadInstance = function removeUploadInstance(cacheKey) {
238
410
  return {
239
- type: 'REMOVE_UPLOAD_INSTANCE',
411
+ type: "REMOVE_UPLOAD_INSTANCE",
240
412
  payload: {
241
413
  cacheKey: cacheKey
242
414
  }
243
415
  };
244
416
  };
245
- var updateTusHandlerOptions = function updateTusHandlerOptions(payload) {
417
+ var updateDefaultOptions = function updateDefaultOptions(defaultOptions) {
246
418
  return {
247
- type: 'UPDATE_TUS_HANDLER_OPTIONS',
248
- payload: payload
249
- };
250
- };
251
-
252
- var createOptionHandler = function createOptionHandler(handlers, _ref) {
253
- var dispatch = _ref.dispatch,
254
- internalDispatch = _ref.internalDispatch,
255
- cacheKey = _ref.cacheKey;
256
-
257
- var onSuccess = function onSuccess() {
258
- if (cacheKey) {
259
- dispatch(updateSuccessUpload(cacheKey));
260
- }
261
-
262
- if (!cacheKey) {
263
- internalDispatch(function (internalTusState) {
264
- return _objectSpread2(_objectSpread2({}, internalTusState), {}, {
265
- isSuccess: true
266
- });
267
- });
268
- }
269
-
270
- if (handlers.onSuccess) {
271
- handlers.onSuccess();
272
- }
273
- };
274
-
275
- var onError = function onError(err) {
276
- if (cacheKey) {
277
- dispatch(updateErrorUpload(cacheKey, err));
278
- }
279
-
280
- if (!cacheKey) {
281
- internalDispatch(function (internalTusState) {
282
- return _objectSpread2(_objectSpread2({}, internalTusState), {}, {
283
- error: err
284
- });
285
- });
286
- }
287
-
288
- if (handlers.onError) {
289
- handlers.onError(err);
419
+ type: "UPDATE_DEFAULT_OPTIONS",
420
+ payload: {
421
+ defaultOptions: defaultOptions
290
422
  }
291
423
  };
292
-
293
- return {
294
- onSuccess: onSuccess,
295
- onError: onError
296
- };
297
424
  };
298
- var startOrResumeUpload = function startOrResumeUpload(upload) {
299
- upload.findPreviousUploads().then(function (previousUploads) {
300
- if (previousUploads.length) {
301
- upload.resumeFromPreviousUpload(previousUploads[0]);
302
- }
303
425
 
304
- upload.start();
305
- });
306
- };
307
- var createUpload = function createUpload(file, options, _ref2) {
308
- var dispatch = _ref2.dispatch,
309
- internalDispatch = _ref2.internalDispatch,
310
- cacheKey = _ref2.cacheKey;
311
- var upload = new Upload(file, options);
312
- var originalStart = upload.start.bind(upload);
313
- var originalAbort = upload.abort.bind(upload);
426
+ var useTusStore = function useTusStore(cacheKey, baseOption) {
427
+ var _tusResult$upload;
314
428
 
315
- var dispatchIsAborted = function dispatchIsAborted(isAborted) {
316
- if (cacheKey) {
317
- dispatch(updateIsAbortedUpload(cacheKey, isAborted));
318
- return;
319
- }
429
+ var _useMergeTusOptions = useMergeTusOptions(baseOption),
430
+ autoAbort = _useMergeTusOptions.autoAbort,
431
+ autoStart = _useMergeTusOptions.autoStart,
432
+ uploadOptions = _useMergeTusOptions.uploadOptions;
320
433
 
321
- internalDispatch(function (internalTusState) {
322
- return _objectSpread2(_objectSpread2({}, internalTusState), {}, {
323
- isAborted: isAborted
324
- });
325
- });
326
- };
434
+ var _useTusClientState = useTusClientState(),
435
+ defaultOptions = _useTusClientState.defaultOptions,
436
+ uploads = _useTusClientState.uploads;
327
437
 
328
- var start = function start() {
329
- originalStart();
330
- dispatchIsAborted(false);
331
- };
438
+ var tusClientDispatch = useTusClientDispatch();
439
+ var setUpload = useCallback(function (file) {
440
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
332
441
 
333
- var abort = function () {
334
- var _ref3 = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
335
- return regeneratorRuntime.wrap(function _callee$(_context) {
336
- while (1) {
337
- switch (_context.prev = _context.next) {
338
- case 0:
339
- originalAbort();
340
- dispatchIsAborted(true);
442
+ var targetOptions = _objectSpread2(_objectSpread2(_objectSpread2({}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions(file)), uploadOptions), options);
341
443
 
342
- case 2:
343
- case "end":
344
- return _context.stop();
345
- }
346
- }
347
- }, _callee);
348
- }));
444
+ var onSuccess = function onSuccess() {
445
+ var _targetOptions$onSucc;
349
446
 
350
- return function abort() {
351
- return _ref3.apply(this, arguments);
447
+ tusClientDispatch(updateSuccessUpload(cacheKey));
448
+ targetOptions === null || targetOptions === void 0 ? void 0 : (_targetOptions$onSucc = targetOptions.onSuccess) === null || _targetOptions$onSucc === void 0 ? void 0 : _targetOptions$onSucc.call(targetOptions);
352
449
  };
353
- }();
354
450
 
355
- upload.start = start;
356
- upload.abort = abort;
357
- return upload;
358
- };
451
+ var onError = function onError(error) {
452
+ var _targetOptions$onErro;
359
453
 
360
- var defaultUseTusOptionsValue = Object.freeze({
361
- cacheKey: undefined,
362
- autoAbort: true,
363
- autoStart: false
364
- });
365
- var initialUseTusState = Object.freeze({
366
- upload: undefined,
367
- isSuccess: false,
368
- isAborted: false,
369
- error: undefined
370
- });
371
- var useTus = function useTus(useTusOptions) {
372
- var _defaultUseTusOptions = _objectSpread2(_objectSpread2({}, defaultUseTusOptionsValue), useTusOptions || {}),
373
- cacheKey = _defaultUseTusOptions.cacheKey,
374
- autoAbort = _defaultUseTusOptions.autoAbort,
375
- autoStart = _defaultUseTusOptions.autoStart;
376
-
377
- var _useState = useState(initialUseTusState),
378
- _useState2 = _slicedToArray(_useState, 2),
379
- internalTusState = _useState2[0],
380
- setInternalTusState = _useState2[1];
381
-
382
- var tusClientState = useTusClientState();
383
- var tusClientDispatch = useTusClientDispatch();
384
- var tus = tusClientState.tusHandler.getTus;
385
- var setUpload = useCallback(function (file) {
386
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
387
- var dispatcher = {
388
- cacheKey: cacheKey,
389
- dispatch: tusClientDispatch,
390
- internalDispatch: setInternalTusState
454
+ tusClientDispatch(updateErrorUpload(cacheKey, error));
455
+ targetOptions === null || targetOptions === void 0 ? void 0 : (_targetOptions$onErro = targetOptions.onError) === null || _targetOptions$onErro === void 0 ? void 0 : _targetOptions$onErro.call(targetOptions, error);
391
456
  };
392
457
 
393
- var targetOptions = _objectSpread2(_objectSpread2({}, tus.defaultOptions(file)), options);
394
-
395
- var _createOptionHandler = createOptionHandler({
396
- onError: targetOptions.onError,
397
- onSuccess: targetOptions.onSuccess
398
- }, dispatcher),
399
- onSuccess = _createOptionHandler.onSuccess,
400
- onError = _createOptionHandler.onError;
401
-
402
- var uploadOptions = _objectSpread2(_objectSpread2({}, targetOptions), {}, {
458
+ var mergedUploadOptions = _objectSpread2(_objectSpread2({}, targetOptions), {}, {
403
459
  onSuccess: onSuccess,
404
460
  onError: onError
405
461
  });
406
462
 
407
- var upload = createUpload(file, uploadOptions, dispatcher);
463
+ var dispatchIsAborted = function dispatchIsAborted(isAborted) {
464
+ tusClientDispatch(updateIsAbortedUpload(cacheKey, isAborted));
465
+ };
466
+
467
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
468
+ upload = _createUpload.upload;
408
469
 
409
470
  if (autoStart) {
410
471
  startOrResumeUpload(upload);
411
472
  }
412
473
 
413
- if (cacheKey) {
414
- tusClientDispatch(insertUploadInstance(cacheKey, upload));
415
- return;
416
- }
417
-
418
- setInternalTusState(_objectSpread2(_objectSpread2({}, initialUseTusState), {}, {
419
- upload: upload
420
- }));
421
- }, [tusClientDispatch, cacheKey, tus, autoStart]);
474
+ tusClientDispatch(insertUploadInstance(cacheKey, upload));
475
+ }, [autoStart, cacheKey, defaultOptions, tusClientDispatch, uploadOptions]);
422
476
  var targetTusState = useMemo(function () {
423
- return cacheKey ? tusClientState.uploads[cacheKey] : internalTusState;
424
- }, [cacheKey, tusClientState, internalTusState]);
477
+ return uploads[cacheKey];
478
+ }, [cacheKey, uploads]);
425
479
  var remove = useCallback(function () {
426
480
  var _targetTusState$uploa;
427
481
 
428
482
  targetTusState === null || targetTusState === void 0 ? void 0 : (_targetTusState$uploa = targetTusState.upload) === null || _targetTusState$uploa === void 0 ? void 0 : _targetTusState$uploa.abort();
429
-
430
- if (!cacheKey) {
431
- setInternalTusState(initialUseTusState);
432
- return;
433
- }
434
-
435
483
  tusClientDispatch(removeUploadInstance(cacheKey));
436
484
  }, [targetTusState, tusClientDispatch, cacheKey]);
437
485
  var tusResult = useMemo(function () {
@@ -446,80 +494,13 @@ var useTus = function useTus(useTusOptions) {
446
494
  remove: remove
447
495
  };
448
496
  }, [targetTusState, setUpload, remove]);
449
- useEffect(function () {
450
- var abortUploading = function () {
451
- var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
452
- return regeneratorRuntime.wrap(function _callee$(_context) {
453
- while (1) {
454
- switch (_context.prev = _context.next) {
455
- case 0:
456
- if (tusResult.upload) {
457
- _context.next = 2;
458
- break;
459
- }
460
-
461
- return _context.abrupt("return");
462
-
463
- case 2:
464
- _context.next = 4;
465
- return tusResult.upload.abort();
466
-
467
- case 4:
468
- case "end":
469
- return _context.stop();
470
- }
471
- }
472
- }, _callee);
473
- }));
474
-
475
- return function abortUploading() {
476
- return _ref.apply(this, arguments);
477
- };
478
- }();
479
-
480
- return function () {
481
- if (!autoAbort) {
482
- return;
483
- }
484
-
485
- abortUploading();
486
- };
487
- }, [autoAbort, tusResult.upload]);
497
+ useAutoAbort(tusResult.upload, (_tusResult$upload = tusResult.upload) === null || _tusResult$upload === void 0 ? void 0 : _tusResult$upload.abort, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
488
498
  return tusResult;
489
499
  };
490
500
 
491
- var initialDefaultOptions = function initialDefaultOptions() {
492
- return tus.defaultOptions;
493
- };
494
- var TusHandler = function () {
495
- function TusHandler(tusConfigs) {
496
- _classCallCheck(this, TusHandler);
497
-
498
- var _ref = tusConfigs || {},
499
- _ref$canStoreURLs = _ref.canStoreURLs,
500
- canStoreURLs = _ref$canStoreURLs === void 0 ? tus.canStoreURLs : _ref$canStoreURLs,
501
- _ref$defaultOptions = _ref.defaultOptions,
502
- defaultOptions = _ref$defaultOptions === void 0 ? initialDefaultOptions : _ref$defaultOptions;
503
-
504
- this.tus = _objectSpread2(_objectSpread2({}, tus), {}, {
505
- canStoreURLs: canStoreURLs,
506
- defaultOptions: defaultOptions
507
- });
508
- }
509
-
510
- _createClass(TusHandler, [{
511
- key: "getTus",
512
- get: function get() {
513
- return this.tus;
514
- }
515
- }]);
516
-
517
- return TusHandler;
518
- }();
519
-
520
501
  var tusClientReducer = function tusClientReducer(state, actions) {
521
502
  switch (actions.type) {
522
- case 'INSERT_UPLOAD_INSTANCE':
503
+ case "INSERT_UPLOAD_INSTANCE":
523
504
  {
524
505
  var _actions$payload = actions.payload,
525
506
  _cacheKey = _actions$payload.cacheKey,
@@ -529,7 +510,7 @@ var tusClientReducer = function tusClientReducer(state, actions) {
529
510
  });
530
511
  }
531
512
 
532
- case 'UPDATE_SUCCESS_UPLOAD':
513
+ case "UPDATE_SUCCESS_UPLOAD":
533
514
  {
534
515
  var _cacheKey2 = actions.payload.cacheKey;
535
516
  var target = state.uploads[_cacheKey2];
@@ -545,7 +526,7 @@ var tusClientReducer = function tusClientReducer(state, actions) {
545
526
  });
546
527
  }
547
528
 
548
- case 'UPDATE_ERROR_UPLOAD':
529
+ case "UPDATE_ERROR_UPLOAD":
549
530
  {
550
531
  var _actions$payload2 = actions.payload,
551
532
  _cacheKey3 = _actions$payload2.cacheKey,
@@ -563,7 +544,7 @@ var tusClientReducer = function tusClientReducer(state, actions) {
563
544
  });
564
545
  }
565
546
 
566
- case 'UPDATE_IS_ABORTED_UPLOAD':
547
+ case "UPDATE_IS_ABORTED_UPLOAD":
567
548
  {
568
549
  var _actions$payload3 = actions.payload,
569
550
  _cacheKey4 = _actions$payload3.cacheKey,
@@ -581,7 +562,7 @@ var tusClientReducer = function tusClientReducer(state, actions) {
581
562
  });
582
563
  }
583
564
 
584
- case 'REMOVE_UPLOAD_INSTANCE':
565
+ case "REMOVE_UPLOAD_INSTANCE":
585
566
  {
586
567
  var _cacheKey5 = actions.payload.cacheKey;
587
568
  var newUploads = state.uploads;
@@ -591,24 +572,11 @@ var tusClientReducer = function tusClientReducer(state, actions) {
591
572
  });
592
573
  }
593
574
 
594
- case 'RESET_CLIENT':
575
+ case "UPDATE_DEFAULT_OPTIONS":
595
576
  {
596
- return {
597
- tusHandler: new TusHandler(),
598
- uploads: {}
599
- };
600
- }
601
-
602
- case 'UPDATE_TUS_HANDLER_OPTIONS':
603
- {
604
- var _actions$payload4 = actions.payload,
605
- canStoreURLs = _actions$payload4.canStoreURLs,
606
- defaultOptions = _actions$payload4.defaultOptions;
577
+ var defaultOptions = actions.payload.defaultOptions;
607
578
  return _objectSpread2(_objectSpread2({}, state), {}, {
608
- tusHandler: new TusHandler({
609
- canStoreURLs: canStoreURLs,
610
- defaultOptions: defaultOptions
611
- })
579
+ defaultOptions: defaultOptions
612
580
  });
613
581
  }
614
582
 
@@ -618,65 +586,40 @@ var tusClientReducer = function tusClientReducer(state, actions) {
618
586
  };
619
587
  var tusClientInitialState = {
620
588
  uploads: {},
621
- tusHandler: new TusHandler()
589
+ defaultOptions: undefined
622
590
  };
623
591
 
624
- var TusController = function TusController(_ref) {
625
- var canStoreURLs = _ref.canStoreURLs,
626
- _ref$defaultOptions = _ref.defaultOptions,
627
- defaultOptions = _ref$defaultOptions === void 0 ? initialDefaultOptions : _ref$defaultOptions,
592
+ var TusClientProvider = function TusClientProvider(_ref) {
593
+ var defaultOptions = _ref.defaultOptions,
628
594
  children = _ref.children;
629
595
 
630
- var _useTusClientState = useTusClientState(),
631
- tusHandler = _useTusClientState.tusHandler;
596
+ var _useReducer = useReducer(tusClientReducer, _objectSpread2(_objectSpread2({}, tusClientInitialState), {}, {
597
+ defaultOptions: defaultOptions
598
+ })),
599
+ _useReducer2 = _slicedToArray(_useReducer, 2),
600
+ tusClientState = _useReducer2[0],
601
+ tusClientDispatch = _useReducer2[1];
632
602
 
633
- var tus = tusHandler.getTus;
634
- var tusClientDispatch = useTusClientDispatch();
635
603
  useEffect(function () {
636
- if (tusHandler.getTus.isSupported || process.env.NODE_ENV === 'production') {
604
+ if (isSupported || process.env.NODE_ENV === "production") {
637
605
  return;
638
606
  }
639
607
 
640
608
  console.error(ERROR_MESSAGES.tusIsNotSupported);
641
- }, [tusHandler.getTus.isSupported]);
609
+ }, []);
642
610
  useEffect(function () {
643
- if (tus.defaultOptions === defaultOptions && tus.canStoreURLs === canStoreURLs) {
611
+ if (tusClientState.defaultOptions === defaultOptions) {
644
612
  return;
645
613
  }
646
614
 
647
- tusClientDispatch(updateTusHandlerOptions({
648
- canStoreURLs: canStoreURLs,
649
- defaultOptions: defaultOptions
650
- }));
651
- }, [tusClientDispatch, canStoreURLs, defaultOptions, tus.canStoreURLs, tus.defaultOptions]);
652
- return createElement(Fragment, {}, children);
653
- };
654
-
655
- var TusClientProvider = function TusClientProvider(_ref) {
656
- var canStoreURLs = _ref.canStoreURLs,
657
- defaultOptions = _ref.defaultOptions,
658
- children = _ref.children;
659
-
660
- var _useReducer = useReducer(tusClientReducer, _objectSpread2(_objectSpread2({}, tusClientInitialState), {}, {
661
- tusHandler: new TusHandler({
662
- canStoreURLs: canStoreURLs,
663
- defaultOptions: defaultOptions
664
- })
665
- })),
666
- _useReducer2 = _slicedToArray(_useReducer, 2),
667
- tusClientState = _useReducer2[0],
668
- tusClientDispatch = _useReducer2[1];
669
-
670
- var tusControllerElement = createElement(TusController, {
671
- canStoreURLs: canStoreURLs,
672
- defaultOptions: defaultOptions
673
- }, children);
615
+ tusClientDispatch(updateDefaultOptions(defaultOptions));
616
+ }, [defaultOptions, tusClientState.defaultOptions]);
674
617
  var tusClientDispatchContextProviderElement = createElement(TusClientDispatchContext.Provider, {
675
618
  value: tusClientDispatch
676
- }, tusControllerElement);
619
+ }, children);
677
620
  return createElement(TusClientStateContext.Provider, {
678
621
  value: tusClientState
679
622
  }, tusClientDispatchContextProviderElement);
680
623
  };
681
624
 
682
- export { TusClientProvider, useTus };
625
+ export { TusClientProvider, useTus, useTusStore };