@graphty/graph-io 0.0.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +250 -28
- package/dist/chunks/children-CL3Cy0ez.js +238 -0
- package/dist/chunks/children-CL3Cy0ez.js.map +1 -0
- package/dist/chunks/escape-DyI8JofU.js +938 -0
- package/dist/chunks/escape-DyI8JofU.js.map +1 -0
- package/dist/chunks/importer-CQnJuWJw.js +2987 -0
- package/dist/chunks/importer-CQnJuWJw.js.map +1 -0
- package/dist/chunks/importer-CpCpfbxr.js +2015 -0
- package/dist/chunks/importer-CpCpfbxr.js.map +1 -0
- package/dist/chunks/importer-DbnGYr3_.js +2342 -0
- package/dist/chunks/importer-DbnGYr3_.js.map +1 -0
- package/dist/chunks/importer-GozH8DkN.js +3050 -0
- package/dist/chunks/importer-GozH8DkN.js.map +1 -0
- package/dist/chunks/records-CGpxszm1.js +605 -0
- package/dist/chunks/records-CGpxszm1.js.map +1 -0
- package/dist/chunks/text-CajMdVFy.js +189 -0
- package/dist/chunks/text-CajMdVFy.js.map +1 -0
- package/dist/chunks/writer-DxSKC7TL.js +2842 -0
- package/dist/chunks/writer-DxSKC7TL.js.map +1 -0
- package/dist/csv.d.ts +1 -0
- package/dist/csv.js +1702 -0
- package/dist/csv.js.map +1 -0
- package/dist/dot.d.ts +1 -0
- package/dist/dot.js +8 -0
- package/dist/dot.js.map +1 -0
- package/dist/gexf.d.ts +1 -0
- package/dist/gexf.js +3466 -0
- package/dist/gexf.js.map +1 -0
- package/dist/gml.d.ts +1 -0
- package/dist/gml.js +2647 -0
- package/dist/gml.js.map +1 -0
- package/dist/graph-io.d.ts +1 -0
- package/dist/graph-io.js +790 -0
- package/dist/graph-io.js.map +1 -0
- package/dist/graphml.d.ts +1 -0
- package/dist/graphml.js +8 -0
- package/dist/graphml.js.map +1 -0
- package/dist/json.d.ts +1 -0
- package/dist/json.js +11 -0
- package/dist/json.js.map +1 -0
- package/dist/neo4j.d.ts +1 -0
- package/dist/neo4j.js +2046 -0
- package/dist/neo4j.js.map +1 -0
- package/dist/pajek.d.ts +1 -0
- package/dist/pajek.js +8 -0
- package/dist/pajek.js.map +1 -0
- package/dist/src/children.d.ts +134 -0
- package/dist/src/children.d.ts.map +1 -0
- package/dist/src/children.js +274 -0
- package/dist/src/children.js.map +1 -0
- package/dist/src/common/attributes.d.ts +229 -0
- package/dist/src/common/attributes.d.ts.map +1 -0
- package/dist/src/common/attributes.js +368 -0
- package/dist/src/common/attributes.js.map +1 -0
- package/dist/src/common/codes.d.ts +105 -0
- package/dist/src/common/codes.d.ts.map +1 -0
- package/dist/src/common/codes.js +107 -0
- package/dist/src/common/codes.js.map +1 -0
- package/dist/src/common/declared-types.d.ts +84 -0
- package/dist/src/common/declared-types.d.ts.map +1 -0
- package/dist/src/common/declared-types.js +326 -0
- package/dist/src/common/declared-types.js.map +1 -0
- package/dist/src/common/direction.d.ts +206 -0
- package/dist/src/common/direction.d.ts.map +1 -0
- package/dist/src/common/direction.js +370 -0
- package/dist/src/common/direction.js.map +1 -0
- package/dist/src/common/escape.d.ts +92 -0
- package/dist/src/common/escape.d.ts.map +1 -0
- package/dist/src/common/escape.js +212 -0
- package/dist/src/common/escape.js.map +1 -0
- package/dist/src/common/export.d.ts +249 -0
- package/dist/src/common/export.d.ts.map +1 -0
- package/dist/src/common/export.js +594 -0
- package/dist/src/common/export.js.map +1 -0
- package/dist/src/common/format.d.ts +59 -0
- package/dist/src/common/format.d.ts.map +1 -0
- package/dist/src/common/format.js +106 -0
- package/dist/src/common/format.js.map +1 -0
- package/dist/src/common/ids.d.ts +83 -0
- package/dist/src/common/ids.d.ts.map +1 -0
- package/dist/src/common/ids.js +158 -0
- package/dist/src/common/ids.js.map +1 -0
- package/dist/src/common/input.d.ts +100 -0
- package/dist/src/common/input.d.ts.map +1 -0
- package/dist/src/common/input.js +335 -0
- package/dist/src/common/input.js.map +1 -0
- package/dist/src/common/lists.d.ts +34 -0
- package/dist/src/common/lists.d.ts.map +1 -0
- package/dist/src/common/lists.js +185 -0
- package/dist/src/common/lists.js.map +1 -0
- package/dist/src/common/options.d.ts +108 -0
- package/dist/src/common/options.d.ts.map +1 -0
- package/dist/src/common/options.js +265 -0
- package/dist/src/common/options.js.map +1 -0
- package/dist/src/common/report.d.ts +187 -0
- package/dist/src/common/report.d.ts.map +1 -0
- package/dist/src/common/report.js +274 -0
- package/dist/src/common/report.js.map +1 -0
- package/dist/src/common/temporal.d.ts +71 -0
- package/dist/src/common/temporal.d.ts.map +1 -0
- package/dist/src/common/temporal.js +266 -0
- package/dist/src/common/temporal.js.map +1 -0
- package/dist/src/common/text.d.ts +104 -0
- package/dist/src/common/text.d.ts.map +1 -0
- package/dist/src/common/text.js +255 -0
- package/dist/src/common/text.js.map +1 -0
- package/dist/src/common/weights.d.ts +77 -0
- package/dist/src/common/weights.d.ts.map +1 -0
- package/dist/src/common/weights.js +156 -0
- package/dist/src/common/weights.js.map +1 -0
- package/dist/src/common/writer.d.ts +51 -0
- package/dist/src/common/writer.d.ts.map +1 -0
- package/dist/src/common/writer.js +108 -0
- package/dist/src/common/writer.js.map +1 -0
- package/dist/src/common/xml.d.ts +245 -0
- package/dist/src/common/xml.d.ts.map +1 -0
- package/dist/src/common/xml.js +942 -0
- package/dist/src/common/xml.js.map +1 -0
- package/dist/src/formats/csv/exporter.d.ts +70 -0
- package/dist/src/formats/csv/exporter.d.ts.map +1 -0
- package/dist/src/formats/csv/exporter.js +682 -0
- package/dist/src/formats/csv/exporter.js.map +1 -0
- package/dist/src/formats/csv/header.d.ts +66 -0
- package/dist/src/formats/csv/header.d.ts.map +1 -0
- package/dist/src/formats/csv/header.js +152 -0
- package/dist/src/formats/csv/header.js.map +1 -0
- package/dist/src/formats/csv/importer.d.ts +82 -0
- package/dist/src/formats/csv/importer.d.ts.map +1 -0
- package/dist/src/formats/csv/importer.js +849 -0
- package/dist/src/formats/csv/importer.js.map +1 -0
- package/dist/src/formats/csv/index.d.ts +60 -0
- package/dist/src/formats/csv/index.d.ts.map +1 -0
- package/dist/src/formats/csv/index.js +63 -0
- package/dist/src/formats/csv/index.js.map +1 -0
- package/dist/src/formats/csv/records.d.ts +188 -0
- package/dist/src/formats/csv/records.d.ts.map +1 -0
- package/dist/src/formats/csv/records.js +702 -0
- package/dist/src/formats/csv/records.js.map +1 -0
- package/dist/src/formats/csv/values.d.ts +105 -0
- package/dist/src/formats/csv/values.d.ts.map +1 -0
- package/dist/src/formats/csv/values.js +192 -0
- package/dist/src/formats/csv/values.js.map +1 -0
- package/dist/src/formats/dot/exporter.d.ts +52 -0
- package/dist/src/formats/dot/exporter.d.ts.map +1 -0
- package/dist/src/formats/dot/exporter.js +836 -0
- package/dist/src/formats/dot/exporter.js.map +1 -0
- package/dist/src/formats/dot/importer.d.ts +102 -0
- package/dist/src/formats/dot/importer.d.ts.map +1 -0
- package/dist/src/formats/dot/importer.js +1291 -0
- package/dist/src/formats/dot/importer.js.map +1 -0
- package/dist/src/formats/dot/index.d.ts +7 -0
- package/dist/src/formats/dot/index.d.ts.map +1 -0
- package/dist/src/formats/dot/index.js +7 -0
- package/dist/src/formats/dot/index.js.map +1 -0
- package/dist/src/formats/dot/names.d.ts +29 -0
- package/dist/src/formats/dot/names.d.ts.map +1 -0
- package/dist/src/formats/dot/names.js +28 -0
- package/dist/src/formats/dot/names.js.map +1 -0
- package/dist/src/formats/dot/tokenizer.d.ts +114 -0
- package/dist/src/formats/dot/tokenizer.d.ts.map +1 -0
- package/dist/src/formats/dot/tokenizer.js +341 -0
- package/dist/src/formats/dot/tokenizer.js.map +1 -0
- package/dist/src/formats/gexf/exporter.d.ts +56 -0
- package/dist/src/formats/gexf/exporter.d.ts.map +1 -0
- package/dist/src/formats/gexf/exporter.js +1395 -0
- package/dist/src/formats/gexf/exporter.js.map +1 -0
- package/dist/src/formats/gexf/importer.d.ts +73 -0
- package/dist/src/formats/gexf/importer.d.ts.map +1 -0
- package/dist/src/formats/gexf/importer.js +1880 -0
- package/dist/src/formats/gexf/importer.js.map +1 -0
- package/dist/src/formats/gexf/index.d.ts +96 -0
- package/dist/src/formats/gexf/index.d.ts.map +1 -0
- package/dist/src/formats/gexf/index.js +97 -0
- package/dist/src/formats/gexf/index.js.map +1 -0
- package/dist/src/formats/gexf/schema.d.ts +135 -0
- package/dist/src/formats/gexf/schema.d.ts.map +1 -0
- package/dist/src/formats/gexf/schema.js +323 -0
- package/dist/src/formats/gexf/schema.js.map +1 -0
- package/dist/src/formats/gml/exporter.d.ts +69 -0
- package/dist/src/formats/gml/exporter.d.ts.map +1 -0
- package/dist/src/formats/gml/exporter.js +1093 -0
- package/dist/src/formats/gml/exporter.js.map +1 -0
- package/dist/src/formats/gml/importer.d.ts +66 -0
- package/dist/src/formats/gml/importer.d.ts.map +1 -0
- package/dist/src/formats/gml/importer.js +1331 -0
- package/dist/src/formats/gml/importer.js.map +1 -0
- package/dist/src/formats/gml/index.d.ts +85 -0
- package/dist/src/formats/gml/index.d.ts.map +1 -0
- package/dist/src/formats/gml/index.js +88 -0
- package/dist/src/formats/gml/index.js.map +1 -0
- package/dist/src/formats/gml/syntax.d.ts +186 -0
- package/dist/src/formats/gml/syntax.d.ts.map +1 -0
- package/dist/src/formats/gml/syntax.js +467 -0
- package/dist/src/formats/gml/syntax.js.map +1 -0
- package/dist/src/formats/graphml/constants.d.ts +169 -0
- package/dist/src/formats/graphml/constants.d.ts.map +1 -0
- package/dist/src/formats/graphml/constants.js +165 -0
- package/dist/src/formats/graphml/constants.js.map +1 -0
- package/dist/src/formats/graphml/exporter.d.ts +34 -0
- package/dist/src/formats/graphml/exporter.d.ts.map +1 -0
- package/dist/src/formats/graphml/exporter.js +1176 -0
- package/dist/src/formats/graphml/exporter.js.map +1 -0
- package/dist/src/formats/graphml/importer.d.ts +31 -0
- package/dist/src/formats/graphml/importer.d.ts.map +1 -0
- package/dist/src/formats/graphml/importer.js +1607 -0
- package/dist/src/formats/graphml/importer.js.map +1 -0
- package/dist/src/formats/graphml/index.d.ts +8 -0
- package/dist/src/formats/graphml/index.d.ts.map +1 -0
- package/dist/src/formats/graphml/index.js +8 -0
- package/dist/src/formats/graphml/index.js.map +1 -0
- package/dist/src/formats/graphml/tree.d.ts +72 -0
- package/dist/src/formats/graphml/tree.d.ts.map +1 -0
- package/dist/src/formats/graphml/tree.js +290 -0
- package/dist/src/formats/graphml/tree.js.map +1 -0
- package/dist/src/formats/json/dialect.d.ts +125 -0
- package/dist/src/formats/json/dialect.d.ts.map +1 -0
- package/dist/src/formats/json/dialect.js +262 -0
- package/dist/src/formats/json/dialect.js.map +1 -0
- package/dist/src/formats/json/exporter.d.ts +89 -0
- package/dist/src/formats/json/exporter.d.ts.map +1 -0
- package/dist/src/formats/json/exporter.js +1358 -0
- package/dist/src/formats/json/exporter.js.map +1 -0
- package/dist/src/formats/json/importer.d.ts +108 -0
- package/dist/src/formats/json/importer.d.ts.map +1 -0
- package/dist/src/formats/json/importer.js +1838 -0
- package/dist/src/formats/json/importer.js.map +1 -0
- package/dist/src/formats/json/index.d.ts +8 -0
- package/dist/src/formats/json/index.d.ts.map +1 -0
- package/dist/src/formats/json/index.js +8 -0
- package/dist/src/formats/json/index.js.map +1 -0
- package/dist/src/formats/neo4j/exporter.d.ts +68 -0
- package/dist/src/formats/neo4j/exporter.d.ts.map +1 -0
- package/dist/src/formats/neo4j/exporter.js +1055 -0
- package/dist/src/formats/neo4j/exporter.js.map +1 -0
- package/dist/src/formats/neo4j/header.d.ts +52 -0
- package/dist/src/formats/neo4j/header.d.ts.map +1 -0
- package/dist/src/formats/neo4j/header.js +131 -0
- package/dist/src/formats/neo4j/header.js.map +1 -0
- package/dist/src/formats/neo4j/importer.d.ts +73 -0
- package/dist/src/formats/neo4j/importer.d.ts.map +1 -0
- package/dist/src/formats/neo4j/importer.js +932 -0
- package/dist/src/formats/neo4j/importer.js.map +1 -0
- package/dist/src/formats/neo4j/index.d.ts +79 -0
- package/dist/src/formats/neo4j/index.d.ts.map +1 -0
- package/dist/src/formats/neo4j/index.js +83 -0
- package/dist/src/formats/neo4j/index.js.map +1 -0
- package/dist/src/formats/pajek/exporter.d.ts +58 -0
- package/dist/src/formats/pajek/exporter.d.ts.map +1 -0
- package/dist/src/formats/pajek/exporter.js +825 -0
- package/dist/src/formats/pajek/exporter.js.map +1 -0
- package/dist/src/formats/pajek/importer.d.ts +88 -0
- package/dist/src/formats/pajek/importer.d.ts.map +1 -0
- package/dist/src/formats/pajek/importer.js +1047 -0
- package/dist/src/formats/pajek/importer.js.map +1 -0
- package/dist/src/formats/pajek/index.d.ts +7 -0
- package/dist/src/formats/pajek/index.d.ts.map +1 -0
- package/dist/src/formats/pajek/index.js +7 -0
- package/dist/src/formats/pajek/index.js.map +1 -0
- package/dist/src/formats/pajek/syntax.d.ts +112 -0
- package/dist/src/formats/pajek/syntax.d.ts.map +1 -0
- package/dist/src/formats/pajek/syntax.js +269 -0
- package/dist/src/formats/pajek/syntax.js.map +1 -0
- package/dist/src/index.d.ts +35 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +39 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/registry.d.ts +207 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +481 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/sniff.d.ts +104 -0
- package/dist/src/sniff.d.ts.map +1 -0
- package/dist/src/sniff.js +357 -0
- package/dist/src/sniff.js.map +1 -0
- package/dist/src/types.d.ts +238 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +29 -0
- package/dist/src/types.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +122 -7
- package/src/children.ts +335 -0
- package/src/common/attributes.ts +520 -0
- package/src/common/codes.ts +153 -0
- package/src/common/declared-types.ts +374 -0
- package/src/common/direction.ts +518 -0
- package/src/common/escape.ts +231 -0
- package/src/common/export.ts +817 -0
- package/src/common/format.ts +111 -0
- package/src/common/ids.ts +176 -0
- package/src/common/input.ts +378 -0
- package/src/common/lists.ts +196 -0
- package/src/common/options.ts +377 -0
- package/src/common/report.ts +352 -0
- package/src/common/temporal.ts +302 -0
- package/src/common/text.ts +294 -0
- package/src/common/weights.ts +202 -0
- package/src/common/writer.ts +123 -0
- package/src/common/xml.ts +1053 -0
- package/src/formats/csv/exporter.ts +894 -0
- package/src/formats/csv/header.ts +172 -0
- package/src/formats/csv/importer.ts +1104 -0
- package/src/formats/csv/index.ts +88 -0
- package/src/formats/csv/records.ts +813 -0
- package/src/formats/csv/values.ts +224 -0
- package/src/formats/dot/exporter.ts +1014 -0
- package/src/formats/dot/importer.ts +1549 -0
- package/src/formats/dot/index.ts +7 -0
- package/src/formats/dot/names.ts +40 -0
- package/src/formats/dot/tokenizer.ts +384 -0
- package/src/formats/gexf/exporter.ts +1696 -0
- package/src/formats/gexf/importer.ts +2333 -0
- package/src/formats/gexf/index.ts +142 -0
- package/src/formats/gexf/schema.ts +361 -0
- package/src/formats/gml/exporter.ts +1404 -0
- package/src/formats/gml/importer.ts +1591 -0
- package/src/formats/gml/index.ts +128 -0
- package/src/formats/gml/syntax.ts +545 -0
- package/src/formats/graphml/constants.ts +225 -0
- package/src/formats/graphml/exporter.ts +1458 -0
- package/src/formats/graphml/importer.ts +2027 -0
- package/src/formats/graphml/index.ts +8 -0
- package/src/formats/graphml/tree.ts +318 -0
- package/src/formats/json/dialect.ts +317 -0
- package/src/formats/json/exporter.ts +1616 -0
- package/src/formats/json/importer.ts +2271 -0
- package/src/formats/json/index.ts +8 -0
- package/src/formats/neo4j/exporter.ts +1287 -0
- package/src/formats/neo4j/header.ts +156 -0
- package/src/formats/neo4j/importer.ts +1220 -0
- package/src/formats/neo4j/index.ts +116 -0
- package/src/formats/pajek/exporter.ts +1000 -0
- package/src/formats/pajek/importer.ts +1311 -0
- package/src/formats/pajek/index.ts +7 -0
- package/src/formats/pajek/syntax.ts +307 -0
- package/src/index.ts +244 -0
- package/src/registry.ts +617 -0
- package/src/sniff.ts +397 -0
- package/src/types.ts +262 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../src/formats/csv/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The untyped attribute columns of the CSV importer (design sections 5.1 and 5.4): every cell is
|
|
3
|
+
* parsed by the fixed lexical grammar and pushed as a scalar, the sink's per-column inference
|
|
4
|
+
* widens `bool -> i32 -> f64 -> string`, and a column whose sampled values are all text becomes a
|
|
5
|
+
* `dict` when its cardinality stays below half the sampled rows (the 1024-row heuristic of
|
|
6
|
+
* design section 5.4). The sample is the only buffering: at most DICT_SAMPLE_ROWS (row, text)
|
|
7
|
+
* pairs per column, flushed on the decision.
|
|
8
|
+
*
|
|
9
|
+
* An unquoted empty cell is unset (never written); a quoted empty cell is the empty string. A
|
|
10
|
+
* column whose every cell is unset is declared as a nullable string column at the end so the
|
|
11
|
+
* header survives a round trip. Inferred columns go through the shared TextCellWriter, which keeps
|
|
12
|
+
* the column's dtype the one the 5.1 grammar implies and the lexical form of numeric-looking cells
|
|
13
|
+
* that a widening to string would otherwise rewrite.
|
|
14
|
+
*/
|
|
15
|
+
import { type GraphSink } from "@graphty/graph-format";
|
|
16
|
+
import { type ImportReportBuilder } from "../../common/report.js";
|
|
17
|
+
/**
|
|
18
|
+
* One inferred attribute column of a node or edge table, written cell by cell.
|
|
19
|
+
*/
|
|
20
|
+
export declare class InferredColumn {
|
|
21
|
+
/** The column name in the sink. */
|
|
22
|
+
readonly name: string;
|
|
23
|
+
private readonly domain;
|
|
24
|
+
private readonly sink;
|
|
25
|
+
private readonly report;
|
|
26
|
+
private handle;
|
|
27
|
+
/** Whether values are pushed as text: a dict column, or a caller's string / dict column of the name. */
|
|
28
|
+
private text;
|
|
29
|
+
/** Whether the column was declared as a dict by this writer. */
|
|
30
|
+
private dict;
|
|
31
|
+
/** Whether the dtype decision was made; until then values are sampled. */
|
|
32
|
+
private decided;
|
|
33
|
+
/** Whether every sampled value so far is text under the lexical grammar (a dict candidate). */
|
|
34
|
+
private candidate;
|
|
35
|
+
private readonly heuristic;
|
|
36
|
+
/** The inferred-column writer, once the column was decided to be inferred (neither dict nor a caller's). */
|
|
37
|
+
private writer;
|
|
38
|
+
private readonly pendingRows;
|
|
39
|
+
private readonly pendingTexts;
|
|
40
|
+
/**
|
|
41
|
+
* Create a column writer; nothing is declared until the first value or finish().
|
|
42
|
+
* @param name - the column name
|
|
43
|
+
* @param domain - node or edge
|
|
44
|
+
* @param sink - the sink
|
|
45
|
+
* @param report - the report a refused sampled value is recorded in (the flush has no line numbers)
|
|
46
|
+
* @param sampleRows - rows sampled before the dict decision; DICT_SAMPLE_ROWS by default
|
|
47
|
+
*/
|
|
48
|
+
constructor(name: string, domain: "node" | "edge", sink: GraphSink, report: ImportReportBuilder, sampleRows?: number);
|
|
49
|
+
/**
|
|
50
|
+
* Whether the column was declared as a dict.
|
|
51
|
+
* @returns true after a dict decision
|
|
52
|
+
*/
|
|
53
|
+
get isDict(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Write one set cell.
|
|
56
|
+
* @param row - the node or edge index
|
|
57
|
+
* @param text - the cell text (the empty string for a quoted empty cell)
|
|
58
|
+
*/
|
|
59
|
+
write(row: number, text: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Decide an undecided column from what was sampled (or declare an all-empty column as string)
|
|
62
|
+
* and flush the sample. Call once at the end of the input.
|
|
63
|
+
*/
|
|
64
|
+
finish(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Make the dtype decision: a dict when every sampled value is text and the cardinality is low
|
|
67
|
+
* and no column of the name exists yet; inference otherwise. A column the sink already holds
|
|
68
|
+
* (a caller's) receives the cell text when it is a string or dict column and the parsed value
|
|
69
|
+
* otherwise. The sample is flushed either way; a sampled value the sink refuses (a caller's
|
|
70
|
+
* typed column of the name) is recorded as an issue of this column and the flush continues.
|
|
71
|
+
*/
|
|
72
|
+
private decide;
|
|
73
|
+
/**
|
|
74
|
+
* Push one value: text into a dict or a caller's text column, the parsed scalar into a caller's
|
|
75
|
+
* typed column, and everything else through the inferred-column writer.
|
|
76
|
+
* @param row - the node or edge index
|
|
77
|
+
* @param text - the cell text
|
|
78
|
+
*/
|
|
79
|
+
private push;
|
|
80
|
+
/**
|
|
81
|
+
* Set a cell in the sink's table for this domain.
|
|
82
|
+
* @param column - the handle or name
|
|
83
|
+
* @param row - the row
|
|
84
|
+
* @param value - the value
|
|
85
|
+
*/
|
|
86
|
+
private set;
|
|
87
|
+
/**
|
|
88
|
+
* The sink's handle for this column's name.
|
|
89
|
+
* @returns the handle, or INVALID_INDEX when the sink has no such column yet
|
|
90
|
+
*/
|
|
91
|
+
private lookup;
|
|
92
|
+
/**
|
|
93
|
+
* Whether the sink's existing column of this name is a string or dict column, probed through
|
|
94
|
+
* the sink's declare (the same shape returns the existing handle, another is E_COLUMN_EXISTS).
|
|
95
|
+
* @returns true when cell text is what the column holds
|
|
96
|
+
*/
|
|
97
|
+
private holdsText;
|
|
98
|
+
/**
|
|
99
|
+
* Declare the column with a fixed dtype.
|
|
100
|
+
* @param dtype - dict or string
|
|
101
|
+
* @returns the handle
|
|
102
|
+
*/
|
|
103
|
+
private declare;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../../../src/formats/csv/values.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAuC,KAAK,SAAS,EAAiB,MAAM,uBAAuB,CAAC;AAG3G,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE;;GAEG;AACH,qBAAa,cAAc;IACvB,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAE7C,OAAO,CAAC,MAAM,CAA+C;IAE7D,wGAAwG;IACxG,OAAO,CAAC,IAAI,CAAS;IAErB,gEAAgE;IAChE,OAAO,CAAC,IAAI,CAAS;IAErB,0EAA0E;IAC1E,OAAO,CAAC,OAAO,CAAS;IAExB,+FAA+F;IAC/F,OAAO,CAAC,SAAS,CAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAE1C,4GAA4G;IAC5G,OAAO,CAAC,MAAM,CAA+B;IAE7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAE7C;;;;;;;OAOG;gBAEC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,mBAAmB,EAC3B,UAAU,GAAE,MAAyB;IASzC;;;OAGG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBtC;;;OAGG;IACH,MAAM,IAAI,IAAI;IAYd;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IA0Bd;;;;;OAKG;IACH,OAAO,CAAC,IAAI;IAUZ;;;;;OAKG;IACH,OAAO,CAAC,GAAG;IAQX;;;OAGG;IACH,OAAO,CAAC,MAAM;IAId;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAcjB;;;;OAIG;IACH,OAAO,CAAC,OAAO;CAIlB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The untyped attribute columns of the CSV importer (design sections 5.1 and 5.4): every cell is
|
|
3
|
+
* parsed by the fixed lexical grammar and pushed as a scalar, the sink's per-column inference
|
|
4
|
+
* widens `bool -> i32 -> f64 -> string`, and a column whose sampled values are all text becomes a
|
|
5
|
+
* `dict` when its cardinality stays below half the sampled rows (the 1024-row heuristic of
|
|
6
|
+
* design section 5.4). The sample is the only buffering: at most DICT_SAMPLE_ROWS (row, text)
|
|
7
|
+
* pairs per column, flushed on the decision.
|
|
8
|
+
*
|
|
9
|
+
* An unquoted empty cell is unset (never written); a quoted empty cell is the empty string. A
|
|
10
|
+
* column whose every cell is unset is declared as a nullable string column at the end so the
|
|
11
|
+
* header survives a round trip. Inferred columns go through the shared TextCellWriter, which keeps
|
|
12
|
+
* the column's dtype the one the 5.1 grammar implies and the lexical form of numeric-looking cells
|
|
13
|
+
* that a widening to string would otherwise rewrite.
|
|
14
|
+
*/
|
|
15
|
+
import { GraphFormatError, INVALID_INDEX } from "@graphty/graph-format";
|
|
16
|
+
import { DICT_SAMPLE_ROWS, DictHeuristic } from "../../common/attributes.js";
|
|
17
|
+
import { inferTextDtype, parseTextCell, TextCellWriter } from "../../common/text.js";
|
|
18
|
+
/**
|
|
19
|
+
* One inferred attribute column of a node or edge table, written cell by cell.
|
|
20
|
+
*/
|
|
21
|
+
export class InferredColumn {
|
|
22
|
+
/**
|
|
23
|
+
* Create a column writer; nothing is declared until the first value or finish().
|
|
24
|
+
* @param name - the column name
|
|
25
|
+
* @param domain - node or edge
|
|
26
|
+
* @param sink - the sink
|
|
27
|
+
* @param report - the report a refused sampled value is recorded in (the flush has no line numbers)
|
|
28
|
+
* @param sampleRows - rows sampled before the dict decision; DICT_SAMPLE_ROWS by default
|
|
29
|
+
*/
|
|
30
|
+
constructor(name, domain, sink, report, sampleRows = DICT_SAMPLE_ROWS) {
|
|
31
|
+
this.handle = INVALID_INDEX;
|
|
32
|
+
/** Whether values are pushed as text: a dict column, or a caller's string / dict column of the name. */
|
|
33
|
+
this.text = false;
|
|
34
|
+
/** Whether the column was declared as a dict by this writer. */
|
|
35
|
+
this.dict = false;
|
|
36
|
+
/** Whether the dtype decision was made; until then values are sampled. */
|
|
37
|
+
this.decided = false;
|
|
38
|
+
/** Whether every sampled value so far is text under the lexical grammar (a dict candidate). */
|
|
39
|
+
this.candidate = true;
|
|
40
|
+
/** The inferred-column writer, once the column was decided to be inferred (neither dict nor a caller's). */
|
|
41
|
+
this.writer = null;
|
|
42
|
+
this.pendingRows = [];
|
|
43
|
+
this.pendingTexts = [];
|
|
44
|
+
this.name = name;
|
|
45
|
+
this.domain = domain;
|
|
46
|
+
this.sink = sink;
|
|
47
|
+
this.report = report;
|
|
48
|
+
this.heuristic = new DictHeuristic(sampleRows);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether the column was declared as a dict.
|
|
52
|
+
* @returns true after a dict decision
|
|
53
|
+
*/
|
|
54
|
+
get isDict() {
|
|
55
|
+
return this.dict;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Write one set cell.
|
|
59
|
+
* @param row - the node or edge index
|
|
60
|
+
* @param text - the cell text (the empty string for a quoted empty cell)
|
|
61
|
+
*/
|
|
62
|
+
write(row, text) {
|
|
63
|
+
if (this.decided) {
|
|
64
|
+
this.push(row, text);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.pendingRows.push(row);
|
|
68
|
+
this.pendingTexts.push(text);
|
|
69
|
+
if (this.candidate && inferTextDtype(text) !== "string") {
|
|
70
|
+
this.candidate = false;
|
|
71
|
+
}
|
|
72
|
+
const full = this.heuristic.observe(text);
|
|
73
|
+
if (full || !this.candidate) {
|
|
74
|
+
this.decide();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Decide an undecided column from what was sampled (or declare an all-empty column as string)
|
|
79
|
+
* and flush the sample. Call once at the end of the input.
|
|
80
|
+
*/
|
|
81
|
+
finish() {
|
|
82
|
+
if (!this.decided) {
|
|
83
|
+
this.decide();
|
|
84
|
+
}
|
|
85
|
+
if (this.handle === INVALID_INDEX) {
|
|
86
|
+
this.handle = this.lookup();
|
|
87
|
+
if (this.handle === INVALID_INDEX) {
|
|
88
|
+
this.handle = this.declare("string");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Make the dtype decision: a dict when every sampled value is text and the cardinality is low
|
|
94
|
+
* and no column of the name exists yet; inference otherwise. A column the sink already holds
|
|
95
|
+
* (a caller's) receives the cell text when it is a string or dict column and the parsed value
|
|
96
|
+
* otherwise. The sample is flushed either way; a sampled value the sink refuses (a caller's
|
|
97
|
+
* typed column of the name) is recorded as an issue of this column and the flush continues.
|
|
98
|
+
*/
|
|
99
|
+
decide() {
|
|
100
|
+
this.decided = true;
|
|
101
|
+
const existing = this.lookup();
|
|
102
|
+
if (existing !== INVALID_INDEX) {
|
|
103
|
+
this.handle = existing;
|
|
104
|
+
this.text = this.holdsText();
|
|
105
|
+
}
|
|
106
|
+
else if (this.candidate && this.heuristic.decide() === "dict") {
|
|
107
|
+
this.dict = true;
|
|
108
|
+
this.text = true;
|
|
109
|
+
this.handle = this.declare("dict");
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.writer = new TextCellWriter(this.name, this.domain, this.sink, this.report);
|
|
113
|
+
}
|
|
114
|
+
const rows = this.pendingRows;
|
|
115
|
+
const texts = this.pendingTexts;
|
|
116
|
+
for (let i = 0; i < rows.length; i++) {
|
|
117
|
+
try {
|
|
118
|
+
this.push(rows[i], texts[i]);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
this.report.recordError(err, { element: this.name });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
rows.length = 0;
|
|
125
|
+
texts.length = 0;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Push one value: text into a dict or a caller's text column, the parsed scalar into a caller's
|
|
129
|
+
* typed column, and everything else through the inferred-column writer.
|
|
130
|
+
* @param row - the node or edge index
|
|
131
|
+
* @param text - the cell text
|
|
132
|
+
*/
|
|
133
|
+
push(row, text) {
|
|
134
|
+
if (this.writer !== null) {
|
|
135
|
+
this.writer.write(row, text);
|
|
136
|
+
this.handle = this.writer.column;
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const value = this.text ? text : parseTextCell(text);
|
|
140
|
+
this.set(this.handle, row, value);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Set a cell in the sink's table for this domain.
|
|
144
|
+
* @param column - the handle or name
|
|
145
|
+
* @param row - the row
|
|
146
|
+
* @param value - the value
|
|
147
|
+
*/
|
|
148
|
+
set(column, row, value) {
|
|
149
|
+
if (this.domain === "node") {
|
|
150
|
+
this.sink.setNodeValue(column, row, value);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.sink.setEdgeValue(column, row, value);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* The sink's handle for this column's name.
|
|
158
|
+
* @returns the handle, or INVALID_INDEX when the sink has no such column yet
|
|
159
|
+
*/
|
|
160
|
+
lookup() {
|
|
161
|
+
return this.domain === "node" ? this.sink.nodeColumn(this.name) : this.sink.edgeColumn(this.name);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Whether the sink's existing column of this name is a string or dict column, probed through
|
|
165
|
+
* the sink's declare (the same shape returns the existing handle, another is E_COLUMN_EXISTS).
|
|
166
|
+
* @returns true when cell text is what the column holds
|
|
167
|
+
*/
|
|
168
|
+
holdsText() {
|
|
169
|
+
for (const dtype of ["string", "dict"]) {
|
|
170
|
+
try {
|
|
171
|
+
this.declare(dtype);
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if (!(err instanceof GraphFormatError) || err.code !== "E_COLUMN_EXISTS") {
|
|
176
|
+
throw err;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Declare the column with a fixed dtype.
|
|
184
|
+
* @param dtype - dict or string
|
|
185
|
+
* @returns the handle
|
|
186
|
+
*/
|
|
187
|
+
declare(dtype) {
|
|
188
|
+
const decl = { name: this.name, dtype, nullable: true, origin: { format: "csv" } };
|
|
189
|
+
return this.domain === "node" ? this.sink.declareNodeColumn(decl) : this.sink.declareEdgeColumn(decl);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../../src/formats/csv/values.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DOT / Graphviz exporter (design section 8.5; research note 07 section 9). Writes one
|
|
3
|
+
* `[strict] graph | digraph [name] { ... }` with the graph attributes first, every node in index
|
|
4
|
+
* order (a node statement carrying its set cells as attributes, or a `subgraph` block for a cluster
|
|
5
|
+
* container node with its members nested inside), then every logical edge in index order with its
|
|
6
|
+
* explicit weight, `key` (the edge id role), ports and attributes.
|
|
7
|
+
*
|
|
8
|
+
* What the format keeps and what check() reports: any id and any text (DOT quotes everything
|
|
9
|
+
* except a text ending in a backslash, which the lexer cannot read back); bool / i32 / f64 cells
|
|
10
|
+
* (f64 written with a decimal point so the dtype survives re-import; other numeric dtypes are
|
|
11
|
+
* written and read back inferred); containment through the parent role (clusters); graph
|
|
12
|
+
* attributes; node positions as `pos="x,y"`. Mixed direction is folded per onMixedDirection
|
|
13
|
+
* (DOT has none); lists, json, defaults, options, temporal and visual roles cannot be written.
|
|
14
|
+
*/
|
|
15
|
+
import { type GraphExporter } from "../../types.js";
|
|
16
|
+
/** The DOT exporter's format-specific options. */
|
|
17
|
+
export interface DotExportOptions {
|
|
18
|
+
/** The indentation of one nesting level; four spaces by default. */
|
|
19
|
+
indent?: string | undefined;
|
|
20
|
+
/** The graph name to write; `meta.name` by default, null for an anonymous graph. */
|
|
21
|
+
name?: string | null | undefined;
|
|
22
|
+
/** Whether to write `strict`; by default when `meta.extra.dot.strict` is true. */
|
|
23
|
+
strict?: boolean | undefined;
|
|
24
|
+
}
|
|
25
|
+
/** The LossNote codes of the DOT exporter; the shared ones are LOSS's. */
|
|
26
|
+
export declare const DOT_LOSS: Readonly<{
|
|
27
|
+
/** An id, name or text with a backslash before a quote or at its end cannot be written as a DOT quoted string; export() throws. */
|
|
28
|
+
TRAILING_BACKSLASH: "E_DOT_TRAILING_BACKSLASH";
|
|
29
|
+
/** A non-finite f32 / f64 cell has no numeric DOT spelling and reads back as text. */
|
|
30
|
+
NON_FINITE: "W_DOT_NON_FINITE";
|
|
31
|
+
/** Text cells that look like numbers or booleans read back as such (DOT attribute values are untyped). */
|
|
32
|
+
TEXT_INFERRED: "W_TEXT_INFERRED";
|
|
33
|
+
/** A plain column named like an attribute the exporter writes for a role (weight, key, pos) is not written. */
|
|
34
|
+
ATTRIBUTE_CLASH: "W_DOT_ATTRIBUTE_CLASH";
|
|
35
|
+
/** A mutual pair is written as two directed edges. */
|
|
36
|
+
MUTUAL_EXPANDED: "W_MUTUAL_EXPANDED";
|
|
37
|
+
/** A parents (multi-parent) column cannot be written; DOT clusters nest. */
|
|
38
|
+
PARENTS_DROPPED: "W_PARENTS_DROPPED";
|
|
39
|
+
/** A position column that is not a node column of 2 or 3 components is not written. */
|
|
40
|
+
POSITION_SHAPE: "W_DOT_POSITION_SHAPE";
|
|
41
|
+
/** An id whose text reads back as the other type under ids: "canonical" (1.5 as text, "1" as 1). */
|
|
42
|
+
ID_TEXT_TYPE: "W_ID_TEXT_TYPE";
|
|
43
|
+
/** A declared column whose every row is unset is not written (DOT writes cells, never declarations). */
|
|
44
|
+
EMPTY_COLUMN_DROPPED: "W_EMPTY_COLUMN_DROPPED";
|
|
45
|
+
/** A role-less column named `label` reads back with the label role. */
|
|
46
|
+
ROLE_ASSUMED: "W_ROLE_ASSUMED";
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* The exporter plugin for DOT / Graphviz text (design section 12.4).
|
|
50
|
+
*/
|
|
51
|
+
export declare const dotExporter: GraphExporter<DotExportOptions>;
|
|
52
|
+
//# sourceMappingURL=exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../../src/formats/dot/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH,OAAO,EAAqD,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAatH,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC7B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED,0EAA0E;AAC1E,eAAO,MAAM,QAAQ;IACjB,mIAAmI;;IAEnI,sFAAsF;;IAEtF,0GAA0G;;IAE1G,+GAA+G;;IAE/G,sDAAsD;;IAEtD,4EAA4E;;IAE5E,uFAAuF;;IAEvF,oGAAoG;;IAEpG,wGAAwG;;IAExG,uEAAuE;;EAEzE,CAAC;AAsFH;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,gBAAgB,CAwCtD,CAAC"}
|