{"id":48164,"library":"hyperdrive-import-queue","title":"hyperdrive-import-queue","description":"A queue-based file importer for hyperdrive archives that emits per-file and overall progress events. Version 2.1.0 is the latest stable release, with occasional maintenance updates. It wraps the hyperdrive API and uses progress-stream to provide granular write progress. Unlike manual streaming, it handles batching, queuing, and progress reporting out of the box. Ideal for building file upload UIs in browser or Node.js with Dat ecosystem.","status":"active","version":"2.1.0","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/laurengarcia/hyperdrive-import-queue","tags":["javascript","dat","hyperdrive","progress","import"],"install":[{"cmd":"npm install hyperdrive-import-queue","lang":"bash","label":"npm"},{"cmd":"yarn add hyperdrive-import-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add hyperdrive-import-queue","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency for archive operations","package":"hyperdrive","optional":false},{"reason":"Provides progress event emission","package":"progress-stream","optional":false}],"imports":[{"note":"Default export; ESM only as of v2. CommonJS require may not work.","wrong":"const hyperdriveImportQueue = require('hyperdrive-import-queue')","symbol":"hyperdriveImportQueue","correct":"import hyperdriveImportQueue from 'hyperdrive-import-queue'"},{"note":"If using CommonJS with older version (v1), require works.","symbol":"hyperdriveImportQueue","correct":"const hyperdriveImportQueue = require('hyperdrive-import-queue')"},{"note":"Package does not ship TypeScript types; declare module or use @types if available.","symbol":"hyperdriveImportQueue (TypeScript)","correct":"import hyperdriveImportQueue from 'hyperdrive-import-queue'"}],"quickstart":{"code":"import hyperdriveImportQueue from 'hyperdrive-import-queue';\nimport hyperdrive from 'hyperdrive';\nimport memdb from 'memdb';\n\nconst drive = hyperdrive(memdb('./mydrive'));\nconst files = [\n  { name: 'file1.txt', data: Buffer.from('hello') },\n  { name: 'file2.txt', data: Buffer.from('world') }\n];\n\nhyperdriveImportQueue(files, drive, {\n  cwd: '/uploads',\n  progressInterval: 200,\n  chunkSize: 64 * 1024,\n  onFileWriteBegin: (err, file) => {\n    console.log(`Starting: ${file.name}`);\n    file.progressListener.on('progress', (prog) => {\n      console.log(`Progress: ${prog.percentage}%`);\n    });\n  },\n  onFileWriteComplete: (err, file) => {\n    console.log(`Completed: ${file.name}`);\n  },\n  onCompleteAll: (err, files) => {\n    console.log('All files imported');\n  }\n});","lang":"javascript","description":"Demonstrates queue import of two files into a hyperdrive archive with progress events."},"warnings":[{"fix":"Call drive.ready() before using hyperdriveImportQueue.","message":"Requires hyperdrive archive to be writable and open; ensure archive is ready before calling.","severity":"gotcha","affected_versions":">=2.0.0"},{"fix":"Attach progress listener only inside onFileWriteBegin.","message":"file.progressListener only available in onFileWriteBegin callback; attempt to access it earlier will be undefined.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Wrap callbacks in Promises if needed.","message":"Callback-based API; consider using promises or async/await with wrapper.","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Set cwd to empty string for root or provide desired prefix.","message":"cwd option is prepended to file names; if omitted, files are written to root.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'2.1.0':24 'api':38 'archiv':13 'base':8 'batch':54 'box':62 'browser':70 'build':65 'dat':74,77 'ecosystem':75 'emit':15 'event':22 'file':9,18,66 'granular':46 'handl':53 'hyperdr':2,12,37,78 'hyperdrive-import-queu':1 'ideal':63 'import':3,10,80 'javascript':76 'latest':27 'mainten':32 'manual':50 'node.js':72 'occasion':31 'overal':20 'per':17 'per-fil':16 'progress':21,42,48,57,79 'progress-stream':41 'provid':45 'queu':55 'queue':4,7 'queue-bas':6 'releas':29 'report':58 'stabl':28 'stream':43,51 'ui':68 'unlik':49 'updat':33 'upload':67 'use':40 'version':23 'wrap':35 'write':47","created_at":"2026-06-07T16:55:14.653531+00:00","updated_at":"2026-06-07T16:55:14.653531+00:00","problems":[{"fix":"Use import hyperdriveImportQueue from 'hyperdrive-import-queue' (default import).","cause":"Using wrong import style (e.g., named import instead of default).","error":"TypeError: hyperdriveImportQueue is not a function"},{"fix":"Ensure drive is created with { latest: true } and drive.ready() resolved.","cause":"Hyperdrive archive not opened in write mode.","error":"Error: archive not writable"},{"fix":"Only use file.progressListener inside the onFileWriteBegin callback.","cause":"Accessing file.progressListener outside onFileWriteBegin callback.","error":"progressListener is undefined"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/laurengarcia/hyperdrive-import-queue#readme","github":"ssh://git@github.com/laurengarcia/hyperdrive-import-queue","docs":null,"changelog":null,"pypi":null,"npm":"hyperdrive-import-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["storage"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}