@gjsify/stream 0.4.35 → 0.4.37

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.
@@ -0,0 +1 @@
1
+ import"./_virtual/_rolldown/runtime.js";import{EventEmitter as e}from"@gjsify/events";var Stream=class extends e{static Stream;static Readable;static Writable;static Duplex;static Transform;static PassThrough;static pipeline;static finished;readable=!1;writable=!1;pipe(t,n){let r=this,ondata=e=>{t.writable!==!1&&t.write(e)===!1&&r.pause&&r.pause()};r.on(`data`,ondata);let ondrain=()=>{r.readable&&r.resume&&r.resume()};t.on(`drain`,ondrain);let i=!1,onend=()=>{i||(i=!0,t.end?.())},onclose=()=>{i||(i=!0,t.destroy?.())},onerror=t=>{if(cleanup(),e.listenerCount(r,`error`)===0)throw t},cleanup=()=>{r.removeListener(`data`,ondata),t.removeListener(`drain`,ondrain),r.removeListener(`end`,onend),r.removeListener(`close`,onclose),r.removeListener(`error`,onerror),t.removeListener(`error`,onerror),r.removeListener(`end`,cleanup),r.removeListener(`close`,cleanup),t.removeListener(`close`,cleanup)};return!t._isStdio&&(!n||n.end!==!1)&&(r.on(`end`,onend),r.on(`close`,onclose)),r.on(`error`,onerror),t.on(`error`,onerror),r.on(`end`,cleanup),r.on(`close`,cleanup),t.on(`close`,cleanup),t.emit(`pipe`,r),t}},t=class Readable extends Stream{static from(e){let t=new Readable;return(async()=>{try{for await(let n of e)t.push(n);t.push(null)}catch(e){t.destroy(e)}})(),t}readable=!0;destroyed=!1;readableEnded=!1;_buffer=[];_paused=!1;_flowing=null;_ended=!1;_endEmitted=!1;_drainScheduled=!1;push(e){return e===null?(this._ended=!0,this._scheduleDrain(),!1):(this._flowing?(this._buffer.push(e),this._scheduleDrain()):(this._buffer.push(e),this.emit(`readable`)),!this._paused)}_scheduleDrain(){this._drainScheduled||(this._drainScheduled=!0,queueMicrotask(()=>{this._drainScheduled=!1,this._drainBuffer()}))}read(){return this._buffer.length===0?null:this._buffer.shift()}pause(){return this._paused=!0,this._flowing=!1,this.emit(`pause`),this}resume(){return this._paused=!1,this._flowing=!0,this._scheduleDrain(),this.emit(`resume`),this}_drainBuffer(){for(;this._flowing&&this._buffer.length>0;)this.emit(`data`,this._buffer.shift());this._ended&&this._buffer.length===0&&!this._endEmitted&&(this._endEmitted=!0,this.readableEnded=!0,this.emit(`end`))}destroy(e){return this.destroyed?this:(this.destroyed=!0,queueMicrotask(()=>{e&&this.emit(`error`,e),this.emit(`close`)}),this)}on(e,t){return super.on(e,t),e===`data`&&this._flowing===null&&(this._flowing=!0,this._scheduleDrain()),this}async*[Symbol.asyncIterator](){let e=this,t=null,n=[],r=!1,i=null,settle=e=>{if(t){let n=t;t=null,n(e)}},onData=e=>{t?settle({value:e,done:!1}):n.push(e)},onEnd=()=>{r=!0,settle({value:void 0,done:!0})},onError=e=>{i=e,settle({value:void 0,done:!0})};e.on(`data`,onData),e.on(`end`,onEnd),e.on(`error`,onError);try{for(;;){if(i)throw i;if(n.length>0){yield n.shift();continue}if(r)return;let e=await new Promise(e=>{t=e});if(e.done)return;yield e.value}}finally{e.removeListener(`data`,onData),e.removeListener(`end`,onEnd),e.removeListener(`error`,onError)}}},Writable=class extends Stream{writable=!0;writableEnded=!1;writableFinished=!1;destroyed=!1;_writing=!1;_writeEnded=!1;write(e,t,n){if(this._writeEnded){let e=Error(`write after end`);return queueMicrotask(()=>this.emit(`error`,e)),!1}let r=typeof t==`string`?t:`utf8`,i=typeof t==`function`?t:n;return typeof this._write==`function`?(this._writing=!0,this._write(e,r,e=>{if(this._writing=!1,e){queueMicrotask(()=>this.emit(`error`,e)),i?.();return}i?.(),queueMicrotask(()=>this.emit(`drain`))})):i&&queueMicrotask(()=>i()),!this._writing}end(e,t,n){let r=typeof t==`function`?t:n,finish=()=>{this._writeEnded=!0,this.writableEnded=!0,queueMicrotask(()=>{this.writableFinished=!0,this.emit(`finish`),this.emit(`close`)}),r&&queueMicrotask(()=>r())};return e==null?finish():this.write(e,typeof t==`string`?t:void 0,finish),this}destroy(e){return this.destroyed?this:(this.destroyed=!0,queueMicrotask(()=>{e&&this.emit(`error`,e),this.emit(`close`)}),this)}},Duplex=class extends t{writable=!0;writableEnded=!1;writableFinished=!1;_writing=!1;_writeEnded=!1;write(e,t,n){return Writable.prototype.write.call(this,e,t,n)}end(e,t,n){return Writable.prototype.end.call(this,e,t,n),this}},Transform=class extends Duplex{constructor(e){super(),e?.transform&&(this._transform=e.transform),e?.flush&&(this._flush=e.flush)}write(e,t,n){let r=typeof t==`string`?t:`utf8`,i=typeof t==`function`?t:n;return typeof this._transform==`function`?this._transform(e,r,(e,t)=>{if(e){queueMicrotask(()=>this.emit(`error`,e));return}t!=null&&this.push(t),i?.()}):(this.push(e),i&&queueMicrotask(()=>i())),!0}end(e,t,n){let finishOut=()=>{let e=typeof t==`function`?t:n,done=()=>{this.push(null),this._writeEnded=!0,this.writableEnded=!0,queueMicrotask(()=>{this.writableFinished=!0,this.emit(`finish`)}),e&&queueMicrotask(()=>e())};typeof this._flush==`function`?this._flush(e=>{e?queueMicrotask(()=>this.emit(`error`,e)):done()}):done()};return e==null?finishOut():this.write(e,typeof t==`string`?t:void 0,finishOut),this}},PassThrough=class extends Transform{constructor(){super({transform(e,t,n){n(null,e)}})}};function pipeline(...e){let t=typeof e[e.length-1]==`function`?e.pop():void 0,n=e;if(n.length<2)throw Error(`pipeline requires at least 2 streams`);let r=!1,finish=e=>{r||(r=!0,t?.(e??null))};for(let e=0;e<n.length-1;e++){let t=n[e],r=n[e+1];typeof t.pipe==`function`&&t.pipe(r),t.on(`error`,finish)}let i=n[n.length-1];return i.on(`error`,finish),i.on(`finish`,()=>finish()),i.on(`end`,()=>finish()),i}function finished(e,t,n){let r=typeof t==`function`?t:n,i=!1,finish=e=>{i||(i=!0,r?.(e??null))},onEnd=()=>finish(),onFinish=()=>finish(),onError=e=>finish(e),onClose=()=>finish();return e.on(`end`,onEnd),e.on(`finish`,onFinish),e.on(`error`,onError),e.on(`close`,onClose),()=>{e.removeListener(`end`,onEnd),e.removeListener(`finish`,onFinish),e.removeListener(`error`,onError),e.removeListener(`close`,onClose)}}function addAbortSignal(e,t){let onAbort=()=>{t.destroy?.(Error(`AbortError`))};return e.aborted?queueMicrotask(onAbort):e.addEventListener(`abort`,onAbort,{once:!0}),t}const isReadable=e=>e instanceof t&&e.readable,isWritable=e=>e instanceof Writable&&e.writable,isDestroyed=e=>!!(e&&typeof e==`object`&&e.destroyed),isDisturbed=e=>isDestroyed(e),isErrored=e=>!!(e&&typeof e==`object`&&e.errored);let n=16*1024;const getDefaultHighWaterMark=e=>n,setDefaultHighWaterMark=(e,t)=>{n=t};Stream.Stream=Stream,Stream.Readable=t,Stream.Writable=Writable,Stream.Duplex=Duplex,Stream.Transform=Transform,Stream.PassThrough=PassThrough,Stream.pipeline=pipeline,Stream.finished=finished;const r=Object.assign(Stream,{Readable:t,Writable,Duplex,Transform,PassThrough,Stream,pipeline,finished});export{Duplex,PassThrough,t as Readable,Stream,Transform,Writable,addAbortSignal,r as default,finished,getDefaultHighWaterMark,isDestroyed,isDisturbed,isErrored,isReadable,isWritable,pipeline,setDefaultHighWaterMark};
@@ -0,0 +1,113 @@
1
+ import { EventEmitter } from '@gjsify/events';
2
+ interface WritableLike {
3
+ writable?: boolean;
4
+ write(chunk: unknown, enc?: string, cb?: () => void): boolean;
5
+ end?(chunk?: unknown, enc?: string, cb?: () => void): void;
6
+ destroy?(err?: Error): unknown;
7
+ emit(event: string, ...args: unknown[]): boolean;
8
+ on(event: string, listener: (...args: unknown[]) => void): unknown;
9
+ removeListener(event: string, listener: (...args: unknown[]) => void): unknown;
10
+ _isStdio?: boolean;
11
+ }
12
+ export declare class Stream extends EventEmitter {
13
+ static Stream: typeof Stream;
14
+ static Readable: typeof Readable;
15
+ static Writable: typeof Writable;
16
+ static Duplex: typeof Duplex;
17
+ static Transform: typeof Transform;
18
+ static PassThrough: typeof PassThrough;
19
+ static pipeline: typeof pipeline;
20
+ static finished: typeof finished;
21
+ readable: boolean;
22
+ writable: boolean;
23
+ /** Optional subclass hook — present on Readable/Duplex. */
24
+ pause?(): this;
25
+ /** Optional subclass hook — present on Readable/Duplex. */
26
+ resume?(): this;
27
+ pipe<T extends WritableLike>(dest: T, options?: {
28
+ end?: boolean;
29
+ }): T;
30
+ }
31
+ export declare class Readable extends Stream {
32
+ static from(iterable: Iterable<unknown> | AsyncIterable<unknown>): Readable;
33
+ readable: boolean;
34
+ destroyed: boolean;
35
+ readableEnded: boolean;
36
+ protected _buffer: unknown[];
37
+ protected _paused: boolean;
38
+ protected _flowing: boolean | null;
39
+ protected _ended: boolean;
40
+ protected _endEmitted: boolean;
41
+ protected _drainScheduled: boolean;
42
+ push(chunk: unknown): boolean;
43
+ protected _scheduleDrain(): void;
44
+ read(): unknown;
45
+ pause(): this;
46
+ resume(): this;
47
+ protected _drainBuffer(): void;
48
+ destroy(err?: Error): this;
49
+ on(event: string, listener: (...args: unknown[]) => void): this;
50
+ [Symbol.asyncIterator](): AsyncIterableIterator<unknown>;
51
+ }
52
+ type WriteCb = (err?: Error | null) => void;
53
+ export declare class Writable extends Stream {
54
+ writable: boolean;
55
+ writableEnded: boolean;
56
+ writableFinished: boolean;
57
+ destroyed: boolean;
58
+ /** Subclass-supplied write impl. */
59
+ _write?(chunk: unknown, enc: string, cb: WriteCb): void;
60
+ protected _writing: boolean;
61
+ protected _writeEnded: boolean;
62
+ write(chunk: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): boolean;
63
+ end(chunk?: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): this;
64
+ destroy(err?: Error): this;
65
+ }
66
+ export declare class Duplex extends Readable {
67
+ writable: boolean;
68
+ writableEnded: boolean;
69
+ writableFinished: boolean;
70
+ _write?(chunk: unknown, enc: string, cb: WriteCb): void;
71
+ protected _writing: boolean;
72
+ protected _writeEnded: boolean;
73
+ write(chunk: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): boolean;
74
+ end(chunk?: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): this;
75
+ }
76
+ export declare class Transform extends Duplex {
77
+ _transform?(chunk: unknown, enc: string, cb: (err: Error | null, data?: unknown) => void): void;
78
+ _flush?(cb: (err?: Error | null) => void): void;
79
+ constructor(opts?: {
80
+ transform?: (chunk: unknown, enc: string, cb: (err: Error | null, data?: unknown) => void) => void;
81
+ flush?: (cb: (err?: Error | null) => void) => void;
82
+ });
83
+ write(chunk: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): boolean;
84
+ end(chunk?: unknown, encOrCb?: string | WriteCb, cb?: WriteCb): this;
85
+ }
86
+ export declare class PassThrough extends Transform {
87
+ constructor();
88
+ }
89
+ type AnyStream = Readable | Writable | Duplex | Stream;
90
+ type Callback = (err?: Error | null) => void;
91
+ export declare function pipeline(...args: (AnyStream | Callback)[]): AnyStream;
92
+ export declare function finished(stream: AnyStream, cbOrOpts: Callback | {
93
+ signal?: AbortSignal;
94
+ }, maybeCb?: Callback): () => void;
95
+ export declare function addAbortSignal<T extends AnyStream>(signal: AbortSignal, stream: T): T;
96
+ export declare const isReadable: (s: unknown) => boolean;
97
+ export declare const isWritable: (s: unknown) => boolean;
98
+ export declare const isDestroyed: (s: unknown) => boolean;
99
+ export declare const isDisturbed: (s: unknown) => boolean;
100
+ export declare const isErrored: (s: unknown) => boolean;
101
+ export declare const getDefaultHighWaterMark: (_objectMode?: boolean) => number;
102
+ export declare const setDefaultHighWaterMark: (_objectMode: boolean, n: number) => void;
103
+ declare const streamDefault: typeof Stream & {
104
+ Readable: typeof Readable;
105
+ Writable: typeof Writable;
106
+ Duplex: typeof Duplex;
107
+ Transform: typeof Transform;
108
+ PassThrough: typeof PassThrough;
109
+ Stream: typeof Stream;
110
+ pipeline: typeof pipeline;
111
+ finished: typeof finished;
112
+ };
113
+ export default streamDefault;
@@ -0,0 +1,2 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/stream",
3
- "version": "0.4.35",
3
+ "version": "0.4.37",
4
4
  "description": "Node.js stream module for Gjs",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -11,6 +11,10 @@
11
11
  "require": "./cjs-compat.cjs",
12
12
  "default": "./lib/esm/index.js"
13
13
  },
14
+ "./browser": {
15
+ "types": "./lib/types/browser.d.ts",
16
+ "default": "./lib/esm/browser.js"
17
+ },
14
18
  "./consumers": {
15
19
  "types": "./lib/types/consumers/index.d.ts",
16
20
  "default": "./lib/esm/consumers/index.js"
@@ -39,6 +43,7 @@
39
43
  "build:test": "gjsify run build:test:gjs && gjsify run build:test:node",
40
44
  "build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
41
45
  "build:test:node": "gjsify build src/test.mts --app node --outfile test.node.mjs",
46
+ "build:test:browser": "gjsify build src/test.browser.mts --app browser --outfile dist/test.browser.mjs",
42
47
  "test": "gjsify run build:gjsify && gjsify run build:test && gjsify run test:node && gjsify run test:gjs",
43
48
  "test:gjs": "gjsify run test.gjs.mjs",
44
49
  "test:node": "node test.node.mjs"
@@ -49,21 +54,32 @@
49
54
  "stream"
50
55
  ],
51
56
  "devDependencies": {
52
- "@gjsify/cli": "^0.4.35",
53
- "@gjsify/unit": "^0.4.35",
57
+ "@gjsify/cli": "^0.4.37",
58
+ "@gjsify/unit": "^0.4.37",
54
59
  "@types/node": "^25.9.1",
55
- "typescript": "^6.0.3"
60
+ "typescript": "^5.9.3"
56
61
  },
57
62
  "dependencies": {
58
- "@gjsify/events": "^0.4.35",
59
- "@gjsify/utils": "^0.4.35",
60
- "@gjsify/web-streams": "^0.4.35"
63
+ "@gjsify/events": "^0.4.37",
64
+ "@gjsify/utils": "^0.4.37",
65
+ "@gjsify/web-streams": "^0.4.37"
61
66
  },
62
67
  "gjsify": {
63
68
  "runtimes": {
64
69
  "gjs": "polyfill",
65
70
  "node": "native",
66
- "browser": "polyfill"
71
+ "browser": "polyfill",
72
+ "nativescript": "polyfill"
67
73
  }
68
- }
74
+ },
75
+ "license": "MIT",
76
+ "repository": {
77
+ "type": "git",
78
+ "url": "git+https://github.com/gjsify/gjsify.git",
79
+ "directory": "packages/node/stream"
80
+ },
81
+ "bugs": {
82
+ "url": "https://github.com/gjsify/gjsify/issues"
83
+ },
84
+ "homepage": "https://github.com/gjsify/gjsify/tree/main/packages/node/stream#readme"
69
85
  }