use-tus 0.6.1 → 0.7.1

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/README.md CHANGED
@@ -352,7 +352,7 @@ const App = () => (
352
352
  );
353
353
 
354
354
  const Uploader = () => {
355
- const { setUpload } = useTusStore('cacheKey', { autoAtart: true });
355
+ const { setUpload } = useTusStore('cacheKey', { autoStart: true });
356
356
 
357
357
  const handleSetUpload = useCallback((event: ChangeEvent<HTMLInputElement>) => {
358
358
  const file = event.target.files.item(0);
@@ -18,7 +18,7 @@ export declare const updateSuccessUpload: (cacheKey: string) => {
18
18
  readonly cacheKey: string;
19
19
  };
20
20
  };
21
- export declare const updateErrorUpload: (cacheKey: string, error?: Error | undefined) => {
21
+ export declare const updateErrorUpload: (cacheKey: string, error?: Error) => {
22
22
  readonly type: "UPDATE_ERROR_UPLOAD";
23
23
  readonly payload: {
24
24
  readonly cacheKey: string;
@@ -1,2 +1,2 @@
1
- import type { VFC } from "react";
2
- export declare const LoadingCircle: VFC;
1
+ import type { FC } from "react";
2
+ export declare const LoadingCircle: FC;
@@ -1,7 +1,7 @@
1
- import { VFC } from "react";
1
+ import { FC } from "react";
2
2
  declare type ProgressBarProps = {
3
3
  title?: string;
4
4
  value?: number;
5
5
  };
6
- export declare const ProgressBar: VFC<ProgressBarProps>;
6
+ export declare const ProgressBar: FC<ProgressBarProps>;
7
7
  export {};
@@ -1,2 +1,2 @@
1
- import { VFC } from "react";
2
- export declare const UploadIcon: VFC;
1
+ import { FC } from "react";
2
+ export declare const UploadIcon: FC;
@@ -1,6 +1,10 @@
1
1
  /// <reference types="jest" />
2
2
  /// <reference types="webpack-env" />
3
3
  /// <reference types="node" />
4
+ /// <reference types="node" />
5
+ /// <reference types="node" />
6
+ /// <reference types="node" />
7
+ /// <reference types="node" />
4
8
  export declare const createConsoleErrorMock: () => jest.SpyInstance<void, [message?: any, ...optionalParams: any[]]>;
5
9
  export declare const insertEnvValue: (value: NodeJS.Process["env"]) => void;
6
10
  export declare const startOrResumeUploadMock: jest.SpyInstance<void, [upload: import("tus-js-client").Upload]>;
package/dist/index.cjs.js CHANGED
@@ -180,7 +180,11 @@ var createUpload = function createUpload(file, options, dispatchIsAborted) {
180
180
 
181
181
  upload.start = start;
182
182
  upload.abort = abort;
183
- return upload;
183
+ return {
184
+ upload: upload,
185
+ originalStart: originalStart,
186
+ originalAbort: originalAbort
187
+ };
184
188
  };
185
189
 
186
190
  var startOrResumeUpload = function startOrResumeUpload(upload) {
@@ -193,7 +197,7 @@ var startOrResumeUpload = function startOrResumeUpload(upload) {
193
197
  });
194
198
  };
195
199
 
196
- var useAutoAbort = function useAutoAbort(upload, autoAbort) {
200
+ var useAutoAbort = function useAutoAbort(upload, abort, autoAbort) {
197
201
  react.useEffect(function () {
198
202
  var abortUploading = function () {
199
203
  var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
@@ -201,7 +205,7 @@ var useAutoAbort = function useAutoAbort(upload, autoAbort) {
201
205
  while (1) {
202
206
  switch (_context.prev = _context.next) {
203
207
  case 0:
204
- if (upload) {
208
+ if (!(!upload || !abort)) {
205
209
  _context.next = 2;
206
210
  break;
207
211
  }
@@ -210,7 +214,7 @@ var useAutoAbort = function useAutoAbort(upload, autoAbort) {
210
214
 
211
215
  case 2:
212
216
  _context.next = 4;
213
- return upload.abort();
217
+ return abort();
214
218
 
215
219
  case 4:
216
220
  case "end":
@@ -249,7 +253,8 @@ var initialUseTusState = Object.freeze({
249
253
  upload: undefined,
250
254
  isSuccess: false,
251
255
  isAborted: false,
252
- error: undefined
256
+ error: undefined,
257
+ originalAbort: undefined
253
258
  });
254
259
  var useTus = function useTus(baseOption) {
255
260
  var _useMergeTusOptions = useMergeTusOptions(baseOption),
@@ -301,22 +306,25 @@ var useTus = function useTus(baseOption) {
301
306
  });
302
307
  };
303
308
 
304
- var upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
309
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
310
+ upload = _createUpload.upload,
311
+ originalAbort = _createUpload.originalAbort;
305
312
 
306
313
  if (autoStart) {
307
314
  startOrResumeUpload(upload);
308
315
  }
309
316
 
310
- updateTusState({
311
- upload: upload
312
- });
317
+ updateTusState(_objectSpread2(_objectSpread2({}, initialUseTusState), {}, {
318
+ upload: upload,
319
+ originalAbort: originalAbort
320
+ }));
313
321
  }, [autoStart, updateTusState, uploadOptions]);
314
322
  var remove = react.useCallback(function () {
315
- var _tusState$upload;
323
+ var _tusState$originalAbo;
316
324
 
317
- tusState === null || tusState === void 0 ? void 0 : (_tusState$upload = tusState.upload) === null || _tusState$upload === void 0 ? void 0 : _tusState$upload.abort();
325
+ tusState === null || tusState === void 0 ? void 0 : (_tusState$originalAbo = tusState.originalAbort) === null || _tusState$originalAbo === void 0 ? void 0 : _tusState$originalAbo.call(tusState);
318
326
  setTusState(initialUseTusState);
319
- }, [tusState === null || tusState === void 0 ? void 0 : tusState.upload]);
327
+ }, [tusState]);
320
328
  var tusResult = react.useMemo(function () {
321
329
  var _tusState$isSuccess, _tusState$isAborted;
322
330
 
@@ -329,7 +337,7 @@ var useTus = function useTus(baseOption) {
329
337
  remove: remove
330
338
  };
331
339
  }, [tusState, setUpload, remove]);
332
- useAutoAbort(tusResult.upload, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
340
+ useAutoAbort(tusResult.upload, tusState.originalAbort, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
333
341
  return tusResult;
334
342
  };
335
343
 
@@ -420,6 +428,8 @@ var updateDefaultOptions = function updateDefaultOptions(defaultOptions) {
420
428
  };
421
429
 
422
430
  var useTusStore = function useTusStore(cacheKey, baseOption) {
431
+ var _tusResult$upload;
432
+
423
433
  var _useMergeTusOptions = useMergeTusOptions(baseOption),
424
434
  autoAbort = _useMergeTusOptions.autoAbort,
425
435
  autoStart = _useMergeTusOptions.autoStart,
@@ -458,7 +468,8 @@ var useTusStore = function useTusStore(cacheKey, baseOption) {
458
468
  tusClientDispatch(updateIsAbortedUpload(cacheKey, isAborted));
459
469
  };
460
470
 
461
- var upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
471
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
472
+ upload = _createUpload.upload;
462
473
 
463
474
  if (autoStart) {
464
475
  startOrResumeUpload(upload);
@@ -487,7 +498,7 @@ var useTusStore = function useTusStore(cacheKey, baseOption) {
487
498
  remove: remove
488
499
  };
489
500
  }, [targetTusState, setUpload, remove]);
490
- useAutoAbort(tusResult.upload, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
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);
491
502
  return tusResult;
492
503
  };
493
504
 
package/dist/index.esm.js CHANGED
@@ -176,7 +176,11 @@ var createUpload = function createUpload(file, options, dispatchIsAborted) {
176
176
 
177
177
  upload.start = start;
178
178
  upload.abort = abort;
179
- return upload;
179
+ return {
180
+ upload: upload,
181
+ originalStart: originalStart,
182
+ originalAbort: originalAbort
183
+ };
180
184
  };
181
185
 
182
186
  var startOrResumeUpload = function startOrResumeUpload(upload) {
@@ -189,7 +193,7 @@ var startOrResumeUpload = function startOrResumeUpload(upload) {
189
193
  });
190
194
  };
191
195
 
192
- var useAutoAbort = function useAutoAbort(upload, autoAbort) {
196
+ var useAutoAbort = function useAutoAbort(upload, abort, autoAbort) {
193
197
  useEffect(function () {
194
198
  var abortUploading = function () {
195
199
  var _ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee() {
@@ -197,7 +201,7 @@ var useAutoAbort = function useAutoAbort(upload, autoAbort) {
197
201
  while (1) {
198
202
  switch (_context.prev = _context.next) {
199
203
  case 0:
200
- if (upload) {
204
+ if (!(!upload || !abort)) {
201
205
  _context.next = 2;
202
206
  break;
203
207
  }
@@ -206,7 +210,7 @@ var useAutoAbort = function useAutoAbort(upload, autoAbort) {
206
210
 
207
211
  case 2:
208
212
  _context.next = 4;
209
- return upload.abort();
213
+ return abort();
210
214
 
211
215
  case 4:
212
216
  case "end":
@@ -245,7 +249,8 @@ var initialUseTusState = Object.freeze({
245
249
  upload: undefined,
246
250
  isSuccess: false,
247
251
  isAborted: false,
248
- error: undefined
252
+ error: undefined,
253
+ originalAbort: undefined
249
254
  });
250
255
  var useTus = function useTus(baseOption) {
251
256
  var _useMergeTusOptions = useMergeTusOptions(baseOption),
@@ -297,22 +302,25 @@ var useTus = function useTus(baseOption) {
297
302
  });
298
303
  };
299
304
 
300
- var upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
305
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
306
+ upload = _createUpload.upload,
307
+ originalAbort = _createUpload.originalAbort;
301
308
 
302
309
  if (autoStart) {
303
310
  startOrResumeUpload(upload);
304
311
  }
305
312
 
306
- updateTusState({
307
- upload: upload
308
- });
313
+ updateTusState(_objectSpread2(_objectSpread2({}, initialUseTusState), {}, {
314
+ upload: upload,
315
+ originalAbort: originalAbort
316
+ }));
309
317
  }, [autoStart, updateTusState, uploadOptions]);
310
318
  var remove = useCallback(function () {
311
- var _tusState$upload;
319
+ var _tusState$originalAbo;
312
320
 
313
- tusState === null || tusState === void 0 ? void 0 : (_tusState$upload = tusState.upload) === null || _tusState$upload === void 0 ? void 0 : _tusState$upload.abort();
321
+ tusState === null || tusState === void 0 ? void 0 : (_tusState$originalAbo = tusState.originalAbort) === null || _tusState$originalAbo === void 0 ? void 0 : _tusState$originalAbo.call(tusState);
314
322
  setTusState(initialUseTusState);
315
- }, [tusState === null || tusState === void 0 ? void 0 : tusState.upload]);
323
+ }, [tusState]);
316
324
  var tusResult = useMemo(function () {
317
325
  var _tusState$isSuccess, _tusState$isAborted;
318
326
 
@@ -325,7 +333,7 @@ var useTus = function useTus(baseOption) {
325
333
  remove: remove
326
334
  };
327
335
  }, [tusState, setUpload, remove]);
328
- useAutoAbort(tusResult.upload, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
336
+ useAutoAbort(tusResult.upload, tusState.originalAbort, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
329
337
  return tusResult;
330
338
  };
331
339
 
@@ -416,6 +424,8 @@ var updateDefaultOptions = function updateDefaultOptions(defaultOptions) {
416
424
  };
417
425
 
418
426
  var useTusStore = function useTusStore(cacheKey, baseOption) {
427
+ var _tusResult$upload;
428
+
419
429
  var _useMergeTusOptions = useMergeTusOptions(baseOption),
420
430
  autoAbort = _useMergeTusOptions.autoAbort,
421
431
  autoStart = _useMergeTusOptions.autoStart,
@@ -454,7 +464,8 @@ var useTusStore = function useTusStore(cacheKey, baseOption) {
454
464
  tusClientDispatch(updateIsAbortedUpload(cacheKey, isAborted));
455
465
  };
456
466
 
457
- var upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
467
+ var _createUpload = createUpload(file, mergedUploadOptions, dispatchIsAborted),
468
+ upload = _createUpload.upload;
458
469
 
459
470
  if (autoStart) {
460
471
  startOrResumeUpload(upload);
@@ -483,7 +494,7 @@ var useTusStore = function useTusStore(cacheKey, baseOption) {
483
494
  remove: remove
484
495
  };
485
496
  }, [targetTusState, setUpload, remove]);
486
- useAutoAbort(tusResult.upload, autoAbort !== null && autoAbort !== void 0 ? autoAbort : false);
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);
487
498
  return tusResult;
488
499
  };
489
500
 
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ const createUpload = (file, options, dispatchIsAborted) => {
15
15
  };
16
16
  upload.start = start;
17
17
  upload.abort = abort;
18
- return upload;
18
+ return { upload, originalStart, originalAbort };
19
19
  };
20
20
 
21
21
  const startOrResumeUpload = (upload) => {
@@ -27,13 +27,13 @@ const startOrResumeUpload = (upload) => {
27
27
  });
28
28
  };
29
29
 
30
- const useAutoAbort = (upload, autoAbort) => {
30
+ const useAutoAbort = (upload, abort, autoAbort) => {
31
31
  useEffect(() => {
32
32
  const abortUploading = async () => {
33
- if (!upload) {
33
+ if (!upload || !abort) {
34
34
  return;
35
35
  }
36
- await upload.abort();
36
+ await abort();
37
37
  };
38
38
  return () => {
39
39
  if (!autoAbort) {
@@ -41,6 +41,7 @@ const useAutoAbort = (upload, autoAbort) => {
41
41
  }
42
42
  abortUploading();
43
43
  };
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44
45
  }, [autoAbort, upload]);
45
46
  };
46
47
 
@@ -58,6 +59,7 @@ const initialUseTusState = Object.freeze({
58
59
  isSuccess: false,
59
60
  isAborted: false,
60
61
  error: undefined,
62
+ originalAbort: undefined,
61
63
  });
62
64
  const useTus = (baseOption) => {
63
65
  const { autoAbort, autoStart, uploadOptions } = useMergeTusOptions(baseOption);
@@ -89,16 +91,18 @@ const useTus = (baseOption) => {
89
91
  const dispatchIsAborted = (isAborted) => {
90
92
  updateTusState({ isAborted });
91
93
  };
92
- const upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
94
+ const { upload, originalAbort } = createUpload(file, mergedUploadOptions, dispatchIsAborted);
93
95
  if (autoStart) {
94
96
  startOrResumeUpload(upload);
95
97
  }
96
- updateTusState({ upload });
98
+ updateTusState({ ...initialUseTusState, upload, originalAbort });
97
99
  }, [autoStart, updateTusState, uploadOptions]);
98
100
  const remove = useCallback(() => {
99
- tusState?.upload?.abort();
101
+ // `upload.abort` function will set `isAborted` state.
102
+ // So call the original function for restore state.
103
+ tusState?.originalAbort?.();
100
104
  setTusState(initialUseTusState);
101
- }, [tusState?.upload]);
105
+ }, [tusState]);
102
106
  const tusResult = useMemo(() => ({
103
107
  upload: tusState?.upload,
104
108
  isSuccess: tusState?.isSuccess ?? false,
@@ -107,7 +111,7 @@ const useTus = (baseOption) => {
107
111
  setUpload,
108
112
  remove,
109
113
  }), [tusState, setUpload, remove]);
110
- useAutoAbort(tusResult.upload, autoAbort ?? false);
114
+ useAutoAbort(tusResult.upload, tusState.originalAbort, autoAbort ?? false);
111
115
  return tusResult;
112
116
  };
113
117
 
@@ -205,7 +209,7 @@ const useTusStore = (cacheKey, baseOption) => {
205
209
  const dispatchIsAborted = (isAborted) => {
206
210
  tusClientDispatch(updateIsAbortedUpload(cacheKey, isAborted));
207
211
  };
208
- const upload = createUpload(file, mergedUploadOptions, dispatchIsAborted);
212
+ const { upload } = createUpload(file, mergedUploadOptions, dispatchIsAborted);
209
213
  if (autoStart) {
210
214
  startOrResumeUpload(upload);
211
215
  }
@@ -224,7 +228,7 @@ const useTusStore = (cacheKey, baseOption) => {
224
228
  setUpload,
225
229
  remove,
226
230
  }), [targetTusState, setUpload, remove]);
227
- useAutoAbort(tusResult.upload, autoAbort ?? false);
231
+ useAutoAbort(tusResult.upload, tusResult.upload?.abort, autoAbort ?? false);
228
232
  return tusResult;
229
233
  };
230
234
 
@@ -1,2 +1,2 @@
1
1
  import { UseTusOptions, UseTusResult } from "./types";
2
- export declare const useTus: (baseOption?: UseTusOptions | undefined) => UseTusResult;
2
+ export declare const useTus: (baseOption?: UseTusOptions) => UseTusResult;
@@ -1,2 +1,2 @@
1
1
  import { UseTusOptions, UseTusResult } from "./types";
2
- export declare const useTusStore: (cacheKey: string, baseOption?: UseTusOptions | undefined) => UseTusResult;
2
+ export declare const useTusStore: (cacheKey: string, baseOption?: UseTusOptions) => UseTusResult;
@@ -1,3 +1,7 @@
1
1
  import { Upload } from "tus-js-client";
2
2
  export declare type DispatchIsAborted = (isAborted: boolean) => void;
3
- export declare const createUpload: (file: Upload["file"], options: Upload["options"], dispatchIsAborted: DispatchIsAborted) => Upload;
3
+ export declare const createUpload: (file: Upload["file"], options: Upload["options"], dispatchIsAborted: DispatchIsAborted) => {
4
+ upload: Upload;
5
+ originalStart: () => void;
6
+ originalAbort: (shouldTerminate?: boolean | undefined) => Promise<void>;
7
+ };
@@ -1,2 +1,2 @@
1
1
  import { Upload } from "tus-js-client";
2
- export declare const useAutoAbort: (upload: Upload | undefined, autoAbort: boolean) => void;
2
+ export declare const useAutoAbort: (upload: Upload | undefined, abort: Upload["abort"] | undefined, autoAbort: boolean) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "use-tus",
3
- "version": "0.6.1",
3
+ "version": "0.7.1",
4
4
  "description": "React hooks for resumable file uploads using tus-js-client",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -59,8 +59,7 @@
59
59
  "@storybook/addon-links": "^6.2.9",
60
60
  "@storybook/react": "^6.2.9",
61
61
  "@testing-library/jest-dom": "^5.11.10",
62
- "@testing-library/react": "^11.2.6",
63
- "@testing-library/react-hooks": "^5.1.1",
62
+ "@testing-library/react": "^13.3.0",
64
63
  "@types/jest": "^26.0.22",
65
64
  "@types/react": "^17.0.3",
66
65
  "@types/react-dom": "^17.0.3",
@@ -87,17 +86,17 @@
87
86
  "npm-run-all": "^4.1.5",
88
87
  "postcss": "^7",
89
88
  "prettier": "^2.2.1",
90
- "react": "^17.0.2",
91
- "react-dom": "^17.0.2",
89
+ "react": "^18.1.0",
90
+ "react-dom": "^18.1.0",
92
91
  "rimraf": "^3.0.2",
93
92
  "rollup": "^2.44.0",
94
93
  "tailwindcss": "npm:@tailwindcss/postcss7-compat",
95
94
  "ts-jest": "^26.5.4",
96
- "typescript": "^4.2.3",
97
- "tus-js-client": "^2.2.0"
95
+ "tus-js-client": "^2.2.0",
96
+ "typescript": "^4.7.3"
98
97
  },
99
98
  "peerDependencies": {
100
- "react": "^16.8.0 || ^17.0.0",
99
+ "react": ">=16.8",
101
100
  "tus-js-client": "^2.2.0"
102
101
  },
103
102
  "dependencies": {}