@anabranch/fs 0.1.7 → 0.1.9

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.
@@ -1,4 +1,5 @@
1
1
  import { _StreamImpl } from "./stream.js";
2
+ import type { Result } from "./util.js";
2
3
  /**
3
4
  * The entry point for creating a {@link Stream}. Wraps an async generator so
4
5
  * that yielded values become success results and any thrown error becomes a
@@ -22,7 +23,7 @@ import { _StreamImpl } from "./stream.js";
22
23
  * ```
23
24
  */
24
25
  export declare class Source<T, E> extends _StreamImpl<T, E> {
25
- private readonly rawSource;
26
+ private readonly resultSource;
26
27
  /**
27
28
  * @param source An async generator function. Each yielded value becomes a
28
29
  * success result; any thrown error becomes an error result and terminates
@@ -56,6 +57,12 @@ export declare class Source<T, E> extends _StreamImpl<T, E> {
56
57
  */
57
58
  static from<T, E>(source: AsyncIterable<T>): Source<T, E>;
58
59
  static from<T, E>(fn: () => AsyncGenerator<T>): Source<T, E>;
60
+ /**
61
+ * Creates a {@link Source} from an async generator that yields {@link Result}
62
+ * values directly. This is useful when you want to yield both successes and
63
+ * errors from the source without terminating it on the first error.
64
+ */
65
+ static fromResults<T, E>(source: () => AsyncGenerator<Result<T, E>>): Source<T, E>;
59
66
  /**
60
67
  * Sets the maximum number of concurrent operations for the stream.
61
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/anabranch/streams/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD;;;;;;OAMG;IACH,OAAO;IAmBP;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAc5D;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAIxC;;OAEG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;CAGxC"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/anabranch/streams/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAS/C,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B;;;;;;OAMG;IACH,OAAO;IAQP;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAoB5D;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EACrB,MAAM,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACzC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAIf;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAIxC;;OAEG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;CAGxC"}
@@ -29,10 +29,22 @@ export class Source extends _StreamImpl {
29
29
  * @param concurrency Maximum number of concurrent operations. Defaults to `Infinity`.
30
30
  * @param bufferSize Maximum number of buffered results before backpressure is applied. Defaults to `Infinity`.
31
31
  */
32
- constructor(source, concurrency = Infinity, bufferSize = Infinity) {
33
- const wrappedSource = async function* () {
32
+ constructor(resultSource, concurrency = Infinity, bufferSize = Infinity) {
33
+ super(resultSource, concurrency, bufferSize);
34
+ Object.defineProperty(this, "resultSource", {
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true,
38
+ value: resultSource
39
+ });
40
+ }
41
+ static from(source) {
42
+ const fn = typeof source === "function" ? source : async function* () {
43
+ yield* source;
44
+ };
45
+ const resultSource = async function* () {
34
46
  try {
35
- for await (const value of source()) {
47
+ for await (const value of fn()) {
36
48
  yield { type: "success", value };
37
49
  }
38
50
  }
@@ -40,33 +52,26 @@ export class Source extends _StreamImpl {
40
52
  yield { type: "error", error: error };
41
53
  }
42
54
  };
43
- super(wrappedSource, concurrency, bufferSize);
44
- Object.defineProperty(this, "rawSource", {
45
- enumerable: true,
46
- configurable: true,
47
- writable: true,
48
- value: void 0
49
- });
50
- this.rawSource = source;
55
+ return new Source(resultSource);
51
56
  }
52
- static from(source) {
53
- if (typeof source === "function") {
54
- return new Source(source);
55
- }
56
- return new Source(async function* () {
57
- yield* source;
58
- });
57
+ /**
58
+ * Creates a {@link Source} from an async generator that yields {@link Result}
59
+ * values directly. This is useful when you want to yield both successes and
60
+ * errors from the source without terminating it on the first error.
61
+ */
62
+ static fromResults(source) {
63
+ return new Source(source);
59
64
  }
60
65
  /**
61
66
  * Sets the maximum number of concurrent operations for the stream.
62
67
  */
63
68
  withConcurrency(n) {
64
- return new Source(this.rawSource, n, this.bufferSize);
69
+ return new Source(this.resultSource, n, this.bufferSize);
65
70
  }
66
71
  /**
67
72
  * Sets the maximum number of buffered results before backpressure is applied to the stream. If the buffer is full, the stream will pause until there is space in the buffer for new results.
68
73
  */
69
74
  withBufferSize(n) {
70
- return new Source(this.rawSource, this.concurrency, n);
75
+ return new Source(this.resultSource, this.concurrency, n);
71
76
  }
72
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/anabranch/streams/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/anabranch/streams/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAiCzE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EACjB,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GACjD,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,CAAC,EACP,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D;;;;;;;OAOG;IACH,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD;;;;;;;;;;OAUG;IACH,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,CAAC,EACJ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvC,YAAY,EAAE,CAAC,GACd,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,CAAC,EACP,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC,CAAC;IACd;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EACzB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,EAChC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,GAC/B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC,EAClB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,GAC/B,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7B;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B;;;;;;OAMG;IACH,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB;;;;;;;OAOG;IACH,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAAC,MAAM,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAC;IACtD;;;;;OAKG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAErC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACvD;AAED,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAElD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IACtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM;gBAFlB,MAAM,EAAE,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC1C,WAAW,GAAE,MAAiB,EAC9B,UAAU,GAAE,MAAiB;IAG5C,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAQlC,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAkB7B,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC;IAa7B,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC;IAa1B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAIrD,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,mBAAmB;IA0F3B,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,iBAAiB;IA0BzB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAiBrD,MAAM,CAAC,CAAC,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GACjD,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAwBnB,OAAO,CAAC,CAAC,EACP,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAC3D,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA4Bf,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAiC3D,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA4BrD,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA4BxD,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IA0B7B,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAqCxD,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAAC,MAAM,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC;IAarD,IAAI,CAAC,CAAC,EACV,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC;IAgBb,IAAI,CAAC,CAAC,EACJ,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvC,YAAY,EAAE,CAAC,GACd,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAyBf,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAkCpC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAkBxD,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAiBxD,OAAO,CAAC,CAAC,EACb,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EACvC,YAAY,EAAE,CAAC,GACd,OAAO,CAAC,CAAC,CAAC;IAUb,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,EAChC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,GAC/B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAwBhC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IAwBjE,OAAO,CAAC,EAAE,SAAS,CAAC,EAClB,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,GAC/B,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CAgB7B"}
@@ -390,16 +390,18 @@ export class _StreamImpl {
390
390
  const concurrency = this.concurrency;
391
391
  const bufferSize = this.bufferSize;
392
392
  return new _StreamImpl(async function* () {
393
+ if (n <= 0)
394
+ return;
393
395
  const gen = source();
394
396
  try {
395
397
  let count = 0;
396
398
  for await (const result of gen) {
397
399
  if (result.type === "success") {
398
- if (count >= n)
399
- break;
400
400
  count += 1;
401
401
  }
402
402
  yield result;
403
+ if (count >= n)
404
+ break;
403
405
  }
404
406
  }
405
407
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/fs/watch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CA0B7B"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/fs/watch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAErB,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,GAAG,GAAG,EAClB,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAgC7B"}
package/esm/fs/watch.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync, watch as fsWatch } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
- import { Channel } from "../anabranch/index.js";
4
+ import { Channel, Source } from "../anabranch/index.js";
5
5
  import { nodeErrorToFSError, } from "./errors.js";
6
6
  /**
7
7
  * Watches `path` for file-system changes, yielding a {@link FsEvent} for each.
@@ -16,22 +16,32 @@ import { nodeErrorToFSError, } from "./errors.js";
16
16
  */
17
17
  export function watch(path, options) {
18
18
  const watchPath = path instanceof URL ? fileURLToPath(path) : path;
19
- const watcher = fsWatch(path, { recursive: options?.recursive ?? true, persistent: false }, (eventType, filename) => {
20
- const name = filename;
21
- const fullPath = name ? join(watchPath, name) : watchPath;
22
- let kind;
23
- if (eventType === "rename") {
24
- kind = existsSync(fullPath) ? "create" : "remove";
19
+ return Source.from(async function* () {
20
+ const channel = new Channel();
21
+ const watcher = fsWatch(path, { recursive: options?.recursive ?? true, persistent: false }, (eventType, filename) => {
22
+ const name = filename;
23
+ const fullPath = name ? join(watchPath, name) : watchPath;
24
+ let kind;
25
+ if (eventType === "rename") {
26
+ kind = existsSync(fullPath) ? "create" : "remove";
27
+ }
28
+ else {
29
+ kind = "modify";
30
+ }
31
+ channel.send({ kind, paths: [fullPath] });
32
+ });
33
+ watcher.once("error", (err) => channel.fail(nodeErrorToFSError(err, path)));
34
+ watcher.once("close", () => channel.close());
35
+ try {
36
+ for await (const result of channel) {
37
+ if (result.type === "success")
38
+ yield result.value;
39
+ else
40
+ throw result.error;
41
+ }
25
42
  }
26
- else {
27
- kind = "modify";
43
+ finally {
44
+ watcher.close();
28
45
  }
29
- channel.send({ kind, paths: [fullPath] });
30
46
  });
31
- const channel = new Channel({
32
- onClose: () => watcher.close(),
33
- });
34
- watcher.once("error", (err) => channel.fail(nodeErrorToFSError(err, path)));
35
- watcher.once("close", () => channel.close());
36
- return channel;
37
47
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anabranch/fs",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Streaming file-system utilities for the anabranch ecosystem",
5
5
  "repository": {
6
6
  "type": "git",