An ECMAScript module to iterate between range.
Find a file
2026-05-13 15:02:58 +08:00
.github Update resources 2026-04-21 17:46:50 +08:00
.codeql.yml Update resources 2025-08-26 17:27:56 +08:00
.gitattributes Update resources 2024-03-10 16:55:53 +08:00
.gitignore Update resources 2026-04-21 17:46:50 +08:00
.npm-codeberg.build.ts Update resources 2026-05-09 18:10:19 +08:00
.npm-github.build.ts Update resources 2026-05-09 18:10:19 +08:00
.npm-kaki87.build.ts Update resources 2026-05-09 18:10:19 +08:00
.npm-npm.build.ts Update resources 2026-05-09 18:10:19 +08:00
.yamllint.yml Update resources 2023-08-22 15:24:49 +08:00
CITATION.cff Update resources 2026-05-13 15:02:58 +08:00
CONTRIBUTING.md Update resources 2024-10-25 17:39:46 +08:00
deno.jsonc Update resources 2026-05-09 18:10:19 +08:00
jsr.jsonc Update resources 2026-05-09 18:10:19 +08:00
LICENSE.md Update resources 2025-01-27 12:41:29 +08:00
mod.bench.ts Fmt 2025-08-09 11:23:17 +08:00
mod.test.ts Fmt 2025-08-09 11:23:17 +08:00
mod.ts Fmt 2025-08-18 17:32:39 +08:00
README.md Update resources 2026-05-09 18:10:19 +08:00
SECURITY.md Update resources 2026-05-09 18:10:19 +08:00

Range Iterator (ES)

⚖️ MIT

🔗 GitHubJSRNPM

An ECMAScript module to iterate between range.

🎯 Targets

Runtime \ Source GitHub Raw JSR NPM
Bun >= v1.1.0 ✔️ ✔️
Deno >= v2.1.0 ✔️ ✔️ ✔️
NodeJS >= v20.9.0 ✔️ ✔️

🛡️ Runtime Permissions

This does not request any runtime permission.

#️⃣ Sources

  • GitHub Raw
    https://raw.githubusercontent.com/hugoalh/range-iterator-es/{Tag}/mod.ts
    
  • JSR
    jsr:@hugoalh/range-iterator[@{Tag}]
    
  • NPM
    npm:@hugoalh/range-iterator[@{Tag}]
    

Note

  • It is recommended to include tag for immutability.
  • These are not part of the public APIs hence should not be used:
    • Benchmark/Test file (e.g.: example.bench.ts, example.test.ts).
    • Entrypoint name or path include any underscore prefix (e.g.: _example.ts, foo/_example.ts).
    • Identifier/Namespace/Symbol include any underscore prefix (e.g.: _example, Foo._example).

⤵️ Entrypoints

Name Path Description
. ./mod.ts Default.

🧩 APIs

  • function rangeIterator(start: bigint, end: bigint, options?: RangeIteratorOptions<bigint>): Generator<bigint>;
    function rangeIterator(start: bigint, end: bigint, step: bigint): Generator<bigint>;
    function rangeIterator(start: number, end: number, options?: RangeIteratorOptions<number>): Generator<number>;
    function rangeIterator(start: number, end: number, step: number): Generator<number>;
    function rangeIterator(start: string, end: string, options?: RangeIteratorOptions<string>): Generator<string>;
    function rangeIterator(start: string, end: string, step: number): Generator<string>;
    
  • interface RangeIteratorOptions<T extends bigint | number | string> {
      excludeEnd?: boolean;
      excludes?: readonly T[] | Set<T>;
      excludeStart?: boolean;
      step?: T extends string ? number : T;
    }
    

Note

✍️ Examples

  • Array.from(rangeIterator(1, 9));
    //=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
  • Array.from(rangeIterator(1n, 9n, { excludeEnd: true }));
    //=> [1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n]
    
  • Array.from(rangeIterator(1, 9, { step: 0.5 }));
    //=> [1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9]
    
  • Array.from(rangeIterator("a", "z"));
    //=> ["a", "b", "c", ... +20 ..., "x", "y", "z"]
    
  • Array.from(rangeIterator(9, 1));
    //=> [9, 8, 7, 6, 5, 4, 3, 2, 1]
    
  • Array.from(rangeIterator(9n, 1n, { excludeEnd: true }));
    //=> [9n, 8n, 7n, 6n, 5n, 4n, 3n, 2n]
    
  • Array.from(rangeIterator(9, 1, { step: 0.5 }));
    //=> [9, 8.5, 8, 7.5, 7, 6.5, 6, 5.5, 5, 4.5, 4, 3.5, 3, 2.5, 2, 1.5, 1]
    
  • Array.from(rangeIterator("z", "a"));
    //=> ["z", "y", "x", ... +20 ..., "c", "b", "a"]