Skip to main content

stacks-collections

Use when working with collection data structures in Stacks - chaining array operations, Laravel-style collection methods, mapping, filtering, reducing, or grouping. Covers @stacksjs/collections which wraps ts-collect.

Source facts

Repository
stacksjs/stacks
Last source activity
August 29, 2026 at 17:05
Detected SKILL.md language
English
Stars
631
Forks
20

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
stacks-collections
description
Use when working with collection data structures in Stacks - chaining array operations, Laravel-style collection methods, mapping, filtering, reducing, or grouping. Covers @stacksjs/collections which wraps ts-collect.
license
MIT
compatibility
Bun >= 1.3.0, TypeScript
allowed-tools
Read Edit Write Bash Grep Glob
# Stacks Collections ## Key Paths - Core package: `storage/framework/core/collections/src/` - Source: `storage/framework/core/collections/src/index.ts` - Package: `@stacksjs/collections` ## API The package re-exports `collect` from `ts-collect`: ```typescript import { collect } from '@stacksjs/collections' ``` ## Usage ```typescript import { collect } from '@stacksjs/collections' // Basic operations const result = collect([1, 2, 3, 4, 5]) .filter(n => n > 2) .map(n => n * 2) .toArray() // [6, 8, 10] // Aggregation collect([10, 20, 30]).sum() // 60 collect([10, 20, 30]).avg() // 20 collect([10, 20, 30]).min() // 10 collect([10, 20, 30]).max() // 30 // Grouping collect(users).groupBy('role') // { admin: [...], user: [...] } // Sorting collect(items).sortBy('price').toArray() collect(items).sortByDesc('price').toArray() // Unique collect([1, 2, 2, 3, 3]).unique().toArray() // [1, 2, 3] // First / Last collect([1, 2, 3]).first() // 1 collect([1, 2, 3]).last() // 3 // Chunk collect([1, 2, 3, 4, 5]).chunk(2).toArray() // [[1, 2], [3, 4], [5]] // Pluck collect(users).pluck('name').toArray() // ['Alice', 'Bob'] // Contains collect([1, 2, 3]).contains(2) // true // Reduce collect([1, 2, 3]).reduce((sum, n) => sum + n, 0) // 6 ``` ## Laravel-Style Methods The `ts-collect` library provides a comprehensive Laravel Collection-compatible API including: `all`, `avg`, `chunk`, `collapse`, `combine`, `concat`, `contains`, `count`, `countBy`, `crossJoin`, `dd`, `diff`, `diffAssoc`, `diffKeys`, `dump`, `duplicates`, `each`, `every`, `except`, `filter`, `first`, `firstOrFail`, `firstWhere`, `flatMap`, `flatten`, `flip`, `forget`, `forPage`, `get`, `groupBy`, `has`, `implode`, `intersect`, `intersectByKeys`, `isEmpty`, `isNotEmpty`, `join`, `keyBy`, `keys`, `last`, `macro`, `map`, `mapInto`, `mapSpread`, `mapToGroups`, `mapWithKeys`, `max`, `median`, `merge`, `mergeRecursive`, `min`, `mode`, `nth`, `only`, `pad`, `partition`, `pipe`, `pluck`, `pop`, `prepend`, `pull`, `push`, `put`, `random`, `reduce`, `reject`, `replace`, `replaceRecursive`, `reverse`, `search`, `shift`, `shuffle`, `skip`, `skipUntil`, `skipWhile`, `slice`, `sole`, `some`, `sort`, `sortBy`, `sortByDesc`, `sortDesc`, `sortKeys`, `sortKeysDesc`, `splice`, `split`, `sum`, `take`, `takeUntil`, `takeWhile`, `tap`, `times`, `toArray`, `toJson`, `transform`, `union`, `unique`, `uniqueStrict`, `unless`, `unlessEmpty`, `unlessNotEmpty`, `unwrap`, `values`, `when`, `whenEmpty`, `whenNotEmpty`, `where`, `whereBetween`, `whereIn`, `whereInstanceOf`, `whereNotBetween`, `whereNotIn`, `whereNotNull`, `whereNull`, `wrap`, `zip` ## Gotchas - **Thin wrapper** — re-exports `collect` from `ts-collect`, no custom additions - **Collections are immutable** — operations return new collection instances - **For simple array operations** — `@stacksjs/arrays` may be more appropriate - **Laravel API compatibility** — method names and behavior match Laravel's Collection class - **Not used for ORM results** — ORM queries return plain arrays, not collections. Wrap with `collect()` if needed
View on GitHub