iter-fest 0.2.2-main.fdb3230 → 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.
- package/README.md +47 -32
- package/dist/chunk-4P4GJT2O.mjs +195 -0
- package/dist/chunk-4P4GJT2O.mjs.map +1 -0
- package/dist/chunk-6ZEIOTH6.mjs +9 -0
- package/dist/chunk-6ZEIOTH6.mjs.map +1 -0
- package/dist/{chunk-2DE3J4J7.mjs → chunk-AMBNMMKA.mjs} +2 -1
- package/dist/chunk-AMBNMMKA.mjs.map +1 -0
- package/dist/{chunk-ANRVAYLW.mjs → chunk-P6MH6RRG.mjs} +2 -1
- package/dist/chunk-P6MH6RRG.mjs.map +1 -0
- package/dist/chunk-YGRCFTJT.mjs +13 -0
- package/dist/chunk-YGRCFTJT.mjs.map +1 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.js +1 -0
- package/dist/iter-fest.asyncGeneratorWithLastValue.js.map +1 -1
- package/dist/iter-fest.asyncGeneratorWithLastValue.mjs +1 -1
- package/dist/iter-fest.d.mts +1 -0
- package/dist/iter-fest.d.ts +1 -0
- package/dist/iter-fest.generatorWithLastValue.js +1 -0
- package/dist/iter-fest.generatorWithLastValue.js.map +1 -1
- package/dist/iter-fest.generatorWithLastValue.mjs +1 -1
- package/dist/iter-fest.js +203 -47
- package/dist/iter-fest.js.map +1 -1
- package/dist/iter-fest.mjs +11 -7
- package/dist/iter-fest.observableValues.js +1 -45
- package/dist/iter-fest.observableValues.js.map +1 -1
- package/dist/iter-fest.observableValues.mjs +1 -2
- package/dist/iter-fest.readableStreamValues.d.mts +6 -1
- package/dist/iter-fest.readableStreamValues.d.ts +6 -1
- package/dist/iter-fest.readableStreamValues.js +2 -19
- package/dist/iter-fest.readableStreamValues.js.map +1 -1
- package/dist/iter-fest.readableStreamValues.mjs +1 -1
- package/dist/iter-fest.readableStreamValuesWithSignal.d.mts +15 -0
- package/dist/iter-fest.readableStreamValuesWithSignal.d.ts +15 -0
- package/dist/iter-fest.readableStreamValuesWithSignal.js +221 -0
- package/dist/iter-fest.readableStreamValuesWithSignal.js.map +1 -0
- package/dist/iter-fest.readableStreamValuesWithSignal.mjs +7 -0
- package/dist/iter-fest.readableStreamValuesWithSignal.mjs.map +1 -0
- package/package.json +23 -13
- package/dist/chunk-2DE3J4J7.mjs.map +0 -1
- package/dist/chunk-ANRVAYLW.mjs.map +0 -1
- package/dist/chunk-RVIERPEV.mjs +0 -26
- package/dist/chunk-RVIERPEV.mjs.map +0 -1
- package/dist/chunk-WMTE2GGJ.mjs +0 -38
- package/dist/chunk-WMTE2GGJ.mjs.map +0 -1
package/dist/iter-fest.js
CHANGED
|
@@ -79,7 +79,8 @@ __export(src_exports, {
|
|
|
79
79
|
observableSubscribeAsReadable: () => observableSubscribeAsReadable,
|
|
80
80
|
observableValues: () => observableValues,
|
|
81
81
|
readableStreamFrom: () => readableStreamFrom,
|
|
82
|
-
readableStreamValues: () => readableStreamValues
|
|
82
|
+
readableStreamValues: () => readableStreamValues,
|
|
83
|
+
readableStreamValuesWithSignal: () => readableStreamValuesWithSignal
|
|
83
84
|
});
|
|
84
85
|
module.exports = __toCommonJS(src_exports);
|
|
85
86
|
|
|
@@ -116,6 +117,7 @@ var STILL_ITERATING = Symbol();
|
|
|
116
117
|
function asyncGeneratorWithLastValue(generator) {
|
|
117
118
|
let lastValue = STILL_ITERATING;
|
|
118
119
|
const asyncGeneratorWithLastValue2 = {
|
|
120
|
+
...generator,
|
|
119
121
|
[Symbol.asyncIterator]() {
|
|
120
122
|
return asyncGeneratorWithLastValue2;
|
|
121
123
|
},
|
|
@@ -230,6 +232,7 @@ var STILL_ITERATING2 = Symbol();
|
|
|
230
232
|
function generatorWithLastValue(generator) {
|
|
231
233
|
let lastValue = STILL_ITERATING2;
|
|
232
234
|
const generatorWithLastValue2 = {
|
|
235
|
+
...generator,
|
|
233
236
|
[Symbol.iterator]() {
|
|
234
237
|
return generatorWithLastValue2;
|
|
235
238
|
},
|
|
@@ -648,53 +651,9 @@ function observableSubscribeAsReadable(observable) {
|
|
|
648
651
|
});
|
|
649
652
|
}
|
|
650
653
|
|
|
651
|
-
// src/readableStreamValues.ts
|
|
652
|
-
function readableStreamValues(readable) {
|
|
653
|
-
const reader = readable.getReader();
|
|
654
|
-
const iterable = {
|
|
655
|
-
[Symbol.asyncIterator]() {
|
|
656
|
-
return iterable;
|
|
657
|
-
},
|
|
658
|
-
async next() {
|
|
659
|
-
const result = await Promise.race([reader.read(), reader.closed]);
|
|
660
|
-
if (!result || result.done) {
|
|
661
|
-
return { done: true, value: void 0 };
|
|
662
|
-
}
|
|
663
|
-
return { value: result.value };
|
|
664
|
-
},
|
|
665
|
-
async return() {
|
|
666
|
-
reader.releaseLock();
|
|
667
|
-
return { done: true, value: void 0 };
|
|
668
|
-
}
|
|
669
|
-
};
|
|
670
|
-
return iterable;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
654
|
// src/observableValues.ts
|
|
674
655
|
function observableValues(observable) {
|
|
675
|
-
|
|
676
|
-
const iterable = readableStreamValues(readable);
|
|
677
|
-
const cancellableIterable = {
|
|
678
|
-
[Symbol.asyncIterator]() {
|
|
679
|
-
return cancellableIterable;
|
|
680
|
-
},
|
|
681
|
-
next() {
|
|
682
|
-
return iterable.next();
|
|
683
|
-
},
|
|
684
|
-
return() {
|
|
685
|
-
var _a;
|
|
686
|
-
try {
|
|
687
|
-
return ((_a = iterable.return) == null ? void 0 : _a.call(iterable)) ?? Promise.resolve({ done: true, value: void 0 });
|
|
688
|
-
} finally {
|
|
689
|
-
readable.cancel();
|
|
690
|
-
}
|
|
691
|
-
},
|
|
692
|
-
throw(error) {
|
|
693
|
-
var _a;
|
|
694
|
-
return ((_a = iterable.throw) == null ? void 0 : _a.call(iterable, error)) ?? Promise.resolve({ done: true, value: void 0 });
|
|
695
|
-
}
|
|
696
|
-
};
|
|
697
|
-
return cancellableIterable;
|
|
656
|
+
return observableSubscribeAsReadable(observable).values();
|
|
698
657
|
}
|
|
699
658
|
|
|
700
659
|
// src/readableStreamFrom.ts
|
|
@@ -714,6 +673,202 @@ function readableStreamFrom(anyIterable) {
|
|
|
714
673
|
}
|
|
715
674
|
});
|
|
716
675
|
}
|
|
676
|
+
|
|
677
|
+
// src/readableStreamValues.ts
|
|
678
|
+
function readableStreamValues(readable, options) {
|
|
679
|
+
return readable.values(options);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
// src/private/CriticalSection.ts
|
|
683
|
+
var CriticalSection = class {
|
|
684
|
+
#callbacks = [];
|
|
685
|
+
enter(fn) {
|
|
686
|
+
const fnResolver = Promise.withResolvers();
|
|
687
|
+
const callback = async () => {
|
|
688
|
+
var _a, _b;
|
|
689
|
+
try {
|
|
690
|
+
fnResolver.resolve(await fn());
|
|
691
|
+
} catch (error) {
|
|
692
|
+
fnResolver.reject(error);
|
|
693
|
+
}
|
|
694
|
+
if (this.#callbacks.shift() !== callback) {
|
|
695
|
+
throw new Error("ASSERTION: The first resolver must be self.");
|
|
696
|
+
}
|
|
697
|
+
(_b = (_a = this.#callbacks)[0]) == null ? void 0 : _b.call(_a);
|
|
698
|
+
};
|
|
699
|
+
this.#callbacks.push(callback);
|
|
700
|
+
this.#callbacks[0] === callback && callback();
|
|
701
|
+
return fnResolver.promise;
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
// src/private/AsyncIteratorMachinery.ts
|
|
706
|
+
var AsyncIteratorMachinery = class {
|
|
707
|
+
constructor(iterator) {
|
|
708
|
+
this.#criticalSection = new CriticalSection();
|
|
709
|
+
this.#done = false;
|
|
710
|
+
const enter = this.#criticalSection.enter.bind(this.#criticalSection);
|
|
711
|
+
const return_ = iterator.return && iterator.return.bind(iterator);
|
|
712
|
+
const throw_ = iterator.throw && iterator.throw.bind(iterator);
|
|
713
|
+
this.next = (...[value]) => enter(async () => {
|
|
714
|
+
if (this.#done) {
|
|
715
|
+
return Promise.resolve({ done: true, value: void 0 });
|
|
716
|
+
}
|
|
717
|
+
const result = await iterator.next(...value ? [value] : []);
|
|
718
|
+
if (result.done) {
|
|
719
|
+
this.#done = true;
|
|
720
|
+
}
|
|
721
|
+
return result;
|
|
722
|
+
});
|
|
723
|
+
if (return_) {
|
|
724
|
+
this.return = (value) => enter(async () => {
|
|
725
|
+
if (this.#done) {
|
|
726
|
+
return {
|
|
727
|
+
done: true,
|
|
728
|
+
value: typeof value === "undefined" ? value : await value
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
this.#done = true;
|
|
732
|
+
return return_(value);
|
|
733
|
+
});
|
|
734
|
+
}
|
|
735
|
+
if (throw_) {
|
|
736
|
+
this.throw = (reason) => enter(() => {
|
|
737
|
+
if (this.#done) {
|
|
738
|
+
return Promise.reject(reason);
|
|
739
|
+
}
|
|
740
|
+
this.#done = true;
|
|
741
|
+
return throw_(reason);
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
#criticalSection;
|
|
746
|
+
#done;
|
|
747
|
+
async [Symbol.asyncDispose]() {
|
|
748
|
+
}
|
|
749
|
+
[Symbol.asyncIterator]() {
|
|
750
|
+
return this;
|
|
751
|
+
}
|
|
752
|
+
next;
|
|
753
|
+
return;
|
|
754
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
755
|
+
throw;
|
|
756
|
+
};
|
|
757
|
+
|
|
758
|
+
// src/private/createAbortError.ts
|
|
759
|
+
var ERROR_MESSAGE = "The operation is aborted";
|
|
760
|
+
var ERROR_NAME = "AbortError";
|
|
761
|
+
function createAbortError() {
|
|
762
|
+
if (typeof globalThis.DOMException === "undefined") {
|
|
763
|
+
const error = new Error(ERROR_MESSAGE);
|
|
764
|
+
error.name = ERROR_NAME;
|
|
765
|
+
return error;
|
|
766
|
+
} else {
|
|
767
|
+
return new DOMException(ERROR_MESSAGE, ERROR_NAME);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
// src/readableStreamValuesWithSignal.ts
|
|
772
|
+
var ReadableStreamIterator = class {
|
|
773
|
+
// The asynchronous iterator initialization steps for a ReadableStream, given stream, iterator, and args, are:
|
|
774
|
+
constructor(stream, args) {
|
|
775
|
+
var _a;
|
|
776
|
+
const reader = stream.getReader();
|
|
777
|
+
this.#reader = reader;
|
|
778
|
+
const preventCancel = !!args[0].preventCancel;
|
|
779
|
+
this.#preventCancel = preventCancel;
|
|
780
|
+
this.#signal = args[0].signal;
|
|
781
|
+
(_a = this.#signal) == null ? void 0 : _a.addEventListener(
|
|
782
|
+
"abort",
|
|
783
|
+
async () => {
|
|
784
|
+
this.#preventCancel || reader.cancel(createAbortError());
|
|
785
|
+
reader.releaseLock();
|
|
786
|
+
},
|
|
787
|
+
{ once: true }
|
|
788
|
+
);
|
|
789
|
+
}
|
|
790
|
+
#preventCancel;
|
|
791
|
+
#reader;
|
|
792
|
+
#readRequests = [];
|
|
793
|
+
#signal;
|
|
794
|
+
[Symbol.asyncIterator]() {
|
|
795
|
+
return this;
|
|
796
|
+
}
|
|
797
|
+
async [Symbol.asyncDispose]() {
|
|
798
|
+
}
|
|
799
|
+
// The get the next iteration result steps for a ReadableStream, given stream and iterator, are:
|
|
800
|
+
// next(...[value]: [] | [any]): Promise<IteratorResult<T, any>> {
|
|
801
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
802
|
+
next = () => {
|
|
803
|
+
var _a;
|
|
804
|
+
if ((_a = this.#signal) == null ? void 0 : _a.aborted) {
|
|
805
|
+
return Promise.reject(createAbortError());
|
|
806
|
+
}
|
|
807
|
+
const nextResolvers = Promise.withResolvers();
|
|
808
|
+
const reader = this.#reader;
|
|
809
|
+
const resolvers = Promise.withResolvers();
|
|
810
|
+
const request = {
|
|
811
|
+
// chunk steps, given chunk
|
|
812
|
+
chunk(value) {
|
|
813
|
+
resolvers.resolve({ done: false, value });
|
|
814
|
+
},
|
|
815
|
+
// close steps
|
|
816
|
+
close() {
|
|
817
|
+
reader.releaseLock();
|
|
818
|
+
resolvers.resolve({ done: true, value: void 0 });
|
|
819
|
+
},
|
|
820
|
+
// error steps, given e
|
|
821
|
+
error(reason) {
|
|
822
|
+
reader.releaseLock();
|
|
823
|
+
resolvers.reject(reason);
|
|
824
|
+
}
|
|
825
|
+
};
|
|
826
|
+
this.#readRequests.push(request);
|
|
827
|
+
(async () => {
|
|
828
|
+
var _a2, _b;
|
|
829
|
+
try {
|
|
830
|
+
const result = await reader.read();
|
|
831
|
+
if (result.done) {
|
|
832
|
+
if ((_a2 = this.#signal) == null ? void 0 : _a2.aborted) {
|
|
833
|
+
request.error(createAbortError());
|
|
834
|
+
}
|
|
835
|
+
request.close();
|
|
836
|
+
} else {
|
|
837
|
+
request.chunk(result.value);
|
|
838
|
+
}
|
|
839
|
+
} catch (error) {
|
|
840
|
+
if ((_b = this.#signal) == null ? void 0 : _b.aborted) {
|
|
841
|
+
request.error(createAbortError());
|
|
842
|
+
} else {
|
|
843
|
+
request.error(error);
|
|
844
|
+
}
|
|
845
|
+
} finally {
|
|
846
|
+
nextResolvers.resolve();
|
|
847
|
+
}
|
|
848
|
+
})();
|
|
849
|
+
return resolvers.promise;
|
|
850
|
+
};
|
|
851
|
+
// The asynchronous iterator return steps for a ReadableStream, given stream, iterator, and arg, are:
|
|
852
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
853
|
+
async return(value) {
|
|
854
|
+
var _a;
|
|
855
|
+
if ((_a = this.#signal) == null ? void 0 : _a.aborted) {
|
|
856
|
+
return Promise.reject(createAbortError());
|
|
857
|
+
}
|
|
858
|
+
const reader = this.#reader;
|
|
859
|
+
if (!this.#preventCancel) {
|
|
860
|
+
const cancelPromise = reader.cancel(value);
|
|
861
|
+
reader.releaseLock();
|
|
862
|
+
await cancelPromise;
|
|
863
|
+
return { done: true, value };
|
|
864
|
+
}
|
|
865
|
+
reader.releaseLock();
|
|
866
|
+
return { done: true, value };
|
|
867
|
+
}
|
|
868
|
+
};
|
|
869
|
+
function readableStreamValuesWithSignal(stream, options) {
|
|
870
|
+
return new AsyncIteratorMachinery(new ReadableStreamIterator(stream, [options || {}]));
|
|
871
|
+
}
|
|
717
872
|
// Annotate the CommonJS export names for ESM import in node:
|
|
718
873
|
0 && (module.exports = {
|
|
719
874
|
IterableWritableStream,
|
|
@@ -765,6 +920,7 @@ function readableStreamFrom(anyIterable) {
|
|
|
765
920
|
observableSubscribeAsReadable,
|
|
766
921
|
observableValues,
|
|
767
922
|
readableStreamFrom,
|
|
768
|
-
readableStreamValues
|
|
923
|
+
readableStreamValues,
|
|
924
|
+
readableStreamValuesWithSignal
|
|
769
925
|
});
|
|
770
926
|
//# sourceMappingURL=iter-fest.js.map
|