@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.
- package/LICENSE +21 -0
- package/README.md +216 -43
- package/dist/graph-format.d.ts +1 -0
- package/dist/graph-format.d.ts.map +1 -0
- package/dist/graph-format.js +15798 -0
- package/dist/graph-format.js.map +1 -0
- package/dist/src/builder/arena.d.ts +85 -0
- package/dist/src/builder/arena.d.ts.map +1 -0
- package/dist/src/builder/arena.js +154 -0
- package/dist/src/builder/arena.js.map +1 -0
- package/dist/src/builder/compact.d.ts +515 -0
- package/dist/src/builder/compact.d.ts.map +1 -0
- package/dist/src/builder/compact.js +1553 -0
- package/dist/src/builder/compact.js.map +1 -0
- package/dist/src/builder/counting-sort.d.ts +96 -0
- package/dist/src/builder/counting-sort.d.ts.map +1 -0
- package/dist/src/builder/counting-sort.js +430 -0
- package/dist/src/builder/counting-sort.js.map +1 -0
- package/dist/src/builder/freeze.d.ts +72 -0
- package/dist/src/builder/freeze.d.ts.map +1 -0
- package/dist/src/builder/freeze.js +548 -0
- package/dist/src/builder/freeze.js.map +1 -0
- package/dist/src/builder/graph-builder.d.ts +602 -0
- package/dist/src/builder/graph-builder.d.ts.map +1 -0
- package/dist/src/builder/graph-builder.js +1940 -0
- package/dist/src/builder/graph-builder.js.map +1 -0
- package/dist/src/builder/options.d.ts +16 -0
- package/dist/src/builder/options.d.ts.map +1 -0
- package/dist/src/builder/options.js +21 -0
- package/dist/src/builder/options.js.map +1 -0
- package/dist/src/columns/bitmap.d.ts +96 -0
- package/dist/src/columns/bitmap.d.ts.map +1 -0
- package/dist/src/columns/bitmap.js +184 -0
- package/dist/src/columns/bitmap.js.map +1 -0
- package/dist/src/columns/column.d.ts +220 -0
- package/dist/src/columns/column.d.ts.map +1 -0
- package/dist/src/columns/column.js +2109 -0
- package/dist/src/columns/column.js.map +1 -0
- package/dist/src/columns/dictionary.d.ts +60 -0
- package/dist/src/columns/dictionary.d.ts.map +1 -0
- package/dist/src/columns/dictionary.js +102 -0
- package/dist/src/columns/dictionary.js.map +1 -0
- package/dist/src/columns/growable.d.ts +198 -0
- package/dist/src/columns/growable.d.ts.map +1 -0
- package/dist/src/columns/growable.js +296 -0
- package/dist/src/columns/growable.js.map +1 -0
- package/dist/src/columns/infer.d.ts +121 -0
- package/dist/src/columns/infer.d.ts.map +1 -0
- package/dist/src/columns/infer.js +268 -0
- package/dist/src/columns/infer.js.map +1 -0
- package/dist/src/columns/remap.d.ts +143 -0
- package/dist/src/columns/remap.d.ts.map +1 -0
- package/dist/src/columns/remap.js +588 -0
- package/dist/src/columns/remap.js.map +1 -0
- package/dist/src/columns/table.d.ts +184 -0
- package/dist/src/columns/table.d.ts.map +1 -0
- package/dist/src/columns/table.js +485 -0
- package/dist/src/columns/table.js.map +1 -0
- package/dist/src/constants.d.ts +34 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +79 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/errors.d.ts +76 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +32 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/ids/edge-id-index.d.ts +77 -0
- package/dist/src/ids/edge-id-index.d.ts.map +1 -0
- package/dist/src/ids/edge-id-index.js +155 -0
- package/dist/src/ids/edge-id-index.js.map +1 -0
- package/dist/src/ids/node-id-map.d.ts +280 -0
- package/dist/src/ids/node-id-map.d.ts.map +1 -0
- package/dist/src/ids/node-id-map.js +1139 -0
- package/dist/src/ids/node-id-map.js.map +1 -0
- package/dist/src/ids/string-store.d.ts +219 -0
- package/dist/src/ids/string-store.d.ts.map +1 -0
- package/dist/src/ids/string-store.js +526 -0
- package/dist/src/ids/string-store.js.map +1 -0
- package/dist/src/index.d.ts +30 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +29 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/populate/from-csr.d.ts +61 -0
- package/dist/src/populate/from-csr.d.ts.map +1 -0
- package/dist/src/populate/from-csr.js +706 -0
- package/dist/src/populate/from-csr.js.map +1 -0
- package/dist/src/populate/from-edge-arrays.d.ts +51 -0
- package/dist/src/populate/from-edge-arrays.d.ts.map +1 -0
- package/dist/src/populate/from-edge-arrays.js +217 -0
- package/dist/src/populate/from-edge-arrays.js.map +1 -0
- package/dist/src/populate/from-records.d.ts +51 -0
- package/dist/src/populate/from-records.d.ts.map +1 -0
- package/dist/src/populate/from-records.js +447 -0
- package/dist/src/populate/from-records.js.map +1 -0
- package/dist/src/snapshot/derived.d.ts +211 -0
- package/dist/src/snapshot/derived.d.ts.map +1 -0
- package/dist/src/snapshot/derived.js +1254 -0
- package/dist/src/snapshot/derived.js.map +1 -0
- package/dist/src/snapshot/graph-meta.d.ts +23 -0
- package/dist/src/snapshot/graph-meta.d.ts.map +1 -0
- package/dist/src/snapshot/graph-meta.js +159 -0
- package/dist/src/snapshot/graph-meta.js.map +1 -0
- package/dist/src/snapshot/graph-snapshot.d.ts +509 -0
- package/dist/src/snapshot/graph-snapshot.d.ts.map +1 -0
- package/dist/src/snapshot/graph-snapshot.js +1247 -0
- package/dist/src/snapshot/graph-snapshot.js.map +1 -0
- package/dist/src/snapshot/hash.d.ts +90 -0
- package/dist/src/snapshot/hash.d.ts.map +1 -0
- package/dist/src/snapshot/hash.js +228 -0
- package/dist/src/snapshot/hash.js.map +1 -0
- package/dist/src/snapshot/queries.d.ts +74 -0
- package/dist/src/snapshot/queries.d.ts.map +1 -0
- package/dist/src/snapshot/queries.js +131 -0
- package/dist/src/snapshot/queries.js.map +1 -0
- package/dist/src/snapshot/validate.d.ts +192 -0
- package/dist/src/snapshot/validate.d.ts.map +1 -0
- package/dist/src/snapshot/validate.js +990 -0
- package/dist/src/snapshot/validate.js.map +1 -0
- package/dist/src/snapshot/views.d.ts +274 -0
- package/dist/src/snapshot/views.d.ts.map +1 -0
- package/dist/src/snapshot/views.js +856 -0
- package/dist/src/snapshot/views.js.map +1 -0
- package/dist/src/types/builder.d.ts +456 -0
- package/dist/src/types/builder.d.ts.map +1 -0
- package/dist/src/types/builder.js +11 -0
- package/dist/src/types/builder.js.map +1 -0
- package/dist/src/types/columns.d.ts +615 -0
- package/dist/src/types/columns.d.ts.map +1 -0
- package/dist/src/types/columns.js +14 -0
- package/dist/src/types/columns.js.map +1 -0
- package/dist/src/types/index.d.ts +14 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +11 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/internal.d.ts +172 -0
- package/dist/src/types/internal.d.ts.map +1 -0
- package/dist/src/types/internal.js +13 -0
- package/dist/src/types/internal.js.map +1 -0
- package/dist/src/types/snapshot.d.ts +801 -0
- package/dist/src/types/snapshot.d.ts.map +1 -0
- package/dist/src/types/snapshot.js +14 -0
- package/dist/src/types/snapshot.js.map +1 -0
- package/dist/src/types/wire.d.ts +196 -0
- package/dist/src/types/wire.d.ts.map +1 -0
- package/dist/src/types/wire.js +8 -0
- package/dist/src/types/wire.js.map +1 -0
- package/dist/src/util/mask.d.ts +55 -0
- package/dist/src/util/mask.d.ts.map +1 -0
- package/dist/src/util/mask.js +71 -0
- package/dist/src/util/mask.js.map +1 -0
- package/dist/src/util/options.d.ts +22 -0
- package/dist/src/util/options.d.ts.map +1 -0
- package/dist/src/util/options.js +49 -0
- package/dist/src/util/options.js.map +1 -0
- package/dist/src/util/shared-buffers.d.ts +42 -0
- package/dist/src/util/shared-buffers.d.ts.map +1 -0
- package/dist/src/util/shared-buffers.js +52 -0
- package/dist/src/util/shared-buffers.js.map +1 -0
- package/dist/src/util/typed-array.d.ts +205 -0
- package/dist/src/util/typed-array.d.ts.map +1 -0
- package/dist/src/util/typed-array.js +289 -0
- package/dist/src/util/typed-array.js.map +1 -0
- package/dist/src/wire/bytes.d.ts +69 -0
- package/dist/src/wire/bytes.d.ts.map +1 -0
- package/dist/src/wire/bytes.js +361 -0
- package/dist/src/wire/bytes.js.map +1 -0
- package/dist/src/wire/carried-views.d.ts +111 -0
- package/dist/src/wire/carried-views.d.ts.map +1 -0
- package/dist/src/wire/carried-views.js +286 -0
- package/dist/src/wire/carried-views.js.map +1 -0
- package/dist/src/wire/from-wire.d.ts +144 -0
- package/dist/src/wire/from-wire.d.ts.map +1 -0
- package/dist/src/wire/from-wire.js +1425 -0
- package/dist/src/wire/from-wire.js.map +1 -0
- package/dist/src/wire/to-wire.d.ts +171 -0
- package/dist/src/wire/to-wire.d.ts.map +1 -0
- package/dist/src/wire/to-wire.js +652 -0
- package/dist/src/wire/to-wire.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +72 -7
- package/src/builder/arena.ts +192 -0
- package/src/builder/compact.ts +1811 -0
- package/src/builder/counting-sort.ts +506 -0
- package/src/builder/freeze.ts +689 -0
- package/src/builder/graph-builder.ts +2264 -0
- package/src/builder/options.ts +29 -0
- package/src/columns/bitmap.ts +196 -0
- package/src/columns/column.ts +2574 -0
- package/src/columns/dictionary.ts +114 -0
- package/src/columns/growable.ts +350 -0
- package/src/columns/infer.ts +285 -0
- package/src/columns/remap.ts +663 -0
- package/src/columns/table.ts +568 -0
- package/src/constants.ts +89 -0
- package/src/errors.ts +115 -0
- package/src/ids/edge-id-index.ts +179 -0
- package/src/ids/node-id-map.ts +1340 -0
- package/src/ids/string-store.ts +589 -0
- package/src/index.ts +139 -0
- package/src/lib-resizable-array-buffer.d.ts +34 -0
- package/src/populate/from-csr.ts +802 -0
- package/src/populate/from-edge-arrays.ts +257 -0
- package/src/populate/from-records.ts +536 -0
- package/src/snapshot/derived.ts +1486 -0
- package/src/snapshot/graph-meta.ts +167 -0
- package/src/snapshot/graph-snapshot.ts +1503 -0
- package/src/snapshot/hash.ts +241 -0
- package/src/snapshot/queries.ts +136 -0
- package/src/snapshot/validate.ts +1108 -0
- package/src/snapshot/views.ts +943 -0
- package/src/types/builder.ts +480 -0
- package/src/types/columns.ts +727 -0
- package/src/types/index.ts +14 -0
- package/src/types/internal.ts +195 -0
- package/src/types/snapshot.ts +886 -0
- package/src/types/wire.ts +207 -0
- package/src/util/mask.ts +89 -0
- package/src/util/options.ts +57 -0
- package/src/util/shared-buffers.ts +56 -0
- package/src/util/typed-array.ts +371 -0
- package/src/wire/bytes.ts +440 -0
- package/src/wire/carried-views.ts +327 -0
- package/src/wire/from-wire.ts +1690 -0
- 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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"}
|