@floegence/flowersec-core 3.0.2 → 3.0.4

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.
package/README.md CHANGED
@@ -15,7 +15,7 @@ npm install @floegence/flowersec-core
15
15
 
16
16
  - `@floegence/flowersec-core` exports the portable artifact, lease, session, stream, RPC, stream-metadata, and connection-controller API, plus profile-owned unreliable messages when negotiated.
17
17
  - `@floegence/flowersec-core/browser` adds `connect(...)`, `createConnectionController(...)`, and their options.
18
- - `@floegence/flowersec-core/node` adds the V3 `connect(...)`, `createConnectionController(...)`, direct-only `createAcceptor(...)`, opaque `createTunnelRuntime(...)`, `AcceptedSession`, `SessionHandlers`, and `RPCHandlers` APIs. Legacy V2 server, control-plane, and `ProxyServer` APIs are available only under the explicit `node.v2` namespace.
18
+ - `@floegence/flowersec-core/node` adds the V3 `connect(...)`, `createConnectionController(...)`, direct-only `createAcceptor(...)`, opaque `createTunnelRuntime(...)`, `AcceptedSession`, `SessionHandlers`, and `RPCHandlers` APIs. Legacy V2 server, control-plane, and `ProxyServer` APIs are available only under the explicit `node.v2` namespace; the Go control-plane remains the only v3 invitation issuer.
19
19
  - `@floegence/flowersec-core/proxy` adds the `Session`-based HTTP/WebSocket runtime, Service Worker and controller/app-window bridges, strict `proxy.runtime@2` validation, and `connectProxyBrowser(...)` composition.
20
20
 
21
21
  The root type exports are:
@@ -151,7 +151,8 @@ Flowersec-owned optional native addon wrapper and one of its supported
151
151
  prebuilt platform packages; it never loads from the browser entrypoint. The
152
152
  wrapper selects the matching optional package for macOS arm64/x64 or Linux
153
153
  arm64/x64 glibc. Windows and musl packages are not published. The V3 Node
154
- entrypoint keeps the control plane and `ProxyServer` behind `node.v2`; the
154
+ entrypoint keeps the legacy control plane and `ProxyServer` behind `node.v2`; it
155
+ does not issue v3 invitations, which are produced by the Go control-plane. The
155
156
  relay never terminates an E2EE Session. WebTransport is an optional adapter
156
157
  profile and the Node.js runtime
157
158
  does not currently expose a production adapter.
@@ -3,11 +3,11 @@
3
3
  This file is generated from the canonical Flowersec source dependency inventory for flowersec-ts.
4
4
  Do not edit it manually. License decisions are reviewed by the repository source license policy.
5
5
 
6
- - @floegence/flowersec-node-native 3.0.2 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
7
- - @floegence/flowersec-node-native-darwin-arm64 3.0.2 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
8
- - @floegence/flowersec-node-native-darwin-x64 3.0.2 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
9
- - @floegence/flowersec-node-native-linux-arm64-gnu 3.0.2 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
10
- - @floegence/flowersec-node-native-linux-x64-gnu 3.0.2 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
6
+ - @floegence/flowersec-node-native 3.0.4 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
7
+ - @floegence/flowersec-node-native-darwin-arm64 3.0.4 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
8
+ - @floegence/flowersec-node-native-darwin-x64 3.0.4 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
9
+ - @floegence/flowersec-node-native-linux-arm64-gnu 3.0.4 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
10
+ - @floegence/flowersec-node-native-linux-x64-gnu 3.0.4 (Declared: MIT; selected: MIT; source: https://github.com/floegence/flowersec.git)
11
11
  - @noble/ciphers 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.3.0.tgz)
12
12
  - @noble/curves 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/curves/-/curves-2.3.0.tgz)
13
13
  - @noble/hashes 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/hashes/-/hashes-2.3.0.tgz)
@@ -385,6 +385,8 @@ export function decodeStreamKeyUpdateACKV2(raw) {
385
385
  assertLogicalStreamID(value.logicalStreamID);
386
386
  if (value.transition === 0n)
387
387
  throw new ProtocolV2Error("stream rekey transition must be non-zero");
388
+ if (value.epoch === 0)
389
+ throw new ProtocolV2Error("stream rekey epoch must be non-zero");
388
390
  return value;
389
391
  }
390
392
  export function buildRecordAAD(h3, logicalStreamID, direction, rawHeader) {
@@ -135,6 +135,7 @@ export declare class SessionV2 implements SessionV2Contract {
135
135
  private idleWatchdogStarted;
136
136
  private idleTimerCancel;
137
137
  private readonly terminationState;
138
+ private readonly terminationController;
138
139
  private readonly rpcRouter;
139
140
  constructor(carrier: CarrierSessionV2, control: CarrierStreamV2, controlReader: ExactReader, config: SessionConfigV2, material: HandshakeMaterial);
140
141
  openStream(kind: string, options?: InternalStreamOpenOptionsV2): Promise<ByteStreamV2>;
@@ -149,6 +150,7 @@ export declare class SessionV2 implements SessionV2Contract {
149
150
  installReceiveRoots(epoch: number, roots: EpochRootsV2): void;
150
151
  transcriptHash(): Uint8Array;
151
152
  receiveDirectionValue(): DirectionV2;
153
+ terminationSignal(): AbortSignal;
152
154
  sendStreamRecord(stream: EncryptedStreamV2, type: InnerTypeV2, payload: Uint8Array, signal?: AbortSignal): Promise<void>;
153
155
  readStreamRecord(stream: EncryptedStreamV2): Promise<Readonly<{
154
156
  type: InnerTypeV2;
@@ -238,6 +240,7 @@ declare class EncryptedStreamV2 implements ByteStreamV2 {
238
240
  private pendingSendRekey;
239
241
  private lastSendRekeyACK;
240
242
  private receiveRekey;
243
+ private receiveRekeyChanged;
241
244
  constructor(session: SessionV2, carrier: CarrierStreamV2, id: bigint, kind: string, sendEpoch: number, receiveEpoch: number, permitRelease: () => void, reader?: ExactReader);
242
245
  read(options?: OperationOptionsV2): Promise<Uint8Array | null>;
243
246
  write(payload: Uint8Array, options?: OperationOptionsV2): Promise<number>;
@@ -253,6 +256,7 @@ declare class EncryptedStreamV2 implements ByteStreamV2 {
253
256
  }>;
254
257
  waitReceiveRekey(transition: bigint, epoch: number, signal?: AbortSignal): Promise<void>;
255
258
  publishReceiveRekey(transition: bigint, epoch: number): void;
259
+ private notifyReceiveRekeyChanged;
256
260
  startPump(): void;
257
261
  markOpen(): void;
258
262
  markTerminal(error: Error): boolean;
@@ -140,6 +140,7 @@ export class SessionV2 {
140
140
  idleWatchdogStarted = false;
141
141
  idleTimerCancel;
142
142
  terminationState = deferred();
143
+ terminationController = new AbortController();
143
144
  rpcRouter;
144
145
  constructor(carrier, control, controlReader, config, material) {
145
146
  this.carrier = carrier;
@@ -269,6 +270,9 @@ export class SessionV2 {
269
270
  receiveDirectionValue() {
270
271
  return this.receiveDirection;
271
272
  }
273
+ terminationSignal() {
274
+ return this.terminationController.signal;
275
+ }
272
276
  async sendStreamRecord(stream, type, payload, signal) {
273
277
  this.assertOpen();
274
278
  const inner = encodeInnerRecordV2(type, payload);
@@ -1080,6 +1084,7 @@ export class SessionV2 {
1080
1084
  fail(error, abortCarrier = true) {
1081
1085
  if (this.lifecycle === "closed")
1082
1086
  return;
1087
+ this.terminationController.abort(error);
1083
1088
  this.controlTerminalSealed = true;
1084
1089
  this.beginClosing();
1085
1090
  const normalPeerCarrierClose = this.sessionCloseCommitted && error instanceof CarrierError && error.code === "closed";
@@ -1147,6 +1152,7 @@ class EncryptedStreamV2 {
1147
1152
  pendingSendRekey;
1148
1153
  lastSendRekeyACK;
1149
1154
  receiveRekey;
1155
+ receiveRekeyChanged = deferred();
1150
1156
  constructor(session, carrier, id, kind, sendEpoch, receiveEpoch, permitRelease, reader) {
1151
1157
  this.session = session;
1152
1158
  this.carrier = carrier;
@@ -1256,7 +1262,7 @@ class EncryptedStreamV2 {
1256
1262
  await raceAbort(pending.acknowledged.promise, signal);
1257
1263
  return;
1258
1264
  }
1259
- await raceAbort(new Promise((resolve) => setTimeout(resolve, 0)), signal);
1265
+ await raceAbort(this.receiveRekeyChanged.promise, signal);
1260
1266
  if (this.terminalError !== undefined || this.remoteFIN)
1261
1267
  return;
1262
1268
  }
@@ -1266,6 +1272,11 @@ class EncryptedStreamV2 {
1266
1272
  this.receiveRekey = undefined;
1267
1273
  }
1268
1274
  }
1275
+ notifyReceiveRekeyChanged() {
1276
+ const changed = this.receiveRekeyChanged;
1277
+ this.receiveRekeyChanged = deferred();
1278
+ changed.resolve();
1279
+ }
1269
1280
  startPump() {
1270
1281
  if (this.pumpStarted)
1271
1282
  return;
@@ -1283,6 +1294,7 @@ class EncryptedStreamV2 {
1283
1294
  this.pendingSendRekey = undefined;
1284
1295
  pendingSendRekey?.armed.reject(error);
1285
1296
  pendingSendRekey?.done.reject(error);
1297
+ this.notifyReceiveRekeyChanged();
1286
1298
  this.opened.reject(error);
1287
1299
  this.data.fail(error);
1288
1300
  return true;
@@ -1412,11 +1424,12 @@ class EncryptedStreamV2 {
1412
1424
  this.receiveSequence = 0n;
1413
1425
  const pending = { transition, epoch: nextEpoch, acknowledged: deferred() };
1414
1426
  this.receiveRekey = pending;
1427
+ this.notifyReceiveRekeyChanged();
1415
1428
  await this.send(InnerTypeV2.StreamKeyUpdateACK, encodeStreamKeyUpdateACKV2({
1416
1429
  logicalStreamID: this.id,
1417
1430
  transition,
1418
1431
  epoch: nextEpoch,
1419
- }));
1432
+ }), this.session.terminationSignal());
1420
1433
  pending.acknowledged.resolve();
1421
1434
  }
1422
1435
  receiveStreamKeyUpdateACK(payload) {
@@ -405,6 +405,8 @@ export function decodeStreamKeyUpdateACKV3(raw) {
405
405
  assertLogicalStreamID(value.logicalStreamID);
406
406
  if (value.transition === 0n)
407
407
  throw new ProtocolV3Error("stream rekey transition must be non-zero");
408
+ if (value.epoch === 0)
409
+ throw new ProtocolV3Error("stream rekey epoch must be non-zero");
408
410
  return value;
409
411
  }
410
412
  export function buildRecordAAD(h3, logicalStreamID, direction, rawHeader) {
@@ -136,6 +136,7 @@ export declare class SessionV3 implements SessionV3Contract {
136
136
  private idleDeadlineMs;
137
137
  private idleTimerCancel;
138
138
  private readonly terminationState;
139
+ private readonly terminationController;
139
140
  private readonly rpcRouter;
140
141
  constructor(carrier: CarrierSessionV3, control: CarrierStreamV3, controlReader: ExactReader, config: SessionConfigV3, material: HandshakeMaterial);
141
142
  openStream(kind: string, options?: InternalStreamOpenOptionsV3): Promise<ByteStreamV3>;
@@ -150,6 +151,7 @@ export declare class SessionV3 implements SessionV3Contract {
150
151
  installReceiveRoots(epoch: number, roots: EpochRootsV3): void;
151
152
  transcriptHash(): Uint8Array;
152
153
  receiveDirectionValue(): DirectionV3;
154
+ terminationSignal(): AbortSignal;
153
155
  sendStreamRecord(stream: EncryptedStreamV3, type: InnerTypeV3, payload: Uint8Array, signal?: AbortSignal): Promise<void>;
154
156
  readStreamRecord(stream: EncryptedStreamV3): Promise<Readonly<{
155
157
  type: InnerTypeV3;
@@ -244,6 +246,7 @@ declare class EncryptedStreamV3 implements ByteStreamV3 {
244
246
  private receiveRekey;
245
247
  private readonly sendMaterials;
246
248
  private readonly receiveMaterials;
249
+ private receiveRekeyChanged;
247
250
  constructor(session: SessionV3, carrier: CarrierStreamV3, id: bigint, kind: string, sendEpoch: number, receiveEpoch: number, permitRelease: () => void, reader?: ExactReader);
248
251
  read(options?: OperationOptionsV3): Promise<Uint8Array | null>;
249
252
  write(payload: Uint8Array, options?: OperationOptionsV3): Promise<number>;
@@ -259,6 +262,7 @@ declare class EncryptedStreamV3 implements ByteStreamV3 {
259
262
  }>;
260
263
  waitReceiveRekey(transition: bigint, epoch: number, signal?: AbortSignal): Promise<void>;
261
264
  publishReceiveRekey(transition: bigint, epoch: number): void;
265
+ private notifyReceiveRekeyChanged;
262
266
  startPump(): void;
263
267
  markOpen(): void;
264
268
  markTerminal(error: Error): boolean;
@@ -143,6 +143,7 @@ export class SessionV3 {
143
143
  idleDeadlineMs;
144
144
  idleTimerCancel;
145
145
  terminationState = deferred();
146
+ terminationController = new AbortController();
146
147
  rpcRouter;
147
148
  constructor(carrier, control, controlReader, config, material) {
148
149
  this.carrier = carrier;
@@ -279,6 +280,9 @@ export class SessionV3 {
279
280
  receiveDirectionValue() {
280
281
  return this.receiveDirection;
281
282
  }
283
+ terminationSignal() {
284
+ return this.terminationController.signal;
285
+ }
282
286
  async sendStreamRecord(stream, type, payload, signal) {
283
287
  this.assertOpen();
284
288
  const inner = encodeInnerRecordV3(type, payload);
@@ -1192,6 +1196,7 @@ export class SessionV3 {
1192
1196
  fail(error, abortCarrier = true) {
1193
1197
  if (this.lifecycle === "closed")
1194
1198
  return;
1199
+ this.terminationController.abort(error);
1195
1200
  this.controlTerminalSealed = true;
1196
1201
  this.beginClosing();
1197
1202
  const pendingSessionRekey = this.pendingSessionRekey;
@@ -1265,6 +1270,7 @@ class EncryptedStreamV3 {
1265
1270
  receiveRekey;
1266
1271
  sendMaterials = new Map();
1267
1272
  receiveMaterials = new Map();
1273
+ receiveRekeyChanged = deferred();
1268
1274
  constructor(session, carrier, id, kind, sendEpoch, receiveEpoch, permitRelease, reader) {
1269
1275
  this.session = session;
1270
1276
  this.carrier = carrier;
@@ -1374,7 +1380,7 @@ class EncryptedStreamV3 {
1374
1380
  await raceAbort(pending.acknowledged.promise, signal);
1375
1381
  return;
1376
1382
  }
1377
- await raceAbort(new Promise((resolve) => setTimeout(resolve, 0)), signal);
1383
+ await raceAbort(this.receiveRekeyChanged.promise, signal);
1378
1384
  if (this.terminalError !== undefined || this.remoteFIN)
1379
1385
  return;
1380
1386
  }
@@ -1384,6 +1390,11 @@ class EncryptedStreamV3 {
1384
1390
  this.receiveRekey = undefined;
1385
1391
  }
1386
1392
  }
1393
+ notifyReceiveRekeyChanged() {
1394
+ const changed = this.receiveRekeyChanged;
1395
+ this.receiveRekeyChanged = deferred();
1396
+ changed.resolve();
1397
+ }
1387
1398
  startPump() {
1388
1399
  if (this.pumpStarted)
1389
1400
  return;
@@ -1401,6 +1412,7 @@ class EncryptedStreamV3 {
1401
1412
  this.pendingSendRekey = undefined;
1402
1413
  pendingSendRekey?.armed.reject(error);
1403
1414
  pendingSendRekey?.done.reject(error);
1415
+ this.notifyReceiveRekeyChanged();
1404
1416
  this.opened.reject(error);
1405
1417
  this.data.fail(error);
1406
1418
  return true;
@@ -1558,11 +1570,12 @@ class EncryptedStreamV3 {
1558
1570
  pruneRecordMaterials(this.receiveMaterials, new Set(this.priorACK === undefined ? [nextEpoch] : [header.epoch, nextEpoch]));
1559
1571
  const pending = { transition, epoch: nextEpoch, acknowledged: deferred() };
1560
1572
  this.receiveRekey = pending;
1573
+ this.notifyReceiveRekeyChanged();
1561
1574
  await this.send(InnerTypeV3.StreamKeyUpdateACK, encodeStreamKeyUpdateACKV3({
1562
1575
  logicalStreamID: this.id,
1563
1576
  transition,
1564
1577
  epoch: nextEpoch,
1565
- }));
1578
+ }), this.session.terminationSignal());
1566
1579
  pending.acknowledged.resolve();
1567
1580
  }
1568
1581
  receiveStreamKeyUpdateACK(payload) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/flowersec-core",
3
- "version": "3.0.2",
3
+ "version": "3.0.4",
4
4
  "description": "Flowersec core TypeScript library for carrier-neutral encrypted sessions and multiplexed streams.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -76,9 +76,6 @@
76
76
  "tr46": "5.0.0",
77
77
  "ws": "^8.21.2"
78
78
  },
79
- "optionalDependencies": {
80
- "@floegence/flowersec-node-native": "3.0.2"
81
- },
82
79
  "devDependencies": {
83
80
  "@playwright/test": "1.62.1",
84
81
  "@types/node": "^26.1.2",
@@ -95,5 +92,8 @@
95
92
  "vite": "^8.2.1",
96
93
  "vitest": "4.1.10"
97
94
  },
98
- "flowersecSourceCommit": "998295bcfd9c7f96cc96444ec0d48e268366363e"
95
+ "optionalDependencies": {
96
+ "@floegence/flowersec-node-native": "3.0.4"
97
+ },
98
+ "flowersecSourceCommit": "35dbe22a6aa1b10d53587e19a18232e2dfb2bbf4"
99
99
  }
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:83a8f008-e5ff-522d-8fc3-eccb503674cd",
4
+ "serialNumber": "urn:uuid:cff299ba-9035-5c07-8271-4cad66e78e07",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "library",
9
9
  "name": "@floegence/flowersec-core",
10
- "version": "3.0.2",
11
- "purl": "pkg:npm/%40floegence/flowersec-core@3.0.2",
12
- "bom-ref": "pkg:npm/%40floegence/flowersec-core@3.0.2"
10
+ "version": "3.0.4",
11
+ "purl": "pkg:npm/%40floegence/flowersec-core@3.0.4",
12
+ "bom-ref": "pkg:npm/%40floegence/flowersec-core@3.0.4"
13
13
  },
14
14
  "properties": [
15
15
  {
16
16
  "name": "flowersec:source-inventory-sha256",
17
- "value": "e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678"
17
+ "value": "af5a7b36732531ffcf37270c1412322cd50ddf095686ccd1bf28d2d95703edca"
18
18
  }
19
19
  ]
20
20
  },
@@ -22,9 +22,9 @@
22
22
  {
23
23
  "type": "library",
24
24
  "name": "@floegence/flowersec-node-native",
25
- "version": "3.0.2",
26
- "purl": "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
27
- "bom-ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
25
+ "version": "3.0.4",
26
+ "purl": "pkg:npm/%40floegence/flowersec-node-native@3.0.4",
27
+ "bom-ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.4",
28
28
  "licenses": [
29
29
  {
30
30
  "expression": "MIT"
@@ -50,9 +50,9 @@
50
50
  {
51
51
  "type": "library",
52
52
  "name": "@floegence/flowersec-node-native-darwin-arm64",
53
- "version": "3.0.2",
54
- "purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2",
55
- "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2",
53
+ "version": "3.0.4",
54
+ "purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.4",
55
+ "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.4",
56
56
  "licenses": [
57
57
  {
58
58
  "expression": "MIT"
@@ -78,9 +78,9 @@
78
78
  {
79
79
  "type": "library",
80
80
  "name": "@floegence/flowersec-node-native-darwin-x64",
81
- "version": "3.0.2",
82
- "purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2",
83
- "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2",
81
+ "version": "3.0.4",
82
+ "purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.4",
83
+ "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.4",
84
84
  "licenses": [
85
85
  {
86
86
  "expression": "MIT"
@@ -106,9 +106,9 @@
106
106
  {
107
107
  "type": "library",
108
108
  "name": "@floegence/flowersec-node-native-linux-arm64-gnu",
109
- "version": "3.0.2",
110
- "purl": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2",
111
- "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2",
109
+ "version": "3.0.4",
110
+ "purl": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.4",
111
+ "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.4",
112
112
  "licenses": [
113
113
  {
114
114
  "expression": "MIT"
@@ -134,9 +134,9 @@
134
134
  {
135
135
  "type": "library",
136
136
  "name": "@floegence/flowersec-node-native-linux-x64-gnu",
137
- "version": "3.0.2",
138
- "purl": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2",
139
- "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2",
137
+ "version": "3.0.4",
138
+ "purl": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.4",
139
+ "bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.4",
140
140
  "licenses": [
141
141
  {
142
142
  "expression": "MIT"
@@ -330,9 +330,9 @@
330
330
  ],
331
331
  "dependencies": [
332
332
  {
333
- "ref": "pkg:npm/%40floegence/flowersec-core@3.0.2",
333
+ "ref": "pkg:npm/%40floegence/flowersec-core@3.0.4",
334
334
  "dependsOn": [
335
- "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
335
+ "pkg:npm/%40floegence/flowersec-node-native@3.0.4",
336
336
  "pkg:npm/%40noble/ciphers@2.3.0",
337
337
  "pkg:npm/%40noble/curves@2.3.0",
338
338
  "pkg:npm/%40noble/hashes@2.3.0",
@@ -341,28 +341,28 @@
341
341
  ]
342
342
  },
343
343
  {
344
- "ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
344
+ "ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.4",
345
345
  "dependsOn": [
346
- "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2",
347
- "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2",
348
- "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2",
349
- "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2"
346
+ "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.4",
347
+ "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.4",
348
+ "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.4",
349
+ "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.4"
350
350
  ]
351
351
  },
352
352
  {
353
- "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2",
353
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.4",
354
354
  "dependsOn": []
355
355
  },
356
356
  {
357
- "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2",
357
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.4",
358
358
  "dependsOn": []
359
359
  },
360
360
  {
361
- "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2",
361
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.4",
362
362
  "dependsOn": []
363
363
  },
364
364
  {
365
- "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2",
365
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.4",
366
366
  "dependsOn": []
367
367
  },
368
368
  {
package/sbom/spdx.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "dataLicense": "CC0-1.0",
4
4
  "SPDXID": "SPDXRef-DOCUMENT",
5
5
  "name": "flowersec-ts",
6
- "documentNamespace": "https://github.com/floegence/flowersec/sbom/flowersec-ts/e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678",
6
+ "documentNamespace": "https://github.com/floegence/flowersec/sbom/flowersec-ts/af5a7b36732531ffcf37270c1412322cd50ddf095686ccd1bf28d2d95703edca",
7
7
  "creationInfo": {
8
8
  "created": "1970-01-01T00:00:00Z",
9
9
  "creators": [
@@ -13,26 +13,26 @@
13
13
  "packages": [
14
14
  {
15
15
  "name": "@floegence/flowersec-core",
16
- "SPDXID": "SPDXRef-Package-dbf050f7aea8ed6130d9",
17
- "versionInfo": "3.0.2",
16
+ "SPDXID": "SPDXRef-Package-b0bcf794da04b4bb0d33",
17
+ "versionInfo": "3.0.4",
18
18
  "downloadLocation": "NOASSERTION",
19
19
  "filesAnalyzed": false,
20
20
  "licenseConcluded": "NOASSERTION",
21
21
  "licenseDeclared": "NOASSERTION",
22
22
  "copyrightText": "NOASSERTION",
23
- "comment": "Flowersec source inventory SHA-256: e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678",
23
+ "comment": "Flowersec source inventory SHA-256: af5a7b36732531ffcf37270c1412322cd50ddf095686ccd1bf28d2d95703edca",
24
24
  "externalRefs": [
25
25
  {
26
26
  "referenceCategory": "PACKAGE-MANAGER",
27
27
  "referenceType": "purl",
28
- "referenceLocator": "pkg:npm/%40floegence/flowersec-core@3.0.2"
28
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-core@3.0.4"
29
29
  }
30
30
  ]
31
31
  },
32
32
  {
33
33
  "name": "@floegence/flowersec-node-native",
34
- "SPDXID": "SPDXRef-Package-16fa3227c088ca725b00",
35
- "versionInfo": "3.0.2",
34
+ "SPDXID": "SPDXRef-Package-e02218f14f5d8e6d4c39",
35
+ "versionInfo": "3.0.4",
36
36
  "downloadLocation": "https://github.com/floegence/flowersec.git",
37
37
  "filesAnalyzed": false,
38
38
  "licenseConcluded": "MIT",
@@ -42,14 +42,14 @@
42
42
  {
43
43
  "referenceCategory": "PACKAGE-MANAGER",
44
44
  "referenceType": "purl",
45
- "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native@3.0.2"
45
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native@3.0.4"
46
46
  }
47
47
  ]
48
48
  },
49
49
  {
50
50
  "name": "@floegence/flowersec-node-native-darwin-arm64",
51
- "SPDXID": "SPDXRef-Package-caeafda50d3a551d90e0",
52
- "versionInfo": "3.0.2",
51
+ "SPDXID": "SPDXRef-Package-0172623f618b3a03e11f",
52
+ "versionInfo": "3.0.4",
53
53
  "downloadLocation": "https://github.com/floegence/flowersec.git",
54
54
  "filesAnalyzed": false,
55
55
  "licenseConcluded": "MIT",
@@ -59,14 +59,14 @@
59
59
  {
60
60
  "referenceCategory": "PACKAGE-MANAGER",
61
61
  "referenceType": "purl",
62
- "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2"
62
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.4"
63
63
  }
64
64
  ]
65
65
  },
66
66
  {
67
67
  "name": "@floegence/flowersec-node-native-darwin-x64",
68
- "SPDXID": "SPDXRef-Package-79f8dd2de6e6db1eceb0",
69
- "versionInfo": "3.0.2",
68
+ "SPDXID": "SPDXRef-Package-413ba6178e801251e1ee",
69
+ "versionInfo": "3.0.4",
70
70
  "downloadLocation": "https://github.com/floegence/flowersec.git",
71
71
  "filesAnalyzed": false,
72
72
  "licenseConcluded": "MIT",
@@ -76,14 +76,14 @@
76
76
  {
77
77
  "referenceCategory": "PACKAGE-MANAGER",
78
78
  "referenceType": "purl",
79
- "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2"
79
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.4"
80
80
  }
81
81
  ]
82
82
  },
83
83
  {
84
84
  "name": "@floegence/flowersec-node-native-linux-arm64-gnu",
85
- "SPDXID": "SPDXRef-Package-a9533873018bd175ddef",
86
- "versionInfo": "3.0.2",
85
+ "SPDXID": "SPDXRef-Package-ec8a15951af6659e94c7",
86
+ "versionInfo": "3.0.4",
87
87
  "downloadLocation": "https://github.com/floegence/flowersec.git",
88
88
  "filesAnalyzed": false,
89
89
  "licenseConcluded": "MIT",
@@ -93,14 +93,14 @@
93
93
  {
94
94
  "referenceCategory": "PACKAGE-MANAGER",
95
95
  "referenceType": "purl",
96
- "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2"
96
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.4"
97
97
  }
98
98
  ]
99
99
  },
100
100
  {
101
101
  "name": "@floegence/flowersec-node-native-linux-x64-gnu",
102
- "SPDXID": "SPDXRef-Package-46c53b352dd101157f70",
103
- "versionInfo": "3.0.2",
102
+ "SPDXID": "SPDXRef-Package-9ac371e45870cc2a2296",
103
+ "versionInfo": "3.0.4",
104
104
  "downloadLocation": "https://github.com/floegence/flowersec.git",
105
105
  "filesAnalyzed": false,
106
106
  "licenseConcluded": "MIT",
@@ -110,7 +110,7 @@
110
110
  {
111
111
  "referenceCategory": "PACKAGE-MANAGER",
112
112
  "referenceType": "purl",
113
- "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2"
113
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.4"
114
114
  }
115
115
  ]
116
116
  },
@@ -221,57 +221,57 @@
221
221
  {
222
222
  "spdxElementId": "SPDXRef-DOCUMENT",
223
223
  "relationshipType": "DESCRIBES",
224
- "relatedSpdxElement": "SPDXRef-Package-dbf050f7aea8ed6130d9"
224
+ "relatedSpdxElement": "SPDXRef-Package-b0bcf794da04b4bb0d33"
225
225
  },
226
226
  {
227
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
227
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
228
228
  "relationshipType": "DEPENDS_ON",
229
- "relatedSpdxElement": "SPDXRef-Package-16fa3227c088ca725b00"
229
+ "relatedSpdxElement": "SPDXRef-Package-e02218f14f5d8e6d4c39"
230
230
  },
231
231
  {
232
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
232
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
233
233
  "relationshipType": "DEPENDS_ON",
234
234
  "relatedSpdxElement": "SPDXRef-Package-5ce913a03239b02770fb"
235
235
  },
236
236
  {
237
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
237
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
238
238
  "relationshipType": "DEPENDS_ON",
239
239
  "relatedSpdxElement": "SPDXRef-Package-01009adf60db02c13634"
240
240
  },
241
241
  {
242
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
242
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
243
243
  "relationshipType": "DEPENDS_ON",
244
244
  "relatedSpdxElement": "SPDXRef-Package-8815b117c8a1d5f7eeb0"
245
245
  },
246
246
  {
247
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
247
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
248
248
  "relationshipType": "DEPENDS_ON",
249
249
  "relatedSpdxElement": "SPDXRef-Package-f8b45a289df643042b94"
250
250
  },
251
251
  {
252
- "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
252
+ "spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
253
253
  "relationshipType": "DEPENDS_ON",
254
254
  "relatedSpdxElement": "SPDXRef-Package-b779412f685822663496"
255
255
  },
256
256
  {
257
- "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
257
+ "spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
258
258
  "relationshipType": "DEPENDS_ON",
259
- "relatedSpdxElement": "SPDXRef-Package-caeafda50d3a551d90e0"
259
+ "relatedSpdxElement": "SPDXRef-Package-0172623f618b3a03e11f"
260
260
  },
261
261
  {
262
- "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
262
+ "spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
263
263
  "relationshipType": "DEPENDS_ON",
264
- "relatedSpdxElement": "SPDXRef-Package-79f8dd2de6e6db1eceb0"
264
+ "relatedSpdxElement": "SPDXRef-Package-413ba6178e801251e1ee"
265
265
  },
266
266
  {
267
- "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
267
+ "spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
268
268
  "relationshipType": "DEPENDS_ON",
269
- "relatedSpdxElement": "SPDXRef-Package-a9533873018bd175ddef"
269
+ "relatedSpdxElement": "SPDXRef-Package-ec8a15951af6659e94c7"
270
270
  },
271
271
  {
272
- "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
272
+ "spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
273
273
  "relationshipType": "DEPENDS_ON",
274
- "relatedSpdxElement": "SPDXRef-Package-46c53b352dd101157f70"
274
+ "relatedSpdxElement": "SPDXRef-Package-9ac371e45870cc2a2296"
275
275
  },
276
276
  {
277
277
  "spdxElementId": "SPDXRef-Package-01009adf60db02c13634",