@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 +3 -2
- package/THIRD_PARTY_NOTICES.md +5 -5
- package/dist/v2/protocol.js +2 -0
- package/dist/v2/session.d.ts +4 -0
- package/dist/v2/session.js +15 -2
- package/dist/v3/protocol.js +2 -0
- package/dist/v3/session.d.ts +4 -0
- package/dist/v3/session.js +15 -2
- package/package.json +5 -5
- package/sbom/cyclonedx.json +31 -31
- package/sbom/spdx.json +36 -36
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`;
|
|
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.
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -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.
|
|
7
|
-
- @floegence/flowersec-node-native-darwin-arm64 3.0.
|
|
8
|
-
- @floegence/flowersec-node-native-darwin-x64 3.0.
|
|
9
|
-
- @floegence/flowersec-node-native-linux-arm64-gnu 3.0.
|
|
10
|
-
- @floegence/flowersec-node-native-linux-x64-gnu 3.0.
|
|
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)
|
package/dist/v2/protocol.js
CHANGED
|
@@ -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) {
|
package/dist/v2/session.d.ts
CHANGED
|
@@ -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;
|
package/dist/v2/session.js
CHANGED
|
@@ -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(
|
|
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) {
|
package/dist/v3/protocol.js
CHANGED
|
@@ -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) {
|
package/dist/v3/session.d.ts
CHANGED
|
@@ -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;
|
package/dist/v3/session.js
CHANGED
|
@@ -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(
|
|
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.
|
|
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
|
-
"
|
|
95
|
+
"optionalDependencies": {
|
|
96
|
+
"@floegence/flowersec-node-native": "3.0.4"
|
|
97
|
+
},
|
|
98
|
+
"flowersecSourceCommit": "35dbe22a6aa1b10d53587e19a18232e2dfb2bbf4"
|
|
99
99
|
}
|
package/sbom/cyclonedx.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.5",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
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.
|
|
11
|
-
"purl": "pkg:npm/%40floegence/flowersec-core@3.0.
|
|
12
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-core@3.0.
|
|
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": "
|
|
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.
|
|
26
|
-
"purl": "pkg:npm/%40floegence/flowersec-node-native@3.0.
|
|
27
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.
|
|
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.
|
|
54
|
-
"purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.
|
|
55
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.
|
|
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.
|
|
82
|
-
"purl": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.
|
|
83
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.
|
|
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.
|
|
110
|
-
"purl": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.
|
|
111
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.
|
|
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.
|
|
138
|
-
"purl": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.
|
|
139
|
-
"bom-ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.
|
|
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.
|
|
333
|
+
"ref": "pkg:npm/%40floegence/flowersec-core@3.0.4",
|
|
334
334
|
"dependsOn": [
|
|
335
|
-
"pkg:npm/%40floegence/flowersec-node-native@3.0.
|
|
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.
|
|
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.
|
|
347
|
-
"pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.
|
|
348
|
-
"pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.
|
|
349
|
-
"pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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/
|
|
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-
|
|
17
|
-
"versionInfo": "3.0.
|
|
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:
|
|
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.
|
|
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-
|
|
35
|
-
"versionInfo": "3.0.
|
|
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.
|
|
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-
|
|
52
|
-
"versionInfo": "3.0.
|
|
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.
|
|
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-
|
|
69
|
-
"versionInfo": "3.0.
|
|
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.
|
|
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-
|
|
86
|
-
"versionInfo": "3.0.
|
|
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.
|
|
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-
|
|
103
|
-
"versionInfo": "3.0.
|
|
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.
|
|
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-
|
|
224
|
+
"relatedSpdxElement": "SPDXRef-Package-b0bcf794da04b4bb0d33"
|
|
225
225
|
},
|
|
226
226
|
{
|
|
227
|
-
"spdxElementId": "SPDXRef-Package-
|
|
227
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
228
228
|
"relationshipType": "DEPENDS_ON",
|
|
229
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
229
|
+
"relatedSpdxElement": "SPDXRef-Package-e02218f14f5d8e6d4c39"
|
|
230
230
|
},
|
|
231
231
|
{
|
|
232
|
-
"spdxElementId": "SPDXRef-Package-
|
|
232
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
233
233
|
"relationshipType": "DEPENDS_ON",
|
|
234
234
|
"relatedSpdxElement": "SPDXRef-Package-5ce913a03239b02770fb"
|
|
235
235
|
},
|
|
236
236
|
{
|
|
237
|
-
"spdxElementId": "SPDXRef-Package-
|
|
237
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
238
238
|
"relationshipType": "DEPENDS_ON",
|
|
239
239
|
"relatedSpdxElement": "SPDXRef-Package-01009adf60db02c13634"
|
|
240
240
|
},
|
|
241
241
|
{
|
|
242
|
-
"spdxElementId": "SPDXRef-Package-
|
|
242
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
243
243
|
"relationshipType": "DEPENDS_ON",
|
|
244
244
|
"relatedSpdxElement": "SPDXRef-Package-8815b117c8a1d5f7eeb0"
|
|
245
245
|
},
|
|
246
246
|
{
|
|
247
|
-
"spdxElementId": "SPDXRef-Package-
|
|
247
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
248
248
|
"relationshipType": "DEPENDS_ON",
|
|
249
249
|
"relatedSpdxElement": "SPDXRef-Package-f8b45a289df643042b94"
|
|
250
250
|
},
|
|
251
251
|
{
|
|
252
|
-
"spdxElementId": "SPDXRef-Package-
|
|
252
|
+
"spdxElementId": "SPDXRef-Package-b0bcf794da04b4bb0d33",
|
|
253
253
|
"relationshipType": "DEPENDS_ON",
|
|
254
254
|
"relatedSpdxElement": "SPDXRef-Package-b779412f685822663496"
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
|
-
"spdxElementId": "SPDXRef-Package-
|
|
257
|
+
"spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
|
|
258
258
|
"relationshipType": "DEPENDS_ON",
|
|
259
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
259
|
+
"relatedSpdxElement": "SPDXRef-Package-0172623f618b3a03e11f"
|
|
260
260
|
},
|
|
261
261
|
{
|
|
262
|
-
"spdxElementId": "SPDXRef-Package-
|
|
262
|
+
"spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
|
|
263
263
|
"relationshipType": "DEPENDS_ON",
|
|
264
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
264
|
+
"relatedSpdxElement": "SPDXRef-Package-413ba6178e801251e1ee"
|
|
265
265
|
},
|
|
266
266
|
{
|
|
267
|
-
"spdxElementId": "SPDXRef-Package-
|
|
267
|
+
"spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
|
|
268
268
|
"relationshipType": "DEPENDS_ON",
|
|
269
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
269
|
+
"relatedSpdxElement": "SPDXRef-Package-ec8a15951af6659e94c7"
|
|
270
270
|
},
|
|
271
271
|
{
|
|
272
|
-
"spdxElementId": "SPDXRef-Package-
|
|
272
|
+
"spdxElementId": "SPDXRef-Package-e02218f14f5d8e6d4c39",
|
|
273
273
|
"relationshipType": "DEPENDS_ON",
|
|
274
|
-
"relatedSpdxElement": "SPDXRef-Package-
|
|
274
|
+
"relatedSpdxElement": "SPDXRef-Package-9ac371e45870cc2a2296"
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
"spdxElementId": "SPDXRef-Package-01009adf60db02c13634",
|