GitRoot

Craft your forge // Build your project // Grow your community freely
 1// SPDX-FileCopyrightText: 2026 Romain Maneschi <romain@gitroot.dev>
 2//
 3// SPDX-License-Identifier: MIT
 4
 5import { JSON } from "json-as";
 6import { _iteratorNext } from "./imports";
 7import { IteratorItem } from "./model";
 8
 9export class Iterator<T> {
10  constructor(private name: string) {}
11
12  next(): T | null {
13    const ptrSize = _iteratorNext(this.name);
14    const ptrRes = u32(ptrSize >> 32);
15    const sizeRes = u32(ptrSize);
16    const res = String.UTF8.decodeUnsafe(ptrRes, sizeRes);
17    const item = JSON.parse<IteratorItem>(res);
18    if (!item.exist) {
19      return null;
20    }
21    return JSON.parse<T>(item.item);
22  }
23}