{"_id":"@codecontrol/use-chunk-upload","_rev":"4-50c54af591f191bbfbe408d33bac7024","name":"@codecontrol/use-chunk-upload","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@codecontrol/use-chunk-upload","version":"1.0.0","main":"./index.js","types":"./index.d.ts","scripts":{"build":"vite build","publish":"npm publish"},"publishConfig":{"access":"public","scope":"@codecontrol"},"repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git#main"},"exports":{".":{"import":"./index.mjs","require":"./index.js"}},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"gitHead":"82cd7bb7396155496e27ddb05bf84f5261d785ff","description":"Chunks file and uploads chunks","bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm/tree/main#readme","_id":"@codecontrol/use-chunk-upload@1.0.0","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-oXY8h9i1TUHn63LmhFYfMK+qKkifHLNnIZb4PfRtTBomzmTgtNmoalwvhfeLZCoGE1JqoQc6H3Tygtnq9M4JoA==","shasum":"118713c06248b23d87021199102cbe37242c2aae","tarball":"https://registry.npmjs.org/@codecontrol/use-chunk-upload/-/use-chunk-upload-1.0.0.tgz","fileCount":10,"unpackedSize":11037,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeK0ga5zdTdQd/U4ahkaA4w9KKegrZDyQ/5q/Gz5vkwQIgDw4J/736ZCMLZBhIbePkkrANA9PHi/amjRlGi9JVHcM="}]},"_npmUser":{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},"directories":{},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chunk-upload_1.0.0_1689764704300_0.2697288593889282"},"_hasShrinkwrap":false},"1.0.1":{"name":"@codecontrol/use-chunk-upload","version":"1.0.1","main":"./index.js","types":"./index.d.ts","publishConfig":{"access":"public","scope":"@codecontrol"},"repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git#main"},"exports":{".":{"import":"./index.mjs","require":"./index.js"}},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"scripts":{"build":"vite build"},"description":"Chunks file and uploads chunks","bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm/tree/main#readme","_id":"@codecontrol/use-chunk-upload@1.0.1","_integrity":"sha512-MMxXfCTmF9opew09mp7UbmMnEozk8k9vlqWwDA31Pigqj224SdvGJUZNyjZ69nOK5+3+t/9xbTRvUqQtPOVkYg==","_resolved":"C:\\Users\\sami\\AppData\\Local\\Temp\\b802280faec38a9616db8469ee1b4034\\codecontrol-use-chunk-upload-1.0.1.tgz","_from":"file:codecontrol-use-chunk-upload-1.0.1.tgz","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-MMxXfCTmF9opew09mp7UbmMnEozk8k9vlqWwDA31Pigqj224SdvGJUZNyjZ69nOK5+3+t/9xbTRvUqQtPOVkYg==","shasum":"89b64d5f96bca0482b24c0c4e4c0fc27a59822e0","tarball":"https://registry.npmjs.org/@codecontrol/use-chunk-upload/-/use-chunk-upload-1.0.1.tgz","fileCount":10,"unpackedSize":11006,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBiyxZ3MIXHXqEnSUD65ZKyn9EQd5yeV0IhpOq5rHlzLAiEAsLJyd/dN7ILNYjmPB2BjVqfP8DOeltU+f+pZElahDBM="}]},"_npmUser":{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},"directories":{},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chunk-upload_1.0.1_1689765144414_0.19664640436494674"},"_hasShrinkwrap":false},"1.0.2":{"name":"@codecontrol/use-chunk-upload","version":"1.0.2","main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"vite build"},"publishConfig":{"access":"public","scope":"@codecontrol"},"repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git","directory":"packages/useChunkUpload"},"exports":{".":{"import":"./build/index.mjs","require":"./build/index.js"}},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"gitHead":"d996721587f80435441af6e274c8388bd107d48c","description":"Chunks file and uploads chunks","bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm#readme","_id":"@codecontrol/use-chunk-upload@1.0.2","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-vj3mhu7pcW6MPRn/bZ7RJXiouvjT7wLcuRzCb6aKsX/ChtKtfkhhNZxgdXIBCqI+HFsvvenW7LQJzEiUvUeXCQ==","shasum":"3d0ac30b9595786520b1310bc507ac0acb9820a4","tarball":"https://registry.npmjs.org/@codecontrol/use-chunk-upload/-/use-chunk-upload-1.0.2.tgz","fileCount":10,"unpackedSize":11041,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+ifoU9Mr0chrUtWXPFVnPlTKv8icvEpyyHoUQQws5OgIhAMuE6KPtePujlrvtH5FcbFQfnk4Sx0pi4wGoZGx1oQle"}]},"_npmUser":{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},"directories":{},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chunk-upload_1.0.2_1689767733163_0.8866560315662324"},"_hasShrinkwrap":false},"1.0.3":{"name":"@codecontrol/use-chunk-upload","version":"1.0.3","main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"vite build"},"publishConfig":{"access":"public","scope":"@codecontrol"},"repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git","directory":"packages/useChunkUpload"},"exports":{".":{"import":"./build/index.mjs","require":"./build/index.js"}},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"gitHead":"79763272ed128a2d59a2fffdd2273631fae6aa38","description":"Chunks file and uploads chunks","bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm#readme","_id":"@codecontrol/use-chunk-upload@1.0.3","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ecNx+JIHj8SsWIo1BPuN4m9xR+QB3fXgke1oYSULi51vRfjz3GvYefhHc2CtO4/4mf3J8jfI5YD3YXpoxTmivw==","shasum":"f44d3e4ba179bf2434a1b4e4bbcc6ae538ef2f75","tarball":"https://registry.npmjs.org/@codecontrol/use-chunk-upload/-/use-chunk-upload-1.0.3.tgz","fileCount":10,"unpackedSize":11012,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWPA6fCHiPaevWpH/kNbfX5W2nIpjtPUsS7g6ia5rAXAIhAJfcmBFIwxzJ3jessblDBYNSfO5CUgtVY2SRHAliznKW"}]},"_npmUser":{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},"directories":{},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chunk-upload_1.0.3_1690378745703_0.19578371219155244"},"_hasShrinkwrap":false},"1.0.4":{"name":"@codecontrol/use-chunk-upload","version":"1.0.4","main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"vite build"},"publishConfig":{"access":"public","scope":"@codecontrol"},"repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git","directory":"packages/useChunkUpload"},"exports":{".":{"import":"./build/index.mjs","require":"./build/index.js"}},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"gitHead":"30bd19570bb26ce1f703c55423d0173700eaaaa2","description":"Chunks file and uploads chunks","bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm#readme","_id":"@codecontrol/use-chunk-upload@1.0.4","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-06QKM06YjZ+uI8JQC+utg3siIEIwdjr4g8A3tP3rL85gqZj9/iSiL+5vl34QFNfYcFHhvMq3wcqMeEdumq0UcQ==","shasum":"bd197df8faff7095a131f96c86c660a2cd593676","tarball":"https://registry.npmjs.org/@codecontrol/use-chunk-upload/-/use-chunk-upload-1.0.4.tgz","fileCount":10,"unpackedSize":11194,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDr3EvfPdaiPgwreB0qkZzAhhzhd/OhMpODMqSde5hIngIhAMZ0DHPsYYPgJXYKaQrKp79wsRytPX4LB1z71oLaiBml"}]},"_npmUser":{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},"directories":{},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/use-chunk-upload_1.0.4_1708597881952_0.7903126802684064"},"_hasShrinkwrap":false}},"time":{"created":"2023-07-19T11:05:04.178Z","1.0.0":"2023-07-19T11:05:04.565Z","modified":"2024-02-22T10:31:22.601Z","1.0.1":"2023-07-19T11:12:24.567Z","1.0.2":"2023-07-19T11:55:33.295Z","1.0.3":"2023-07-26T13:39:05.895Z","1.0.4":"2024-02-22T10:31:22.141Z"},"maintainers":[{"name":"miikaforma","email":"miika.forma@codecontrol.fi"},{"name":"sami-lindgren","email":"sami.lindgren@codecontrol.fi"},{"name":"toniiltanen","email":"toni.iltanen@codecontrol.fi"}],"description":"Chunks file and uploads chunks","homepage":"https://github.com/Codecontrol-Oy/codecontrol.npm#readme","repository":{"type":"git","url":"git+https://github.com/Codecontrol-Oy/codecontrol.npm.git","directory":"packages/useChunkUpload"},"bugs":{"url":"https://github.com/Codecontrol-Oy/codecontrol.npm/issues"},"readme":"# useChunkUpload\n\nChunks file and uploads chunks\n\n## Getting started\n\nExample of how hook is roughly used\n```tsx\nimport { ChunkedFile, useChunkUpload, ChunkedUploadSuccess } from 'useChunkUpload'\n\ninterface UploadResult {\n  fileId: string\n  uploaded: boolean\n  uploadUid: string\n}\n\ninterface UploadFile extends File {\n  uid: string\n  percent?: number\n  chunkedFile?: ChunkedFile\n}\n\nexport default function Upload() {\n  const [fileList, setFileList] = useState<UploadFile[]>([])\n  const { uploadFile, retryUpload } = useChunkUpload<UploadResult>('https://example.com')\n\n  function handleUploadResolved(result: ChunkedUploadSuccess<UploadResult>) {\n    setFileList((prevState) => {\n      const copyFl = [...prevState]\n      const f = copyFl.find((x) => x.uid === result.result.uploadUid)\n      if (!f) return prevState\n\n      f.percent = 100\n      return copyFl\n    })\n  }\n\n  function handleUploadRejected(error: unknown, uid: string) {\n    // uploadFile and retryUpload should ONLY throw UploadFailedError\n    if (error instanceof UploadFailedError) {\n      const { chunkedFile } = error\n      return setFileList((prevState) => {\n        const copyFl = [...prevState]\n        const f = copyFl.find((x) => x.uid === uid)\n        if (!f) return prevState\n\n        f.status = 'error'\n        f.chunkedFile = chunkedFile\n        return copyFl\n      })\n    }\n    console.error(error)\n  }\n\n  function handleUpload(f: File) {\n    const file = { ...f, uid: randomUid() }\n    setFileList((prevState) => {\n      return [file, ...prevState]\n    })\n\n    uploadFile(file, file.uid, (progress, uid) => {\n      setFileList((prevState) => {\n        const copyFl = [...prevState]\n        const f = copyFl.find((fi) => fi.uid === uid)\n        if (!f) return prevState\n        f.percent = Math.floor(progress * 100)\n\n        return copyFl\n      })\n    })\n      .then(handleUploadResolved)\n      .catch((error) => handleUploadRejected(error, file.uid))\n  }\n\n  function handleRetry(file: CustomUploadFile) {\n    if (!file.chunkedFile) return\n\n    const { chunkedFile } = file\n    retryUpload(chunkedFile)\n      .then(handleUploadResolved)\n      .catch((error) => handleUploadRejected(error, chunkedFile.uid))\n  }\n\n  return <UploadZone files={fileList} onUpload={handleUpload} onRetry={handleRetry} />\n}\n```\n\n## Formdata\n\nProvide callback function that sets desired data. Default is provided below\n\n```tsx\nfunction X() {\n  const { uploadFile, retryUpload } = useChunkUpload('https://www.example.com', {\n    setFormData: (chunk, chunkedFile) => {\n      const data = new FormData()\n      const blob = new Blob([chunk.blob], { type: chunkedFile.originalFile.type })\n      data.append('file', blob, chunkedFile.originalFile.name)\n      data.append('metadata.uploadUid', chunkedFile.uid)\n      data.append('metadata.chunkIndex', chunk.index.toString())\n      data.append('metadata.totalChunks', chunkedFile.chunks.length.toString())\n      data.append('metadata.totalFileSize', chunkedFile.originalFile.size.toString())\n      return data\n    },\n  })\n}\n```\n","readmeFilename":"README.md"}