@adviser/cement 0.5.31 → 0.5.33

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 (48) hide show
  1. package/cjs/utils/string2stream.cjs +7 -4
  2. package/cjs/utils/string2stream.cjs.map +1 -1
  3. package/cjs/utils/string2stream.d.ts +2 -2
  4. package/cjs/utils/string2stream.d.ts.map +1 -1
  5. package/cjs/utils/tee-writer.cjs +16 -9
  6. package/cjs/utils/tee-writer.cjs.map +1 -1
  7. package/cjs/utils/tee-writer.d.ts +1 -1
  8. package/cjs/utils/tee-writer.d.ts.map +1 -1
  9. package/cjs/utils/tee-writer.test.cjs +61 -20
  10. package/cjs/utils/tee-writer.test.cjs.map +1 -1
  11. package/cjs/version.cjs +1 -1
  12. package/deno.json +1 -1
  13. package/esm/utils/string2stream.d.ts +2 -2
  14. package/esm/utils/string2stream.d.ts.map +1 -1
  15. package/esm/utils/string2stream.js +7 -4
  16. package/esm/utils/string2stream.js.map +1 -1
  17. package/esm/utils/tee-writer.d.ts +1 -1
  18. package/esm/utils/tee-writer.d.ts.map +1 -1
  19. package/esm/utils/tee-writer.js +16 -9
  20. package/esm/utils/tee-writer.js.map +1 -1
  21. package/esm/utils/tee-writer.test.js +61 -20
  22. package/esm/utils/tee-writer.test.js.map +1 -1
  23. package/esm/version.js +1 -1
  24. package/package.json +2 -2
  25. package/src/utils/string2stream.ts +10 -4
  26. package/src/utils/tee-writer.ts +18 -10
  27. package/ts/cjs/utils/string2stream.d.ts +2 -2
  28. package/ts/cjs/utils/string2stream.d.ts.map +1 -1
  29. package/ts/cjs/utils/string2stream.js +7 -4
  30. package/ts/cjs/utils/string2stream.js.map +1 -1
  31. package/ts/cjs/utils/tee-writer.d.ts +1 -1
  32. package/ts/cjs/utils/tee-writer.d.ts.map +1 -1
  33. package/ts/cjs/utils/tee-writer.js +16 -9
  34. package/ts/cjs/utils/tee-writer.js.map +1 -1
  35. package/ts/cjs/utils/tee-writer.test.js +61 -20
  36. package/ts/cjs/utils/tee-writer.test.js.map +1 -1
  37. package/ts/cjs/version.js +1 -1
  38. package/ts/esm/utils/string2stream.d.ts +2 -2
  39. package/ts/esm/utils/string2stream.d.ts.map +1 -1
  40. package/ts/esm/utils/string2stream.js +7 -4
  41. package/ts/esm/utils/string2stream.js.map +1 -1
  42. package/ts/esm/utils/tee-writer.d.ts +1 -1
  43. package/ts/esm/utils/tee-writer.d.ts.map +1 -1
  44. package/ts/esm/utils/tee-writer.js +16 -9
  45. package/ts/esm/utils/tee-writer.js.map +1 -1
  46. package/ts/esm/utils/tee-writer.test.js +61 -20
  47. package/ts/esm/utils/tee-writer.test.js.map +1 -1
  48. package/ts/esm/version.js +1 -1
@@ -3,13 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.string2stream = string2stream;
4
4
  exports.uint8array2stream = uint8array2stream;
5
5
  const txt_en_decoder_js_1 = require("../txt-en-decoder.cjs");
6
- function string2stream(str, ende = (0, txt_en_decoder_js_1.TxtEnDecoderSingleton)()) {
7
- return uint8array2stream(ende.encode(str));
6
+ function string2stream(strOrArray, ende = (0, txt_en_decoder_js_1.TxtEnDecoderSingleton)()) {
7
+ const sa = Array.isArray(strOrArray) ? strOrArray : [strOrArray];
8
+ return uint8array2stream(...sa.map((s) => ende.encode(s)));
8
9
  }
9
- function uint8array2stream(str) {
10
+ function uint8array2stream(...uint8) {
10
11
  return new ReadableStream({
11
12
  start(controller) {
12
- controller.enqueue(str);
13
+ for (const chunk of uint8) {
14
+ controller.enqueue(chunk);
15
+ }
13
16
  controller.close();
14
17
  },
15
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"string2stream.js","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":";;;;AAAA,4DAA2E;AAkB3E,uBAA8B,GAAW,EAAE,IAAI,GAAiB,IAAA,yCAAqB,GAAE,EAA8B;IACnH,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CAC5C;AAgBD,2BAAkC,GAAe,EAA8B;IAC7E,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,UAAU,EAAQ;YACtB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QAAA,CACpB;KACF,CAAC,CAAC;AAAA,CACJ"}
1
+ {"version":3,"file":"string2stream.js","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":";;;;AAAA,4DAA2E;AAkB3E,uBACE,UAA6B,EAC7B,IAAI,GAAiB,IAAA,yCAAqB,GAAE,EAChB;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjE,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC5D;AAgBD,2BAAkC,GAAG,KAAmB,EAA8B;IACpF,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,UAAU,EAAQ;YACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,UAAU,CAAC,KAAK,EAAE,CAAC;QAAA,CACpB;KACF,CAAC,CAAC;AAAA,CACJ"}
@@ -1,4 +1,4 @@
1
1
  import { TxtEnDecoder } from "../txt-en-decoder.js";
2
- export declare function string2stream(str: string, ende?: TxtEnDecoder): ReadableStream<Uint8Array>;
3
- export declare function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array>;
2
+ export declare function string2stream(strOrArray: string | string[], ende?: TxtEnDecoder): ReadableStream<Uint8Array>;
3
+ export declare function uint8array2stream(...uint8: Uint8Array[]): ReadableStream<Uint8Array>;
4
4
  //# sourceMappingURL=string2stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string2stream.d.ts","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAkB3E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,YAAsC,GAAG,cAAc,CAAC,UAAU,CAAC,CAEnH;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAO7E"}
1
+ {"version":3,"file":"string2stream.d.ts","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAkB3E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,IAAI,GAAE,YAAsC,GAC3C,cAAc,CAAC,UAAU,CAAC,CAG5B;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CASpF"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.teeWriter = teeWriter;
4
4
  const result_js_1 = require("../result.cjs");
5
5
  async function teeWriter(peers, inStream) {
6
- let activeStreams = await Promise.allSettled(peers.map((p) => p.begin())).then((r) => r.flatMap((r) => (r.status === "fulfilled" ? [r.value] : [])));
6
+ let activeStreams = await Promise.allSettled(peers.map((p) => (0, result_js_1.exception2Result)(() => p.begin()))).then((r) => r.flatMap((r) => (r.status === "fulfilled" && r.value.isOk() ? [r.value.Ok()] : [])));
7
7
  const reader = inStream.getReader();
8
8
  while (activeStreams.length > 0) {
9
9
  const rRead = await (0, result_js_1.exception2Result)(() => reader.read());
@@ -14,20 +14,27 @@ async function teeWriter(peers, inStream) {
14
14
  const { value, done } = rRead.Ok();
15
15
  if (done)
16
16
  break;
17
- const writeResults = await Promise.allSettled(activeStreams.map((stream) => stream.write(value)));
17
+ const writeResults = await Promise.allSettled(activeStreams.map((stream) => (0, result_js_1.exception2Result)(() => stream.write(value))));
18
18
  await Promise.allSettled(writeResults.flatMap((r, i) => {
19
- if (r.status === "rejected")
20
- return [activeStreams[i].cancel()];
19
+ if (r.status === "rejected" || r.value.isErr())
20
+ return (0, result_js_1.exception2Result)(() => activeStreams[i].cancel());
21
21
  return [];
22
22
  }));
23
- activeStreams = activeStreams.filter((_, i) => writeResults[i].status === "fulfilled");
23
+ activeStreams = activeStreams.filter((_, i) => writeResults[i].status === "fulfilled" && writeResults[i].value.isOk());
24
24
  }
25
25
  if (activeStreams.length === 0) {
26
- await reader.cancel();
26
+ await (0, result_js_1.exception2Result)(() => reader.cancel());
27
27
  return result_js_1.Result.Err(new Error("all peers failed"));
28
28
  }
29
- const [winner, ...losers] = activeStreams;
30
- await Promise.allSettled([winner.close(), ...losers.map((stream) => stream.cancel())]);
31
- return result_js_1.Result.Ok({ peer: winner });
29
+ while (activeStreams.length >= 1) {
30
+ const [winner, ...losers] = activeStreams;
31
+ const rClose = await (0, result_js_1.exception2Result)(() => winner.close());
32
+ if (rClose.isOk()) {
33
+ await Promise.allSettled(losers.map((stream) => (0, result_js_1.exception2Result)(() => stream.cancel())));
34
+ return result_js_1.Result.Ok({ peer: winner });
35
+ }
36
+ activeStreams = losers;
37
+ }
38
+ return result_js_1.Result.Err("all peers failed to close successfully");
32
39
  }
33
40
  //# sourceMappingURL=tee-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tee-writer.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":";;;AAAA,4CAAwD;AAiBjD,KAAK,oBAAoB,KAAa,EAAE,QAAoC,EAAgC;IACjH,IAAI,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACnF,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,IAAA,4BAAgB,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,kBAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,OAAO,CAAC,UAAU,CACtB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,CAAC;QAAA,CACX,CAAC,CACH,CAAC;QACF,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE/B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,kBAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC;IAC1C,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,kBAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA,CACpC"}
1
+ {"version":3,"file":"tee-writer.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export interface PeerStream<C = Uint8Array> {
5
5
  close: () => Promise<void>;
6
6
  }
7
7
  export interface Peer<C = Uint8Array> {
8
- begin: () => Promise<PeerStream<C>>;
8
+ begin: () => Promise<Result<PeerStream<C>>>;
9
9
  }
10
10
  export interface TeeWriterOk {
11
11
  readonly peer: PeerStream;
@@ -1 +1 @@
1
- {"version":3,"file":"tee-writer.d.ts","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,UAAU;IACxC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAE5B;AACD,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,UAAU;IAClC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAE3B;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CA+BjH"}
1
+ {"version":3,"file":"tee-writer.d.ts","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,UAAU;IACxC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAE5B;AACD,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,UAAU;IAClC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAE3B;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAuCjH"}
@@ -2,16 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const tee_writer_js_1 = require("./tee-writer.cjs");
5
- function makeStream(chunks) {
6
- return new ReadableStream({
7
- start(controller) {
8
- for (const chunk of chunks) {
9
- controller.enqueue(chunk);
10
- }
11
- controller.close();
12
- },
13
- });
14
- }
5
+ const result_js_1 = require("../result.cjs");
6
+ const string2stream_js_1 = require("./string2stream.cjs");
15
7
  function makePeerStream(overrides = {}) {
16
8
  return {
17
9
  write: vitest_1.vi.fn().mockResolvedValue(undefined),
@@ -20,8 +12,8 @@ function makePeerStream(overrides = {}) {
20
12
  ...overrides,
21
13
  };
22
14
  }
23
- function makePeer(peerStream) {
24
- return { begin: vitest_1.vi.fn().mockResolvedValue(peerStream) };
15
+ function makePeer(peerStream, overrides = {}) {
16
+ return { begin: vitest_1.vi.fn().mockResolvedValue(result_js_1.Result.Ok(peerStream)), ...overrides };
25
17
  }
26
18
  (0, vitest_1.describe)("teeWriter", () => {
27
19
  const chunk1 = new Uint8Array([1, 2, 3]);
@@ -29,7 +21,7 @@ function makePeer(peerStream) {
29
21
  (0, vitest_1.it)("writes all chunks to a single peer and commits", async () => {
30
22
  const ps = makePeerStream();
31
23
  const peer = makePeer(ps);
32
- const result = await (0, tee_writer_js_1.teeWriter)([peer], makeStream([chunk1, chunk2]));
24
+ const result = await (0, tee_writer_js_1.teeWriter)([peer], (0, string2stream_js_1.uint8array2stream)(chunk1, chunk2));
33
25
  (0, vitest_1.expect)(result.isOk()).toBe(true);
34
26
  const { peer: winnerPeer } = result.Ok();
35
27
  (0, vitest_1.expect)(winnerPeer).toBe(ps);
@@ -42,7 +34,7 @@ function makePeer(peerStream) {
42
34
  const ps1 = makePeerStream();
43
35
  const ps2 = makePeerStream();
44
36
  const ps3 = makePeerStream();
45
- const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2), makePeer(ps3)], makeStream([chunk1]));
37
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2), makePeer(ps3)], (0, string2stream_js_1.uint8array2stream)(chunk1));
46
38
  (0, vitest_1.expect)(result.isOk()).toBe(true);
47
39
  const { peer: winnerPeer } = result.Ok();
48
40
  (0, vitest_1.expect)(winnerPeer).toBe(ps1);
@@ -62,7 +54,7 @@ function makePeer(peerStream) {
62
54
  .mockRejectedValueOnce(new Error("write failed")),
63
55
  });
64
56
  const ps2 = makePeerStream();
65
- const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], makeStream([chunk1, chunk2]));
57
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], (0, string2stream_js_1.uint8array2stream)(chunk1, chunk2));
66
58
  (0, vitest_1.expect)(result.isOk()).toBe(true);
67
59
  const { peer: winnerPeer } = result.Ok();
68
60
  (0, vitest_1.expect)(winnerPeer).toBe(ps2);
@@ -76,14 +68,14 @@ function makePeer(peerStream) {
76
68
  const ps2 = makePeerStream({
77
69
  write: vitest_1.vi.fn().mockRejectedValue(new Error("fail")),
78
70
  });
79
- const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], makeStream([chunk1]));
71
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], (0, string2stream_js_1.uint8array2stream)(chunk1));
80
72
  (0, vitest_1.expect)(result.isErr()).toBe(true);
81
73
  (0, vitest_1.expect)(result.Err().message).toMatch(/all peers failed/);
82
74
  });
83
75
  (0, vitest_1.it)("returns the first peer on an empty stream", async () => {
84
76
  const ps1 = makePeerStream();
85
77
  const ps2 = makePeerStream();
86
- const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], makeStream([]));
78
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps1), makePeer(ps2)], (0, string2stream_js_1.uint8array2stream)());
87
79
  (0, vitest_1.expect)(result.isOk()).toBe(true);
88
80
  const { peer: winnerPeer } = result.Ok();
89
81
  (0, vitest_1.expect)(winnerPeer).toBe(ps1);
@@ -93,7 +85,7 @@ function makePeer(peerStream) {
93
85
  });
94
86
  (0, vitest_1.it)("returns Err when all peers fail on begin", async () => {
95
87
  const failPeer = { begin: vitest_1.vi.fn().mockRejectedValue(new Error("begin failed")) };
96
- const result = await (0, tee_writer_js_1.teeWriter)([failPeer, failPeer], makeStream([chunk1]));
88
+ const result = await (0, tee_writer_js_1.teeWriter)([failPeer, failPeer], (0, string2stream_js_1.uint8array2stream)(chunk1));
97
89
  (0, vitest_1.expect)(result.isErr()).toBe(true);
98
90
  (0, vitest_1.expect)(result.Err().message).toMatch(/all peers failed/);
99
91
  });
@@ -101,7 +93,7 @@ function makePeer(peerStream) {
101
93
  const ps = makePeerStream();
102
94
  const goodPeer = makePeer(ps);
103
95
  const badPeer = { begin: vitest_1.vi.fn().mockRejectedValue(new Error("begin failed")) };
104
- const result = await (0, tee_writer_js_1.teeWriter)([badPeer, goodPeer], makeStream([chunk1]));
96
+ const result = await (0, tee_writer_js_1.teeWriter)([badPeer, goodPeer], (0, string2stream_js_1.uint8array2stream)(chunk1));
105
97
  (0, vitest_1.expect)(result.isOk()).toBe(true);
106
98
  const { peer: winnerPeer } = result.Ok();
107
99
  (0, vitest_1.expect)(winnerPeer).toBe(ps);
@@ -109,7 +101,7 @@ function makePeer(peerStream) {
109
101
  });
110
102
  (0, vitest_1.it)("commit delegates name argument to the winning peer", async () => {
111
103
  const ps = makePeerStream();
112
- const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps)], makeStream([]));
104
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(ps)], (0, string2stream_js_1.uint8array2stream)());
113
105
  (0, vitest_1.expect)(result.isOk()).toBe(true);
114
106
  (0, vitest_1.expect)(ps.cancel).not.toHaveBeenCalled();
115
107
  (0, vitest_1.expect)(ps.close).toHaveBeenCalledOnce();
@@ -194,4 +186,53 @@ function makePeer(peerStream) {
194
186
  (0, vitest_1.expect)(ps2.cancel).toHaveBeenCalled();
195
187
  });
196
188
  });
189
+ (0, vitest_1.describe)("teeWriter sync-throw", () => {
190
+ (0, vitest_1.it)("sync throw in begin() bypasses Promise.allSettled", async () => {
191
+ const survivor = makePeer(makePeerStream());
192
+ const throwing = makePeer(makePeerStream(), {
193
+ begin() {
194
+ throw new Error("sync throw in begin");
195
+ },
196
+ });
197
+ const result = await (0, tee_writer_js_1.teeWriter)([throwing, survivor], (0, string2stream_js_1.uint8array2stream)(new Uint8Array([1, 2, 3])));
198
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
199
+ (0, vitest_1.expect)(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
200
+ });
201
+ (0, vitest_1.it)("sync throw in write() bypasses Promise.allSettled", async () => {
202
+ const throwing = makePeerStream({
203
+ write() {
204
+ throw new Error("sync throw in write");
205
+ },
206
+ });
207
+ const survivor = makePeerStream();
208
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(throwing), makePeer(survivor)], (0, string2stream_js_1.uint8array2stream)(new Uint8Array([1, 2, 3])));
209
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
210
+ (0, vitest_1.expect)(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
211
+ });
212
+ (0, vitest_1.it)("sync throw in cancel() after a write failure bypasses Promise.allSettled", async () => {
213
+ const failThenThrowCancel = makePeerStream({
214
+ write() {
215
+ return Promise.reject(new Error("write failed"));
216
+ },
217
+ cancel() {
218
+ throw new Error("sync throw in cancel");
219
+ },
220
+ });
221
+ const survivor = makePeerStream();
222
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(failThenThrowCancel), makePeer(survivor)], (0, string2stream_js_1.uint8array2stream)(new Uint8Array([1, 2, 3])));
223
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
224
+ (0, vitest_1.expect)(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
225
+ });
226
+ (0, vitest_1.it)("sync throw in close() on the winner bypasses Promise.allSettled", async () => {
227
+ const survivor = makePeerStream();
228
+ const throwOnClose = makePeerStream({
229
+ close() {
230
+ throw new Error("sync throw in close");
231
+ },
232
+ });
233
+ const result = await (0, tee_writer_js_1.teeWriter)([makePeer(throwOnClose), makePeer(survivor)], (0, string2stream_js_1.uint8array2stream)(new Uint8Array([1, 2, 3])));
234
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
235
+ (0, vitest_1.expect)(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
236
+ });
237
+ });
197
238
  //# sourceMappingURL=tee-writer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tee-writer.test.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tee-writer.test.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.test.ts"],"names":[],"mappings":"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"}
package/cjs/version.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "0.5.31";
4
+ exports.VERSION = "0.5.33";
5
5
  //# sourceMappingURL=version.js.map
package/deno.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.5.31",
3
+ "version": "0.5.33",
4
4
  "license": "AFL-2.0",
5
5
  "exports": {
6
6
  ".": "./src/index.ts",
@@ -1,4 +1,4 @@
1
1
  import { TxtEnDecoder } from "../txt-en-decoder.js";
2
- export declare function string2stream(str: string, ende?: TxtEnDecoder): ReadableStream<Uint8Array>;
3
- export declare function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array>;
2
+ export declare function string2stream(strOrArray: string | string[], ende?: TxtEnDecoder): ReadableStream<Uint8Array>;
3
+ export declare function uint8array2stream(...uint8: Uint8Array[]): ReadableStream<Uint8Array>;
4
4
  //# sourceMappingURL=string2stream.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string2stream.d.ts","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAkB3E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,YAAsC,GAAG,cAAc,CAAC,UAAU,CAAC,CAEnH;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAO7E"}
1
+ {"version":3,"file":"string2stream.d.ts","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,sBAAsB,CAAC;AAkB3E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,IAAI,GAAE,YAAsC,GAC3C,cAAc,CAAC,UAAU,CAAC,CAG5B;AAgBD,wBAAgB,iBAAiB,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,CASpF"}
@@ -1,11 +1,14 @@
1
1
  import { TxtEnDecoderSingleton } from "../txt-en-decoder.js";
2
- export function string2stream(str, ende = TxtEnDecoderSingleton()) {
3
- return uint8array2stream(ende.encode(str));
2
+ export function string2stream(strOrArray, ende = TxtEnDecoderSingleton()) {
3
+ const sa = Array.isArray(strOrArray) ? strOrArray : [strOrArray];
4
+ return uint8array2stream(...sa.map((s) => ende.encode(s)));
4
5
  }
5
- export function uint8array2stream(str) {
6
+ export function uint8array2stream(...uint8) {
6
7
  return new ReadableStream({
7
8
  start(controller) {
8
- controller.enqueue(str);
9
+ for (const chunk of uint8) {
10
+ controller.enqueue(chunk);
11
+ }
9
12
  controller.close();
10
13
  },
11
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"string2stream.js","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAkB3E,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAI,GAAiB,qBAAqB,EAAE,EAA8B;IACnH,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,CAC5C;AAgBD,MAAM,UAAU,iBAAiB,CAAC,GAAe,EAA8B;IAC7E,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,UAAU,EAAQ;YACtB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QAAA,CACpB;KACF,CAAC,CAAC;AAAA,CACJ"}
1
+ {"version":3,"file":"string2stream.js","sourceRoot":"","sources":["../../../../src/utils/string2stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAkB3E,MAAM,UAAU,aAAa,CAC3B,UAA6B,EAC7B,IAAI,GAAiB,qBAAqB,EAAE,EAChB;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACjE,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,CAC5D;AAgBD,MAAM,UAAU,iBAAiB,CAAC,GAAG,KAAmB,EAA8B;IACpF,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,UAAU,EAAQ;YACtB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,UAAU,CAAC,KAAK,EAAE,CAAC;QAAA,CACpB;KACF,CAAC,CAAC;AAAA,CACJ"}
@@ -5,7 +5,7 @@ export interface PeerStream<C = Uint8Array> {
5
5
  close: () => Promise<void>;
6
6
  }
7
7
  export interface Peer<C = Uint8Array> {
8
- begin: () => Promise<PeerStream<C>>;
8
+ begin: () => Promise<Result<PeerStream<C>>>;
9
9
  }
10
10
  export interface TeeWriterOk {
11
11
  readonly peer: PeerStream;
@@ -1 +1 @@
1
- {"version":3,"file":"tee-writer.d.ts","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,UAAU;IACxC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAE5B;AACD,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,UAAU;IAClC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAE3B;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CA+BjH"}
1
+ {"version":3,"file":"tee-writer.d.ts","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,UAAU;IACxC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAE5B;AACD,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,UAAU;IAClC,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAE3B;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAuCjH"}
@@ -1,6 +1,6 @@
1
1
  import { exception2Result, Result } from "../result.js";
2
2
  export async function teeWriter(peers, inStream) {
3
- let activeStreams = await Promise.allSettled(peers.map((p) => p.begin())).then((r) => r.flatMap((r) => (r.status === "fulfilled" ? [r.value] : [])));
3
+ let activeStreams = await Promise.allSettled(peers.map((p) => exception2Result(() => p.begin()))).then((r) => r.flatMap((r) => (r.status === "fulfilled" && r.value.isOk() ? [r.value.Ok()] : [])));
4
4
  const reader = inStream.getReader();
5
5
  while (activeStreams.length > 0) {
6
6
  const rRead = await exception2Result(() => reader.read());
@@ -11,20 +11,27 @@ export async function teeWriter(peers, inStream) {
11
11
  const { value, done } = rRead.Ok();
12
12
  if (done)
13
13
  break;
14
- const writeResults = await Promise.allSettled(activeStreams.map((stream) => stream.write(value)));
14
+ const writeResults = await Promise.allSettled(activeStreams.map((stream) => exception2Result(() => stream.write(value))));
15
15
  await Promise.allSettled(writeResults.flatMap((r, i) => {
16
- if (r.status === "rejected")
17
- return [activeStreams[i].cancel()];
16
+ if (r.status === "rejected" || r.value.isErr())
17
+ return exception2Result(() => activeStreams[i].cancel());
18
18
  return [];
19
19
  }));
20
- activeStreams = activeStreams.filter((_, i) => writeResults[i].status === "fulfilled");
20
+ activeStreams = activeStreams.filter((_, i) => writeResults[i].status === "fulfilled" && writeResults[i].value.isOk());
21
21
  }
22
22
  if (activeStreams.length === 0) {
23
- await reader.cancel();
23
+ await exception2Result(() => reader.cancel());
24
24
  return Result.Err(new Error("all peers failed"));
25
25
  }
26
- const [winner, ...losers] = activeStreams;
27
- await Promise.allSettled([winner.close(), ...losers.map((stream) => stream.cancel())]);
28
- return Result.Ok({ peer: winner });
26
+ while (activeStreams.length >= 1) {
27
+ const [winner, ...losers] = activeStreams;
28
+ const rClose = await exception2Result(() => winner.close());
29
+ if (rClose.isOk()) {
30
+ await Promise.allSettled(losers.map((stream) => exception2Result(() => stream.cancel())));
31
+ return Result.Ok({ peer: winner });
32
+ }
33
+ activeStreams = losers;
34
+ }
35
+ return Result.Err("all peers failed to close successfully");
29
36
  }
30
37
  //# sourceMappingURL=tee-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tee-writer.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAiBxD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,QAAoC,EAAgC;IACjH,IAAI,aAAa,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACnF,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;IACpC,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,OAAO,CAAC,UAAU,CACtB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,CAAC;QAAA,CACX,CAAC,CACH,CAAC;QACF,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE/B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC;IAC1C,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA,CACpC"}
1
+ {"version":3,"file":"tee-writer.js","sourceRoot":"","sources":["../../../../src/utils/tee-writer.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,7 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
2
  import { teeWriter } from "./tee-writer.js";
3
- function makeStream(chunks) {
4
- return new ReadableStream({
5
- start(controller) {
6
- for (const chunk of chunks) {
7
- controller.enqueue(chunk);
8
- }
9
- controller.close();
10
- },
11
- });
12
- }
3
+ import { Result } from "../result.js";
4
+ import { uint8array2stream } from "./string2stream.js";
13
5
  function makePeerStream(overrides = {}) {
14
6
  return {
15
7
  write: vi.fn().mockResolvedValue(undefined),
@@ -18,8 +10,8 @@ function makePeerStream(overrides = {}) {
18
10
  ...overrides,
19
11
  };
20
12
  }
21
- function makePeer(peerStream) {
22
- return { begin: vi.fn().mockResolvedValue(peerStream) };
13
+ function makePeer(peerStream, overrides = {}) {
14
+ return { begin: vi.fn().mockResolvedValue(Result.Ok(peerStream)), ...overrides };
23
15
  }
24
16
  describe("teeWriter", () => {
25
17
  const chunk1 = new Uint8Array([1, 2, 3]);
@@ -27,7 +19,7 @@ describe("teeWriter", () => {
27
19
  it("writes all chunks to a single peer and commits", async () => {
28
20
  const ps = makePeerStream();
29
21
  const peer = makePeer(ps);
30
- const result = await teeWriter([peer], makeStream([chunk1, chunk2]));
22
+ const result = await teeWriter([peer], uint8array2stream(chunk1, chunk2));
31
23
  expect(result.isOk()).toBe(true);
32
24
  const { peer: winnerPeer } = result.Ok();
33
25
  expect(winnerPeer).toBe(ps);
@@ -40,7 +32,7 @@ describe("teeWriter", () => {
40
32
  const ps1 = makePeerStream();
41
33
  const ps2 = makePeerStream();
42
34
  const ps3 = makePeerStream();
43
- const result = await teeWriter([makePeer(ps1), makePeer(ps2), makePeer(ps3)], makeStream([chunk1]));
35
+ const result = await teeWriter([makePeer(ps1), makePeer(ps2), makePeer(ps3)], uint8array2stream(chunk1));
44
36
  expect(result.isOk()).toBe(true);
45
37
  const { peer: winnerPeer } = result.Ok();
46
38
  expect(winnerPeer).toBe(ps1);
@@ -60,7 +52,7 @@ describe("teeWriter", () => {
60
52
  .mockRejectedValueOnce(new Error("write failed")),
61
53
  });
62
54
  const ps2 = makePeerStream();
63
- const result = await teeWriter([makePeer(ps1), makePeer(ps2)], makeStream([chunk1, chunk2]));
55
+ const result = await teeWriter([makePeer(ps1), makePeer(ps2)], uint8array2stream(chunk1, chunk2));
64
56
  expect(result.isOk()).toBe(true);
65
57
  const { peer: winnerPeer } = result.Ok();
66
58
  expect(winnerPeer).toBe(ps2);
@@ -74,14 +66,14 @@ describe("teeWriter", () => {
74
66
  const ps2 = makePeerStream({
75
67
  write: vi.fn().mockRejectedValue(new Error("fail")),
76
68
  });
77
- const result = await teeWriter([makePeer(ps1), makePeer(ps2)], makeStream([chunk1]));
69
+ const result = await teeWriter([makePeer(ps1), makePeer(ps2)], uint8array2stream(chunk1));
78
70
  expect(result.isErr()).toBe(true);
79
71
  expect(result.Err().message).toMatch(/all peers failed/);
80
72
  });
81
73
  it("returns the first peer on an empty stream", async () => {
82
74
  const ps1 = makePeerStream();
83
75
  const ps2 = makePeerStream();
84
- const result = await teeWriter([makePeer(ps1), makePeer(ps2)], makeStream([]));
76
+ const result = await teeWriter([makePeer(ps1), makePeer(ps2)], uint8array2stream());
85
77
  expect(result.isOk()).toBe(true);
86
78
  const { peer: winnerPeer } = result.Ok();
87
79
  expect(winnerPeer).toBe(ps1);
@@ -91,7 +83,7 @@ describe("teeWriter", () => {
91
83
  });
92
84
  it("returns Err when all peers fail on begin", async () => {
93
85
  const failPeer = { begin: vi.fn().mockRejectedValue(new Error("begin failed")) };
94
- const result = await teeWriter([failPeer, failPeer], makeStream([chunk1]));
86
+ const result = await teeWriter([failPeer, failPeer], uint8array2stream(chunk1));
95
87
  expect(result.isErr()).toBe(true);
96
88
  expect(result.Err().message).toMatch(/all peers failed/);
97
89
  });
@@ -99,7 +91,7 @@ describe("teeWriter", () => {
99
91
  const ps = makePeerStream();
100
92
  const goodPeer = makePeer(ps);
101
93
  const badPeer = { begin: vi.fn().mockRejectedValue(new Error("begin failed")) };
102
- const result = await teeWriter([badPeer, goodPeer], makeStream([chunk1]));
94
+ const result = await teeWriter([badPeer, goodPeer], uint8array2stream(chunk1));
103
95
  expect(result.isOk()).toBe(true);
104
96
  const { peer: winnerPeer } = result.Ok();
105
97
  expect(winnerPeer).toBe(ps);
@@ -107,7 +99,7 @@ describe("teeWriter", () => {
107
99
  });
108
100
  it("commit delegates name argument to the winning peer", async () => {
109
101
  const ps = makePeerStream();
110
- const result = await teeWriter([makePeer(ps)], makeStream([]));
102
+ const result = await teeWriter([makePeer(ps)], uint8array2stream());
111
103
  expect(result.isOk()).toBe(true);
112
104
  expect(ps.cancel).not.toHaveBeenCalled();
113
105
  expect(ps.close).toHaveBeenCalledOnce();
@@ -192,4 +184,53 @@ describe("teeWriter resilience", () => {
192
184
  expect(ps2.cancel).toHaveBeenCalled();
193
185
  });
194
186
  });
187
+ describe("teeWriter sync-throw", () => {
188
+ it("sync throw in begin() bypasses Promise.allSettled", async () => {
189
+ const survivor = makePeer(makePeerStream());
190
+ const throwing = makePeer(makePeerStream(), {
191
+ begin() {
192
+ throw new Error("sync throw in begin");
193
+ },
194
+ });
195
+ const result = await teeWriter([throwing, survivor], uint8array2stream(new Uint8Array([1, 2, 3])));
196
+ expect(result.isOk()).toBe(true);
197
+ expect(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
198
+ });
199
+ it("sync throw in write() bypasses Promise.allSettled", async () => {
200
+ const throwing = makePeerStream({
201
+ write() {
202
+ throw new Error("sync throw in write");
203
+ },
204
+ });
205
+ const survivor = makePeerStream();
206
+ const result = await teeWriter([makePeer(throwing), makePeer(survivor)], uint8array2stream(new Uint8Array([1, 2, 3])));
207
+ expect(result.isOk()).toBe(true);
208
+ expect(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
209
+ });
210
+ it("sync throw in cancel() after a write failure bypasses Promise.allSettled", async () => {
211
+ const failThenThrowCancel = makePeerStream({
212
+ write() {
213
+ return Promise.reject(new Error("write failed"));
214
+ },
215
+ cancel() {
216
+ throw new Error("sync throw in cancel");
217
+ },
218
+ });
219
+ const survivor = makePeerStream();
220
+ const result = await teeWriter([makePeer(failThenThrowCancel), makePeer(survivor)], uint8array2stream(new Uint8Array([1, 2, 3])));
221
+ expect(result.isOk()).toBe(true);
222
+ expect(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
223
+ });
224
+ it("sync throw in close() on the winner bypasses Promise.allSettled", async () => {
225
+ const survivor = makePeerStream();
226
+ const throwOnClose = makePeerStream({
227
+ close() {
228
+ throw new Error("sync throw in close");
229
+ },
230
+ });
231
+ const result = await teeWriter([makePeer(throwOnClose), makePeer(survivor)], uint8array2stream(new Uint8Array([1, 2, 3])));
232
+ expect(result.isOk()).toBe(true);
233
+ expect(result.Ok().peer.write).toHaveBeenCalledWith(new Uint8Array([1, 2, 3]));
234
+ });
235
+ });
195
236
  //# sourceMappingURL=tee-writer.test.js.map