@tsonic/js-globals 0.2.3 → 0.3.0

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.
Files changed (2) hide show
  1. package/index.d.ts +49 -5
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -570,17 +570,27 @@ declare global {
570
570
  /**
571
571
  * Iterator types
572
572
  */
573
- interface Iterator<T> {
574
- next(): IteratorResult<T>;
575
- return?(value?: any): IteratorResult<T>;
576
- throw?(e?: any): IteratorResult<T>;
573
+ interface Iterator<T, TReturn = any, TNext = undefined> {
574
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
575
+ return?(value?: TReturn): IteratorResult<T, TReturn>;
576
+ throw?(e?: any): IteratorResult<T, TReturn>;
577
577
  }
578
578
 
579
- interface IteratorResult<T> {
579
+ interface IteratorResult<T, TReturn = any> {
580
580
  done: boolean;
581
+ value: T | TReturn;
582
+ }
583
+
584
+ interface IteratorYieldResult<T> {
585
+ done: false;
581
586
  value: T;
582
587
  }
583
588
 
589
+ interface IteratorReturnResult<TReturn> {
590
+ done: true;
591
+ value: TReturn;
592
+ }
593
+
584
594
  interface Iterable<T> {
585
595
  [Symbol.iterator](): Iterator<T>;
586
596
  }
@@ -589,6 +599,40 @@ declare global {
589
599
  [Symbol.iterator](): IterableIterator<T>;
590
600
  }
591
601
 
602
+ /**
603
+ * Async Iterator types (for for-await loops)
604
+ */
605
+ interface AsyncIterator<T, TReturn = any, TNext = undefined> {
606
+ next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
607
+ return?(value?: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
608
+ throw?(e?: any): Promise<IteratorResult<T, TReturn>>;
609
+ }
610
+
611
+ interface AsyncIterable<T> {
612
+ [Symbol.asyncIterator](): AsyncIterator<T>;
613
+ }
614
+
615
+ interface AsyncIterableIterator<T> extends AsyncIterator<T> {
616
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
617
+ }
618
+
619
+ /**
620
+ * Generator types
621
+ */
622
+ interface Generator<T = unknown, TReturn = any, TNext = unknown> extends Iterator<T, TReturn, TNext> {
623
+ next(...args: [] | [TNext]): IteratorResult<T, TReturn>;
624
+ return(value: TReturn): IteratorResult<T, TReturn>;
625
+ throw(e: any): IteratorResult<T, TReturn>;
626
+ [Symbol.iterator](): Generator<T, TReturn, TNext>;
627
+ }
628
+
629
+ interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> extends AsyncIterator<T, TReturn, TNext> {
630
+ next(...args: [] | [TNext]): Promise<IteratorResult<T, TReturn>>;
631
+ return(value: TReturn | PromiseLike<TReturn>): Promise<IteratorResult<T, TReturn>>;
632
+ throw(e: any): Promise<IteratorResult<T, TReturn>>;
633
+ [Symbol.asyncIterator](): AsyncGenerator<T, TReturn, TNext>;
634
+ }
635
+
592
636
  /**
593
637
  * Template literal type utilities
594
638
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsonic/js-globals",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Global type definitions for Tsonic JS mode (noLib: true, JavaScript semantics)",
5
5
  "main": "index.d.ts",
6
6
  "types": "index.d.ts",