@dangayle/rustlike 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/async-iter-BY_bNd1c.cjs +2 -0
- package/dist/{async-iter-3iu4aRtf.cjs.map → async-iter-BY_bNd1c.cjs.map} +1 -1
- package/dist/async-iter-D51Pm8tA.mjs +2 -0
- package/dist/{async-iter-aLdg-qp2.mjs.map → async-iter-D51Pm8tA.mjs.map} +1 -1
- package/dist/index.cjs +1 -476
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -442
- package/dist/index.mjs.map +1 -1
- package/dist/node.cjs +2 -117
- package/dist/node.cjs.map +1 -1
- package/dist/node.mjs +2 -86
- package/dist/node.mjs.map +1 -1
- package/package.json +33 -23
- package/dist/async-iter-3iu4aRtf.cjs +0 -1129
- package/dist/async-iter-aLdg-qp2.mjs +0 -1009
package/README.md
CHANGED
|
@@ -859,6 +859,39 @@ This repo uses two ESLint configurations:
|
|
|
859
859
|
|
|
860
860
|
The examples use the public plugin to demonstrate real-world usage.
|
|
861
861
|
|
|
862
|
+
## Publishing
|
|
863
|
+
|
|
864
|
+
Releases are PR-driven and fully automated. To cut a new version:
|
|
865
|
+
|
|
866
|
+
```bash
|
|
867
|
+
pnpm release:patch # 0.1.0 → 0.1.1 (bug fixes)
|
|
868
|
+
pnpm release:minor # 0.1.0 → 0.2.0 (new features, backward compatible)
|
|
869
|
+
pnpm release:major # 0.1.0 → 1.0.0 (breaking changes)
|
|
870
|
+
```
|
|
871
|
+
|
|
872
|
+
The release script bumps both packages in sync on a `release/vX.Y.Z` branch, signs the commit, pushes, and opens a pull request. From there:
|
|
873
|
+
|
|
874
|
+
1. CI runs lint, typecheck, build, and tests on the PR
|
|
875
|
+
2. You squash-merge the PR into `main`
|
|
876
|
+
3. The [`Tag release`](.github/workflows/tag-release.yml) workflow detects the version bump and creates the `vX.Y.Z` tag
|
|
877
|
+
4. The [`Publish to npm`](.github/workflows/publish.yml) workflow triggers on the tag and:
|
|
878
|
+
- Publishes both packages with [npm provenance](https://docs.npmjs.com/generating-provenance-statements) — a cryptographic attestation linking the package back to this repo and commit
|
|
879
|
+
- Creates a GitHub Release with auto-generated notes
|
|
880
|
+
|
|
881
|
+
The publish workflow safely skips packages whose version is already on npm, so re-running on an existing tag is a no-op.
|
|
882
|
+
|
|
883
|
+
### Manual publish (not recommended)
|
|
884
|
+
|
|
885
|
+
Only needed for the very first publish or recovery scenarios:
|
|
886
|
+
|
|
887
|
+
```bash
|
|
888
|
+
pnpm build
|
|
889
|
+
pnpm publish --access public
|
|
890
|
+
pnpm -C packages/eslint-plugin-rustlike publish --access public
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
Requires being logged in to npm (`pnpm login`) with publish access to the `@dangayle` scope.
|
|
894
|
+
|
|
862
895
|
## License
|
|
863
896
|
|
|
864
897
|
MIT
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){let t;if(e instanceof Error)t=e.message;else try{t=JSON.stringify(e)}catch{t=String(e)}return t.length>200?t.slice(0,200)+`...`:t}var t=class e{constructor(e){this.value=e,this.some=!0}map(t){return new e(t(this.value))}mapOr(e,t){return t(this.value)}mapOrElse(e,t){return t(this.value)}andThen(e){return e(this.value)}and(e){return e}or(e){return this}orElse(e){return this}xor(e){return e.isSome()?r:this}filter(e){return e(this.value)?this:r}contains(e){return this.value===e}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}expect(e){return this.value}match(e){return e.some(this.value)}okOr(e){return new i(this.value)}zip(t){return t.isSome()?new e([this.value,t.value]):r}flatten(){return this.unwrap()}inspect(e){return e(this.value),this}isSome(){return!0}isNone(){return!1}},n=class{constructor(){this.some=!1}map(e){return this}mapOr(e,t){return e}mapOrElse(e,t){return e()}andThen(e){return this}and(e){return this}or(e){return e}orElse(e){return e()}xor(e){return e}filter(e){return this}contains(e){return!1}unwrap(){throw Error(`Called unwrap on None`)}unwrapOr(e){return e}unwrapOrElse(e){return e()}expect(e){throw Error(e)}match(e){return e.none()}okOr(e){return new a(e)}zip(e){return this}flatten(){return this}inspect(e){return this}isSome(){return!1}isNone(){return!0}};const r=Object.freeze(new n);var i=class n{constructor(e){this.value=e,this.ok=!0}map(e){return new n(e(this.value))}mapOr(e,t){return t(this.value)}mapOrElse(e,t){return t(this.value)}mapErr(e){return this}andThen(e){return e(this.value)}and(e){return e}or(e){return this}orElse(e){return this}contains(e){return this.value===e}containsErr(e){return!1}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}expect(e){return this.value}unwrapErr(){throw Error(`Called unwrapErr on Ok: ${e(this.value)}`)}expectErr(t){throw Error(`${t}: ${e(this.value)}`)}match(e){return e.ok(this.value)}toOption(){return new t(this.value)}err(){return r}flatten(){return this.unwrap()}inspect(e){return e(this.value),this}inspectErr(e){return this}isOk(){return!0}isErr(){return!1}},a=class n{constructor(e){this.error=e,this.ok=!1}map(e){return this}mapOr(e,t){return e}mapOrElse(e,t){return e(this.error)}mapErr(e){return new n(e(this.error))}andThen(e){return this}and(e){return this}or(e){return e}orElse(e){return e(this.error)}contains(e){return!1}containsErr(e){return this.error===e}unwrap(){throw Error(`Called unwrap on Err: ${e(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}expect(t){throw Error(`${t}: ${e(this.error)}`)}unwrapErr(){return this.error}expectErr(e){return this.error}match(e){return e.err(this.error)}toOption(){return r}err(){return new t(this.error)}flatten(){return this}inspect(e){return this}inspectErr(e){return e(this.error),this}isOk(){return!1}isErr(){return!0}};const o=e=>new t(e),s=r,c=e=>new i(e),l=e=>new a(e),u=e=>e.some,d=e=>!e.some,f=e=>e.ok,p=e=>!e.ok,m={some:o,none:s,isSome:u,isNone:d,from:e=>e==null?s:o(e),map:(e,t)=>e.map(t),andThen:(e,t)=>e.andThen(t),or:(e,t)=>e.or(t),orElse:(e,t)=>e.orElse(t),filter:(e,t)=>e.some?e.filter(t):s,unwrap:e=>e.unwrap(),unwrapOr:(e,t)=>e.unwrapOr(t),unwrapOrElse:(e,t)=>e.unwrapOrElse(t),match:(e,t)=>e.match(t),zip:(e,t)=>e.zip(t),okOr:(e,t)=>e.some?c(e.value):l(t),flatten:e=>e.flatten(),transpose:e=>{if(e.isSome()){let t=e.unwrap();return t.isOk()?c(o(t.unwrap())):l(t.unwrapErr())}return c(s)},all:e=>{let t=[];for(let n of e){if(n.isNone())return s;t.push(n.value)}return o(t)},collect:e=>m.all(e)},h={ok:c,err:l,isOk:f,isErr:p,map:(e,t)=>e.map(t),mapErr:(e,t)=>e.mapErr(t),andThen:(e,t)=>e.andThen(t),orElse:(e,t)=>e.orElse(t),unwrap:e=>e.unwrap(),unwrapOr:(e,t)=>e.unwrapOr(t),unwrapOrElse:(e,t)=>e.unwrapOrElse(t),unwrapErr:e=>e.unwrapErr(),expectErr:(e,t)=>e.expectErr(t),match:(e,t)=>e.match(t),toOption:e=>e.toOption(),fromThrowable:e=>{try{return c(e())}catch(e){return l(e)}},fromPromise:async e=>{try{return c(await e)}catch(e){return l(e)}},flatten:e=>e.flatten(),transpose:e=>{if(e.isOk()){let t=e.unwrap();return t.isSome()?o(c(t.unwrap())):s}return o(l(e.unwrapErr()))},all:e=>{let t=[];for(let n of e){if(n.isErr())return n;t.push(n.value)}return c(t)},collect:e=>h.all(e)},g=Object.freeze({has:!1,value:void 0});var _=class e{constructor(e){this.peeked=g,this.source=e}map(t){let n=this;return new e((function*(){for(let e of n)yield t(e)})())}filter(t){let n=this;return new e((function*(){for(let e of n)t(e)&&(yield e)})())}flatMap(t){let n=this;return new e((function*(){for(let e of n)for(let n of t(e))yield n})())}inspect(t){let n=this;return new e((function*(){for(let e of n)t(e),yield e})())}peekable(){return this}find(e){for(let t of this)if(e(t))return o(t);return s}findMap(e){for(let t of this){let n=e(t);if(n.isSome())return n}return s}any(e){for(let t of this)if(e(t))return!0;return!1}all(e){for(let t of this)if(!e(t))return!1;return!0}position(e){let t=0;for(let n of this){if(e(n))return o(t);t++}return s}fold(e,t){let n=e;for(let e of this)n=t(n,e);return n}reduce(e){let t=this.next();if(t.done)return s;let n=t.value;for(let t of this)n=e(n,t);return o(n)}tryFold(e,t){let n=e;for(let e of this){let r=t(n,e);if(r.isErr())return r;n=r.value}return c(n)}count(){let e=0;for(let t of this)e++;return e}last(){let e=s;for(let t of this)e=o(t);return e}nth(e){if(e<0)return s;let t=0;for(let n of this){if(t===e)return o(n);t++}return s}partition(e){let t=[],n=[];for(let r of this)e(r)?t.push(r):n.push(r);return[t,n]}tryMap(e){return this.map(e)}take(t){let n=this;return new e((function*(){let e=0,r=n[Symbol.iterator]();for(;e<t;){let t=r.next();if(t.done)break;yield t.value,e++}})())}skip(t){let n=this;return new e((function*(){let e=0;for(let r of n){if(e<t){e++;continue}yield r}})())}stepBy(t){if(t<=0)throw Error(`Iter.stepBy: step must be positive`);let n=this;return new e((function*(){let e=0;for(let r of n)e%t===0&&(yield r),e++})())}enumerate(){let t=this;return new e((function*(){let e=0;for(let n of t)yield[e,n],e++})())}zip(t){let n=this;return new e((function*(){let e=t[Symbol.iterator]();for(let t of n){let n=e.next();if(n.done)break;yield[t,n.value]}})())}chain(t){let n=this;return new e((function*(){for(let e of n)yield e;for(let e of t)yield e})())}flatten(){let t=this;return new e((function*(){for(let e of t)for(let t of e)yield t})())}peek(){if(this.peeked.has)return o(this.peeked.value);let e=this.source.next();return e.done?s:(this.peeked={has:!0,value:e.value},o(e.value))}collectResult(){let e=[];for(let t of this){if(t.isErr())return l(t.error);e.push(t.value)}return c(e)}forEach(e){for(let t of this)e(t)}collect(){let e=[];for(let t of this)e.push(t);return e}[Symbol.iterator](){return this}next(){if(this.peeked.has){let e=this.peeked.value;return this.peeked=g,{done:!1,value:e}}return this.source.next()}};function v(e){return Symbol.iterator in e?new _(e[Symbol.iterator]()):new _(e)}function y(e){return new _(e[Symbol.iterator]())}function b(e){return new _(e())}const x={from:v,fromArray:y,fromGenerator:b,empty:()=>new _((function*(){})()),once:e=>new _((function*(){yield e})()),repeat:(e,t)=>new _((function*(){for(let n=0;n<t;n++)yield e})()),range:(e,t,n=1)=>new _((function*(){if(n===0)throw Error(`Iter.range: step must be non-zero`);for(let r=e;n>0?r<t:r>t;r+=n)yield r})()),sum:e=>e.fold(0,(e,t)=>e+t),product:e=>e.fold(1,(e,t)=>e*t),min:e=>e.reduce((e,t)=>e<=t?e:t),max:e=>e.reduce((e,t)=>e>=t?e:t)};var S=class e{constructor(e){this.peeked=null,this.source=e}map(t){let n=this;return new e((async function*(){for await(let e of n)yield await t(e)})())}filter(t){let n=this;return new e((async function*(){for await(let e of n)await t(e)&&(yield e)})())}flatMap(t){let n=this;return new e((async function*(){for await(let e of n){let n=t(e);if(Symbol.asyncIterator in n)for await(let e of n)yield e;else for(let e of n)yield e}})())}inspect(t){let n=this;return new e((async function*(){for await(let e of n)await t(e),yield e})())}peekable(){return this}async find(e){for await(let t of this)if(await e(t))return o(t);return s}async findMap(e){for await(let t of this){let n=await e(t);if(n.isSome())return n}return s}async any(e){for await(let t of this)if(await e(t))return!0;return!1}async all(e){for await(let t of this)if(!await e(t))return!1;return!0}async position(e){let t=0;for await(let n of this){if(await e(n))return o(t);t++}return s}async fold(e,t){let n=e;for await(let e of this)n=await t(n,e);return n}async reduce(e){let t=await this.next();if(t.done)return s;let n=t.value;for await(let t of this)n=await e(n,t);return o(n)}async tryFold(e,t){let n=e;for await(let e of this){let r=await t(n,e);if(r.isErr())return r;n=r.value}return c(n)}async count(){let e=0;for await(let t of this)e++;return e}async last(){let e=s;for await(let t of this)e=o(t);return e}async nth(e){if(e<0)return s;let t=0;for await(let n of this){if(t===e)return o(n);t++}return s}async partition(e){let t=[],n=[];for await(let r of this)await e(r)?t.push(r):n.push(r);return[t,n]}tryMap(e){return this.map(e)}take(t){let n=this;return new e((async function*(){let e=0,r=n[Symbol.asyncIterator]();for(;e<t;){let t=await r.next();if(t.done)break;yield t.value,e++}})())}skip(t){let n=this;return new e((async function*(){let e=0;for await(let r of n){if(e<t){e++;continue}yield r}})())}stepBy(t){if(t<=0)throw Error(`AsyncIter.stepBy: step must be positive`);let n=this;return new e((async function*(){let e=0;for await(let r of n)e%t===0&&(yield r),e++})())}enumerate(){let t=this;return new e((async function*(){let e=0;for await(let n of t)yield[e,n],e++})())}zip(t){let n=this;return new e((async function*(){let e=t[Symbol.asyncIterator]();for await(let t of n){let n=await e.next();if(n.done)break;yield[t,n.value]}})())}chain(t){let n=this;return new e((async function*(){for await(let e of n)yield e;for await(let e of t)yield e})())}flatten(){let t=this;return new e((async function*(){for await(let e of t)if(Symbol.asyncIterator in e)for await(let t of e)yield t;else for(let t of e)yield t})())}async peek(){this.peeked??=this.source.next();let e=await this.peeked;return e.done?s:o(e.value)}async collectResult(){let e=[];for await(let t of this){if(t.isErr())return l(t.error);e.push(t.value)}return c(e)}async forEach(e){for await(let t of this)await e(t)}async collect(){let e=[];for await(let t of this)e.push(t);return e}[Symbol.asyncIterator](){return this}next(){if(this.peeked){let e=this.peeked;return this.peeked=null,e}return this.source.next()}};function C(e){return Symbol.asyncIterator in e?new S(e[Symbol.asyncIterator]()):new S(e)}function w(e){return new S((async function*(){for(let t of e)yield t})())}function T(e){return w(e)}function E(e){return new S(e())}const D={from:C,fromIterable:w,fromArray:T,fromGenerator:E,empty:()=>new S((async function*(){})()),once:e=>new S((async function*(){yield e})()),repeat:(e,t)=>new S((async function*(){for(let n=0;n<t;n++)yield e})()),range:(e,t,n=1)=>new S((async function*(){if(n===0)throw Error(`AsyncIter.range: step must be non-zero`);for(let r=e;n>0?r<t:r>t;r+=n)yield r})()),sum:e=>e.fold(0,(e,t)=>e+t),product:e=>e.fold(1,(e,t)=>e*t),min:e=>e.reduce((e,t)=>e<=t?e:t),max:e=>e.reduce((e,t)=>e>=t?e:t)};Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return u}});
|
|
2
|
+
//# sourceMappingURL=async-iter-BY_bNd1c.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-iter-3iu4aRtf.cjs","names":[],"sources":["../src/core.ts","../src/iter.ts","../src/async-iter.ts"],"sourcesContent":["/**\n * Core Algebraic Data Types: Option<T> and Result<T, E>\n *\n * This file merges Result and Option to allow seamless interoperation\n * (converting Result -> Option and vice versa) without circular dependencies.\n */\n\n// ============================================================================\n// Option<T> Definitions\n// ============================================================================\n\nexport interface Some<T> {\n readonly some: true;\n readonly value: T;\n map<U>(fn: (value: T) => U): Option<U>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: () => U, fn: (value: T) => U): U;\n andThen<U>(fn: (value: T) => Option<U>): Option<U>;\n and<U>(other: Option<U>): Option<U>;\n or(other: Option<T>): Option<T>;\n orElse(fn: () => Option<T>): Option<T>;\n xor(other: Option<T>): Option<T>;\n filter(predicate: (value: T) => boolean): Option<T>;\n contains(value: T): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: () => T): T;\n expect(message: string): T;\n match<U>(handlers: { some: (value: T) => U; none: () => U }): U;\n okOr<E>(error: E): Result<T, E>;\n zip<U>(other: Option<U>): Option<readonly [T, U]>;\n /** Flatten nested Option<Option<T>> to Option<T> */\n flatten<U>(this: Option<Option<U>>): Option<U>;\n /** Inspect the value if present, without modifying it */\n inspect(fn: (value: T) => void): Option<T>;\n isSome(): this is Some<T>;\n isNone(): this is None;\n}\n\nexport interface None {\n readonly some: false;\n map<U>(fn: (value: never) => U): Option<U>;\n mapOr<U>(defaultValue: U, fn: (value: never) => U): U;\n mapOrElse<U>(defaultFn: () => U, fn: (value: never) => U): U;\n andThen<U>(fn: (value: never) => Option<U>): Option<U>;\n and<U>(other: Option<U>): None;\n or<T>(other: Option<T>): Option<T>;\n orElse<T>(fn: () => Option<T>): Option<T>;\n xor<T>(other: Option<T>): Option<T>;\n filter(predicate: (value: never) => boolean): None;\n contains(value: unknown): false;\n unwrap(): never;\n unwrapOr<T>(defaultValue: T): T;\n unwrapOrElse<T>(fn: () => T): T;\n expect(message: string): never;\n match<U>(handlers: { some: (value: never) => U; none: () => U }): U;\n okOr<E>(error: E): Result<never, E>;\n zip<U>(other: Option<U>): None;\n /** Flatten nested Option<Option<T>> to Option<T> */\n flatten<U>(this: Option<Option<U>>): Option<U>;\n /** Inspect the value if present, without modifying it */\n inspect(fn: (value: never) => void): Option<never>;\n isSome(): this is Some<never>;\n isNone(): this is None;\n}\n\nexport type Option<T> = Some<T> | None;\n\n// ============================================================================\n// Result<T, E> Definitions\n// ============================================================================\n\nexport interface Ok<T, E = never> {\n readonly ok: true;\n readonly value: T;\n map<U>(fn: (value: T) => U): Result<U, E>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: (error: E) => U, fn: (value: T) => U): U;\n mapErr<F>(fn: (error: E) => F): Result<T, F>;\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E>;\n and<U>(other: Result<U, E>): Result<U, E>;\n or<F>(other: Result<T, F>): Result<T, F>;\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F>;\n contains(value: T): boolean;\n containsErr(error: E): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: (error: E) => T): T;\n expect(message: string): T;\n /** Get the error or throw (panics if Ok) */\n unwrapErr(): E;\n /** Get the error or throw with custom message (panics if Ok) */\n expectErr(message: string): E;\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U;\n /** Convert to Option<T>, discarding the error if any */\n toOption(): Option<T>;\n /** Convert to Option<E>, discarding the value if any */\n err(): Option<E>;\n /** Flatten nested Result<Result<T, E>, E> to Result<T, E> */\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E>;\n /** Inspect the value if Ok, without modifying it */\n inspect(fn: (value: T) => void): Result<T, E>;\n /** Inspect the error if Err, without modifying it */\n inspectErr(fn: (error: E) => void): Result<T, E>;\n isOk(): this is Ok<T, E>;\n isErr(): this is Err<E, T>;\n}\n\nexport interface Err<E, T = never> {\n readonly ok: false;\n readonly error: E;\n map<U>(fn: (value: T) => U): Result<U, E>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: (error: E) => U, fn: (value: T) => U): U;\n mapErr<F>(fn: (error: E) => F): Result<T, F>;\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E>;\n and<U>(other: Result<U, E>): Result<U, E>;\n or<F>(other: Result<T, F>): Result<T, F>;\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F>;\n contains(value: T): boolean;\n containsErr(error: E): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: (error: E) => T): T;\n expect(message: string): T;\n /** Get the error (panics if Ok) */\n unwrapErr(): E;\n /** Get the error or return it (identity for Err) */\n expectErr(message: string): E;\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U;\n /** Convert to Option<T>, discarding the error if any */\n toOption(): Option<T>;\n /** Convert to Option<E>, discarding the value if any */\n err(): Option<E>;\n /** Flatten nested Result<Result<T, E>, E> to Result<T, E> */\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E>;\n /** Inspect the value if Ok, without modifying it */\n inspect(fn: (value: T) => void): Result<T, E>;\n /** Inspect the error if Err, without modifying it */\n inspectErr(fn: (error: E) => void): Result<T, E>;\n isOk(): this is Ok<T, E>;\n isErr(): this is Err<E, T>;\n}\n\nexport type Result<T, E> = Ok<T, E> | Err<E, T>;\n\n// ============================================================================\n// Internal Helper: JSON Stringify for Panic Messages\n// ============================================================================\n\nconst PANIC_STRING_MAX_LENGTH = 200;\n\nexport function toPanicString(value: unknown): string {\n let str: string;\n if (value instanceof Error) {\n str = value.message;\n } else {\n try {\n str = JSON.stringify(value);\n } catch {\n str = String(value);\n }\n }\n if (str.length > PANIC_STRING_MAX_LENGTH) {\n return str.slice(0, PANIC_STRING_MAX_LENGTH) + \"...\";\n }\n return str;\n}\n\n// ============================================================================\n// Option Implementation\n// ============================================================================\n\nclass SomeImpl<T> implements Some<T> {\n readonly some = true as const;\n constructor(readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Option<U> {\n return new SomeImpl(fn(this.value));\n }\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapOrElse<U>(_defaultFn: () => U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n andThen<U>(fn: (value: T) => Option<U>): Option<U> {\n return fn(this.value);\n }\n\n and<U>(other: Option<U>): Option<U> {\n return other;\n }\n\n or(_other: Option<T>): Option<T> {\n return this;\n }\n\n orElse(_fn: () => Option<T>): Option<T> {\n return this;\n }\n\n xor(other: Option<T>): Option<T> {\n return other.isSome() ? NoneValue : this;\n }\n\n filter(predicate: (value: T) => boolean): Option<T> {\n return predicate(this.value) ? this : NoneValue;\n }\n\n contains(value: T): boolean {\n return this.value === value;\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n\n expect(_message: string): T {\n return this.value;\n }\n\n match<U>(handlers: { some: (value: T) => U; none: () => U }): U {\n return handlers.some(this.value);\n }\n\n okOr<E>(_error: E): Result<T, E> {\n return new OkImpl(this.value);\n }\n\n zip<U>(other: Option<U>): Option<readonly [T, U]> {\n return other.isSome() ? new SomeImpl([this.value, other.value] as const) : NoneValue;\n }\n\n flatten<U>(this: Option<Option<U>>): Option<U> {\n return this.unwrap();\n }\n\n inspect(fn: (value: T) => void): Option<T> {\n fn(this.value);\n return this;\n }\n\n isSome(): this is Some<T> {\n return true;\n }\n\n isNone(): this is None {\n return false;\n }\n}\n\nclass NoneImpl implements None {\n readonly some = false as const;\n\n map<U>(_fn: (value: never) => U): Option<U> {\n return this as unknown as Option<U>;\n }\n\n mapOr<U>(defaultValue: U, _fn: (value: never) => U): U {\n return defaultValue;\n }\n\n mapOrElse<U>(defaultFn: () => U, _fn: (value: never) => U): U {\n return defaultFn();\n }\n\n andThen<U>(_fn: (value: never) => Option<U>): Option<U> {\n return this as unknown as Option<U>;\n }\n\n and<U>(_other: Option<U>): None {\n return this;\n }\n\n or<T>(other: Option<T>): Option<T> {\n return other;\n }\n\n orElse<T>(fn: () => Option<T>): Option<T> {\n return fn();\n }\n\n xor<T>(other: Option<T>): Option<T> {\n return other;\n }\n\n filter(_predicate: (value: never) => boolean): None {\n return this;\n }\n\n contains(_value: unknown): false {\n return false;\n }\n\n unwrap(): never {\n throw new Error(\"Called unwrap on None\");\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: () => T): T {\n return fn();\n }\n\n expect(message: string): never {\n throw new Error(message);\n }\n\n match<U>(handlers: { some: (value: never) => U; none: () => U }): U {\n return handlers.none();\n }\n\n okOr<E>(error: E): Result<never, E> {\n return new ErrImpl(error);\n }\n\n zip<U>(_other: Option<U>): None {\n return this;\n }\n\n flatten<U>(this: Option<Option<U>>): Option<U> {\n return this as unknown as Option<U>;\n }\n\n inspect(_fn: (value: never) => void): Option<never> {\n return this;\n }\n\n isSome(): this is Some<never> {\n return false;\n }\n\n isNone(): this is None {\n return true;\n }\n}\n\n// Singleton None value (frozen for immutability)\nconst NoneValue: None = Object.freeze(new NoneImpl()) as None;\n\n// ============================================================================\n// Result Implementation\n// ============================================================================\n\nclass OkImpl<T, E = never> implements Ok<T, E> {\n readonly ok = true as const;\n constructor(readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, E> {\n return new OkImpl(fn(this.value));\n }\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapOrElse<U>(_defaultFn: (error: E) => U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapErr<F>(_fn: (error: E) => F): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E> {\n return fn(this.value);\n }\n\n and<U>(other: Result<U, E>): Result<U, E> {\n return other;\n }\n\n or<F>(_other: Result<T, F>): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n orElse<F>(_fn: (error: E) => Result<T, F>): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n contains(value: T): boolean {\n return this.value === value;\n }\n\n containsErr(_error: E): boolean {\n return false;\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: (error: E) => T): T {\n return this.value;\n }\n\n expect(_message: string): T {\n return this.value;\n }\n\n unwrapErr(): E {\n throw new Error(`Called unwrapErr on Ok: ${toPanicString(this.value)}`);\n }\n\n expectErr(message: string): E {\n throw new Error(`${message}: ${toPanicString(this.value)}`);\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U {\n return handlers.ok(this.value);\n }\n\n toOption(): Option<T> {\n return new SomeImpl(this.value);\n }\n\n err(): Option<E> {\n return NoneValue;\n }\n\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E> {\n return this.unwrap();\n }\n\n inspect(fn: (value: T) => void): Result<T, E> {\n fn(this.value);\n return this;\n }\n\n inspectErr(_fn: (error: E) => void): Result<T, E> {\n return this;\n }\n\n isOk(): this is Ok<T, E> {\n return true;\n }\n\n isErr(): this is Err<E, T> {\n return false;\n }\n}\n\nclass ErrImpl<E, T = never> implements Err<E, T> {\n readonly ok = false as const;\n constructor(readonly error: E) {}\n\n map<U>(_fn: (value: T) => U): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n mapOr<U>(defaultValue: U, _fn: (value: T) => U): U {\n return defaultValue;\n }\n\n mapOrElse<U>(defaultFn: (error: E) => U, _fn: (value: T) => U): U {\n return defaultFn(this.error);\n }\n\n mapErr<F>(fn: (error: E) => F): Result<T, F> {\n return new ErrImpl(fn(this.error));\n }\n\n andThen<U>(_fn: (value: T) => Result<U, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n and<U>(_other: Result<U, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n or<F>(other: Result<T, F>): Result<T, F> {\n return other;\n }\n\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F> {\n return fn(this.error);\n }\n\n contains(_value: T): boolean {\n return false;\n }\n\n containsErr(error: E): boolean {\n return this.error === error;\n }\n\n unwrap(): T {\n throw new Error(`Called unwrap on Err: ${toPanicString(this.error)}`);\n }\n\n unwrapOr(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse(fn: (error: E) => T): T {\n return fn(this.error);\n }\n\n expect(message: string): T {\n throw new Error(`${message}: ${toPanicString(this.error)}`);\n }\n\n unwrapErr(): E {\n return this.error;\n }\n\n expectErr(_message: string): E {\n return this.error;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n toOption(): Option<T> {\n return NoneValue;\n }\n\n err(): Option<E> {\n return new SomeImpl(this.error);\n }\n\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n inspect(_fn: (value: T) => void): Result<T, E> {\n return this;\n }\n\n inspectErr(fn: (error: E) => void): Result<T, E> {\n fn(this.error);\n return this;\n }\n\n isOk(): this is Ok<T, E> {\n return false;\n }\n\n isErr(): this is Err<E, T> {\n return true;\n }\n}\n\n// ============================================================================\n// Constructors (Public API)\n// ============================================================================\n\nexport const Some = <T>(value: T): Some<T> => new SomeImpl(value);\nexport const None: None = NoneValue;\nexport const Ok = <T, E = never>(value: T): Ok<T, E> => new OkImpl(value);\nexport const Err = <E, T = never>(error: E): Err<E, T> => new ErrImpl(error);\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\nexport const isSome = <T>(option: Option<T>): option is Some<T> => option.some;\nexport const isNone = <T>(option: Option<T>): option is None => !option.some;\nexport const isOk = <T, E>(result: Result<T, E>): result is Ok<T, E> => result.ok;\nexport const isErr = <T, E>(result: Result<T, E>): result is Err<E, T> => !result.ok;\n\n// ============================================================================\n// Namespaces (Static Helpers)\n// ============================================================================\n\nexport const Option = {\n some: Some,\n none: None,\n isSome,\n isNone,\n\n from: <T>(value: T | null | undefined): Option<T> => (value != null ? Some(value) : None),\n\n map: <T, U>(option: Option<T>, fn: (value: T) => U): Option<U> => option.map(fn),\n\n andThen: <T, U>(option: Option<T>, fn: (value: T) => Option<U>): Option<U> => option.andThen(fn),\n\n or: <T>(option: Option<T>, other: Option<T>): Option<T> => option.or(other),\n\n orElse: <T>(option: Option<T>, fn: () => Option<T>): Option<T> => option.orElse(fn),\n\n filter: <T>(option: Option<T>, predicate: (value: T) => boolean): Option<T> =>\n option.some ? option.filter(predicate) : None,\n\n unwrap: <T>(option: Option<T>): T => option.unwrap(),\n\n unwrapOr: <T>(option: Option<T>, defaultValue: T): T => option.unwrapOr(defaultValue),\n\n unwrapOrElse: <T>(option: Option<T>, fn: () => T): T => option.unwrapOrElse(fn),\n\n match: <T, U>(option: Option<T>, handlers: { some: (value: T) => U; none: () => U }): U =>\n option.match(handlers),\n\n zip: <T, U>(a: Option<T>, b: Option<U>): Option<readonly [T, U]> => a.zip(b),\n\n okOr: <T, E>(option: Option<T>, error: E): Result<T, E> =>\n option.some ? Ok(option.value) : Err(error),\n\n flatten: <T>(option: Option<Option<T>>): Option<T> => option.flatten(),\n\n transpose: <T, E>(option: Option<Result<T, E>>): Result<Option<T>, E> => {\n if (option.isSome()) {\n const val = option.unwrap();\n if (val.isOk()) {\n return Ok(Some(val.unwrap()));\n } else {\n return Err(val.unwrapErr());\n }\n }\n return Ok(None);\n },\n\n /**\n * Combine multiple Options into a single Option of an array.\n * Returns None if any Option is None.\n *\n * @example\n * const options = Option.all([Some(1), Some(2), Some(3)]);\n * // Some([1, 2, 3])\n *\n * const withNone = Option.all([Some(1), None, Some(3)]);\n * // None\n */\n all: <T>(options: readonly Option<T>[]): Option<T[]> => {\n const values: T[] = [];\n for (const option of options) {\n if (option.isNone()) {\n return None;\n }\n values.push(option.value);\n }\n return Some(values);\n },\n\n /** Alias for {@link all} — Rust's collect pattern. */\n collect: <T>(options: readonly Option<T>[]): Option<T[]> => Option.all(options),\n} as const;\n\nexport const Result = {\n ok: Ok,\n err: Err,\n isOk,\n isErr,\n\n map: <T, U, E>(result: Result<T, E>, fn: (value: T) => U): Result<U, E> => result.map(fn),\n\n mapErr: <T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F> => result.mapErr(fn),\n\n andThen: <T, U, E>(result: Result<T, E>, fn: (value: T) => Result<U, E>): Result<U, E> =>\n result.andThen(fn),\n\n orElse: <T, E, F>(result: Result<T, E>, fn: (error: E) => Result<T, F>): Result<T, F> =>\n result.orElse(fn),\n\n unwrap: <T, E>(result: Result<T, E>): T => result.unwrap(),\n\n unwrapOr: <T, E>(result: Result<T, E>, defaultValue: T): T => result.unwrapOr(defaultValue),\n\n unwrapOrElse: <T, E>(result: Result<T, E>, fn: (error: E) => T): T => result.unwrapOrElse(fn),\n\n unwrapErr: <T, E>(result: Result<T, E>): E => result.unwrapErr(),\n\n expectErr: <T, E>(result: Result<T, E>, message: string): E => result.expectErr(message),\n\n match: <T, E, U>(\n result: Result<T, E>,\n handlers: { ok: (value: T) => U; err: (error: E) => U },\n ): U => result.match(handlers),\n\n toOption: <T, E>(result: Result<T, E>): Option<T> => result.toOption(),\n\n fromThrowable: <T, E = unknown>(fn: () => T): Result<T, E> => {\n try {\n return Ok(fn());\n } catch (e) {\n // Cast: TypeScript catch blocks type errors as `unknown`. The caller\n // narrows via the E parameter (defaulting to `unknown`).\n return Err(e as E);\n }\n },\n\n fromPromise: async <T, E = unknown>(promise: Promise<T>): Promise<Result<T, E>> => {\n try {\n return Ok(await promise);\n } catch (e) {\n // Cast: see fromThrowable — caller narrows E via the type parameter.\n return Err(e as E);\n }\n },\n\n flatten: <T, E>(result: Result<Result<T, E>, E>): Result<T, E> => result.flatten(),\n\n transpose: <T, E>(result: Result<Option<T>, E>): Option<Result<T, E>> => {\n if (result.isOk()) {\n const val = result.unwrap();\n if (val.isSome()) {\n return Some(Ok(val.unwrap()));\n } else {\n return None;\n }\n }\n // If Result is Err, we wrap it in Some: Some(Err(e))\n return Some(Err(result.unwrapErr()));\n },\n\n /**\n * Combine multiple Results into a single Result of an array.\n * Short-circuits on the first Err encountered.\n *\n * @example\n * const results = Result.all([Ok(1), Ok(2), Ok(3)]);\n * // Ok([1, 2, 3])\n *\n * const withErr = Result.all([Ok(1), Err(\"failed\"), Ok(3)]);\n * // Err(\"failed\")\n */\n all: <T, E>(results: readonly Result<T, E>[]): Result<T[], E> => {\n const values: T[] = [];\n for (const result of results) {\n if (result.isErr()) {\n return result as unknown as Result<T[], E>;\n }\n values.push(result.value);\n }\n return Ok(values);\n },\n\n /** Alias for {@link all} — Rust's collect pattern. */\n collect: <T, E>(results: readonly Result<T, E>[]): Result<T[], E> => Result.all(results),\n} as const;\n","/**\n * Lazy Iterator: Iter<T>\n *\n * Rust-like lazy iterator wrappers around JavaScript's native Iterator protocol.\n * Enables composable, memory-efficient data processing pipelines.\n */\n\nimport { Option, Some, None, Result, Ok, Err } from \"./core\";\n\n// ============================================================================\n// Iter<T> Interface (Public API)\n// ============================================================================\n\nexport interface Iter<T> {\n // Core transformation\n map<U>(fn: (value: T) => U): Iter<U>;\n filter(pred: (value: T) => boolean): Iter<T>;\n flatMap<U>(fn: (value: T) => Iterable<U>): Iter<U>;\n inspect(fn: (value: T) => void): Iter<T>;\n\n // Peekable adapter (matches Rust's peekable)\n peekable(): PeekableIter<T>;\n\n // Search\n find(pred: (value: T) => boolean): Option<T>;\n findMap<U>(fn: (value: T) => Option<U>): Option<U>;\n any(pred: (value: T) => boolean): boolean;\n all(pred: (value: T) => boolean): boolean;\n position(pred: (value: T) => boolean): Option<number>;\n\n // Aggregation\n fold<U>(init: U, fn: (acc: U, value: T) => U): U;\n reduce(fn: (acc: T, value: T) => T): Option<T>;\n tryFold<U, E>(init: U, fn: (acc: U, value: T) => Result<U, E>): Result<U, E>;\n count(): number;\n last(): Option<T>;\n nth(n: number): Option<T>;\n partition(pred: (value: T) => boolean): [T[], T[]];\n\n // Result integration\n tryMap<U, E>(fn: (value: T) => Result<U, E>): Iter<Result<U, E>>;\n\n // Limiting & skipping\n take(n: number): Iter<T>;\n skip(n: number): Iter<T>;\n stepBy(step: number): Iter<T>;\n\n // Enumerating (index, value pairs)\n enumerate(): Iter<readonly [number, T]>;\n\n // Combining iterators\n zip<U>(other: Iterable<U>): Iter<readonly [T, U]>;\n chain(other: Iterable<T>): Iter<T>;\n\n // Flattening nested iterators\n flatten<U>(this: Iter<Iterable<U>>): Iter<U>;\n\n // Result collection (Rust-like: collect::<Result<Vec<_>, E>>())\n collectResult<U, E>(this: Iter<Result<U, E>>): Result<U[], E>;\n\n // Consumption\n forEach(fn: (value: T) => void): void;\n collect(): T[];\n\n // Iterator protocol compliance\n [Symbol.iterator](): Iterator<T>;\n next(): IteratorResult<T>;\n}\n\nexport interface PeekableIter<T> extends Iter<T> {\n // Peekable (for multi-line parsing)\n peek(): Option<T>;\n}\n\n// ============================================================================\n// Internal Implementation\n// ============================================================================\n\n// Sentinel object for \"no peeked value\" state — reused across all instances.\nconst EMPTY_PEEK: Readonly<{ has: false; value: undefined }> = Object.freeze({\n has: false,\n value: undefined,\n});\n\n/**\n * Core iterator implementation using idiomatic TypeScript.\n * Uses generator functions internally for lazy evaluation.\n */\nclass IterImpl<T> implements Iter<T> {\n private readonly source: Iterator<T>;\n private peeked: { has: boolean; value: T | undefined } = EMPTY_PEEK;\n\n constructor(source: Iterator<T>) {\n this.source = source;\n }\n\n // -------------------------------------------------------------------------\n // Core transformation\n // -------------------------------------------------------------------------\n\n map<U>(fn: (value: T) => U): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n yield fn(value);\n }\n })(),\n );\n }\n\n filter(pred: (value: T) => boolean): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n if (pred(value)) {\n yield value;\n }\n }\n })(),\n );\n }\n\n flatMap<U>(fn: (value: T) => Iterable<U>): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n for (const inner of fn(value)) {\n yield inner;\n }\n }\n })(),\n );\n }\n\n inspect(fn: (value: T) => void): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n fn(value);\n yield value;\n }\n })(),\n );\n }\n\n peekable(): PeekableIter<T> {\n return this as PeekableIter<T>;\n }\n\n // -------------------------------------------------------------------------\n // Search\n // -------------------------------------------------------------------------\n\n find(pred: (value: T) => boolean): Option<T> {\n for (const value of this) {\n if (pred(value)) {\n return Some(value);\n }\n }\n return None;\n }\n\n findMap<U>(fn: (value: T) => Option<U>): Option<U> {\n for (const value of this) {\n const result = fn(value);\n if (result.isSome()) {\n return result;\n }\n }\n return None;\n }\n\n any(pred: (value: T) => boolean): boolean {\n for (const value of this) {\n if (pred(value)) {\n return true;\n }\n }\n return false;\n }\n\n all(pred: (value: T) => boolean): boolean {\n for (const value of this) {\n if (!pred(value)) {\n return false;\n }\n }\n return true;\n }\n\n position(pred: (value: T) => boolean): Option<number> {\n let index = 0;\n for (const value of this) {\n if (pred(value)) {\n return Some(index);\n }\n index++;\n }\n return None;\n }\n\n // -------------------------------------------------------------------------\n // Aggregation\n // -------------------------------------------------------------------------\n\n fold<U>(init: U, fn: (acc: U, value: T) => U): U {\n let acc = init;\n for (const value of this) {\n acc = fn(acc, value);\n }\n return acc;\n }\n\n reduce(fn: (acc: T, value: T) => T): Option<T> {\n const first = this.next();\n if (first.done) {\n return None;\n }\n let acc = first.value;\n for (const value of this) {\n acc = fn(acc, value);\n }\n return Some(acc);\n }\n\n tryFold<U, E>(init: U, fn: (acc: U, value: T) => Result<U, E>): Result<U, E> {\n let acc = init;\n for (const value of this) {\n const result = fn(acc, value);\n if (result.isErr()) {\n return result;\n }\n acc = result.value;\n }\n return Ok(acc);\n }\n\n count(): number {\n let n = 0;\n for (const _value of this) {\n n++;\n }\n return n;\n }\n\n last(): Option<T> {\n let last: Option<T> = None;\n for (const value of this) {\n last = Some(value);\n }\n return last;\n }\n\n nth(n: number): Option<T> {\n if (n < 0) return None;\n let index = 0;\n for (const value of this) {\n if (index === n) {\n return Some(value);\n }\n index++;\n }\n return None;\n }\n\n partition(pred: (value: T) => boolean): [T[], T[]] {\n const matching: T[] = [];\n const rest: T[] = [];\n for (const value of this) {\n if (pred(value)) {\n matching.push(value);\n } else {\n rest.push(value);\n }\n }\n return [matching, rest];\n }\n\n // -------------------------------------------------------------------------\n // Result integration\n // -------------------------------------------------------------------------\n\n tryMap<U, E>(fn: (value: T) => Result<U, E>): Iter<Result<U, E>> {\n return this.map(fn);\n }\n\n // -------------------------------------------------------------------------\n // Limiting & skipping\n // -------------------------------------------------------------------------\n\n take(n: number): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n let count = 0;\n const iterator = source[Symbol.iterator]();\n while (count < n) {\n const result = iterator.next();\n if (result.done) break;\n yield result.value;\n count++;\n }\n })(),\n );\n }\n\n skip(n: number): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n let count = 0;\n for (const value of source) {\n if (count < n) {\n count++;\n continue;\n }\n yield value;\n }\n })(),\n );\n }\n\n stepBy(step: number): Iter<T> {\n if (step <= 0) {\n throw new Error(\"Iter.stepBy: step must be positive\");\n }\n const source = this;\n return new IterImpl(\n (function* () {\n let index = 0;\n for (const value of source) {\n if (index % step === 0) {\n yield value;\n }\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Enumerating\n // -------------------------------------------------------------------------\n\n enumerate(): Iter<readonly [number, T]> {\n const source = this;\n return new IterImpl(\n (function* () {\n let index = 0;\n for (const value of source) {\n yield [index, value] as const;\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Combining iterators\n // -------------------------------------------------------------------------\n\n zip<U>(other: Iterable<U>): Iter<readonly [T, U]> {\n const source = this;\n return new IterImpl(\n (function* () {\n const otherIter = other[Symbol.iterator]();\n for (const value of source) {\n const otherResult = otherIter.next();\n if (otherResult.done) break;\n yield [value, otherResult.value] as const;\n }\n })(),\n );\n }\n\n chain(other: Iterable<T>): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n yield value;\n }\n for (const value of other) {\n yield value;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Flattening nested iterators\n // -------------------------------------------------------------------------\n\n flatten<U>(this: Iter<Iterable<U>>): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const inner of source) {\n for (const value of inner) {\n yield value;\n }\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Peekable\n // -------------------------------------------------------------------------\n\n peek(): Option<T> {\n if (this.peeked.has) {\n return Some(this.peeked.value as T);\n }\n const result = this.source.next();\n if (result.done) {\n return None;\n }\n this.peeked = { has: true, value: result.value };\n return Some(result.value);\n }\n\n // -------------------------------------------------------------------------\n // Result collection\n // -------------------------------------------------------------------------\n\n collectResult<U, E>(this: Iter<Result<U, E>>): Result<U[], E> {\n const out: U[] = [];\n for (const item of this) {\n if (item.isErr()) {\n return Err(item.error);\n }\n out.push(item.value);\n }\n return Ok(out);\n }\n\n // -------------------------------------------------------------------------\n // Consumption\n // -------------------------------------------------------------------------\n\n forEach(fn: (value: T) => void): void {\n for (const value of this) {\n fn(value);\n }\n }\n\n collect(): T[] {\n const result: T[] = [];\n for (const value of this) {\n result.push(value);\n }\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Iterator protocol\n // -------------------------------------------------------------------------\n\n [Symbol.iterator](): Iterator<T> {\n return this;\n }\n\n next(): IteratorResult<T> {\n // Check peeked value first\n if (this.peeked.has) {\n const value = this.peeked.value as T;\n this.peeked = EMPTY_PEEK;\n return { done: false, value };\n }\n return this.source.next();\n }\n}\n\n// ============================================================================\n// Factory Functions (Public API)\n// ============================================================================\n\n/**\n * Create an Iter from an iterator or iterable source.\n *\n * @example\n * const numbers = iter([1, 2, 3, 4, 5]);\n * const doubled = numbers.map(x => x * 2).collect();\n */\nexport function iter<T>(source: Iterator<T> | Iterable<T>): Iter<T> {\n if (Symbol.iterator in source) {\n return new IterImpl(source[Symbol.iterator]());\n }\n return new IterImpl(source);\n}\n\n/**\n * Create an Iter from an array.\n * Convenience function for the common case of iterating over arrays.\n *\n * @example\n * const items = iterFromArray(['a', 'b', 'c']);\n */\nexport function iterFromArray<T>(arr: readonly T[]): Iter<T> {\n return new IterImpl(arr[Symbol.iterator]());\n}\n\n/**\n * Create an Iter from a generator function.\n * Useful for creating custom lazy sequences.\n *\n * @example\n * const naturals = iterFromGenerator(function* () {\n * let n = 0;\n * while (true) yield n++;\n * });\n * const firstTen = naturals.take(10).collect();\n */\nexport function iterFromGenerator<T>(gen: () => Generator<T>): Iter<T> {\n return new IterImpl(gen());\n}\n\n// ============================================================================\n// Iter Namespace (Static Helpers)\n// ============================================================================\n\nexport const Iter = {\n /**\n * Create an Iter from an iterator or iterable source.\n */\n from: iter,\n\n /**\n * Create an Iter from an array.\n */\n fromArray: iterFromArray,\n\n /**\n * Create an Iter from a generator function.\n */\n fromGenerator: iterFromGenerator,\n\n /**\n * Create an empty iterator.\n */\n empty: <T>(): Iter<T> => new IterImpl((function* () {})()),\n\n /**\n * Create an iterator that yields a single value.\n */\n once: <T>(value: T): Iter<T> =>\n new IterImpl(\n (function* () {\n yield value;\n })(),\n ),\n\n /**\n * Create an iterator that repeats a value n times.\n */\n repeat: <T>(value: T, n: number): Iter<T> =>\n new IterImpl(\n (function* () {\n for (let i = 0; i < n; i++) {\n yield value;\n }\n })(),\n ),\n\n /**\n * Create an iterator over a range of numbers.\n * @param start - Start of the range (inclusive)\n * @param end - End of the range (exclusive)\n * @param step - Step between values (default: 1)\n */\n range: (start: number, end: number, step = 1): Iter<number> =>\n new IterImpl(\n (function* () {\n if (step === 0) {\n throw new Error(\"Iter.range: step must be non-zero\");\n }\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n yield i;\n }\n })(),\n ),\n\n /**\n * Sum all numbers in an iterator.\n */\n sum: (iterator: Iter<number>): number => iterator.fold(0, (acc, x) => acc + x),\n\n /**\n * Multiply all numbers in an iterator.\n */\n product: (iterator: Iter<number>): number => iterator.fold(1, (acc, x) => acc * x),\n\n /**\n * Return the minimum value, or None for empty iterators.\n */\n min: (iterator: Iter<number>): Option<number> => iterator.reduce((a, b) => (a <= b ? a : b)),\n\n /**\n * Return the maximum value, or None for empty iterators.\n */\n max: (iterator: Iter<number>): Option<number> => iterator.reduce((a, b) => (a >= b ? a : b)),\n} as const;\n","/**\n * Async Lazy Iterator: AsyncIter<T>\n *\n * Rust-like async lazy iterator wrapper around JavaScript's native AsyncIterator protocol.\n * Enables composable, memory-efficient async data processing pipelines.\n */\n\nimport { Result, Ok, Err, Option, Some, None } from \"./core\";\n\n// ============================================================================\n// AsyncIter<T> Interface (Public API)\n// ============================================================================\n\nexport interface AsyncIter<T> {\n // Core transformation\n map<U>(fn: (value: T) => U | Promise<U>): AsyncIter<U>;\n filter(pred: (value: T) => boolean | Promise<boolean>): AsyncIter<T>;\n flatMap<U>(fn: (value: T) => Iterable<U> | AsyncIterable<U>): AsyncIter<U>;\n inspect(fn: (value: T) => void | Promise<void>): AsyncIter<T>;\n\n // Peekable adapter (matches Rust's peekable)\n peekable(): PeekableAsyncIter<T>;\n\n // Search\n find(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<T>>;\n findMap<U>(fn: (value: T) => Option<U> | Promise<Option<U>>): Promise<Option<U>>;\n any(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean>;\n all(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean>;\n position(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<number>>;\n\n // Aggregation\n fold<U>(init: U, fn: (acc: U, value: T) => U | Promise<U>): Promise<U>;\n reduce(fn: (acc: T, value: T) => T | Promise<T>): Promise<Option<T>>;\n tryFold<U, E>(\n init: U,\n fn: (acc: U, value: T) => Result<U, E> | Promise<Result<U, E>>,\n ): Promise<Result<U, E>>;\n count(): Promise<number>;\n last(): Promise<Option<T>>;\n nth(n: number): Promise<Option<T>>;\n partition(pred: (value: T) => boolean | Promise<boolean>): Promise<[T[], T[]]>;\n\n // Result integration\n tryMap<U, E>(fn: (value: T) => Result<U, E> | Promise<Result<U, E>>): AsyncIter<Result<U, E>>;\n\n // Limiting & skipping\n take(n: number): AsyncIter<T>;\n skip(n: number): AsyncIter<T>;\n stepBy(step: number): AsyncIter<T>;\n\n // Enumerating (index, value pairs)\n enumerate(): AsyncIter<readonly [number, T]>;\n\n // Combining iterators\n zip<U>(other: AsyncIterable<U>): AsyncIter<readonly [T, U]>;\n chain(other: AsyncIterable<T>): AsyncIter<T>;\n\n // Flattening nested iterators\n flatten<U>(this: AsyncIter<AsyncIterable<U> | Iterable<U>>): AsyncIter<U>;\n\n // Result collection (Rust-like: collect::<Result<Vec<_>, E>>())\n collectResult<U, E>(this: AsyncIter<Result<U, E>>): Promise<Result<U[], E>>;\n\n // Consumption\n forEach(fn: (value: T) => void | Promise<void>): Promise<void>;\n collect(): Promise<T[]>;\n\n // Async iterator protocol compliance\n [Symbol.asyncIterator](): AsyncIterator<T>;\n next(): Promise<IteratorResult<T>>;\n}\n\nexport interface PeekableAsyncIter<T> extends AsyncIter<T> {\n // Peekable (for multi-line parsing)\n peek(): Promise<Option<T>>;\n}\n\n// ============================================================================\n// Internal Implementation\n// ============================================================================\n\n/**\n * Core async iterator implementation using idiomatic TypeScript.\n * Uses async generator functions internally for lazy evaluation.\n */\nclass AsyncIterImpl<T> implements AsyncIter<T> {\n private readonly source: AsyncIterator<T>;\n private peeked: Promise<IteratorResult<T>> | null = null;\n\n constructor(source: AsyncIterator<T>) {\n this.source = source;\n }\n\n // -------------------------------------------------------------------------\n // Core transformation\n // -------------------------------------------------------------------------\n\n map<U>(fn: (value: T) => U | Promise<U>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n yield await fn(value);\n }\n })(),\n );\n }\n\n filter(pred: (value: T) => boolean | Promise<boolean>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n if (await pred(value)) {\n yield value;\n }\n }\n })(),\n );\n }\n\n flatMap<U>(fn: (value: T) => Iterable<U> | AsyncIterable<U>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n const inner = fn(value);\n if (Symbol.asyncIterator in inner) {\n for await (const item of inner) {\n yield item;\n }\n } else {\n for (const item of inner) {\n yield item;\n }\n }\n }\n })(),\n );\n }\n\n inspect(fn: (value: T) => void | Promise<void>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n await fn(value);\n yield value;\n }\n })(),\n );\n }\n\n peekable(): PeekableAsyncIter<T> {\n return this as PeekableAsyncIter<T>;\n }\n\n // -------------------------------------------------------------------------\n // Search\n // -------------------------------------------------------------------------\n\n async find(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<T>> {\n for await (const value of this) {\n if (await pred(value)) {\n return Some(value);\n }\n }\n return None;\n }\n\n async findMap<U>(fn: (value: T) => Option<U> | Promise<Option<U>>): Promise<Option<U>> {\n for await (const value of this) {\n const result = await fn(value);\n if (result.isSome()) {\n return result;\n }\n }\n return None;\n }\n\n async any(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean> {\n for await (const value of this) {\n if (await pred(value)) {\n return true;\n }\n }\n return false;\n }\n\n async all(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean> {\n for await (const value of this) {\n if (!(await pred(value))) {\n return false;\n }\n }\n return true;\n }\n\n async position(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<number>> {\n let index = 0;\n for await (const value of this) {\n if (await pred(value)) {\n return Some(index);\n }\n index++;\n }\n return None;\n }\n\n // -------------------------------------------------------------------------\n // Aggregation\n // -------------------------------------------------------------------------\n\n async fold<U>(init: U, fn: (acc: U, value: T) => U | Promise<U>): Promise<U> {\n let acc = init;\n for await (const value of this) {\n acc = await fn(acc, value);\n }\n return acc;\n }\n\n async reduce(fn: (acc: T, value: T) => T | Promise<T>): Promise<Option<T>> {\n const first = await this.next();\n if (first.done) {\n return None;\n }\n let acc = first.value;\n for await (const value of this) {\n acc = await fn(acc, value);\n }\n return Some(acc);\n }\n\n async tryFold<U, E>(\n init: U,\n fn: (acc: U, value: T) => Result<U, E> | Promise<Result<U, E>>,\n ): Promise<Result<U, E>> {\n let acc = init;\n for await (const value of this) {\n const result = await fn(acc, value);\n if (result.isErr()) {\n return result;\n }\n acc = result.value;\n }\n return Ok(acc);\n }\n\n async count(): Promise<number> {\n let n = 0;\n for await (const _value of this) {\n n++;\n }\n return n;\n }\n\n async last(): Promise<Option<T>> {\n let last: Option<T> = None;\n for await (const value of this) {\n last = Some(value);\n }\n return last;\n }\n\n async nth(n: number): Promise<Option<T>> {\n if (n < 0) return None;\n let index = 0;\n for await (const value of this) {\n if (index === n) {\n return Some(value);\n }\n index++;\n }\n return None;\n }\n\n async partition(pred: (value: T) => boolean | Promise<boolean>): Promise<[T[], T[]]> {\n const matching: T[] = [];\n const rest: T[] = [];\n for await (const value of this) {\n if (await pred(value)) {\n matching.push(value);\n } else {\n rest.push(value);\n }\n }\n return [matching, rest];\n }\n\n // -------------------------------------------------------------------------\n // Result integration\n // -------------------------------------------------------------------------\n\n tryMap<U, E>(fn: (value: T) => Result<U, E> | Promise<Result<U, E>>): AsyncIter<Result<U, E>> {\n return this.map(fn);\n }\n\n // -------------------------------------------------------------------------\n // Limiting & skipping\n // -------------------------------------------------------------------------\n\n take(n: number): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let count = 0;\n const iterator = source[Symbol.asyncIterator]();\n while (count < n) {\n const result = await iterator.next();\n if (result.done) break;\n yield result.value;\n count++;\n }\n })(),\n );\n }\n\n skip(n: number): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let count = 0;\n for await (const value of source) {\n if (count < n) {\n count++;\n continue;\n }\n yield value;\n }\n })(),\n );\n }\n\n stepBy(step: number): AsyncIter<T> {\n if (step <= 0) {\n throw new Error(\"AsyncIter.stepBy: step must be positive\");\n }\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let index = 0;\n for await (const value of source) {\n if (index % step === 0) {\n yield value;\n }\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Enumerating\n // -------------------------------------------------------------------------\n\n enumerate(): AsyncIter<readonly [number, T]> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let index = 0;\n for await (const value of source) {\n yield [index, value] as const;\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Combining iterators\n // -------------------------------------------------------------------------\n\n zip<U>(other: AsyncIterable<U>): AsyncIter<readonly [T, U]> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n const otherIter = other[Symbol.asyncIterator]();\n for await (const value of source) {\n const otherResult = await otherIter.next();\n if (otherResult.done) break;\n yield [value, otherResult.value] as const;\n }\n })(),\n );\n }\n\n chain(other: AsyncIterable<T>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n yield value;\n }\n for await (const value of other) {\n yield value;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Flattening nested iterators\n // -------------------------------------------------------------------------\n\n flatten<U>(this: AsyncIter<AsyncIterable<U> | Iterable<U>>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const inner of source) {\n // Handle both sync and async iterables\n if (Symbol.asyncIterator in inner) {\n for await (const value of inner) {\n yield value;\n }\n } else {\n for (const value of inner) {\n yield value;\n }\n }\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Peekable\n // -------------------------------------------------------------------------\n\n async peek(): Promise<Option<T>> {\n this.peeked ??= this.source.next();\n const result = await this.peeked;\n if (result.done) {\n return None;\n }\n return Some(result.value);\n }\n\n // -------------------------------------------------------------------------\n // Result collection\n // -------------------------------------------------------------------------\n\n async collectResult<U, E>(this: AsyncIter<Result<U, E>>): Promise<Result<U[], E>> {\n const out: U[] = [];\n for await (const item of this) {\n if (item.isErr()) {\n return Err(item.error);\n }\n out.push(item.value);\n }\n return Ok(out);\n }\n\n // -------------------------------------------------------------------------\n // Consumption\n // -------------------------------------------------------------------------\n\n async forEach(fn: (value: T) => void | Promise<void>): Promise<void> {\n for await (const value of this) {\n await fn(value);\n }\n }\n\n async collect(): Promise<T[]> {\n const result: T[] = [];\n for await (const value of this) {\n result.push(value);\n }\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Async iterator protocol\n // -------------------------------------------------------------------------\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n }\n\n next(): Promise<IteratorResult<T>> {\n if (this.peeked) {\n const promise = this.peeked;\n this.peeked = null;\n return promise;\n }\n return this.source.next();\n }\n}\n\n// ============================================================================\n// Factory Functions (Public API)\n// ============================================================================\n\n/**\n * Create an AsyncIter from an async iterator or async iterable source.\n *\n * @example\n * const items = asyncIter(fetchPages());\n * const processed = await items.map(processPage).collect();\n */\nexport function asyncIter<T>(source: AsyncIterator<T> | AsyncIterable<T>): AsyncIter<T> {\n if (Symbol.asyncIterator in source) {\n return new AsyncIterImpl(source[Symbol.asyncIterator]());\n }\n return new AsyncIterImpl(source);\n}\n\n/**\n * Create an AsyncIter from a sync iterable.\n * Useful for lifting sync data into async pipelines.\n *\n * @example\n * const items = asyncIterFromIterable([1, 2, 3]);\n */\nexport function asyncIterFromIterable<T>(source: Iterable<T>): AsyncIter<T> {\n return new AsyncIterImpl(\n (async function* () {\n for (const value of source) {\n yield value;\n }\n })(),\n );\n}\n\n/**\n * Create an AsyncIter from an array.\n * Convenience function for the common case.\n *\n * @example\n * const items = asyncIterFromArray(['a', 'b', 'c']);\n */\nexport function asyncIterFromArray<T>(arr: readonly T[]): AsyncIter<T> {\n return asyncIterFromIterable(arr);\n}\n\n/**\n * Create an AsyncIter from an async generator function.\n * Useful for creating custom lazy async sequences.\n *\n * @example\n * const pages = asyncIterFromGenerator(async function* () {\n * let page = 1;\n * while (true) {\n * const data = await fetchPage(page++);\n * if (data.length === 0) break;\n * yield data;\n * }\n * });\n */\nexport function asyncIterFromGenerator<T>(gen: () => AsyncGenerator<T>): AsyncIter<T> {\n return new AsyncIterImpl(gen());\n}\n\n// ============================================================================\n// AsyncIter Namespace (Static Helpers)\n// ============================================================================\n\nexport const AsyncIter = {\n /**\n * Create an AsyncIter from an async iterator or async iterable source.\n */\n from: asyncIter,\n\n /**\n * Create an AsyncIter from a sync iterable.\n */\n fromIterable: asyncIterFromIterable,\n\n /**\n * Create an AsyncIter from an array.\n */\n fromArray: asyncIterFromArray,\n\n /**\n * Create an AsyncIter from an async generator function.\n */\n fromGenerator: asyncIterFromGenerator,\n\n /**\n * Create an empty async iterator.\n */\n empty: <T>(): AsyncIter<T> => new AsyncIterImpl((async function* () {})()),\n\n /**\n * Create an async iterator that yields a single value.\n */\n once: <T>(value: T): AsyncIter<T> =>\n new AsyncIterImpl(\n (async function* () {\n yield value;\n })(),\n ),\n\n /**\n * Create an async iterator that repeats a value n times.\n */\n repeat: <T>(value: T, n: number): AsyncIter<T> =>\n new AsyncIterImpl(\n (async function* () {\n for (let i = 0; i < n; i++) {\n yield value;\n }\n })(),\n ),\n\n /**\n * Create an async iterator over a range of numbers.\n */\n range: (start: number, end: number, step = 1): AsyncIter<number> =>\n new AsyncIterImpl(\n (async function* () {\n if (step === 0) {\n throw new Error(\"AsyncIter.range: step must be non-zero\");\n }\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n yield i;\n }\n })(),\n ),\n\n /**\n * Sum all numbers in an async iterator.\n */\n sum: (iterator: AsyncIter<number>): Promise<number> => iterator.fold(0, (acc, x) => acc + x),\n\n /**\n * Multiply all numbers in an async iterator.\n */\n product: (iterator: AsyncIter<number>): Promise<number> => iterator.fold(1, (acc, x) => acc * x),\n\n /**\n * Return the minimum value, or None for empty iterators.\n */\n min: (iterator: AsyncIter<number>): Promise<Option<number>> =>\n iterator.reduce((a, b) => (a <= b ? a : b)),\n\n /**\n * Return the maximum value, or None for empty iterators.\n */\n max: (iterator: AsyncIter<number>): Promise<Option<number>> =>\n iterator.reduce((a, b) => (a >= b ? a : b)),\n} as const;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"async-iter-BY_bNd1c.cjs","names":[],"sources":["../src/core.ts","../src/iter.ts","../src/async-iter.ts"],"sourcesContent":["/**\n * Core Algebraic Data Types: Option<T> and Result<T, E>\n *\n * This file merges Result and Option to allow seamless interoperation\n * (converting Result -> Option and vice versa) without circular dependencies.\n */\n\n// ============================================================================\n// Option<T> Definitions\n// ============================================================================\n\nexport interface Some<T> {\n readonly some: true;\n readonly value: T;\n map<U>(fn: (value: T) => U): Option<U>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: () => U, fn: (value: T) => U): U;\n andThen<U>(fn: (value: T) => Option<U>): Option<U>;\n and<U>(other: Option<U>): Option<U>;\n or(other: Option<T>): Option<T>;\n orElse(fn: () => Option<T>): Option<T>;\n xor(other: Option<T>): Option<T>;\n filter(predicate: (value: T) => boolean): Option<T>;\n contains(value: T): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: () => T): T;\n expect(message: string): T;\n match<U>(handlers: { some: (value: T) => U; none: () => U }): U;\n okOr<E>(error: E): Result<T, E>;\n zip<U>(other: Option<U>): Option<readonly [T, U]>;\n /** Flatten nested Option<Option<T>> to Option<T> */\n flatten<U>(this: Option<Option<U>>): Option<U>;\n /** Inspect the value if present, without modifying it */\n inspect(fn: (value: T) => void): Option<T>;\n isSome(): this is Some<T>;\n isNone(): this is None;\n}\n\nexport interface None {\n readonly some: false;\n map<U>(fn: (value: never) => U): Option<U>;\n mapOr<U>(defaultValue: U, fn: (value: never) => U): U;\n mapOrElse<U>(defaultFn: () => U, fn: (value: never) => U): U;\n andThen<U>(fn: (value: never) => Option<U>): Option<U>;\n and<U>(other: Option<U>): None;\n or<T>(other: Option<T>): Option<T>;\n orElse<T>(fn: () => Option<T>): Option<T>;\n xor<T>(other: Option<T>): Option<T>;\n filter(predicate: (value: never) => boolean): None;\n contains(value: unknown): false;\n unwrap(): never;\n unwrapOr<T>(defaultValue: T): T;\n unwrapOrElse<T>(fn: () => T): T;\n expect(message: string): never;\n match<U>(handlers: { some: (value: never) => U; none: () => U }): U;\n okOr<E>(error: E): Result<never, E>;\n zip<U>(other: Option<U>): None;\n /** Flatten nested Option<Option<T>> to Option<T> */\n flatten<U>(this: Option<Option<U>>): Option<U>;\n /** Inspect the value if present, without modifying it */\n inspect(fn: (value: never) => void): Option<never>;\n isSome(): this is Some<never>;\n isNone(): this is None;\n}\n\nexport type Option<T> = Some<T> | None;\n\n// ============================================================================\n// Result<T, E> Definitions\n// ============================================================================\n\nexport interface Ok<T, E = never> {\n readonly ok: true;\n readonly value: T;\n map<U>(fn: (value: T) => U): Result<U, E>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: (error: E) => U, fn: (value: T) => U): U;\n mapErr<F>(fn: (error: E) => F): Result<T, F>;\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E>;\n and<U>(other: Result<U, E>): Result<U, E>;\n or<F>(other: Result<T, F>): Result<T, F>;\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F>;\n contains(value: T): boolean;\n containsErr(error: E): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: (error: E) => T): T;\n expect(message: string): T;\n /** Get the error or throw (panics if Ok) */\n unwrapErr(): E;\n /** Get the error or throw with custom message (panics if Ok) */\n expectErr(message: string): E;\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U;\n /** Convert to Option<T>, discarding the error if any */\n toOption(): Option<T>;\n /** Convert to Option<E>, discarding the value if any */\n err(): Option<E>;\n /** Flatten nested Result<Result<T, E>, E> to Result<T, E> */\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E>;\n /** Inspect the value if Ok, without modifying it */\n inspect(fn: (value: T) => void): Result<T, E>;\n /** Inspect the error if Err, without modifying it */\n inspectErr(fn: (error: E) => void): Result<T, E>;\n isOk(): this is Ok<T, E>;\n isErr(): this is Err<E, T>;\n}\n\nexport interface Err<E, T = never> {\n readonly ok: false;\n readonly error: E;\n map<U>(fn: (value: T) => U): Result<U, E>;\n mapOr<U>(defaultValue: U, fn: (value: T) => U): U;\n mapOrElse<U>(defaultFn: (error: E) => U, fn: (value: T) => U): U;\n mapErr<F>(fn: (error: E) => F): Result<T, F>;\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E>;\n and<U>(other: Result<U, E>): Result<U, E>;\n or<F>(other: Result<T, F>): Result<T, F>;\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F>;\n contains(value: T): boolean;\n containsErr(error: E): boolean;\n unwrap(): T;\n unwrapOr(defaultValue: T): T;\n unwrapOrElse(fn: (error: E) => T): T;\n expect(message: string): T;\n /** Get the error (panics if Ok) */\n unwrapErr(): E;\n /** Get the error or return it (identity for Err) */\n expectErr(message: string): E;\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U;\n /** Convert to Option<T>, discarding the error if any */\n toOption(): Option<T>;\n /** Convert to Option<E>, discarding the value if any */\n err(): Option<E>;\n /** Flatten nested Result<Result<T, E>, E> to Result<T, E> */\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E>;\n /** Inspect the value if Ok, without modifying it */\n inspect(fn: (value: T) => void): Result<T, E>;\n /** Inspect the error if Err, without modifying it */\n inspectErr(fn: (error: E) => void): Result<T, E>;\n isOk(): this is Ok<T, E>;\n isErr(): this is Err<E, T>;\n}\n\nexport type Result<T, E> = Ok<T, E> | Err<E, T>;\n\n// ============================================================================\n// Internal Helper: JSON Stringify for Panic Messages\n// ============================================================================\n\nconst PANIC_STRING_MAX_LENGTH = 200;\n\nexport function toPanicString(value: unknown): string {\n let str: string;\n if (value instanceof Error) {\n str = value.message;\n } else {\n try {\n str = JSON.stringify(value);\n } catch {\n str = String(value);\n }\n }\n if (str.length > PANIC_STRING_MAX_LENGTH) {\n return str.slice(0, PANIC_STRING_MAX_LENGTH) + \"...\";\n }\n return str;\n}\n\n// ============================================================================\n// Option Implementation\n// ============================================================================\n\nclass SomeImpl<T> implements Some<T> {\n readonly some = true as const;\n constructor(readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Option<U> {\n return new SomeImpl(fn(this.value));\n }\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapOrElse<U>(_defaultFn: () => U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n andThen<U>(fn: (value: T) => Option<U>): Option<U> {\n return fn(this.value);\n }\n\n and<U>(other: Option<U>): Option<U> {\n return other;\n }\n\n or(_other: Option<T>): Option<T> {\n return this;\n }\n\n orElse(_fn: () => Option<T>): Option<T> {\n return this;\n }\n\n xor(other: Option<T>): Option<T> {\n return other.isSome() ? NoneValue : this;\n }\n\n filter(predicate: (value: T) => boolean): Option<T> {\n return predicate(this.value) ? this : NoneValue;\n }\n\n contains(value: T): boolean {\n return this.value === value;\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: () => T): T {\n return this.value;\n }\n\n expect(_message: string): T {\n return this.value;\n }\n\n match<U>(handlers: { some: (value: T) => U; none: () => U }): U {\n return handlers.some(this.value);\n }\n\n okOr<E>(_error: E): Result<T, E> {\n return new OkImpl(this.value);\n }\n\n zip<U>(other: Option<U>): Option<readonly [T, U]> {\n return other.isSome() ? new SomeImpl([this.value, other.value] as const) : NoneValue;\n }\n\n flatten<U>(this: Option<Option<U>>): Option<U> {\n return this.unwrap();\n }\n\n inspect(fn: (value: T) => void): Option<T> {\n fn(this.value);\n return this;\n }\n\n isSome(): this is Some<T> {\n return true;\n }\n\n isNone(): this is None {\n return false;\n }\n}\n\nclass NoneImpl implements None {\n readonly some = false as const;\n\n map<U>(_fn: (value: never) => U): Option<U> {\n return this as unknown as Option<U>;\n }\n\n mapOr<U>(defaultValue: U, _fn: (value: never) => U): U {\n return defaultValue;\n }\n\n mapOrElse<U>(defaultFn: () => U, _fn: (value: never) => U): U {\n return defaultFn();\n }\n\n andThen<U>(_fn: (value: never) => Option<U>): Option<U> {\n return this as unknown as Option<U>;\n }\n\n and<U>(_other: Option<U>): None {\n return this;\n }\n\n or<T>(other: Option<T>): Option<T> {\n return other;\n }\n\n orElse<T>(fn: () => Option<T>): Option<T> {\n return fn();\n }\n\n xor<T>(other: Option<T>): Option<T> {\n return other;\n }\n\n filter(_predicate: (value: never) => boolean): None {\n return this;\n }\n\n contains(_value: unknown): false {\n return false;\n }\n\n unwrap(): never {\n throw new Error(\"Called unwrap on None\");\n }\n\n unwrapOr<T>(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse<T>(fn: () => T): T {\n return fn();\n }\n\n expect(message: string): never {\n throw new Error(message);\n }\n\n match<U>(handlers: { some: (value: never) => U; none: () => U }): U {\n return handlers.none();\n }\n\n okOr<E>(error: E): Result<never, E> {\n return new ErrImpl(error);\n }\n\n zip<U>(_other: Option<U>): None {\n return this;\n }\n\n flatten<U>(this: Option<Option<U>>): Option<U> {\n return this as unknown as Option<U>;\n }\n\n inspect(_fn: (value: never) => void): Option<never> {\n return this;\n }\n\n isSome(): this is Some<never> {\n return false;\n }\n\n isNone(): this is None {\n return true;\n }\n}\n\n// Singleton None value (frozen for immutability)\nconst NoneValue: None = Object.freeze(new NoneImpl()) as None;\n\n// ============================================================================\n// Result Implementation\n// ============================================================================\n\nclass OkImpl<T, E = never> implements Ok<T, E> {\n readonly ok = true as const;\n constructor(readonly value: T) {}\n\n map<U>(fn: (value: T) => U): Result<U, E> {\n return new OkImpl(fn(this.value));\n }\n\n mapOr<U>(_defaultValue: U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapOrElse<U>(_defaultFn: (error: E) => U, fn: (value: T) => U): U {\n return fn(this.value);\n }\n\n mapErr<F>(_fn: (error: E) => F): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n andThen<U>(fn: (value: T) => Result<U, E>): Result<U, E> {\n return fn(this.value);\n }\n\n and<U>(other: Result<U, E>): Result<U, E> {\n return other;\n }\n\n or<F>(_other: Result<T, F>): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n orElse<F>(_fn: (error: E) => Result<T, F>): Result<T, F> {\n return this as unknown as Result<T, F>;\n }\n\n contains(value: T): boolean {\n return this.value === value;\n }\n\n containsErr(_error: E): boolean {\n return false;\n }\n\n unwrap(): T {\n return this.value;\n }\n\n unwrapOr(_defaultValue: T): T {\n return this.value;\n }\n\n unwrapOrElse(_fn: (error: E) => T): T {\n return this.value;\n }\n\n expect(_message: string): T {\n return this.value;\n }\n\n unwrapErr(): E {\n throw new Error(`Called unwrapErr on Ok: ${toPanicString(this.value)}`);\n }\n\n expectErr(message: string): E {\n throw new Error(`${message}: ${toPanicString(this.value)}`);\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U {\n return handlers.ok(this.value);\n }\n\n toOption(): Option<T> {\n return new SomeImpl(this.value);\n }\n\n err(): Option<E> {\n return NoneValue;\n }\n\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E> {\n return this.unwrap();\n }\n\n inspect(fn: (value: T) => void): Result<T, E> {\n fn(this.value);\n return this;\n }\n\n inspectErr(_fn: (error: E) => void): Result<T, E> {\n return this;\n }\n\n isOk(): this is Ok<T, E> {\n return true;\n }\n\n isErr(): this is Err<E, T> {\n return false;\n }\n}\n\nclass ErrImpl<E, T = never> implements Err<E, T> {\n readonly ok = false as const;\n constructor(readonly error: E) {}\n\n map<U>(_fn: (value: T) => U): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n mapOr<U>(defaultValue: U, _fn: (value: T) => U): U {\n return defaultValue;\n }\n\n mapOrElse<U>(defaultFn: (error: E) => U, _fn: (value: T) => U): U {\n return defaultFn(this.error);\n }\n\n mapErr<F>(fn: (error: E) => F): Result<T, F> {\n return new ErrImpl(fn(this.error));\n }\n\n andThen<U>(_fn: (value: T) => Result<U, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n and<U>(_other: Result<U, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n or<F>(other: Result<T, F>): Result<T, F> {\n return other;\n }\n\n orElse<F>(fn: (error: E) => Result<T, F>): Result<T, F> {\n return fn(this.error);\n }\n\n contains(_value: T): boolean {\n return false;\n }\n\n containsErr(error: E): boolean {\n return this.error === error;\n }\n\n unwrap(): T {\n throw new Error(`Called unwrap on Err: ${toPanicString(this.error)}`);\n }\n\n unwrapOr(defaultValue: T): T {\n return defaultValue;\n }\n\n unwrapOrElse(fn: (error: E) => T): T {\n return fn(this.error);\n }\n\n expect(message: string): T {\n throw new Error(`${message}: ${toPanicString(this.error)}`);\n }\n\n unwrapErr(): E {\n return this.error;\n }\n\n expectErr(_message: string): E {\n return this.error;\n }\n\n match<U>(handlers: { ok: (value: T) => U; err: (error: E) => U }): U {\n return handlers.err(this.error);\n }\n\n toOption(): Option<T> {\n return NoneValue;\n }\n\n err(): Option<E> {\n return new SomeImpl(this.error);\n }\n\n flatten<U>(this: Result<Result<U, E>, E>): Result<U, E> {\n return this as unknown as Result<U, E>;\n }\n\n inspect(_fn: (value: T) => void): Result<T, E> {\n return this;\n }\n\n inspectErr(fn: (error: E) => void): Result<T, E> {\n fn(this.error);\n return this;\n }\n\n isOk(): this is Ok<T, E> {\n return false;\n }\n\n isErr(): this is Err<E, T> {\n return true;\n }\n}\n\n// ============================================================================\n// Constructors (Public API)\n// ============================================================================\n\nexport const Some = <T>(value: T): Some<T> => new SomeImpl(value);\nexport const None: None = NoneValue;\nexport const Ok = <T, E = never>(value: T): Ok<T, E> => new OkImpl(value);\nexport const Err = <E, T = never>(error: E): Err<E, T> => new ErrImpl(error);\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\nexport const isSome = <T>(option: Option<T>): option is Some<T> => option.some;\nexport const isNone = <T>(option: Option<T>): option is None => !option.some;\nexport const isOk = <T, E>(result: Result<T, E>): result is Ok<T, E> => result.ok;\nexport const isErr = <T, E>(result: Result<T, E>): result is Err<E, T> => !result.ok;\n\n// ============================================================================\n// Namespaces (Static Helpers)\n// ============================================================================\n\nexport const Option = {\n some: Some,\n none: None,\n isSome,\n isNone,\n\n from: <T>(value: T | null | undefined): Option<T> => (value != null ? Some(value) : None),\n\n map: <T, U>(option: Option<T>, fn: (value: T) => U): Option<U> => option.map(fn),\n\n andThen: <T, U>(option: Option<T>, fn: (value: T) => Option<U>): Option<U> => option.andThen(fn),\n\n or: <T>(option: Option<T>, other: Option<T>): Option<T> => option.or(other),\n\n orElse: <T>(option: Option<T>, fn: () => Option<T>): Option<T> => option.orElse(fn),\n\n filter: <T>(option: Option<T>, predicate: (value: T) => boolean): Option<T> =>\n option.some ? option.filter(predicate) : None,\n\n unwrap: <T>(option: Option<T>): T => option.unwrap(),\n\n unwrapOr: <T>(option: Option<T>, defaultValue: T): T => option.unwrapOr(defaultValue),\n\n unwrapOrElse: <T>(option: Option<T>, fn: () => T): T => option.unwrapOrElse(fn),\n\n match: <T, U>(option: Option<T>, handlers: { some: (value: T) => U; none: () => U }): U =>\n option.match(handlers),\n\n zip: <T, U>(a: Option<T>, b: Option<U>): Option<readonly [T, U]> => a.zip(b),\n\n okOr: <T, E>(option: Option<T>, error: E): Result<T, E> =>\n option.some ? Ok(option.value) : Err(error),\n\n flatten: <T>(option: Option<Option<T>>): Option<T> => option.flatten(),\n\n transpose: <T, E>(option: Option<Result<T, E>>): Result<Option<T>, E> => {\n if (option.isSome()) {\n const val = option.unwrap();\n if (val.isOk()) {\n return Ok(Some(val.unwrap()));\n } else {\n return Err(val.unwrapErr());\n }\n }\n return Ok(None);\n },\n\n /**\n * Combine multiple Options into a single Option of an array.\n * Returns None if any Option is None.\n *\n * @example\n * const options = Option.all([Some(1), Some(2), Some(3)]);\n * // Some([1, 2, 3])\n *\n * const withNone = Option.all([Some(1), None, Some(3)]);\n * // None\n */\n all: <T>(options: readonly Option<T>[]): Option<T[]> => {\n const values: T[] = [];\n for (const option of options) {\n if (option.isNone()) {\n return None;\n }\n values.push(option.value);\n }\n return Some(values);\n },\n\n /** Alias for {@link all} — Rust's collect pattern. */\n collect: <T>(options: readonly Option<T>[]): Option<T[]> => Option.all(options),\n} as const;\n\nexport const Result = {\n ok: Ok,\n err: Err,\n isOk,\n isErr,\n\n map: <T, U, E>(result: Result<T, E>, fn: (value: T) => U): Result<U, E> => result.map(fn),\n\n mapErr: <T, E, F>(result: Result<T, E>, fn: (error: E) => F): Result<T, F> => result.mapErr(fn),\n\n andThen: <T, U, E>(result: Result<T, E>, fn: (value: T) => Result<U, E>): Result<U, E> =>\n result.andThen(fn),\n\n orElse: <T, E, F>(result: Result<T, E>, fn: (error: E) => Result<T, F>): Result<T, F> =>\n result.orElse(fn),\n\n unwrap: <T, E>(result: Result<T, E>): T => result.unwrap(),\n\n unwrapOr: <T, E>(result: Result<T, E>, defaultValue: T): T => result.unwrapOr(defaultValue),\n\n unwrapOrElse: <T, E>(result: Result<T, E>, fn: (error: E) => T): T => result.unwrapOrElse(fn),\n\n unwrapErr: <T, E>(result: Result<T, E>): E => result.unwrapErr(),\n\n expectErr: <T, E>(result: Result<T, E>, message: string): E => result.expectErr(message),\n\n match: <T, E, U>(\n result: Result<T, E>,\n handlers: { ok: (value: T) => U; err: (error: E) => U },\n ): U => result.match(handlers),\n\n toOption: <T, E>(result: Result<T, E>): Option<T> => result.toOption(),\n\n fromThrowable: <T, E = unknown>(fn: () => T): Result<T, E> => {\n try {\n return Ok(fn());\n } catch (e) {\n // Cast: TypeScript catch blocks type errors as `unknown`. The caller\n // narrows via the E parameter (defaulting to `unknown`).\n return Err(e as E);\n }\n },\n\n fromPromise: async <T, E = unknown>(promise: Promise<T>): Promise<Result<T, E>> => {\n try {\n return Ok(await promise);\n } catch (e) {\n // Cast: see fromThrowable — caller narrows E via the type parameter.\n return Err(e as E);\n }\n },\n\n flatten: <T, E>(result: Result<Result<T, E>, E>): Result<T, E> => result.flatten(),\n\n transpose: <T, E>(result: Result<Option<T>, E>): Option<Result<T, E>> => {\n if (result.isOk()) {\n const val = result.unwrap();\n if (val.isSome()) {\n return Some(Ok(val.unwrap()));\n } else {\n return None;\n }\n }\n // If Result is Err, we wrap it in Some: Some(Err(e))\n return Some(Err(result.unwrapErr()));\n },\n\n /**\n * Combine multiple Results into a single Result of an array.\n * Short-circuits on the first Err encountered.\n *\n * @example\n * const results = Result.all([Ok(1), Ok(2), Ok(3)]);\n * // Ok([1, 2, 3])\n *\n * const withErr = Result.all([Ok(1), Err(\"failed\"), Ok(3)]);\n * // Err(\"failed\")\n */\n all: <T, E>(results: readonly Result<T, E>[]): Result<T[], E> => {\n const values: T[] = [];\n for (const result of results) {\n if (result.isErr()) {\n return result as unknown as Result<T[], E>;\n }\n values.push(result.value);\n }\n return Ok(values);\n },\n\n /** Alias for {@link all} — Rust's collect pattern. */\n collect: <T, E>(results: readonly Result<T, E>[]): Result<T[], E> => Result.all(results),\n} as const;\n","/**\n * Lazy Iterator: Iter<T>\n *\n * Rust-like lazy iterator wrappers around JavaScript's native Iterator protocol.\n * Enables composable, memory-efficient data processing pipelines.\n */\n\nimport { Option, Some, None, Result, Ok, Err } from \"./core\";\n\n// ============================================================================\n// Iter<T> Interface (Public API)\n// ============================================================================\n\nexport interface Iter<T> {\n // Core transformation\n map<U>(fn: (value: T) => U): Iter<U>;\n filter(pred: (value: T) => boolean): Iter<T>;\n flatMap<U>(fn: (value: T) => Iterable<U>): Iter<U>;\n inspect(fn: (value: T) => void): Iter<T>;\n\n // Peekable adapter (matches Rust's peekable)\n peekable(): PeekableIter<T>;\n\n // Search\n find(pred: (value: T) => boolean): Option<T>;\n findMap<U>(fn: (value: T) => Option<U>): Option<U>;\n any(pred: (value: T) => boolean): boolean;\n all(pred: (value: T) => boolean): boolean;\n position(pred: (value: T) => boolean): Option<number>;\n\n // Aggregation\n fold<U>(init: U, fn: (acc: U, value: T) => U): U;\n reduce(fn: (acc: T, value: T) => T): Option<T>;\n tryFold<U, E>(init: U, fn: (acc: U, value: T) => Result<U, E>): Result<U, E>;\n count(): number;\n last(): Option<T>;\n nth(n: number): Option<T>;\n partition(pred: (value: T) => boolean): [T[], T[]];\n\n // Result integration\n tryMap<U, E>(fn: (value: T) => Result<U, E>): Iter<Result<U, E>>;\n\n // Limiting & skipping\n take(n: number): Iter<T>;\n skip(n: number): Iter<T>;\n stepBy(step: number): Iter<T>;\n\n // Enumerating (index, value pairs)\n enumerate(): Iter<readonly [number, T]>;\n\n // Combining iterators\n zip<U>(other: Iterable<U>): Iter<readonly [T, U]>;\n chain(other: Iterable<T>): Iter<T>;\n\n // Flattening nested iterators\n flatten<U>(this: Iter<Iterable<U>>): Iter<U>;\n\n // Result collection (Rust-like: collect::<Result<Vec<_>, E>>())\n collectResult<U, E>(this: Iter<Result<U, E>>): Result<U[], E>;\n\n // Consumption\n forEach(fn: (value: T) => void): void;\n collect(): T[];\n\n // Iterator protocol compliance\n [Symbol.iterator](): Iterator<T>;\n next(): IteratorResult<T>;\n}\n\nexport interface PeekableIter<T> extends Iter<T> {\n // Peekable (for multi-line parsing)\n peek(): Option<T>;\n}\n\n// ============================================================================\n// Internal Implementation\n// ============================================================================\n\n// Sentinel object for \"no peeked value\" state — reused across all instances.\nconst EMPTY_PEEK: Readonly<{ has: false; value: undefined }> = Object.freeze({\n has: false,\n value: undefined,\n});\n\n/**\n * Core iterator implementation using idiomatic TypeScript.\n * Uses generator functions internally for lazy evaluation.\n */\nclass IterImpl<T> implements Iter<T> {\n private readonly source: Iterator<T>;\n private peeked: { has: boolean; value: T | undefined } = EMPTY_PEEK;\n\n constructor(source: Iterator<T>) {\n this.source = source;\n }\n\n // -------------------------------------------------------------------------\n // Core transformation\n // -------------------------------------------------------------------------\n\n map<U>(fn: (value: T) => U): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n yield fn(value);\n }\n })(),\n );\n }\n\n filter(pred: (value: T) => boolean): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n if (pred(value)) {\n yield value;\n }\n }\n })(),\n );\n }\n\n flatMap<U>(fn: (value: T) => Iterable<U>): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n for (const inner of fn(value)) {\n yield inner;\n }\n }\n })(),\n );\n }\n\n inspect(fn: (value: T) => void): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n fn(value);\n yield value;\n }\n })(),\n );\n }\n\n peekable(): PeekableIter<T> {\n return this as PeekableIter<T>;\n }\n\n // -------------------------------------------------------------------------\n // Search\n // -------------------------------------------------------------------------\n\n find(pred: (value: T) => boolean): Option<T> {\n for (const value of this) {\n if (pred(value)) {\n return Some(value);\n }\n }\n return None;\n }\n\n findMap<U>(fn: (value: T) => Option<U>): Option<U> {\n for (const value of this) {\n const result = fn(value);\n if (result.isSome()) {\n return result;\n }\n }\n return None;\n }\n\n any(pred: (value: T) => boolean): boolean {\n for (const value of this) {\n if (pred(value)) {\n return true;\n }\n }\n return false;\n }\n\n all(pred: (value: T) => boolean): boolean {\n for (const value of this) {\n if (!pred(value)) {\n return false;\n }\n }\n return true;\n }\n\n position(pred: (value: T) => boolean): Option<number> {\n let index = 0;\n for (const value of this) {\n if (pred(value)) {\n return Some(index);\n }\n index++;\n }\n return None;\n }\n\n // -------------------------------------------------------------------------\n // Aggregation\n // -------------------------------------------------------------------------\n\n fold<U>(init: U, fn: (acc: U, value: T) => U): U {\n let acc = init;\n for (const value of this) {\n acc = fn(acc, value);\n }\n return acc;\n }\n\n reduce(fn: (acc: T, value: T) => T): Option<T> {\n const first = this.next();\n if (first.done) {\n return None;\n }\n let acc = first.value;\n for (const value of this) {\n acc = fn(acc, value);\n }\n return Some(acc);\n }\n\n tryFold<U, E>(init: U, fn: (acc: U, value: T) => Result<U, E>): Result<U, E> {\n let acc = init;\n for (const value of this) {\n const result = fn(acc, value);\n if (result.isErr()) {\n return result;\n }\n acc = result.value;\n }\n return Ok(acc);\n }\n\n count(): number {\n let n = 0;\n for (const _value of this) {\n n++;\n }\n return n;\n }\n\n last(): Option<T> {\n let last: Option<T> = None;\n for (const value of this) {\n last = Some(value);\n }\n return last;\n }\n\n nth(n: number): Option<T> {\n if (n < 0) return None;\n let index = 0;\n for (const value of this) {\n if (index === n) {\n return Some(value);\n }\n index++;\n }\n return None;\n }\n\n partition(pred: (value: T) => boolean): [T[], T[]] {\n const matching: T[] = [];\n const rest: T[] = [];\n for (const value of this) {\n if (pred(value)) {\n matching.push(value);\n } else {\n rest.push(value);\n }\n }\n return [matching, rest];\n }\n\n // -------------------------------------------------------------------------\n // Result integration\n // -------------------------------------------------------------------------\n\n tryMap<U, E>(fn: (value: T) => Result<U, E>): Iter<Result<U, E>> {\n return this.map(fn);\n }\n\n // -------------------------------------------------------------------------\n // Limiting & skipping\n // -------------------------------------------------------------------------\n\n take(n: number): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n let count = 0;\n const iterator = source[Symbol.iterator]();\n while (count < n) {\n const result = iterator.next();\n if (result.done) break;\n yield result.value;\n count++;\n }\n })(),\n );\n }\n\n skip(n: number): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n let count = 0;\n for (const value of source) {\n if (count < n) {\n count++;\n continue;\n }\n yield value;\n }\n })(),\n );\n }\n\n stepBy(step: number): Iter<T> {\n if (step <= 0) {\n throw new Error(\"Iter.stepBy: step must be positive\");\n }\n const source = this;\n return new IterImpl(\n (function* () {\n let index = 0;\n for (const value of source) {\n if (index % step === 0) {\n yield value;\n }\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Enumerating\n // -------------------------------------------------------------------------\n\n enumerate(): Iter<readonly [number, T]> {\n const source = this;\n return new IterImpl(\n (function* () {\n let index = 0;\n for (const value of source) {\n yield [index, value] as const;\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Combining iterators\n // -------------------------------------------------------------------------\n\n zip<U>(other: Iterable<U>): Iter<readonly [T, U]> {\n const source = this;\n return new IterImpl(\n (function* () {\n const otherIter = other[Symbol.iterator]();\n for (const value of source) {\n const otherResult = otherIter.next();\n if (otherResult.done) break;\n yield [value, otherResult.value] as const;\n }\n })(),\n );\n }\n\n chain(other: Iterable<T>): Iter<T> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const value of source) {\n yield value;\n }\n for (const value of other) {\n yield value;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Flattening nested iterators\n // -------------------------------------------------------------------------\n\n flatten<U>(this: Iter<Iterable<U>>): Iter<U> {\n const source = this;\n return new IterImpl(\n (function* () {\n for (const inner of source) {\n for (const value of inner) {\n yield value;\n }\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Peekable\n // -------------------------------------------------------------------------\n\n peek(): Option<T> {\n if (this.peeked.has) {\n return Some(this.peeked.value as T);\n }\n const result = this.source.next();\n if (result.done) {\n return None;\n }\n this.peeked = { has: true, value: result.value };\n return Some(result.value);\n }\n\n // -------------------------------------------------------------------------\n // Result collection\n // -------------------------------------------------------------------------\n\n collectResult<U, E>(this: Iter<Result<U, E>>): Result<U[], E> {\n const out: U[] = [];\n for (const item of this) {\n if (item.isErr()) {\n return Err(item.error);\n }\n out.push(item.value);\n }\n return Ok(out);\n }\n\n // -------------------------------------------------------------------------\n // Consumption\n // -------------------------------------------------------------------------\n\n forEach(fn: (value: T) => void): void {\n for (const value of this) {\n fn(value);\n }\n }\n\n collect(): T[] {\n const result: T[] = [];\n for (const value of this) {\n result.push(value);\n }\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Iterator protocol\n // -------------------------------------------------------------------------\n\n [Symbol.iterator](): Iterator<T> {\n return this;\n }\n\n next(): IteratorResult<T> {\n // Check peeked value first\n if (this.peeked.has) {\n const value = this.peeked.value as T;\n this.peeked = EMPTY_PEEK;\n return { done: false, value };\n }\n return this.source.next();\n }\n}\n\n// ============================================================================\n// Factory Functions (Public API)\n// ============================================================================\n\n/**\n * Create an Iter from an iterator or iterable source.\n *\n * @example\n * const numbers = iter([1, 2, 3, 4, 5]);\n * const doubled = numbers.map(x => x * 2).collect();\n */\nexport function iter<T>(source: Iterator<T> | Iterable<T>): Iter<T> {\n if (Symbol.iterator in source) {\n return new IterImpl(source[Symbol.iterator]());\n }\n return new IterImpl(source);\n}\n\n/**\n * Create an Iter from an array.\n * Convenience function for the common case of iterating over arrays.\n *\n * @example\n * const items = iterFromArray(['a', 'b', 'c']);\n */\nexport function iterFromArray<T>(arr: readonly T[]): Iter<T> {\n return new IterImpl(arr[Symbol.iterator]());\n}\n\n/**\n * Create an Iter from a generator function.\n * Useful for creating custom lazy sequences.\n *\n * @example\n * const naturals = iterFromGenerator(function* () {\n * let n = 0;\n * while (true) yield n++;\n * });\n * const firstTen = naturals.take(10).collect();\n */\nexport function iterFromGenerator<T>(gen: () => Generator<T>): Iter<T> {\n return new IterImpl(gen());\n}\n\n// ============================================================================\n// Iter Namespace (Static Helpers)\n// ============================================================================\n\nexport const Iter = {\n /**\n * Create an Iter from an iterator or iterable source.\n */\n from: iter,\n\n /**\n * Create an Iter from an array.\n */\n fromArray: iterFromArray,\n\n /**\n * Create an Iter from a generator function.\n */\n fromGenerator: iterFromGenerator,\n\n /**\n * Create an empty iterator.\n */\n empty: <T>(): Iter<T> => new IterImpl((function* () {})()),\n\n /**\n * Create an iterator that yields a single value.\n */\n once: <T>(value: T): Iter<T> =>\n new IterImpl(\n (function* () {\n yield value;\n })(),\n ),\n\n /**\n * Create an iterator that repeats a value n times.\n */\n repeat: <T>(value: T, n: number): Iter<T> =>\n new IterImpl(\n (function* () {\n for (let i = 0; i < n; i++) {\n yield value;\n }\n })(),\n ),\n\n /**\n * Create an iterator over a range of numbers.\n * @param start - Start of the range (inclusive)\n * @param end - End of the range (exclusive)\n * @param step - Step between values (default: 1)\n */\n range: (start: number, end: number, step = 1): Iter<number> =>\n new IterImpl(\n (function* () {\n if (step === 0) {\n throw new Error(\"Iter.range: step must be non-zero\");\n }\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n yield i;\n }\n })(),\n ),\n\n /**\n * Sum all numbers in an iterator.\n */\n sum: (iterator: Iter<number>): number => iterator.fold(0, (acc, x) => acc + x),\n\n /**\n * Multiply all numbers in an iterator.\n */\n product: (iterator: Iter<number>): number => iterator.fold(1, (acc, x) => acc * x),\n\n /**\n * Return the minimum value, or None for empty iterators.\n */\n min: (iterator: Iter<number>): Option<number> => iterator.reduce((a, b) => (a <= b ? a : b)),\n\n /**\n * Return the maximum value, or None for empty iterators.\n */\n max: (iterator: Iter<number>): Option<number> => iterator.reduce((a, b) => (a >= b ? a : b)),\n} as const;\n","/**\n * Async Lazy Iterator: AsyncIter<T>\n *\n * Rust-like async lazy iterator wrapper around JavaScript's native AsyncIterator protocol.\n * Enables composable, memory-efficient async data processing pipelines.\n */\n\nimport { Result, Ok, Err, Option, Some, None } from \"./core\";\n\n// ============================================================================\n// AsyncIter<T> Interface (Public API)\n// ============================================================================\n\nexport interface AsyncIter<T> {\n // Core transformation\n map<U>(fn: (value: T) => U | Promise<U>): AsyncIter<U>;\n filter(pred: (value: T) => boolean | Promise<boolean>): AsyncIter<T>;\n flatMap<U>(fn: (value: T) => Iterable<U> | AsyncIterable<U>): AsyncIter<U>;\n inspect(fn: (value: T) => void | Promise<void>): AsyncIter<T>;\n\n // Peekable adapter (matches Rust's peekable)\n peekable(): PeekableAsyncIter<T>;\n\n // Search\n find(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<T>>;\n findMap<U>(fn: (value: T) => Option<U> | Promise<Option<U>>): Promise<Option<U>>;\n any(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean>;\n all(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean>;\n position(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<number>>;\n\n // Aggregation\n fold<U>(init: U, fn: (acc: U, value: T) => U | Promise<U>): Promise<U>;\n reduce(fn: (acc: T, value: T) => T | Promise<T>): Promise<Option<T>>;\n tryFold<U, E>(\n init: U,\n fn: (acc: U, value: T) => Result<U, E> | Promise<Result<U, E>>,\n ): Promise<Result<U, E>>;\n count(): Promise<number>;\n last(): Promise<Option<T>>;\n nth(n: number): Promise<Option<T>>;\n partition(pred: (value: T) => boolean | Promise<boolean>): Promise<[T[], T[]]>;\n\n // Result integration\n tryMap<U, E>(fn: (value: T) => Result<U, E> | Promise<Result<U, E>>): AsyncIter<Result<U, E>>;\n\n // Limiting & skipping\n take(n: number): AsyncIter<T>;\n skip(n: number): AsyncIter<T>;\n stepBy(step: number): AsyncIter<T>;\n\n // Enumerating (index, value pairs)\n enumerate(): AsyncIter<readonly [number, T]>;\n\n // Combining iterators\n zip<U>(other: AsyncIterable<U>): AsyncIter<readonly [T, U]>;\n chain(other: AsyncIterable<T>): AsyncIter<T>;\n\n // Flattening nested iterators\n flatten<U>(this: AsyncIter<AsyncIterable<U> | Iterable<U>>): AsyncIter<U>;\n\n // Result collection (Rust-like: collect::<Result<Vec<_>, E>>())\n collectResult<U, E>(this: AsyncIter<Result<U, E>>): Promise<Result<U[], E>>;\n\n // Consumption\n forEach(fn: (value: T) => void | Promise<void>): Promise<void>;\n collect(): Promise<T[]>;\n\n // Async iterator protocol compliance\n [Symbol.asyncIterator](): AsyncIterator<T>;\n next(): Promise<IteratorResult<T>>;\n}\n\nexport interface PeekableAsyncIter<T> extends AsyncIter<T> {\n // Peekable (for multi-line parsing)\n peek(): Promise<Option<T>>;\n}\n\n// ============================================================================\n// Internal Implementation\n// ============================================================================\n\n/**\n * Core async iterator implementation using idiomatic TypeScript.\n * Uses async generator functions internally for lazy evaluation.\n */\nclass AsyncIterImpl<T> implements AsyncIter<T> {\n private readonly source: AsyncIterator<T>;\n private peeked: Promise<IteratorResult<T>> | null = null;\n\n constructor(source: AsyncIterator<T>) {\n this.source = source;\n }\n\n // -------------------------------------------------------------------------\n // Core transformation\n // -------------------------------------------------------------------------\n\n map<U>(fn: (value: T) => U | Promise<U>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n yield await fn(value);\n }\n })(),\n );\n }\n\n filter(pred: (value: T) => boolean | Promise<boolean>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n if (await pred(value)) {\n yield value;\n }\n }\n })(),\n );\n }\n\n flatMap<U>(fn: (value: T) => Iterable<U> | AsyncIterable<U>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n const inner = fn(value);\n if (Symbol.asyncIterator in inner) {\n for await (const item of inner) {\n yield item;\n }\n } else {\n for (const item of inner) {\n yield item;\n }\n }\n }\n })(),\n );\n }\n\n inspect(fn: (value: T) => void | Promise<void>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n await fn(value);\n yield value;\n }\n })(),\n );\n }\n\n peekable(): PeekableAsyncIter<T> {\n return this as PeekableAsyncIter<T>;\n }\n\n // -------------------------------------------------------------------------\n // Search\n // -------------------------------------------------------------------------\n\n async find(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<T>> {\n for await (const value of this) {\n if (await pred(value)) {\n return Some(value);\n }\n }\n return None;\n }\n\n async findMap<U>(fn: (value: T) => Option<U> | Promise<Option<U>>): Promise<Option<U>> {\n for await (const value of this) {\n const result = await fn(value);\n if (result.isSome()) {\n return result;\n }\n }\n return None;\n }\n\n async any(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean> {\n for await (const value of this) {\n if (await pred(value)) {\n return true;\n }\n }\n return false;\n }\n\n async all(pred: (value: T) => boolean | Promise<boolean>): Promise<boolean> {\n for await (const value of this) {\n if (!(await pred(value))) {\n return false;\n }\n }\n return true;\n }\n\n async position(pred: (value: T) => boolean | Promise<boolean>): Promise<Option<number>> {\n let index = 0;\n for await (const value of this) {\n if (await pred(value)) {\n return Some(index);\n }\n index++;\n }\n return None;\n }\n\n // -------------------------------------------------------------------------\n // Aggregation\n // -------------------------------------------------------------------------\n\n async fold<U>(init: U, fn: (acc: U, value: T) => U | Promise<U>): Promise<U> {\n let acc = init;\n for await (const value of this) {\n acc = await fn(acc, value);\n }\n return acc;\n }\n\n async reduce(fn: (acc: T, value: T) => T | Promise<T>): Promise<Option<T>> {\n const first = await this.next();\n if (first.done) {\n return None;\n }\n let acc = first.value;\n for await (const value of this) {\n acc = await fn(acc, value);\n }\n return Some(acc);\n }\n\n async tryFold<U, E>(\n init: U,\n fn: (acc: U, value: T) => Result<U, E> | Promise<Result<U, E>>,\n ): Promise<Result<U, E>> {\n let acc = init;\n for await (const value of this) {\n const result = await fn(acc, value);\n if (result.isErr()) {\n return result;\n }\n acc = result.value;\n }\n return Ok(acc);\n }\n\n async count(): Promise<number> {\n let n = 0;\n for await (const _value of this) {\n n++;\n }\n return n;\n }\n\n async last(): Promise<Option<T>> {\n let last: Option<T> = None;\n for await (const value of this) {\n last = Some(value);\n }\n return last;\n }\n\n async nth(n: number): Promise<Option<T>> {\n if (n < 0) return None;\n let index = 0;\n for await (const value of this) {\n if (index === n) {\n return Some(value);\n }\n index++;\n }\n return None;\n }\n\n async partition(pred: (value: T) => boolean | Promise<boolean>): Promise<[T[], T[]]> {\n const matching: T[] = [];\n const rest: T[] = [];\n for await (const value of this) {\n if (await pred(value)) {\n matching.push(value);\n } else {\n rest.push(value);\n }\n }\n return [matching, rest];\n }\n\n // -------------------------------------------------------------------------\n // Result integration\n // -------------------------------------------------------------------------\n\n tryMap<U, E>(fn: (value: T) => Result<U, E> | Promise<Result<U, E>>): AsyncIter<Result<U, E>> {\n return this.map(fn);\n }\n\n // -------------------------------------------------------------------------\n // Limiting & skipping\n // -------------------------------------------------------------------------\n\n take(n: number): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let count = 0;\n const iterator = source[Symbol.asyncIterator]();\n while (count < n) {\n const result = await iterator.next();\n if (result.done) break;\n yield result.value;\n count++;\n }\n })(),\n );\n }\n\n skip(n: number): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let count = 0;\n for await (const value of source) {\n if (count < n) {\n count++;\n continue;\n }\n yield value;\n }\n })(),\n );\n }\n\n stepBy(step: number): AsyncIter<T> {\n if (step <= 0) {\n throw new Error(\"AsyncIter.stepBy: step must be positive\");\n }\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let index = 0;\n for await (const value of source) {\n if (index % step === 0) {\n yield value;\n }\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Enumerating\n // -------------------------------------------------------------------------\n\n enumerate(): AsyncIter<readonly [number, T]> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n let index = 0;\n for await (const value of source) {\n yield [index, value] as const;\n index++;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Combining iterators\n // -------------------------------------------------------------------------\n\n zip<U>(other: AsyncIterable<U>): AsyncIter<readonly [T, U]> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n const otherIter = other[Symbol.asyncIterator]();\n for await (const value of source) {\n const otherResult = await otherIter.next();\n if (otherResult.done) break;\n yield [value, otherResult.value] as const;\n }\n })(),\n );\n }\n\n chain(other: AsyncIterable<T>): AsyncIter<T> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const value of source) {\n yield value;\n }\n for await (const value of other) {\n yield value;\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Flattening nested iterators\n // -------------------------------------------------------------------------\n\n flatten<U>(this: AsyncIter<AsyncIterable<U> | Iterable<U>>): AsyncIter<U> {\n const source = this;\n return new AsyncIterImpl(\n (async function* () {\n for await (const inner of source) {\n // Handle both sync and async iterables\n if (Symbol.asyncIterator in inner) {\n for await (const value of inner) {\n yield value;\n }\n } else {\n for (const value of inner) {\n yield value;\n }\n }\n }\n })(),\n );\n }\n\n // -------------------------------------------------------------------------\n // Peekable\n // -------------------------------------------------------------------------\n\n async peek(): Promise<Option<T>> {\n this.peeked ??= this.source.next();\n const result = await this.peeked;\n if (result.done) {\n return None;\n }\n return Some(result.value);\n }\n\n // -------------------------------------------------------------------------\n // Result collection\n // -------------------------------------------------------------------------\n\n async collectResult<U, E>(this: AsyncIter<Result<U, E>>): Promise<Result<U[], E>> {\n const out: U[] = [];\n for await (const item of this) {\n if (item.isErr()) {\n return Err(item.error);\n }\n out.push(item.value);\n }\n return Ok(out);\n }\n\n // -------------------------------------------------------------------------\n // Consumption\n // -------------------------------------------------------------------------\n\n async forEach(fn: (value: T) => void | Promise<void>): Promise<void> {\n for await (const value of this) {\n await fn(value);\n }\n }\n\n async collect(): Promise<T[]> {\n const result: T[] = [];\n for await (const value of this) {\n result.push(value);\n }\n return result;\n }\n\n // -------------------------------------------------------------------------\n // Async iterator protocol\n // -------------------------------------------------------------------------\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this;\n }\n\n next(): Promise<IteratorResult<T>> {\n if (this.peeked) {\n const promise = this.peeked;\n this.peeked = null;\n return promise;\n }\n return this.source.next();\n }\n}\n\n// ============================================================================\n// Factory Functions (Public API)\n// ============================================================================\n\n/**\n * Create an AsyncIter from an async iterator or async iterable source.\n *\n * @example\n * const items = asyncIter(fetchPages());\n * const processed = await items.map(processPage).collect();\n */\nexport function asyncIter<T>(source: AsyncIterator<T> | AsyncIterable<T>): AsyncIter<T> {\n if (Symbol.asyncIterator in source) {\n return new AsyncIterImpl(source[Symbol.asyncIterator]());\n }\n return new AsyncIterImpl(source);\n}\n\n/**\n * Create an AsyncIter from a sync iterable.\n * Useful for lifting sync data into async pipelines.\n *\n * @example\n * const items = asyncIterFromIterable([1, 2, 3]);\n */\nexport function asyncIterFromIterable<T>(source: Iterable<T>): AsyncIter<T> {\n return new AsyncIterImpl(\n (async function* () {\n for (const value of source) {\n yield value;\n }\n })(),\n );\n}\n\n/**\n * Create an AsyncIter from an array.\n * Convenience function for the common case.\n *\n * @example\n * const items = asyncIterFromArray(['a', 'b', 'c']);\n */\nexport function asyncIterFromArray<T>(arr: readonly T[]): AsyncIter<T> {\n return asyncIterFromIterable(arr);\n}\n\n/**\n * Create an AsyncIter from an async generator function.\n * Useful for creating custom lazy async sequences.\n *\n * @example\n * const pages = asyncIterFromGenerator(async function* () {\n * let page = 1;\n * while (true) {\n * const data = await fetchPage(page++);\n * if (data.length === 0) break;\n * yield data;\n * }\n * });\n */\nexport function asyncIterFromGenerator<T>(gen: () => AsyncGenerator<T>): AsyncIter<T> {\n return new AsyncIterImpl(gen());\n}\n\n// ============================================================================\n// AsyncIter Namespace (Static Helpers)\n// ============================================================================\n\nexport const AsyncIter = {\n /**\n * Create an AsyncIter from an async iterator or async iterable source.\n */\n from: asyncIter,\n\n /**\n * Create an AsyncIter from a sync iterable.\n */\n fromIterable: asyncIterFromIterable,\n\n /**\n * Create an AsyncIter from an array.\n */\n fromArray: asyncIterFromArray,\n\n /**\n * Create an AsyncIter from an async generator function.\n */\n fromGenerator: asyncIterFromGenerator,\n\n /**\n * Create an empty async iterator.\n */\n empty: <T>(): AsyncIter<T> => new AsyncIterImpl((async function* () {})()),\n\n /**\n * Create an async iterator that yields a single value.\n */\n once: <T>(value: T): AsyncIter<T> =>\n new AsyncIterImpl(\n (async function* () {\n yield value;\n })(),\n ),\n\n /**\n * Create an async iterator that repeats a value n times.\n */\n repeat: <T>(value: T, n: number): AsyncIter<T> =>\n new AsyncIterImpl(\n (async function* () {\n for (let i = 0; i < n; i++) {\n yield value;\n }\n })(),\n ),\n\n /**\n * Create an async iterator over a range of numbers.\n */\n range: (start: number, end: number, step = 1): AsyncIter<number> =>\n new AsyncIterImpl(\n (async function* () {\n if (step === 0) {\n throw new Error(\"AsyncIter.range: step must be non-zero\");\n }\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n yield i;\n }\n })(),\n ),\n\n /**\n * Sum all numbers in an async iterator.\n */\n sum: (iterator: AsyncIter<number>): Promise<number> => iterator.fold(0, (acc, x) => acc + x),\n\n /**\n * Multiply all numbers in an async iterator.\n */\n product: (iterator: AsyncIter<number>): Promise<number> => iterator.fold(1, (acc, x) => acc * x),\n\n /**\n * Return the minimum value, or None for empty iterators.\n */\n min: (iterator: AsyncIter<number>): Promise<Option<number>> =>\n iterator.reduce((a, b) => (a <= b ? a : b)),\n\n /**\n * Return the maximum value, or None for empty iterators.\n */\n max: (iterator: AsyncIter<number>): Promise<Option<number>> =>\n iterator.reduce((a, b) => (a >= b ? a : b)),\n} as const;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e){let t;if(e instanceof Error)t=e.message;else try{t=JSON.stringify(e)}catch{t=String(e)}return t.length>200?t.slice(0,200)+`...`:t}var t=class e{constructor(e){this.value=e,this.some=!0}map(t){return new e(t(this.value))}mapOr(e,t){return t(this.value)}mapOrElse(e,t){return t(this.value)}andThen(e){return e(this.value)}and(e){return e}or(e){return this}orElse(e){return this}xor(e){return e.isSome()?r:this}filter(e){return e(this.value)?this:r}contains(e){return this.value===e}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}expect(e){return this.value}match(e){return e.some(this.value)}okOr(e){return new i(this.value)}zip(t){return t.isSome()?new e([this.value,t.value]):r}flatten(){return this.unwrap()}inspect(e){return e(this.value),this}isSome(){return!0}isNone(){return!1}},n=class{constructor(){this.some=!1}map(e){return this}mapOr(e,t){return e}mapOrElse(e,t){return e()}andThen(e){return this}and(e){return this}or(e){return e}orElse(e){return e()}xor(e){return e}filter(e){return this}contains(e){return!1}unwrap(){throw Error(`Called unwrap on None`)}unwrapOr(e){return e}unwrapOrElse(e){return e()}expect(e){throw Error(e)}match(e){return e.none()}okOr(e){return new a(e)}zip(e){return this}flatten(){return this}inspect(e){return this}isSome(){return!1}isNone(){return!0}};const r=Object.freeze(new n);var i=class n{constructor(e){this.value=e,this.ok=!0}map(e){return new n(e(this.value))}mapOr(e,t){return t(this.value)}mapOrElse(e,t){return t(this.value)}mapErr(e){return this}andThen(e){return e(this.value)}and(e){return e}or(e){return this}orElse(e){return this}contains(e){return this.value===e}containsErr(e){return!1}unwrap(){return this.value}unwrapOr(e){return this.value}unwrapOrElse(e){return this.value}expect(e){return this.value}unwrapErr(){throw Error(`Called unwrapErr on Ok: ${e(this.value)}`)}expectErr(t){throw Error(`${t}: ${e(this.value)}`)}match(e){return e.ok(this.value)}toOption(){return new t(this.value)}err(){return r}flatten(){return this.unwrap()}inspect(e){return e(this.value),this}inspectErr(e){return this}isOk(){return!0}isErr(){return!1}},a=class n{constructor(e){this.error=e,this.ok=!1}map(e){return this}mapOr(e,t){return e}mapOrElse(e,t){return e(this.error)}mapErr(e){return new n(e(this.error))}andThen(e){return this}and(e){return this}or(e){return e}orElse(e){return e(this.error)}contains(e){return!1}containsErr(e){return this.error===e}unwrap(){throw Error(`Called unwrap on Err: ${e(this.error)}`)}unwrapOr(e){return e}unwrapOrElse(e){return e(this.error)}expect(t){throw Error(`${t}: ${e(this.error)}`)}unwrapErr(){return this.error}expectErr(e){return this.error}match(e){return e.err(this.error)}toOption(){return r}err(){return new t(this.error)}flatten(){return this}inspect(e){return this}inspectErr(e){return e(this.error),this}isOk(){return!1}isErr(){return!0}};const o=e=>new t(e),s=r,c=e=>new i(e),l=e=>new a(e),u=e=>e.some,d=e=>!e.some,f=e=>e.ok,p=e=>!e.ok,m={some:o,none:s,isSome:u,isNone:d,from:e=>e==null?s:o(e),map:(e,t)=>e.map(t),andThen:(e,t)=>e.andThen(t),or:(e,t)=>e.or(t),orElse:(e,t)=>e.orElse(t),filter:(e,t)=>e.some?e.filter(t):s,unwrap:e=>e.unwrap(),unwrapOr:(e,t)=>e.unwrapOr(t),unwrapOrElse:(e,t)=>e.unwrapOrElse(t),match:(e,t)=>e.match(t),zip:(e,t)=>e.zip(t),okOr:(e,t)=>e.some?c(e.value):l(t),flatten:e=>e.flatten(),transpose:e=>{if(e.isSome()){let t=e.unwrap();return t.isOk()?c(o(t.unwrap())):l(t.unwrapErr())}return c(s)},all:e=>{let t=[];for(let n of e){if(n.isNone())return s;t.push(n.value)}return o(t)},collect:e=>m.all(e)},h={ok:c,err:l,isOk:f,isErr:p,map:(e,t)=>e.map(t),mapErr:(e,t)=>e.mapErr(t),andThen:(e,t)=>e.andThen(t),orElse:(e,t)=>e.orElse(t),unwrap:e=>e.unwrap(),unwrapOr:(e,t)=>e.unwrapOr(t),unwrapOrElse:(e,t)=>e.unwrapOrElse(t),unwrapErr:e=>e.unwrapErr(),expectErr:(e,t)=>e.expectErr(t),match:(e,t)=>e.match(t),toOption:e=>e.toOption(),fromThrowable:e=>{try{return c(e())}catch(e){return l(e)}},fromPromise:async e=>{try{return c(await e)}catch(e){return l(e)}},flatten:e=>e.flatten(),transpose:e=>{if(e.isOk()){let t=e.unwrap();return t.isSome()?o(c(t.unwrap())):s}return o(l(e.unwrapErr()))},all:e=>{let t=[];for(let n of e){if(n.isErr())return n;t.push(n.value)}return c(t)},collect:e=>h.all(e)},g=Object.freeze({has:!1,value:void 0});var _=class e{constructor(e){this.peeked=g,this.source=e}map(t){let n=this;return new e((function*(){for(let e of n)yield t(e)})())}filter(t){let n=this;return new e((function*(){for(let e of n)t(e)&&(yield e)})())}flatMap(t){let n=this;return new e((function*(){for(let e of n)for(let n of t(e))yield n})())}inspect(t){let n=this;return new e((function*(){for(let e of n)t(e),yield e})())}peekable(){return this}find(e){for(let t of this)if(e(t))return o(t);return s}findMap(e){for(let t of this){let n=e(t);if(n.isSome())return n}return s}any(e){for(let t of this)if(e(t))return!0;return!1}all(e){for(let t of this)if(!e(t))return!1;return!0}position(e){let t=0;for(let n of this){if(e(n))return o(t);t++}return s}fold(e,t){let n=e;for(let e of this)n=t(n,e);return n}reduce(e){let t=this.next();if(t.done)return s;let n=t.value;for(let t of this)n=e(n,t);return o(n)}tryFold(e,t){let n=e;for(let e of this){let r=t(n,e);if(r.isErr())return r;n=r.value}return c(n)}count(){let e=0;for(let t of this)e++;return e}last(){let e=s;for(let t of this)e=o(t);return e}nth(e){if(e<0)return s;let t=0;for(let n of this){if(t===e)return o(n);t++}return s}partition(e){let t=[],n=[];for(let r of this)e(r)?t.push(r):n.push(r);return[t,n]}tryMap(e){return this.map(e)}take(t){let n=this;return new e((function*(){let e=0,r=n[Symbol.iterator]();for(;e<t;){let t=r.next();if(t.done)break;yield t.value,e++}})())}skip(t){let n=this;return new e((function*(){let e=0;for(let r of n){if(e<t){e++;continue}yield r}})())}stepBy(t){if(t<=0)throw Error(`Iter.stepBy: step must be positive`);let n=this;return new e((function*(){let e=0;for(let r of n)e%t===0&&(yield r),e++})())}enumerate(){let t=this;return new e((function*(){let e=0;for(let n of t)yield[e,n],e++})())}zip(t){let n=this;return new e((function*(){let e=t[Symbol.iterator]();for(let t of n){let n=e.next();if(n.done)break;yield[t,n.value]}})())}chain(t){let n=this;return new e((function*(){for(let e of n)yield e;for(let e of t)yield e})())}flatten(){let t=this;return new e((function*(){for(let e of t)for(let t of e)yield t})())}peek(){if(this.peeked.has)return o(this.peeked.value);let e=this.source.next();return e.done?s:(this.peeked={has:!0,value:e.value},o(e.value))}collectResult(){let e=[];for(let t of this){if(t.isErr())return l(t.error);e.push(t.value)}return c(e)}forEach(e){for(let t of this)e(t)}collect(){let e=[];for(let t of this)e.push(t);return e}[Symbol.iterator](){return this}next(){if(this.peeked.has){let e=this.peeked.value;return this.peeked=g,{done:!1,value:e}}return this.source.next()}};function v(e){return Symbol.iterator in e?new _(e[Symbol.iterator]()):new _(e)}function y(e){return new _(e[Symbol.iterator]())}function b(e){return new _(e())}const x={from:v,fromArray:y,fromGenerator:b,empty:()=>new _((function*(){})()),once:e=>new _((function*(){yield e})()),repeat:(e,t)=>new _((function*(){for(let n=0;n<t;n++)yield e})()),range:(e,t,n=1)=>new _((function*(){if(n===0)throw Error(`Iter.range: step must be non-zero`);for(let r=e;n>0?r<t:r>t;r+=n)yield r})()),sum:e=>e.fold(0,(e,t)=>e+t),product:e=>e.fold(1,(e,t)=>e*t),min:e=>e.reduce((e,t)=>e<=t?e:t),max:e=>e.reduce((e,t)=>e>=t?e:t)};var S=class e{constructor(e){this.peeked=null,this.source=e}map(t){let n=this;return new e((async function*(){for await(let e of n)yield await t(e)})())}filter(t){let n=this;return new e((async function*(){for await(let e of n)await t(e)&&(yield e)})())}flatMap(t){let n=this;return new e((async function*(){for await(let e of n){let n=t(e);if(Symbol.asyncIterator in n)for await(let e of n)yield e;else for(let e of n)yield e}})())}inspect(t){let n=this;return new e((async function*(){for await(let e of n)await t(e),yield e})())}peekable(){return this}async find(e){for await(let t of this)if(await e(t))return o(t);return s}async findMap(e){for await(let t of this){let n=await e(t);if(n.isSome())return n}return s}async any(e){for await(let t of this)if(await e(t))return!0;return!1}async all(e){for await(let t of this)if(!await e(t))return!1;return!0}async position(e){let t=0;for await(let n of this){if(await e(n))return o(t);t++}return s}async fold(e,t){let n=e;for await(let e of this)n=await t(n,e);return n}async reduce(e){let t=await this.next();if(t.done)return s;let n=t.value;for await(let t of this)n=await e(n,t);return o(n)}async tryFold(e,t){let n=e;for await(let e of this){let r=await t(n,e);if(r.isErr())return r;n=r.value}return c(n)}async count(){let e=0;for await(let t of this)e++;return e}async last(){let e=s;for await(let t of this)e=o(t);return e}async nth(e){if(e<0)return s;let t=0;for await(let n of this){if(t===e)return o(n);t++}return s}async partition(e){let t=[],n=[];for await(let r of this)await e(r)?t.push(r):n.push(r);return[t,n]}tryMap(e){return this.map(e)}take(t){let n=this;return new e((async function*(){let e=0,r=n[Symbol.asyncIterator]();for(;e<t;){let t=await r.next();if(t.done)break;yield t.value,e++}})())}skip(t){let n=this;return new e((async function*(){let e=0;for await(let r of n){if(e<t){e++;continue}yield r}})())}stepBy(t){if(t<=0)throw Error(`AsyncIter.stepBy: step must be positive`);let n=this;return new e((async function*(){let e=0;for await(let r of n)e%t===0&&(yield r),e++})())}enumerate(){let t=this;return new e((async function*(){let e=0;for await(let n of t)yield[e,n],e++})())}zip(t){let n=this;return new e((async function*(){let e=t[Symbol.asyncIterator]();for await(let t of n){let n=await e.next();if(n.done)break;yield[t,n.value]}})())}chain(t){let n=this;return new e((async function*(){for await(let e of n)yield e;for await(let e of t)yield e})())}flatten(){let t=this;return new e((async function*(){for await(let e of t)if(Symbol.asyncIterator in e)for await(let t of e)yield t;else for(let t of e)yield t})())}async peek(){this.peeked??=this.source.next();let e=await this.peeked;return e.done?s:o(e.value)}async collectResult(){let e=[];for await(let t of this){if(t.isErr())return l(t.error);e.push(t.value)}return c(e)}async forEach(e){for await(let t of this)await e(t)}async collect(){let e=[];for await(let t of this)e.push(t);return e}[Symbol.asyncIterator](){return this}next(){if(this.peeked){let e=this.peeked;return this.peeked=null,e}return this.source.next()}};function C(e){return Symbol.asyncIterator in e?new S(e[Symbol.asyncIterator]()):new S(e)}function w(e){return new S((async function*(){for(let t of e)yield t})())}function T(e){return w(e)}function E(e){return new S(e())}const D={from:C,fromIterable:w,fromArray:T,fromGenerator:E,empty:()=>new S((async function*(){})()),once:e=>new S((async function*(){yield e})()),repeat:(e,t)=>new S((async function*(){for(let n=0;n<t;n++)yield e})()),range:(e,t,n=1)=>new S((async function*(){if(n===0)throw Error(`AsyncIter.range: step must be non-zero`);for(let r=e;n>0?r<t:r>t;r+=n)yield r})()),sum:e=>e.fold(0,(e,t)=>e+t),product:e=>e.fold(1,(e,t)=>e*t),min:e=>e.reduce((e,t)=>e<=t?e:t),max:e=>e.reduce((e,t)=>e>=t?e:t)};export{d as _,w as a,e as b,y as c,s as d,c as f,p as g,o as h,E as i,b as l,h as m,C as n,x as o,m as p,T as r,v as s,D as t,l as u,f as v,u as y};
|
|
2
|
+
//# sourceMappingURL=async-iter-D51Pm8tA.mjs.map
|