chore(v3.3): transformation helpers + lazy companion RFC roadmap

Open
#89 0 comments 0 reactions 1 assignee View on GitHub

@ramongr is already working on this.

Since May 5, 2026.

Assessment

This issue has not been assessed yet.

Description

additive v3-accepted

v3.3 — Transformation helpers + lazy companion RFC (additive)

Third post-3.0 wave. Adds predicate-driven chunking, zip/unzip, and an RFC
for the lazy/iterator companion. Non-breaking.

Transformation helpers (E3)

  • chunkBy(values, { predicate }) — group consecutive items while the
    predicate matches; new file src/transformations/chunkBy.ts
  • chunkWhile(values, { predicate }) — predicate over (prev, curr);
    starts a new chunk when the predicate returns false
  • Tests, docs entry under docs/transformations.md, README API table
    update, CHANGELOG.md entry

Pair helpers (E4)

  • #43 zip(left, right) — pair-of-data, fits the carve-out (positional)
  • #44 unzip(pairs) — single-arg, positional
  • Tests, docs entry under docs/transformations.md, README API table
    update, CHANGELOG.md entry

Inherited from v2.3 (re-homed when v2.x went patch-only)

All of the following follow the v3 calling convention (data-first +
options-object) where they take more than one argument. Each ships
self-contained per AGENTS.md (impl + tests + docs + README + CHANGELOG).

  • #12 combinations(values, { size }) — k-combinations
  • #13 cycle(values, { times }) — repeat an array N times
  • #40 sample(values, { rng? }) — random pick
  • #41 sampleSize(values, { size, rng? }) — random subset
  • #45 shuffle(values, { rng? }) — immutable Fisher–Yates
  • #46 rotate(values, { by }) — cyclic shift
  • #47 intersperse(values, { separator })
  • #48 windows(values, { size, step? }) — sliding window

Lazy companion (E5) — RFC only

  • Design RFC issue — scoping for op-array/lazy (iterator and
    async-iterator companion). Covers: subpath layout, calling
    convention (data-first + options carries over), interaction with
    existing eager API, prior-art comparison (iter-tools, IxJS,
    itertools-ts), TypeScript inference strategy
  • Implementation slips to v3.4 or later — v3.3 only commits the
    design to writing

Process

  • All PRs target main, additive label, reference this issue
  • Released as 3.3.0 once the chunk* and zip/unzip helpers ship and the
    E5 RFC issue is opened

Refs #86

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ramongr/op-array

All issues in ramongr/op-array

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.