@yume-chan/stream-extra 0.0.19 → 0.0.20

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 (57) hide show
  1. package/CHANGELOG.json +48 -33
  2. package/CHANGELOG.md +10 -1
  3. package/esm/buffered-transform.d.ts +1 -2
  4. package/esm/buffered-transform.d.ts.map +1 -1
  5. package/esm/buffered-transform.js +10 -9
  6. package/esm/buffered-transform.js.map +1 -1
  7. package/esm/buffered.d.ts +4 -9
  8. package/esm/buffered.d.ts.map +1 -1
  9. package/esm/buffered.js +34 -30
  10. package/esm/buffered.js.map +1 -1
  11. package/esm/consumable.d.ts +1 -2
  12. package/esm/consumable.d.ts.map +1 -1
  13. package/esm/consumable.js +9 -9
  14. package/esm/consumable.js.map +1 -1
  15. package/esm/distribution.d.ts +1 -4
  16. package/esm/distribution.d.ts.map +1 -1
  17. package/esm/distribution.js +29 -29
  18. package/esm/distribution.js.map +1 -1
  19. package/esm/duplex.d.ts +1 -5
  20. package/esm/duplex.d.ts.map +1 -1
  21. package/esm/duplex.js +21 -19
  22. package/esm/duplex.js.map +1 -1
  23. package/esm/gather-string.d.ts +1 -1
  24. package/esm/gather-string.d.ts.map +1 -1
  25. package/esm/gather-string.js +3 -3
  26. package/esm/gather-string.js.map +1 -1
  27. package/esm/push-readable.d.ts.map +1 -1
  28. package/esm/push-readable.js +11 -6
  29. package/esm/push-readable.js.map +1 -1
  30. package/esm/wrap-readable.d.ts +1 -1
  31. package/esm/wrap-readable.d.ts.map +1 -1
  32. package/esm/wrap-readable.js +4 -4
  33. package/esm/wrap-readable.js.map +1 -1
  34. package/esm/wrap-writable.d.ts +1 -1
  35. package/esm/wrap-writable.d.ts.map +1 -1
  36. package/esm/wrap-writable.js +5 -5
  37. package/esm/wrap-writable.js.map +1 -1
  38. package/package.json +6 -6
  39. package/src/buffered-transform.ts +10 -12
  40. package/src/buffered.ts +38 -32
  41. package/src/consumable.ts +11 -11
  42. package/src/distribution.ts +31 -31
  43. package/src/duplex.ts +21 -19
  44. package/src/gather-string.ts +3 -3
  45. package/src/push-readable.ts +10 -6
  46. package/src/wrap-readable.ts +4 -4
  47. package/src/wrap-writable.ts +5 -5
  48. package/tsconfig.build.json +6 -1
  49. package/tsconfig.build.tsbuildinfo +1 -1
  50. package/esm/chunk.d.ts +0 -8
  51. package/esm/chunk.d.ts.map +0 -1
  52. package/esm/chunk.js +0 -56
  53. package/esm/chunk.js.map +0 -1
  54. package/esm/trace.d.ts +0 -16
  55. package/esm/trace.d.ts.map +0 -1
  56. package/esm/trace.js +0 -131
  57. package/esm/trace.js.map +0 -1
package/esm/trace.js DELETED
@@ -1,131 +0,0 @@
1
- import { PromiseResolver } from "@yume-chan/async";
2
- import { ReadableStream, WritableStream, } from "./stream.js";
3
- class RingBuffer {
4
- _capacity;
5
- get capacity() {
6
- return this._capacity;
7
- }
8
- _size;
9
- get size() {
10
- return this._size;
11
- }
12
- _buffer;
13
- _head;
14
- _tail;
15
- constructor(capacity) {
16
- this._capacity = capacity;
17
- this._size = 0;
18
- this._head = 0;
19
- this._tail = 0;
20
- this._buffer = new Array(capacity);
21
- }
22
- push(value) {
23
- this._buffer[this._head] = value;
24
- this._size += 1;
25
- this._head = (this._head + 1) % this._capacity;
26
- if (this._head === this._tail) {
27
- this._tail = (this._tail + 1) % this._capacity;
28
- }
29
- }
30
- shift() {
31
- if (this._head === this._tail) {
32
- return undefined;
33
- }
34
- this._size -= 1;
35
- const value = this._buffer[this._tail];
36
- this._tail = (this._tail + 1) % this._capacity;
37
- return value;
38
- }
39
- peekFirst() {
40
- return this._buffer[this._tail];
41
- }
42
- }
43
- export const PRESSURE_WARNINGS = new Map();
44
- export class PressureSensor {
45
- _readable;
46
- get readable() {
47
- return this._readable;
48
- }
49
- _writable;
50
- get writable() {
51
- return this._writable;
52
- }
53
- _name;
54
- _ended = false;
55
- _cancelReason = undefined;
56
- _readAhead;
57
- _writeAhead;
58
- _writeLock;
59
- constructor(name, size) {
60
- this._name = name;
61
- this._readAhead = new RingBuffer(size);
62
- this._writeAhead = new RingBuffer(size);
63
- this._readable = new ReadableStream({
64
- pull: async (controller) => {
65
- if (this._writeAhead.size !== 0) {
66
- controller.enqueue(this._writeAhead.shift());
67
- return;
68
- }
69
- if (this._ended) {
70
- controller.close();
71
- return;
72
- }
73
- const resolver = new PromiseResolver();
74
- this._readAhead.push(resolver);
75
- const chunk = await resolver.promise;
76
- if (chunk === undefined) {
77
- controller.close();
78
- }
79
- else {
80
- controller.enqueue(chunk);
81
- }
82
- },
83
- cancel: (reason) => {
84
- this._cancelReason = reason;
85
- },
86
- });
87
- this._writable = new WritableStream({
88
- write: (chunk) => {
89
- if (this._cancelReason !== undefined) {
90
- throw this._cancelReason;
91
- }
92
- if (this._readAhead.size !== 0) {
93
- this._readAhead.shift().resolve(chunk);
94
- return;
95
- }
96
- if (this._writeAhead.size === this._writeAhead.capacity) {
97
- if (this._writeLock) {
98
- throw new Error(`PressureSensor ${this._name}: the producer keeps writing without monitoring the pressure.`);
99
- }
100
- const warnings = PRESSURE_WARNINGS.get(this._name);
101
- if (warnings) {
102
- warnings.push(Date.now());
103
- }
104
- else {
105
- PRESSURE_WARNINGS.set(this._name, [Date.now()]);
106
- }
107
- this._writeLock = new PromiseResolver();
108
- return this._writeLock.promise.then(() => {
109
- this._writeLock = undefined;
110
- this._writeAhead.push(chunk);
111
- });
112
- }
113
- this._writeAhead.push(chunk);
114
- return undefined;
115
- },
116
- close: () => {
117
- this._ended = true;
118
- while (this._readAhead.size !== 0) {
119
- this._readAhead.shift().resolve(undefined);
120
- }
121
- },
122
- abort: (reason) => {
123
- this._ended = true;
124
- while (this._readAhead.size !== 0) {
125
- this._readAhead.shift().reject(reason);
126
- }
127
- },
128
- });
129
- }
130
- }
131
- //# sourceMappingURL=trace.js.map
package/esm/trace.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}