@serve.zone/interfaces 31.8.0 → 32.0.0

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 (215) hide show
  1. package/.smartconfig.json +1 -0
  2. package/changelog.md +512 -0
  3. package/dist_ts/00_commitinfo_data.js +3 -3
  4. package/dist_ts/appstore/types.d.ts +4 -6
  5. package/dist_ts/appstore/types.js +5 -5
  6. package/dist_ts/data/backup.d.ts +3 -26
  7. package/dist_ts/data/cluster.d.ts +36 -11
  8. package/dist_ts/data/cluster.js +33 -22
  9. package/dist_ts/data/clusteringress.d.ts +8 -0
  10. package/dist_ts/data/clusteringress.js +13 -8
  11. package/dist_ts/data/clusternode.d.ts +121 -74
  12. package/dist_ts/data/clusternode.js +109 -132
  13. package/dist_ts/data/clusterruntime.d.ts +39 -0
  14. package/dist_ts/data/clusterruntime.js +11 -0
  15. package/dist_ts/data/coremail.d.ts +3 -7
  16. package/dist_ts/data/coremail.js +2 -2
  17. package/dist_ts/data/coremail.runtime.d.ts +0 -1
  18. package/dist_ts/data/coremail.runtime.js +5 -22
  19. package/dist_ts/data/deploymentadoption.d.ts +0 -2
  20. package/dist_ts/data/deploymentadoption.js +40 -6
  21. package/dist_ts/data/deploymentoperation.js +16 -3
  22. package/dist_ts/data/deploymentpreflight.d.ts +0 -2
  23. package/dist_ts/data/deploymentpreflight.js +1 -1
  24. package/dist_ts/data/immutableimage.d.ts +38 -21
  25. package/dist_ts/data/immutableimage.js +45 -5
  26. package/dist_ts/data/index.d.ts +5 -1
  27. package/dist_ts/data/index.js +5 -1
  28. package/dist_ts/data/isolatedrestore.d.ts +139 -21
  29. package/dist_ts/data/isolatedrestore.golden.d.ts +0 -1
  30. package/dist_ts/data/isolatedrestore.golden.js +6 -9
  31. package/dist_ts/data/isolatedrestore.js +176 -40
  32. package/dist_ts/data/mail.d.ts +1 -1
  33. package/dist_ts/data/networkaddressplan.d.ts +78 -0
  34. package/dist_ts/data/networkaddressplan.js +114 -0
  35. package/dist_ts/data/networkauthority.d.ts +20 -22
  36. package/dist_ts/data/networkauthority.js +29 -43
  37. package/dist_ts/data/networkcredential.d.ts +10 -10
  38. package/dist_ts/data/networkcredential.js +16 -16
  39. package/dist_ts/data/networkdelivery.d.ts +18 -18
  40. package/dist_ts/data/networkdelivery.js +16 -16
  41. package/dist_ts/data/networklease.d.ts +18 -7
  42. package/dist_ts/data/networklease.js +29 -7
  43. package/dist_ts/data/networknode.d.ts +37 -0
  44. package/dist_ts/data/networknode.js +6 -0
  45. package/dist_ts/data/networkprojection.d.ts +59 -60
  46. package/dist_ts/data/networkprojection.js +53 -57
  47. package/dist_ts/data/networkprotection.d.ts +27 -28
  48. package/dist_ts/data/networkprotection.js +36 -36
  49. package/dist_ts/data/networkrouter.d.ts +11 -11
  50. package/dist_ts/data/networkrouter.js +1 -1
  51. package/dist_ts/data/networksigning.d.ts +16 -18
  52. package/dist_ts/data/networksigning.js +20 -21
  53. package/dist_ts/data/nodecredential.d.ts +4 -6
  54. package/dist_ts/data/nodeenrollment.d.ts +35 -40
  55. package/dist_ts/data/nodeenrollment.js +57 -72
  56. package/dist_ts/data/privatenetwork.d.ts +21 -24
  57. package/dist_ts/data/privatenetwork.js +39 -54
  58. package/dist_ts/data/runtimeassignment.d.ts +50 -34
  59. package/dist_ts/data/runtimeassignment.js +79 -45
  60. package/dist_ts/data/runtimeconfig.d.ts +21 -22
  61. package/dist_ts/data/runtimeconfig.js +37 -100
  62. package/dist_ts/data/runtimesession.d.ts +100 -62
  63. package/dist_ts/data/runtimesession.js +98 -79
  64. package/dist_ts/data/runtimeterminalreceipt.d.ts +28 -29
  65. package/dist_ts/data/runtimeterminalreceipt.js +42 -42
  66. package/dist_ts/data/secret.d.ts +18 -25
  67. package/dist_ts/data/secret.js +12 -52
  68. package/dist_ts/data/servicecredential.d.ts +14 -16
  69. package/dist_ts/data/servicecredential.js +17 -28
  70. package/dist_ts/data/serviceruntime.d.ts +128 -0
  71. package/dist_ts/data/serviceruntime.js +92 -0
  72. package/dist_ts/data/sparknodereport.d.ts +27 -14
  73. package/dist_ts/data/sparknodereport.js +35 -28
  74. package/dist_ts/data/webpush.d.ts +0 -1
  75. package/dist_ts/index.d.ts +2 -1
  76. package/dist_ts/index.js +3 -2
  77. package/dist_ts/platform/objectstorageretention.d.ts +21 -24
  78. package/dist_ts/platform/objectstorageretention.js +6 -18
  79. package/dist_ts/platform/storage.d.ts +1 -3
  80. package/dist_ts/platform/storagemigration.d.ts +0 -7
  81. package/dist_ts/platform/storagemigration.golden.d.ts +0 -1
  82. package/dist_ts/platform/storagemigration.golden.js +8 -12
  83. package/dist_ts/platform/storagemigration.js +6 -51
  84. package/dist_ts/platform/types.d.ts +2 -2
  85. package/dist_ts/private/canonicaljson.d.ts +9 -1
  86. package/dist_ts/private/canonicaljson.js +14 -2
  87. package/dist_ts/private/dataproperties.d.ts +62 -0
  88. package/dist_ts/private/dataproperties.js +117 -0
  89. package/dist_ts/private/networkcontract.d.ts +14 -10
  90. package/dist_ts/private/networkcontract.js +15 -1
  91. package/dist_ts/private/producercontract.d.ts +11 -0
  92. package/dist_ts/private/producercontract.js +21 -0
  93. package/dist_ts/private/releaseversion.d.ts +37 -0
  94. package/dist_ts/private/releaseversion.js +48 -0
  95. package/dist_ts/private/runtimepolicy.d.ts +31 -0
  96. package/dist_ts/private/runtimepolicy.js +90 -0
  97. package/dist_ts/private/tokenlist.d.ts +9 -0
  98. package/dist_ts/private/tokenlist.js +23 -0
  99. package/dist_ts/protocol.d.ts +137 -0
  100. package/dist_ts/protocol.js +255 -0
  101. package/dist_ts/requests/admin.d.ts +8 -8
  102. package/dist_ts/requests/backup.d.ts +102 -112
  103. package/dist_ts/requests/cluster.d.ts +47 -10
  104. package/dist_ts/requests/cluster.js +1 -1
  105. package/dist_ts/requests/clusteringress.d.ts +9 -0
  106. package/dist_ts/requests/clusteringress.js +1 -1
  107. package/dist_ts/requests/config.d.ts +3 -3
  108. package/dist_ts/requests/corestore.d.ts +0 -3
  109. package/dist_ts/requests/corestore.js +5 -9
  110. package/dist_ts/requests/network.d.ts +87 -31
  111. package/dist_ts/requests/node.d.ts +15 -28
  112. package/dist_ts/requests/pallet.d.ts +13 -13
  113. package/dist_ts/requests/runtimesession.d.ts +53 -41
  114. package/dist_ts/requests/secret.d.ts +4 -5
  115. package/dist_ts/requests/secret.js +1 -5
  116. package/dist_ts/requests/service.d.ts +60 -0
  117. package/dist_ts/runtime.corestore.d.ts +56 -74
  118. package/dist_ts/runtime.corestore.databaseexportpackage.d.ts +30 -36
  119. package/dist_ts/runtime.corestore.databaseexportpackage.golden.d.ts +11 -12
  120. package/dist_ts/runtime.corestore.databaseexportpackage.golden.js +54 -71
  121. package/dist_ts/runtime.corestore.databaseexportpackage.js +9 -25
  122. package/dist_ts/runtime.corestore.js +35 -135
  123. package/dist_ts/runtime.corestore.relay.js +2 -7
  124. package/dist_ts/runtime.d.ts +38 -48
  125. package/dist_ts/runtime.js +20 -77
  126. package/dist_ts/runtime.networkprojection.d.ts +4 -4
  127. package/dist_ts/runtime.networkprojection.js +18 -18
  128. package/dist_ts/runtime.workloadinit.d.ts +23 -24
  129. package/dist_ts/runtime.workloadinit.js +6 -13
  130. package/package.json +2 -2
  131. package/readme.md +540 -269
  132. package/ts/00_commitinfo_data.ts +3 -3
  133. package/ts/appstore/types.ts +4 -6
  134. package/ts/data/backup.ts +3 -38
  135. package/ts/data/cluster.ts +51 -34
  136. package/ts/data/clusteringress.ts +12 -12
  137. package/ts/data/clusternode.ts +204 -232
  138. package/ts/data/clusterruntime.ts +45 -0
  139. package/ts/data/coremail.runtime.ts +4 -21
  140. package/ts/data/coremail.ts +3 -7
  141. package/ts/data/deploymentadoption.ts +46 -4
  142. package/ts/data/deploymentoperation.ts +16 -1
  143. package/ts/data/deploymentpreflight.ts +0 -2
  144. package/ts/data/immutableimage.ts +71 -24
  145. package/ts/data/index.ts +5 -1
  146. package/ts/data/isolatedrestore.golden.ts +5 -9
  147. package/ts/data/isolatedrestore.ts +339 -54
  148. package/ts/data/mail.ts +1 -1
  149. package/ts/data/networkaddressplan.ts +175 -0
  150. package/ts/data/networkauthority.ts +45 -61
  151. package/ts/data/networkcredential.ts +24 -24
  152. package/ts/data/networkdelivery.ts +27 -27
  153. package/ts/data/networklease.ts +40 -13
  154. package/ts/data/networknode.ts +37 -0
  155. package/ts/data/networkprojection.ts +119 -124
  156. package/ts/data/networkprotection.ts +54 -55
  157. package/ts/data/networkrouter.ts +14 -14
  158. package/ts/data/networksigning.ts +29 -32
  159. package/ts/data/nodecredential.ts +4 -6
  160. package/ts/data/nodeenrollment.ts +96 -114
  161. package/ts/data/privatenetwork.ts +58 -74
  162. package/ts/data/runtimeassignment.ts +143 -94
  163. package/ts/data/runtimeconfig.ts +62 -122
  164. package/ts/data/runtimesession.ts +185 -138
  165. package/ts/data/runtimeterminalreceipt.ts +72 -73
  166. package/ts/data/secret.ts +28 -76
  167. package/ts/data/servicecredential.ts +33 -43
  168. package/ts/data/serviceruntime.ts +208 -0
  169. package/ts/data/sparknodereport.ts +48 -36
  170. package/ts/data/webpush.ts +0 -1
  171. package/ts/index.ts +2 -0
  172. package/ts/platform/objectstorageretention.ts +36 -55
  173. package/ts/platform/storage.ts +1 -3
  174. package/ts/platform/storagemigration.golden.ts +7 -11
  175. package/ts/platform/storagemigration.ts +5 -55
  176. package/ts/platform/types.ts +2 -2
  177. package/ts/private/canonicaljson.ts +13 -1
  178. package/ts/private/dataproperties.ts +139 -0
  179. package/ts/private/networkcontract.ts +23 -9
  180. package/ts/private/producercontract.ts +19 -0
  181. package/ts/private/releaseversion.ts +70 -0
  182. package/ts/private/runtimepolicy.ts +105 -0
  183. package/ts/private/tokenlist.ts +30 -0
  184. package/ts/protocol.ts +364 -0
  185. package/ts/requests/admin.ts +11 -11
  186. package/ts/requests/backup.ts +112 -117
  187. package/ts/requests/cluster.ts +58 -13
  188. package/ts/requests/clusteringress.ts +9 -0
  189. package/ts/requests/config.ts +3 -3
  190. package/ts/requests/corestore.ts +4 -16
  191. package/ts/requests/network.ts +90 -41
  192. package/ts/requests/node.ts +21 -38
  193. package/ts/requests/pallet.ts +17 -17
  194. package/ts/requests/runtimesession.ts +63 -51
  195. package/ts/requests/secret.ts +5 -10
  196. package/ts/requests/service.ts +81 -0
  197. package/ts/runtime.corestore.databaseexportpackage.golden.ts +77 -95
  198. package/ts/runtime.corestore.databaseexportpackage.ts +51 -73
  199. package/ts/runtime.corestore.relay.ts +1 -10
  200. package/ts/runtime.corestore.ts +118 -268
  201. package/ts/runtime.networkprojection.ts +30 -30
  202. package/ts/runtime.ts +83 -158
  203. package/ts/runtime.workloadinit.ts +36 -48
  204. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +0 -902
  205. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +0 -35
  206. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +0 -315
  207. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +0 -3315
  208. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.d.ts +0 -291
  209. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.d.ts +0 -30
  210. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.js +0 -408
  211. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.js +0 -1126
  212. package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +0 -421
  213. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.ts +0 -510
  214. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.ts +0 -2470
  215. package/ts/runtime.cloudlylegacydeploymentsettlement.ts +0 -6630
@@ -1,7 +1,7 @@
1
1
  import type { TSha256Digest } from './immutableimage.js';
2
- import type { IRuntimeAuthorityReferenceV1 } from './runtimeassignment.js';
3
- import type { IRuntimeNetworkDnsWindow, IRuntimeNetworkNodeScopeV1 } from './networkprojection.js';
4
- import { snapshotRuntimeNetworkNodeScopeV1, snapshotRuntimeNetworkProjectionV1, validateRuntimeNetworkProjectionV1 } from './networkprojection.js';
2
+ import type { IRuntimeAuthorityReference } from './runtimeassignment.js';
3
+ import type { IRuntimeNetworkDnsWindow, IRuntimeNetworkNodeScope } from './networkprojection.js';
4
+ import { snapshotRuntimeNetworkNodeScope, snapshotRuntimeNetworkProjection, validateRuntimeNetworkProjection } from './networkprojection.js';
5
5
  import { captureNetwork, failNetwork, networkCounter, networkDigest, networkDnsWindow, networkEffectiveDnsWindow, networkEqual,
6
6
  networkHash, networkId, networkList, networkMaximumDnsLeaseMs, networkRecord, networkReference, networkReferenceOf,
7
7
  networkRenewsProjection, networkSafe, networkSameScope, networkScope, networkSignature, requireNetwork } from '../private/networkcontract.js';
@@ -15,8 +15,8 @@ import { captureNetwork, failNetwork, networkCounter, networkDigest, networkDnsW
15
15
  * projection by exact reference, so it never joins the projection chain and stops being
16
16
  * admissible the moment a successor projection is admitted.
17
17
  */
18
- export interface IRuntimeNetworkDnsLeaseRenewal extends IRuntimeNetworkNodeScopeV1 {
19
- projection: IRuntimeAuthorityReferenceV1;
18
+ export interface IRuntimeNetworkDnsLeaseRenewal extends IRuntimeNetworkNodeScope {
19
+ projection: IRuntimeAuthorityReference;
20
20
  /** Orders the renewals of one projection. A receiver may skip sequences, never go back. */
21
21
  sequence: number;
22
22
  /**
@@ -29,14 +29,14 @@ export interface IRuntimeNetworkDnsLeaseRenewal extends IRuntimeNetworkNodeScope
29
29
 
30
30
  /** Names one renewal without its window: what a receiver records and what an ACK repeats. */
31
31
  export interface IRuntimeNetworkDnsLeaseRenewalReference {
32
- projection: IRuntimeAuthorityReferenceV1;
32
+ projection: IRuntimeAuthorityReference;
33
33
  sequence: number;
34
34
  digest: TSha256Digest;
35
35
  }
36
36
 
37
37
  export interface ISignedRuntimeNetworkDnsLeaseRenewal {
38
38
  /** The signing authority revision that also signs this controller's projections. */
39
- authority: IRuntimeAuthorityReferenceV1;
39
+ authority: IRuntimeAuthorityReference;
40
40
  renewal: IRuntimeNetworkDnsLeaseRenewal;
41
41
  /** Ed25519 signature of the complete domain-separated envelope, lowercase hex. */
42
42
  signature: string;
@@ -51,7 +51,7 @@ export interface ISignedRuntimeNetworkDnsLeaseRenewal {
51
51
  export interface IHoldRuntimeNetworkDnsLeaseRenewalsRequest {
52
52
  /** The relay's own socket names the cluster; one relay carries every node of it, so the node is named here. */
53
53
  nodeId: string;
54
- projection: IRuntimeAuthorityReferenceV1;
54
+ projection: IRuntimeAuthorityReference;
55
55
  /** Ascending by sequence. Empty holds nothing for this node. */
56
56
  renewals: ISignedRuntimeNetworkDnsLeaseRenewal[];
57
57
  }
@@ -75,6 +75,33 @@ export const runtimeNetworkDnsLeaseRenewalContract = Object.freeze({
75
75
  revocationLatency: 'a-detached-cluster-keeps-dns-authority-until-its-last-held-window-ends',
76
76
  } as const);
77
77
 
78
+ /**
79
+ * Every reason a relay refuses to hold a run, in the words the refusal leads with.
80
+ *
81
+ * A hold is the one call whose outcome a controller cannot read back from its own records: the
82
+ * run lives in the relay's memory, so the refusal is the only statement about whether that node's
83
+ * windows are carried. The relay writes `<name>: <reason>` and the controller matches the name,
84
+ * which is why the names are stated here instead of being spelled out on both sides.
85
+ */
86
+ export const holdRuntimeNetworkDnsLeaseRenewalsRefusals = Object.freeze([
87
+ /** The run itself is not a valid one, so nothing of it was held. */
88
+ 'escrow-run-invalid',
89
+ /** This relay carries no session for that node; its renewals were not held. */
90
+ 'escrow-node-not-carried',
91
+ /** The node's session changed while the run waited, so the run is for a session that is gone. */
92
+ 'escrow-run-foreign-session',
93
+ /** The relay already holds a run that is provably newer for the same projection. */
94
+ 'escrow-run-stale',
95
+ /** The run renews a projection that cannot be ordered against the held one. */
96
+ 'escrow-run-unordered',
97
+ /** A node reached this method: a run is held only for the controller, over the relay's session. */
98
+ 'escrow-cloudly-only',
99
+ ] as const);
100
+
101
+ /** One of the reasons a relay answers instead of holding a run. */
102
+ export type THoldRuntimeNetworkDnsLeaseRenewalsRefusal =
103
+ typeof holdRuntimeNetworkDnsLeaseRenewalsRefusals[number];
104
+
78
105
  export const snapshotRuntimeNetworkDnsLeaseRenewal = (value: unknown): IRuntimeNetworkDnsLeaseRenewal => networkSafe(() => {
79
106
  const item = networkRecord(captureNetwork(value), ['controller', 'nodeId', 'runtimeNamespace', 'projection', 'sequence', 'dns', 'digest']);
80
107
  return { ...networkScope(item), projection: networkReference(item.projection), sequence: networkCounter(item.sequence),
@@ -130,9 +157,9 @@ export const getRuntimeNetworkEffectiveDnsWindow = async (
130
157
  projectionValue: unknown, renewalValue: unknown | null,
131
158
  ): Promise<IRuntimeNetworkDnsWindow> => {
132
159
  try {
133
- const projectionInput = snapshotRuntimeNetworkProjectionV1(projectionValue);
160
+ const projectionInput = snapshotRuntimeNetworkProjection(projectionValue);
134
161
  const renewalInput = renewalValue === null ? null : snapshotRuntimeNetworkDnsLeaseRenewal(renewalValue);
135
- const projection = await validateRuntimeNetworkProjectionV1(projectionInput);
162
+ const projection = await validateRuntimeNetworkProjection(projectionInput);
136
163
  const renewal = renewalInput === null ? null : await validateRuntimeNetworkDnsLeaseRenewal(renewalInput);
137
164
  return networkEffectiveDnsWindow(projection, renewal);
138
165
  } catch { return failNetwork(); }
@@ -158,12 +185,12 @@ export const admitRuntimeNetworkDnsLeaseRenewal = async (
158
185
  try {
159
186
  // Snapshot ALL caller-owned inputs before the first asynchronous operation.
160
187
  const incoming = snapshotRuntimeNetworkDnsLeaseRenewal(value);
161
- const projectionInput = snapshotRuntimeNetworkProjectionV1(currentProjectionValue);
188
+ const projectionInput = snapshotRuntimeNetworkProjection(currentProjectionValue);
162
189
  const previousInput = previousValue === null ? null : snapshotRuntimeNetworkDnsLeaseRenewal(previousValue);
163
- const trusted = snapshotRuntimeNetworkNodeScopeV1(trustedScopeValue);
190
+ const trusted = snapshotRuntimeNetworkNodeScope(trustedScopeValue);
164
191
  const now = networkCounter(nowValue);
165
192
  const renewal = await validateRuntimeNetworkDnsLeaseRenewal(incoming);
166
- const projection = await validateRuntimeNetworkProjectionV1(projectionInput);
193
+ const projection = await validateRuntimeNetworkProjection(projectionInput);
167
194
  requireNetwork(networkSameScope(projection, trusted) && networkRenewsProjection(renewal, projection));
168
195
  const previous = previousInput === null ? null : await validateRuntimeNetworkDnsLeaseRenewal(previousInput);
169
196
  if (previous !== null) {
@@ -0,0 +1,37 @@
1
+ import type { IRuntimeNetworkProtectedAuthority } from './networkauthority.js';
2
+ import { captureNetwork, networkCounter, networkId, networkRecord, networkSafe } from '../private/networkcontract.js';
3
+
4
+ type TEgressOwner = IRuntimeNetworkProtectedAuthority['egressAuthorities'][number];
5
+
6
+ /**
7
+ * One unmet condition of a node's runtime network readiness, in the order the node producer meets
8
+ * them: the node joins the protected authority's egress, every egress owner reports current
9
+ * protection, a handoff is reserved, the router selection carries it, the node's acknowledged
10
+ * projection carries it, and the node is a managed VPN member. `protection-receipts-pending` names
11
+ * the egress owners whose current receipts are still missing.
12
+ */
13
+ export type TRuntimeNetworkNodeReadinessGap =
14
+ | { condition: 'egress-pending' | 'handoff-pending' | 'selection-pending' | 'projection-pending' | 'vpn-member-pending' }
15
+ | { condition: 'protection-receipts-pending'; owners: [TEgressOwner, ...TEgressOwner[]] };
16
+
17
+ /** A node is ready exactly when nothing is missing. */
18
+ export type IRuntimeNetworkNodeReadiness = { nodeId: string } & (
19
+ | { ready: true; missing: [] }
20
+ | { ready: false; missing: [TRuntimeNetworkNodeReadinessGap, ...TRuntimeNetworkNodeReadinessGap[]] }
21
+ );
22
+
23
+ /**
24
+ * The router incarnation of one node. A handoff's id and router incarnation id derive from it, so
25
+ * advancing it is the only way to give a node's router a fresh handoff.
26
+ */
27
+ export interface IRuntimeRouterIncarnation {
28
+ /** The node id. */
29
+ id: string;
30
+ /** Starts at 1 with the node's first handoff; every reincarnation advances it by one. */
31
+ incarnation: number;
32
+ }
33
+
34
+ export const snapshotRuntimeRouterIncarnation = (value: unknown): IRuntimeRouterIncarnation => networkSafe(() => {
35
+ const item = networkRecord(captureNetwork(value), ['id', 'incarnation']);
36
+ return { id: networkId(item.id), incarnation: networkCounter(item.incarnation) };
37
+ });