@floegence/flowersec-core 3.0.1 → 3.0.2

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.
@@ -3,6 +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
11
  - @noble/ciphers 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/ciphers/-/ciphers-2.3.0.tgz)
7
12
  - @noble/curves 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/curves/-/curves-2.3.0.tgz)
8
13
  - @noble/hashes 2.3.0 (Declared: MIT; selected: MIT; source: https://registry.npmjs.org/@noble/hashes/-/hashes-2.3.0.tgz)
@@ -38,6 +38,7 @@ export class ConnectionControllerV3 {
38
38
  #disposition;
39
39
  #scheduler;
40
40
  #closeOperation;
41
+ #transitionGeneration = 0;
41
42
  constructor(source, connector, options) {
42
43
  if (source === null || typeof source !== "object" || typeof source.acquire !== "function") {
43
44
  throw new TypeError("Flowersec v3 artifact source must provide acquire()");
@@ -131,8 +132,9 @@ export class ConnectionControllerV3 {
131
132
  this.#closeOperation = closeOperation;
132
133
  const active = this.#session;
133
134
  this.#session = undefined;
135
+ this.#failure = undefined;
134
136
  this.#disposition = undefined;
135
- this.#lifetime.abort(new ConnectionControllerV3Error("closed", this.#failure));
137
+ this.#lifetime.abort(new ConnectionControllerV3Error("closed"));
136
138
  this.#transition("closed");
137
139
  void Promise.allSettled([
138
140
  this.#scheduler ?? Promise.resolve(),
@@ -154,21 +156,29 @@ export class ConnectionControllerV3 {
154
156
  return;
155
157
  pendingDisposition = undefined;
156
158
  }
157
- if (!this.#cycle.beginAcquisition()) {
158
- this.#forceTerminalDisposition();
159
- return;
160
- }
161
159
  this.#disposition = undefined;
162
160
  this.#transition("connecting");
163
161
  if (this.#lifetime.signal.aborted)
164
162
  return;
163
+ if (this.#maximumAttempts !== 0 && this.#cycle.snapshot().attempts >= this.#maximumAttempts) {
164
+ this.#forceTerminalDisposition();
165
+ return;
166
+ }
165
167
  let capability;
166
168
  try {
167
169
  capability = this.#capabilitySnapshot();
168
170
  validateRuntimeCapabilityDescriptorV3(capability);
169
171
  }
170
172
  catch {
171
- this.#recordFailure("artifact", "artifact_invalid", { kind: "terminal" });
173
+ if (this.#lifetime.signal.aborted)
174
+ return;
175
+ this.#recordFailure("connect", "artifact_invalid", { kind: "terminal" });
176
+ return;
177
+ }
178
+ if (this.#lifetime.signal.aborted)
179
+ return;
180
+ if (!this.#cycle.beginAcquisition()) {
181
+ this.#forceTerminalDisposition();
172
182
  return;
173
183
  }
174
184
  const acquisition = await this.#acquire();
@@ -212,7 +222,7 @@ export class ConnectionControllerV3 {
212
222
  await retireArtifactLeaseV3(claim);
213
223
  this.#cycle.recordFailedAcquisitionOrLease();
214
224
  const error = new ConnectErrorV3("artifact_invalid", { kind: "terminal" });
215
- this.#recordFailure("artifact", error.code, error.disposition);
225
+ this.#recordFailure("connect", error.code, error.disposition);
216
226
  return;
217
227
  }
218
228
  try {
@@ -222,7 +232,7 @@ export class ConnectionControllerV3 {
222
232
  await retireArtifactLeaseV3(claim);
223
233
  this.#cycle.recordFailedAcquisitionOrLease();
224
234
  const error = new ConnectErrorV3("expired_artifact", { kind: "retryable" });
225
- this.#recordFailure("artifact", error.code, error.disposition);
235
+ this.#recordFailure("connect", error.code, error.disposition);
226
236
  if (this.#attemptBudgetExhausted())
227
237
  return;
228
238
  next = "primary";
@@ -523,8 +533,13 @@ export class ConnectionControllerV3 {
523
533
  if (this.#state === "closed" && state !== "closed")
524
534
  return;
525
535
  this.#state = state;
536
+ const generation = ++this.#transitionGeneration;
526
537
  const snapshot = this.#snapshot();
527
- for (const listener of this.#listeners) {
538
+ for (const listener of [...this.#listeners]) {
539
+ if (generation !== this.#transitionGeneration)
540
+ return;
541
+ if (!this.#listeners.has(listener))
542
+ continue;
528
543
  try {
529
544
  listener(snapshot);
530
545
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/flowersec-core",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Flowersec core TypeScript library for carrier-neutral encrypted sessions and multiplexed streams.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -77,7 +77,7 @@
77
77
  "ws": "^8.21.2"
78
78
  },
79
79
  "optionalDependencies": {
80
- "@floegence/flowersec-node-native": "3.0.1"
80
+ "@floegence/flowersec-node-native": "3.0.2"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@playwright/test": "1.62.1",
@@ -95,5 +95,5 @@
95
95
  "vite": "^8.2.1",
96
96
  "vitest": "4.1.10"
97
97
  },
98
- "flowersecSourceCommit": "88d8064370733ca512b7994479d52fae33d91665"
98
+ "flowersecSourceCommit": "998295bcfd9c7f96cc96444ec0d48e268366363e"
99
99
  }
@@ -1,24 +1,164 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.5",
4
- "serialNumber": "urn:uuid:7c0074af-2a58-5394-8572-4c22fd177e8a",
4
+ "serialNumber": "urn:uuid:83a8f008-e5ff-522d-8fc3-eccb503674cd",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "library",
9
9
  "name": "@floegence/flowersec-core",
10
- "version": "3.0.1",
11
- "purl": "pkg:npm/%40floegence/flowersec-core@3.0.1",
12
- "bom-ref": "pkg:npm/%40floegence/flowersec-core@3.0.1"
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"
13
13
  },
14
14
  "properties": [
15
15
  {
16
16
  "name": "flowersec:source-inventory-sha256",
17
- "value": "428d40c24d97553e640a89f6e0397fed24c3106752eb8397571157fb9ea19172"
17
+ "value": "e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678"
18
18
  }
19
19
  ]
20
20
  },
21
21
  "components": [
22
+ {
23
+ "type": "library",
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",
28
+ "licenses": [
29
+ {
30
+ "expression": "MIT"
31
+ }
32
+ ],
33
+ "externalReferences": [
34
+ {
35
+ "type": "distribution",
36
+ "url": "https://github.com/floegence/flowersec.git"
37
+ }
38
+ ],
39
+ "properties": [
40
+ {
41
+ "name": "flowersec:declared-license",
42
+ "value": "MIT"
43
+ },
44
+ {
45
+ "name": "flowersec:source-offer-required",
46
+ "value": "false"
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "type": "library",
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",
56
+ "licenses": [
57
+ {
58
+ "expression": "MIT"
59
+ }
60
+ ],
61
+ "externalReferences": [
62
+ {
63
+ "type": "distribution",
64
+ "url": "https://github.com/floegence/flowersec.git"
65
+ }
66
+ ],
67
+ "properties": [
68
+ {
69
+ "name": "flowersec:declared-license",
70
+ "value": "MIT"
71
+ },
72
+ {
73
+ "name": "flowersec:source-offer-required",
74
+ "value": "false"
75
+ }
76
+ ]
77
+ },
78
+ {
79
+ "type": "library",
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",
84
+ "licenses": [
85
+ {
86
+ "expression": "MIT"
87
+ }
88
+ ],
89
+ "externalReferences": [
90
+ {
91
+ "type": "distribution",
92
+ "url": "https://github.com/floegence/flowersec.git"
93
+ }
94
+ ],
95
+ "properties": [
96
+ {
97
+ "name": "flowersec:declared-license",
98
+ "value": "MIT"
99
+ },
100
+ {
101
+ "name": "flowersec:source-offer-required",
102
+ "value": "false"
103
+ }
104
+ ]
105
+ },
106
+ {
107
+ "type": "library",
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",
112
+ "licenses": [
113
+ {
114
+ "expression": "MIT"
115
+ }
116
+ ],
117
+ "externalReferences": [
118
+ {
119
+ "type": "distribution",
120
+ "url": "https://github.com/floegence/flowersec.git"
121
+ }
122
+ ],
123
+ "properties": [
124
+ {
125
+ "name": "flowersec:declared-license",
126
+ "value": "MIT"
127
+ },
128
+ {
129
+ "name": "flowersec:source-offer-required",
130
+ "value": "false"
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "type": "library",
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",
140
+ "licenses": [
141
+ {
142
+ "expression": "MIT"
143
+ }
144
+ ],
145
+ "externalReferences": [
146
+ {
147
+ "type": "distribution",
148
+ "url": "https://github.com/floegence/flowersec.git"
149
+ }
150
+ ],
151
+ "properties": [
152
+ {
153
+ "name": "flowersec:declared-license",
154
+ "value": "MIT"
155
+ },
156
+ {
157
+ "name": "flowersec:source-offer-required",
158
+ "value": "false"
159
+ }
160
+ ]
161
+ },
22
162
  {
23
163
  "type": "library",
24
164
  "name": "@noble/ciphers",
@@ -190,8 +330,9 @@
190
330
  ],
191
331
  "dependencies": [
192
332
  {
193
- "ref": "pkg:npm/%40floegence/flowersec-core@3.0.1",
333
+ "ref": "pkg:npm/%40floegence/flowersec-core@3.0.2",
194
334
  "dependsOn": [
335
+ "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
195
336
  "pkg:npm/%40noble/ciphers@2.3.0",
196
337
  "pkg:npm/%40noble/curves@2.3.0",
197
338
  "pkg:npm/%40noble/hashes@2.3.0",
@@ -199,6 +340,31 @@
199
340
  "pkg:npm/ws@8.21.3"
200
341
  ]
201
342
  },
343
+ {
344
+ "ref": "pkg:npm/%40floegence/flowersec-node-native@3.0.2",
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"
350
+ ]
351
+ },
352
+ {
353
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2",
354
+ "dependsOn": []
355
+ },
356
+ {
357
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2",
358
+ "dependsOn": []
359
+ },
360
+ {
361
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2",
362
+ "dependsOn": []
363
+ },
364
+ {
365
+ "ref": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2",
366
+ "dependsOn": []
367
+ },
202
368
  {
203
369
  "ref": "pkg:npm/%40noble/ciphers@2.3.0",
204
370
  "dependsOn": []
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/428d40c24d97553e640a89f6e0397fed24c3106752eb8397571157fb9ea19172",
6
+ "documentNamespace": "https://github.com/floegence/flowersec/sbom/flowersec-ts/e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678",
7
7
  "creationInfo": {
8
8
  "created": "1970-01-01T00:00:00Z",
9
9
  "creators": [
@@ -13,19 +13,104 @@
13
13
  "packages": [
14
14
  {
15
15
  "name": "@floegence/flowersec-core",
16
- "SPDXID": "SPDXRef-Package-ceebb46445ec0583ce86",
17
- "versionInfo": "3.0.1",
16
+ "SPDXID": "SPDXRef-Package-dbf050f7aea8ed6130d9",
17
+ "versionInfo": "3.0.2",
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: 428d40c24d97553e640a89f6e0397fed24c3106752eb8397571157fb9ea19172",
23
+ "comment": "Flowersec source inventory SHA-256: e8ae21231918c515d87037589e2479d87b894cc7347dda3205213a8415069678",
24
24
  "externalRefs": [
25
25
  {
26
26
  "referenceCategory": "PACKAGE-MANAGER",
27
27
  "referenceType": "purl",
28
- "referenceLocator": "pkg:npm/%40floegence/flowersec-core@3.0.1"
28
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-core@3.0.2"
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "name": "@floegence/flowersec-node-native",
34
+ "SPDXID": "SPDXRef-Package-16fa3227c088ca725b00",
35
+ "versionInfo": "3.0.2",
36
+ "downloadLocation": "https://github.com/floegence/flowersec.git",
37
+ "filesAnalyzed": false,
38
+ "licenseConcluded": "MIT",
39
+ "licenseDeclared": "MIT",
40
+ "copyrightText": "NOASSERTION",
41
+ "externalRefs": [
42
+ {
43
+ "referenceCategory": "PACKAGE-MANAGER",
44
+ "referenceType": "purl",
45
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native@3.0.2"
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "name": "@floegence/flowersec-node-native-darwin-arm64",
51
+ "SPDXID": "SPDXRef-Package-caeafda50d3a551d90e0",
52
+ "versionInfo": "3.0.2",
53
+ "downloadLocation": "https://github.com/floegence/flowersec.git",
54
+ "filesAnalyzed": false,
55
+ "licenseConcluded": "MIT",
56
+ "licenseDeclared": "MIT",
57
+ "copyrightText": "NOASSERTION",
58
+ "externalRefs": [
59
+ {
60
+ "referenceCategory": "PACKAGE-MANAGER",
61
+ "referenceType": "purl",
62
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-arm64@3.0.2"
63
+ }
64
+ ]
65
+ },
66
+ {
67
+ "name": "@floegence/flowersec-node-native-darwin-x64",
68
+ "SPDXID": "SPDXRef-Package-79f8dd2de6e6db1eceb0",
69
+ "versionInfo": "3.0.2",
70
+ "downloadLocation": "https://github.com/floegence/flowersec.git",
71
+ "filesAnalyzed": false,
72
+ "licenseConcluded": "MIT",
73
+ "licenseDeclared": "MIT",
74
+ "copyrightText": "NOASSERTION",
75
+ "externalRefs": [
76
+ {
77
+ "referenceCategory": "PACKAGE-MANAGER",
78
+ "referenceType": "purl",
79
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-darwin-x64@3.0.2"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "name": "@floegence/flowersec-node-native-linux-arm64-gnu",
85
+ "SPDXID": "SPDXRef-Package-a9533873018bd175ddef",
86
+ "versionInfo": "3.0.2",
87
+ "downloadLocation": "https://github.com/floegence/flowersec.git",
88
+ "filesAnalyzed": false,
89
+ "licenseConcluded": "MIT",
90
+ "licenseDeclared": "MIT",
91
+ "copyrightText": "NOASSERTION",
92
+ "externalRefs": [
93
+ {
94
+ "referenceCategory": "PACKAGE-MANAGER",
95
+ "referenceType": "purl",
96
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-arm64-gnu@3.0.2"
97
+ }
98
+ ]
99
+ },
100
+ {
101
+ "name": "@floegence/flowersec-node-native-linux-x64-gnu",
102
+ "SPDXID": "SPDXRef-Package-46c53b352dd101157f70",
103
+ "versionInfo": "3.0.2",
104
+ "downloadLocation": "https://github.com/floegence/flowersec.git",
105
+ "filesAnalyzed": false,
106
+ "licenseConcluded": "MIT",
107
+ "licenseDeclared": "MIT",
108
+ "copyrightText": "NOASSERTION",
109
+ "externalRefs": [
110
+ {
111
+ "referenceCategory": "PACKAGE-MANAGER",
112
+ "referenceType": "purl",
113
+ "referenceLocator": "pkg:npm/%40floegence/flowersec-node-native-linux-x64-gnu@3.0.2"
29
114
  }
30
115
  ]
31
116
  },
@@ -136,33 +221,58 @@
136
221
  {
137
222
  "spdxElementId": "SPDXRef-DOCUMENT",
138
223
  "relationshipType": "DESCRIBES",
139
- "relatedSpdxElement": "SPDXRef-Package-ceebb46445ec0583ce86"
224
+ "relatedSpdxElement": "SPDXRef-Package-dbf050f7aea8ed6130d9"
140
225
  },
141
226
  {
142
- "spdxElementId": "SPDXRef-Package-ceebb46445ec0583ce86",
227
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
228
+ "relationshipType": "DEPENDS_ON",
229
+ "relatedSpdxElement": "SPDXRef-Package-16fa3227c088ca725b00"
230
+ },
231
+ {
232
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
143
233
  "relationshipType": "DEPENDS_ON",
144
234
  "relatedSpdxElement": "SPDXRef-Package-5ce913a03239b02770fb"
145
235
  },
146
236
  {
147
- "spdxElementId": "SPDXRef-Package-ceebb46445ec0583ce86",
237
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
148
238
  "relationshipType": "DEPENDS_ON",
149
239
  "relatedSpdxElement": "SPDXRef-Package-01009adf60db02c13634"
150
240
  },
151
241
  {
152
- "spdxElementId": "SPDXRef-Package-ceebb46445ec0583ce86",
242
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
153
243
  "relationshipType": "DEPENDS_ON",
154
244
  "relatedSpdxElement": "SPDXRef-Package-8815b117c8a1d5f7eeb0"
155
245
  },
156
246
  {
157
- "spdxElementId": "SPDXRef-Package-ceebb46445ec0583ce86",
247
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
158
248
  "relationshipType": "DEPENDS_ON",
159
249
  "relatedSpdxElement": "SPDXRef-Package-f8b45a289df643042b94"
160
250
  },
161
251
  {
162
- "spdxElementId": "SPDXRef-Package-ceebb46445ec0583ce86",
252
+ "spdxElementId": "SPDXRef-Package-dbf050f7aea8ed6130d9",
163
253
  "relationshipType": "DEPENDS_ON",
164
254
  "relatedSpdxElement": "SPDXRef-Package-b779412f685822663496"
165
255
  },
256
+ {
257
+ "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
258
+ "relationshipType": "DEPENDS_ON",
259
+ "relatedSpdxElement": "SPDXRef-Package-caeafda50d3a551d90e0"
260
+ },
261
+ {
262
+ "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
263
+ "relationshipType": "DEPENDS_ON",
264
+ "relatedSpdxElement": "SPDXRef-Package-79f8dd2de6e6db1eceb0"
265
+ },
266
+ {
267
+ "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
268
+ "relationshipType": "DEPENDS_ON",
269
+ "relatedSpdxElement": "SPDXRef-Package-a9533873018bd175ddef"
270
+ },
271
+ {
272
+ "spdxElementId": "SPDXRef-Package-16fa3227c088ca725b00",
273
+ "relationshipType": "DEPENDS_ON",
274
+ "relatedSpdxElement": "SPDXRef-Package-46c53b352dd101157f70"
275
+ },
166
276
  {
167
277
  "spdxElementId": "SPDXRef-Package-01009adf60db02c13634",
168
278
  "relationshipType": "DEPENDS_ON",