{"id":20532667,"url":"https://github.com/cotag/a2-uploads","last_synced_at":"2026-04-19T12:31:51.288Z","repository":{"id":57094301,"uuid":"51746650","full_name":"cotag/a2-uploads","owner":"cotag","description":"Angular2 direct to cloud file uploads","archived":false,"fork":false,"pushed_at":"2017-06-13T02:11:39.000Z","size":88,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-01T09:27:18.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cotag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-15T10:03:54.000Z","updated_at":"2019-03-25T06:43:53.000Z","dependencies_parsed_at":"2022-08-22T23:10:06.900Z","dependency_job_id":null,"html_url":"https://github.com/cotag/a2-uploads","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cotag%2Fa2-uploads","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cotag%2Fa2-uploads/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cotag%2Fa2-uploads/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cotag%2Fa2-uploads/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cotag","download_url":"https://codeload.github.com/cotag/a2-uploads/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242138804,"owners_count":20078007,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-16T00:16:21.926Z","updated_at":"2025-12-04T13:03:59.197Z","avatar_url":"https://github.com/cotag.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\n\nThis project is an Angular2 library for handling secure direct to cloud uploads that are managed by the [Condominios](https://github.com/cotag/Condominios) project.\nAt CoTag Media we use it to handle all of our file ingestion as it:\n\n* takes the load away from our API servers\n* allows us to support hybrid cloud models\n* works seamlessly with [AWS Lambda](http://docs.aws.amazon.com/lambda/latest/dg/with-s3.html) and [Google Cloud Functions](https://cloud.google.com/functions/docs)\n\nEffectively this project takes [blob or file objects](https://github.com/cotag/a2-file-drop) in the browser and \n\n* Manages an upload queue with pause, resume and progress for each upload\n* Supports configuring individual upload parallelism and the number of simultaneous uploads\n* All files are hashed in webworkers before upload for data integrity\n* Communicates with Condominios to obtain [signed requests](http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#UsingTemporarySecurityCredentials) for the uploads\n\n\n## Usage\n\n1. Optionally bootstrap `MD5_WORKER_BASE` - this allows you to customise the path of the [MD5 worker](https://github.com/cotag/ts-md5)\n2. Bootstrap the `MD5Workers` - these perform the hashing in webworkers and should only be instansitated once\n3. In the components you wish to perform uploads, inject your `Http` service and the `MD5Workers`\n4. Import `UploadManager` and the storage providers you wish to use `Amazon`, `Google`, `Azure`, `OpenStack`\n5. Add the providers to the upload manager: `UploadManager.addProvider(Amazon);`\n\nYou can now use the manager\n\n```typescript\n\nthis.manager = new UploadManager(http, '/uploads', workers);\nthis.manager.autoStart = true;\n\n// ...\n\n// Add files to the upload manager\n// Files is an array of Blobs or Files -\u003e https://developer.mozilla.org/en/docs/Web/API/File\nthis.manager.upload(files);\n\n```\n\n\n## Building from src\n\nThe project is written in typescript and transpiled into ES5.\n\n1. Install TypeScript: `npm install -g typescript` (if you haven't already)\n2. Configure compile options in `tsconfig.json`\n3. Perform build using: `tsc` or build script below\n\nYou can find more information here: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json\n\n## Scripts\n\n1. Build Script: `npm run build`\n2. Test Script: `npm run test`\n\n\n## Publishing\n\n1. Sign up to https://www.npmjs.com/\n2. Configure `package.json` https://docs.npmjs.com/files/package.json\n3. run `npm publish` https://docs.npmjs.com/cli/publish\n\n\n# License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcotag%2Fa2-uploads","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcotag%2Fa2-uploads","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcotag%2Fa2-uploads/lists"}