{"_id":"@bloque/uppy-companion","_rev":"5-66d7b7676f95a3f314882314990f2772","name":"@bloque/uppy-companion","dist-tags":{"latest":"4.0.2"},"versions":{"4.0.1":{"name":"@bloque/uppy-companion","version":"4.0.1","keywords":["file uploader","progress","preview","resumable uploads","tus","s3","google drive","dropbox","box","backend","websocket","express","realtime"],"author":{"name":"Transloadit.com"},"license":"MIT","_id":"@bloque/uppy-companion@4.0.1","maintainers":[{"name":"s0c5","email":"david.barinas.dev@gmail.com"},{"name":"pandres95","email":"hola@pablodorado.com"},{"name":"bloque-admin","email":"hi@bloque.team"}],"homepage":"https://github.com/transloadit/uppy#readme","bugs":{"url":"https://github.com/transloadit/uppy/issues"},"bin":{"uppy-companion":"bin/companion"},"dist":{"shasum":"ff4ca932b5032621482068db73a725bb58ea1dfd","tarball":"https://registry.npmjs.org/@bloque/uppy-companion/-/uppy-companion-4.0.1.tgz","fileCount":120,"integrity":"sha512-9uDHx5mH1SfxhMgAE8RGugph794oSkM0yw296zC7dwKyNzKCuCE3W3y3Nr6V0kz3P0uU1KhgFGPzVF5mSGsnZw==","signatures":[{"sig":"MEUCIQD2Hbn411+sOcdi2h/9ccwQTbcm7QA1ZSMtYQ0jRPnm6AIgKLW5ZnMNKAT34gFRCVr0/cdsZ88SgeeydA7OyrUh5Vg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":274658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIfTkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjDA//as/0RVqt2Eq/zzfKxplRA6tS3ycT62a96bIF+z2WsrYHNOKj\r\nh8nOpykHLVTwuUplw6UEc9Gw70Ovnp9lbCJc9KxbMkJIeKr3QFm2h2r967FH\r\nehJR5LGobyzuKyJJiuWJH133O2km954N3qxu+gpwCiPyMymgtHckiNHL6Tgw\r\n/HHFNrE+vbIIrnHMXb4RV9PxeplwybsnRM3jJ3I4as2cspMMZMJYvQM/Ygji\r\n9UMiE1EBTaNS7D5fG7/9kOM62LAe2eDIrmpXkIJuNqQ5BnXm5Ls8rI6BCnpJ\r\nUCvn6oO9ECMj0Vr+rkooYHCl2/Gy7A2Do2IpW4A2A0K8BOXse1hBXsWfNr7Q\r\n9oDaSek6TSBNIldPIK0H438q5zFbX3D+QAmRHxVWJ89emwmFli6innaVtZ3+\r\nCswBHFF52kE+0Fa7kbWwRGdwCEQk6+7e+4O/h95SB5LLED5INGS+Z2Xj1hRn\r\nkF1mQFqG8nLgqKPmiU6I0nmshDrIWh/xTGY00iqctpGRRTNaGcYFZ7wFDWYA\r\nUd60QXFDYpC91pJhAvkq6EEW5Y5s64AGe0f7UbXmo9Ngoxf4ytQKwNEBLxjs\r\nbVTMygStCy7Mf3nVQOlEMfgCVlV8uRg9uAenM/B5zGG+BlXIRbE6H876DEW5\r\n/itFSq39mX9BgaZ08clOeItVmAsDx9sBL5Y=\r\n=t/YH\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"automock":false,"testTimeout":10000,"collectCoverage":true,"testEnvironment":"node","collectCoverageFrom":["src/**","!src/**/*.d.ts"]},"main":"lib/companion.js","types":"lib/companion.d.ts","engines":{"node":"^14.19.0 || ^16.15.0 || >=18.0.0"},"gitHead":"d11dab1d9c38e64e71b68a94512465476eda75d9","scripts":{"test":"jest","build":"tsc -p .","start":"node ./lib/standalone/start-server.js","deploy":"kubectl apply -f infra/kube/companion-kube.yml"},"_npmUser":{"name":"s0c5","email":"david.barinas.dev@gmail.com"},"repository":{"url":"git+https://github.com/transloadit/uppy.git","type":"git"},"_npmVersion":"8.19.1","description":"OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:","directories":{},"_nodeVersion":"18.8.0","dependencies":{"ms":"2.1.3","ws":"8.8.1","got":"11","atob":"2.1.2","cors":"^2.8.5","chalk":"4.1.2","grant":"4.7.0","redis":"4.2.0","helmet":"^4.6.0","moment":"^2.29.2","morgan":"1.10.0","semver":"7.3.7","aws-sdk":"^2.1038.0","express":"4.18.1","form-data":"^3.0.0","ipaddr.js":"^2.0.1","validator":"^13.0.0","mime-types":"2.1.35","body-parser":"1.20.0","common-tags":"1.8.2","escape-goat":"3.0.0","prom-client":"14.0.1","jsonwebtoken":"8.5.1","lodash.merge":"^4.6.2","connect-redis":"6.1.3","cookie-parser":"1.4.6","node-schedule":"2.1.0","tus-js-client":"^3.0.0","express-session":"1.17.3","lodash.throttle":"^4.1.1","moment-timezone":"^0.5.31","serialize-error":"^2.1.0","express-request-id":"1.4.1","express-interceptor":"1.2.0","express-prom-bundle":"6.5.0","escape-string-regexp":"4.0.0","serialize-javascript":"^6.0.0"},"installConfig":{"hoistingLimits":"workspaces"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.1.3","@types/ms":"0.7.31","@types/ws":"8.5.3","supertest":"6.2.4","typescript":"~4.8","@types/cors":"2.8.6","@types/node":"^18.0.3","into-stream":"^6.0.0","@types/react":"^18.0.0","@types/eslint":"^8.2.0","@types/morgan":"1.7.37","@types/request":"2.48.8","@types/webpack":"^5.28.0","@types/compression":"1.7.0","@types/jsonwebtoken":"8.3.7","@types/lodash.merge":"4.6.6","@types/connect-redis":"0.0.18","@types/cookie-parser":"1.4.2","@types/express-session":"1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/uppy-companion_4.0.1_1663169764660_0.23973670819550796","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@bloque/uppy-companion","version":"4.0.2","keywords":["file uploader","progress","preview","resumable uploads","tus","s3","google drive","dropbox","box","backend","websocket","express","realtime"],"author":{"name":"Transloadit.com"},"license":"MIT","_id":"@bloque/uppy-companion@4.0.2","maintainers":[{"name":"s0c5","email":"david.barinas.dev@gmail.com"},{"name":"pandres95","email":"hola@pablodorado.com"},{"name":"bloque-admin","email":"hi@bloque.team"}],"homepage":"https://github.com/transloadit/uppy#readme","bugs":{"url":"https://github.com/transloadit/uppy/issues"},"bin":{"uppy-companion":"bin/companion"},"dist":{"shasum":"f4737defbf590cb5d6cf14d9f4f76a35d47051f8","tarball":"https://registry.npmjs.org/@bloque/uppy-companion/-/uppy-companion-4.0.2.tgz","fileCount":120,"integrity":"sha512-poiD/KtajQJKWbGuCRYqxnoqSST2t8agj06e65eP220i57VK8IJUa1bK3WitRuo8f7ekrZ6wxJf+5yMp+CkA3Q==","signatures":[{"sig":"MEUCIQDGSbduxTbdpyo6jHOh47QrWP6pIXMftz8LS+Wvu9OEawIgWtNw51KM/5z6x3J6z9LiyWH18ZTrJqfl0DnvHTs0CjI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":274926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjIk5ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNUw//Svbo7+810OXftMC4AE0crEYm6H+8KYoh+PX5FVCws78xKZly\r\nKAzEfU2zFdcP0AlnNNZE6cpcCUKQVSVjHljI6DkveRBAZntpkUQf9dL0FwtN\r\ndYjouJL6BCKaXKyD6bl2ComUOChll8AelbdLRX//tw735ogAgkTmNKrZfGbI\r\nVAM2S4PWbrshWf7tiZ8g7Z3TOrxADqasT4GKFDLL4nuI92Rljxpqjveq32PF\r\n7Q/jhRhrvTTufFMGlPpytg9ufdgxdbPSd7LU83Gea+t+g+ICHEH716VwijU2\r\nbe9zWWMpJHWKGPxoDIhX6qbr4zUabdaHj+AMeo1Kp7hbI9yPamvb0g4eje31\r\nHk1L25VbPAzBJSzMXMFsvczLPeO3LMEWBR3Ja2fkR/Y4f40EmjHrtjOpHT/r\r\naKFtvZQJhoyfLCSmx9UMWZ1b64PiqLuXNdZOLCkIbpbD2OnsJUEtVgrwKK8W\r\nMsbiMum2BUERZUdQp66eoxYTnCyShk5inP5w86Cu/t6MhODpza3LPmmj1eoF\r\n+35Qt4HnPiTe9FNKwG8UagBG0LUMHPvLuQcofcv0IM9vgw8BMv3FjLh/yVF1\r\nmQbgFWHoQshHYOLbTBY8STn7Z7pj1IpMDeZ/2hH6ehive4vAkKoV1ONjfC4l\r\n2Jtt+t2xMMdlyZIgJ/Pz3lzAMjVt2Hncm2I=\r\n=dZhQ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"automock":false,"testTimeout":10000,"collectCoverage":true,"testEnvironment":"node","collectCoverageFrom":["src/**","!src/**/*.d.ts"]},"main":"lib/companion.js","types":"lib/companion.d.ts","engines":{"node":"^14.19.0 || ^16.15.0 || >=18.0.0"},"gitHead":"d11dab1d9c38e64e71b68a94512465476eda75d9","scripts":{"test":"jest","build":"tsc -p .","start":"node ./lib/standalone/start-server.js","deploy":"kubectl apply -f infra/kube/companion-kube.yml"},"_npmUser":{"name":"s0c5","email":"david.barinas.dev@gmail.com"},"repository":{"url":"git+https://github.com/transloadit/uppy.git","type":"git"},"_npmVersion":"8.19.1","description":"OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:","directories":{},"_nodeVersion":"18.8.0","dependencies":{"ms":"2.1.3","ws":"8.8.1","got":"11","atob":"2.1.2","cors":"^2.8.5","chalk":"4.1.2","grant":"4.7.0","redis":"4.2.0","helmet":"^4.6.0","moment":"^2.29.2","morgan":"1.10.0","semver":"7.3.7","aws-sdk":"^2.1038.0","express":"4.18.1","form-data":"^3.0.0","ipaddr.js":"^2.0.1","validator":"^13.0.0","mime-types":"2.1.35","body-parser":"1.20.0","common-tags":"1.8.2","escape-goat":"3.0.0","prom-client":"14.0.1","jsonwebtoken":"8.5.1","lodash.merge":"^4.6.2","connect-redis":"6.1.3","cookie-parser":"1.4.6","node-schedule":"2.1.0","tus-js-client":"^3.0.0","express-session":"1.17.3","lodash.throttle":"^4.1.1","moment-timezone":"^0.5.31","serialize-error":"^2.1.0","express-request-id":"1.4.1","express-interceptor":"1.2.0","express-prom-bundle":"6.5.0","escape-string-regexp":"4.0.0","serialize-javascript":"^6.0.0"},"installConfig":{"hoistingLimits":"workspaces"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","nock":"^13.1.3","@types/ms":"0.7.31","@types/ws":"8.5.3","supertest":"6.2.4","typescript":"~4.8","@types/cors":"2.8.6","@types/node":"^18.0.3","into-stream":"^6.0.0","@types/react":"^18.0.0","@types/eslint":"^8.2.0","@types/morgan":"1.7.37","@types/request":"2.48.8","@types/webpack":"^5.28.0","@types/compression":"1.7.0","@types/jsonwebtoken":"8.3.7","@types/lodash.merge":"4.6.6","@types/connect-redis":"0.0.18","@types/cookie-parser":"1.4.2","@types/express-session":"1.17.3"},"_npmOperationalInternal":{"tmp":"tmp/uppy-companion_4.0.2_1663192665131_0.6699751145398825","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-09-14T15:36:04.590Z","modified":"2026-08-27T16:10:47.483Z","4.0.1":"2022-09-14T15:36:04.845Z","4.0.2":"2022-09-14T21:57:45.350Z"},"bugs":{"url":"https://github.com/transloadit/uppy/issues"},"author":{"name":"Transloadit.com"},"license":"MIT","homepage":"https://github.com/transloadit/uppy#readme","keywords":["file uploader","progress","preview","resumable uploads","tus","s3","google drive","dropbox","box","backend","websocket","express","realtime"],"repository":{"url":"git+https://github.com/transloadit/uppy.git","type":"git"},"description":"OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:","maintainers":[{"email":"hi@bloque.team","name":"bloque-admin"},{"email":"hola@pablodorado.com","name":"pandres95"},{"email":"david.barinas.dev@gmail.com","name":"s0c5"},{"email":"miguel@bloque.team","name":"makelangel0"}],"readme":"# Companion\n\n<img src=\"http://uppy.io/images/logos/uppy-dog-full.svg\" width=\"120\" alt=\"Uppy logo — a superman puppy in a pink suit\" align=\"right\">\n\n[![Build Status](https://travis-ci.org/transloadit/uppy.svg?branch=main)](https://travis-ci.org/transloadit/uppy)\n\nCompanion is a server integration for [Uppy](https://github.com/transloadit/uppy) file uploader.\n\nIt handles the server-to-server communication between your server and file storage providers such as Google Drive, Dropbox,\nInstagram, etc. **Companion is not a target to upload files to**. For this, use a <https://tus.io> server (if you want resumable) or your existing Apache/Nginx server (if you don’t). [See here for full documentation](https://uppy.io/docs/companion/)\n\n## Install\n\n```bash\nnpm install @uppy/companion\n```\n\nIf you don’t have a Node.js project with a `package.json` you might want to install/run Companion globally like so: `[sudo] npm install -g @uppy/companion@1.x` (best check the actual latest version, and use that, so (re)installs are reproducible, and upgrades intentional).\n\n## Usage\n\ncompanion may either be used as pluggable express app, which you plug to your existing server, or it may also be run as a standalone server:\n\n### Plug to an existing server\n\n```javascript\nimport express from 'express'\nimport bodyParser from 'body-parser'\nimport session from 'express-session'\nimport companion from '@uppy/companion'\n\nconst app = express()\napp.use(bodyParser.json())\napp.use(session({ secret: 'some secrety secret' }))\n// ...\n// be sure to place this anywhere after app.use(bodyParser.json()) and app.use(session({...})\nconst options = {\n  providerOptions: {\n    drive: {\n      key: 'GOOGLE_KEY',\n      secret: 'GOOGLE_SECRET',\n    },\n  },\n  server: {\n    host: 'localhost:3020',\n    protocol: 'http',\n  },\n  filePath: '/path/to/folder/',\n}\n\nconst { app: companionApp } = companion.app(options)\napp.use(companionApp)\n```\n\nTo enable companion socket for realtime feed to the client while upload is going on, you call the `socket` method like so.\n\n```javascript\n// ...\nconst server = app.listen(PORT)\n\ncompanion.socket(server)\n```\n\n### Run as standalone server\n\nPlease make sure that the required env variables are set before runnning/using companion as a standalone server. [See](https://uppy.io/docs/companion/#Configure-Standalone).\n\n```bash\n$ companion\n```\n\nIf you cloned the repo from GitHub and want to run it as a standalone server, you may also run the following command from within its\ndirectory\n\n```bash\nnpm start\n```\n\n### Deploy to heroku\n\nCompanion can also be deployed to [Heroku](https://www.heroku.com)\n\n```sh\nmkdir uppy-companion && cd uppy-companion\n\ngit init\n\necho 'export COMPANION_PORT=$PORT' > .profile\necho 'node_modules' > .gitignore\necho '{\n  \"name\": \"uppy-companion\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"start\": \"companion\"\n  },\n  \"dependencies\": {\n    \"@uppy/companion\": \"latest\"\n  }\n}' > package.json\n\nnpm i\n\ngit add . && git commit -am 'first commit'\n\nheroku create\n\ngit push heroku master\n```\n\nMake sure you set the required [environment variables](https://uppy.io/docs/companion/#Configure-Standalone).\n\nSee [full documentation](https://uppy.io/docs/companion/)\n","readmeFilename":"README.md"}