use-tus 0.7.1 → 0.7.3

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.
package/dist/index.esm.js CHANGED
@@ -1,625 +1 @@
1
- import { useEffect, useMemo, useState, useCallback, createContext, useContext, useReducer, createElement } from 'react';
2
- import { Upload, isSupported } from 'tus-js-client';
3
-
4
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
5
- try {
6
- var info = gen[key](arg);
7
- var value = info.value;
8
- } catch (error) {
9
- reject(error);
10
- return;
11
- }
12
-
13
- if (info.done) {
14
- resolve(value);
15
- } else {
16
- Promise.resolve(value).then(_next, _throw);
17
- }
18
- }
19
-
20
- function _asyncToGenerator(fn) {
21
- return function () {
22
- var self = this,
23
- args = arguments;
24
- return new Promise(function (resolve, reject) {
25
- var gen = fn.apply(self, args);
26
-
27
- function _next(value) {
28
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
29
- }
30
-
31
- function _throw(err) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
33
- }
34
-
35
- _next(undefined);
36
- });
37
- };
38
- }
39
-
40
- function _defineProperty(obj, key, value) {
41
- if (key in obj) {
42
- Object.defineProperty(obj, key, {
43
- value: value,
44
- enumerable: true,
45
- configurable: true,
46
- writable: true
47
- });
48
- } else {
49
- obj[key] = value;
50
- }
51
-
52
- return obj;
53
- }
54
-
55
- function ownKeys(object, enumerableOnly) {
56
- var keys = Object.keys(object);
57
-
58
- if (Object.getOwnPropertySymbols) {
59
- var symbols = Object.getOwnPropertySymbols(object);
60
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
61
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
62
- });
63
- keys.push.apply(keys, symbols);
64
- }
65
-
66
- return keys;
67
- }
68
-
69
- function _objectSpread2(target) {
70
- for (var i = 1; i < arguments.length; i++) {
71
- var source = arguments[i] != null ? arguments[i] : {};
72
-
73
- if (i % 2) {
74
- ownKeys(Object(source), true).forEach(function (key) {
75
- _defineProperty(target, key, source[key]);
76
- });
77
- } else if (Object.getOwnPropertyDescriptors) {
78
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
79
- } else {
80
- ownKeys(Object(source)).forEach(function (key) {
81
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
82
- });
83
- }
84
- }
85
-
86
- return target;
87
- }
88
-
89
- function _slicedToArray(arr, i) {
90
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
91
- }
92
-
93
- function _arrayWithHoles(arr) {
94
- if (Array.isArray(arr)) return arr;
95
- }
96
-
97
- function _iterableToArrayLimit(arr, i) {
98
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
99
- var _arr = [];
100
- var _n = true;
101
- var _d = false;
102
- var _e = undefined;
103
-
104
- try {
105
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
106
- _arr.push(_s.value);
107
-
108
- if (i && _arr.length === i) break;
109
- }
110
- } catch (err) {
111
- _d = true;
112
- _e = err;
113
- } finally {
114
- try {
115
- if (!_n && _i["return"] != null) _i["return"]();
116
- } finally {
117
- if (_d) throw _e;
118
- }
119
- }
120
-
121
- return _arr;
122
- }
123
-
124
- function _unsupportedIterableToArray(o, minLen) {
125
- if (!o) return;
126
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
127
- var n = Object.prototype.toString.call(o).slice(8, -1);
128
- if (n === "Object" && o.constructor) n = o.constructor.name;
129
- if (n === "Map" || n === "Set") return Array.from(o);
130
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
131
- }
132
-
133
- function _arrayLikeToArray(arr, len) {
134
- if (len == null || len > arr.length) len = arr.length;
135
-
136
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
137
-
138
- return arr2;
139
- }
140
-
141
- function _nonIterableRest() {
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.");
143
- }
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
-
340
- var ERROR_MESSAGES = {
341
- tusClientHasNotFounded: "No TusClient set, use TusClientProvider to set one",
342
- tusIsNotSupported: "This browser does not support uploads. Please use a modern browser instead."
343
- };
344
-
345
- var TusClientStateContext = createContext(undefined);
346
- var TusClientDispatchContext = createContext(undefined);
347
- var useTusClientState = function useTusClientState() {
348
- var tusClientState = useContext(TusClientStateContext);
349
-
350
- if (!tusClientState && process.env.NODE_ENV !== "production") {
351
- throw new Error(ERROR_MESSAGES.tusClientHasNotFounded);
352
- }
353
-
354
- return useMemo(function () {
355
- return tusClientState;
356
- }, [tusClientState]);
357
- };
358
- var useTusClientDispatch = function useTusClientDispatch() {
359
- var tusClientDispatch = useContext(TusClientDispatchContext);
360
-
361
- if (!tusClientDispatch && process.env.NODE_ENV !== "production") {
362
- throw new Error(ERROR_MESSAGES.tusClientHasNotFounded);
363
- }
364
-
365
- return useMemo(function () {
366
- return tusClientDispatch;
367
- }, [tusClientDispatch]);
368
- };
369
-
370
- var insertUploadInstance = function insertUploadInstance(cacheKey, upload) {
371
- return {
372
- type: "INSERT_UPLOAD_INSTANCE",
373
- payload: {
374
- cacheKey: cacheKey,
375
- uploadState: {
376
- upload: upload,
377
- isSuccess: false,
378
- isAborted: false
379
- }
380
- }
381
- };
382
- };
383
- var updateSuccessUpload = function updateSuccessUpload(cacheKey) {
384
- return {
385
- type: "UPDATE_SUCCESS_UPLOAD",
386
- payload: {
387
- cacheKey: cacheKey
388
- }
389
- };
390
- };
391
- var updateErrorUpload = function updateErrorUpload(cacheKey, error) {
392
- return {
393
- type: "UPDATE_ERROR_UPLOAD",
394
- payload: {
395
- cacheKey: cacheKey,
396
- error: error
397
- }
398
- };
399
- };
400
- var updateIsAbortedUpload = function updateIsAbortedUpload(cacheKey, isAborted) {
401
- return {
402
- type: "UPDATE_IS_ABORTED_UPLOAD",
403
- payload: {
404
- cacheKey: cacheKey,
405
- isAborted: isAborted
406
- }
407
- };
408
- };
409
- var removeUploadInstance = function removeUploadInstance(cacheKey) {
410
- return {
411
- type: "REMOVE_UPLOAD_INSTANCE",
412
- payload: {
413
- cacheKey: cacheKey
414
- }
415
- };
416
- };
417
- var updateDefaultOptions = function updateDefaultOptions(defaultOptions) {
418
- return {
419
- type: "UPDATE_DEFAULT_OPTIONS",
420
- payload: {
421
- defaultOptions: defaultOptions
422
- }
423
- };
424
- };
425
-
426
- var useTusStore = function useTusStore(cacheKey, baseOption) {
427
- var _tusResult$upload;
428
-
429
- var _useMergeTusOptions = useMergeTusOptions(baseOption),
430
- autoAbort = _useMergeTusOptions.autoAbort,
431
- autoStart = _useMergeTusOptions.autoStart,
432
- uploadOptions = _useMergeTusOptions.uploadOptions;
433
-
434
- var _useTusClientState = useTusClientState(),
435
- defaultOptions = _useTusClientState.defaultOptions,
436
- uploads = _useTusClientState.uploads;
437
-
438
- var tusClientDispatch = useTusClientDispatch();
439
- var setUpload = useCallback(function (file) {
440
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
441
-
442
- var targetOptions = _objectSpread2(_objectSpread2(_objectSpread2({}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions(file)), uploadOptions), options);
443
-
444
- var onSuccess = function onSuccess() {
445
- var _targetOptions$onSucc;
446
-
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);
449
- };
450
-
451
- var onError = function onError(error) {
452
- var _targetOptions$onErro;
453
-
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);
456
- };
457
-
458
- var mergedUploadOptions = _objectSpread2(_objectSpread2({}, targetOptions), {}, {
459
- onSuccess: onSuccess,
460
- onError: onError
461
- });
462
-
463
- var dispatchIsAborted = function dispatchIsAborted(isAborted) {
464
- tusClientDispatch(updateIsAbortedUpload(cacheKey, isAborted));
465
- };
466
-
467
- var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
468
- upload = _createUpload.upload;
469
-
470
- if (autoStart) {
471
- startOrResumeUpload(upload);
472
- }
473
-
474
- tusClientDispatch(insertUploadInstance(cacheKey, upload));
475
- }, [autoStart, cacheKey, defaultOptions, tusClientDispatch, uploadOptions]);
476
- var targetTusState = useMemo(function () {
477
- return uploads[cacheKey];
478
- }, [cacheKey, uploads]);
479
- var remove = useCallback(function () {
480
- var _targetTusState$uploa;
481
-
482
- targetTusState === null || targetTusState === void 0 ? void 0 : (_targetTusState$uploa = targetTusState.upload) === null || _targetTusState$uploa === void 0 ? void 0 : _targetTusState$uploa.abort();
483
- tusClientDispatch(removeUploadInstance(cacheKey));
484
- }, [targetTusState, tusClientDispatch, cacheKey]);
485
- var tusResult = useMemo(function () {
486
- var _targetTusState$isSuc, _targetTusState$isAbo;
487
-
488
- return {
489
- upload: targetTusState === null || targetTusState === void 0 ? void 0 : targetTusState.upload,
490
- isSuccess: (_targetTusState$isSuc = targetTusState === null || targetTusState === void 0 ? void 0 : targetTusState.isSuccess) !== null && _targetTusState$isSuc !== void 0 ? _targetTusState$isSuc : false,
491
- error: targetTusState === null || targetTusState === void 0 ? void 0 : targetTusState.error,
492
- isAborted: (_targetTusState$isAbo = targetTusState === null || targetTusState === void 0 ? void 0 : targetTusState.isAborted) !== null && _targetTusState$isAbo !== void 0 ? _targetTusState$isAbo : false,
493
- setUpload: setUpload,
494
- remove: remove
495
- };
496
- }, [targetTusState, setUpload, remove]);
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);
498
- return tusResult;
499
- };
500
-
501
- var tusClientReducer = function tusClientReducer(state, actions) {
502
- switch (actions.type) {
503
- case "INSERT_UPLOAD_INSTANCE":
504
- {
505
- var _actions$payload = actions.payload,
506
- _cacheKey = _actions$payload.cacheKey,
507
- uploadState = _actions$payload.uploadState;
508
- return _objectSpread2(_objectSpread2({}, state), {}, {
509
- uploads: _objectSpread2(_objectSpread2({}, state.uploads), {}, _defineProperty({}, _cacheKey, uploadState))
510
- });
511
- }
512
-
513
- case "UPDATE_SUCCESS_UPLOAD":
514
- {
515
- var _cacheKey2 = actions.payload.cacheKey;
516
- var target = state.uploads[_cacheKey2];
517
-
518
- if (!target) {
519
- return state;
520
- }
521
-
522
- return _objectSpread2(_objectSpread2({}, state), {}, {
523
- uploads: _objectSpread2(_objectSpread2({}, state.uploads), {}, _defineProperty({}, _cacheKey2, _objectSpread2(_objectSpread2({}, target || {}), {}, {
524
- isSuccess: true
525
- })))
526
- });
527
- }
528
-
529
- case "UPDATE_ERROR_UPLOAD":
530
- {
531
- var _actions$payload2 = actions.payload,
532
- _cacheKey3 = _actions$payload2.cacheKey,
533
- error = _actions$payload2.error;
534
- var _target = state.uploads[_cacheKey3];
535
-
536
- if (!_target) {
537
- return state;
538
- }
539
-
540
- return _objectSpread2(_objectSpread2({}, state), {}, {
541
- uploads: _objectSpread2(_objectSpread2({}, state.uploads), {}, _defineProperty({}, _cacheKey3, _objectSpread2(_objectSpread2({}, _target), {}, {
542
- error: error
543
- })))
544
- });
545
- }
546
-
547
- case "UPDATE_IS_ABORTED_UPLOAD":
548
- {
549
- var _actions$payload3 = actions.payload,
550
- _cacheKey4 = _actions$payload3.cacheKey,
551
- isAborted = _actions$payload3.isAborted;
552
- var _target2 = state.uploads[_cacheKey4];
553
-
554
- if (!_target2) {
555
- return state;
556
- }
557
-
558
- return _objectSpread2(_objectSpread2({}, state), {}, {
559
- uploads: _objectSpread2(_objectSpread2({}, state.uploads), {}, _defineProperty({}, _cacheKey4, _objectSpread2(_objectSpread2({}, _target2), {}, {
560
- isAborted: isAborted
561
- })))
562
- });
563
- }
564
-
565
- case "REMOVE_UPLOAD_INSTANCE":
566
- {
567
- var _cacheKey5 = actions.payload.cacheKey;
568
- var newUploads = state.uploads;
569
- delete newUploads[_cacheKey5];
570
- return _objectSpread2(_objectSpread2({}, state), {}, {
571
- uploads: newUploads
572
- });
573
- }
574
-
575
- case "UPDATE_DEFAULT_OPTIONS":
576
- {
577
- var defaultOptions = actions.payload.defaultOptions;
578
- return _objectSpread2(_objectSpread2({}, state), {}, {
579
- defaultOptions: defaultOptions
580
- });
581
- }
582
-
583
- default:
584
- return state;
585
- }
586
- };
587
- var tusClientInitialState = {
588
- uploads: {},
589
- defaultOptions: undefined
590
- };
591
-
592
- var TusClientProvider = function TusClientProvider(_ref) {
593
- var defaultOptions = _ref.defaultOptions,
594
- children = _ref.children;
595
-
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];
602
-
603
- useEffect(function () {
604
- if (isSupported || process.env.NODE_ENV === "production") {
605
- return;
606
- }
607
-
608
- console.error(ERROR_MESSAGES.tusIsNotSupported);
609
- }, []);
610
- useEffect(function () {
611
- if (tusClientState.defaultOptions === defaultOptions) {
612
- return;
613
- }
614
-
615
- tusClientDispatch(updateDefaultOptions(defaultOptions));
616
- }, [defaultOptions, tusClientState.defaultOptions]);
617
- var tusClientDispatchContextProviderElement = createElement(TusClientDispatchContext.Provider, {
618
- value: tusClientDispatch
619
- }, children);
620
- return createElement(TusClientStateContext.Provider, {
621
- value: tusClientState
622
- }, tusClientDispatchContextProviderElement);
623
- };
624
-
625
- export { TusClientProvider, useTus, useTusStore };
1
+ import{useEffect as _,useMemo as O,useState as w,useCallback as T,createContext as N,useContext as f,useReducer as F,createElement as h}from"react";import{Upload as x,isSupported as M}from"tus-js-client";const R=(o,s,t)=>{const e=new x(o,s),r=e.start.bind(e),A=e.abort.bind(e),l=()=>{r(),t(!1)},S=async()=>{A(),t(!0)};return e.start=l,e.abort=S,{upload:e,originalStart:r,originalAbort:A}},I=o=>{o.findPreviousUploads().then(s=>{s.length&&o.resumeFromPreviousUpload(s[0]),o.start()})},m=(o,s,t)=>{_(()=>{const e=async()=>{!o||!s||await s()};return()=>{t&&e()}},[t,o])},V=Object.freeze({autoAbort:!0,autoStart:!1}),L=o=>O(()=>({...V,...o||{}}),[o]),D=Object.freeze({upload:void 0,isSuccess:!1,isAborted:!1,error:void 0,originalAbort:void 0}),H=o=>{const{autoAbort:s,autoStart:t,uploadOptions:e}=L(o),[r,A]=w(D),l=T(a=>{A(i=>({...i,...a}))},[]),S=T((a,i={})=>{const u={...e,...i},d={...u,onSuccess:()=>{var p;l({isSuccess:!0}),(p=u==null?void 0:u.onSuccess)==null||p.call(u)},onError:p=>{var b;l({error:p}),(b=u==null?void 0:u.onError)==null||b.call(u,p)}},E=p=>{l({isAborted:p})},{upload:c,originalAbort:y}=R(a,d,E);t&&I(c),l({...D,upload:c,originalAbort:y})},[t,l,e]),n=T(()=>{var a;(a=r==null?void 0:r.originalAbort)==null||a.call(r),A(D)},[r]),U=O(()=>{var a,i;return{upload:r==null?void 0:r.upload,isSuccess:(a=r==null?void 0:r.isSuccess)!=null?a:!1,error:r==null?void 0:r.error,isAborted:(i=r==null?void 0:r.isAborted)!=null?i:!1,setUpload:S,remove:n}},[r,S,n]);return m(U.upload,r.originalAbort,s!=null?s:!1),U},P={tusClientHasNotFounded:"No TusClient set, use TusClientProvider to set one",tusIsNotSupported:"This browser does not support uploads. Please use a modern browser instead."},K=N(void 0),g=N(void 0),j=()=>{const o=f(K);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return O(()=>o,[o])},z=()=>{const o=f(g);if(!o&&process.env.NODE_ENV!=="production")throw new Error(P.tusClientHasNotFounded);return O(()=>o,[o])},B=(o,s)=>({type:"INSERT_UPLOAD_INSTANCE",payload:{cacheKey:o,uploadState:{upload:s,isSuccess:!1,isAborted:!1}}}),k=o=>({type:"UPDATE_SUCCESS_UPLOAD",payload:{cacheKey:o}}),G=(o,s)=>({type:"UPDATE_ERROR_UPLOAD",payload:{cacheKey:o,error:s}}),$=(o,s)=>({type:"UPDATE_IS_ABORTED_UPLOAD",payload:{cacheKey:o,isAborted:s}}),q=o=>({type:"REMOVE_UPLOAD_INSTANCE",payload:{cacheKey:o}}),J=o=>({type:"UPDATE_DEFAULT_OPTIONS",payload:{defaultOptions:o}}),Q=(o,s)=>{var t;const{autoAbort:e,autoStart:r,uploadOptions:A}=L(s),{defaultOptions:l,uploads:S}=j(),n=z(),U=T((d,E={})=>{const c={...l==null?void 0:l(d),...A,...E},y={...c,onSuccess:()=>{var v;n(k(o)),(v=c==null?void 0:c.onSuccess)==null||v.call(c)},onError:v=>{var C;n(G(o,v)),(C=c==null?void 0:c.onError)==null||C.call(c,v)}},p=v=>{n($(o,v))},{upload:b}=R(d,y,p);r&&I(b),n(B(o,b))},[r,o,l,n,A]),a=O(()=>S[o],[o,S]),i=T(()=>{var d;(d=a==null?void 0:a.upload)==null||d.abort(),n(q(o))},[a,n,o]),u=O(()=>{var d,E;return{upload:a==null?void 0:a.upload,isSuccess:(d=a==null?void 0:a.isSuccess)!=null?d:!1,error:a==null?void 0:a.error,isAborted:(E=a==null?void 0:a.isAborted)!=null?E:!1,setUpload:U,remove:i}},[a,U,i]);return m(u.upload,(t=u.upload)==null?void 0:t.abort,e!=null?e:!1),u},W=(o,s)=>{switch(s.type){case"INSERT_UPLOAD_INSTANCE":{const{cacheKey:t,uploadState:e}=s.payload;return{...o,uploads:{...o.uploads,[t]:e}}}case"UPDATE_SUCCESS_UPLOAD":{const{cacheKey:t}=s.payload,e=o.uploads[t];return e?{...o,uploads:{...o.uploads,[t]:{...e||{},isSuccess:!0}}}:o}case"UPDATE_ERROR_UPLOAD":{const{cacheKey:t,error:e}=s.payload,r=o.uploads[t];return r?{...o,uploads:{...o.uploads,[t]:{...r,error:e}}}:o}case"UPDATE_IS_ABORTED_UPLOAD":{const{cacheKey:t,isAborted:e}=s.payload,r=o.uploads[t];return r?{...o,uploads:{...o.uploads,[t]:{...r,isAborted:e}}}:o}case"REMOVE_UPLOAD_INSTANCE":{const{cacheKey:t}=s.payload,e=o.uploads;return delete e[t],{...o,uploads:e}}case"UPDATE_DEFAULT_OPTIONS":{const{defaultOptions:t}=s.payload;return{...o,defaultOptions:t}}default:return o}},X={uploads:{},defaultOptions:void 0},Y=({defaultOptions:o,children:s})=>{const[t,e]=F(W,{...X,defaultOptions:o});_(()=>{M||process.env.NODE_ENV==="production"||console.error(P.tusIsNotSupported)},[]),_(()=>{t.defaultOptions!==o&&e(J(o))},[o,t.defaultOptions]);const r=h(g.Provider,{value:e},s);return h(K.Provider,{value:t},r)};export{Y as TusClientProvider,H as useTus,Q as useTusStore};
package/dist/index.js CHANGED
@@ -134,9 +134,7 @@ const useTusClientDispatch = () => {
134
134
  if (!tusClientDispatch && process.env.NODE_ENV !== "production") {
135
135
  throw new Error(ERROR_MESSAGES.tusClientHasNotFounded);
136
136
  }
137
- return useMemo(() => tusClientDispatch, [
138
- tusClientDispatch,
139
- ]);
137
+ return useMemo(() => tusClientDispatch, [tusClientDispatch]);
140
138
  };
141
139
 
142
140
  const insertUploadInstance = (cacheKey, upload) => ({
@@ -1,5 +1,5 @@
1
1
  import { Upload } from "tus-js-client";
2
- export declare type DispatchIsAborted = (isAborted: boolean) => void;
2
+ export type DispatchIsAborted = (isAborted: boolean) => void;
3
3
  export declare const createUpload: (file: Upload["file"], options: Upload["options"], dispatchIsAborted: DispatchIsAborted) => {
4
4
  upload: Upload;
5
5
  originalStart: () => void;