chore(v3.0): roadmap
@ramongr is already working on this.
Since May 5, 2026.
Assessment
This issue has not been assessed yet.
Description
v3.0 — Foundation (all breaking changes)
The hard cut. Every consumer reacts. Ships as a single 3.0.0 (no pre-releases).
Migration is supported by MIGRATION-v3.md; the codemod follows in v3.1.
Calling convention
The dominant break in v3. Every multi-arg function moves to data-first +
options-object: the first positional argument is the primary data, every
subsequent argument folds into a single options object.
Carve-out (functions whose multiple args are all primary data of equal
status — they keep both positional, no options object):
intersection, union, except, symmetricDifference, setEquals,
isSubset, isSuperset, isDisjoint, exists, existsAll, existsAny.
Per-function Options types are exported alongside each rewritten function
(e.g. FindByOptions<T, P>, GroupByOptions<T, P>).
- AGENTS.md amendment (process change; lands first)
-
feat!(v3): named options + dot-paths everywhere— sweeping API rewrite across every multi-arg function incollections,numerical,positional,transformations(one PR or split per category)
Dot-paths everywhere
-
extractrewritten to take dot-paths viapaths: readonly Path[]; result objects keyed by the leaf segment of each path (last path wins on collisions) - AGENTS.md "Dot-path key access" rule promoted to "all key/path access in the public API"
Typing (Theme C)
- C1 — Hand-rolled
Get<T, Path>andPaths<T>insrc/shared/types.ts; applied tofindBy,where,pluck,keyBy,groupBy,countBy,minBy,maxBy,sumBy,averageBy,uniqueBy,extract - C2 —
flat(values, { depth })returnsFlatArray<T, D>[]
Contract fixes (Theme A)
- A1 —
existsAll(_, [])returnstrue(vacuous truth); fix thesource.length === 0edge case - A2 —
min/maxthrowTypeErroron empty input (align withsubtract/product/median/range) - A3 — Remove
compact. KeepcompactNullish(dropsnull/undefined). AddcompactFalsy(drops all falsy)
Naming & placement (Theme B)
- B1 — Move
hasEvenLengthfromnumericaltopositional - B2 — Rename
equals→setEquals - B4 — Add
nth(values, { index })(negativeindex= from end). Removesecondandthird. Keepfirstandlast - B5 —
occurrencesreturnsMap<T, number>instead of[T, number][]
Internals & packaging (Theme D)
- D1 — Delete
src/shared/index.ts(dead at the public surface) - D2 — Route
findByandwherethroughpathResolver(AGENTS.md compliance) - D4 — Bump tsup
targetand tsconfigtargettoes2023 - D5 — Drop the CJS build. Pure ESM only. Remove
.d.ctsshadows andrequireexports
Release artifacts
-
MIGRATION-v3.mdaggregating the per-PR migration sections - README "Upgrading from v2" pointer
-
CHANGELOG.md## [3.0.0]entry -
chore(release): 3.0.0PR
Process notes
- v2.x is in patch-only mode for the duration of v3 work
- Every PR in this milestone uses Conventional Commits with
!, both
breaking-changeandv3-acceptedlabels, includes a Migration
section in the body, and references this issue (Refs #N) - No published pre-releases. Single
3.0.0tag at the end - During v3 development,
package.jsonis3.0.0-devfrom the
cut-over commit until the release PR
- Dominant language
- TypeScript
- Stars
- 2
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ramongr/op-array
-
additive v3-accepted
-
additive v3-accepted
-
additive v3-accepted
All issues in ramongr/op-array
Similar issues
-
comp/dashboard P3 type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
NousResearch/hermes-agent#117722 ·
-
clawsweeper:fix-shape-clear clawsweeper:queueable-fix clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster no-stale P3
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 76/100
-
code-quality refactoring
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·