{"id":20109779,"url":"https://github.com/hyper63/hyper-adapter-minio","last_synced_at":"2025-08-16T21:08:26.216Z","repository":{"id":90042696,"uuid":"377901319","full_name":"hyper63/hyper-adapter-minio","owner":"hyper63","description":"Minio / S3 adapter for Hyper Storage port","archived":false,"fork":false,"pushed_at":"2024-04-30T21:16:34.000Z","size":342,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-07T00:32:31.223Z","etag":null,"topics":["bucket","clean-architecture","deno","hyper","minio","ports-and-adapters","s3","service-framework","storage"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyper63.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-06-17T16:50:28.000Z","updated_at":"2024-04-30T21:16:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"87c4cb7e-4e2e-4aed-912b-67f148338571","html_url":"https://github.com/hyper63/hyper-adapter-minio","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/hyper63/hyper-adapter-minio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyper63%2Fhyper-adapter-minio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyper63%2Fhyper-adapter-minio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyper63%2Fhyper-adapter-minio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyper63%2Fhyper-adapter-minio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyper63","download_url":"https://codeload.github.com/hyper63/hyper-adapter-minio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyper63%2Fhyper-adapter-minio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270770696,"owners_count":24642189,"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","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bucket","clean-architecture","deno","hyper","minio","ports-and-adapters","s3","service-framework","storage"],"created_at":"2024-11-13T18:09:24.568Z","updated_at":"2025-08-16T21:08:26.194Z","avatar_url":"https://github.com/hyper63.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003ehyper-adapter-minio\u003c/h1\u003e\n\u003cp align=\"center\"\u003eA Storage port adapter that can use S3 or MinIO for object storage in the \u003ca href=\"https://hyper.io/\"\u003ehyper\u003c/a\u003e service framework\u003c/p\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/hyper63/hyper-adapter-minio/actions/workflows/test-and-publish.yml\"\u003e\u003cimg src=\"https://github.com/hyper63/hyper-adapter-minio/actions/workflows/test-and-publish.yml/badge.svg\" alt=\"Test\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/hyper63/hyper-adapter-minio/tags/\"\u003e\u003cimg src=\"https://img.shields.io/github/tag/hyper63/hyper-adapter-minio\" alt=\"Current Version\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n\u003c!-- toc --\u003e\n\n- [Getting Started](#getting-started)\n  - [Credentials](#credentials)\n    - [From the URL](#from-the-url)\n  - [from ENV VARS](#from-env-vars)\n- [Usage with AWS S3](#usage-with-aws-s3)\n- [Multiple Buckets or Namespaced Single Bucket](#multiple-buckets-or-namespaced-single-bucket)\n- [Features](#features)\n- [Methods](#methods)\n- [Testing](#testing)\n- [License](#license)\n\n\u003c!-- tocstop --\u003e\n\n## Getting Started\n\n`hyper.config.js`\n\n```js\nimport { default as minio } from 'https://raw.githubusercontent.com/hyper63/hyper-adapter-minio/main/mod.js'\n\nexport default {\n  app,\n  adapter: [\n    {\n      port: 'storage',\n      plugins: [\n        minio({ url: 'https://minioadmin:minioadmin@play.minio.io', bucketPrefix: 'uniquePrefix' }),\n      ],\n    },\n  ],\n}\n```\n\nWhen you configure the hyper service with this adapter, you must provide a unique bucket prefix.\nThis helps ensure your bucket name is globally unique\n\n\u003e The unique name is an alphanumeric string that contains identifing information, this will enable\n\u003e you to identify the buckets created by this adapter.\n\n### Credentials\n\nThere are two credentials needed in order for this adapter to interact with the underlying S3 or\nMinIO resource: an `accessKey` and a `secretKey`. These credentials can be provided to this adapter\nin a couple ways.\n\n#### From the URL\n\nThe first is simply in the `url` as the `username` and `password`:\n\n```js\nminio({ url: 'https://accessKey:secretKey@play.minio.io', bucketPrefix: 'uniquePrefix' })\n```\n\n### from ENV VARS\n\nYou can also set the environment variables `MINIO_ROOT_USER` to your `accessKey` and\n`MINIO_ROOT_PASSWORD` to your `secretKey`.\n\n\u003e Credentials provided in the `url` will supercede any credentials pulled from environment\n\u003e variables. In other words, if credentials are provided in both ways, the credentials derived from\n\u003e the url will be used.\n\n## Usage with AWS S3\n\nThis adapter can also be used on top on AWS' popular S3 service. To do so, simply adjust the `host`\nin the `url` provided to the adapter to point to `s3`:\n\n```js\nminio({\n  url: 'https://accessKey:secretKey@s3.amazonaws.com',\n  region: 'us-east-2',\n  bucketPrefix: 'uniquePrefix',\n})\n```\n\n\u003e `region` defaults to `us-east-1`\n\n## Multiple Buckets or Namespaced Single Bucket\n\nThis adapter can be configured to either create a bucket, in the underying S3 or MinIO, per hyper\nStorage Service, or instead to use a _single namespaced_ bucket to store all objects across all\nhyper Storage services. In the latter configuration, each hyper Storage service is represented as a\n_prefix_ in the single namespaced bucket.\n\n\u003e Among other reasons, using a _single namespaced_ bucket is a great option, if you're concerned\n\u003e with surpassing AWS'\n\u003e [S3 Bucket Count Restriction](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)\n\n**By default, the adapter uses the bucket per hyper Storage Service implementation**. To enable the\n_single namespaced_ bucket approach, pass the `useNamespacedBucket` flag into the adapter:\n\n```js\nminio({\n  url: 'https://accessKey:secretKey@play.minio.io',\n  bucketPrefix: 'uniquePrefix',\n  useNamespacedBucket: true,\n})\n```\n\nThis will make the adapter create only a single bucket called `uniquePrefix-namespaced`. Each hyper\nStorage Service is then implemented as a private prefix within the bucket. For example, if you had\nhyper Storage services `foo` and `bar`, the structure of the bucket would look like:\n\n```\n- uniquePrefix-namespaced \n--|/foo\n---| foo.png\n---| .... # all objects in the 'foo' Storage Service here\n--| /bar\n---| bar.png\n---| .... # all objects in the 'bar' Storage Service here\n```\n\n## Features\n\n- Create an `s3` compatible bucket\n- Remove an `s3` compatible bucket\n- List `s3` compatible buckets\n- Put an object into an `s3` compatible bucket\n- Remove an object from an `s3` compatible bucket\n- Get an object from an `s3` compatible bucket\n- List objects in an `s3` compatible bucket\n\n## Methods\n\nThis adapter fully implements the Storage port and can be used as the\n[hyper Storage service](https://docs.hyper.io/docs/api-reference/rest/storage.html) adapter\n\nSee the full port [here](https://github.com/hyper63/hyper/tree/main/packages/port-storage)\n\n## Testing\n\n```\ndeno task test\n```\n\nTo lint, check formatting, and run unit tests\n\nTo run the test harness, run `deno task test:harness`. a `hyper` server with the adapter installed\nwill be running on port `6363`\n\n## License\n\nApache-2.0\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyper63%2Fhyper-adapter-minio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyper63%2Fhyper-adapter-minio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyper63%2Fhyper-adapter-minio/lists"}