From 11f8b1062abd72dd07a90b5bc3617af31f17076d Mon Sep 17 00:00:00 2001 From: Michael Porter Date: Sun, 11 Oct 2026 20:38:39 -0400 Subject: [PATCH] chore(wasm): upgrade wasm-bindgen 0.2.100 -> 0.2.129 Newer glue no longer emits the newnoargs import (new Function(...)) that the community directory scan flags as Dynamic Code Execution. --- wasm/Cargo.lock | 192 +- wasm/Cargo.toml | 2 +- wasm/pkg/breadcrumbs_graph_wasm.d.ts | 1211 +++--- wasm/pkg/breadcrumbs_graph_wasm.js | 3611 +++++++++--------- wasm/pkg/breadcrumbs_graph_wasm_bg.wasm | Bin 321944 -> 334041 bytes wasm/pkg/breadcrumbs_graph_wasm_bg.wasm.d.ts | 334 +- 6 files changed, 2709 insertions(+), 2641 deletions(-) diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index d11a2228..0f9fac10 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -8,6 +8,17 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -47,6 +58,12 @@ version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + [[package]] name = "cc" version = "1.2.51" @@ -121,6 +138,30 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + [[package]] name = "hashbrown" version = "0.15.5" @@ -178,13 +219,20 @@ dependencies = [ "either", ] +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ - "once_cell", + "cfg-if", + "futures-util", "wasm-bindgen", ] @@ -195,10 +243,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "log" -version = "0.4.29" +name = "libm" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minicov" @@ -210,6 +264,15 @@ dependencies = [ "walkdir", ] +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -217,6 +280,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -225,6 +289,12 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "oorandom" +version = "11.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" + [[package]] name = "petgraph" version = "0.8.3" @@ -237,6 +307,12 @@ dependencies = [ "serde", ] +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + [[package]] name = "proc-macro2" version = "1.0.104" @@ -311,12 +387,31 @@ dependencies = [ "syn 3.0.3", ] +[[package]] +name = "serde_json" +version = "1.0.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + [[package]] name = "smallvec" version = "1.16.2" @@ -351,6 +446,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tokio" +version = "1.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044" +dependencies = [ + "pin-project-lite", +] + [[package]] name = "unicode-ident" version = "1.0.22" @@ -384,48 +488,33 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.112", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e" dependencies = [ - "cfg-if", "js-sys", - "once_cell", + "tokio", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -433,59 +522,64 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.112", - "wasm-bindgen-backend", + "syn 3.0.3", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-bindgen-test" -version = "0.3.50" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c8d5e33ca3b6d9fa3b4676d774c5778031d27a578c2b007f905acf816152c3" +checksum = "ae7499dfd45780a0a91d7ee6bb9ac51970a4479a41a89da443fdda5a39547d42" dependencies = [ + "async-trait", + "cast", "js-sys", + "libm", "minicov", + "nu-ansi-term", + "num-traits", + "oorandom", + "serde", + "serde_json", "wasm-bindgen", "wasm-bindgen-futures", "wasm-bindgen-test-macro", + "wasm-bindgen-test-shared", ] [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.50" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d5042cc5fa009658f9a7333ef24291b1291a25b6382dd68862a7f3b969f69b" +checksum = "3b84b5ac638bfb168196a1a461fcc8f46a294a18b1b6be52133b4e0db122cc9f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.112", + "syn 3.0.3", ] [[package]] -name = "web-sys" -version = "0.3.77" +name = "wasm-bindgen-test-shared" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" -dependencies = [ - "js-sys", - "wasm-bindgen", -] +checksum = "4f692aa943ccd88363733b77063f32cfed5bc6cbea8e6e8b251b302f881606fe" [[package]] name = "web-time" @@ -520,3 +614,9 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/wasm/Cargo.toml b/wasm/Cargo.toml index b685a614..73074ddf 100644 --- a/wasm/Cargo.toml +++ b/wasm/Cargo.toml @@ -12,7 +12,7 @@ default = ["console_error_panic_hook"] test = [] [dependencies] -wasm-bindgen = "=0.2.100" +wasm-bindgen = "=0.2.129" # The `console_error_panic_hook` crate provides better debugging of panics by # logging them with `console.error`. This is great for development, but requires diff --git a/wasm/pkg/breadcrumbs_graph_wasm.d.ts b/wasm/pkg/breadcrumbs_graph_wasm.d.ts index 45fe48ee..1c0e02f1 100644 --- a/wasm/pkg/breadcrumbs_graph_wasm.d.ts +++ b/wasm/pkg/breadcrumbs_graph_wasm.d.ts @@ -1,174 +1,203 @@ /* tslint:disable */ /* eslint-disable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-misused-new -- wasm-bindgen generates bare `Function` params and a static `new`; the bindings are generated, not hand-written. */ -export function create_graph(): NoteGraph; -export function create_edge_sorter(field: string, reverse: boolean): EdgeSorter; -export function sort_traversal_data(graph: NoteGraph, traversal_data: TraversalData[], sorter: EdgeSorter): TraversalData[]; -export function sort_edges(graph: NoteGraph, edges: EdgeStruct[], sorter: EdgeSorter): EdgeStruct[]; + export class AddEdgeGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(data: GCEdgeData); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(data: GCEdgeData); } + export class AddNoteGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(data: GCNodeData); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(data: GCNodeData); } + export class BatchGraphUpdate { - free(): void; - constructor(); + free(): void; + [Symbol.dispose](): void; + constructor(); } + export class EdgeData { - private constructor(); - free(): void; - toString(): string; - explicit: boolean; - round: number; - readonly edge_type: string; - readonly edge_source: string; + private constructor(); + free(): void; + [Symbol.dispose](): void; + toString(): string; + readonly edge_source: string; + readonly edge_type: string; + explicit: boolean; + round: number; } + export class EdgeList { - private constructor(); - free(): void; - group_by_type(): GroupedEdgeList; - toString(): string; - /** - * Returns a sorted clone of the edges. - */ - get_sorted_edges(graph: NoteGraph, sorter: EdgeSorter): EdgeStruct[]; - last(): EdgeStruct | undefined; - first(): EdgeStruct | undefined; - /** - * Consumes the [EdgeList] and returns the edges as a Vec (or array for - * JS). - */ - to_array(): EdgeStruct[]; - /** - * Returns a clone of the edges. - */ - get_edges(): EdgeStruct[]; + private constructor(); + free(): void; + [Symbol.dispose](): void; + first(): EdgeStruct | undefined; + /** + * Returns a clone of the edges. + */ + get_edges(): EdgeStruct[]; + /** + * Returns a sorted clone of the edges. + */ + get_sorted_edges(graph: NoteGraph, sorter: EdgeSorter): EdgeStruct[]; + group_by_type(): GroupedEdgeList; + last(): EdgeStruct | undefined; + toString(): string; + /** + * Consumes the [EdgeList] and returns the edges as a Vec (or array for + * JS). + */ + to_array(): EdgeStruct[]; } + export class EdgeSorter { - private constructor(); - free(): void; + private constructor(); + free(): void; + [Symbol.dispose](): void; } + export class EdgeStruct { - private constructor(); - free(): void; - edge_source(graph: NoteGraph): string; - source_data(graph: NoteGraph): NodeData; - source_path(graph: NoteGraph): string; - target_data(graph: NoteGraph): NodeData; - target_path(graph: NoteGraph): string; - is_self_loop(): boolean; - source_resolved(graph: NoteGraph): boolean; - target_resolved(graph: NoteGraph): boolean; - toString(): string; - stringify_source(graph: NoteGraph, options: NodeStringifyOptions): string; - stringify_target(graph: NoteGraph, options: NodeStringifyOptions): string; - get_attribute_label(graph: NoteGraph, attributes: string[]): string; - matches_edge_filter(graph: NoteGraph, edge_types?: string[] | null): boolean; - round(graph: NoteGraph): number; - explicit(graph: NoteGraph): boolean; - edge_data(graph: NoteGraph): EdgeData; - readonly edge_type: string; + private constructor(); + free(): void; + [Symbol.dispose](): void; + edge_data(graph: NoteGraph): EdgeData; + edge_source(graph: NoteGraph): string; + explicit(graph: NoteGraph): boolean; + get_attribute_label(graph: NoteGraph, attributes: string[]): string; + is_self_loop(): boolean; + matches_edge_filter(graph: NoteGraph, edge_types?: string[] | null): boolean; + round(graph: NoteGraph): number; + source_data(graph: NoteGraph): NodeData; + source_path(graph: NoteGraph): string; + source_resolved(graph: NoteGraph): boolean; + stringify_source(graph: NoteGraph, options: NodeStringifyOptions): string; + stringify_target(graph: NoteGraph, options: NodeStringifyOptions): string; + target_data(graph: NoteGraph): NodeData; + target_path(graph: NoteGraph): string; + target_resolved(graph: NoteGraph): boolean; + toString(): string; + readonly edge_type: string; } + export class FlatTraversalData { - private constructor(); - free(): void; - get_attribute_label(graph: NoteGraph, attributes: string[]): string; - to_js_rendering_obj(graph: NoteGraph, str_opt: NodeStringifyOptions, attributes: string[]): unknown; - /** - * the edge struct that was traversed - */ - edge: EdgeStruct; - /** - * the depth of the node in the traversal - */ - depth: number; - /** - * the number of total children of the node, so also children of children - */ - number_of_children: number; - /** - * the children of the node - */ - children: Uint32Array; - has_cut_of_children: boolean; + private constructor(); + free(): void; + [Symbol.dispose](): void; + get_attribute_label(graph: NoteGraph, attributes: string[]): string; + to_js_rendering_obj(graph: NoteGraph, str_opt: NodeStringifyOptions, attributes: string[]): unknown; + /** + * the children of the node + */ + children: Uint32Array; + /** + * the depth of the node in the traversal + */ + depth: number; + /** + * the edge struct that was traversed + */ + edge: EdgeStruct; + has_cut_of_children: boolean; + /** + * the number of total children of the node, so also children of children + */ + number_of_children: number; } + export class FlatTraversalResult { - private constructor(); - free(): void; - data_at_index(index: number): FlatTraversalData | undefined; - toString(): string; - children_at_index(index: number): Uint32Array | undefined; - rendering_obj_at_index(index: number, graph: NoteGraph, str_opt: NodeStringifyOptions, attributes: string[]): unknown; - /** - * Sorts the flat traversal data with a given edge sorter. - * This is not as efficient as sorting the traversal data before flattening - * it, but it's still a lot better than sorting then re-flatten. - */ - sort(graph: NoteGraph, sorter: EdgeSorter): void; - is_empty(): boolean; - data: FlatTraversalData[]; - node_count: number; - max_depth: number; - hit_depth_limit: boolean; - traversal_time: bigint; - entry_nodes: Uint32Array; + private constructor(); + free(): void; + [Symbol.dispose](): void; + children_at_index(index: number): Uint32Array | undefined; + data_at_index(index: number): FlatTraversalData | undefined; + is_empty(): boolean; + rendering_obj_at_index(index: number, graph: NoteGraph, str_opt: NodeStringifyOptions, attributes: string[]): unknown; + /** + * Sorts the flat traversal data with a given edge sorter. + * This is not as efficient as sorting the traversal data before flattening + * it, but it's still a lot better than sorting then re-flatten. + */ + sort(graph: NoteGraph, sorter: EdgeSorter): void; + toString(): string; + data: FlatTraversalData[]; + entry_nodes: Uint32Array; + hit_depth_limit: boolean; + max_depth: number; + node_count: number; + traversal_time: bigint; } + export class GCEdgeData { - free(): void; - toString(): string; - constructor(source: string, target: string, edge_type: string, edge_source: string); - readonly edge_source: string; - readonly source: string; - readonly target: string; - readonly edge_type: string; + free(): void; + [Symbol.dispose](): void; + constructor(source: string, target: string, edge_type: string, edge_source: string); + toString(): string; + readonly edge_source: string; + readonly edge_type: string; + readonly source: string; + readonly target: string; } + export class GCNodeData { - free(): void; - toString(): string; - constructor(path: string, aliases: string[], resolved: boolean, ignore_in_edges: boolean, ignore_out_edges: boolean); + free(): void; + [Symbol.dispose](): void; + constructor(path: string, aliases: string[], resolved: boolean, ignore_in_edges: boolean, ignore_out_edges: boolean); + toString(): string; } + /** * A edge list that is grouped by edge type. */ export class GroupedEdgeList { - private constructor(); - free(): void; - toString(): string; - get_sorted_edges(edge_type: string, graph: NoteGraph, sorter: EdgeSorter): EdgeStruct[] | undefined; - get_edges(edge_type: string): EdgeStruct[] | undefined; + private constructor(); + free(): void; + [Symbol.dispose](): void; + get_edges(edge_type: string): EdgeStruct[] | undefined; + get_sorted_edges(edge_type: string, graph: NoteGraph, sorter: EdgeSorter): EdgeStruct[] | undefined; + toString(): string; } + export class MermaidGraphData { - private constructor(); - free(): void; - toString(): string; - mermaid: string; - traversal_time: bigint; - total_time: bigint; + private constructor(); + free(): void; + [Symbol.dispose](): void; + toString(): string; + mermaid: string; + total_time: bigint; + traversal_time: bigint; } + export class MermaidGraphOptions { - free(): void; - toString(): string; - constructor(active_node: string | null | undefined, init_line: string, chart_type: string, direction: string, collapse_opposing_edges: boolean, edge_label_attributes: string[], edge_sorter: EdgeSorter | null | undefined, node_label_fn: Function | null | undefined, link_nodes: boolean, show_arrow_points: boolean, field_arrow_keys: string[], field_arrow_values: string[]); + free(): void; + [Symbol.dispose](): void; + constructor(active_node: string | null | undefined, init_line: string, chart_type: string, direction: string, collapse_opposing_edges: boolean, edge_label_attributes: string[], edge_sorter: EdgeSorter | null | undefined, node_label_fn: Function | null | undefined, link_nodes: boolean, show_arrow_points: boolean, field_arrow_keys: string[], field_arrow_values: string[]); + toString(): string; } + export class NodeData { - free(): void; - toString(): string; - constructor(path: string, aliases: string[], resolved: boolean, ignore_in_edges: boolean, ignore_out_edges: boolean); - path: string; - aliases: string[]; - resolved: boolean; - ignore_in_edges: boolean; - ignore_out_edges: boolean; + free(): void; + [Symbol.dispose](): void; + constructor(path: string, aliases: string[], resolved: boolean, ignore_in_edges: boolean, ignore_out_edges: boolean); + toString(): string; + aliases: string[]; + ignore_in_edges: boolean; + ignore_out_edges: boolean; + path: string; + resolved: boolean; } + export class NodeStringifyOptions { - free(): void; - constructor(extension: boolean, folder: boolean, alias: boolean, trim_basename_delimiter?: string | null); - stringify_node(node: NodeData): string; + free(): void; + [Symbol.dispose](): void; + constructor(extension: boolean, folder: boolean, alias: boolean, trim_basename_delimiter?: string | null); + stringify_node(node: NodeData): string; } + /** * A graph that stores notes and their relationships. * @@ -179,481 +208,515 @@ export class NodeStringifyOptions { * present in the graph. */ export class NoteGraph { - private constructor(); - free(): void; - /** - * Runs a recursive traversal of the graph. - */ - rec_traverse(options: TraversalOptions): TraversalResult; - /** - * Runs a recursive traversal of the graph and post-processes the result. - * The post-processed result is more efficient to work with from - * JavaScript. - */ - rec_traverse_and_process(options: TraversalOptions, postprocess_options: TraversalPostprocessOptions): FlatTraversalResult; - /** - * Returns all edge types that are present in the graph. - */ - edge_types(): string[]; - /** - * Builds the graph from a list of nodes, edges, and transitive rules. - * All existing data in the graph is removed. - */ - build_graph(nodes: GCNodeData[], edges: GCEdgeData[], transitive_rules: TransitiveGraphRule[]): void; - /** - * Applies a batch update to the graph. - * Throws an error if the update fails, and leave the graph in an - * inconsistent state. - * - * TODO: some security against errors leaving the graph in an inconsistent - * state. Maybe safely clear the entire graph. - */ - apply_update(update: BatchGraphUpdate): void; - /** - * Iterate all edges in the graph and call the provided function with each - * [EdgeData]. - */ - iterate_edges(f: Function): void; - /** - * Iterate all nodes in the graph and call the provided function with each - * [NodeData]. - */ - iterate_nodes(f: Function): void; - /** - * Notify the JS side that the graph has been updated. - */ - notify_update(): void; - /** - * Checks if a node is resolved. - * Returns false if the node is not found. - */ - is_node_resolved(node: string): boolean; - /** - * Get all incoming edges to a node. - */ - get_incoming_edges(node: string): EdgeList; - /** - * Get all outgoing edges from a node. - */ - get_outgoing_edges(node: string): EdgeList; - /** - * Set the update callback. - * This will be called after every update to the graph. - */ - set_update_callback(callback: Function): void; - /** - * Get all outgoing edges from a node, filtered by edge type. - */ - get_filtered_outgoing_edges(node: string, edge_types?: string[] | null): EdgeList; - /** - * Get all outgoing edges from a node, filtered and grouped by edge type. - */ - get_filtered_grouped_outgoing_edges(node: string, edge_types?: string[] | null): GroupedEdgeList; - log(): void; - static new(): NoteGraph; - get_node(node: string): NodeData | undefined; - /** - * Checks if a node exists in the graph. - */ - has_node(node: string): boolean; - generate_mermaid_graph(traversal_options: TraversalOptions, diagram_options: MermaidGraphOptions): MermaidGraphData; + private constructor(); + free(): void; + [Symbol.dispose](): void; + /** + * Applies a batch update to the graph. + * Throws an error if the update fails, and leave the graph in an + * inconsistent state. + * + * TODO: some security against errors leaving the graph in an inconsistent + * state. Maybe safely clear the entire graph. + */ + apply_update(update: BatchGraphUpdate): void; + /** + * Builds the graph from a list of nodes, edges, and transitive rules. + * All existing data in the graph is removed. + */ + build_graph(nodes: GCNodeData[], edges: GCEdgeData[], transitive_rules: TransitiveGraphRule[]): void; + /** + * Returns all edge types that are present in the graph. + */ + edge_types(): string[]; + generate_mermaid_graph(traversal_options: TraversalOptions, diagram_options: MermaidGraphOptions): MermaidGraphData; + /** + * Get all outgoing edges from a node, filtered and grouped by edge type. + */ + get_filtered_grouped_outgoing_edges(node: string, edge_types?: string[] | null): GroupedEdgeList; + /** + * Get all outgoing edges from a node, filtered by edge type. + */ + get_filtered_outgoing_edges(node: string, edge_types?: string[] | null): EdgeList; + /** + * Get all incoming edges to a node. + */ + get_incoming_edges(node: string): EdgeList; + get_node(node: string): NodeData | undefined; + /** + * Get all outgoing edges from a node. + */ + get_outgoing_edges(node: string): EdgeList; + /** + * Checks if a node exists in the graph. + */ + has_node(node: string): boolean; + /** + * Checks if a node is resolved. + * Returns false if the node is not found. + */ + is_node_resolved(node: string): boolean; + /** + * Iterate all edges in the graph and call the provided function with each + * [EdgeData]. + */ + iterate_edges(f: Function): void; + /** + * Iterate all nodes in the graph and call the provided function with each + * [NodeData]. + */ + iterate_nodes(f: Function): void; + log(): void; + static new(): NoteGraph; + /** + * Notify the JS side that the graph has been updated. + */ + notify_update(): void; + /** + * Runs a recursive traversal of the graph. + */ + rec_traverse(options: TraversalOptions): TraversalResult; + /** + * Runs a recursive traversal of the graph and post-processes the result. + * The post-processed result is more efficient to work with from + * JavaScript. + */ + rec_traverse_and_process(options: TraversalOptions, postprocess_options: TraversalPostprocessOptions): FlatTraversalResult; + /** + * Set the update callback. + * This will be called after every update to the graph. + */ + set_update_callback(callback: Function): void; } + export class NoteGraphError { - free(): void; - toString(): string; - constructor(message: string); - readonly message: string; + free(): void; + [Symbol.dispose](): void; + constructor(message: string); + toString(): string; + readonly message: string; } + export class Path { - private constructor(); - free(): void; - toString(): string; - get_first_target(graph: NoteGraph): string | undefined; - equals(other: Path): boolean; - length(): number; - truncate(limit: number): Path; - edges: EdgeStruct[]; - readonly reverse_edges: EdgeStruct[]; + private constructor(); + free(): void; + [Symbol.dispose](): void; + equals(other: Path): boolean; + get_first_target(graph: NoteGraph): string | undefined; + length(): number; + toString(): string; + truncate(limit: number): Path; + edges: EdgeStruct[]; + readonly reverse_edges: EdgeStruct[]; } + export class PathList { - private constructor(); - free(): void; - toString(): string; - select(selection: string): PathList; - /** - * Cuts off all paths at a given depth, then sorts and deduplicates them. - */ - process(graph: NoteGraph, depth: number): Path[]; - to_paths(): Path[]; - max_depth(): number; + private constructor(); + free(): void; + [Symbol.dispose](): void; + max_depth(): number; + /** + * Cuts off all paths at a given depth, then sorts and deduplicates them. + */ + process(graph: NoteGraph, depth: number): Path[]; + select(selection: string): PathList; + toString(): string; + to_paths(): Path[]; } + export class RemoveEdgeGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(from: string, to: string, edge_type: string); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(from: string, to: string, edge_type: string); } + export class RemoveNoteGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(data: string); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(data: string); } + export class RenameNoteGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(old_name: string, new_name: string); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(old_name: string, new_name: string); } + export class TransitiveGraphRule { - free(): void; - toString(): string; - create_example_graph(): NoteGraph; - constructor(name: string, path: string[], edge_type: string, rounds: number, can_loop: boolean, close_reversed: boolean); + free(): void; + [Symbol.dispose](): void; + create_example_graph(): NoteGraph; + constructor(name: string, path: string[], edge_type: string, rounds: number, can_loop: boolean, close_reversed: boolean); + toString(): string; } + export class TransitiveRulesGraphUpdate { - free(): void; - add_to_batch(batch: BatchGraphUpdate): void; - constructor(new_rules: TransitiveGraphRule[]); + free(): void; + [Symbol.dispose](): void; + add_to_batch(batch: BatchGraphUpdate): void; + constructor(new_rules: TransitiveGraphRule[]); } + export class TraversalData { - free(): void; - toString(): string; - rec_sort_children(graph: NoteGraph, sorter: EdgeSorter): void; - constructor(edge: EdgeStruct, depth: number, number_of_children: number, children: TraversalData[], has_cut_of_children: boolean); - /** - * the edge struct that was traversed - */ - edge: EdgeStruct; - /** - * the depth of the node in the traversal - */ - depth: number; - /** - * the number of total children of the node, so also children of children - */ - number_of_children: number; - /** - * the children of the node - */ - children: TraversalData[]; - /** - * whether the node has a cut of children due to being at the depth limit - * of a traversal, or similar - */ - has_cut_of_children: boolean; + free(): void; + [Symbol.dispose](): void; + constructor(edge: EdgeStruct, depth: number, number_of_children: number, children: TraversalData[], has_cut_of_children: boolean); + rec_sort_children(graph: NoteGraph, sorter: EdgeSorter): void; + toString(): string; + /** + * the children of the node + */ + children: TraversalData[]; + /** + * the depth of the node in the traversal + */ + depth: number; + /** + * the edge struct that was traversed + */ + edge: EdgeStruct; + /** + * whether the node has a cut of children due to being at the depth limit + * of a traversal, or similar + */ + has_cut_of_children: boolean; + /** + * the number of total children of the node, so also children of children + */ + number_of_children: number; } + export class TraversalOptions { - free(): void; - toString(): string; - constructor(entry_nodes: string[], edge_types: string[] | null | undefined, max_depth: number, max_traversal_count: number, separate_edges: boolean, dataview_from_paths?: string[] | null); - entry_nodes: string[]; - /** - * if this is None, all edge types will be traversed - */ - get edge_types(): string[] | undefined; - /** - * if this is None, all edge types will be traversed - */ - set edge_types(value: string[] | null | undefined); - max_depth: number; - max_traversal_count: number; - /** - * if true, multiple traversals - one for each edge type - will be - * performed and the results will be combined. if false, one traversal - * over all edge types will be performed - */ - separate_edges: boolean; - /** - * When set, only edges whose target node path is in this set will be - * traversed. Used for the `dataview-from` codeblock filter. - */ - get dataview_from_paths(): string[] | undefined; - /** - * When set, only edges whose target node path is in this set will be - * traversed. Used for the `dataview-from` codeblock filter. - */ - set dataview_from_paths(value: string[] | null | undefined); + free(): void; + [Symbol.dispose](): void; + constructor(entry_nodes: string[], edge_types: string[] | null | undefined, max_depth: number, max_traversal_count: number, separate_edges: boolean, dataview_from_paths?: string[] | null); + toString(): string; + /** + * When set, only edges whose target node path is in this set will be + * traversed. Used for the `dataview-from` codeblock filter. + */ + get dataview_from_paths(): string[] | undefined; + /** + * When set, only edges whose target node path is in this set will be + * traversed. Used for the `dataview-from` codeblock filter. + */ + set dataview_from_paths(value: string[] | null | undefined); + /** + * if this is None, all edge types will be traversed + */ + get edge_types(): string[] | undefined; + /** + * if this is None, all edge types will be traversed + */ + set edge_types(value: string[] | null | undefined); + entry_nodes: string[]; + max_depth: number; + max_traversal_count: number; + /** + * if true, multiple traversals - one for each edge type - will be + * performed and the results will be combined. if false, one traversal + * over all edge types will be performed + */ + separate_edges: boolean; } + export class TraversalPostprocessOptions { - free(): void; - static without_sorter(flatten: boolean): TraversalPostprocessOptions; - toString(): string; - constructor(sorter: EdgeSorter, flatten: boolean); - get sorter(): EdgeSorter | undefined; - set sorter(value: EdgeSorter | null | undefined); - flatten: boolean; + free(): void; + [Symbol.dispose](): void; + constructor(sorter: EdgeSorter, flatten: boolean); + toString(): string; + static without_sorter(flatten: boolean): TraversalPostprocessOptions; + flatten: boolean; + get sorter(): EdgeSorter | undefined; + set sorter(value: EdgeSorter | null | undefined); } + export class TraversalResult { - free(): void; - toString(): string; - constructor(data: TraversalData[], traversal_time: bigint); - is_empty(): boolean; - to_paths(): PathList; - data: TraversalData[]; - node_count: number; - max_depth: number; - hit_depth_limit: boolean; - traversal_time: bigint; + free(): void; + [Symbol.dispose](): void; + is_empty(): boolean; + constructor(data: TraversalData[], traversal_time: bigint); + toString(): string; + to_paths(): PathList; + data: TraversalData[]; + hit_depth_limit: boolean; + max_depth: number; + node_count: number; + traversal_time: bigint; } +export function create_edge_sorter(field: string, reverse: boolean): EdgeSorter; + +export function create_graph(): NoteGraph; + +export function sort_edges(graph: NoteGraph, edges: EdgeStruct[], sorter: EdgeSorter): EdgeStruct[]; + +export function sort_traversal_data(graph: NoteGraph, traversal_data: TraversalData[], sorter: EdgeSorter): TraversalData[]; + export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; export interface InitOutput { - readonly memory: WebAssembly.Memory; - readonly create_graph: () => number; - readonly __wbg_get_path_edges: (a: number) => [number, number]; - readonly __wbg_path_free: (a: number, b: number) => void; - readonly __wbg_pathlist_free: (a: number, b: number) => void; - readonly __wbg_set_path_edges: (a: number, b: number, c: number) => void; - readonly path_equals: (a: number, b: number) => number; - readonly path_get_first_target: (a: number, b: number) => [number, number, number, number]; - readonly path_length: (a: number) => number; - readonly path_reverse_edges: (a: number) => [number, number]; - readonly path_toString: (a: number) => [number, number]; - readonly path_truncate: (a: number, b: number) => number; - readonly pathlist_max_depth: (a: number) => number; - readonly pathlist_process: (a: number, b: number, c: number) => [number, number, number, number]; - readonly pathlist_select: (a: number, b: number, c: number) => number; - readonly pathlist_toString: (a: number) => [number, number]; - readonly pathlist_to_paths: (a: number) => [number, number]; - readonly __wbg_edgestruct_free: (a: number, b: number) => void; - readonly edgestruct_edge_data: (a: number, b: number) => [number, number, number]; - readonly edgestruct_edge_source: (a: number, b: number) => [number, number, number, number]; - readonly edgestruct_edge_type: (a: number) => [number, number]; - readonly edgestruct_explicit: (a: number, b: number) => [number, number, number]; - readonly edgestruct_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly edgestruct_is_self_loop: (a: number) => number; - readonly edgestruct_matches_edge_filter: (a: number, b: number, c: number, d: number) => [number, number, number]; - readonly edgestruct_round: (a: number, b: number) => [number, number, number]; - readonly edgestruct_source_data: (a: number, b: number) => [number, number, number]; - readonly edgestruct_source_path: (a: number, b: number) => [number, number, number, number]; - readonly edgestruct_source_resolved: (a: number, b: number) => [number, number, number]; - readonly edgestruct_stringify_source: (a: number, b: number, c: number) => [number, number, number, number]; - readonly edgestruct_stringify_target: (a: number, b: number, c: number) => [number, number, number, number]; - readonly edgestruct_target_data: (a: number, b: number) => [number, number, number]; - readonly edgestruct_target_path: (a: number, b: number) => [number, number, number, number]; - readonly edgestruct_target_resolved: (a: number, b: number) => [number, number, number]; - readonly edgestruct_toString: (a: number) => [number, number]; - readonly notegraph_rec_traverse: (a: number, b: number) => [number, number, number]; - readonly notegraph_rec_traverse_and_process: (a: number, b: number, c: number) => [number, number, number]; - readonly __wbg_nodestringifyoptions_free: (a: number, b: number) => void; - readonly nodestringifyoptions_new: (a: number, b: number, c: number, d: number, e: number) => number; - readonly nodestringifyoptions_stringify_node: (a: number, b: number) => [number, number]; - readonly __wbg_batchgraphupdate_free: (a: number, b: number) => void; - readonly batchgraphupdate_new: () => number; - readonly __wbg_transitivegraphrule_free: (a: number, b: number) => void; - readonly transitivegraphrule_create_example_graph: (a: number) => [number, number, number]; - readonly transitivegraphrule_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; - readonly transitivegraphrule_toString: (a: number) => [number, number]; - readonly __wbg_gcedgedata_free: (a: number, b: number) => void; - readonly __wbg_gcnodedata_free: (a: number, b: number) => void; - readonly gcedgedata_edge_source: (a: number) => [number, number]; - readonly gcedgedata_edge_type: (a: number) => [number, number]; - readonly gcedgedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; - readonly gcedgedata_source: (a: number) => [number, number]; - readonly gcedgedata_target: (a: number) => [number, number]; - readonly gcedgedata_toString: (a: number) => [number, number]; - readonly gcnodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; - readonly gcnodedata_toString: (a: number) => [number, number]; - readonly __wbg_notegraph_free: (a: number, b: number) => void; - readonly notegraph_apply_update: (a: number, b: number) => [number, number]; - readonly notegraph_build_graph: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number]; - readonly notegraph_edge_types: (a: number) => [number, number]; - readonly notegraph_get_filtered_grouped_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; - readonly notegraph_get_filtered_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; - readonly notegraph_get_incoming_edges: (a: number, b: number, c: number) => number; - readonly notegraph_get_node: (a: number, b: number, c: number) => number; - readonly notegraph_get_outgoing_edges: (a: number, b: number, c: number) => number; - readonly notegraph_has_node: (a: number, b: number, c: number) => number; - readonly notegraph_is_node_resolved: (a: number, b: number, c: number) => number; - readonly notegraph_iterate_edges: (a: number, b: unknown) => void; - readonly notegraph_iterate_nodes: (a: number, b: unknown) => void; - readonly notegraph_log: (a: number) => void; - readonly notegraph_new: () => number; - readonly notegraph_notify_update: (a: number) => void; - readonly notegraph_set_update_callback: (a: number, b: unknown) => void; - readonly __wbg_edgelist_free: (a: number, b: number) => void; - readonly __wbg_groupededgelist_free: (a: number, b: number) => void; - readonly edgelist_first: (a: number) => number; - readonly edgelist_get_edges: (a: number) => [number, number]; - readonly edgelist_get_sorted_edges: (a: number, b: number, c: number) => [number, number, number, number]; - readonly edgelist_group_by_type: (a: number) => number; - readonly edgelist_last: (a: number) => number; - readonly edgelist_toString: (a: number) => [number, number]; - readonly edgelist_to_array: (a: number) => [number, number]; - readonly groupededgelist_get_edges: (a: number, b: number, c: number) => [number, number]; - readonly groupededgelist_get_sorted_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number]; - readonly groupededgelist_toString: (a: number) => [number, number]; - readonly __wbg_get_mermaidgraphdata_mermaid: (a: number) => [number, number]; - readonly __wbg_get_mermaidgraphdata_total_time: (a: number) => bigint; - readonly __wbg_get_mermaidgraphdata_traversal_time: (a: number) => bigint; - readonly __wbg_mermaidgraphdata_free: (a: number, b: number) => void; - readonly __wbg_mermaidgraphoptions_free: (a: number, b: number) => void; - readonly __wbg_set_mermaidgraphdata_mermaid: (a: number, b: number, c: number) => void; - readonly __wbg_set_mermaidgraphdata_total_time: (a: number, b: bigint) => void; - readonly __wbg_set_mermaidgraphdata_traversal_time: (a: number, b: bigint) => void; - readonly mermaidgraphdata_toString: (a: number) => [number, number]; - readonly mermaidgraphoptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number) => number; - readonly mermaidgraphoptions_toString: (a: number) => [number, number]; - readonly notegraph_generate_mermaid_graph: (a: number, b: number, c: number) => [number, number, number]; - readonly __wbg_notegrapherror_free: (a: number, b: number) => void; - readonly notegrapherror_message: (a: number) => [number, number]; - readonly notegrapherror_new: (a: number, b: number) => number; - readonly notegrapherror_toString: (a: number) => [number, number]; - readonly __wbg_get_nodedata_aliases: (a: number) => [number, number]; - readonly __wbg_get_nodedata_ignore_in_edges: (a: number) => number; - readonly __wbg_get_nodedata_ignore_out_edges: (a: number) => number; - readonly __wbg_get_nodedata_path: (a: number) => [number, number]; - readonly __wbg_get_nodedata_resolved: (a: number) => number; - readonly __wbg_nodedata_free: (a: number, b: number) => void; - readonly __wbg_set_nodedata_aliases: (a: number, b: number, c: number) => void; - readonly __wbg_set_nodedata_ignore_in_edges: (a: number, b: number) => void; - readonly __wbg_set_nodedata_ignore_out_edges: (a: number, b: number) => void; - readonly __wbg_set_nodedata_path: (a: number, b: number, c: number) => void; - readonly __wbg_set_nodedata_resolved: (a: number, b: number) => void; - readonly nodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; - readonly nodedata_toString: (a: number) => [number, number]; - readonly __wbg_edgesorter_free: (a: number, b: number) => void; - readonly create_edge_sorter: (a: number, b: number, c: number) => [number, number, number]; - readonly sort_edges: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly sort_traversal_data: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly __wbg_addedgegraphupdate_free: (a: number, b: number) => void; - readonly __wbg_addnotegraphupdate_free: (a: number, b: number) => void; - readonly __wbg_removeedgegraphupdate_free: (a: number, b: number) => void; - readonly __wbg_removenotegraphupdate_free: (a: number, b: number) => void; - readonly __wbg_renamenotegraphupdate_free: (a: number, b: number) => void; - readonly __wbg_transitiverulesgraphupdate_free: (a: number, b: number) => void; - readonly addedgegraphupdate_add_to_batch: (a: number, b: number) => void; - readonly addedgegraphupdate_new: (a: number) => number; - readonly addnotegraphupdate_add_to_batch: (a: number, b: number) => void; - readonly addnotegraphupdate_new: (a: number) => number; - readonly removeedgegraphupdate_add_to_batch: (a: number, b: number) => void; - readonly removeedgegraphupdate_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; - readonly removenotegraphupdate_add_to_batch: (a: number, b: number) => void; - readonly removenotegraphupdate_new: (a: number, b: number) => number; - readonly renamenotegraphupdate_add_to_batch: (a: number, b: number) => void; - readonly renamenotegraphupdate_new: (a: number, b: number, c: number, d: number) => number; - readonly transitiverulesgraphupdate_add_to_batch: (a: number, b: number) => void; - readonly transitiverulesgraphupdate_new: (a: number, b: number) => number; - readonly __wbg_flattraversaldata_free: (a: number, b: number) => void; - readonly __wbg_flattraversalresult_free: (a: number, b: number) => void; - readonly __wbg_get_flattraversaldata_children: (a: number) => [number, number]; - readonly __wbg_get_flattraversaldata_depth: (a: number) => number; - readonly __wbg_get_flattraversaldata_edge: (a: number) => number; - readonly __wbg_get_flattraversaldata_has_cut_of_children: (a: number) => number; - readonly __wbg_get_flattraversaldata_number_of_children: (a: number) => number; - readonly __wbg_get_flattraversalresult_data: (a: number) => [number, number]; - readonly __wbg_get_flattraversalresult_entry_nodes: (a: number) => [number, number]; - readonly __wbg_get_flattraversalresult_hit_depth_limit: (a: number) => number; - readonly __wbg_get_flattraversalresult_node_count: (a: number) => number; - readonly __wbg_get_flattraversalresult_traversal_time: (a: number) => bigint; - readonly __wbg_get_traversaldata_children: (a: number) => [number, number]; - readonly __wbg_get_traversalresult_data: (a: number) => [number, number]; - readonly __wbg_get_traversalresult_hit_depth_limit: (a: number) => number; - readonly __wbg_get_traversalresult_max_depth: (a: number) => number; - readonly __wbg_get_traversalresult_node_count: (a: number) => number; - readonly __wbg_set_flattraversaldata_children: (a: number, b: number, c: number) => void; - readonly __wbg_set_flattraversaldata_depth: (a: number, b: number) => void; - readonly __wbg_set_flattraversaldata_edge: (a: number, b: number) => void; - readonly __wbg_set_flattraversaldata_has_cut_of_children: (a: number, b: number) => void; - readonly __wbg_set_flattraversaldata_number_of_children: (a: number, b: number) => void; - readonly __wbg_set_flattraversalresult_data: (a: number, b: number, c: number) => void; - readonly __wbg_set_flattraversalresult_entry_nodes: (a: number, b: number, c: number) => void; - readonly __wbg_set_flattraversalresult_hit_depth_limit: (a: number, b: number) => void; - readonly __wbg_set_flattraversalresult_node_count: (a: number, b: number) => void; - readonly __wbg_set_flattraversalresult_traversal_time: (a: number, b: bigint) => void; - readonly __wbg_set_traversaldata_children: (a: number, b: number, c: number) => void; - readonly __wbg_set_traversalresult_data: (a: number, b: number, c: number) => void; - readonly __wbg_set_traversalresult_hit_depth_limit: (a: number, b: number) => void; - readonly __wbg_set_traversalresult_max_depth: (a: number, b: number) => void; - readonly __wbg_set_traversalresult_node_count: (a: number, b: number) => void; - readonly __wbg_traversaldata_free: (a: number, b: number) => void; - readonly __wbg_traversalresult_free: (a: number, b: number) => void; - readonly flattraversaldata_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; - readonly flattraversaldata_to_js_rendering_obj: (a: number, b: number, c: number, d: number, e: number) => [number, number, number]; - readonly flattraversalresult_children_at_index: (a: number, b: number) => [number, number]; - readonly flattraversalresult_data_at_index: (a: number, b: number) => number; - readonly flattraversalresult_is_empty: (a: number) => number; - readonly flattraversalresult_rendering_obj_at_index: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number]; - readonly flattraversalresult_sort: (a: number, b: number, c: number) => [number, number]; - readonly flattraversalresult_toString: (a: number) => [number, number]; - readonly traversaldata_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; - readonly traversaldata_rec_sort_children: (a: number, b: number, c: number) => [number, number]; - readonly traversaldata_toString: (a: number) => [number, number]; - readonly traversalresult_new: (a: number, b: number, c: bigint) => number; - readonly traversalresult_toString: (a: number) => [number, number]; - readonly traversalresult_to_paths: (a: number) => number; - readonly __wbg_set_traversaldata_has_cut_of_children: (a: number, b: number) => void; - readonly __wbg_set_flattraversalresult_max_depth: (a: number, b: number) => void; - readonly __wbg_set_traversaldata_depth: (a: number, b: number) => void; - readonly __wbg_set_traversaldata_number_of_children: (a: number, b: number) => void; - readonly __wbg_set_traversalresult_traversal_time: (a: number, b: bigint) => void; - readonly __wbg_get_traversaldata_edge: (a: number) => number; - readonly traversalresult_is_empty: (a: number) => number; - readonly __wbg_set_traversaldata_edge: (a: number, b: number) => void; - readonly __wbg_get_traversaldata_has_cut_of_children: (a: number) => number; - readonly __wbg_get_flattraversalresult_max_depth: (a: number) => number; - readonly __wbg_get_traversaldata_depth: (a: number) => number; - readonly __wbg_get_traversaldata_number_of_children: (a: number) => number; - readonly __wbg_get_traversalresult_traversal_time: (a: number) => bigint; - readonly __wbg_edgedata_free: (a: number, b: number) => void; - readonly __wbg_get_edgedata_explicit: (a: number) => number; - readonly __wbg_get_edgedata_round: (a: number) => number; - readonly __wbg_set_edgedata_explicit: (a: number, b: number) => void; - readonly __wbg_set_edgedata_round: (a: number, b: number) => void; - readonly edgedata_edge_source: (a: number) => [number, number]; - readonly edgedata_edge_type: (a: number) => [number, number]; - readonly edgedata_toString: (a: number) => [number, number]; - readonly __wbg_get_traversaloptions_dataview_from_paths: (a: number) => [number, number]; - readonly __wbg_get_traversaloptions_edge_types: (a: number) => [number, number]; - readonly __wbg_get_traversaloptions_entry_nodes: (a: number) => [number, number]; - readonly __wbg_get_traversaloptions_max_depth: (a: number) => number; - readonly __wbg_get_traversaloptions_max_traversal_count: (a: number) => number; - readonly __wbg_get_traversaloptions_separate_edges: (a: number) => number; - readonly __wbg_get_traversalpostprocessoptions_flatten: (a: number) => number; - readonly __wbg_get_traversalpostprocessoptions_sorter: (a: number) => number; - readonly __wbg_set_traversaloptions_dataview_from_paths: (a: number, b: number, c: number) => void; - readonly __wbg_set_traversaloptions_edge_types: (a: number, b: number, c: number) => void; - readonly __wbg_set_traversaloptions_entry_nodes: (a: number, b: number, c: number) => void; - readonly __wbg_set_traversaloptions_max_depth: (a: number, b: number) => void; - readonly __wbg_set_traversaloptions_max_traversal_count: (a: number, b: number) => void; - readonly __wbg_set_traversaloptions_separate_edges: (a: number, b: number) => void; - readonly __wbg_set_traversalpostprocessoptions_flatten: (a: number, b: number) => void; - readonly __wbg_set_traversalpostprocessoptions_sorter: (a: number, b: number) => void; - readonly __wbg_traversaloptions_free: (a: number, b: number) => void; - readonly __wbg_traversalpostprocessoptions_free: (a: number, b: number) => void; - readonly traversaloptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; - readonly traversaloptions_toString: (a: number) => [number, number]; - readonly traversalpostprocessoptions_new: (a: number, b: number) => number; - readonly traversalpostprocessoptions_toString: (a: number) => [number, number]; - readonly traversalpostprocessoptions_without_sorter: (a: number) => number; - readonly __wbindgen_exn_store: (a: number) => void; - readonly __externref_table_alloc: () => number; - readonly __wbindgen_export_2: WebAssembly.Table; - readonly __wbindgen_free: (a: number, b: number, c: number) => void; - readonly __wbindgen_malloc: (a: number, b: number) => number; - readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; - readonly __externref_drop_slice: (a: number, b: number) => void; - readonly __externref_table_dealloc: (a: number) => void; - readonly __wbindgen_start: () => void; + readonly memory: WebAssembly.Memory; + readonly __wbg_addedgegraphupdate_free: (a: number, b: number) => void; + readonly __wbg_addnotegraphupdate_free: (a: number, b: number) => void; + readonly __wbg_batchgraphupdate_free: (a: number, b: number) => void; + readonly __wbg_edgedata_free: (a: number, b: number) => void; + readonly __wbg_edgelist_free: (a: number, b: number) => void; + readonly __wbg_edgesorter_free: (a: number, b: number) => void; + readonly __wbg_edgestruct_free: (a: number, b: number) => void; + readonly __wbg_flattraversaldata_free: (a: number, b: number) => void; + readonly __wbg_flattraversalresult_free: (a: number, b: number) => void; + readonly __wbg_gcedgedata_free: (a: number, b: number) => void; + readonly __wbg_gcnodedata_free: (a: number, b: number) => void; + readonly __wbg_get_edgedata_explicit: (a: number) => number; + readonly __wbg_get_edgedata_round: (a: number) => number; + readonly __wbg_get_flattraversaldata_children: (a: number) => [number, number]; + readonly __wbg_get_flattraversaldata_depth: (a: number) => number; + readonly __wbg_get_flattraversaldata_edge: (a: number) => number; + readonly __wbg_get_flattraversaldata_has_cut_of_children: (a: number) => number; + readonly __wbg_get_flattraversaldata_number_of_children: (a: number) => number; + readonly __wbg_get_flattraversalresult_data: (a: number) => [number, number]; + readonly __wbg_get_flattraversalresult_entry_nodes: (a: number) => [number, number]; + readonly __wbg_get_flattraversalresult_hit_depth_limit: (a: number) => number; + readonly __wbg_get_flattraversalresult_max_depth: (a: number) => number; + readonly __wbg_get_flattraversalresult_node_count: (a: number) => number; + readonly __wbg_get_flattraversalresult_traversal_time: (a: number) => bigint; + readonly __wbg_get_mermaidgraphdata_mermaid: (a: number) => [number, number]; + readonly __wbg_get_mermaidgraphdata_total_time: (a: number) => bigint; + readonly __wbg_get_mermaidgraphdata_traversal_time: (a: number) => bigint; + readonly __wbg_get_nodedata_aliases: (a: number) => [number, number]; + readonly __wbg_get_nodedata_ignore_in_edges: (a: number) => number; + readonly __wbg_get_nodedata_ignore_out_edges: (a: number) => number; + readonly __wbg_get_nodedata_path: (a: number) => [number, number]; + readonly __wbg_get_nodedata_resolved: (a: number) => number; + readonly __wbg_get_path_edges: (a: number) => [number, number]; + readonly __wbg_get_traversaldata_children: (a: number) => [number, number]; + readonly __wbg_get_traversaldata_depth: (a: number) => number; + readonly __wbg_get_traversaldata_edge: (a: number) => number; + readonly __wbg_get_traversaldata_has_cut_of_children: (a: number) => number; + readonly __wbg_get_traversaldata_number_of_children: (a: number) => number; + readonly __wbg_get_traversaloptions_dataview_from_paths: (a: number) => [number, number]; + readonly __wbg_get_traversaloptions_edge_types: (a: number) => [number, number]; + readonly __wbg_get_traversaloptions_entry_nodes: (a: number) => [number, number]; + readonly __wbg_get_traversaloptions_max_depth: (a: number) => number; + readonly __wbg_get_traversaloptions_max_traversal_count: (a: number) => number; + readonly __wbg_get_traversaloptions_separate_edges: (a: number) => number; + readonly __wbg_get_traversalpostprocessoptions_flatten: (a: number) => number; + readonly __wbg_get_traversalpostprocessoptions_sorter: (a: number) => number; + readonly __wbg_get_traversalresult_data: (a: number) => [number, number]; + readonly __wbg_get_traversalresult_hit_depth_limit: (a: number) => number; + readonly __wbg_get_traversalresult_max_depth: (a: number) => number; + readonly __wbg_get_traversalresult_node_count: (a: number) => number; + readonly __wbg_get_traversalresult_traversal_time: (a: number) => bigint; + readonly __wbg_groupededgelist_free: (a: number, b: number) => void; + readonly __wbg_mermaidgraphdata_free: (a: number, b: number) => void; + readonly __wbg_mermaidgraphoptions_free: (a: number, b: number) => void; + readonly __wbg_nodedata_free: (a: number, b: number) => void; + readonly __wbg_nodestringifyoptions_free: (a: number, b: number) => void; + readonly __wbg_notegraph_free: (a: number, b: number) => void; + readonly __wbg_notegrapherror_free: (a: number, b: number) => void; + readonly __wbg_path_free: (a: number, b: number) => void; + readonly __wbg_pathlist_free: (a: number, b: number) => void; + readonly __wbg_removeedgegraphupdate_free: (a: number, b: number) => void; + readonly __wbg_removenotegraphupdate_free: (a: number, b: number) => void; + readonly __wbg_renamenotegraphupdate_free: (a: number, b: number) => void; + readonly __wbg_set_edgedata_explicit: (a: number, b: number) => void; + readonly __wbg_set_edgedata_round: (a: number, b: number) => void; + readonly __wbg_set_flattraversaldata_children: (a: number, b: number, c: number) => void; + readonly __wbg_set_flattraversaldata_depth: (a: number, b: number) => void; + readonly __wbg_set_flattraversaldata_edge: (a: number, b: number) => void; + readonly __wbg_set_flattraversaldata_has_cut_of_children: (a: number, b: number) => void; + readonly __wbg_set_flattraversaldata_number_of_children: (a: number, b: number) => void; + readonly __wbg_set_flattraversalresult_data: (a: number, b: number, c: number) => void; + readonly __wbg_set_flattraversalresult_entry_nodes: (a: number, b: number, c: number) => void; + readonly __wbg_set_flattraversalresult_hit_depth_limit: (a: number, b: number) => void; + readonly __wbg_set_flattraversalresult_max_depth: (a: number, b: number) => void; + readonly __wbg_set_flattraversalresult_node_count: (a: number, b: number) => void; + readonly __wbg_set_flattraversalresult_traversal_time: (a: number, b: bigint) => void; + readonly __wbg_set_mermaidgraphdata_mermaid: (a: number, b: number, c: number) => void; + readonly __wbg_set_mermaidgraphdata_total_time: (a: number, b: bigint) => void; + readonly __wbg_set_mermaidgraphdata_traversal_time: (a: number, b: bigint) => void; + readonly __wbg_set_nodedata_aliases: (a: number, b: number, c: number) => void; + readonly __wbg_set_nodedata_ignore_in_edges: (a: number, b: number) => void; + readonly __wbg_set_nodedata_ignore_out_edges: (a: number, b: number) => void; + readonly __wbg_set_nodedata_path: (a: number, b: number, c: number) => void; + readonly __wbg_set_nodedata_resolved: (a: number, b: number) => void; + readonly __wbg_set_path_edges: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversaldata_children: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversaldata_depth: (a: number, b: number) => void; + readonly __wbg_set_traversaldata_edge: (a: number, b: number) => void; + readonly __wbg_set_traversaldata_has_cut_of_children: (a: number, b: number) => void; + readonly __wbg_set_traversaldata_number_of_children: (a: number, b: number) => void; + readonly __wbg_set_traversaloptions_dataview_from_paths: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversaloptions_edge_types: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversaloptions_entry_nodes: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversaloptions_max_depth: (a: number, b: number) => void; + readonly __wbg_set_traversaloptions_max_traversal_count: (a: number, b: number) => void; + readonly __wbg_set_traversaloptions_separate_edges: (a: number, b: number) => void; + readonly __wbg_set_traversalpostprocessoptions_flatten: (a: number, b: number) => void; + readonly __wbg_set_traversalpostprocessoptions_sorter: (a: number, b: number) => void; + readonly __wbg_set_traversalresult_data: (a: number, b: number, c: number) => void; + readonly __wbg_set_traversalresult_hit_depth_limit: (a: number, b: number) => void; + readonly __wbg_set_traversalresult_max_depth: (a: number, b: number) => void; + readonly __wbg_set_traversalresult_node_count: (a: number, b: number) => void; + readonly __wbg_set_traversalresult_traversal_time: (a: number, b: bigint) => void; + readonly __wbg_transitivegraphrule_free: (a: number, b: number) => void; + readonly __wbg_transitiverulesgraphupdate_free: (a: number, b: number) => void; + readonly __wbg_traversaldata_free: (a: number, b: number) => void; + readonly __wbg_traversaloptions_free: (a: number, b: number) => void; + readonly __wbg_traversalpostprocessoptions_free: (a: number, b: number) => void; + readonly __wbg_traversalresult_free: (a: number, b: number) => void; + readonly addedgegraphupdate_add_to_batch: (a: number, b: number) => void; + readonly addedgegraphupdate_new: (a: number) => number; + readonly addnotegraphupdate_add_to_batch: (a: number, b: number) => void; + readonly addnotegraphupdate_new: (a: number) => number; + readonly batchgraphupdate_new: () => number; + readonly create_edge_sorter: (a: number, b: number, c: number) => [number, number, number]; + readonly create_graph: () => number; + readonly edgedata_edge_source: (a: number) => [number, number]; + readonly edgedata_edge_type: (a: number) => [number, number]; + readonly edgedata_toString: (a: number) => [number, number]; + readonly edgelist_first: (a: number) => number; + readonly edgelist_get_edges: (a: number) => [number, number]; + readonly edgelist_get_sorted_edges: (a: number, b: number, c: number) => [number, number, number, number]; + readonly edgelist_group_by_type: (a: number) => number; + readonly edgelist_last: (a: number) => number; + readonly edgelist_toString: (a: number) => [number, number]; + readonly edgelist_to_array: (a: number) => [number, number]; + readonly edgestruct_edge_data: (a: number, b: number) => [number, number, number]; + readonly edgestruct_edge_source: (a: number, b: number) => [number, number, number, number]; + readonly edgestruct_edge_type: (a: number) => [number, number]; + readonly edgestruct_explicit: (a: number, b: number) => [number, number, number]; + readonly edgestruct_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; + readonly edgestruct_is_self_loop: (a: number) => number; + readonly edgestruct_matches_edge_filter: (a: number, b: number, c: number, d: number) => [number, number, number]; + readonly edgestruct_round: (a: number, b: number) => [number, number, number]; + readonly edgestruct_source_data: (a: number, b: number) => [number, number, number]; + readonly edgestruct_source_path: (a: number, b: number) => [number, number, number, number]; + readonly edgestruct_source_resolved: (a: number, b: number) => [number, number, number]; + readonly edgestruct_stringify_source: (a: number, b: number, c: number) => [number, number, number, number]; + readonly edgestruct_stringify_target: (a: number, b: number, c: number) => [number, number, number, number]; + readonly edgestruct_target_data: (a: number, b: number) => [number, number, number]; + readonly edgestruct_target_path: (a: number, b: number) => [number, number, number, number]; + readonly edgestruct_target_resolved: (a: number, b: number) => [number, number, number]; + readonly edgestruct_toString: (a: number) => [number, number]; + readonly flattraversaldata_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; + readonly flattraversaldata_to_js_rendering_obj: (a: number, b: number, c: number, d: number, e: number) => [number, number, number]; + readonly flattraversalresult_children_at_index: (a: number, b: number) => [number, number]; + readonly flattraversalresult_data_at_index: (a: number, b: number) => number; + readonly flattraversalresult_is_empty: (a: number) => number; + readonly flattraversalresult_rendering_obj_at_index: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number]; + readonly flattraversalresult_sort: (a: number, b: number, c: number) => [number, number]; + readonly flattraversalresult_toString: (a: number) => [number, number]; + readonly gcedgedata_edge_source: (a: number) => [number, number]; + readonly gcedgedata_edge_type: (a: number) => [number, number]; + readonly gcedgedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; + readonly gcedgedata_source: (a: number) => [number, number]; + readonly gcedgedata_target: (a: number) => [number, number]; + readonly gcedgedata_toString: (a: number) => [number, number]; + readonly gcnodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; + readonly gcnodedata_toString: (a: number) => [number, number]; + readonly groupededgelist_get_edges: (a: number, b: number, c: number) => [number, number]; + readonly groupededgelist_get_sorted_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number]; + readonly groupededgelist_toString: (a: number) => [number, number]; + readonly mermaidgraphdata_toString: (a: number) => [number, number]; + readonly mermaidgraphoptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number) => number; + readonly mermaidgraphoptions_toString: (a: number) => [number, number]; + readonly nodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; + readonly nodedata_toString: (a: number) => [number, number]; + readonly nodestringifyoptions_new: (a: number, b: number, c: number, d: number, e: number) => number; + readonly nodestringifyoptions_stringify_node: (a: number, b: number) => [number, number]; + readonly notegraph_apply_update: (a: number, b: number) => [number, number]; + readonly notegraph_build_graph: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number]; + readonly notegraph_edge_types: (a: number) => [number, number]; + readonly notegraph_generate_mermaid_graph: (a: number, b: number, c: number) => [number, number, number]; + readonly notegraph_get_filtered_grouped_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; + readonly notegraph_get_filtered_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; + readonly notegraph_get_incoming_edges: (a: number, b: number, c: number) => number; + readonly notegraph_get_node: (a: number, b: number, c: number) => number; + readonly notegraph_get_outgoing_edges: (a: number, b: number, c: number) => number; + readonly notegraph_has_node: (a: number, b: number, c: number) => number; + readonly notegraph_is_node_resolved: (a: number, b: number, c: number) => number; + readonly notegraph_iterate_edges: (a: number, b: unknown) => void; + readonly notegraph_iterate_nodes: (a: number, b: unknown) => void; + readonly notegraph_log: (a: number) => void; + readonly notegraph_new: () => number; + readonly notegraph_notify_update: (a: number) => void; + readonly notegraph_rec_traverse: (a: number, b: number) => [number, number, number]; + readonly notegraph_rec_traverse_and_process: (a: number, b: number, c: number) => [number, number, number]; + readonly notegraph_set_update_callback: (a: number, b: unknown) => void; + readonly notegrapherror_message: (a: number) => [number, number]; + readonly notegrapherror_new: (a: number, b: number) => number; + readonly notegrapherror_toString: (a: number) => [number, number]; + readonly path_equals: (a: number, b: number) => number; + readonly path_get_first_target: (a: number, b: number) => [number, number, number, number]; + readonly path_length: (a: number) => number; + readonly path_reverse_edges: (a: number) => [number, number]; + readonly path_toString: (a: number) => [number, number]; + readonly path_truncate: (a: number, b: number) => number; + readonly pathlist_max_depth: (a: number) => number; + readonly pathlist_process: (a: number, b: number, c: number) => [number, number, number, number]; + readonly pathlist_select: (a: number, b: number, c: number) => number; + readonly pathlist_toString: (a: number) => [number, number]; + readonly pathlist_to_paths: (a: number) => [number, number]; + readonly removeedgegraphupdate_add_to_batch: (a: number, b: number) => void; + readonly removeedgegraphupdate_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; + readonly removenotegraphupdate_add_to_batch: (a: number, b: number) => void; + readonly removenotegraphupdate_new: (a: number, b: number) => number; + readonly renamenotegraphupdate_add_to_batch: (a: number, b: number) => void; + readonly renamenotegraphupdate_new: (a: number, b: number, c: number, d: number) => number; + readonly sort_edges: (a: number, b: number, c: number, d: number) => [number, number, number, number]; + readonly sort_traversal_data: (a: number, b: number, c: number, d: number) => [number, number, number, number]; + readonly transitivegraphrule_create_example_graph: (a: number) => [number, number, number]; + readonly transitivegraphrule_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; + readonly transitivegraphrule_toString: (a: number) => [number, number]; + readonly transitiverulesgraphupdate_add_to_batch: (a: number, b: number) => void; + readonly transitiverulesgraphupdate_new: (a: number, b: number) => number; + readonly traversaldata_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; + readonly traversaldata_rec_sort_children: (a: number, b: number, c: number) => [number, number]; + readonly traversaldata_toString: (a: number) => [number, number]; + readonly traversaloptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; + readonly traversaloptions_toString: (a: number) => [number, number]; + readonly traversalpostprocessoptions_new: (a: number, b: number) => number; + readonly traversalpostprocessoptions_toString: (a: number) => [number, number]; + readonly traversalpostprocessoptions_without_sorter: (a: number) => number; + readonly traversalresult_is_empty: (a: number) => number; + readonly traversalresult_new: (a: number, b: number, c: bigint) => number; + readonly traversalresult_toString: (a: number) => [number, number]; + readonly traversalresult_to_paths: (a: number) => number; + readonly __wbindgen_malloc: (a: number, b: number) => number; + readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_exn_store: (a: number) => void; + readonly __externref_table_alloc: () => number; + readonly __wbindgen_externrefs: WebAssembly.Table; + readonly __wbindgen_free: (a: number, b: number, c: number) => void; + readonly __externref_table_dealloc: (a: number) => void; + readonly __externref_drop_slice: (a: number, b: number) => void; + readonly __wbindgen_start: () => void; } export type SyncInitInput = BufferSource | WebAssembly.Module; + /** -* Instantiates the given `module`, which can either be bytes or -* a precompiled `WebAssembly.Module`. -* -* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. -* -* @returns {InitOutput} -*/ + * Instantiates the given `module`, which can either be bytes or + * a precompiled `WebAssembly.Module`. + * + * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. + * + * @returns {InitOutput} + */ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; /** -* If `module_or_path` is {RequestInfo} or {URL}, makes a request and -* for everything else, calls `WebAssembly.instantiate` directly. -* -* @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. -* -* @returns {Promise} -*/ + * If `module_or_path` is {RequestInfo} or {URL}, makes a request and + * for everything else, calls `WebAssembly.instantiate` directly. + * + * @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. + * + * @returns {Promise} + */ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; /* eslint-enable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-misused-new -- End of generated bindings. */ diff --git a/wasm/pkg/breadcrumbs_graph_wasm.js b/wasm/pkg/breadcrumbs_graph_wasm.js index a75248f4..09b71f62 100644 --- a/wasm/pkg/breadcrumbs_graph_wasm.js +++ b/wasm/pkg/breadcrumbs_graph_wasm.js @@ -1,440 +1,356 @@ +/* @ts-self-types="./breadcrumbs_graph_wasm.d.ts" */ import { log } from 'src/logger/index.ts'; -let wasm; -function addToExternrefTable0(obj) { - const idx = wasm.__externref_table_alloc(); - wasm.__wbindgen_export_2.set(idx, obj); - return idx; -} - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - const idx = addToExternrefTable0(e); - wasm.__wbindgen_exn_store(idx); +export class AddEdgeGraphUpdate { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + AddEdgeGraphUpdateFinalization.unregister(this); + return ptr; } -} - -const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); - -if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; - -let cachedUint8ArrayMemory0 = null; - -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_addedgegraphupdate_free(ptr, 0); + } + /** + * @param {BatchGraphUpdate} batch + */ + add_to_batch(batch) { + const ptr = this.__destroy_into_raw(); + _assertClass(batch, BatchGraphUpdate); + wasm.addedgegraphupdate_add_to_batch(ptr, batch.__wbg_ptr); + } + /** + * @param {GCEdgeData} data + */ + constructor(data) { + _assertClass(data, GCEdgeData); + var ptr0 = data.__destroy_into_raw(); + const ret = wasm.addedgegraphupdate_new(ptr0); + this.__wbg_ptr = ret; + AddEdgeGraphUpdateFinalization.register(this, this.__wbg_ptr, this); + return this; } - return cachedUint8ArrayMemory0; -} - -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} - -let WASM_VECTOR_LEN = 0; - -const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); - -const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' - ? function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); } - : function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; -}); +if (Symbol.dispose) AddEdgeGraphUpdate.prototype[Symbol.dispose] = AddEdgeGraphUpdate.prototype.free; -function passStringToWasm0(arg, malloc, realloc) { - - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; +export class AddNoteGraphUpdate { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + AddNoteGraphUpdateFinalization.unregister(this); return ptr; } - - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - - const mem = getUint8ArrayMemory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_addnotegraphupdate_free(ptr, 0); } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; + /** + * @param {BatchGraphUpdate} batch + */ + add_to_batch(batch) { + const ptr = this.__destroy_into_raw(); + _assertClass(batch, BatchGraphUpdate); + wasm.addnotegraphupdate_add_to_batch(ptr, batch.__wbg_ptr); } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -let cachedDataViewMemory0 = null; - -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + /** + * @param {GCNodeData} data + */ + constructor(data) { + _assertClass(data, GCNodeData); + var ptr0 = data.__destroy_into_raw(); + const ret = wasm.addnotegraphupdate_new(ptr0); + this.__wbg_ptr = ret; + AddNoteGraphUpdateFinalization.register(this, this.__wbg_ptr, this); + return this; } - return cachedDataViewMemory0; } +if (Symbol.dispose) AddNoteGraphUpdate.prototype[Symbol.dispose] = AddNoteGraphUpdate.prototype.free; -function isLikeNone(x) { - return x === undefined || x === null; +export class BatchGraphUpdate { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + BatchGraphUpdateFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_batchgraphupdate_free(ptr, 0); + } + constructor() { + const ret = wasm.batchgraphupdate_new(); + this.__wbg_ptr = ret; + BatchGraphUpdateFinalization.register(this, this.__wbg_ptr, this); + return this; + } } +if (Symbol.dispose) BatchGraphUpdate.prototype[Symbol.dispose] = BatchGraphUpdate.prototype.free; -function debugString(val) { - // primitive types - const type = typeof val; - if (type == 'number' || type == 'boolean' || val == null) { - return `${val}`; +export class EdgeData { + static __wrap(ptr) { + const obj = Object.create(EdgeData.prototype); + obj.__wbg_ptr = ptr; + EdgeDataFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; } - if (type == 'string') { - return `"${val}"`; + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EdgeDataFinalization.unregister(this); + return ptr; } - if (type == 'symbol') { - const description = val.description; - if (description == null) { - return 'Symbol'; - } else { - return `Symbol(${description})`; - } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_edgedata_free(ptr, 0); } - if (type == 'function') { - const name = val.name; - if (typeof name == 'string' && name.length > 0) { - return `Function(${name})`; - } else { - return 'Function'; + /** + * @returns {string} + */ + get edge_source() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.edgedata_edge_source(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = '['; - if (length > 0) { - debug += debugString(val[0]); - } - for(let i = 1; i < length; i++) { - debug += ', ' + debugString(val[i]); + /** + * @returns {string} + */ + get edge_type() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.edgedata_edge_type(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } - debug += ']'; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches && builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); } - if (className == 'Object') { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; try { - return 'Object(' + JSON.stringify(val) + ')'; - } catch (_) { - return 'Object'; + const ret = wasm.edgedata_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; + /** + * @returns {boolean} + */ + get explicit() { + const ret = wasm.__wbg_get_edgedata_explicit(this.__wbg_ptr); + return ret !== 0; } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; -} -/** - * @returns {NoteGraph} - */ -export function create_graph() { - const ret = wasm.create_graph(); - return NoteGraph.__wrap(ret); -} - -function getArrayJsValueFromWasm0(ptr, len) { - ptr = ptr >>> 0; - const mem = getDataViewMemory0(); - const result = []; - for (let i = ptr; i < ptr + 4 * len; i += 4) { - result.push(wasm.__wbindgen_export_2.get(mem.getUint32(i, true))); - } - wasm.__externref_drop_slice(ptr, len); - return result; -} - -function passArrayJsValueToWasm0(array, malloc) { - const ptr = malloc(array.length * 4, 4) >>> 0; - for (let i = 0; i < array.length; i++) { - const add = addToExternrefTable0(array[i]); - getDataViewMemory0().setUint32(ptr + 4 * i, add, true); - } - WASM_VECTOR_LEN = array.length; - return ptr; -} - -function _assertClass(instance, klass) { - if (!(instance instanceof klass)) { - throw new Error(`expected instance of ${klass.name}`); - } -} - -function takeFromExternrefTable0(idx) { - const value = wasm.__wbindgen_export_2.get(idx); - wasm.__externref_table_dealloc(idx); - return value; -} -/** - * @param {string} field - * @param {boolean} reverse - * @returns {EdgeSorter} - */ -export function create_edge_sorter(field, reverse) { - const ptr0 = passStringToWasm0(field, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.create_edge_sorter(ptr0, len0, reverse); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); + /** + * @returns {number} + */ + get round() { + const ret = wasm.__wbg_get_edgedata_round(this.__wbg_ptr); + return ret; } - return EdgeSorter.__wrap(ret[0]); -} - -/** - * @param {NoteGraph} graph - * @param {TraversalData[]} traversal_data - * @param {EdgeSorter} sorter - * @returns {TraversalData[]} - */ -export function sort_traversal_data(graph, traversal_data, sorter) { - _assertClass(graph, NoteGraph); - const ptr0 = passArrayJsValueToWasm0(traversal_data, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - _assertClass(sorter, EdgeSorter); - const ret = wasm.sort_traversal_data(graph.__wbg_ptr, ptr0, len0, sorter.__wbg_ptr); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); + /** + * @param {boolean} arg0 + */ + set explicit(arg0) { + wasm.__wbg_set_edgedata_explicit(this.__wbg_ptr, arg0); } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; -} - -/** - * @param {NoteGraph} graph - * @param {EdgeStruct[]} edges - * @param {EdgeSorter} sorter - * @returns {EdgeStruct[]} - */ -export function sort_edges(graph, edges, sorter) { - _assertClass(graph, NoteGraph); - const ptr0 = passArrayJsValueToWasm0(edges, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - _assertClass(sorter, EdgeSorter); - const ret = wasm.sort_edges(graph.__wbg_ptr, ptr0, len0, sorter.__wbg_ptr); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); + /** + * @param {number} arg0 + */ + set round(arg0) { + wasm.__wbg_set_edgedata_round(this.__wbg_ptr, arg0); } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; } +if (Symbol.dispose) EdgeData.prototype[Symbol.dispose] = EdgeData.prototype.free; -let cachedUint32ArrayMemory0 = null; - -function getUint32ArrayMemory0() { - if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { - cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); +export class EdgeList { + static __wrap(ptr) { + const obj = Object.create(EdgeList.prototype); + obj.__wbg_ptr = ptr; + EdgeListFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; } - return cachedUint32ArrayMemory0; -} - -function getArrayU32FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); -} - -function passArray32ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 4, 4) >>> 0; - getUint32ArrayMemory0().set(arg, ptr / 4); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -const AddEdgeGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_addedgegraphupdate_free(ptr >>> 0, 1)); - -export class AddEdgeGraphUpdate { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; - AddEdgeGraphUpdateFinalization.unregister(this); + EdgeListFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); - wasm.__wbg_addedgegraphupdate_free(ptr, 0); + wasm.__wbg_edgelist_free(ptr, 0); } /** - * @param {BatchGraphUpdate} batch + * @returns {EdgeStruct | undefined} */ - add_to_batch(batch) { - const ptr = this.__destroy_into_raw(); - _assertClass(batch, BatchGraphUpdate); - wasm.addedgegraphupdate_add_to_batch(ptr, batch.__wbg_ptr); + first() { + const ret = wasm.edgelist_first(this.__wbg_ptr); + return ret === 0 ? undefined : EdgeStruct.__wrap(ret); } /** - * @param {GCEdgeData} data + * Returns a clone of the edges. + * @returns {EdgeStruct[]} */ - constructor(data) { - _assertClass(data, GCEdgeData); - var ptr0 = data.__destroy_into_raw(); - const ret = wasm.addedgegraphupdate_new(ptr0); - this.__wbg_ptr = ret >>> 0; - AddEdgeGraphUpdateFinalization.register(this, this.__wbg_ptr, this); - return this; + get_edges() { + const ret = wasm.edgelist_get_edges(this.__wbg_ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } -} - -const AddNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_addnotegraphupdate_free(ptr >>> 0, 1)); - -export class AddNoteGraphUpdate { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - AddNoteGraphUpdateFinalization.unregister(this); - return ptr; + /** + * Returns a sorted clone of the edges. + * @param {NoteGraph} graph + * @param {EdgeSorter} sorter + * @returns {EdgeStruct[]} + */ + get_sorted_edges(graph, sorter) { + _assertClass(graph, NoteGraph); + _assertClass(sorter, EdgeSorter); + const ret = wasm.edgelist_get_sorted_edges(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_addnotegraphupdate_free(ptr, 0); + /** + * @returns {GroupedEdgeList} + */ + group_by_type() { + const ret = wasm.edgelist_group_by_type(this.__wbg_ptr); + return GroupedEdgeList.__wrap(ret); } /** - * @param {BatchGraphUpdate} batch + * @returns {EdgeStruct | undefined} */ - add_to_batch(batch) { - const ptr = this.__destroy_into_raw(); - _assertClass(batch, BatchGraphUpdate); - wasm.addnotegraphupdate_add_to_batch(ptr, batch.__wbg_ptr); + last() { + const ret = wasm.edgelist_last(this.__wbg_ptr); + return ret === 0 ? undefined : EdgeStruct.__wrap(ret); } /** - * @param {GCNodeData} data + * @returns {string} */ - constructor(data) { - _assertClass(data, GCNodeData); - var ptr0 = data.__destroy_into_raw(); - const ret = wasm.addnotegraphupdate_new(ptr0); - this.__wbg_ptr = ret >>> 0; - AddNoteGraphUpdateFinalization.register(this, this.__wbg_ptr, this); - return this; + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.edgelist_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * Consumes the [EdgeList] and returns the edges as a Vec (or array for + * JS). + * @returns {EdgeStruct[]} + */ + to_array() { + const ptr = this.__destroy_into_raw(); + const ret = wasm.edgelist_to_array(ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } } +if (Symbol.dispose) EdgeList.prototype[Symbol.dispose] = EdgeList.prototype.free; -const BatchGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_batchgraphupdate_free(ptr >>> 0, 1)); - -export class BatchGraphUpdate { - +export class EdgeSorter { + static __wrap(ptr) { + const obj = Object.create(EdgeSorter.prototype); + obj.__wbg_ptr = ptr; + EdgeSorterFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; - BatchGraphUpdateFinalization.unregister(this); + EdgeSorterFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); - wasm.__wbg_batchgraphupdate_free(ptr, 0); - } - constructor() { - const ret = wasm.batchgraphupdate_new(); - this.__wbg_ptr = ret >>> 0; - BatchGraphUpdateFinalization.register(this, this.__wbg_ptr, this); - return this; + wasm.__wbg_edgesorter_free(ptr, 0); } } +if (Symbol.dispose) EdgeSorter.prototype[Symbol.dispose] = EdgeSorter.prototype.free; -const EdgeDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_edgedata_free(ptr >>> 0, 1)); - -export class EdgeData { - +export class EdgeStruct { static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(EdgeData.prototype); + const obj = Object.create(EdgeStruct.prototype); obj.__wbg_ptr = ptr; - EdgeDataFinalization.register(obj, obj.__wbg_ptr, obj); + EdgeStructFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - + static __unwrap(jsValue) { + if (!(jsValue instanceof EdgeStruct)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; - EdgeDataFinalization.unregister(this); + EdgeStructFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); - wasm.__wbg_edgedata_free(ptr, 0); - } - /** - * @returns {boolean} - */ - get explicit() { - const ret = wasm.__wbg_get_edgedata_explicit(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {boolean} arg0 - */ - set explicit(arg0) { - wasm.__wbg_set_edgedata_explicit(this.__wbg_ptr, arg0); + wasm.__wbg_edgestruct_free(ptr, 0); } /** - * @returns {number} + * @param {NoteGraph} graph + * @returns {EdgeData} */ - get round() { - const ret = wasm.__wbg_get_edgedata_round(this.__wbg_ptr); - return ret; + edge_data(graph) { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_edge_data(this.__wbg_ptr, graph.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return EdgeData.__wrap(ret[0]); } /** - * @param {number} arg0 + * @param {NoteGraph} graph + * @returns {string} */ - set round(arg0) { - wasm.__wbg_set_edgedata_round(this.__wbg_ptr, arg0); + edge_source(graph) { + let deferred2_0; + let deferred2_1; + try { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_edge_source(this.__wbg_ptr, graph.__wbg_ptr); + var ptr1 = ret[0]; + var len1 = ret[1]; + if (ret[3]) { + ptr1 = 0; len1 = 0; + throw takeFromExternrefTable0(ret[2]); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } } /** * @returns {string} @@ -443,7 +359,7 @@ export class EdgeData { let deferred1_0; let deferred1_1; try { - const ret = wasm.edgedata_edge_type(this.__wbg_ptr); + const ret = wasm.edgestruct_edge_type(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -452,208 +368,136 @@ export class EdgeData { } } /** - * @returns {string} + * @param {NoteGraph} graph + * @returns {boolean} */ - get edge_source() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.edgedata_edge_source(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + explicit(graph) { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_explicit(this.__wbg_ptr, graph.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } + return ret[0] !== 0; } /** + * @param {NoteGraph} graph + * @param {string[]} attributes * @returns {string} */ - toString() { - let deferred1_0; - let deferred1_1; + get_attribute_label(graph, attributes) { + let deferred3_0; + let deferred3_1; try { - const ret = wasm.edgedata_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); + _assertClass(graph, NoteGraph); + const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.edgestruct_get_attribute_label(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); + var ptr2 = ret[0]; + var len2 = ret[1]; + if (ret[3]) { + ptr2 = 0; len2 = 0; + throw takeFromExternrefTable0(ret[2]); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); } } -} - -const EdgeListFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_edgelist_free(ptr >>> 0, 1)); - -export class EdgeList { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(EdgeList.prototype); - obj.__wbg_ptr = ptr; - EdgeListFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - EdgeListFinalization.unregister(this); - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_edgelist_free(ptr, 0); - } /** - * @returns {GroupedEdgeList} + * @returns {boolean} */ - group_by_type() { - const ret = wasm.edgelist_group_by_type(this.__wbg_ptr); - return GroupedEdgeList.__wrap(ret); + is_self_loop() { + const ret = wasm.edgestruct_is_self_loop(this.__wbg_ptr); + return ret !== 0; } /** - * @returns {string} + * @param {NoteGraph} graph + * @param {string[] | null} [edge_types] + * @returns {boolean} */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.edgelist_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + matches_edge_filter(graph, edge_types) { + _assertClass(graph, NoteGraph); + var ptr0 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + const ret = wasm.edgestruct_matches_edge_filter(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } + return ret[0] !== 0; } /** - * Returns a sorted clone of the edges. * @param {NoteGraph} graph - * @param {EdgeSorter} sorter - * @returns {EdgeStruct[]} + * @returns {number} */ - get_sorted_edges(graph, sorter) { + round(graph) { _assertClass(graph, NoteGraph); - _assertClass(sorter, EdgeSorter); - const ret = wasm.edgelist_get_sorted_edges(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); + const ret = wasm.edgestruct_round(this.__wbg_ptr, graph.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); } - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; + return ret[0]; } /** - * @returns {EdgeStruct | undefined} + * @param {NoteGraph} graph + * @returns {NodeData} */ - last() { - const ret = wasm.edgelist_last(this.__wbg_ptr); - return ret === 0 ? undefined : EdgeStruct.__wrap(ret); + source_data(graph) { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_source_data(this.__wbg_ptr, graph.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return NodeData.__wrap(ret[0]); } /** - * @returns {EdgeStruct | undefined} + * @param {NoteGraph} graph + * @returns {string} */ - first() { - const ret = wasm.edgelist_first(this.__wbg_ptr); - return ret === 0 ? undefined : EdgeStruct.__wrap(ret); + source_path(graph) { + let deferred2_0; + let deferred2_1; + try { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_source_path(this.__wbg_ptr, graph.__wbg_ptr); + var ptr1 = ret[0]; + var len1 = ret[1]; + if (ret[3]) { + ptr1 = 0; len1 = 0; + throw takeFromExternrefTable0(ret[2]); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } } /** - * Consumes the [EdgeList] and returns the edges as a Vec (or array for - * JS). - * @returns {EdgeStruct[]} + * @param {NoteGraph} graph + * @returns {boolean} */ - to_array() { - const ptr = this.__destroy_into_raw(); - const ret = wasm.edgelist_to_array(ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; + source_resolved(graph) { + _assertClass(graph, NoteGraph); + const ret = wasm.edgestruct_source_resolved(this.__wbg_ptr, graph.__wbg_ptr); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return ret[0] !== 0; } /** - * Returns a clone of the edges. - * @returns {EdgeStruct[]} + * @param {NoteGraph} graph + * @param {NodeStringifyOptions} options + * @returns {string} */ - get_edges() { - const ret = wasm.edgelist_get_edges(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } -} - -const EdgeSorterFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_edgesorter_free(ptr >>> 0, 1)); - -export class EdgeSorter { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(EdgeSorter.prototype); - obj.__wbg_ptr = ptr; - EdgeSorterFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - EdgeSorterFinalization.unregister(this); - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_edgesorter_free(ptr, 0); - } -} - -const EdgeStructFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_edgestruct_free(ptr >>> 0, 1)); - -export class EdgeStruct { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(EdgeStruct.prototype); - obj.__wbg_ptr = ptr; - EdgeStructFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - - static __unwrap(jsValue) { - if (!(jsValue instanceof EdgeStruct)) { - return 0; - } - return jsValue.__destroy_into_raw(); - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - EdgeStructFinalization.unregister(this); - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_edgestruct_free(ptr, 0); - } - /** - * @param {NoteGraph} graph - * @returns {string} - */ - edge_source(graph) { + stringify_source(graph, options) { let deferred2_0; let deferred2_1; try { _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_edge_source(this.__wbg_ptr, graph.__wbg_ptr); + _assertClass(options, NodeStringifyOptions); + const ret = wasm.edgestruct_stringify_source(this.__wbg_ptr, graph.__wbg_ptr, options.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { @@ -669,26 +513,16 @@ export class EdgeStruct { } /** * @param {NoteGraph} graph - * @returns {NodeData} - */ - source_data(graph) { - _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_source_data(this.__wbg_ptr, graph.__wbg_ptr); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return NodeData.__wrap(ret[0]); - } - /** - * @param {NoteGraph} graph + * @param {NodeStringifyOptions} options * @returns {string} */ - source_path(graph) { + stringify_target(graph, options) { let deferred2_0; let deferred2_1; try { _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_source_path(this.__wbg_ptr, graph.__wbg_ptr); + _assertClass(options, NodeStringifyOptions); + const ret = wasm.edgestruct_stringify_target(this.__wbg_ptr, graph.__wbg_ptr, options.__wbg_ptr); var ptr1 = ret[0]; var len1 = ret[1]; if (ret[3]) { @@ -737,25 +571,6 @@ export class EdgeStruct { wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } - /** - * @returns {boolean} - */ - is_self_loop() { - const ret = wasm.edgestruct_is_self_loop(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {NoteGraph} graph - * @returns {boolean} - */ - source_resolved(graph) { - _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_source_resolved(this.__wbg_ptr, graph.__wbg_ptr); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return ret[0] !== 0; - } /** * @param {NoteGraph} graph * @returns {boolean} @@ -783,55 +598,31 @@ export class EdgeStruct { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } - /** - * @param {NoteGraph} graph - * @param {NodeStringifyOptions} options - * @returns {string} - */ - stringify_source(graph, options) { - let deferred2_0; - let deferred2_1; - try { - _assertClass(graph, NoteGraph); - _assertClass(options, NodeStringifyOptions); - const ret = wasm.edgestruct_stringify_source(this.__wbg_ptr, graph.__wbg_ptr, options.__wbg_ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); - } +} +if (Symbol.dispose) EdgeStruct.prototype[Symbol.dispose] = EdgeStruct.prototype.free; + +export class FlatTraversalData { + static __wrap(ptr) { + const obj = Object.create(FlatTraversalData.prototype); + obj.__wbg_ptr = ptr; + FlatTraversalDataFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; } - /** - * @param {NoteGraph} graph - * @param {NodeStringifyOptions} options - * @returns {string} - */ - stringify_target(graph, options) { - let deferred2_0; - let deferred2_1; - try { - _assertClass(graph, NoteGraph); - _assertClass(options, NodeStringifyOptions); - const ret = wasm.edgestruct_stringify_target(this.__wbg_ptr, graph.__wbg_ptr, options.__wbg_ptr); - var ptr1 = ret[0]; - var len1 = ret[1]; - if (ret[3]) { - ptr1 = 0; len1 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred2_0 = ptr1; - deferred2_1 = len1; - return getStringFromWasm0(ptr1, len1); - } finally { - wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + static __unwrap(jsValue) { + if (!(jsValue instanceof FlatTraversalData)) { + return 0; } + return jsValue.__destroy_into_raw(); + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + FlatTraversalDataFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_flattraversaldata_free(ptr, 0); } /** * @param {NoteGraph} graph @@ -845,7 +636,7 @@ export class EdgeStruct { _assertClass(graph, NoteGraph); const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; - const ret = wasm.edgestruct_get_attribute_label(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); + const ret = wasm.flattraversaldata_get_attribute_label(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); var ptr2 = ret[0]; var len2 = ret[1]; if (ret[3]) { @@ -861,111 +652,77 @@ export class EdgeStruct { } /** * @param {NoteGraph} graph - * @param {string[] | null} [edge_types] - * @returns {boolean} + * @param {NodeStringifyOptions} str_opt + * @param {string[]} attributes + * @returns {any} */ - matches_edge_filter(graph, edge_types) { + to_js_rendering_obj(graph, str_opt, attributes) { _assertClass(graph, NoteGraph); - var ptr0 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); - var len0 = WASM_VECTOR_LEN; - const ret = wasm.edgestruct_matches_edge_filter(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); + _assertClass(str_opt, NodeStringifyOptions); + const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.flattraversaldata_to_js_rendering_obj(this.__wbg_ptr, graph.__wbg_ptr, str_opt.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } - return ret[0] !== 0; + return takeFromExternrefTable0(ret[0]); } /** - * @param {NoteGraph} graph + * the children of the node + * @returns {Uint32Array} + */ + get children() { + const ret = wasm.__wbg_get_flattraversaldata_children(this.__wbg_ptr); + var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; + } + /** + * the depth of the node in the traversal * @returns {number} */ - round(graph) { - _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_round(this.__wbg_ptr, graph.__wbg_ptr); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return ret[0]; + get depth() { + const ret = wasm.__wbg_get_flattraversaldata_depth(this.__wbg_ptr); + return ret >>> 0; } /** - * @param {NoteGraph} graph - * @returns {boolean} + * the edge struct that was traversed + * @returns {EdgeStruct} */ - explicit(graph) { - _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_explicit(this.__wbg_ptr, graph.__wbg_ptr); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return ret[0] !== 0; + get edge() { + const ret = wasm.__wbg_get_flattraversaldata_edge(this.__wbg_ptr); + return EdgeStruct.__wrap(ret); } /** - * @param {NoteGraph} graph - * @returns {EdgeData} + * @returns {boolean} */ - edge_data(graph) { - _assertClass(graph, NoteGraph); - const ret = wasm.edgestruct_edge_data(this.__wbg_ptr, graph.__wbg_ptr); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return EdgeData.__wrap(ret[0]); + get has_cut_of_children() { + const ret = wasm.__wbg_get_flattraversaldata_has_cut_of_children(this.__wbg_ptr); + return ret !== 0; } /** - * @returns {string} + * the number of total children of the node, so also children of children + * @returns {number} */ - get edge_type() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.edgestruct_edge_type(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } + get number_of_children() { + const ret = wasm.__wbg_get_flattraversaldata_number_of_children(this.__wbg_ptr); + return ret >>> 0; } -} - -const FlatTraversalDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_flattraversaldata_free(ptr >>> 0, 1)); - -export class FlatTraversalData { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FlatTraversalData.prototype); - obj.__wbg_ptr = ptr; - FlatTraversalDataFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - - static __unwrap(jsValue) { - if (!(jsValue instanceof FlatTraversalData)) { - return 0; - } - return jsValue.__destroy_into_raw(); - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - FlatTraversalDataFinalization.unregister(this); - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_flattraversaldata_free(ptr, 0); + /** + * the children of the node + * @param {Uint32Array} arg0 + */ + set children(arg0) { + const ptr0 = passArray32ToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_flattraversaldata_children(this.__wbg_ptr, ptr0, len0); } /** - * the edge struct that was traversed - * @returns {EdgeStruct} + * the depth of the node in the traversal + * @param {number} arg0 */ - get edge() { - const ret = wasm.__wbg_get_flattraversaldata_edge(this.__wbg_ptr); - return EdgeStruct.__wrap(ret); + set depth(arg0) { + wasm.__wbg_set_flattraversaldata_depth(this.__wbg_ptr, arg0); } /** * the edge struct that was traversed @@ -977,27 +734,10 @@ export class FlatTraversalData { wasm.__wbg_set_flattraversaldata_edge(this.__wbg_ptr, ptr0); } /** - * the depth of the node in the traversal - * @returns {number} - */ - get depth() { - const ret = wasm.__wbg_get_flattraversaldata_depth(this.__wbg_ptr); - return ret >>> 0; - } - /** - * the depth of the node in the traversal - * @param {number} arg0 - */ - set depth(arg0) { - wasm.__wbg_set_flattraversaldata_depth(this.__wbg_ptr, arg0); - } - /** - * the number of total children of the node, so also children of children - * @returns {number} + * @param {boolean} arg0 */ - get number_of_children() { - const ret = wasm.__wbg_get_flattraversaldata_number_of_children(this.__wbg_ptr); - return ret >>> 0; + set has_cut_of_children(arg0) { + wasm.__wbg_set_flattraversaldata_has_cut_of_children(this.__wbg_ptr, arg0); } /** * the number of total children of the node, so also children of children @@ -1006,163 +746,140 @@ export class FlatTraversalData { set number_of_children(arg0) { wasm.__wbg_set_flattraversaldata_number_of_children(this.__wbg_ptr, arg0); } +} +if (Symbol.dispose) FlatTraversalData.prototype[Symbol.dispose] = FlatTraversalData.prototype.free; + +export class FlatTraversalResult { + static __wrap(ptr) { + const obj = Object.create(FlatTraversalResult.prototype); + obj.__wbg_ptr = ptr; + FlatTraversalResultFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + FlatTraversalResultFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_flattraversalresult_free(ptr, 0); + } /** - * the children of the node - * @returns {Uint32Array} + * @param {number} index + * @returns {Uint32Array | undefined} */ - get children() { - const ret = wasm.__wbg_get_flattraversaldata_children(this.__wbg_ptr); - var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + children_at_index(index) { + const ret = wasm.flattraversalresult_children_at_index(this.__wbg_ptr, index); + let v1; + if (ret[0] !== 0) { + v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + } return v1; } /** - * the children of the node - * @param {Uint32Array} arg0 + * @param {number} index + * @returns {FlatTraversalData | undefined} */ - set children(arg0) { - const ptr0 = passArray32ToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_flattraversaldata_children(this.__wbg_ptr, ptr0, len0); + data_at_index(index) { + const ret = wasm.flattraversalresult_data_at_index(this.__wbg_ptr, index); + return ret === 0 ? undefined : FlatTraversalData.__wrap(ret); } /** * @returns {boolean} */ - get has_cut_of_children() { - const ret = wasm.__wbg_get_flattraversaldata_has_cut_of_children(this.__wbg_ptr); + is_empty() { + const ret = wasm.flattraversalresult_is_empty(this.__wbg_ptr); return ret !== 0; } /** - * @param {boolean} arg0 - */ - set has_cut_of_children(arg0) { - wasm.__wbg_set_flattraversaldata_has_cut_of_children(this.__wbg_ptr, arg0); - } - /** - * @param {NoteGraph} graph - * @param {string[]} attributes - * @returns {string} - */ - get_attribute_label(graph, attributes) { - let deferred3_0; - let deferred3_1; - try { - _assertClass(graph, NoteGraph); - const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.flattraversaldata_get_attribute_label(this.__wbg_ptr, graph.__wbg_ptr, ptr0, len0); - var ptr2 = ret[0]; - var len2 = ret[1]; - if (ret[3]) { - ptr2 = 0; len2 = 0; - throw takeFromExternrefTable0(ret[2]); - } - deferred3_0 = ptr2; - deferred3_1 = len2; - return getStringFromWasm0(ptr2, len2); - } finally { - wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); - } - } - /** + * @param {number} index * @param {NoteGraph} graph * @param {NodeStringifyOptions} str_opt * @param {string[]} attributes * @returns {any} */ - to_js_rendering_obj(graph, str_opt, attributes) { + rendering_obj_at_index(index, graph, str_opt, attributes) { _assertClass(graph, NoteGraph); _assertClass(str_opt, NodeStringifyOptions); const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; - const ret = wasm.flattraversaldata_to_js_rendering_obj(this.__wbg_ptr, graph.__wbg_ptr, str_opt.__wbg_ptr, ptr0, len0); + const ret = wasm.flattraversalresult_rendering_obj_at_index(this.__wbg_ptr, index, graph.__wbg_ptr, str_opt.__wbg_ptr, ptr0, len0); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } return takeFromExternrefTable0(ret[0]); } -} - -const FlatTraversalResultFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_flattraversalresult_free(ptr >>> 0, 1)); - -export class FlatTraversalResult { - - static __wrap(ptr) { - ptr = ptr >>> 0; - const obj = Object.create(FlatTraversalResult.prototype); - obj.__wbg_ptr = ptr; - FlatTraversalResultFinalization.register(obj, obj.__wbg_ptr, obj); - return obj; - } - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - FlatTraversalResultFinalization.unregister(this); - return ptr; + /** + * Sorts the flat traversal data with a given edge sorter. + * This is not as efficient as sorting the traversal data before flattening + * it, but it's still a lot better than sorting then re-flatten. + * @param {NoteGraph} graph + * @param {EdgeSorter} sorter + */ + sort(graph, sorter) { + _assertClass(graph, NoteGraph); + _assertClass(sorter, EdgeSorter); + const ret = wasm.flattraversalresult_sort(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); + } } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_flattraversalresult_free(ptr, 0); + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.flattraversalresult_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } } /** * @returns {FlatTraversalData[]} */ get data() { const ret = wasm.__wbg_get_flattraversalresult_data(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } /** - * @param {FlatTraversalData[]} arg0 - */ - set data(arg0) { - const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_flattraversalresult_data(this.__wbg_ptr, ptr0, len0); - } - /** - * @returns {number} + * @returns {Uint32Array} */ - get node_count() { - const ret = wasm.__wbg_get_flattraversalresult_node_count(this.__wbg_ptr); - return ret >>> 0; + get entry_nodes() { + const ret = wasm.__wbg_get_flattraversalresult_entry_nodes(this.__wbg_ptr); + var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } /** - * @param {number} arg0 + * @returns {boolean} */ - set node_count(arg0) { - wasm.__wbg_set_flattraversalresult_node_count(this.__wbg_ptr, arg0); + get hit_depth_limit() { + const ret = wasm.__wbg_get_flattraversalresult_hit_depth_limit(this.__wbg_ptr); + return ret !== 0; } /** * @returns {number} */ get max_depth() { - const ret = wasm.__wbg_get_flattraversaldata_number_of_children(this.__wbg_ptr); + const ret = wasm.__wbg_get_flattraversalresult_max_depth(this.__wbg_ptr); return ret >>> 0; } /** - * @param {number} arg0 - */ - set max_depth(arg0) { - wasm.__wbg_set_flattraversaldata_number_of_children(this.__wbg_ptr, arg0); - } - /** - * @returns {boolean} - */ - get hit_depth_limit() { - const ret = wasm.__wbg_get_flattraversalresult_hit_depth_limit(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {boolean} arg0 + * @returns {number} */ - set hit_depth_limit(arg0) { - wasm.__wbg_set_flattraversalresult_hit_depth_limit(this.__wbg_ptr, arg0); + get node_count() { + const ret = wasm.__wbg_get_flattraversalresult_node_count(this.__wbg_ptr); + return ret >>> 0; } /** * @returns {bigint} @@ -1172,19 +889,12 @@ export class FlatTraversalResult { return BigInt.asUintN(64, ret); } /** - * @param {bigint} arg0 + * @param {FlatTraversalData[]} arg0 */ - set traversal_time(arg0) { - wasm.__wbg_set_flattraversalresult_traversal_time(this.__wbg_ptr, arg0); - } - /** - * @returns {Uint32Array} - */ - get entry_nodes() { - const ret = wasm.__wbg_get_flattraversalresult_entry_nodes(this.__wbg_ptr); - var v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; + set data(arg0) { + const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_flattraversalresult_data(this.__wbg_ptr, ptr0, len0); } /** * @param {Uint32Array} arg0 @@ -1195,103 +905,45 @@ export class FlatTraversalResult { wasm.__wbg_set_flattraversalresult_entry_nodes(this.__wbg_ptr, ptr0, len0); } /** - * @param {number} index - * @returns {FlatTraversalData | undefined} - */ - data_at_index(index) { - const ret = wasm.flattraversalresult_data_at_index(this.__wbg_ptr, index); - return ret === 0 ? undefined : FlatTraversalData.__wrap(ret); - } - /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.flattraversalresult_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @param {number} index - * @returns {Uint32Array | undefined} + * @param {boolean} arg0 */ - children_at_index(index) { - const ret = wasm.flattraversalresult_children_at_index(this.__wbg_ptr, index); - let v1; - if (ret[0] !== 0) { - v1 = getArrayU32FromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - } - return v1; + set hit_depth_limit(arg0) { + wasm.__wbg_set_flattraversalresult_hit_depth_limit(this.__wbg_ptr, arg0); } /** - * @param {number} index - * @param {NoteGraph} graph - * @param {NodeStringifyOptions} str_opt - * @param {string[]} attributes - * @returns {any} + * @param {number} arg0 */ - rendering_obj_at_index(index, graph, str_opt, attributes) { - _assertClass(graph, NoteGraph); - _assertClass(str_opt, NodeStringifyOptions); - const ptr0 = passArrayJsValueToWasm0(attributes, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.flattraversalresult_rendering_obj_at_index(this.__wbg_ptr, index, graph.__wbg_ptr, str_opt.__wbg_ptr, ptr0, len0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return takeFromExternrefTable0(ret[0]); + set max_depth(arg0) { + wasm.__wbg_set_flattraversalresult_max_depth(this.__wbg_ptr, arg0); } /** - * Sorts the flat traversal data with a given edge sorter. - * This is not as efficient as sorting the traversal data before flattening - * it, but it's still a lot better than sorting then re-flatten. - * @param {NoteGraph} graph - * @param {EdgeSorter} sorter + * @param {number} arg0 */ - sort(graph, sorter) { - _assertClass(graph, NoteGraph); - _assertClass(sorter, EdgeSorter); - const ret = wasm.flattraversalresult_sort(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } + set node_count(arg0) { + wasm.__wbg_set_flattraversalresult_node_count(this.__wbg_ptr, arg0); } /** - * @returns {boolean} + * @param {bigint} arg0 */ - is_empty() { - const ret = wasm.flattraversalresult_is_empty(this.__wbg_ptr); - return ret !== 0; + set traversal_time(arg0) { + wasm.__wbg_set_flattraversalresult_traversal_time(this.__wbg_ptr, arg0); } } - -const GCEdgeDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_gcedgedata_free(ptr >>> 0, 1)); +if (Symbol.dispose) FlatTraversalResult.prototype[Symbol.dispose] = FlatTraversalResult.prototype.free; export class GCEdgeData { - static __unwrap(jsValue) { if (!(jsValue instanceof GCEdgeData)) { return 0; } return jsValue.__destroy_into_raw(); } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; GCEdgeDataFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_gcedgedata_free(ptr, 0); @@ -1314,11 +966,11 @@ export class GCEdgeData { /** * @returns {string} */ - toString() { + get edge_type() { let deferred1_0; let deferred1_1; try { - const ret = wasm.gcedgedata_toString(this.__wbg_ptr); + const ret = wasm.gcedgedata_edge_type(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -1342,7 +994,7 @@ export class GCEdgeData { const ptr3 = passStringToWasm0(edge_source, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len3 = WASM_VECTOR_LEN; const ret = wasm.gcedgedata_new(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; GCEdgeDataFinalization.register(this, this.__wbg_ptr, this); return this; } @@ -1379,11 +1031,11 @@ export class GCEdgeData { /** * @returns {string} */ - get edge_type() { + toString() { let deferred1_0; let deferred1_1; try { - const ret = wasm.gcedgedata_edge_type(this.__wbg_ptr); + const ret = wasm.gcedgedata_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -1392,46 +1044,25 @@ export class GCEdgeData { } } } - -const GCNodeDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_gcnodedata_free(ptr >>> 0, 1)); +if (Symbol.dispose) GCEdgeData.prototype[Symbol.dispose] = GCEdgeData.prototype.free; export class GCNodeData { - static __unwrap(jsValue) { if (!(jsValue instanceof GCNodeData)) { return 0; } return jsValue.__destroy_into_raw(); } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; GCNodeDataFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_gcnodedata_free(ptr, 0); } - /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.gcnodedata_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } /** * @param {string} path * @param {string[]} aliases @@ -1445,53 +1076,62 @@ export class GCNodeData { const ptr1 = passArrayJsValueToWasm0(aliases, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.gcnodedata_new(ptr0, len0, ptr1, len1, resolved, ignore_in_edges, ignore_out_edges); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; GCNodeDataFinalization.register(this, this.__wbg_ptr, this); return this; } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.gcnodedata_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } } +if (Symbol.dispose) GCNodeData.prototype[Symbol.dispose] = GCNodeData.prototype.free; -const GroupedEdgeListFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_groupededgelist_free(ptr >>> 0, 1)); /** * A edge list that is grouped by edge type. */ export class GroupedEdgeList { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(GroupedEdgeList.prototype); obj.__wbg_ptr = ptr; GroupedEdgeListFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; GroupedEdgeListFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_groupededgelist_free(ptr, 0); } /** - * @returns {string} + * @param {string} edge_type + * @returns {EdgeStruct[] | undefined} */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.groupededgelist_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + get_edges(edge_type) { + const ptr0 = passStringToWasm0(edge_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.groupededgelist_get_edges(this.__wbg_ptr, ptr0, len0); + let v2; + if (ret[0] !== 0) { + v2 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); } + return v2; } /** * @param {string} edge_type @@ -1510,49 +1150,42 @@ export class GroupedEdgeList { } let v2; if (ret[0] !== 0) { - v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + v2 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); } return v2; } /** - * @param {string} edge_type - * @returns {EdgeStruct[] | undefined} + * @returns {string} */ - get_edges(edge_type) { - const ptr0 = passStringToWasm0(edge_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.groupededgelist_get_edges(this.__wbg_ptr, ptr0, len0); - let v2; - if (ret[0] !== 0) { - v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.groupededgelist_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } - return v2; } } - -const MermaidGraphDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_mermaidgraphdata_free(ptr >>> 0, 1)); +if (Symbol.dispose) GroupedEdgeList.prototype[Symbol.dispose] = GroupedEdgeList.prototype.free; export class MermaidGraphData { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(MermaidGraphData.prototype); obj.__wbg_ptr = ptr; MermaidGraphDataFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; MermaidGraphDataFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_mermaidgraphdata_free(ptr, 0); @@ -1572,27 +1205,6 @@ export class MermaidGraphData { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } - /** - * @param {string} arg0 - */ - set mermaid(arg0) { - const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_mermaidgraphdata_mermaid(this.__wbg_ptr, ptr0, len0); - } - /** - * @returns {bigint} - */ - get traversal_time() { - const ret = wasm.__wbg_get_mermaidgraphdata_traversal_time(this.__wbg_ptr); - return BigInt.asUintN(64, ret); - } - /** - * @param {bigint} arg0 - */ - set traversal_time(arg0) { - wasm.__wbg_set_mermaidgraphdata_traversal_time(this.__wbg_ptr, arg0); - } /** * @returns {bigint} */ @@ -1601,10 +1213,11 @@ export class MermaidGraphData { return BigInt.asUintN(64, ret); } /** - * @param {bigint} arg0 + * @returns {bigint} */ - set total_time(arg0) { - wasm.__wbg_set_mermaidgraphdata_total_time(this.__wbg_ptr, arg0); + get traversal_time() { + const ret = wasm.__wbg_get_mermaidgraphdata_traversal_time(this.__wbg_ptr); + return BigInt.asUintN(64, ret); } /** * @returns {string} @@ -1621,53 +1234,53 @@ export class MermaidGraphData { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } + /** + * @param {string} arg0 + */ + set mermaid(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_mermaidgraphdata_mermaid(this.__wbg_ptr, ptr0, len0); + } + /** + * @param {bigint} arg0 + */ + set total_time(arg0) { + wasm.__wbg_set_mermaidgraphdata_total_time(this.__wbg_ptr, arg0); + } + /** + * @param {bigint} arg0 + */ + set traversal_time(arg0) { + wasm.__wbg_set_mermaidgraphdata_traversal_time(this.__wbg_ptr, arg0); + } } - -const MermaidGraphOptionsFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_mermaidgraphoptions_free(ptr >>> 0, 1)); +if (Symbol.dispose) MermaidGraphData.prototype[Symbol.dispose] = MermaidGraphData.prototype.free; export class MermaidGraphOptions { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; MermaidGraphOptionsFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_mermaidgraphoptions_free(ptr, 0); } /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.mermaidgraphoptions_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @param {string | null | undefined} active_node - * @param {string} init_line - * @param {string} chart_type - * @param {string} direction - * @param {boolean} collapse_opposing_edges - * @param {string[]} edge_label_attributes - * @param {EdgeSorter | null | undefined} edge_sorter - * @param {Function | null | undefined} node_label_fn - * @param {boolean} link_nodes - * @param {boolean} show_arrow_points - * @param {string[]} field_arrow_keys - * @param {string[]} field_arrow_values + * @param {string | null | undefined} active_node + * @param {string} init_line + * @param {string} chart_type + * @param {string} direction + * @param {boolean} collapse_opposing_edges + * @param {string[]} edge_label_attributes + * @param {EdgeSorter | null | undefined} edge_sorter + * @param {Function | null | undefined} node_label_fn + * @param {boolean} link_nodes + * @param {boolean} show_arrow_points + * @param {string[]} field_arrow_keys + * @param {string[]} field_arrow_values */ constructor(active_node, init_line, chart_type, direction, collapse_opposing_edges, edge_label_attributes, edge_sorter, node_label_fn, link_nodes, show_arrow_points, field_arrow_keys, field_arrow_values) { var ptr0 = isLikeNone(active_node) ? 0 : passStringToWasm0(active_node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); @@ -1690,90 +1303,54 @@ export class MermaidGraphOptions { const ptr7 = passArrayJsValueToWasm0(field_arrow_values, wasm.__wbindgen_malloc); const len7 = WASM_VECTOR_LEN; const ret = wasm.mermaidgraphoptions_new(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3, collapse_opposing_edges, ptr4, len4, ptr5, isLikeNone(node_label_fn) ? 0 : addToExternrefTable0(node_label_fn), link_nodes, show_arrow_points, ptr6, len6, ptr7, len7); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; MermaidGraphOptionsFinalization.register(this, this.__wbg_ptr, this); return this; } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.mermaidgraphoptions_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } } - -const NodeDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_nodedata_free(ptr >>> 0, 1)); +if (Symbol.dispose) MermaidGraphOptions.prototype[Symbol.dispose] = MermaidGraphOptions.prototype.free; export class NodeData { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(NodeData.prototype); obj.__wbg_ptr = ptr; NodeDataFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; NodeDataFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_nodedata_free(ptr, 0); } - /** - * @returns {string} - */ - get path() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.__wbg_get_nodedata_path(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @param {string} arg0 - */ - set path(arg0) { - const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_nodedata_path(this.__wbg_ptr, ptr0, len0); - } /** * @returns {string[]} */ get aliases() { const ret = wasm.__wbg_get_nodedata_aliases(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } - /** - * @param {string[]} arg0 - */ - set aliases(arg0) { - const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_nodedata_aliases(this.__wbg_ptr, ptr0, len0); - } - /** - * @returns {boolean} - */ - get resolved() { - const ret = wasm.__wbg_get_nodedata_resolved(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {boolean} arg0 - */ - set resolved(arg0) { - wasm.__wbg_set_nodedata_resolved(this.__wbg_ptr, arg0); - } /** * @returns {boolean} */ @@ -1781,12 +1358,6 @@ export class NodeData { const ret = wasm.__wbg_get_nodedata_ignore_in_edges(this.__wbg_ptr); return ret !== 0; } - /** - * @param {boolean} arg0 - */ - set ignore_in_edges(arg0) { - wasm.__wbg_set_nodedata_ignore_in_edges(this.__wbg_ptr, arg0); - } /** * @returns {boolean} */ @@ -1794,20 +1365,14 @@ export class NodeData { const ret = wasm.__wbg_get_nodedata_ignore_out_edges(this.__wbg_ptr); return ret !== 0; } - /** - * @param {boolean} arg0 - */ - set ignore_out_edges(arg0) { - wasm.__wbg_set_nodedata_ignore_out_edges(this.__wbg_ptr, arg0); - } /** * @returns {string} */ - toString() { + get path() { let deferred1_0; let deferred1_1; try { - const ret = wasm.nodedata_toString(this.__wbg_ptr); + const ret = wasm.__wbg_get_nodedata_path(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -1815,6 +1380,13 @@ export class NodeData { wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } + /** + * @returns {boolean} + */ + get resolved() { + const ret = wasm.__wbg_get_nodedata_resolved(this.__wbg_ptr); + return ret !== 0; + } /** * @param {string} path * @param {string[]} aliases @@ -1828,25 +1400,69 @@ export class NodeData { const ptr1 = passArrayJsValueToWasm0(aliases, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.nodedata_new(ptr0, len0, ptr1, len1, resolved, ignore_in_edges, ignore_out_edges); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; NodeDataFinalization.register(this, this.__wbg_ptr, this); return this; } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.nodedata_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * @param {string[]} arg0 + */ + set aliases(arg0) { + const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_nodedata_aliases(this.__wbg_ptr, ptr0, len0); + } + /** + * @param {boolean} arg0 + */ + set ignore_in_edges(arg0) { + wasm.__wbg_set_nodedata_ignore_in_edges(this.__wbg_ptr, arg0); + } + /** + * @param {boolean} arg0 + */ + set ignore_out_edges(arg0) { + wasm.__wbg_set_nodedata_ignore_out_edges(this.__wbg_ptr, arg0); + } + /** + * @param {string} arg0 + */ + set path(arg0) { + const ptr0 = passStringToWasm0(arg0, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_nodedata_path(this.__wbg_ptr, ptr0, len0); + } + /** + * @param {boolean} arg0 + */ + set resolved(arg0) { + wasm.__wbg_set_nodedata_resolved(this.__wbg_ptr, arg0); + } } - -const NodeStringifyOptionsFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_nodestringifyoptions_free(ptr >>> 0, 1)); +if (Symbol.dispose) NodeData.prototype[Symbol.dispose] = NodeData.prototype.free; export class NodeStringifyOptions { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; NodeStringifyOptionsFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_nodestringifyoptions_free(ptr, 0); @@ -1861,7 +1477,7 @@ export class NodeStringifyOptions { var ptr0 = isLikeNone(trim_basename_delimiter) ? 0 : passStringToWasm0(trim_basename_delimiter, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; const ret = wasm.nodestringifyoptions_new(extension, folder, alias, ptr0, len0); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; NodeStringifyOptionsFinalization.register(this, this.__wbg_ptr, this); return this; } @@ -1883,10 +1499,8 @@ export class NodeStringifyOptions { } } } +if (Symbol.dispose) NodeStringifyOptions.prototype[Symbol.dispose] = NodeStringifyOptions.prototype.free; -const NoteGraphFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_notegraph_free(ptr >>> 0, 1)); /** * A graph that stores notes and their relationships. * @@ -1897,68 +1511,38 @@ const NoteGraphFinalization = (typeof FinalizationRegistry === 'undefined') * present in the graph. */ export class NoteGraph { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(NoteGraph.prototype); obj.__wbg_ptr = ptr; NoteGraphFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; NoteGraphFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_notegraph_free(ptr, 0); } /** - * Runs a recursive traversal of the graph. - * @param {TraversalOptions} options - * @returns {TraversalResult} - */ - rec_traverse(options) { - _assertClass(options, TraversalOptions); - var ptr0 = options.__destroy_into_raw(); - const ret = wasm.notegraph_rec_traverse(this.__wbg_ptr, ptr0); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return TraversalResult.__wrap(ret[0]); - } - /** - * Runs a recursive traversal of the graph and post-processes the result. - * The post-processed result is more efficient to work with from - * JavaScript. - * @param {TraversalOptions} options - * @param {TraversalPostprocessOptions} postprocess_options - * @returns {FlatTraversalResult} + * Applies a batch update to the graph. + * Throws an error if the update fails, and leave the graph in an + * inconsistent state. + * + * TODO: some security against errors leaving the graph in an inconsistent + * state. Maybe safely clear the entire graph. + * @param {BatchGraphUpdate} update */ - rec_traverse_and_process(options, postprocess_options) { - _assertClass(options, TraversalOptions); - var ptr0 = options.__destroy_into_raw(); - _assertClass(postprocess_options, TraversalPostprocessOptions); - var ptr1 = postprocess_options.__destroy_into_raw(); - const ret = wasm.notegraph_rec_traverse_and_process(this.__wbg_ptr, ptr0, ptr1); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); + apply_update(update) { + _assertClass(update, BatchGraphUpdate); + var ptr0 = update.__destroy_into_raw(); + const ret = wasm.notegraph_apply_update(this.__wbg_ptr, ptr0); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); } - return FlatTraversalResult.__wrap(ret[0]); - } - /** - * Returns all edge types that are present in the graph. - * @returns {string[]} - */ - edge_types() { - const ret = wasm.notegraph_edge_types(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; } /** * Builds the graph from a list of nodes, edges, and transitive rules. @@ -1980,55 +1564,58 @@ export class NoteGraph { } } /** - * Applies a batch update to the graph. - * Throws an error if the update fails, and leave the graph in an - * inconsistent state. - * - * TODO: some security against errors leaving the graph in an inconsistent - * state. Maybe safely clear the entire graph. - * @param {BatchGraphUpdate} update + * Returns all edge types that are present in the graph. + * @returns {string[]} */ - apply_update(update) { - _assertClass(update, BatchGraphUpdate); - var ptr0 = update.__destroy_into_raw(); - const ret = wasm.notegraph_apply_update(this.__wbg_ptr, ptr0); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } + edge_types() { + const ret = wasm.notegraph_edge_types(this.__wbg_ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } /** - * Iterate all edges in the graph and call the provided function with each - * [EdgeData]. - * @param {Function} f + * @param {TraversalOptions} traversal_options + * @param {MermaidGraphOptions} diagram_options + * @returns {MermaidGraphData} */ - iterate_edges(f) { - wasm.notegraph_iterate_edges(this.__wbg_ptr, f); - } - /** - * Iterate all nodes in the graph and call the provided function with each - * [NodeData]. - * @param {Function} f - */ - iterate_nodes(f) { - wasm.notegraph_iterate_nodes(this.__wbg_ptr, f); + generate_mermaid_graph(traversal_options, diagram_options) { + _assertClass(traversal_options, TraversalOptions); + var ptr0 = traversal_options.__destroy_into_raw(); + _assertClass(diagram_options, MermaidGraphOptions); + var ptr1 = diagram_options.__destroy_into_raw(); + const ret = wasm.notegraph_generate_mermaid_graph(this.__wbg_ptr, ptr0, ptr1); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return MermaidGraphData.__wrap(ret[0]); } /** - * Notify the JS side that the graph has been updated. + * Get all outgoing edges from a node, filtered and grouped by edge type. + * @param {string} node + * @param {string[] | null} [edge_types] + * @returns {GroupedEdgeList} */ - notify_update() { - wasm.notegraph_notify_update(this.__wbg_ptr); + get_filtered_grouped_outgoing_edges(node, edge_types) { + const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.notegraph_get_filtered_grouped_outgoing_edges(this.__wbg_ptr, ptr0, len0, ptr1, len1); + return GroupedEdgeList.__wrap(ret); } /** - * Checks if a node is resolved. - * Returns false if the node is not found. + * Get all outgoing edges from a node, filtered by edge type. * @param {string} node - * @returns {boolean} + * @param {string[] | null} [edge_types] + * @returns {EdgeList} */ - is_node_resolved(node) { + get_filtered_outgoing_edges(node, edge_types) { const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; - const ret = wasm.notegraph_is_node_resolved(this.__wbg_ptr, ptr0, len0); - return ret !== 0; + var ptr1 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); + var len1 = WASM_VECTOR_LEN; + const ret = wasm.notegraph_get_filtered_outgoing_edges(this.__wbg_ptr, ptr0, len0, ptr1, len1); + return EdgeList.__wrap(ret); } /** * Get all incoming edges to a node. @@ -2041,6 +1628,16 @@ export class NoteGraph { const ret = wasm.notegraph_get_incoming_edges(this.__wbg_ptr, ptr0, len0); return EdgeList.__wrap(ret); } + /** + * @param {string} node + * @returns {NodeData | undefined} + */ + get_node(node) { + const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.notegraph_get_node(this.__wbg_ptr, ptr0, len0); + return ret === 0 ? undefined : NodeData.__wrap(ret); + } /** * Get all outgoing edges from a node. * @param {string} node @@ -2053,40 +1650,43 @@ export class NoteGraph { return EdgeList.__wrap(ret); } /** - * Set the update callback. - * This will be called after every update to the graph. - * @param {Function} callback - */ - set_update_callback(callback) { - wasm.notegraph_set_update_callback(this.__wbg_ptr, callback); - } - /** - * Get all outgoing edges from a node, filtered by edge type. + * Checks if a node exists in the graph. * @param {string} node - * @param {string[] | null} [edge_types] - * @returns {EdgeList} + * @returns {boolean} */ - get_filtered_outgoing_edges(node, edge_types) { + has_node(node) { const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; - var ptr1 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); - var len1 = WASM_VECTOR_LEN; - const ret = wasm.notegraph_get_filtered_outgoing_edges(this.__wbg_ptr, ptr0, len0, ptr1, len1); - return EdgeList.__wrap(ret); + const ret = wasm.notegraph_has_node(this.__wbg_ptr, ptr0, len0); + return ret !== 0; } /** - * Get all outgoing edges from a node, filtered and grouped by edge type. + * Checks if a node is resolved. + * Returns false if the node is not found. * @param {string} node - * @param {string[] | null} [edge_types] - * @returns {GroupedEdgeList} + * @returns {boolean} */ - get_filtered_grouped_outgoing_edges(node, edge_types) { + is_node_resolved(node) { const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; - var ptr1 = isLikeNone(edge_types) ? 0 : passArrayJsValueToWasm0(edge_types, wasm.__wbindgen_malloc); - var len1 = WASM_VECTOR_LEN; - const ret = wasm.notegraph_get_filtered_grouped_outgoing_edges(this.__wbg_ptr, ptr0, len0, ptr1, len1); - return GroupedEdgeList.__wrap(ret); + const ret = wasm.notegraph_is_node_resolved(this.__wbg_ptr, ptr0, len0); + return ret !== 0; + } + /** + * Iterate all edges in the graph and call the provided function with each + * [EdgeData]. + * @param {Function} f + */ + iterate_edges(f) { + wasm.notegraph_iterate_edges(this.__wbg_ptr, f); + } + /** + * Iterate all nodes in the graph and call the provided function with each + * [NodeData]. + * @param {Function} f + */ + iterate_nodes(f) { + wasm.notegraph_iterate_nodes(this.__wbg_ptr, f); } log() { wasm.notegraph_log(this.__wbg_ptr); @@ -2099,65 +1699,68 @@ export class NoteGraph { return NoteGraph.__wrap(ret); } /** - * @param {string} node - * @returns {NodeData | undefined} + * Notify the JS side that the graph has been updated. */ - get_node(node) { - const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.notegraph_get_node(this.__wbg_ptr, ptr0, len0); - return ret === 0 ? undefined : NodeData.__wrap(ret); + notify_update() { + wasm.notegraph_notify_update(this.__wbg_ptr); } /** - * Checks if a node exists in the graph. - * @param {string} node - * @returns {boolean} + * Runs a recursive traversal of the graph. + * @param {TraversalOptions} options + * @returns {TraversalResult} */ - has_node(node) { - const ptr0 = passStringToWasm0(node, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.notegraph_has_node(this.__wbg_ptr, ptr0, len0); - return ret !== 0; + rec_traverse(options) { + _assertClass(options, TraversalOptions); + var ptr0 = options.__destroy_into_raw(); + const ret = wasm.notegraph_rec_traverse(this.__wbg_ptr, ptr0); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return TraversalResult.__wrap(ret[0]); } /** - * @param {TraversalOptions} traversal_options - * @param {MermaidGraphOptions} diagram_options - * @returns {MermaidGraphData} + * Runs a recursive traversal of the graph and post-processes the result. + * The post-processed result is more efficient to work with from + * JavaScript. + * @param {TraversalOptions} options + * @param {TraversalPostprocessOptions} postprocess_options + * @returns {FlatTraversalResult} */ - generate_mermaid_graph(traversal_options, diagram_options) { - _assertClass(traversal_options, TraversalOptions); - var ptr0 = traversal_options.__destroy_into_raw(); - _assertClass(diagram_options, MermaidGraphOptions); - var ptr1 = diagram_options.__destroy_into_raw(); - const ret = wasm.notegraph_generate_mermaid_graph(this.__wbg_ptr, ptr0, ptr1); + rec_traverse_and_process(options, postprocess_options) { + _assertClass(options, TraversalOptions); + var ptr0 = options.__destroy_into_raw(); + _assertClass(postprocess_options, TraversalPostprocessOptions); + var ptr1 = postprocess_options.__destroy_into_raw(); + const ret = wasm.notegraph_rec_traverse_and_process(this.__wbg_ptr, ptr0, ptr1); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } - return MermaidGraphData.__wrap(ret[0]); + return FlatTraversalResult.__wrap(ret[0]); + } + /** + * Set the update callback. + * This will be called after every update to the graph. + * @param {Function} callback + */ + set_update_callback(callback) { + wasm.notegraph_set_update_callback(this.__wbg_ptr, callback); } } - -const NoteGraphErrorFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_notegrapherror_free(ptr >>> 0, 1)); +if (Symbol.dispose) NoteGraph.prototype[Symbol.dispose] = NoteGraph.prototype.free; export class NoteGraphError { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(NoteGraphError.prototype); obj.__wbg_ptr = ptr; NoteGraphErrorFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; NoteGraphErrorFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_notegrapherror_free(ptr, 0); @@ -2165,11 +1768,11 @@ export class NoteGraphError { /** * @returns {string} */ - toString() { + get message() { let deferred1_0; let deferred1_1; try { - const ret = wasm.notegrapherror_toString(this.__wbg_ptr); + const ret = wasm.notegrapherror_message(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -2184,18 +1787,18 @@ export class NoteGraphError { const ptr0 = passStringToWasm0(message, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.notegrapherror_new(ptr0, len0); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; NoteGraphErrorFinalization.register(this, this.__wbg_ptr, this); return this; } /** * @returns {string} */ - get message() { + toString() { let deferred1_0; let deferred1_1; try { - const ret = wasm.notegrapherror_message(this.__wbg_ptr); + const ret = wasm.notegrapherror_toString(this.__wbg_ptr); deferred1_0 = ret[0]; deferred1_1 = ret[1]; return getStringFromWasm0(ret[0], ret[1]); @@ -2204,28 +1807,21 @@ export class NoteGraphError { } } } - -const PathFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_path_free(ptr >>> 0, 1)); +if (Symbol.dispose) NoteGraphError.prototype[Symbol.dispose] = NoteGraphError.prototype.free; export class Path { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(Path.prototype); obj.__wbg_ptr = ptr; PathFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; PathFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_path_free(ptr, 0); @@ -2235,41 +1831,18 @@ export class Path { */ get edges() { const ret = wasm.__wbg_get_path_edges(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; - } - /** - * @param {EdgeStruct[]} arg0 - */ - set edges(arg0) { - const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_path_edges(this.__wbg_ptr, ptr0, len0); - } - /** - * @returns {EdgeStruct[]} - */ - get reverse_edges() { - const ret = wasm.path_reverse_edges(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } /** - * @returns {string} + * @param {Path} other + * @returns {boolean} */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.path_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } + equals(other) { + _assertClass(other, Path); + const ret = wasm.path_equals(this.__wbg_ptr, other.__wbg_ptr); + return ret !== 0; } /** * @param {NoteGraph} graph @@ -2283,20 +1856,11 @@ export class Path { } let v1; if (ret[0] !== 0) { - v1 = getStringFromWasm0(ret[0], ret[1]).slice(); + v1 = getStringFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 1, 1); } return v1; } - /** - * @param {Path} other - * @returns {boolean} - */ - equals(other) { - _assertClass(other, Path); - const ret = wasm.path_equals(this.__wbg_ptr, other.__wbg_ptr); - return ret !== 0; - } /** * @returns {number} */ @@ -2304,6 +1868,30 @@ export class Path { const ret = wasm.path_length(this.__wbg_ptr); return ret >>> 0; } + /** + * @returns {EdgeStruct[]} + */ + get reverse_edges() { + const ret = wasm.path_reverse_edges(this.__wbg_ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; + } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.path_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } /** * @param {number} limit * @returns {Path} @@ -2312,57 +1900,40 @@ export class Path { const ret = wasm.path_truncate(this.__wbg_ptr, limit); return Path.__wrap(ret); } -} - -const PathListFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_pathlist_free(ptr >>> 0, 1)); - -export class PathList { - + /** + * @param {EdgeStruct[]} arg0 + */ + set edges(arg0) { + const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_path_edges(this.__wbg_ptr, ptr0, len0); + } +} +if (Symbol.dispose) Path.prototype[Symbol.dispose] = Path.prototype.free; + +export class PathList { static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(PathList.prototype); obj.__wbg_ptr = ptr; PathListFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; PathListFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_pathlist_free(ptr, 0); } /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.pathlist_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } - /** - * @param {string} selection - * @returns {PathList} + * @returns {number} */ - select(selection) { - const ptr0 = passStringToWasm0(selection, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.pathlist_select(this.__wbg_ptr, ptr0, len0); - return PathList.__wrap(ret); + max_depth() { + const ret = wasm.pathlist_max_depth(this.__wbg_ptr); + return ret >>> 0; } /** * Cuts off all paths at a given depth, then sorts and deduplicates them. @@ -2376,41 +1947,54 @@ export class PathList { if (ret[3]) { throw takeFromExternrefTable0(ret[2]); } - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } + /** + * @param {string} selection + * @returns {PathList} + */ + select(selection) { + const ptr0 = passStringToWasm0(selection, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.pathlist_select(this.__wbg_ptr, ptr0, len0); + return PathList.__wrap(ret); + } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.pathlist_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } /** * @returns {Path[]} */ to_paths() { const ret = wasm.pathlist_to_paths(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } - /** - * @returns {number} - */ - max_depth() { - const ret = wasm.pathlist_max_depth(this.__wbg_ptr); - return ret >>> 0; - } } - -const RemoveEdgeGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_removeedgegraphupdate_free(ptr >>> 0, 1)); +if (Symbol.dispose) PathList.prototype[Symbol.dispose] = PathList.prototype.free; export class RemoveEdgeGraphUpdate { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; RemoveEdgeGraphUpdateFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_removeedgegraphupdate_free(ptr, 0); @@ -2436,25 +2020,20 @@ export class RemoveEdgeGraphUpdate { const ptr2 = passStringToWasm0(edge_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ret = wasm.removeedgegraphupdate_new(ptr0, len0, ptr1, len1, ptr2, len2); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; RemoveEdgeGraphUpdateFinalization.register(this, this.__wbg_ptr, this); return this; } } - -const RemoveNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_removenotegraphupdate_free(ptr >>> 0, 1)); +if (Symbol.dispose) RemoveEdgeGraphUpdate.prototype[Symbol.dispose] = RemoveEdgeGraphUpdate.prototype.free; export class RemoveNoteGraphUpdate { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; RemoveNoteGraphUpdateFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_removenotegraphupdate_free(ptr, 0); @@ -2474,25 +2053,20 @@ export class RemoveNoteGraphUpdate { const ptr0 = passStringToWasm0(data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.removenotegraphupdate_new(ptr0, len0); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; RemoveNoteGraphUpdateFinalization.register(this, this.__wbg_ptr, this); return this; } } - -const RenameNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_renamenotegraphupdate_free(ptr >>> 0, 1)); +if (Symbol.dispose) RemoveNoteGraphUpdate.prototype[Symbol.dispose] = RemoveNoteGraphUpdate.prototype.free; export class RenameNoteGraphUpdate { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; RenameNoteGraphUpdateFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_renamenotegraphupdate_free(ptr, 0); @@ -2515,51 +2089,30 @@ export class RenameNoteGraphUpdate { const ptr1 = passStringToWasm0(new_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.renamenotegraphupdate_new(ptr0, len0, ptr1, len1); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; RenameNoteGraphUpdateFinalization.register(this, this.__wbg_ptr, this); return this; } } - -const TransitiveGraphRuleFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_transitivegraphrule_free(ptr >>> 0, 1)); +if (Symbol.dispose) RenameNoteGraphUpdate.prototype[Symbol.dispose] = RenameNoteGraphUpdate.prototype.free; export class TransitiveGraphRule { - static __unwrap(jsValue) { if (!(jsValue instanceof TransitiveGraphRule)) { return 0; } return jsValue.__destroy_into_raw(); } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; TransitiveGraphRuleFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_transitivegraphrule_free(ptr, 0); } - /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.transitivegraphrule_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } - } /** * @returns {NoteGraph} */ @@ -2586,25 +2139,35 @@ export class TransitiveGraphRule { const ptr2 = passStringToWasm0(edge_type, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len2 = WASM_VECTOR_LEN; const ret = wasm.transitivegraphrule_new(ptr0, len0, ptr1, len1, ptr2, len2, rounds, can_loop, close_reversed); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; TransitiveGraphRuleFinalization.register(this, this.__wbg_ptr, this); return this; } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.transitivegraphrule_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } } - -const TransitiveRulesGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_transitiverulesgraphupdate_free(ptr >>> 0, 1)); +if (Symbol.dispose) TransitiveGraphRule.prototype[Symbol.dispose] = TransitiveGraphRule.prototype.free; export class TransitiveRulesGraphUpdate { - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; TransitiveRulesGraphUpdateFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_transitiverulesgraphupdate_free(ptr, 0); @@ -2624,100 +2187,78 @@ export class TransitiveRulesGraphUpdate { const ptr0 = passArrayJsValueToWasm0(new_rules, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.transitiverulesgraphupdate_new(ptr0, len0); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; TransitiveRulesGraphUpdateFinalization.register(this, this.__wbg_ptr, this); return this; } } - -const TraversalDataFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_traversaldata_free(ptr >>> 0, 1)); +if (Symbol.dispose) TransitiveRulesGraphUpdate.prototype[Symbol.dispose] = TransitiveRulesGraphUpdate.prototype.free; export class TraversalData { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(TraversalData.prototype); obj.__wbg_ptr = ptr; TraversalDataFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - static __unwrap(jsValue) { if (!(jsValue instanceof TraversalData)) { return 0; } return jsValue.__destroy_into_raw(); } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; TraversalDataFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_traversaldata_free(ptr, 0); } /** - * the edge struct that was traversed - * @returns {EdgeStruct} - */ - get edge() { - const ret = wasm.__wbg_get_flattraversaldata_edge(this.__wbg_ptr); - return EdgeStruct.__wrap(ret); - } - /** - * the edge struct that was traversed - * @param {EdgeStruct} arg0 + * the children of the node + * @returns {TraversalData[]} */ - set edge(arg0) { - _assertClass(arg0, EdgeStruct); - var ptr0 = arg0.__destroy_into_raw(); - wasm.__wbg_set_flattraversaldata_edge(this.__wbg_ptr, ptr0); + get children() { + const ret = wasm.__wbg_get_traversaldata_children(this.__wbg_ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } /** * the depth of the node in the traversal * @returns {number} */ get depth() { - const ret = wasm.__wbg_get_flattraversaldata_depth(this.__wbg_ptr); + const ret = wasm.__wbg_get_traversaldata_depth(this.__wbg_ptr); return ret >>> 0; } /** - * the depth of the node in the traversal - * @param {number} arg0 + * the edge struct that was traversed + * @returns {EdgeStruct} */ - set depth(arg0) { - wasm.__wbg_set_flattraversaldata_depth(this.__wbg_ptr, arg0); + get edge() { + const ret = wasm.__wbg_get_traversaldata_edge(this.__wbg_ptr); + return EdgeStruct.__wrap(ret); } /** - * the number of total children of the node, so also children of children - * @returns {number} + * whether the node has a cut of children due to being at the depth limit + * of a traversal, or similar + * @returns {boolean} */ - get number_of_children() { - const ret = wasm.__wbg_get_flattraversaldata_number_of_children(this.__wbg_ptr); - return ret >>> 0; + get has_cut_of_children() { + const ret = wasm.__wbg_get_traversaldata_has_cut_of_children(this.__wbg_ptr); + return ret !== 0; } /** * the number of total children of the node, so also children of children - * @param {number} arg0 - */ - set number_of_children(arg0) { - wasm.__wbg_set_flattraversaldata_number_of_children(this.__wbg_ptr, arg0); - } - /** - * the children of the node - * @returns {TraversalData[]} + * @returns {number} */ - get children() { - const ret = wasm.__wbg_get_traversaldata_children(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; + get number_of_children() { + const ret = wasm.__wbg_get_traversaldata_number_of_children(this.__wbg_ptr); + return ret >>> 0; } /** * the children of the node @@ -2729,13 +2270,20 @@ export class TraversalData { wasm.__wbg_set_traversaldata_children(this.__wbg_ptr, ptr0, len0); } /** - * whether the node has a cut of children due to being at the depth limit - * of a traversal, or similar - * @returns {boolean} + * the depth of the node in the traversal + * @param {number} arg0 */ - get has_cut_of_children() { - const ret = wasm.__wbg_get_flattraversaldata_has_cut_of_children(this.__wbg_ptr); - return ret !== 0; + set depth(arg0) { + wasm.__wbg_set_traversaldata_depth(this.__wbg_ptr, arg0); + } + /** + * the edge struct that was traversed + * @param {EdgeStruct} arg0 + */ + set edge(arg0) { + _assertClass(arg0, EdgeStruct); + var ptr0 = arg0.__destroy_into_raw(); + wasm.__wbg_set_traversaldata_edge(this.__wbg_ptr, ptr0); } /** * whether the node has a cut of children due to being at the depth limit @@ -2743,34 +2291,14 @@ export class TraversalData { * @param {boolean} arg0 */ set has_cut_of_children(arg0) { - wasm.__wbg_set_flattraversaldata_has_cut_of_children(this.__wbg_ptr, arg0); - } - /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.traversaldata_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } + wasm.__wbg_set_traversaldata_has_cut_of_children(this.__wbg_ptr, arg0); } /** - * @param {NoteGraph} graph - * @param {EdgeSorter} sorter + * the number of total children of the node, so also children of children + * @param {number} arg0 */ - rec_sort_children(graph, sorter) { - _assertClass(graph, NoteGraph); - _assertClass(sorter, EdgeSorter); - const ret = wasm.traversaldata_rec_sort_children(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); - if (ret[1]) { - throw takeFromExternrefTable0(ret[0]); - } + set number_of_children(arg0) { + wasm.__wbg_set_traversaldata_number_of_children(this.__wbg_ptr, arg0); } /** * @param {EdgeStruct} edge @@ -2785,45 +2313,64 @@ export class TraversalData { const ptr1 = passArrayJsValueToWasm0(children, wasm.__wbindgen_malloc); const len1 = WASM_VECTOR_LEN; const ret = wasm.traversaldata_new(ptr0, depth, number_of_children, ptr1, len1, has_cut_of_children); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; TraversalDataFinalization.register(this, this.__wbg_ptr, this); return this; } -} - -const TraversalOptionsFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_traversaloptions_free(ptr >>> 0, 1)); - -export class TraversalOptions { - - __destroy_into_raw() { - const ptr = this.__wbg_ptr; - this.__wbg_ptr = 0; - TraversalOptionsFinalization.unregister(this); - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_traversaloptions_free(ptr, 0); - } /** - * @returns {string[]} + * @param {NoteGraph} graph + * @param {EdgeSorter} sorter */ - get entry_nodes() { - const ret = wasm.__wbg_get_traversaloptions_entry_nodes(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v1; + rec_sort_children(graph, sorter) { + _assertClass(graph, NoteGraph); + _assertClass(sorter, EdgeSorter); + const ret = wasm.traversaldata_rec_sort_children(this.__wbg_ptr, graph.__wbg_ptr, sorter.__wbg_ptr); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); + } } /** - * @param {string[]} arg0 + * @returns {string} */ - set entry_nodes(arg0) { - const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_traversaloptions_entry_nodes(this.__wbg_ptr, ptr0, len0); + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.traversaldata_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } +} +if (Symbol.dispose) TraversalData.prototype[Symbol.dispose] = TraversalData.prototype.free; + +export class TraversalOptions { + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + TraversalOptionsFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_traversaloptions_free(ptr, 0); + } + /** + * When set, only edges whose target node path is in this set will be + * traversed. Used for the `dataview-from` codeblock filter. + * @returns {string[] | undefined} + */ + get dataview_from_paths() { + const ret = wasm.__wbg_get_traversaloptions_dataview_from_paths(this.__wbg_ptr); + let v1; + if (ret[0] !== 0) { + v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + } + return v1; } /** * if this is None, all edge types will be traversed @@ -2833,19 +2380,19 @@ export class TraversalOptions { const ret = wasm.__wbg_get_traversaloptions_edge_types(this.__wbg_ptr); let v1; if (ret[0] !== 0) { - v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); } return v1; } /** - * if this is None, all edge types will be traversed - * @param {string[] | null} [arg0] + * @returns {string[]} */ - set edge_types(arg0) { - var ptr0 = isLikeNone(arg0) ? 0 : passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - var len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_traversaloptions_edge_types(this.__wbg_ptr, ptr0, len0); + get entry_nodes() { + const ret = wasm.__wbg_get_traversaloptions_entry_nodes(this.__wbg_ptr); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v1; } /** * @returns {number} @@ -2854,12 +2401,6 @@ export class TraversalOptions { const ret = wasm.__wbg_get_traversaloptions_max_depth(this.__wbg_ptr); return ret >>> 0; } - /** - * @param {number} arg0 - */ - set max_depth(arg0) { - wasm.__wbg_set_traversaloptions_max_depth(this.__wbg_ptr, arg0); - } /** * @returns {number} */ @@ -2867,12 +2408,6 @@ export class TraversalOptions { const ret = wasm.__wbg_get_traversaloptions_max_traversal_count(this.__wbg_ptr); return ret >>> 0; } - /** - * @param {number} arg0 - */ - set max_traversal_count(arg0) { - wasm.__wbg_set_traversaloptions_max_traversal_count(this.__wbg_ptr, arg0); - } /** * if true, multiple traversals - one for each edge type - will be * performed and the results will be combined. if false, one traversal @@ -2883,53 +2418,53 @@ export class TraversalOptions { const ret = wasm.__wbg_get_traversaloptions_separate_edges(this.__wbg_ptr); return ret !== 0; } - /** - * if true, multiple traversals - one for each edge type - will be - * performed and the results will be combined. if false, one traversal - * over all edge types will be performed - * @param {boolean} arg0 - */ - set separate_edges(arg0) { - wasm.__wbg_set_traversaloptions_separate_edges(this.__wbg_ptr, arg0); - } /** * When set, only edges whose target node path is in this set will be * traversed. Used for the `dataview-from` codeblock filter. - * @returns {string[] | undefined} + * @param {string[] | null} [arg0] */ - get dataview_from_paths() { - const ret = wasm.__wbg_get_traversaloptions_dataview_from_paths(this.__wbg_ptr); - let v1; - if (ret[0] !== 0) { - v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - } - return v1; + set dataview_from_paths(arg0) { + var ptr0 = isLikeNone(arg0) ? 0 : passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_traversaloptions_dataview_from_paths(this.__wbg_ptr, ptr0, len0); } /** - * When set, only edges whose target node path is in this set will be - * traversed. Used for the `dataview-from` codeblock filter. + * if this is None, all edge types will be traversed * @param {string[] | null} [arg0] */ - set dataview_from_paths(arg0) { + set edge_types(arg0) { var ptr0 = isLikeNone(arg0) ? 0 : passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); var len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_traversaloptions_dataview_from_paths(this.__wbg_ptr, ptr0, len0); + wasm.__wbg_set_traversaloptions_edge_types(this.__wbg_ptr, ptr0, len0); } /** - * @returns {string} + * @param {string[]} arg0 */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.traversaloptions_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } + set entry_nodes(arg0) { + const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_traversaloptions_entry_nodes(this.__wbg_ptr, ptr0, len0); + } + /** + * @param {number} arg0 + */ + set max_depth(arg0) { + wasm.__wbg_set_traversaloptions_max_depth(this.__wbg_ptr, arg0); + } + /** + * @param {number} arg0 + */ + set max_traversal_count(arg0) { + wasm.__wbg_set_traversaloptions_max_traversal_count(this.__wbg_ptr, arg0); + } + /** + * if true, multiple traversals - one for each edge type - will be + * performed and the results will be combined. if false, one traversal + * over all edge types will be performed + * @param {boolean} arg0 + */ + set separate_edges(arg0) { + wasm.__wbg_set_traversaloptions_separate_edges(this.__wbg_ptr, arg0); } /** * @param {string[]} entry_nodes @@ -2947,37 +2482,52 @@ export class TraversalOptions { var ptr2 = isLikeNone(dataview_from_paths) ? 0 : passArrayJsValueToWasm0(dataview_from_paths, wasm.__wbindgen_malloc); var len2 = WASM_VECTOR_LEN; const ret = wasm.traversaloptions_new(ptr0, len0, ptr1, len1, max_depth, max_traversal_count, separate_edges, ptr2, len2); - this.__wbg_ptr = ret >>> 0; + this.__wbg_ptr = ret; TraversalOptionsFinalization.register(this, this.__wbg_ptr, this); return this; } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.traversaloptions_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } } - -const TraversalPostprocessOptionsFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_traversalpostprocessoptions_free(ptr >>> 0, 1)); +if (Symbol.dispose) TraversalOptions.prototype[Symbol.dispose] = TraversalOptions.prototype.free; export class TraversalPostprocessOptions { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(TraversalPostprocessOptions.prototype); obj.__wbg_ptr = ptr; TraversalPostprocessOptionsFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; TraversalPostprocessOptionsFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_traversalpostprocessoptions_free(ptr, 0); } + /** + * @returns {boolean} + */ + get flatten() { + const ret = wasm.__wbg_get_traversalpostprocessoptions_flatten(this.__wbg_ptr); + return ret !== 0; + } /** * @returns {EdgeSorter | undefined} */ @@ -2985,6 +2535,12 @@ export class TraversalPostprocessOptions { const ret = wasm.__wbg_get_traversalpostprocessoptions_sorter(this.__wbg_ptr); return ret === 0 ? undefined : EdgeSorter.__wrap(ret); } + /** + * @param {boolean} arg0 + */ + set flatten(arg0) { + wasm.__wbg_set_traversalpostprocessoptions_flatten(this.__wbg_ptr, arg0); + } /** * @param {EdgeSorter | null} [arg0] */ @@ -2997,25 +2553,15 @@ export class TraversalPostprocessOptions { wasm.__wbg_set_traversalpostprocessoptions_sorter(this.__wbg_ptr, ptr0); } /** - * @returns {boolean} - */ - get flatten() { - const ret = wasm.__wbg_get_traversalpostprocessoptions_flatten(this.__wbg_ptr); - return ret !== 0; - } - /** - * @param {boolean} arg0 - */ - set flatten(arg0) { - wasm.__wbg_set_traversalpostprocessoptions_flatten(this.__wbg_ptr, arg0); - } - /** + * @param {EdgeSorter} sorter * @param {boolean} flatten - * @returns {TraversalPostprocessOptions} */ - static without_sorter(flatten) { - const ret = wasm.traversalpostprocessoptions_without_sorter(flatten); - return TraversalPostprocessOptions.__wrap(ret); + constructor(sorter, flatten) { + _assertClass(sorter, EdgeSorter); + const ret = wasm.traversalpostprocessoptions_new(sorter.__wbg_ptr, flatten); + this.__wbg_ptr = ret; + TraversalPostprocessOptionsFinalization.register(this, this.__wbg_ptr, this); + return this; } /** * @returns {string} @@ -3033,39 +2579,29 @@ export class TraversalPostprocessOptions { } } /** - * @param {EdgeSorter} sorter * @param {boolean} flatten + * @returns {TraversalPostprocessOptions} */ - constructor(sorter, flatten) { - _assertClass(sorter, EdgeSorter); - const ret = wasm.traversalpostprocessoptions_new(sorter.__wbg_ptr, flatten); - this.__wbg_ptr = ret >>> 0; - TraversalPostprocessOptionsFinalization.register(this, this.__wbg_ptr, this); - return this; + static without_sorter(flatten) { + const ret = wasm.traversalpostprocessoptions_without_sorter(flatten); + return TraversalPostprocessOptions.__wrap(ret); } } - -const TraversalResultFinalization = (typeof FinalizationRegistry === 'undefined') - ? { register: () => {}, unregister: () => {} } - : new FinalizationRegistry(ptr => wasm.__wbg_traversalresult_free(ptr >>> 0, 1)); +if (Symbol.dispose) TraversalPostprocessOptions.prototype[Symbol.dispose] = TraversalPostprocessOptions.prototype.free; export class TraversalResult { - static __wrap(ptr) { - ptr = ptr >>> 0; const obj = Object.create(TraversalResult.prototype); obj.__wbg_ptr = ptr; TraversalResultFinalization.register(obj, obj.__wbg_ptr, obj); return obj; } - __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; TraversalResultFinalization.unregister(this); return ptr; } - free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_traversalresult_free(ptr, 0); @@ -3075,17 +2611,23 @@ export class TraversalResult { */ get data() { const ret = wasm.__wbg_get_traversalresult_data(this.__wbg_ptr); - var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + var v1 = getArrayJsValueFromWasm0(ret[0], ret[1]); wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); return v1; } /** - * @param {TraversalData[]} arg0 + * @returns {boolean} */ - set data(arg0) { - const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_traversalresult_data(this.__wbg_ptr, ptr0, len0); + get hit_depth_limit() { + const ret = wasm.__wbg_get_traversalresult_hit_depth_limit(this.__wbg_ptr); + return ret !== 0; + } + /** + * @returns {number} + */ + get max_depth() { + const ret = wasm.__wbg_get_traversalresult_max_depth(this.__wbg_ptr); + return ret >>> 0; } /** * @returns {number} @@ -3095,17 +2637,25 @@ export class TraversalResult { return ret >>> 0; } /** - * @param {number} arg0 + * @returns {bigint} */ - set node_count(arg0) { - wasm.__wbg_set_traversalresult_node_count(this.__wbg_ptr, arg0); + get traversal_time() { + const ret = wasm.__wbg_get_traversalresult_traversal_time(this.__wbg_ptr); + return BigInt.asUintN(64, ret); } /** - * @returns {number} + * @param {TraversalData[]} arg0 */ - get max_depth() { - const ret = wasm.__wbg_get_traversalresult_max_depth(this.__wbg_ptr); - return ret >>> 0; + set data(arg0) { + const ptr0 = passArrayJsValueToWasm0(arg0, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.__wbg_set_traversalresult_data(this.__wbg_ptr, ptr0, len0); + } + /** + * @param {boolean} arg0 + */ + set hit_depth_limit(arg0) { + wasm.__wbg_set_traversalresult_hit_depth_limit(this.__wbg_ptr, arg0); } /** * @param {number} arg0 @@ -3113,298 +2663,661 @@ export class TraversalResult { set max_depth(arg0) { wasm.__wbg_set_traversalresult_max_depth(this.__wbg_ptr, arg0); } - /** - * @returns {boolean} - */ - get hit_depth_limit() { - const ret = wasm.__wbg_get_traversalresult_hit_depth_limit(this.__wbg_ptr); - return ret !== 0; + /** + * @param {number} arg0 + */ + set node_count(arg0) { + wasm.__wbg_set_traversalresult_node_count(this.__wbg_ptr, arg0); + } + /** + * @param {bigint} arg0 + */ + set traversal_time(arg0) { + wasm.__wbg_set_traversalresult_traversal_time(this.__wbg_ptr, arg0); + } + /** + * @returns {boolean} + */ + is_empty() { + const ret = wasm.traversalresult_is_empty(this.__wbg_ptr); + return ret !== 0; + } + /** + * @param {TraversalData[]} data + * @param {bigint} traversal_time + */ + constructor(data, traversal_time) { + const ptr0 = passArrayJsValueToWasm0(data, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.traversalresult_new(ptr0, len0, traversal_time); + this.__wbg_ptr = ret; + TraversalResultFinalization.register(this, this.__wbg_ptr, this); + return this; + } + /** + * @returns {string} + */ + toString() { + let deferred1_0; + let deferred1_1; + try { + const ret = wasm.traversalresult_toString(this.__wbg_ptr); + deferred1_0 = ret[0]; + deferred1_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); + } + } + /** + * @returns {PathList} + */ + to_paths() { + const ret = wasm.traversalresult_to_paths(this.__wbg_ptr); + return PathList.__wrap(ret); + } +} +if (Symbol.dispose) TraversalResult.prototype[Symbol.dispose] = TraversalResult.prototype.free; + +/** + * @param {string} field + * @param {boolean} reverse + * @returns {EdgeSorter} + */ +export function create_edge_sorter(field, reverse) { + const ptr0 = passStringToWasm0(field, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.create_edge_sorter(ptr0, len0, reverse); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return EdgeSorter.__wrap(ret[0]); +} + +/** + * @returns {NoteGraph} + */ +export function create_graph() { + const ret = wasm.create_graph(); + return NoteGraph.__wrap(ret); +} + +/** + * @param {NoteGraph} graph + * @param {EdgeStruct[]} edges + * @param {EdgeSorter} sorter + * @returns {EdgeStruct[]} + */ +export function sort_edges(graph, edges, sorter) { + _assertClass(graph, NoteGraph); + const ptr0 = passArrayJsValueToWasm0(edges, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(sorter, EdgeSorter); + const ret = wasm.sort_edges(graph.__wbg_ptr, ptr0, len0, sorter.__wbg_ptr); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} + +/** + * @param {NoteGraph} graph + * @param {TraversalData[]} traversal_data + * @param {EdgeSorter} sorter + * @returns {TraversalData[]} + */ +export function sort_traversal_data(graph, traversal_data, sorter) { + _assertClass(graph, NoteGraph); + const ptr0 = passArrayJsValueToWasm0(traversal_data, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(sorter, EdgeSorter); + const ret = wasm.sort_traversal_data(graph.__wbg_ptr, ptr0, len0, sorter.__wbg_ptr); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg___wbindgen_debug_string_4687d8d8c2017d52: function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_is_undefined_8865fb403f8fe9d8: function(arg0) { + const ret = arg0 === undefined; + return ret; + }, + __wbg___wbindgen_string_get_0380ccaa2f57f0d9: function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg___wbindgen_throw_41e9ee4f547fc59a: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_call_187d372bd5fdd4aa: function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.call(arg1, arg2); + return ret; + }, arguments); }, + __wbg_call_6137034ef55c9d0f: function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); + return ret; + }, arguments); }, + __wbg_debug_6af0896b45fef8a9: function(arg0, arg1, arg2) { + arg0.debug(getStringFromWasm0(arg1, arg2)); + }, + __wbg_edgedata_new: function(arg0) { + const ret = EdgeData.__wrap(arg0); + return ret; + }, + __wbg_edgestruct_new: function(arg0) { + const ret = EdgeStruct.__wrap(arg0); + return ret; + }, + __wbg_edgestruct_unwrap: function(arg0) { + const ret = EdgeStruct.__unwrap(arg0); + return ret; + }, + __wbg_error_757e9472f8410341: function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }, + __wbg_error_770d98d9fd68ec75: function(arg0, arg1, arg2) { + arg0.error(getStringFromWasm0(arg1, arg2)); + }, + __wbg_flattraversaldata_new: function(arg0) { + const ret = FlatTraversalData.__wrap(arg0); + return ret; + }, + __wbg_flattraversaldata_unwrap: function(arg0) { + const ret = FlatTraversalData.__unwrap(arg0); + return ret; + }, + __wbg_gcedgedata_unwrap: function(arg0) { + const ret = GCEdgeData.__unwrap(arg0); + return ret; + }, + __wbg_gcnodedata_unwrap: function(arg0) { + const ret = GCNodeData.__unwrap(arg0); + return ret; + }, + __wbg_new_227d7c05414eb861: function() { + const ret = new Error(); + return ret; + }, + __wbg_new_617a8cdb8bb1130e: function() { + const ret = new Object(); + return ret; + }, + __wbg_nodedata_new: function(arg0) { + const ret = NodeData.__wrap(arg0); + return ret; + }, + __wbg_notegrapherror_new: function(arg0) { + const ret = NoteGraphError.__wrap(arg0); + return ret; + }, + __wbg_now_e7c6795a7f81e10f: function(arg0) { + const ret = arg0.now(); + return ret; + }, + __wbg_path_new: function(arg0) { + const ret = Path.__wrap(arg0); + return ret; + }, + __wbg_performance_3fcf6e32a7e1ed0a: function(arg0) { + const ret = arg0.performance; + return ret; + }, + __wbg_set_145a351398b48c65: function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(arg0, arg1, arg2); + return ret; + }, arguments); }, + __wbg_stack_3b0d974bbf31e44f: function(arg0, arg1) { + const ret = arg1.stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, + __wbg_static_accessor_GLOBAL_266715b9d96ba635: function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_GLOBAL_THIS_10fb7dc1ae063179: function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_LOGGER_849a70838e9094f0: function() { + const ret = log; + return ret; + }, + __wbg_static_accessor_SELF_0b583911f537483a: function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_static_accessor_WINDOW_d7f903d1508cbdc4: function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }, + __wbg_transitivegraphrule_unwrap: function(arg0) { + const ret = TransitiveGraphRule.__unwrap(arg0); + return ret; + }, + __wbg_traversaldata_new: function(arg0) { + const ret = TraversalData.__wrap(arg0); + return ret; + }, + __wbg_traversaldata_unwrap: function(arg0) { + const ret = TraversalData.__unwrap(arg0); + return ret; + }, + __wbindgen_generic_0000000000000001: function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }, + __wbindgen_init_externref_table: function() { + const table = wasm.__wbindgen_externrefs; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + }, + }; + return { + __proto__: null, + "./breadcrumbs_graph_wasm_bg.js": import0, + }; +} + +const AddEdgeGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_addedgegraphupdate_free(ptr, 1)); +const AddNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_addnotegraphupdate_free(ptr, 1)); +const BatchGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_batchgraphupdate_free(ptr, 1)); +const EdgeDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_edgedata_free(ptr, 1)); +const EdgeListFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_edgelist_free(ptr, 1)); +const EdgeSorterFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_edgesorter_free(ptr, 1)); +const EdgeStructFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_edgestruct_free(ptr, 1)); +const FlatTraversalDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_flattraversaldata_free(ptr, 1)); +const FlatTraversalResultFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_flattraversalresult_free(ptr, 1)); +const GCEdgeDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_gcedgedata_free(ptr, 1)); +const GCNodeDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_gcnodedata_free(ptr, 1)); +const GroupedEdgeListFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_groupededgelist_free(ptr, 1)); +const MermaidGraphDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_mermaidgraphdata_free(ptr, 1)); +const MermaidGraphOptionsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_mermaidgraphoptions_free(ptr, 1)); +const NodeDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_nodedata_free(ptr, 1)); +const NodeStringifyOptionsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_nodestringifyoptions_free(ptr, 1)); +const NoteGraphFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_notegraph_free(ptr, 1)); +const NoteGraphErrorFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_notegrapherror_free(ptr, 1)); +const PathFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_path_free(ptr, 1)); +const PathListFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_pathlist_free(ptr, 1)); +const RemoveEdgeGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_removeedgegraphupdate_free(ptr, 1)); +const RemoveNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_removenotegraphupdate_free(ptr, 1)); +const RenameNoteGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_renamenotegraphupdate_free(ptr, 1)); +const TransitiveGraphRuleFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_transitivegraphrule_free(ptr, 1)); +const TransitiveRulesGraphUpdateFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_transitiverulesgraphupdate_free(ptr, 1)); +const TraversalDataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_traversaldata_free(ptr, 1)); +const TraversalOptionsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_traversaloptions_free(ptr, 1)); +const TraversalPostprocessOptionsFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_traversalpostprocessoptions_free(ptr, 1)); +const TraversalResultFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_traversalresult_free(ptr, 1)); + +function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_externrefs.set(idx, obj); + return idx; +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getDataViewMemory0(); + const result = []; + for (let i = ptr; i < ptr + 4 * len; i += 4) { + result.push(wasm.__wbindgen_externrefs.get(mem.getUint32(i, true))); + } + wasm.__externref_drop_slice(ptr, len); + return result; +} + +function getArrayU32FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len); +} + +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} + +let cachedUint32ArrayMemory0 = null; +function getUint32ArrayMemory0() { + if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) { + cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer); } - /** - * @param {boolean} arg0 - */ - set hit_depth_limit(arg0) { - wasm.__wbg_set_traversalresult_hit_depth_limit(this.__wbg_ptr, arg0); + return cachedUint32ArrayMemory0; +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); } - /** - * @returns {bigint} - */ - get traversal_time() { - const ret = wasm.__wbg_get_flattraversalresult_traversal_time(this.__wbg_ptr); - return BigInt.asUintN(64, ret); + return cachedUint8ArrayMemory0; +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); } - /** - * @param {bigint} arg0 - */ - set traversal_time(arg0) { - wasm.__wbg_set_flattraversalresult_traversal_time(this.__wbg_ptr, arg0); +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +function passArray32ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 4, 4) >>> 0; + getUint32ArrayMemory0().set(arg, ptr / 4); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + for (let i = 0; i < array.length; i++) { + const add = addToExternrefTable0(array[i]); + getDataViewMemory0().setUint32(ptr + 4 * i, add, true); } - /** - * @returns {string} - */ - toString() { - let deferred1_0; - let deferred1_1; - try { - const ret = wasm.traversalresult_toString(this.__wbg_ptr); - deferred1_0 = ret[0]; - deferred1_1 = ret[1]; - return getStringFromWasm0(ret[0], ret[1]); - } finally { - wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); - } + WASM_VECTOR_LEN = array.length; + return ptr; +} + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; } - /** - * @param {TraversalData[]} data - * @param {bigint} traversal_time - */ - constructor(data, traversal_time) { - const ptr0 = passArrayJsValueToWasm0(data, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.traversalresult_new(ptr0, len0, traversal_time); - this.__wbg_ptr = ret >>> 0; - TraversalResultFinalization.register(this, this.__wbg_ptr, this); - return this; + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; } - /** - * @returns {boolean} - */ - is_empty() { - const ret = wasm.flattraversalresult_is_empty(this.__wbg_ptr); - return ret !== 0; + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; } - /** - * @returns {PathList} - */ - to_paths() { - const ret = wasm.traversalresult_to_paths(this.__wbg_ptr); - return PathList.__wrap(ret); + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_externrefs.get(idx); + wasm.__externref_table_dealloc(idx); + return value; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +const cachedTextEncoder = new TextEncoder(); + +if (!('encodeInto' in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; +} + +let WASM_VECTOR_LEN = 0; + +let wasmModule, wasmInstance, wasm; +function __wbg_finalize_init(instance, module) { + wasmInstance = instance; + wasm = instance.exports; + wasmModule = module; + cachedDataViewMemory0 = null; + cachedUint32ArrayMemory0 = null; + cachedUint8ArrayMemory0 = null; + wasm.__wbindgen_start(); + return wasm; } async function __wbg_load(module, imports) { if (typeof Response === 'function' && module instanceof Response) { + if (!module.ok) { + throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); + } + if (typeof WebAssembly.instantiateStreaming === 'function') { try { return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { + const validResponse = expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - } else { - throw e; - } + } else { throw e; } } } const bytes = await module.arrayBuffer(); return await WebAssembly.instantiate(bytes, imports); - } else { const instance = await WebAssembly.instantiate(module, imports); if (instance instanceof WebAssembly.Instance) { return { instance, module }; - } else { return instance; } } -} -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) { - const ret = arg0.call(arg1); - return ret; - }, arguments) }; - imports.wbg.__wbg_call_7cccdd69e0791ae2 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = arg0.call(arg1, arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_debug_0e292a0dbaeda7f1 = function(arg0, arg1, arg2) { - arg0.debug(getStringFromWasm0(arg1, arg2)); - }; - imports.wbg.__wbg_edgedata_new = function(arg0) { - const ret = EdgeData.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_edgestruct_new = function(arg0) { - const ret = EdgeStruct.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_edgestruct_unwrap = function(arg0) { - const ret = EdgeStruct.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbg_error_3ca53ff4a54cf621 = function(arg0, arg1, arg2) { - arg0.error(getStringFromWasm0(arg1, arg2)); - }; - imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) { - let deferred0_0; - let deferred0_1; - try { - deferred0_0 = arg0; - deferred0_1 = arg1; - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; } - }; - imports.wbg.__wbg_flattraversaldata_new = function(arg0) { - const ret = FlatTraversalData.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_flattraversaldata_unwrap = function(arg0) { - const ret = FlatTraversalData.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbg_gcedgedata_unwrap = function(arg0) { - const ret = GCEdgeData.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbg_gcnodedata_unwrap = function(arg0) { - const ret = GCNodeData.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbg_new_405e22f390576ce2 = function() { - const ret = new Object(); - return ret; - }; - imports.wbg.__wbg_new_8a6f238a6ece86ea = function() { - const ret = new Error(); - return ret; - }; - imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function(arg0, arg1) { - const ret = new Function(getStringFromWasm0(arg0, arg1)); - return ret; - }; - imports.wbg.__wbg_nodedata_new = function(arg0) { - const ret = NodeData.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_notegrapherror_new = function(arg0) { - const ret = NoteGraphError.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_now_2c95c9de01293173 = function(arg0) { - const ret = arg0.now(); - return ret; - }; - imports.wbg.__wbg_path_new = function(arg0) { - const ret = Path.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_performance_7a3ffd0b17f663ad = function(arg0) { - const ret = arg0.performance; - return ret; - }; - imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = Reflect.set(arg0, arg1, arg2); - return ret; - }, arguments) }; - imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) { - const ret = arg1.stack; - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() { - const ret = typeof global === 'undefined' ? null : global; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }; - imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() { - const ret = typeof globalThis === 'undefined' ? null : globalThis; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }; - imports.wbg.__wbg_static_accessor_LOGGER_849a70838e9094f0 = function() { - const ret = log; - return ret; - }; - imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() { - const ret = typeof self === 'undefined' ? null : self; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }; - imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() { - const ret = typeof window === 'undefined' ? null : window; - return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }; - imports.wbg.__wbg_transitivegraphrule_unwrap = function(arg0) { - const ret = TransitiveGraphRule.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbg_traversaldata_new = function(arg0) { - const ret = TraversalData.__wrap(arg0); - return ret; - }; - imports.wbg.__wbg_traversaldata_unwrap = function(arg0) { - const ret = TraversalData.__unwrap(arg0); - return ret; - }; - imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { - const ret = debugString(arg1); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbindgen_init_externref_table = function() { - const table = wasm.__wbindgen_export_2; - const offset = table.grow(4); - table.set(0, undefined); - table.set(offset + 0, undefined); - table.set(offset + 1, null); - table.set(offset + 2, true); - table.set(offset + 3, false); - ; - }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = arg0 === undefined; - return ret; - }; - imports.wbg.__wbindgen_string_get = function(arg0, arg1) { - const obj = arg1; - const ret = typeof(obj) === 'string' ? obj : undefined; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return ret; - }; - imports.wbg.__wbindgen_throw = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - - return imports; -} - -function __wbg_init_memory(imports, memory) { - -} - -function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedDataViewMemory0 = null; - cachedUint32ArrayMemory0 = null; - cachedUint8ArrayMemory0 = null; - - - wasm.__wbindgen_start(); - return wasm; + return false; + } } function initSync(module) { if (wasm !== undefined) return wasm; - if (typeof module !== 'undefined') { + if (module !== undefined) { if (Object.getPrototypeOf(module) === Object.prototype) { ({module} = module) } else { @@ -3413,15 +3326,10 @@ function initSync(module) { } const imports = __wbg_get_imports(); - - __wbg_init_memory(imports); - if (!(module instanceof WebAssembly.Module)) { module = new WebAssembly.Module(module); } - const instance = new WebAssembly.Instance(module, imports); - return __wbg_finalize_init(instance, module); } @@ -3429,7 +3337,7 @@ async function __wbg_init(module_or_path) { if (wasm !== undefined) return wasm; - if (typeof module_or_path !== 'undefined') { + if (module_or_path !== undefined) { if (Object.getPrototypeOf(module_or_path) === Object.prototype) { ({module_or_path} = module_or_path) } else { @@ -3437,7 +3345,7 @@ async function __wbg_init(module_or_path) { } } - if (typeof module_or_path === 'undefined') { + if (module_or_path === undefined) { module_or_path = new URL('breadcrumbs_graph_wasm_bg.wasm', import.meta.url); } const imports = __wbg_get_imports(); @@ -3446,12 +3354,9 @@ async function __wbg_init(module_or_path) { module_or_path = fetch(module_or_path); } - __wbg_init_memory(imports); - const { instance, module } = await __wbg_load(await module_or_path, imports); return __wbg_finalize_init(instance, module); } -export { initSync }; -export default __wbg_init; +export { initSync, __wbg_init as default }; diff --git a/wasm/pkg/breadcrumbs_graph_wasm_bg.wasm b/wasm/pkg/breadcrumbs_graph_wasm_bg.wasm index ac739459a702c7a8eb74130a47ccab1dfc46994f..050c3942a394c20f6f856e95b476018e00b5c578 100644 GIT binary patch literal 334041 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

&(@1<`GF-HF(Ds}#oWMwW0zce0E|~Y6OBT- zct@D2F}mJ(Ug75~Z)^&*&_>W+87h#1i#s z{L3X(Ve}q5apCM=8~+5I!Nl&lx26p3F@kReUlX|WFlEzC*^QqDp~pVdiC2+9RH4b zz9W2u} zWh9ufCXx%@CQc6}H7`8tNjb#8U=t^Vt74C^O-pA4>&CqHjGK3@8HI!%vY`}Gj*797-7_4 zv}{h#3mq`Urs1*GvXULARnSrRS5Uu_Qp>m;sn+dOaywzydEeY~1ywf5s0?_xt4FJ@tV$ zNR^}L+n*c|&Jno0++SaH4-u*lKCnEgL*7a{CPTxE z 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 Vm97g~qF1cVl?y!bArrh>2LKC#%zXd= delta 126535 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 az2?nJ`uE;v-h$;P?EUtA{Hos4n*Rswz3 number; +export const __wbg_addedgegraphupdate_free: (a: number, b: number) => void; +export const __wbg_addnotegraphupdate_free: (a: number, b: number) => void; +export const __wbg_batchgraphupdate_free: (a: number, b: number) => void; +export const __wbg_edgedata_free: (a: number, b: number) => void; +export const __wbg_edgelist_free: (a: number, b: number) => void; +export const __wbg_edgesorter_free: (a: number, b: number) => void; +export const __wbg_edgestruct_free: (a: number, b: number) => void; +export const __wbg_flattraversaldata_free: (a: number, b: number) => void; +export const __wbg_flattraversalresult_free: (a: number, b: number) => void; +export const __wbg_gcedgedata_free: (a: number, b: number) => void; +export const __wbg_gcnodedata_free: (a: number, b: number) => void; +export const __wbg_get_edgedata_explicit: (a: number) => number; +export const __wbg_get_edgedata_round: (a: number) => number; +export const __wbg_get_flattraversaldata_children: (a: number) => [number, number]; +export const __wbg_get_flattraversaldata_depth: (a: number) => number; +export const __wbg_get_flattraversaldata_edge: (a: number) => number; +export const __wbg_get_flattraversaldata_has_cut_of_children: (a: number) => number; +export const __wbg_get_flattraversaldata_number_of_children: (a: number) => number; +export const __wbg_get_flattraversalresult_data: (a: number) => [number, number]; +export const __wbg_get_flattraversalresult_entry_nodes: (a: number) => [number, number]; +export const __wbg_get_flattraversalresult_hit_depth_limit: (a: number) => number; +export const __wbg_get_flattraversalresult_max_depth: (a: number) => number; +export const __wbg_get_flattraversalresult_node_count: (a: number) => number; +export const __wbg_get_flattraversalresult_traversal_time: (a: number) => bigint; +export const __wbg_get_mermaidgraphdata_mermaid: (a: number) => [number, number]; +export const __wbg_get_mermaidgraphdata_total_time: (a: number) => bigint; +export const __wbg_get_mermaidgraphdata_traversal_time: (a: number) => bigint; +export const __wbg_get_nodedata_aliases: (a: number) => [number, number]; +export const __wbg_get_nodedata_ignore_in_edges: (a: number) => number; +export const __wbg_get_nodedata_ignore_out_edges: (a: number) => number; +export const __wbg_get_nodedata_path: (a: number) => [number, number]; +export const __wbg_get_nodedata_resolved: (a: number) => number; export const __wbg_get_path_edges: (a: number) => [number, number]; +export const __wbg_get_traversaldata_children: (a: number) => [number, number]; +export const __wbg_get_traversaldata_depth: (a: number) => number; +export const __wbg_get_traversaldata_edge: (a: number) => number; +export const __wbg_get_traversaldata_has_cut_of_children: (a: number) => number; +export const __wbg_get_traversaldata_number_of_children: (a: number) => number; +export const __wbg_get_traversaloptions_dataview_from_paths: (a: number) => [number, number]; +export const __wbg_get_traversaloptions_edge_types: (a: number) => [number, number]; +export const __wbg_get_traversaloptions_entry_nodes: (a: number) => [number, number]; +export const __wbg_get_traversaloptions_max_depth: (a: number) => number; +export const __wbg_get_traversaloptions_max_traversal_count: (a: number) => number; +export const __wbg_get_traversaloptions_separate_edges: (a: number) => number; +export const __wbg_get_traversalpostprocessoptions_flatten: (a: number) => number; +export const __wbg_get_traversalpostprocessoptions_sorter: (a: number) => number; +export const __wbg_get_traversalresult_data: (a: number) => [number, number]; +export const __wbg_get_traversalresult_hit_depth_limit: (a: number) => number; +export const __wbg_get_traversalresult_max_depth: (a: number) => number; +export const __wbg_get_traversalresult_node_count: (a: number) => number; +export const __wbg_get_traversalresult_traversal_time: (a: number) => bigint; +export const __wbg_groupededgelist_free: (a: number, b: number) => void; +export const __wbg_mermaidgraphdata_free: (a: number, b: number) => void; +export const __wbg_mermaidgraphoptions_free: (a: number, b: number) => void; +export const __wbg_nodedata_free: (a: number, b: number) => void; +export const __wbg_nodestringifyoptions_free: (a: number, b: number) => void; +export const __wbg_notegraph_free: (a: number, b: number) => void; +export const __wbg_notegrapherror_free: (a: number, b: number) => void; export const __wbg_path_free: (a: number, b: number) => void; export const __wbg_pathlist_free: (a: number, b: number) => void; +export const __wbg_removeedgegraphupdate_free: (a: number, b: number) => void; +export const __wbg_removenotegraphupdate_free: (a: number, b: number) => void; +export const __wbg_renamenotegraphupdate_free: (a: number, b: number) => void; +export const __wbg_set_edgedata_explicit: (a: number, b: number) => void; +export const __wbg_set_edgedata_round: (a: number, b: number) => void; +export const __wbg_set_flattraversaldata_children: (a: number, b: number, c: number) => void; +export const __wbg_set_flattraversaldata_depth: (a: number, b: number) => void; +export const __wbg_set_flattraversaldata_edge: (a: number, b: number) => void; +export const __wbg_set_flattraversaldata_has_cut_of_children: (a: number, b: number) => void; +export const __wbg_set_flattraversaldata_number_of_children: (a: number, b: number) => void; +export const __wbg_set_flattraversalresult_data: (a: number, b: number, c: number) => void; +export const __wbg_set_flattraversalresult_entry_nodes: (a: number, b: number, c: number) => void; +export const __wbg_set_flattraversalresult_hit_depth_limit: (a: number, b: number) => void; +export const __wbg_set_flattraversalresult_max_depth: (a: number, b: number) => void; +export const __wbg_set_flattraversalresult_node_count: (a: number, b: number) => void; +export const __wbg_set_flattraversalresult_traversal_time: (a: number, b: bigint) => void; +export const __wbg_set_mermaidgraphdata_mermaid: (a: number, b: number, c: number) => void; +export const __wbg_set_mermaidgraphdata_total_time: (a: number, b: bigint) => void; +export const __wbg_set_mermaidgraphdata_traversal_time: (a: number, b: bigint) => void; +export const __wbg_set_nodedata_aliases: (a: number, b: number, c: number) => void; +export const __wbg_set_nodedata_ignore_in_edges: (a: number, b: number) => void; +export const __wbg_set_nodedata_ignore_out_edges: (a: number, b: number) => void; +export const __wbg_set_nodedata_path: (a: number, b: number, c: number) => void; +export const __wbg_set_nodedata_resolved: (a: number, b: number) => void; export const __wbg_set_path_edges: (a: number, b: number, c: number) => void; -export const path_equals: (a: number, b: number) => number; -export const path_get_first_target: (a: number, b: number) => [number, number, number, number]; -export const path_length: (a: number) => number; -export const path_reverse_edges: (a: number) => [number, number]; -export const path_toString: (a: number) => [number, number]; -export const path_truncate: (a: number, b: number) => number; -export const pathlist_max_depth: (a: number) => number; -export const pathlist_process: (a: number, b: number, c: number) => [number, number, number, number]; -export const pathlist_select: (a: number, b: number, c: number) => number; -export const pathlist_toString: (a: number) => [number, number]; -export const pathlist_to_paths: (a: number) => [number, number]; -export const __wbg_edgestruct_free: (a: number, b: number) => void; +export const __wbg_set_traversaldata_children: (a: number, b: number, c: number) => void; +export const __wbg_set_traversaldata_depth: (a: number, b: number) => void; +export const __wbg_set_traversaldata_edge: (a: number, b: number) => void; +export const __wbg_set_traversaldata_has_cut_of_children: (a: number, b: number) => void; +export const __wbg_set_traversaldata_number_of_children: (a: number, b: number) => void; +export const __wbg_set_traversaloptions_dataview_from_paths: (a: number, b: number, c: number) => void; +export const __wbg_set_traversaloptions_edge_types: (a: number, b: number, c: number) => void; +export const __wbg_set_traversaloptions_entry_nodes: (a: number, b: number, c: number) => void; +export const __wbg_set_traversaloptions_max_depth: (a: number, b: number) => void; +export const __wbg_set_traversaloptions_max_traversal_count: (a: number, b: number) => void; +export const __wbg_set_traversaloptions_separate_edges: (a: number, b: number) => void; +export const __wbg_set_traversalpostprocessoptions_flatten: (a: number, b: number) => void; +export const __wbg_set_traversalpostprocessoptions_sorter: (a: number, b: number) => void; +export const __wbg_set_traversalresult_data: (a: number, b: number, c: number) => void; +export const __wbg_set_traversalresult_hit_depth_limit: (a: number, b: number) => void; +export const __wbg_set_traversalresult_max_depth: (a: number, b: number) => void; +export const __wbg_set_traversalresult_node_count: (a: number, b: number) => void; +export const __wbg_set_traversalresult_traversal_time: (a: number, b: bigint) => void; +export const __wbg_transitivegraphrule_free: (a: number, b: number) => void; +export const __wbg_transitiverulesgraphupdate_free: (a: number, b: number) => void; +export const __wbg_traversaldata_free: (a: number, b: number) => void; +export const __wbg_traversaloptions_free: (a: number, b: number) => void; +export const __wbg_traversalpostprocessoptions_free: (a: number, b: number) => void; +export const __wbg_traversalresult_free: (a: number, b: number) => void; +export const addedgegraphupdate_add_to_batch: (a: number, b: number) => void; +export const addedgegraphupdate_new: (a: number) => number; +export const addnotegraphupdate_add_to_batch: (a: number, b: number) => void; +export const addnotegraphupdate_new: (a: number) => number; +export const batchgraphupdate_new: () => number; +export const create_edge_sorter: (a: number, b: number, c: number) => [number, number, number]; +export const create_graph: () => number; +export const edgedata_edge_source: (a: number) => [number, number]; +export const edgedata_edge_type: (a: number) => [number, number]; +export const edgedata_toString: (a: number) => [number, number]; +export const edgelist_first: (a: number) => number; +export const edgelist_get_edges: (a: number) => [number, number]; +export const edgelist_get_sorted_edges: (a: number, b: number, c: number) => [number, number, number, number]; +export const edgelist_group_by_type: (a: number) => number; +export const edgelist_last: (a: number) => number; +export const edgelist_toString: (a: number) => [number, number]; +export const edgelist_to_array: (a: number) => [number, number]; export const edgestruct_edge_data: (a: number, b: number) => [number, number, number]; export const edgestruct_edge_source: (a: number, b: number) => [number, number, number, number]; export const edgestruct_edge_type: (a: number) => [number, number]; @@ -35,19 +144,14 @@ export const edgestruct_target_data: (a: number, b: number) => [number, number, export const edgestruct_target_path: (a: number, b: number) => [number, number, number, number]; export const edgestruct_target_resolved: (a: number, b: number) => [number, number, number]; export const edgestruct_toString: (a: number) => [number, number]; -export const notegraph_rec_traverse: (a: number, b: number) => [number, number, number]; -export const notegraph_rec_traverse_and_process: (a: number, b: number, c: number) => [number, number, number]; -export const __wbg_nodestringifyoptions_free: (a: number, b: number) => void; -export const nodestringifyoptions_new: (a: number, b: number, c: number, d: number, e: number) => number; -export const nodestringifyoptions_stringify_node: (a: number, b: number) => [number, number]; -export const __wbg_batchgraphupdate_free: (a: number, b: number) => void; -export const batchgraphupdate_new: () => number; -export const __wbg_transitivegraphrule_free: (a: number, b: number) => void; -export const transitivegraphrule_create_example_graph: (a: number) => [number, number, number]; -export const transitivegraphrule_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; -export const transitivegraphrule_toString: (a: number) => [number, number]; -export const __wbg_gcedgedata_free: (a: number, b: number) => void; -export const __wbg_gcnodedata_free: (a: number, b: number) => void; +export const flattraversaldata_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; +export const flattraversaldata_to_js_rendering_obj: (a: number, b: number, c: number, d: number, e: number) => [number, number, number]; +export const flattraversalresult_children_at_index: (a: number, b: number) => [number, number]; +export const flattraversalresult_data_at_index: (a: number, b: number) => number; +export const flattraversalresult_is_empty: (a: number) => number; +export const flattraversalresult_rendering_obj_at_index: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number]; +export const flattraversalresult_sort: (a: number, b: number, c: number) => [number, number]; +export const flattraversalresult_toString: (a: number) => [number, number]; export const gcedgedata_edge_source: (a: number) => [number, number]; export const gcedgedata_edge_type: (a: number) => [number, number]; export const gcedgedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; @@ -56,10 +160,20 @@ export const gcedgedata_target: (a: number) => [number, number]; export const gcedgedata_toString: (a: number) => [number, number]; export const gcnodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; export const gcnodedata_toString: (a: number) => [number, number]; -export const __wbg_notegraph_free: (a: number, b: number) => void; +export const groupededgelist_get_edges: (a: number, b: number, c: number) => [number, number]; +export const groupededgelist_get_sorted_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number]; +export const groupededgelist_toString: (a: number) => [number, number]; +export const mermaidgraphdata_toString: (a: number) => [number, number]; +export const mermaidgraphoptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number) => number; +export const mermaidgraphoptions_toString: (a: number) => [number, number]; +export const nodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; +export const nodedata_toString: (a: number) => [number, number]; +export const nodestringifyoptions_new: (a: number, b: number, c: number, d: number, e: number) => number; +export const nodestringifyoptions_stringify_node: (a: number, b: number) => [number, number]; export const notegraph_apply_update: (a: number, b: number) => [number, number]; export const notegraph_build_graph: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number]; export const notegraph_edge_types: (a: number) => [number, number]; +export const notegraph_generate_mermaid_graph: (a: number, b: number, c: number) => [number, number, number]; export const notegraph_get_filtered_grouped_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; export const notegraph_get_filtered_outgoing_edges: (a: number, b: number, c: number, d: number, e: number) => number; export const notegraph_get_incoming_edges: (a: number, b: number, c: number) => number; @@ -72,169 +186,55 @@ export const notegraph_iterate_nodes: (a: number, b: unknown) => void; export const notegraph_log: (a: number) => void; export const notegraph_new: () => number; export const notegraph_notify_update: (a: number) => void; +export const notegraph_rec_traverse: (a: number, b: number) => [number, number, number]; +export const notegraph_rec_traverse_and_process: (a: number, b: number, c: number) => [number, number, number]; export const notegraph_set_update_callback: (a: number, b: unknown) => void; -export const __wbg_edgelist_free: (a: number, b: number) => void; -export const __wbg_groupededgelist_free: (a: number, b: number) => void; -export const edgelist_first: (a: number) => number; -export const edgelist_get_edges: (a: number) => [number, number]; -export const edgelist_get_sorted_edges: (a: number, b: number, c: number) => [number, number, number, number]; -export const edgelist_group_by_type: (a: number) => number; -export const edgelist_last: (a: number) => number; -export const edgelist_toString: (a: number) => [number, number]; -export const edgelist_to_array: (a: number) => [number, number]; -export const groupededgelist_get_edges: (a: number, b: number, c: number) => [number, number]; -export const groupededgelist_get_sorted_edges: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number]; -export const groupededgelist_toString: (a: number) => [number, number]; -export const __wbg_get_mermaidgraphdata_mermaid: (a: number) => [number, number]; -export const __wbg_get_mermaidgraphdata_total_time: (a: number) => bigint; -export const __wbg_get_mermaidgraphdata_traversal_time: (a: number) => bigint; -export const __wbg_mermaidgraphdata_free: (a: number, b: number) => void; -export const __wbg_mermaidgraphoptions_free: (a: number, b: number) => void; -export const __wbg_set_mermaidgraphdata_mermaid: (a: number, b: number, c: number) => void; -export const __wbg_set_mermaidgraphdata_total_time: (a: number, b: bigint) => void; -export const __wbg_set_mermaidgraphdata_traversal_time: (a: number, b: bigint) => void; -export const mermaidgraphdata_toString: (a: number) => [number, number]; -export const mermaidgraphoptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number) => number; -export const mermaidgraphoptions_toString: (a: number) => [number, number]; -export const notegraph_generate_mermaid_graph: (a: number, b: number, c: number) => [number, number, number]; -export const __wbg_notegrapherror_free: (a: number, b: number) => void; export const notegrapherror_message: (a: number) => [number, number]; export const notegrapherror_new: (a: number, b: number) => number; export const notegrapherror_toString: (a: number) => [number, number]; -export const __wbg_get_nodedata_aliases: (a: number) => [number, number]; -export const __wbg_get_nodedata_ignore_in_edges: (a: number) => number; -export const __wbg_get_nodedata_ignore_out_edges: (a: number) => number; -export const __wbg_get_nodedata_path: (a: number) => [number, number]; -export const __wbg_get_nodedata_resolved: (a: number) => number; -export const __wbg_nodedata_free: (a: number, b: number) => void; -export const __wbg_set_nodedata_aliases: (a: number, b: number, c: number) => void; -export const __wbg_set_nodedata_ignore_in_edges: (a: number, b: number) => void; -export const __wbg_set_nodedata_ignore_out_edges: (a: number, b: number) => void; -export const __wbg_set_nodedata_path: (a: number, b: number, c: number) => void; -export const __wbg_set_nodedata_resolved: (a: number, b: number) => void; -export const nodedata_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; -export const nodedata_toString: (a: number) => [number, number]; -export const __wbg_edgesorter_free: (a: number, b: number) => void; -export const create_edge_sorter: (a: number, b: number, c: number) => [number, number, number]; -export const sort_edges: (a: number, b: number, c: number, d: number) => [number, number, number, number]; -export const sort_traversal_data: (a: number, b: number, c: number, d: number) => [number, number, number, number]; -export const __wbg_addedgegraphupdate_free: (a: number, b: number) => void; -export const __wbg_addnotegraphupdate_free: (a: number, b: number) => void; -export const __wbg_removeedgegraphupdate_free: (a: number, b: number) => void; -export const __wbg_removenotegraphupdate_free: (a: number, b: number) => void; -export const __wbg_renamenotegraphupdate_free: (a: number, b: number) => void; -export const __wbg_transitiverulesgraphupdate_free: (a: number, b: number) => void; -export const addedgegraphupdate_add_to_batch: (a: number, b: number) => void; -export const addedgegraphupdate_new: (a: number) => number; -export const addnotegraphupdate_add_to_batch: (a: number, b: number) => void; -export const addnotegraphupdate_new: (a: number) => number; +export const path_equals: (a: number, b: number) => number; +export const path_get_first_target: (a: number, b: number) => [number, number, number, number]; +export const path_length: (a: number) => number; +export const path_reverse_edges: (a: number) => [number, number]; +export const path_toString: (a: number) => [number, number]; +export const path_truncate: (a: number, b: number) => number; +export const pathlist_max_depth: (a: number) => number; +export const pathlist_process: (a: number, b: number, c: number) => [number, number, number, number]; +export const pathlist_select: (a: number, b: number, c: number) => number; +export const pathlist_toString: (a: number) => [number, number]; +export const pathlist_to_paths: (a: number) => [number, number]; export const removeedgegraphupdate_add_to_batch: (a: number, b: number) => void; export const removeedgegraphupdate_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; export const removenotegraphupdate_add_to_batch: (a: number, b: number) => void; export const removenotegraphupdate_new: (a: number, b: number) => number; export const renamenotegraphupdate_add_to_batch: (a: number, b: number) => void; export const renamenotegraphupdate_new: (a: number, b: number, c: number, d: number) => number; +export const sort_edges: (a: number, b: number, c: number, d: number) => [number, number, number, number]; +export const sort_traversal_data: (a: number, b: number, c: number, d: number) => [number, number, number, number]; +export const transitivegraphrule_create_example_graph: (a: number) => [number, number, number]; +export const transitivegraphrule_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; +export const transitivegraphrule_toString: (a: number) => [number, number]; export const transitiverulesgraphupdate_add_to_batch: (a: number, b: number) => void; export const transitiverulesgraphupdate_new: (a: number, b: number) => number; -export const __wbg_flattraversaldata_free: (a: number, b: number) => void; -export const __wbg_flattraversalresult_free: (a: number, b: number) => void; -export const __wbg_get_flattraversaldata_children: (a: number) => [number, number]; -export const __wbg_get_flattraversaldata_depth: (a: number) => number; -export const __wbg_get_flattraversaldata_edge: (a: number) => number; -export const __wbg_get_flattraversaldata_has_cut_of_children: (a: number) => number; -export const __wbg_get_flattraversaldata_number_of_children: (a: number) => number; -export const __wbg_get_flattraversalresult_data: (a: number) => [number, number]; -export const __wbg_get_flattraversalresult_entry_nodes: (a: number) => [number, number]; -export const __wbg_get_flattraversalresult_hit_depth_limit: (a: number) => number; -export const __wbg_get_flattraversalresult_node_count: (a: number) => number; -export const __wbg_get_flattraversalresult_traversal_time: (a: number) => bigint; -export const __wbg_get_traversaldata_children: (a: number) => [number, number]; -export const __wbg_get_traversalresult_data: (a: number) => [number, number]; -export const __wbg_get_traversalresult_hit_depth_limit: (a: number) => number; -export const __wbg_get_traversalresult_max_depth: (a: number) => number; -export const __wbg_get_traversalresult_node_count: (a: number) => number; -export const __wbg_set_flattraversaldata_children: (a: number, b: number, c: number) => void; -export const __wbg_set_flattraversaldata_depth: (a: number, b: number) => void; -export const __wbg_set_flattraversaldata_edge: (a: number, b: number) => void; -export const __wbg_set_flattraversaldata_has_cut_of_children: (a: number, b: number) => void; -export const __wbg_set_flattraversaldata_number_of_children: (a: number, b: number) => void; -export const __wbg_set_flattraversalresult_data: (a: number, b: number, c: number) => void; -export const __wbg_set_flattraversalresult_entry_nodes: (a: number, b: number, c: number) => void; -export const __wbg_set_flattraversalresult_hit_depth_limit: (a: number, b: number) => void; -export const __wbg_set_flattraversalresult_node_count: (a: number, b: number) => void; -export const __wbg_set_flattraversalresult_traversal_time: (a: number, b: bigint) => void; -export const __wbg_set_traversaldata_children: (a: number, b: number, c: number) => void; -export const __wbg_set_traversalresult_data: (a: number, b: number, c: number) => void; -export const __wbg_set_traversalresult_hit_depth_limit: (a: number, b: number) => void; -export const __wbg_set_traversalresult_max_depth: (a: number, b: number) => void; -export const __wbg_set_traversalresult_node_count: (a: number, b: number) => void; -export const __wbg_traversaldata_free: (a: number, b: number) => void; -export const __wbg_traversalresult_free: (a: number, b: number) => void; -export const flattraversaldata_get_attribute_label: (a: number, b: number, c: number, d: number) => [number, number, number, number]; -export const flattraversaldata_to_js_rendering_obj: (a: number, b: number, c: number, d: number, e: number) => [number, number, number]; -export const flattraversalresult_children_at_index: (a: number, b: number) => [number, number]; -export const flattraversalresult_data_at_index: (a: number, b: number) => number; -export const flattraversalresult_is_empty: (a: number) => number; -export const flattraversalresult_rendering_obj_at_index: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number]; -export const flattraversalresult_sort: (a: number, b: number, c: number) => [number, number]; -export const flattraversalresult_toString: (a: number) => [number, number]; export const traversaldata_new: (a: number, b: number, c: number, d: number, e: number, f: number) => number; export const traversaldata_rec_sort_children: (a: number, b: number, c: number) => [number, number]; export const traversaldata_toString: (a: number) => [number, number]; -export const traversalresult_new: (a: number, b: number, c: bigint) => number; -export const traversalresult_toString: (a: number) => [number, number]; -export const traversalresult_to_paths: (a: number) => number; -export const __wbg_set_traversaldata_has_cut_of_children: (a: number, b: number) => void; -export const __wbg_set_flattraversalresult_max_depth: (a: number, b: number) => void; -export const __wbg_set_traversaldata_depth: (a: number, b: number) => void; -export const __wbg_set_traversaldata_number_of_children: (a: number, b: number) => void; -export const __wbg_set_traversalresult_traversal_time: (a: number, b: bigint) => void; -export const __wbg_get_traversaldata_edge: (a: number) => number; -export const traversalresult_is_empty: (a: number) => number; -export const __wbg_set_traversaldata_edge: (a: number, b: number) => void; -export const __wbg_get_traversaldata_has_cut_of_children: (a: number) => number; -export const __wbg_get_flattraversalresult_max_depth: (a: number) => number; -export const __wbg_get_traversaldata_depth: (a: number) => number; -export const __wbg_get_traversaldata_number_of_children: (a: number) => number; -export const __wbg_get_traversalresult_traversal_time: (a: number) => bigint; -export const __wbg_edgedata_free: (a: number, b: number) => void; -export const __wbg_get_edgedata_explicit: (a: number) => number; -export const __wbg_get_edgedata_round: (a: number) => number; -export const __wbg_set_edgedata_explicit: (a: number, b: number) => void; -export const __wbg_set_edgedata_round: (a: number, b: number) => void; -export const edgedata_edge_source: (a: number) => [number, number]; -export const edgedata_edge_type: (a: number) => [number, number]; -export const edgedata_toString: (a: number) => [number, number]; -export const __wbg_get_traversaloptions_dataview_from_paths: (a: number) => [number, number]; -export const __wbg_get_traversaloptions_edge_types: (a: number) => [number, number]; -export const __wbg_get_traversaloptions_entry_nodes: (a: number) => [number, number]; -export const __wbg_get_traversaloptions_max_depth: (a: number) => number; -export const __wbg_get_traversaloptions_max_traversal_count: (a: number) => number; -export const __wbg_get_traversaloptions_separate_edges: (a: number) => number; -export const __wbg_get_traversalpostprocessoptions_flatten: (a: number) => number; -export const __wbg_get_traversalpostprocessoptions_sorter: (a: number) => number; -export const __wbg_set_traversaloptions_dataview_from_paths: (a: number, b: number, c: number) => void; -export const __wbg_set_traversaloptions_edge_types: (a: number, b: number, c: number) => void; -export const __wbg_set_traversaloptions_entry_nodes: (a: number, b: number, c: number) => void; -export const __wbg_set_traversaloptions_max_depth: (a: number, b: number) => void; -export const __wbg_set_traversaloptions_max_traversal_count: (a: number, b: number) => void; -export const __wbg_set_traversaloptions_separate_edges: (a: number, b: number) => void; -export const __wbg_set_traversalpostprocessoptions_flatten: (a: number, b: number) => void; -export const __wbg_set_traversalpostprocessoptions_sorter: (a: number, b: number) => void; -export const __wbg_traversaloptions_free: (a: number, b: number) => void; -export const __wbg_traversalpostprocessoptions_free: (a: number, b: number) => void; export const traversaloptions_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number; export const traversaloptions_toString: (a: number) => [number, number]; export const traversalpostprocessoptions_new: (a: number, b: number) => number; export const traversalpostprocessoptions_toString: (a: number) => [number, number]; export const traversalpostprocessoptions_without_sorter: (a: number) => number; +export const traversalresult_is_empty: (a: number) => number; +export const traversalresult_new: (a: number, b: number, c: bigint) => number; +export const traversalresult_toString: (a: number) => [number, number]; +export const traversalresult_to_paths: (a: number) => number; +export const __wbindgen_malloc: (a: number, b: number) => number; +export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; export const __wbindgen_exn_store: (a: number) => void; export const __externref_table_alloc: () => number; -export const __wbindgen_export_2: WebAssembly.Table; +export const __wbindgen_externrefs: WebAssembly.Table; export const __wbindgen_free: (a: number, b: number, c: number) => void; -export const __wbindgen_malloc: (a: number, b: number) => number; -export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; -export const __externref_drop_slice: (a: number, b: number) => void; export const __externref_table_dealloc: (a: number) => void; +export const __externref_drop_slice: (a: number, b: number) => void; export const __wbindgen_start: () => void; /* eslint-enable @typescript-eslint/no-unsafe-function-type, @typescript-eslint/no-misused-new -- End of generated bindings. */