@graphty/graph-format 0.0.0 → 0.2.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 (224) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -43
  3. package/dist/graph-format.d.ts +1 -0
  4. package/dist/graph-format.d.ts.map +1 -0
  5. package/dist/graph-format.js +15798 -0
  6. package/dist/graph-format.js.map +1 -0
  7. package/dist/src/builder/arena.d.ts +85 -0
  8. package/dist/src/builder/arena.d.ts.map +1 -0
  9. package/dist/src/builder/arena.js +154 -0
  10. package/dist/src/builder/arena.js.map +1 -0
  11. package/dist/src/builder/compact.d.ts +515 -0
  12. package/dist/src/builder/compact.d.ts.map +1 -0
  13. package/dist/src/builder/compact.js +1553 -0
  14. package/dist/src/builder/compact.js.map +1 -0
  15. package/dist/src/builder/counting-sort.d.ts +96 -0
  16. package/dist/src/builder/counting-sort.d.ts.map +1 -0
  17. package/dist/src/builder/counting-sort.js +430 -0
  18. package/dist/src/builder/counting-sort.js.map +1 -0
  19. package/dist/src/builder/freeze.d.ts +72 -0
  20. package/dist/src/builder/freeze.d.ts.map +1 -0
  21. package/dist/src/builder/freeze.js +548 -0
  22. package/dist/src/builder/freeze.js.map +1 -0
  23. package/dist/src/builder/graph-builder.d.ts +602 -0
  24. package/dist/src/builder/graph-builder.d.ts.map +1 -0
  25. package/dist/src/builder/graph-builder.js +1940 -0
  26. package/dist/src/builder/graph-builder.js.map +1 -0
  27. package/dist/src/builder/options.d.ts +16 -0
  28. package/dist/src/builder/options.d.ts.map +1 -0
  29. package/dist/src/builder/options.js +21 -0
  30. package/dist/src/builder/options.js.map +1 -0
  31. package/dist/src/columns/bitmap.d.ts +96 -0
  32. package/dist/src/columns/bitmap.d.ts.map +1 -0
  33. package/dist/src/columns/bitmap.js +184 -0
  34. package/dist/src/columns/bitmap.js.map +1 -0
  35. package/dist/src/columns/column.d.ts +220 -0
  36. package/dist/src/columns/column.d.ts.map +1 -0
  37. package/dist/src/columns/column.js +2109 -0
  38. package/dist/src/columns/column.js.map +1 -0
  39. package/dist/src/columns/dictionary.d.ts +60 -0
  40. package/dist/src/columns/dictionary.d.ts.map +1 -0
  41. package/dist/src/columns/dictionary.js +102 -0
  42. package/dist/src/columns/dictionary.js.map +1 -0
  43. package/dist/src/columns/growable.d.ts +198 -0
  44. package/dist/src/columns/growable.d.ts.map +1 -0
  45. package/dist/src/columns/growable.js +296 -0
  46. package/dist/src/columns/growable.js.map +1 -0
  47. package/dist/src/columns/infer.d.ts +121 -0
  48. package/dist/src/columns/infer.d.ts.map +1 -0
  49. package/dist/src/columns/infer.js +268 -0
  50. package/dist/src/columns/infer.js.map +1 -0
  51. package/dist/src/columns/remap.d.ts +143 -0
  52. package/dist/src/columns/remap.d.ts.map +1 -0
  53. package/dist/src/columns/remap.js +588 -0
  54. package/dist/src/columns/remap.js.map +1 -0
  55. package/dist/src/columns/table.d.ts +184 -0
  56. package/dist/src/columns/table.d.ts.map +1 -0
  57. package/dist/src/columns/table.js +485 -0
  58. package/dist/src/columns/table.js.map +1 -0
  59. package/dist/src/constants.d.ts +34 -0
  60. package/dist/src/constants.d.ts.map +1 -0
  61. package/dist/src/constants.js +79 -0
  62. package/dist/src/constants.js.map +1 -0
  63. package/dist/src/errors.d.ts +76 -0
  64. package/dist/src/errors.d.ts.map +1 -0
  65. package/dist/src/errors.js +32 -0
  66. package/dist/src/errors.js.map +1 -0
  67. package/dist/src/ids/edge-id-index.d.ts +77 -0
  68. package/dist/src/ids/edge-id-index.d.ts.map +1 -0
  69. package/dist/src/ids/edge-id-index.js +155 -0
  70. package/dist/src/ids/edge-id-index.js.map +1 -0
  71. package/dist/src/ids/node-id-map.d.ts +280 -0
  72. package/dist/src/ids/node-id-map.d.ts.map +1 -0
  73. package/dist/src/ids/node-id-map.js +1139 -0
  74. package/dist/src/ids/node-id-map.js.map +1 -0
  75. package/dist/src/ids/string-store.d.ts +219 -0
  76. package/dist/src/ids/string-store.d.ts.map +1 -0
  77. package/dist/src/ids/string-store.js +526 -0
  78. package/dist/src/ids/string-store.js.map +1 -0
  79. package/dist/src/index.d.ts +30 -0
  80. package/dist/src/index.d.ts.map +1 -0
  81. package/dist/src/index.js +29 -0
  82. package/dist/src/index.js.map +1 -0
  83. package/dist/src/populate/from-csr.d.ts +61 -0
  84. package/dist/src/populate/from-csr.d.ts.map +1 -0
  85. package/dist/src/populate/from-csr.js +706 -0
  86. package/dist/src/populate/from-csr.js.map +1 -0
  87. package/dist/src/populate/from-edge-arrays.d.ts +51 -0
  88. package/dist/src/populate/from-edge-arrays.d.ts.map +1 -0
  89. package/dist/src/populate/from-edge-arrays.js +217 -0
  90. package/dist/src/populate/from-edge-arrays.js.map +1 -0
  91. package/dist/src/populate/from-records.d.ts +51 -0
  92. package/dist/src/populate/from-records.d.ts.map +1 -0
  93. package/dist/src/populate/from-records.js +447 -0
  94. package/dist/src/populate/from-records.js.map +1 -0
  95. package/dist/src/snapshot/derived.d.ts +211 -0
  96. package/dist/src/snapshot/derived.d.ts.map +1 -0
  97. package/dist/src/snapshot/derived.js +1254 -0
  98. package/dist/src/snapshot/derived.js.map +1 -0
  99. package/dist/src/snapshot/graph-meta.d.ts +23 -0
  100. package/dist/src/snapshot/graph-meta.d.ts.map +1 -0
  101. package/dist/src/snapshot/graph-meta.js +159 -0
  102. package/dist/src/snapshot/graph-meta.js.map +1 -0
  103. package/dist/src/snapshot/graph-snapshot.d.ts +509 -0
  104. package/dist/src/snapshot/graph-snapshot.d.ts.map +1 -0
  105. package/dist/src/snapshot/graph-snapshot.js +1247 -0
  106. package/dist/src/snapshot/graph-snapshot.js.map +1 -0
  107. package/dist/src/snapshot/hash.d.ts +90 -0
  108. package/dist/src/snapshot/hash.d.ts.map +1 -0
  109. package/dist/src/snapshot/hash.js +228 -0
  110. package/dist/src/snapshot/hash.js.map +1 -0
  111. package/dist/src/snapshot/queries.d.ts +74 -0
  112. package/dist/src/snapshot/queries.d.ts.map +1 -0
  113. package/dist/src/snapshot/queries.js +131 -0
  114. package/dist/src/snapshot/queries.js.map +1 -0
  115. package/dist/src/snapshot/validate.d.ts +192 -0
  116. package/dist/src/snapshot/validate.d.ts.map +1 -0
  117. package/dist/src/snapshot/validate.js +990 -0
  118. package/dist/src/snapshot/validate.js.map +1 -0
  119. package/dist/src/snapshot/views.d.ts +274 -0
  120. package/dist/src/snapshot/views.d.ts.map +1 -0
  121. package/dist/src/snapshot/views.js +856 -0
  122. package/dist/src/snapshot/views.js.map +1 -0
  123. package/dist/src/types/builder.d.ts +456 -0
  124. package/dist/src/types/builder.d.ts.map +1 -0
  125. package/dist/src/types/builder.js +11 -0
  126. package/dist/src/types/builder.js.map +1 -0
  127. package/dist/src/types/columns.d.ts +615 -0
  128. package/dist/src/types/columns.d.ts.map +1 -0
  129. package/dist/src/types/columns.js +14 -0
  130. package/dist/src/types/columns.js.map +1 -0
  131. package/dist/src/types/index.d.ts +14 -0
  132. package/dist/src/types/index.d.ts.map +1 -0
  133. package/dist/src/types/index.js +11 -0
  134. package/dist/src/types/index.js.map +1 -0
  135. package/dist/src/types/internal.d.ts +172 -0
  136. package/dist/src/types/internal.d.ts.map +1 -0
  137. package/dist/src/types/internal.js +13 -0
  138. package/dist/src/types/internal.js.map +1 -0
  139. package/dist/src/types/snapshot.d.ts +801 -0
  140. package/dist/src/types/snapshot.d.ts.map +1 -0
  141. package/dist/src/types/snapshot.js +14 -0
  142. package/dist/src/types/snapshot.js.map +1 -0
  143. package/dist/src/types/wire.d.ts +196 -0
  144. package/dist/src/types/wire.d.ts.map +1 -0
  145. package/dist/src/types/wire.js +8 -0
  146. package/dist/src/types/wire.js.map +1 -0
  147. package/dist/src/util/mask.d.ts +55 -0
  148. package/dist/src/util/mask.d.ts.map +1 -0
  149. package/dist/src/util/mask.js +71 -0
  150. package/dist/src/util/mask.js.map +1 -0
  151. package/dist/src/util/options.d.ts +22 -0
  152. package/dist/src/util/options.d.ts.map +1 -0
  153. package/dist/src/util/options.js +49 -0
  154. package/dist/src/util/options.js.map +1 -0
  155. package/dist/src/util/shared-buffers.d.ts +42 -0
  156. package/dist/src/util/shared-buffers.d.ts.map +1 -0
  157. package/dist/src/util/shared-buffers.js +52 -0
  158. package/dist/src/util/shared-buffers.js.map +1 -0
  159. package/dist/src/util/typed-array.d.ts +205 -0
  160. package/dist/src/util/typed-array.d.ts.map +1 -0
  161. package/dist/src/util/typed-array.js +289 -0
  162. package/dist/src/util/typed-array.js.map +1 -0
  163. package/dist/src/wire/bytes.d.ts +69 -0
  164. package/dist/src/wire/bytes.d.ts.map +1 -0
  165. package/dist/src/wire/bytes.js +361 -0
  166. package/dist/src/wire/bytes.js.map +1 -0
  167. package/dist/src/wire/carried-views.d.ts +111 -0
  168. package/dist/src/wire/carried-views.d.ts.map +1 -0
  169. package/dist/src/wire/carried-views.js +286 -0
  170. package/dist/src/wire/carried-views.js.map +1 -0
  171. package/dist/src/wire/from-wire.d.ts +144 -0
  172. package/dist/src/wire/from-wire.d.ts.map +1 -0
  173. package/dist/src/wire/from-wire.js +1425 -0
  174. package/dist/src/wire/from-wire.js.map +1 -0
  175. package/dist/src/wire/to-wire.d.ts +171 -0
  176. package/dist/src/wire/to-wire.d.ts.map +1 -0
  177. package/dist/src/wire/to-wire.js +652 -0
  178. package/dist/src/wire/to-wire.js.map +1 -0
  179. package/dist/tsconfig.build.tsbuildinfo +1 -0
  180. package/package.json +72 -7
  181. package/src/builder/arena.ts +192 -0
  182. package/src/builder/compact.ts +1811 -0
  183. package/src/builder/counting-sort.ts +506 -0
  184. package/src/builder/freeze.ts +689 -0
  185. package/src/builder/graph-builder.ts +2264 -0
  186. package/src/builder/options.ts +29 -0
  187. package/src/columns/bitmap.ts +196 -0
  188. package/src/columns/column.ts +2574 -0
  189. package/src/columns/dictionary.ts +114 -0
  190. package/src/columns/growable.ts +350 -0
  191. package/src/columns/infer.ts +285 -0
  192. package/src/columns/remap.ts +663 -0
  193. package/src/columns/table.ts +568 -0
  194. package/src/constants.ts +89 -0
  195. package/src/errors.ts +115 -0
  196. package/src/ids/edge-id-index.ts +179 -0
  197. package/src/ids/node-id-map.ts +1340 -0
  198. package/src/ids/string-store.ts +589 -0
  199. package/src/index.ts +139 -0
  200. package/src/lib-resizable-array-buffer.d.ts +34 -0
  201. package/src/populate/from-csr.ts +802 -0
  202. package/src/populate/from-edge-arrays.ts +257 -0
  203. package/src/populate/from-records.ts +536 -0
  204. package/src/snapshot/derived.ts +1486 -0
  205. package/src/snapshot/graph-meta.ts +167 -0
  206. package/src/snapshot/graph-snapshot.ts +1503 -0
  207. package/src/snapshot/hash.ts +241 -0
  208. package/src/snapshot/queries.ts +136 -0
  209. package/src/snapshot/validate.ts +1108 -0
  210. package/src/snapshot/views.ts +943 -0
  211. package/src/types/builder.ts +480 -0
  212. package/src/types/columns.ts +727 -0
  213. package/src/types/index.ts +14 -0
  214. package/src/types/internal.ts +195 -0
  215. package/src/types/snapshot.ts +886 -0
  216. package/src/types/wire.ts +207 -0
  217. package/src/util/mask.ts +89 -0
  218. package/src/util/options.ts +57 -0
  219. package/src/util/shared-buffers.ts +56 -0
  220. package/src/util/typed-array.ts +371 -0
  221. package/src/wire/bytes.ts +440 -0
  222. package/src/wire/carried-views.ts +327 -0
  223. package/src/wire/from-wire.ts +1690 -0
  224. package/src/wire/to-wire.ts +755 -0
@@ -0,0 +1,509 @@
1
+ /**
2
+ * The concrete GraphSnapshot class (design sections 3, 5.8, 7, 9.3 and 11.4) and its factory
3
+ * `createSnapshot(parts)`, plus the boundary helpers `isGraphSnapshot` / `equalsTopology` (design
4
+ * section 7.5) and the arena helpers a GPU consumer binds segments with (section 10.3).
5
+ *
6
+ * The object is frozen with `Object.freeze` so `snapshot.rowPtr = x` throws in strict mode; every
7
+ * lazily populated member (the identity permutations of design section 3.1, the view cache of
8
+ * section 7.2, the checksum records of section 5.8, the content hash, the edge id index) lives in
9
+ * one mutable state record reachable only through a private field, which `Object.freeze` does not
10
+ * reach. `arcToEdge` / `edgeToArc` are prototype getters that materialise an identity permutation on
11
+ * first access outside the arena (never on the wire, never in `byteLength()`); `rowPtr`, `colIdx`
12
+ * and `weights` are plain data properties so hot loops pay nothing. Every method that reads the core
13
+ * throws `E_DETACHED` once the core buffer was transferred away (`detached` is derived:
14
+ * `rowPtr.length === 0`).
15
+ *
16
+ * Views are computed by views.ts, queries by queries.ts, derived graphs by derived.ts (which returns
17
+ * SnapshotParts that this module wraps), invariant checks by validate.ts and hashes by hash.ts. The
18
+ * wire methods (`toWire`, `toBytes`, `toByteChunks`, `transferables`) call the wire module directly;
19
+ * the wire module imports this one too, and the cycle is safe because each side reaches the other
20
+ * only through hoisted function declarations invoked at call time, never at module load.
21
+ */
22
+ import { SNAPSHOT_BRAND } from "../constants.js";
23
+ import { type ArenaLayout, type AttributeTable, type ByteLengthOptions, type ColumnInput, type ContractOptions, type CooView, type DegreeOrderOptions, type DegreeOrderView, type DerivedGraph, type EdgeId, type EdgeListView, type EdgeMask, type F32, type F64, type GraphMeta, type GraphSnapshotContract, type NodeIdMap, type NodeMask, type ReverseView, type SimplifyOptions, type SnapshotFlags, type ToBytesOptions, type ToUndirectedOptions, type ToWireOptions, type TypedArrayData, type U8, type U32, type ValidateOptions, type ViewName, type WireSnapshot } from "../types/index.js";
24
+ import { type SnapshotParts, type ViewCache } from "../types/internal.js";
25
+ /**
26
+ * The own enumerable property every snapshot carries whose value is a function, so that
27
+ * `structuredClone(snapshot)` and `postMessage(snapshot)` throw `DataCloneError` immediately (design
28
+ * section 7.5; the structured clone algorithm refuses functions and visits enumerable own
29
+ * properties only).
30
+ */
31
+ export declare const CLONE_GUARD_KEY = "__graphtyNoStructuredClone";
32
+ export { EMPTY_GRAPH_META } from "./graph-meta.js";
33
+ /**
34
+ * The frozen graph (design section 3): a CSR core over 4-byte typed arrays, the id map, the
35
+ * attribute tables, the flags and a per-instance view cache. Topology, counts, flags, id map and
36
+ * immutable columns never change after construction (invariant I17); the column SET of `nodes` /
37
+ * `edges` / `graph` and the CONTENTS of columns declared mutable are mutable side tables (design
38
+ * section 5.8). Every view is a pure function of the core, memoised once and SHARED: a call returns
39
+ * the cached array itself, so writing into a view is a contract violation; call `.slice()` for
40
+ * scratch. Index-taking queries are total for in-range arguments and unchecked otherwise (design
41
+ * section 11.1). Instances come from `createSnapshot()` (the builder, `fromCsr`, `fromWire` and the
42
+ * derived-graph methods); `isGraphSnapshot()` recognises them structurally by brand and
43
+ * formatVersion.
44
+ */
45
+ export declare class GraphSnapshot implements GraphSnapshotContract {
46
+ /** Symbol.for brand read by isGraphSnapshot() (design section 7.5). */
47
+ readonly [SNAPSHOT_BRAND]: true;
48
+ /** Process-unique identity of the CORE; shared by withColumns() snapshots (design section 5.8). */
49
+ readonly serial: number;
50
+ /** Debugging aid supplied at freeze. */
51
+ readonly label: string | null;
52
+ /** The data-model major (design section 13.5). */
53
+ readonly formatVersion: 1;
54
+ /** Whether the graph is directed. */
55
+ readonly directed: boolean;
56
+ /** n (invariant I3). */
57
+ readonly nodeCount: number;
58
+ /** Number of logical edges (invariant I13). */
59
+ readonly edgeCount: number;
60
+ /** colIdx.length (invariants I6, I7). */
61
+ readonly arcCount: number;
62
+ /** Logical edges with source === target. */
63
+ readonly selfLoopCount: number;
64
+ /** nodeCount + 1 row offsets (invariant I1). */
65
+ readonly rowPtr: U32;
66
+ /** Target node index of each arc, sorted within each row (invariants I2, I4). */
67
+ readonly colIdx: U32;
68
+ /** arcCount f32 weights; null when unweighted. */
69
+ readonly weights: F32 | null;
70
+ /** Flags kernels branch on (design section 3.8). */
71
+ readonly flags: SnapshotFlags;
72
+ /** The id map (design section 4). */
73
+ readonly ids: NodeIdMap;
74
+ /** Node attribute table, rowCount === nodeCount. */
75
+ readonly nodes: AttributeTable;
76
+ /** Edge attribute table, rowCount === edgeCount, indexed by logical edge. */
77
+ readonly edges: AttributeTable;
78
+ /** Graph attribute table, rowCount === 1. */
79
+ readonly graph: AttributeTable;
80
+ /** Extension tables keyed by name (design section 5.10). */
81
+ readonly extensions: ReadonlyMap<string, AttributeTable>;
82
+ /** Graph-level metadata (design section 5.9). */
83
+ readonly meta: GraphMeta;
84
+ /** The arena holding the core arrays, or null (design section 10.3). */
85
+ readonly arena: ArenaLayout | null;
86
+ /**
87
+ * The lazily populated members (design section 5.8): defined as a NON-enumerable own property in
88
+ * the constructor (`declare` keeps tsc from emitting a field), so `Object.keys(snapshot)` lists
89
+ * exactly the public fields plus the documented clone guard, and JSON / spread / structured
90
+ * clone never walk the view cache.
91
+ */
92
+ private readonly state;
93
+ /**
94
+ * rowPtr.length === 0: the core buffer was transferred away (design section 9.4). Derived from the
95
+ * array state, never a stored bit, so every holder of the same core agrees.
96
+ * @returns true when detached
97
+ */
98
+ get detached(): boolean;
99
+ /**
100
+ * Logical edge of every arc (invariant I5); an identity permutation is materialised on first
101
+ * access as a separate 4-byte-aligned array outside the arena. GPU code tests
102
+ * `flags.arcToEdgeIsIdentity` before reading it.
103
+ * @returns arcCount entries; E_DETACHED after a consuming transfer
104
+ */
105
+ get arcToEdge(): U32;
106
+ /**
107
+ * The arc holding the declared orientation of every logical edge (invariant I5); an identity
108
+ * permutation is materialised on first access outside the arena.
109
+ * @returns edgeCount entries; E_DETACHED after a consuming transfer
110
+ */
111
+ get edgeToArc(): U32;
112
+ /**
113
+ * The out-arc range of a node: [rowPtr[u], rowPtr[u + 1]]. Allocates a tuple; hot loops read
114
+ * rowPtr directly.
115
+ * @param u - the node index
116
+ * @returns the half-open arc range as [start, end]
117
+ */
118
+ outArcs(u: number): readonly [start: number, end: number];
119
+ /**
120
+ * rowPtr[u + 1] - rowPtr[u]: the out-arc count (a self-loop counted once).
121
+ * @param u - the node index
122
+ * @returns the out-degree
123
+ */
124
+ outDegreeOf(u: number): number;
125
+ /**
126
+ * Binary search for the first arc u -> v (the lowest logical edge index among parallels).
127
+ * @param u - the source node index
128
+ * @param v - the target node index
129
+ * @returns the arc index, or INVALID_INDEX when absent
130
+ */
131
+ findArc(u: number, v: number): number;
132
+ /**
133
+ * Whether an arc u -> v exists.
134
+ * @param u - the source node index
135
+ * @param v - the target node index
136
+ * @returns findArc(u, v) !== INVALID_INDEX
137
+ */
138
+ hasArc(u: number, v: number): boolean;
139
+ /**
140
+ * The half-open arc range [lo, hi) of every arc u -> v; empty when lo === hi. Allocates a tuple.
141
+ * @param u - the source node index
142
+ * @param v - the target node index
143
+ * @returns the range as [lo, hi]
144
+ */
145
+ arcsBetween(u: number, v: number): readonly [lo: number, hi: number];
146
+ /**
147
+ * Number of parallel arcs u -> v.
148
+ * @param u - the source node index
149
+ * @param v - the target node index
150
+ * @returns hi - lo of arcsBetween(u, v)
151
+ */
152
+ multiplicity(u: number, v: number): number;
153
+ /**
154
+ * The row containing an arc: O(1) through the cached coo() view, else a binary search on rowPtr.
155
+ * @param a - the arc index
156
+ * @returns the source node index
157
+ */
158
+ arcSource(a: number): number;
159
+ /**
160
+ * Declared source of a logical edge: arcSource(edgeToArc[e]).
161
+ * @param e - the logical edge index
162
+ * @returns the source node index
163
+ */
164
+ edgeSource(e: number): number;
165
+ /**
166
+ * Declared target of a logical edge: colIdx[edgeToArc[e]].
167
+ * @param e - the logical edge index
168
+ * @returns the target node index
169
+ */
170
+ edgeTarget(e: number): number;
171
+ /**
172
+ * Lookup through the role "id" edge column, backed by a Map built on first call and rebuilt when the
173
+ * column is replaced or a mutable id column's version changes (design section 4.6).
174
+ * @param id - the edge id
175
+ * @returns the logical edge index, or INVALID_INDEX on a miss or when no id column exists
176
+ */
177
+ edgeIndexOf(id: EdgeId): number;
178
+ /**
179
+ * The in-adjacency, rows sorted by source; the forward arrays themselves when undirected. Cached
180
+ * and shared.
181
+ * @returns the reverse view
182
+ */
183
+ reverse(): ReverseView;
184
+ /**
185
+ * Per-arc COO form; src is the only new array. Cached and shared.
186
+ * @returns the COO view
187
+ */
188
+ coo(): CooView;
189
+ /**
190
+ * Every logical edge once in declared orientation. Cached and shared.
191
+ * @returns the edge list view
192
+ */
193
+ edgeList(): EdgeListView;
194
+ /**
195
+ * rowPtr differences materialised; a self-loop counted once. Cached and shared: call `.slice()`
196
+ * before writing.
197
+ * @returns Uint32Array(n)
198
+ */
199
+ outDegree(): U32;
200
+ /**
201
+ * Arcs targeting each node, via reverse().rowPtr; the same object as outDegree() when undirected.
202
+ * Cached and shared: call `.slice()` before writing.
203
+ * @returns Uint32Array(n)
204
+ */
205
+ inDegree(): U32;
206
+ /**
207
+ * Graph-theoretic degree (NetworkX convention, design section 3.4): in + out when directed; out
208
+ * plus self-loops when undirected. Cached and shared: call `.slice()` before writing.
209
+ * @returns Uint32Array(n)
210
+ */
211
+ degree(): U32;
212
+ /**
213
+ * Row sums of weights (a self-loop arc counted once); outDegree widened when unweighted. F64 for
214
+ * CPU precision; may be 0 for a node with out-arcs. Cached and shared: call `.slice()` before
215
+ * writing.
216
+ * @returns Float64Array(n)
217
+ */
218
+ weightedOutDegree(): F64;
219
+ /**
220
+ * Weight sums over incoming arcs; the same object as weightedOutDegree() when undirected. Cached
221
+ * and shared: call `.slice()` before writing.
222
+ * @returns Float64Array(n)
223
+ */
224
+ weightedInDegree(): F64;
225
+ /**
226
+ * NetworkX weighted degree: weightedOutDegree + (directed ? weightedInDegree : selfLoopWeight), so
227
+ * the sum is 2 * totalWeight() when undirected. Cached and shared: call `.slice()` before writing.
228
+ * @returns Float64Array(n)
229
+ */
230
+ weightedDegree(): F64;
231
+ /**
232
+ * Sum of weights over each node's self-loop arcs (selfLoopsPerNode widened when unweighted).
233
+ * Cached and shared: call `.slice()` before writing.
234
+ * @returns Float64Array(n)
235
+ */
236
+ selfLoopWeight(): F64;
237
+ /**
238
+ * Sum of weights over logical edges (each undirected edge once). Cached.
239
+ * @returns the total weight
240
+ */
241
+ totalWeight(): number;
242
+ /**
243
+ * The arcs a with colIdx[a] === row(a), found by binary search per row. Cached and shared: call
244
+ * `.slice()` before writing.
245
+ * @returns Uint32Array(selfLoopCount)
246
+ */
247
+ selfLoopArcs(): U32;
248
+ /**
249
+ * Self-loop arcs per node. Cached and shared: call `.slice()` before writing.
250
+ * @returns Uint32Array(n)
251
+ */
252
+ selfLoopsPerNode(): U32;
253
+ /**
254
+ * Point query: self-loop arcs at one node, O(log d).
255
+ * @param u - the node index
256
+ * @returns the count
257
+ */
258
+ selfLoopsAt(u: number): number;
259
+ /**
260
+ * For every arc, the arc storing the opposite orientation of the same edge (a self-loop maps to
261
+ * itself); the lockstep walk of design section 6.4. Undirected only. Cached and shared: call
262
+ * `.slice()` before writing.
263
+ * @returns Uint32Array(arcCount); E_DIRECTED on a directed snapshot
264
+ */
265
+ mate(): U32;
266
+ /**
267
+ * Nodes ordered by descending out-degree of the forward or reverse adjacency with the cuGraph tier
268
+ * boundaries. Both variants cached; on an undirected snapshot they are the same object.
269
+ * @param options - which adjacency's degree to order by
270
+ * @returns the permutation and its tier offsets
271
+ */
272
+ degreeOrder(options?: DegreeOrderOptions): DegreeOrderView;
273
+ /**
274
+ * Whether the arc set is closed under reversal with equal weights (forward row v equals reverse row
275
+ * v for every v); true without work when undirected. Cached.
276
+ * @returns true when symmetric
277
+ */
278
+ isSymmetric(): boolean;
279
+ /**
280
+ * Compute a set of views eagerly (inside freeze() through FreezeOptions.prepare, or off the critical
281
+ * path).
282
+ * @param views - the views to materialise
283
+ * @returns this snapshot
284
+ */
285
+ prepare(views: readonly ViewName[]): this;
286
+ /**
287
+ * Release every cached view (and every identity permutation materialised on demand) and every
288
+ * cached `gpuView()` f32 copy of an f64 column (design section 7.2); they are recomputed on
289
+ * demand. The checksum records of the dropped views are dropped with them.
290
+ */
291
+ dropCaches(): void;
292
+ /**
293
+ * Which views are resident.
294
+ * @returns the names of the cached views, in the fixed ViewName order
295
+ */
296
+ cachedViews(): readonly ViewName[];
297
+ /**
298
+ * Every directed edge becomes undirected; reciprocal pairs collapse to one edge keeping the lower
299
+ * index's row (keep-first). Returns `{ snapshot: this, null maps }` on an undirected snapshot.
300
+ * @param options - reciprocal filtering and the weight reducer
301
+ * @returns the derived graph
302
+ */
303
+ toUndirected(options?: ToUndirectedOptions): DerivedGraph;
304
+ /**
305
+ * Orientation of every edge swapped: the reverse view's arrays become the core. Returns this on an
306
+ * undirected snapshot.
307
+ * @returns the derived graph (same node and edge spaces)
308
+ */
309
+ transpose(): DerivedGraph;
310
+ /**
311
+ * One edge per (u, v) group (parallels are adjacent by invariant I4), survivor = lowest index;
312
+ * flags.multigraph is false afterwards.
313
+ * @param options - reducers and self-loop policy
314
+ * @returns the derived graph
315
+ */
316
+ simplified(options?: SimplifyOptions): DerivedGraph;
317
+ /**
318
+ * Every edge with source !== target.
319
+ * @returns the derived graph
320
+ */
321
+ withoutSelfLoops(): DerivedGraph;
322
+ /**
323
+ * Keep the logical edges whose mask bit is set.
324
+ * @param keep - packed bitmap over logical edges; E_MASK_LENGTH when shorter than ceil(edgeCount / 32) words
325
+ * @returns the derived graph
326
+ */
327
+ filterEdges(keep: EdgeMask): DerivedGraph;
328
+ /**
329
+ * The subgraph induced by a node selection: an index list (order = new index order; E_INDEX_RANGE
330
+ * for an out-of-range or repeated index) or a packed mask (ascending order; E_MASK_LENGTH when
331
+ * short). Edges with both endpoints kept.
332
+ * @param selection - the node indices or a mask
333
+ * @returns the derived graph
334
+ */
335
+ inducedSubgraph(selection: U32 | {
336
+ readonly mask: NodeMask;
337
+ }): DerivedGraph;
338
+ /**
339
+ * Contract the nodes of each partition block into one node (design section 7.3).
340
+ * @param partition - one label per node; E_PARTITION for a wrong length or an INVALID_INDEX label
341
+ * @param options - weight reducer, self-loop and parallel policies, column reducers
342
+ * @returns the derived graph with blockSizes and an identity id map
343
+ */
344
+ contract(partition: U32, options?: ContractOptions): DerivedGraph;
345
+ /**
346
+ * Permute the node space: perm[newIndex] = oldIndex; the id map follows; edge order is preserved.
347
+ * @param perm - a permutation of 0..n-1; E_INVALID_PERMUTATION otherwise
348
+ * @returns the derived graph
349
+ */
350
+ relabel(perm: U32): DerivedGraph;
351
+ /**
352
+ * A new snapshot object sharing the core, the id map and the serial with a CLONED column set plus
353
+ * the given columns (the only operation that clones the column set).
354
+ * @param nodes - node columns to add, keyed by name
355
+ * @param edges - edge columns to add, keyed by name
356
+ * @returns the new snapshot
357
+ */
358
+ withColumns(nodes?: Readonly<Record<string, TypedArrayData | ColumnInput>>, edges?: Readonly<Record<string, TypedArrayData | ColumnInput>>): GraphSnapshot;
359
+ /**
360
+ * Resident bytes of the core (an identity permutation counts zero even when materialised), plus
361
+ * the side structures selected by the options.
362
+ * @param options - which side structures to include
363
+ * @returns the byte count
364
+ */
365
+ byteLength(options?: ByteLengthOptions): number;
366
+ /**
367
+ * A 64-bit content hash of the core arrays (two 32-bit FNV-1a lanes) as 16 hex characters,
368
+ * computed lazily and cached (design section 9.3).
369
+ * @returns the hash
370
+ */
371
+ contentHash(): string;
372
+ /**
373
+ * The distinct, exclusively owned backing buffers: the postMessage transfer list (design section
374
+ * 9.1). Buffers shared with another holder (a withColumns() sibling, a derived graph sharing the
375
+ * node table) are excluded.
376
+ * @returns the buffers
377
+ */
378
+ transferables(): ArrayBuffer[];
379
+ /**
380
+ * The plain-object wire form (design section 9.1): a JSON-serialisable manifest plus the backing
381
+ * buffers. With `transfer: true` only exclusively owned buffers are listed as transferables and
382
+ * shared ones are copied.
383
+ * @param options - transfer mode, views and columns to include
384
+ * @returns the wire snapshot
385
+ */
386
+ toWire(options?: ToWireOptions): WireSnapshot;
387
+ /**
388
+ * The GSNP byte container as one contiguous buffer (design section 9.2).
389
+ * @param options - views to include
390
+ * @returns the container bytes
391
+ */
392
+ toBytes(options?: ToBytesOptions): U8;
393
+ /**
394
+ * The GSNP container as a sequence of chunks (design section 9.2): the header plus manifest,
395
+ * then one chunk per non-empty segment.
396
+ * @param options - views to include
397
+ * @returns the chunks
398
+ */
399
+ toByteChunks(options?: ToBytesOptions): Iterable<U8>;
400
+ /**
401
+ * Check the invariants (design section 11.4): the recorded checksums first when `checksum` is set
402
+ * (a mutated frozen array is the most useful diagnosis, details.reason "checksum"; "no-checksum"
403
+ * when none were recorded), then "structure" or "full" (default) per the level table of design
404
+ * section 9.5. Throws E_INVALID_SNAPSHOT with details.invariant and the location on the first
405
+ * violation.
406
+ * @param options - level and checksum comparison
407
+ */
408
+ validate(options?: ValidateOptions): void;
409
+ /**
410
+ * Throw E_DETACHED when the core was transferred away.
411
+ */
412
+ private assertAttached;
413
+ /**
414
+ * Return the cached value of a view, computing and recording it on first use.
415
+ * @param name - the view name
416
+ * @param compute - the computation
417
+ * @returns the cached value
418
+ */
419
+ private cached;
420
+ /**
421
+ * Compute both self-loop views in one pass and seed the slot the caller did not ask for.
422
+ * @returns the two views
423
+ */
424
+ private materialiseSelfLoops;
425
+ /**
426
+ * Record the digests of a freshly materialised view when checksums are on.
427
+ * @param name - the view name
428
+ * @param value - the view
429
+ */
430
+ private recordView;
431
+ /**
432
+ * Compare every recorded checksum with the current bytes (design section 5.8).
433
+ */
434
+ private verifyChecksums;
435
+ /**
436
+ * The edge endpoints in declared orientation for the derived-graph functions: the cached edge list
437
+ * when resident, else a fresh one that is NOT cached (derived graphs must not grow the source's
438
+ * resident size, design section 7.3).
439
+ * @returns an edge list view
440
+ */
441
+ private edgeEndpoints;
442
+ /**
443
+ * Wrap derived parts into a DerivedGraph, creating the new snapshot (with this snapshot's checksum
444
+ * setting) or returning this for the identity cases.
445
+ * @param derived - the derived parts
446
+ * @returns the derived graph
447
+ */
448
+ private wrapDerived;
449
+ /**
450
+ * Materialise one named view (the prepare() dispatch).
451
+ * @param name - the view name
452
+ */
453
+ private materialiseView;
454
+ }
455
+ /**
456
+ * Create a snapshot from prepared parts (design section 6.3 step 12): the constructor freezes the
457
+ * object, records checksums when `parts.checksum` is set and allocates the per-instance view cache.
458
+ * @param parts - the parts; I1-I13 established by the producer, O(1) length rules checked here
459
+ * @returns the frozen snapshot
460
+ */
461
+ export declare function createSnapshot(parts: SnapshotParts): GraphSnapshot;
462
+ /**
463
+ * Structural check for a snapshot (design section 7.5): the SNAPSHOT_BRAND property plus the
464
+ * formatVersion, never instanceof, so a duplicated package copy still interoperates.
465
+ * @param x - any value
466
+ * @returns true when x is a GraphSnapshot of this format version
467
+ */
468
+ export declare function isGraphSnapshot(x: unknown): x is GraphSnapshot;
469
+ /**
470
+ * Compare the core arrays and id maps of two snapshots element by element (design section 7.5):
471
+ * directedness, counts, rowPtr, colIdx, weights (both absent or equal), arcToEdge / edgeToArc
472
+ * (identity compared without materialising) and every id (SameValueZero).
473
+ * @param a - the first snapshot
474
+ * @param b - the second snapshot
475
+ * @returns true when the topologies and id maps are equal
476
+ */
477
+ export declare function equalsTopology(a: GraphSnapshot, b: GraphSnapshot): boolean;
478
+ /**
479
+ * Install a view value the wire carried (`includeViews`, design section 9.1) into the snapshot's
480
+ * cache, so the receiver does not recompute it. The caller has already checked that the value has
481
+ * the shape of the view; the slot is only filled when it is still empty.
482
+ * @param snapshot - the snapshot
483
+ * @param name - the view name
484
+ * @param value - the view value
485
+ * @returns true when the view was installed, false when the slot was already resident
486
+ */
487
+ export declare function seedView<K extends ViewName>(snapshot: GraphSnapshot, name: K, value: NonNullable<ViewCache[K]>): boolean;
488
+ /**
489
+ * The cached value of a view without computing it (for tests and for the wire module's
490
+ * `includeViews`).
491
+ * @param snapshot - the snapshot
492
+ * @param name - the view name
493
+ * @returns the cached value, or null when not resident
494
+ */
495
+ export declare function peekView<K extends ViewName>(snapshot: GraphSnapshot, name: K): ViewCache[K];
496
+ /**
497
+ * Whether the snapshot's permutation arrays are held (materialised) rather than lazy, for tests of
498
+ * the identity rule and for the wire module (which never serialises an identity permutation).
499
+ * @param snapshot - the snapshot
500
+ * @returns true when arcToEdge has been materialised or was supplied
501
+ */
502
+ export declare function permutationMaterialised(snapshot: GraphSnapshot): boolean;
503
+ /**
504
+ * Whether checksums were recorded at construction (design section 5.8).
505
+ * @param snapshot - the snapshot
506
+ * @returns true when validate({ checksum: true }) can compare
507
+ */
508
+ export declare function hasChecksums(snapshot: GraphSnapshot): boolean;
509
+ //# sourceMappingURL=graph-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-snapshot.d.ts","sourceRoot":"","sources":["../../../src/snapshot/graph-snapshot.ts"],"names":[],"mappings":"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"}