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