@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 @@
1
+ {"version":3,"file":"graph-snapshot.js","sourceRoot":"","sources":["../../../src/snapshot/graph-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Content hashing and checksums of @graphty/graph-format (design sections 5.8 and 9.3).
3
+ *
4
+ * `contentHash()` is a 64-bit hash of the core arrays computed as two independent 32-bit FNV-1a-style
5
+ * lanes over u32 words with `Math.imul`, returned as 16 hex characters: the key a cache uses for a
6
+ * snapshot's topology. The same hasher produces the per-array checksums that `freeze({ checksum:
7
+ * true })` records and `validate({ checksum: true })` compares, so a consumer that wrote into a frozen
8
+ * array or a shared view is caught by the tests that opt in (invariant I17).
9
+ *
10
+ * The hash is a pure function of the topology: it covers `directed`, the four counts, `rowPtr`,
11
+ * `colIdx`, `weights` (as raw f32 bit patterns), `arcToEdge` and `edgeToArc`. An identity permutation
12
+ * is hashed as the sequence 0..len-1 WITHOUT materialising it, so two snapshots with the same
13
+ * topology hash identically whether or not their getters were touched (P11). Nothing here depends on
14
+ * the arena, the id map or the columns.
15
+ */
16
+ import { type Column, type GraphSnapshot } from "../types/index.js";
17
+ /**
18
+ * Two-lane FNV-1a-style hasher over u32 words (design section 9.3). Lane A is standard 32-bit FNV-1a
19
+ * applied word-wise (`h = imul(h ^ w, 0x01000193)`); lane B uses a different basis and multiplier
20
+ * (`h = imul(h ^ w, 0x5bd1e995)`) and additionally rotates the word by 16 bits before mixing so the
21
+ * two lanes never agree on which bits they weight. `digest()` renders both lanes as 8 zero-padded hex
22
+ * characters each, lane A first.
23
+ */
24
+ export declare class Fnv1aHasher {
25
+ private laneA;
26
+ private laneB;
27
+ /** Start a fresh hasher at the two offset bases. */
28
+ constructor();
29
+ /**
30
+ * Mix one u32 word (any number is coerced with `>>> 0`).
31
+ * @param word - the word to mix
32
+ * @returns this hasher
33
+ */
34
+ word(word: number): this;
35
+ /**
36
+ * Mix a length prefix followed by every word of a u32 array, so arrays of different lengths with a
37
+ * common prefix hash differently and consecutive arrays cannot be re-split.
38
+ * @param words - the words to mix
39
+ * @returns this hasher
40
+ */
41
+ words(words: Uint32Array): this;
42
+ /**
43
+ * Mix the sequence 0..length-1 (an identity permutation) with the same framing as `words()`, without
44
+ * allocating it.
45
+ * @param length - the permutation length
46
+ * @returns this hasher
47
+ */
48
+ identity(length: number): this;
49
+ /**
50
+ * Mix a byte length prefix followed by the bytes of any ArrayBufferView, four bytes per word
51
+ * (little-endian packing, the last word zero-padded). A view whose byte range is 4-byte aligned
52
+ * is read as u32 words directly.
53
+ * @param view - the bytes to mix
54
+ * @returns this hasher
55
+ */
56
+ bytes(view: ArrayBufferView): this;
57
+ /**
58
+ * Mix a JS string as its length followed by its UTF-16 code units.
59
+ * @param text - the string to mix
60
+ * @returns this hasher
61
+ */
62
+ text(text: string): this;
63
+ /**
64
+ * The 16-character lowercase hex digest: lane A then lane B, each 8 zero-padded characters.
65
+ * @returns the digest
66
+ */
67
+ digest(): string;
68
+ }
69
+ /**
70
+ * The digest of one typed array's bytes (a core array, a view array, a column buffer).
71
+ * @param view - the array to hash
72
+ * @returns the 16-character hex digest
73
+ */
74
+ export declare function hashTypedArray(view: ArrayBufferView): string;
75
+ /**
76
+ * The digest of a column's contents (data, validity, dictionary, strings, child, json text).
77
+ * @param column - the column to hash
78
+ * @returns the 16-character hex digest
79
+ */
80
+ export declare function hashColumn(column: Column): string;
81
+ /**
82
+ * The content hash of a snapshot's topology (design section 9.3): `directed`, the four counts, then
83
+ * `rowPtr`, `colIdx`, `weights` (raw f32 bit patterns; an absent array hashes as length 0),
84
+ * `arcToEdge` and `edgeToArc`, with an identity permutation hashed as 0..len-1 without being
85
+ * materialised (P11: the digest does not depend on which getters were touched).
86
+ * @param snapshot - the snapshot to hash
87
+ * @returns the 16-character hex digest
88
+ */
89
+ export declare function contentHashOf(snapshot: GraphSnapshot): string;
90
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/snapshot/hash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAYpE;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IAEtB,oDAAoD;;IAMpD;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ9B;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAyBlC;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB;;;OAGG;IACH,MAAM,IAAI,MAAM;CAGnB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE5D;AA+CD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASjD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAoB7D"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Content hashing and checksums of @graphty/graph-format (design sections 5.8 and 9.3).
3
+ *
4
+ * `contentHash()` is a 64-bit hash of the core arrays computed as two independent 32-bit FNV-1a-style
5
+ * lanes over u32 words with `Math.imul`, returned as 16 hex characters: the key a cache uses for a
6
+ * snapshot's topology. The same hasher produces the per-array checksums that `freeze({ checksum:
7
+ * true })` records and `validate({ checksum: true })` compares, so a consumer that wrote into a frozen
8
+ * array or a shared view is caught by the tests that opt in (invariant I17).
9
+ *
10
+ * The hash is a pure function of the topology: it covers `directed`, the four counts, `rowPtr`,
11
+ * `colIdx`, `weights` (as raw f32 bit patterns), `arcToEdge` and `edgeToArc`. An identity permutation
12
+ * is hashed as the sequence 0..len-1 WITHOUT materialising it, so two snapshots with the same
13
+ * topology hash identically whether or not their getters were touched (P11). Nothing here depends on
14
+ * the arena, the id map or the columns.
15
+ */
16
+ import { isColumnDetached } from "../columns/column.js";
17
+ import { GraphFormatError } from "../errors.js";
18
+ import { unsupportedDtype } from "../util/typed-array.js";
19
+ /** Lane A: the 32-bit FNV-1a offset basis. */
20
+ const LANE_A_BASIS = 0x811c9dc5;
21
+ /** Lane A: the 32-bit FNV prime. */
22
+ const LANE_A_PRIME = 0x01000193;
23
+ /** Lane B: the high word of the 64-bit FNV offset basis (0xcbf29ce484222325), as an independent seed. */
24
+ const LANE_B_BASIS = 0xcbf29ce4;
25
+ /** Lane B: an odd multiplier unrelated to the FNV prime (the MurmurHash2 constant), so the lanes decorrelate. */
26
+ const LANE_B_MULTIPLIER = 0x5bd1e995;
27
+ /**
28
+ * Two-lane FNV-1a-style hasher over u32 words (design section 9.3). Lane A is standard 32-bit FNV-1a
29
+ * applied word-wise (`h = imul(h ^ w, 0x01000193)`); lane B uses a different basis and multiplier
30
+ * (`h = imul(h ^ w, 0x5bd1e995)`) and additionally rotates the word by 16 bits before mixing so the
31
+ * two lanes never agree on which bits they weight. `digest()` renders both lanes as 8 zero-padded hex
32
+ * characters each, lane A first.
33
+ */
34
+ export class Fnv1aHasher {
35
+ /** Start a fresh hasher at the two offset bases. */
36
+ constructor() {
37
+ this.laneA = LANE_A_BASIS;
38
+ this.laneB = LANE_B_BASIS;
39
+ }
40
+ /**
41
+ * Mix one u32 word (any number is coerced with `>>> 0`).
42
+ * @param word - the word to mix
43
+ * @returns this hasher
44
+ */
45
+ word(word) {
46
+ const w = word >>> 0;
47
+ this.laneA = Math.imul(this.laneA ^ w, LANE_A_PRIME) >>> 0;
48
+ const rotated = ((w << 16) | (w >>> 16)) >>> 0;
49
+ this.laneB = Math.imul(this.laneB ^ rotated, LANE_B_MULTIPLIER) >>> 0;
50
+ return this;
51
+ }
52
+ /**
53
+ * Mix a length prefix followed by every word of a u32 array, so arrays of different lengths with a
54
+ * common prefix hash differently and consecutive arrays cannot be re-split.
55
+ * @param words - the words to mix
56
+ * @returns this hasher
57
+ */
58
+ words(words) {
59
+ this.word(words.length);
60
+ for (let i = 0; i < words.length; i++) {
61
+ this.word(words[i]);
62
+ }
63
+ return this;
64
+ }
65
+ /**
66
+ * Mix the sequence 0..length-1 (an identity permutation) with the same framing as `words()`, without
67
+ * allocating it.
68
+ * @param length - the permutation length
69
+ * @returns this hasher
70
+ */
71
+ identity(length) {
72
+ this.word(length);
73
+ for (let i = 0; i < length; i++) {
74
+ this.word(i);
75
+ }
76
+ return this;
77
+ }
78
+ /**
79
+ * Mix a byte length prefix followed by the bytes of any ArrayBufferView, four bytes per word
80
+ * (little-endian packing, the last word zero-padded). A view whose byte range is 4-byte aligned
81
+ * is read as u32 words directly.
82
+ * @param view - the bytes to mix
83
+ * @returns this hasher
84
+ */
85
+ bytes(view) {
86
+ const { byteLength, byteOffset } = view;
87
+ this.word(byteLength);
88
+ if (byteOffset % 4 === 0 && byteLength % 4 === 0) {
89
+ const words = new Uint32Array(view.buffer, byteOffset, byteLength / 4);
90
+ for (let i = 0; i < words.length; i++) {
91
+ this.word(words[i]);
92
+ }
93
+ return this;
94
+ }
95
+ const bytes = new Uint8Array(view.buffer, byteOffset, byteLength);
96
+ let i = 0;
97
+ for (; i + 4 <= byteLength; i += 4) {
98
+ this.word(bytes[i] | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24));
99
+ }
100
+ if (i < byteLength) {
101
+ let tail = 0;
102
+ for (let k = 0; i + k < byteLength; k++) {
103
+ tail |= bytes[i + k] << (8 * k);
104
+ }
105
+ this.word(tail);
106
+ }
107
+ return this;
108
+ }
109
+ /**
110
+ * Mix a JS string as its length followed by its UTF-16 code units.
111
+ * @param text - the string to mix
112
+ * @returns this hasher
113
+ */
114
+ text(text) {
115
+ this.word(text.length);
116
+ for (let i = 0; i < text.length; i++) {
117
+ this.word(text.charCodeAt(i));
118
+ }
119
+ return this;
120
+ }
121
+ /**
122
+ * The 16-character lowercase hex digest: lane A then lane B, each 8 zero-padded characters.
123
+ * @returns the digest
124
+ */
125
+ digest() {
126
+ return this.laneA.toString(16).padStart(8, "0") + this.laneB.toString(16).padStart(8, "0");
127
+ }
128
+ }
129
+ /**
130
+ * The digest of one typed array's bytes (a core array, a view array, a column buffer).
131
+ * @param view - the array to hash
132
+ * @returns the 16-character hex digest
133
+ */
134
+ export function hashTypedArray(view) {
135
+ return new Fnv1aHasher().bytes(view).digest();
136
+ }
137
+ /**
138
+ * Mix everything that determines a column's contents: dtype, length, null count, validity words,
139
+ * and per dtype the data / codes / dictionary / offsets / utf8 / child / json text. Used for the
140
+ * immutable-column checksums of design section 5.8.
141
+ * @param hasher - the hasher to mix into
142
+ * @param column - the column
143
+ */
144
+ function mixColumn(hasher, column) {
145
+ hasher.text(column.dtype).word(column.length).word(column.nullCount);
146
+ if (column.validity !== null) {
147
+ hasher.words(column.validity);
148
+ }
149
+ else {
150
+ hasher.word(0);
151
+ }
152
+ const { dtype } = column;
153
+ switch (dtype) {
154
+ case "f32":
155
+ case "f64":
156
+ case "i32":
157
+ case "u32":
158
+ case "u8":
159
+ case "bool":
160
+ hasher.bytes(column.data);
161
+ break;
162
+ case "dict":
163
+ hasher.words(column.codes).word(column.dictionary.length);
164
+ for (const entry of column.dictionary) {
165
+ hasher.text(entry);
166
+ }
167
+ break;
168
+ case "string":
169
+ hasher.words(column.offsets).bytes(column.utf8);
170
+ break;
171
+ case "list":
172
+ hasher.words(column.offsets);
173
+ mixColumn(hasher, column.child);
174
+ break;
175
+ case "json":
176
+ hasher.text(JSON.stringify(column.values));
177
+ break;
178
+ default:
179
+ unsupportedDtype(dtype);
180
+ }
181
+ }
182
+ /**
183
+ * The digest of a column's contents (data, validity, dictionary, strings, child, json text).
184
+ * @param column - the column to hash
185
+ * @returns the 16-character hex digest
186
+ */
187
+ export function hashColumn(column) {
188
+ if (isColumnDetached(column)) {
189
+ throw new GraphFormatError("E_DETACHED", `column "${column.meta.name}" was transferred away`, {
190
+ column: column.meta.name,
191
+ });
192
+ }
193
+ const hasher = new Fnv1aHasher();
194
+ mixColumn(hasher, column);
195
+ return hasher.digest();
196
+ }
197
+ /**
198
+ * The content hash of a snapshot's topology (design section 9.3): `directed`, the four counts, then
199
+ * `rowPtr`, `colIdx`, `weights` (raw f32 bit patterns; an absent array hashes as length 0),
200
+ * `arcToEdge` and `edgeToArc`, with an identity permutation hashed as 0..len-1 without being
201
+ * materialised (P11: the digest does not depend on which getters were touched).
202
+ * @param snapshot - the snapshot to hash
203
+ * @returns the 16-character hex digest
204
+ */
205
+ export function contentHashOf(snapshot) {
206
+ const hasher = new Fnv1aHasher();
207
+ hasher
208
+ .word(snapshot.directed ? 1 : 0)
209
+ .word(snapshot.nodeCount)
210
+ .word(snapshot.edgeCount)
211
+ .word(snapshot.arcCount)
212
+ .word(snapshot.selfLoopCount);
213
+ hasher.words(snapshot.rowPtr).words(snapshot.colIdx);
214
+ if (snapshot.weights === null) {
215
+ hasher.word(0);
216
+ }
217
+ else {
218
+ hasher.bytes(snapshot.weights);
219
+ }
220
+ if (snapshot.flags.arcToEdgeIsIdentity) {
221
+ hasher.identity(snapshot.arcCount).identity(snapshot.edgeCount);
222
+ }
223
+ else {
224
+ hasher.words(snapshot.arcToEdge).words(snapshot.edgeToArc);
225
+ }
226
+ return hasher.digest();
227
+ }
228
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/snapshot/hash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The row-ordering queries of design section 3.9 as pure functions over the core arrays: binary
3
+ * searches over sorted rows (invariant I4) for `findArc` / `hasArc` / `arcsBetween` /
4
+ * `multiplicity` / `selfLoopsAt`, and the binary search over `rowPtr` behind `arcSource`. Every
5
+ * function is total for in-range arguments and unchecked for out-of-range ones (design section
6
+ * 11.1: typed-array semantics, no bounds checks in hot paths). GraphSnapshot's methods of the same
7
+ * names delegate here; the views and the derived graphs reuse the searches directly.
8
+ *
9
+ * Multigraph semantics (design section 3.5): parallel arcs are adjacent and ordered by logical edge
10
+ * index, so the first arc of `[lo, hi)` is the lowest logical edge index among the parallels.
11
+ */
12
+ import { type U32 } from "../types/index.js";
13
+ /**
14
+ * The first index in [lo, hi) whose value is >= v, or hi when none is (the sorted-row lower bound).
15
+ * @param colIdx - the sorted targets
16
+ * @param lo - the start of the row
17
+ * @param hi - one past the end of the row
18
+ * @param v - the target to search for
19
+ * @returns the lower bound
20
+ */
21
+ export declare function lowerBound(colIdx: U32, lo: number, hi: number, v: number): number;
22
+ /**
23
+ * The first index in [lo, hi) whose value is > v, or hi when none is (the sorted-row upper bound).
24
+ * @param colIdx - the sorted targets
25
+ * @param lo - the start of the row
26
+ * @param hi - one past the end of the row
27
+ * @param v - the target to search for
28
+ * @returns the upper bound
29
+ */
30
+ export declare function upperBound(colIdx: U32, lo: number, hi: number, v: number): number;
31
+ /**
32
+ * The first arc u -> v (the lowest logical edge index among parallels), or INVALID_INDEX.
33
+ * @param rowPtr - the row offsets
34
+ * @param colIdx - the sorted targets
35
+ * @param u - the source node index
36
+ * @param v - the target node index
37
+ * @returns the arc index or INVALID_INDEX
38
+ */
39
+ export declare function findArcIn(rowPtr: U32, colIdx: U32, u: number, v: number): number;
40
+ /**
41
+ * The half-open arc range [lo, hi) of every arc u -> v; empty (lo === hi) when there is none.
42
+ * @param rowPtr - the row offsets
43
+ * @param colIdx - the sorted targets
44
+ * @param u - the source node index
45
+ * @param v - the target node index
46
+ * @returns the range as a fresh two-element tuple
47
+ */
48
+ export declare function arcRangeIn(rowPtr: U32, colIdx: U32, u: number, v: number): [lo: number, hi: number];
49
+ /**
50
+ * The number of parallel arcs u -> v.
51
+ * @param rowPtr - the row offsets
52
+ * @param colIdx - the sorted targets
53
+ * @param u - the source node index
54
+ * @param v - the target node index
55
+ * @returns hi - lo of the arc range
56
+ */
57
+ export declare function multiplicityIn(rowPtr: U32, colIdx: U32, u: number, v: number): number;
58
+ /**
59
+ * The row containing an arc: the largest u with rowPtr[u] <= a < rowPtr[u + 1], found by binary
60
+ * search over rowPtr (empty rows are skipped because their two offsets are equal).
61
+ * @param rowPtr - the row offsets, nodeCount + 1 entries
62
+ * @param a - the arc index, below rowPtr[nodeCount]
63
+ * @returns the source node index
64
+ */
65
+ export declare function arcSourceIn(rowPtr: U32, a: number): number;
66
+ /**
67
+ * The number of self-loop arcs at a node: the multiplicity of u -> u.
68
+ * @param rowPtr - the row offsets
69
+ * @param colIdx - the sorted targets
70
+ * @param u - the node index
71
+ * @returns the loop count
72
+ */
73
+ export declare function selfLoopsAtIn(rowPtr: U32, colIdx: U32, u: number): number;
74
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/snapshot/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjF;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAMnG;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzE"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * The row-ordering queries of design section 3.9 as pure functions over the core arrays: binary
3
+ * searches over sorted rows (invariant I4) for `findArc` / `hasArc` / `arcsBetween` /
4
+ * `multiplicity` / `selfLoopsAt`, and the binary search over `rowPtr` behind `arcSource`. Every
5
+ * function is total for in-range arguments and unchecked for out-of-range ones (design section
6
+ * 11.1: typed-array semantics, no bounds checks in hot paths). GraphSnapshot's methods of the same
7
+ * names delegate here; the views and the derived graphs reuse the searches directly.
8
+ *
9
+ * Multigraph semantics (design section 3.5): parallel arcs are adjacent and ordered by logical edge
10
+ * index, so the first arc of `[lo, hi)` is the lowest logical edge index among the parallels.
11
+ */
12
+ import { INVALID_INDEX } from "../constants.js";
13
+ /**
14
+ * The first index in [lo, hi) whose value is >= v, or hi when none is (the sorted-row lower bound).
15
+ * @param colIdx - the sorted targets
16
+ * @param lo - the start of the row
17
+ * @param hi - one past the end of the row
18
+ * @param v - the target to search for
19
+ * @returns the lower bound
20
+ */
21
+ export function lowerBound(colIdx, lo, hi, v) {
22
+ let low = lo;
23
+ let high = hi;
24
+ while (low < high) {
25
+ const mid = low + Math.floor((high - low) / 2);
26
+ if (colIdx[mid] < v) {
27
+ low = mid + 1;
28
+ }
29
+ else {
30
+ high = mid;
31
+ }
32
+ }
33
+ return low;
34
+ }
35
+ /**
36
+ * The first index in [lo, hi) whose value is > v, or hi when none is (the sorted-row upper bound).
37
+ * @param colIdx - the sorted targets
38
+ * @param lo - the start of the row
39
+ * @param hi - one past the end of the row
40
+ * @param v - the target to search for
41
+ * @returns the upper bound
42
+ */
43
+ export function upperBound(colIdx, lo, hi, v) {
44
+ let low = lo;
45
+ let high = hi;
46
+ while (low < high) {
47
+ const mid = low + Math.floor((high - low) / 2);
48
+ if (colIdx[mid] <= v) {
49
+ low = mid + 1;
50
+ }
51
+ else {
52
+ high = mid;
53
+ }
54
+ }
55
+ return low;
56
+ }
57
+ /**
58
+ * The first arc u -> v (the lowest logical edge index among parallels), or INVALID_INDEX.
59
+ * @param rowPtr - the row offsets
60
+ * @param colIdx - the sorted targets
61
+ * @param u - the source node index
62
+ * @param v - the target node index
63
+ * @returns the arc index or INVALID_INDEX
64
+ */
65
+ export function findArcIn(rowPtr, colIdx, u, v) {
66
+ const hi = rowPtr[u + 1];
67
+ const at = lowerBound(colIdx, rowPtr[u], hi, v);
68
+ return at < hi && colIdx[at] === v ? at : INVALID_INDEX;
69
+ }
70
+ /**
71
+ * The half-open arc range [lo, hi) of every arc u -> v; empty (lo === hi) when there is none.
72
+ * @param rowPtr - the row offsets
73
+ * @param colIdx - the sorted targets
74
+ * @param u - the source node index
75
+ * @param v - the target node index
76
+ * @returns the range as a fresh two-element tuple
77
+ */
78
+ export function arcRangeIn(rowPtr, colIdx, u, v) {
79
+ const start = rowPtr[u];
80
+ const end = rowPtr[u + 1];
81
+ const lo = lowerBound(colIdx, start, end, v);
82
+ const hi = upperBound(colIdx, lo, end, v);
83
+ return [lo, hi];
84
+ }
85
+ /**
86
+ * The number of parallel arcs u -> v.
87
+ * @param rowPtr - the row offsets
88
+ * @param colIdx - the sorted targets
89
+ * @param u - the source node index
90
+ * @param v - the target node index
91
+ * @returns hi - lo of the arc range
92
+ */
93
+ export function multiplicityIn(rowPtr, colIdx, u, v) {
94
+ const start = rowPtr[u];
95
+ const end = rowPtr[u + 1];
96
+ const lo = lowerBound(colIdx, start, end, v);
97
+ return upperBound(colIdx, lo, end, v) - lo;
98
+ }
99
+ /**
100
+ * The row containing an arc: the largest u with rowPtr[u] <= a < rowPtr[u + 1], found by binary
101
+ * search over rowPtr (empty rows are skipped because their two offsets are equal).
102
+ * @param rowPtr - the row offsets, nodeCount + 1 entries
103
+ * @param a - the arc index, below rowPtr[nodeCount]
104
+ * @returns the source node index
105
+ */
106
+ export function arcSourceIn(rowPtr, a) {
107
+ // first index i with rowPtr[i] > a; the row is i - 1
108
+ let low = 0;
109
+ let high = rowPtr.length;
110
+ while (low < high) {
111
+ const mid = low + Math.floor((high - low) / 2);
112
+ if (rowPtr[mid] <= a) {
113
+ low = mid + 1;
114
+ }
115
+ else {
116
+ high = mid;
117
+ }
118
+ }
119
+ return low - 1;
120
+ }
121
+ /**
122
+ * The number of self-loop arcs at a node: the multiplicity of u -> u.
123
+ * @param rowPtr - the row offsets
124
+ * @param colIdx - the sorted targets
125
+ * @param u - the node index
126
+ * @returns the loop count
127
+ */
128
+ export function selfLoopsAtIn(rowPtr, colIdx, u) {
129
+ return multiplicityIn(rowPtr, colIdx, u, u);
130
+ }
131
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/snapshot/queries.ts"],"names":[],"mappings":"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"}