[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9460":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},9460,"quiver-dart","google\u002Fquiver-dart","google","A set of utility libraries for Dart","https:\u002F\u002Fpub.dev\u002Fpackages\u002Fquiver",null,"Dart",1064,133,30,50,0,1,54.48,"Apache License 2.0",false,"master",[],"2026-06-11 04:03:19","A set of utility libraries for Dart that makes using many Dart libraries easier\nand more convenient, or adds additional functionality.\n\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fquiver-dart\u002Fworkflows\u002FDart%20CI\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fquiver-dart\u002Factions?query=workflow%3A\"Dart+CI\"+branch%3Amaster)\n[![Coverage Status](https:\u002F\u002Fimg.shields.io\u002Fcoveralls\u002Fgoogle\u002Fquiver-dart.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002Fgoogle\u002Fquiver-dart)\n[![Pub](https:\u002F\u002Fimg.shields.io\u002Fpub\u002Fv\u002Fquiver.svg)](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fquiver)\n\n## Documentation\n\n[API Docs](https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002F) are available.\n\n## Main Libraries\n\n## [quiver.async][]\n\nUtilities for working with Futures, Streams and async computations.\n\n`collect` collects the completion events of an `Iterable` of `Future`s into a\n`Stream`.\n\n`enumerate` and `concat` represent `Stream` versions of the same-named\n[quiver.iterables][] methods.\n\n`StreamBuffer` allows for the orderly reading of elements from a stream, such as\na socket.\n\n`FutureStream` turns a `Future\u003CStream>` into a `Stream` which emits the same\nevents as the stream returned from the future.\n\n`StreamRouter` splits a Stream into multiple streams based on a set of\npredicates.\n\n`CountdownTimer` is a simple countdown timer that fires events in regular\nincrements.\n\n`Metronome` is a self-correcting alternative to `Timer.periodic`. It provides a\nsimple, tracking periodic stream of `DateTime` events with optional anchor time.\n\n`stringFromByteStream` constructs a string from a stream of byte lists.\n\n[quiver.async]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.async\u002Fquiver.async-library.html\n\n## [quiver.cache][]\n\n`Cache` is a semi-persistent, asynchronously accessed, mapping of keys to\nvalues. Caches are similar to Maps, except that the cache implementation might\nstore values in a remote system, so all operations are asynchronous, and caches\nmight have eviction policies.\n\n`MapCache` is a Cache implementation backed by a Map.\n\n[quiver.cache]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.cache\u002Fquiver.cache-library.html\n\n## [quiver.check][]\n\n`checkArgument` throws `ArgumentError` if the specified argument check\nexpression is false.\n\n`checkListIndex` throws `RangeError` if the specified index is out of bounds.\n\n`checkState` throws `StateError` if the specified state check expression is\nfalse.\n\n[quiver.check]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.check\u002Fquiver.check-library.html\n\n## [quiver.collection][]\n\n`listsEqual`, `mapsEqual` and `setsEqual` check collections for equality.\n\n`indexOf` finds the first index of an item satisfying a predicate.\n\n`LruMap` is a map that removes the least recently used item when a threshold\nlength is exceeded.\n\n`Multimap` is an associative collection that maps keys to collections of values.\n\n`BiMap` is a bidirectional map and provides an inverse view, allowing lookup of\nkey by value.\n\n`TreeSet` is a balanced binary tree that offers a bidirectional iterator, the\nability to iterate from an arbitrary anchor, and 'nearest' search.\n\n[quiver.collection]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.collection\u002Fquiver.collection-library.html\n\n## [quiver.core][]\n\n`Optional` is a way to represent optional values without allowing `null`.\n\n`hashObjects`, `hash2`, `hash3`, and `hash4` generate high-quality hashCodes for\na list of objects, or 2, 3, or 4 arguments respectively.\n\n[quiver.core]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.core\u002Fquiver.core-library.html\n\n## [quiver.iterables][]\n\n`concat`, `count`, `cycle`, `enumerate`, `merge`, `partition`, `range`, and\n`zip` create, transform, or combine Iterables in different ways, similar to\nPython's itertools.\n\n`min`, `max`, and `extent` retrieve the minimum and maximum elements from an\niterable.\n\n`GeneratingIterable` is an easy way to create lazy iterables that produce\nelements by calling a function. A common use-case is to traverse properties in\nan object graph, like the parent relationship in a tree.\n\n`InfiniteIterable` is a base class for Iterables that throws on operations that\nrequire a finite length.\n\n[quiver.iterables]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.iterables\u002Fquiver.iterables-library.html\n\n## [quiver.pattern][]\n\npattern.dart container utilities for work with `Pattern`s and `RegExp`s.\n\n`Glob` implements glob patterns that are commonly used with filesystem paths.\n\n`matchesAny` combines multiple Patterns into one, and allows for exclusions.\n\n`matchesFull` returns true if a Pattern matches an entire String.\n\n`escapeRegex` escapes special regex characters in a String so that it can be\nused as a literal match inside of a RegExp.\n\n[quiver.pattern]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.pattern\u002Fquiver.pattern-library.html\n\n## [quiver.strings][]\n\n`isBlank` checks if a string is `null`, empty or made of whitespace characters.\n\n`isNotBlank` checks if a string is not `null`, and not blank.\n\n`isEmpty` checks if a string is `null` or empty.\n\n`isNotEmpty` checks if a string is not `null` and not empty.\n\n`equalsIgnoreCase` checks if two strings are equal, ignoring case.\n\n`compareIgnoreCase` compares two strings, ignoring case.\n\n`loop` allows you to loop through characters in a string starting and ending at\narbitrary indices. Out of bounds indices allow you to wrap around the string,\nsupporting a number of use-cases, including:\n\n- Rotating: `loop('lohel', -3, 2) => 'hello'`\n- Repeating, like `String`'s `operator*`, but with better character-level\n  control, e.g.: `loop('la ', 0, 8) => 'la la la' \u002F\u002F no trailing space`\n- Tailing: `loop('\u002Fpath\u002Fto\u002Fsome\u002Ffile.txt', -3) => 'txt'`\n- Reversing: `loop('top', 3, 0) => 'pot'`\n\n[quiver.strings]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.strings\u002Fquiver.strings-library.html\n\n## [quiver.time][]\n\n`Clock` provides points in time relative to the current point in time, for\nexample: now, 2 days ago, 4 weeks from now, etc. For testability, use Clock\nrather than other ways of accessing time, like `new DateTime()`, so that you can\nuse a fake time function in your tests to control time.\n\n`Now` is a typedef for functions that return the current time in microseconds,\nsince Clock deals in DateTime which only have millisecond accuracy.\n\n`aMicrosecond`, `aMillisecond`, `aSecond`, `aMinute`, `anHour`, `aDay`, and\n`aWeek` are unit duration constants to allow writing for example:\n\n- `aDay` vs. `const Duration(days: 1)`\n- `aSecond * 30` vs. `const Duration(seconds: 30)`\n\n[quiver.time]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.time\u002Fquiver.time-library.html\n\n## Testing Libraries\n\nThe Quiver testing libraries are intended to be used in testing code, not\nproduction code. It currently consists of fake implementations of some Quiver\ninterfaces.\n\n## [quiver.testing.async][]\n\n`FakeAsync` enables testing of units which depend upon timers and microtasks. It\nsupports fake advancements of time and the microtask queue, which cause fake\ntimers and microtasks to be processed. A `Clock` is provided from which to read\nthe current fake time. Faking synchronous or blocking time advancement is also\nsupported.\n\n[quiver.testing.async]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.testing.async\u002Fquiver.testing.async-library.html\n\n## [quiver.testing.equality][]\n\n`areEqualityGroups` is a matcher that supports testing `operator==` and\n`hashCode` implementations.\n\n[quiver.testing.equality]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.testing.equality\u002Fquiver.testing.equality-library.html\n\n## [quiver.testing.time][]\n\n`FakeStopwatch` is a Stopwatch that uses a provided `now()` function to get the\ncurrent time.\n\n[quiver.testing.time]:\n  https:\u002F\u002Fpub.dev\u002Fdocumentation\u002Fquiver\u002Flatest\u002Fquiver.testing.time\u002Fquiver.testing.time-library.html\n","google\u002Fquiver-dart 是一套用于 Dart 的实用程序库，旨在简化 Dart 库的使用并提供额外功能。其核心功能包括异步操作、缓存管理、参数检查和集合操作等工具，例如通过 `quiver.async` 提供对 Future 和 Stream 的便捷处理方法，`quiver.cache` 实现了半持久化的异步访问映射，以及 `quiver.check` 为开发者提供了更严格的错误检查机制。此外，`quiver.collection` 中还包含了一系列增强的标准集合类型。这些特性使得 quiver 成为了开发复杂 Dart 应用时的理想选择，特别适用于需要高效处理异步数据流或优化内存使用的场景。",2,"2026-06-11 03:22:58","top_language"]