{"adoption": {"forks": 205, "observed_at": "2026-08-28T04:05:41.264135+00:00", "stars": 1825}, "canonical_url": "https://ross.abutalabs.com/products/evaporatejs", "card": {"archived": false, "artifact_type": "library", "description": "Javascript library for browser to S3 multipart resumable uploads", "domain": ["web-development", "frontend", "cloud-computing"], "enriched": true, "function": ["file-upload", "http-client"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["TTLabs/EvaporateJS"], "name": "TTLabs/EvaporateJS", "platform": ["browser"], "pushed_at": "2024-01-12T02:57:24+00:00", "repo": "TTLabs/EvaporateJS", "stars": 1825, "tags": ["aws-s3", "multipart-upload", "resumable-upload", "browser", "javascript"], "topics": [], "urls": [], "use_cases": ["upload large files from the browser to S3", "resumable file uploads that survive network interruptions", "parallel multipart uploads to AWS S3", "verify uploaded parts with MD5 checksums", "pause and resume uploads in a web app", "upload files to S3 with Transfer Acceleration"], "what_it_is": "EvaporateJS is a JavaScript library for uploading files directly from the browser to AWS S3 using parallel multipart uploads. It supports MD5 checksums, pause/resume of uploads, and resilient recovery of interrupted transfers.", "when_to_avoid": ["you upload to storage providers other than AWS S3", "you need a maintained solution with an active release cadence and clear license", "you need server-side uploads rather than browser-based ones"], "when_to_choose": ["you need browser-to-S3 uploads without a backend proxy", "you upload large files that may be interrupted and need resumability", "you want parallel multipart uploads with progress monitoring"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/evaporatejs", "repo": "TTLabs/EvaporateJS", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:41.264135+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:19:40.723780+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f5308570fe7b01c5ddb3ed014559cd5c606bc2bb16eae3f51e2e1854552d43ac", "fetched_at": "2026-08-28T04:05:41.264135+00:00", "kind": "readme", "missing": false, "url": "https://github.com/TTLabs/EvaporateJS"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5004, "days_push": 964, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}