{"id":19050703,"url":"https://github.com/baekteun/eventlimiter","last_synced_at":"2025-04-24T01:23:36.468Z","repository":{"id":176349119,"uuid":"655484976","full_name":"baekteun/EventLimiter","owner":"baekteun","description":"💎 Simple classes for efficiently handling events based on a Swift Concurrency.","archived":false,"fork":false,"pushed_at":"2023-12-03T14:31:59.000Z","size":289,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-18T09:34:22.318Z","etag":null,"topics":["async-await","debounce","swift-concurrency","throttle"],"latest_commit_sha":null,"homepage":"https://baekteun.github.io/EventLimiter/documentation/eventlimiter/","language":"Swift","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/baekteun.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-19T02:13:07.000Z","updated_at":"2024-02-01T02:06:24.000Z","dependencies_parsed_at":"2023-12-03T15:37:06.418Z","dependency_job_id":null,"html_url":"https://github.com/baekteun/EventLimiter","commit_stats":null,"previous_names":["baekteun/eventlimiter"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baekteun%2FEventLimiter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baekteun%2FEventLimiter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baekteun%2FEventLimiter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baekteun%2FEventLimiter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baekteun","download_url":"https://codeload.github.com/baekteun/EventLimiter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250541954,"owners_count":21447606,"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":["async-await","debounce","swift-concurrency","throttle"],"created_at":"2024-11-08T23:16:03.405Z","updated_at":"2025-04-24T01:23:36.444Z","avatar_url":"https://github.com/baekteun.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EventLimiter\n\nSimple classes for efficiently handling events.\n\n[Document](https://baekteun.github.io/EventLimiter/documentation/eventlimiter/)\n\n\u003cbr\u003e\n\n## Contents\n- [EventLimiter](#eventlimiter)\n  - [Contents](#contents)\n  - [Requirements](#requirements)\n  - [Overview](#overview)\n  - [Installation](#installation)\n    - [Swift Package Manager](#swift-package-manager)\n    - [Manually](#manually)\n  - [Usage](#usage)\n    - [QuickStart](#quickstart)\n\n## Requirements\n- iOS 13.0+\n- tvOS 13.0+\n- macOS 10.15+\n- watchOS 6.0+\n- Swift 5.0+\n\n## Overview\nSimple classes for efficiently handling events.\nYou can use the Debouncer and Throttler to handle events.\n\n## Installation\n\n### Swift Package Manager\n[Swift Package Manager](https://www.swift.org/package-manager/) is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.\n\nTo integrate `EventLimiter` into your Xcode project using Swift Package Manager, add it to the dependencies value of your Package.swift:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/baekteun/EventLimiter.git\", .upToNextMajor(from: \"1.0.0\"))\n]\n```\n\n### Manually\nIf you prefer not to use either of the aforementioned dependency managers, you can integrate EventLimiter into your project manually.\n\n\u003cbr\u003e\n\n## Usage\n\n### QuickStart\n```swift\nlet debouncer = Debouncer(for: 0.3)\ndebouncer {\n    await self.search(keyword: keyword)\n}\ndebouncer.cancel()\n```\n\n```swift\nlet throttler = Throttler(for: 1, latest: false)\nthrottler {\n    await self.reachedBottom()\n}\nthrottler.cancel()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaekteun%2Feventlimiter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaekteun%2Feventlimiter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaekteun%2Feventlimiter/lists"}