@floegence/flowersec-core 2.3.5 → 2.3.7

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 (61) hide show
  1. package/README.md +33 -42
  2. package/THIRD_PARTY_NOTICES.md +4 -79
  3. package/dist/cli.js +31 -31
  4. package/dist/connectionController.d.ts +1 -0
  5. package/dist/connectionController.js +3 -0
  6. package/dist/connector/adapters/rawQuicCandidate.d.ts +5 -0
  7. package/dist/connector/adapters/rawQuicCandidate.js +71 -0
  8. package/dist/connector/sessionAcceptor.d.ts +22 -2
  9. package/dist/connector/sessionAcceptor.js +51 -21
  10. package/dist/connector/sessionConnector.d.ts +2 -0
  11. package/dist/connector/sessionConnector.js +4 -1
  12. package/dist/interop/proxyServerPeer.d.ts +1 -0
  13. package/dist/interop/proxyServerPeer.js +83 -0
  14. package/dist/interop/serverParityPeer.d.ts +1 -0
  15. package/dist/interop/serverParityPeer.js +608 -0
  16. package/dist/node/acceptor.d.ts +31 -19
  17. package/dist/node/acceptor.js +360 -70
  18. package/dist/node/connectSession.d.ts +2 -1
  19. package/dist/node/connectSession.js +22 -12
  20. package/dist/node/controlplane.d.ts +137 -0
  21. package/dist/node/controlplane.js +439 -0
  22. package/dist/node/index.d.ts +8 -2
  23. package/dist/node/index.js +4 -1
  24. package/dist/node/nativeTransportAddon.d.ts +94 -0
  25. package/dist/node/nativeTransportAddon.js +166 -0
  26. package/dist/node/proxyServer.d.ts +31 -0
  27. package/dist/node/proxyServer.js +572 -0
  28. package/dist/node/rawQuicAdapter.d.ts +9 -0
  29. package/dist/node/rawQuicAdapter.js +107 -0
  30. package/dist/node/rawQuicServer.d.ts +24 -0
  31. package/dist/node/rawQuicServer.js +37 -0
  32. package/dist/node/runtimeCapability.d.ts +8 -1
  33. package/dist/node/runtimeCapability.js +20 -6
  34. package/dist/node/tunnelRuntime.d.ts +42 -0
  35. package/dist/node/tunnelRuntime.js +552 -0
  36. package/dist/node/webSocketServer.d.ts +24 -0
  37. package/dist/node/webSocketServer.js +135 -0
  38. package/dist/public/contract.d.ts +4 -3
  39. package/dist/transport/webSocketAdapter.d.ts +7 -0
  40. package/dist/transport/webSocketAdapter.js +136 -0
  41. package/dist/v2/artifact.js +1 -1
  42. package/dist/v2/capability.js +1 -1
  43. package/dist/v2/carrier.d.ts +4 -1
  44. package/dist/v2/carrier.js +2 -2
  45. package/dist/v2/handshake.js +7 -7
  46. package/dist/v2/protocol.js +5 -5
  47. package/dist/v2/publicSession.js +25 -7
  48. package/dist/v2/retryDisposition.js +4 -4
  49. package/dist/v2/session.d.ts +2 -2
  50. package/dist/v2/session.js +3 -3
  51. package/dist/v2/unreliableMessage.js +4 -4
  52. package/dist/vendor/tr46.js +11 -6
  53. package/dist/ws-client/binaryTransport.d.ts +3 -0
  54. package/dist/ws-client/binaryTransport.js +14 -0
  55. package/package.json +19 -16
  56. package/sbom/cyclonedx.json +52 -2585
  57. package/sbom/spdx.json +56 -1826
  58. package/dist/node/webTransportClient.d.ts +0 -9
  59. package/dist/node/webTransportClient.js +0 -56
  60. package/dist/node/webTransportServer.d.ts +0 -22
  61. package/dist/node/webTransportServer.js +0 -100
@@ -1,9 +0,0 @@
1
- import type { NativeCarrierSessionV2 } from "../v2/carrier.js";
2
- import type { PathKind } from "../v2/contract.js";
3
- export type NodeWebTransportClientOptionsV2 = Readonly<{
4
- path: PathKind;
5
- inboundBidirectionalStreamCapacity: number;
6
- signal?: AbortSignal;
7
- serverCertificateHash?: Uint8Array;
8
- }>;
9
- export declare function createNodeWebTransportClientV2(url: string, options: NodeWebTransportClientOptionsV2): Promise<NativeCarrierSessionV2>;
@@ -1,56 +0,0 @@
1
- import { adaptWebTransportCarrierSessionV2 } from "../transport/webTransportAdapter.js";
2
- import { RuntimeError } from "../runtime/errors.js";
3
- export async function createNodeWebTransportClientV2(url, options) {
4
- let parsed;
5
- try {
6
- parsed = new URL(url);
7
- }
8
- catch (error) {
9
- throw new RuntimeError("runtime_start_failed", "Node WebTransport URL is invalid", error);
10
- }
11
- if (parsed.protocol !== "https:" || parsed.username !== "" || parsed.password !== "") {
12
- throw new RuntimeError("runtime_start_failed", "Node WebTransport requires an HTTPS URL without credentials");
13
- }
14
- if (options.signal?.aborted === true)
15
- throw options.signal.reason;
16
- let transport;
17
- try {
18
- const runtime = await loadNodeWebTransportRuntime();
19
- await raceAbort(runtime.quicheLoaded, options.signal);
20
- transport = new runtime.WebTransport(parsed.href, {
21
- requireUnreliable: true,
22
- ...(options.serverCertificateHash === undefined
23
- ? {}
24
- : { serverCertificateHashes: [{ algorithm: "sha-256", value: options.serverCertificateHash.slice() }] }),
25
- });
26
- await raceAbort(transport.ready, options.signal);
27
- return adaptWebTransportCarrierSessionV2(transport, {
28
- path: options.path,
29
- inboundBidirectionalStreamCapacity: options.inboundBidirectionalStreamCapacity,
30
- datagramMaxSize: 1_200,
31
- });
32
- }
33
- catch (error) {
34
- transport?.close({ closeCode: 6, reason: "Node WebTransport start failed" });
35
- if (error instanceof RuntimeError)
36
- throw error;
37
- throw new RuntimeError("runtime_start_failed", "Node WebTransport failed to start", error);
38
- }
39
- }
40
- const NODE_WEBTRANSPORT_MODULE = "@fails-components/webtransport";
41
- let runtimePromise;
42
- function loadNodeWebTransportRuntime() {
43
- runtimePromise ??= import(NODE_WEBTRANSPORT_MODULE).then((value) => value);
44
- return runtimePromise;
45
- }
46
- async function raceAbort(promise, signal) {
47
- if (signal === undefined)
48
- return await promise;
49
- if (signal.aborted)
50
- throw signal.reason;
51
- return await new Promise((resolve, reject) => {
52
- const abort = () => reject(signal.reason);
53
- signal.addEventListener("abort", abort, { once: true });
54
- void promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", abort));
55
- });
56
- }
@@ -1,22 +0,0 @@
1
- import type { NativeCarrierSessionV2 } from "../v2/carrier.js";
2
- import type { PathKind } from "../v2/contract.js";
3
- export type NodeWebTransportServerOptionsV2 = Readonly<{
4
- host: string;
5
- port: number;
6
- path: string;
7
- certificate: string;
8
- privateKey: string;
9
- carrierPath: PathKind;
10
- inboundBidirectionalStreamCapacity: number;
11
- }>;
12
- export type NodeWebTransportServerV2 = Readonly<{
13
- address(): Readonly<{
14
- host: string;
15
- port: number;
16
- }>;
17
- accept(options?: Readonly<{
18
- signal?: AbortSignal;
19
- }>): Promise<NativeCarrierSessionV2>;
20
- close(): Promise<void>;
21
- }>;
22
- export declare function startNodeWebTransportServerV2(options: NodeWebTransportServerOptionsV2): Promise<NodeWebTransportServerV2>;
@@ -1,100 +0,0 @@
1
- import { randomBytes } from "node:crypto";
2
- import { adaptWebTransportCarrierSessionV2 } from "../transport/webTransportAdapter.js";
3
- import { RuntimeError } from "../runtime/errors.js";
4
- export async function startNodeWebTransportServerV2(options) {
5
- if (!options.path.startsWith("/") || options.path.includes("?") || options.path.includes("#")) {
6
- throw new TypeError("Node WebTransport server path must be an absolute path");
7
- }
8
- if (!Number.isInteger(options.port) || options.port < 0 || options.port > 65_535) {
9
- throw new RangeError("Node WebTransport server port is invalid");
10
- }
11
- let runtime;
12
- try {
13
- runtime = await loadNodeWebTransportRuntime();
14
- await runtime.quicheLoaded;
15
- }
16
- catch (error) {
17
- throw new RuntimeError("runtime_start_failed", "Node WebTransport runtime failed to load", error);
18
- }
19
- let server;
20
- try {
21
- server = new runtime.Http3Server({
22
- host: options.host,
23
- port: options.port,
24
- secret: randomBytes(32).toString("hex"),
25
- cert: options.certificate,
26
- privKey: options.privateKey,
27
- });
28
- }
29
- catch (error) {
30
- throw new RuntimeError("runtime_start_failed", "Node WebTransport server could not be created", error);
31
- }
32
- const sessions = server.sessionStream(options.path).getReader();
33
- server.startServer();
34
- try {
35
- await server.ready;
36
- }
37
- catch (error) {
38
- server.stopServer();
39
- throw new RuntimeError("runtime_start_failed", "Node WebTransport server failed to start", error);
40
- }
41
- let closed = false;
42
- return {
43
- address() {
44
- const address = server.address();
45
- if (address === null)
46
- throw new Error("Node WebTransport server is not listening");
47
- return Object.freeze({ host: address.host, port: address.port });
48
- },
49
- async accept(acceptOptions = {}) {
50
- if (closed)
51
- throw new Error("Node WebTransport server is closed");
52
- try {
53
- const result = await raceAbort(sessions.read(), acceptOptions.signal);
54
- if (result.done || result.value === undefined) {
55
- throw new RuntimeError("runtime_crashed", "Node WebTransport server session stream closed");
56
- }
57
- await raceAbort(result.value.ready, acceptOptions.signal);
58
- return adaptWebTransportCarrierSessionV2(result.value, {
59
- path: options.carrierPath,
60
- inboundBidirectionalStreamCapacity: options.inboundBidirectionalStreamCapacity,
61
- datagramMaxSize: 1_200,
62
- });
63
- }
64
- catch (error) {
65
- if (error instanceof RuntimeError)
66
- throw error;
67
- throw new RuntimeError("runtime_crashed", "Node WebTransport server failed while accepting a session", error);
68
- }
69
- },
70
- async close() {
71
- if (closed)
72
- return;
73
- closed = true;
74
- server.stopServer();
75
- try {
76
- await server.closed;
77
- }
78
- catch (error) {
79
- throw new RuntimeError("runtime_crashed", "Node WebTransport server failed while closing", error);
80
- }
81
- },
82
- };
83
- }
84
- const NODE_WEBTRANSPORT_MODULE = "@fails-components/webtransport";
85
- let runtimePromise;
86
- function loadNodeWebTransportRuntime() {
87
- runtimePromise ??= import(NODE_WEBTRANSPORT_MODULE).then((value) => value);
88
- return runtimePromise;
89
- }
90
- async function raceAbort(promise, signal) {
91
- if (signal === undefined)
92
- return await promise;
93
- if (signal.aborted)
94
- throw signal.reason;
95
- return await new Promise((resolve, reject) => {
96
- const abort = () => reject(signal.reason);
97
- signal.addEventListener("abort", abort, { once: true });
98
- void promise.then(resolve, reject).finally(() => signal.removeEventListener("abort", abort));
99
- });
100
- }