{"id":18458474,"url":"https://github.com/relaycorp/object-storage-js","last_synced_at":"2025-04-08T05:34:17.497Z","repository":{"id":37928622,"uuid":"331690950","full_name":"relaycorp/object-storage-js","owner":"relaycorp","description":"Node.js client for object stores like AWS S3, GCP GCS or Minio","archived":false,"fork":false,"pushed_at":"2024-11-04T16:44:44.000Z","size":2649,"stargazers_count":9,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T06:51:11.317Z","etag":null,"topics":["gcs","minio","object-storage","object-store","s3"],"latest_commit_sha":null,"homepage":"https://docs.relaycorp.tech/object-storage-js/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/relaycorp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-21T16:45:34.000Z","updated_at":"2025-03-18T21:49:02.000Z","dependencies_parsed_at":"2023-10-17T02:10:51.261Z","dependency_job_id":"adf33887-0a9e-4576-b09a-6537f5883cdd","html_url":"https://github.com/relaycorp/object-storage-js","commit_stats":{"total_commits":275,"total_committers":4,"mean_commits":68.75,"dds":"0.23636363636363633","last_synced_commit":"527dfa5b12cd16c7708d399185b4bba97aabab4a"},"previous_names":[],"tags_count":131,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relaycorp%2Fobject-storage-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relaycorp%2Fobject-storage-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relaycorp%2Fobject-storage-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relaycorp%2Fobject-storage-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/relaycorp","download_url":"https://codeload.github.com/relaycorp/object-storage-js/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247785919,"owners_count":20995641,"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":["gcs","minio","object-storage","object-store","s3"],"created_at":"2024-11-06T08:18:45.630Z","updated_at":"2025-04-08T05:34:12.477Z","avatar_url":"https://github.com/relaycorp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @relaycorp/object-storage\n\nThis library allows you to interact with major object storage backends (e.g., Amazon S3) using a unified interface.\n\n## Install\n\nReleases are automatically pushed to [NPM](https://www.npmjs.com/package/@relaycorp/object-storage). For example, to get the latest release, run:\n\n```\nnpm install @relaycorp/object-storage\n```\n\n## Supported backends\n\n| Backend | Name | SDK used internally | Access/secret key support                                                                                                                                        |\n| --- | --- | --- | --- |\n| Amazon S3 | `s3` | AWS | Optional |\n| Google Cloud Storage (GCS) | `gcs` | GCP | Unsupported. Use alternative authentication methods instead, like [workload identity](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity). |\n| Minio | `minio` | AWS | Required |\n\n## Supported operations\n\n- Get object (along with its metadata).\n- Create/update object (along with its metadata).\n- Delete object.\n- List objects under a given prefix. Pagination is handled automatically: We return an iterable and retrieve the next page lazily.\n\nWe welcome PRs to support additional operations, as long as each new operation is supported across all backends in a normalised way, and has unit and functional tests.\n\n## Example\n\n```typescript\nimport { initObjectStoreClient } from '@relaycorp/object-storage';\n\nasync function main(): Promise\u003cvoid\u003e {\n  const client = initObjectStoreClient(\n    process.env.STORE_BACKEND,\n    process.env.STORE_ENDPOINT,\n    process.env.STORE_ACCESS_KEY,\n    process.env.STORE_SECRET_KEY,\n  );\n\n  for await (const objectKey of client.listObjectKeys(\"prefix/\", process.env.STORE_BUCKET)) {\n    console.log(\"- \", objectKey)\n  }\n}\n```\n\n## API documentation\n\nThe API documentation can be found on [docs.relaycorp.tech](https://docs.relaycorp.tech/object-storage-js/).\n\n## Contributing\n\nWe love contributions! If you haven't contributed to a Relaycorp project before, please take a minute to [read our guidelines](https://github.com/relaycorp/.github/blob/master/CONTRIBUTING.md) first.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelaycorp%2Fobject-storage-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelaycorp%2Fobject-storage-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelaycorp%2Fobject-storage-js/lists"}