@loaders.gl/graphs 4.5.3 → 5.0.0-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +122 -10
  3. package/dist/dot-loader-types.d.ts +40 -3
  4. package/dist/dot-loader-types.d.ts.map +1 -1
  5. package/dist/dot-loader-types.js +8 -2
  6. package/dist/dot-loader-types.js.map +1 -1
  7. package/dist/dot-loader.cjs +1449 -108
  8. package/dist/dot-loader.cjs.map +3 -4
  9. package/dist/dot-loader.d.ts +11 -6
  10. package/dist/dot-loader.d.ts.map +1 -1
  11. package/dist/dot-loader.js +3 -3
  12. package/dist/dot-loader.js.map +1 -1
  13. package/dist/dot-types.d.ts +6 -1
  14. package/dist/dot-types.d.ts.map +1 -1
  15. package/dist/gexf-loader-types.d.ts +53 -0
  16. package/dist/gexf-loader-types.d.ts.map +1 -0
  17. package/dist/gexf-loader-types.js +26 -0
  18. package/dist/gexf-loader-types.js.map +1 -0
  19. package/dist/gexf-loader.cjs +1304 -0
  20. package/dist/gexf-loader.cjs.map +6 -0
  21. package/dist/gexf-loader.d.ts +24 -0
  22. package/dist/gexf-loader.d.ts.map +1 -0
  23. package/dist/gexf-loader.js +13 -0
  24. package/dist/gexf-loader.js.map +1 -0
  25. package/dist/gexf-types.d.ts +16 -0
  26. package/dist/gexf-types.d.ts.map +1 -0
  27. package/dist/gexf-types.js +5 -0
  28. package/dist/gexf-types.js.map +1 -0
  29. package/dist/graph-types.d.ts +28 -0
  30. package/dist/graph-types.d.ts.map +1 -1
  31. package/dist/graphml-loader-types.d.ts +39 -3
  32. package/dist/graphml-loader-types.d.ts.map +1 -1
  33. package/dist/graphml-loader-types.js +8 -2
  34. package/dist/graphml-loader-types.js.map +1 -1
  35. package/dist/graphml-loader.cjs +1006 -61
  36. package/dist/graphml-loader.cjs.map +3 -4
  37. package/dist/graphml-loader.d.ts +11 -6
  38. package/dist/graphml-loader.d.ts.map +1 -1
  39. package/dist/graphml-loader.js +3 -3
  40. package/dist/graphml-loader.js.map +1 -1
  41. package/dist/index.cjs +1452 -470
  42. package/dist/index.cjs.map +3 -4
  43. package/dist/index.d.ts +9 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +3 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/build-graph-tables.d.ts +4 -0
  48. package/dist/lib/build-graph-tables.d.ts.map +1 -0
  49. package/dist/lib/build-graph-tables.js +143 -0
  50. package/dist/lib/build-graph-tables.js.map +1 -0
  51. package/dist/lib/parse-dot.d.ts +3 -1
  52. package/dist/lib/parse-dot.d.ts.map +1 -1
  53. package/dist/lib/parse-dot.js +41 -24
  54. package/dist/lib/parse-dot.js.map +1 -1
  55. package/dist/lib/parse-gexf.d.ts +5 -0
  56. package/dist/lib/parse-gexf.d.ts.map +1 -0
  57. package/dist/lib/parse-gexf.js +380 -0
  58. package/dist/lib/parse-gexf.js.map +1 -0
  59. package/dist/lib/parse-graphml.d.ts +2 -1
  60. package/dist/lib/parse-graphml.d.ts.map +1 -1
  61. package/dist/lib/parse-graphml.js +50 -27
  62. package/dist/lib/parse-graphml.js.map +1 -1
  63. package/package.json +15 -6
  64. package/src/dot-loader-types.ts +21 -4
  65. package/src/dot-loader.ts +7 -4
  66. package/src/dot-types.ts +7 -1
  67. package/src/gexf-loader-types.ts +41 -0
  68. package/src/gexf-loader.ts +17 -0
  69. package/src/gexf-types.ts +21 -0
  70. package/src/graph-types.ts +35 -0
  71. package/src/graphml-loader-types.ts +20 -4
  72. package/src/graphml-loader.ts +7 -4
  73. package/src/index.ts +11 -2
  74. package/src/lib/build-graph-tables.ts +208 -0
  75. package/src/lib/parse-dot.ts +47 -24
  76. package/src/lib/parse-gexf.ts +388 -0
  77. package/src/lib/parse-graphml.ts +86 -34
@@ -2,19 +2,19 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { XMLParser } from 'fast-xml-parser';
5
+ import { buildGraphTables } from "./build-graph-tables.js";
5
6
  const XML_ATTRIBUTE_PREFIX = '@_';
6
7
  const XML_TEXT_KEY = '#text';
7
8
  const graphmlParser = new XMLParser({
8
9
  ignoreAttributes: false,
9
10
  attributeNamePrefix: XML_ATTRIBUTE_PREFIX,
10
11
  textNodeName: XML_TEXT_KEY,
11
- trimValues: true,
12
+ trimValues: false,
12
13
  parseAttributeValue: false,
13
14
  parseTagValue: false,
14
15
  removeNSPrefix: true
15
16
  });
16
- /** Parses the first GraphML graph into framework-independent node and edge records. */
17
- export function parseGraphML(graphml) {
17
+ export function parseGraphML(graphml, shape = 'plain-graph-data') {
18
18
  const xmlText = decodeGraphML(graphml);
19
19
  const document = graphmlParser.parse(xmlText);
20
20
  const graphmlRoot = getGraphMLRoot(document);
@@ -25,17 +25,33 @@ export function parseGraphML(graphml) {
25
25
  if (!graphElement) {
26
26
  throw new Error('GraphML document does not contain a <graph> element.');
27
27
  }
28
- const keyDefinitions = collectKeyDefinitions(graphmlRoot, graphElement);
28
+ const keyDefinitions = collectKeyDefinitions(graphmlRoot, graphElement, shape !== 'plain-graph-data');
29
29
  const defaultDirected = parseEdgeDefault(graphElement[`${XML_ATTRIBUTE_PREFIX}edgedefault`]);
30
- const nodes = normalizeArray(graphElement.node).map((node) => parseNode(node, keyDefinitions));
31
- const edges = normalizeArray(graphElement.edge).map((edge, index) => parseEdge(edge, index, keyDefinitions, defaultDirected));
32
- const filteredNodes = nodes.filter((node) => Boolean(node));
33
- const filteredEdges = edges.filter((edge) => Boolean(edge));
34
- return {
35
- shape: 'plain-graph-data',
36
- nodes: filteredNodes,
37
- edges: filteredEdges
38
- };
30
+ const declarations = { nodes: new Map(), edges: new Map() };
31
+ for (const definition of keyDefinitions.values()) {
32
+ if (definition.domain === 'all' || definition.domain === 'node')
33
+ declarations.nodes.set(definition.name, definition.type);
34
+ if (definition.domain === 'all' || definition.domain === 'edge')
35
+ declarations.edges.set(definition.name, definition.type);
36
+ }
37
+ return buildGraphTables(iterateNodes(graphElement.node, keyDefinitions), iterateEdges(graphElement.edge, keyDefinitions, defaultDirected), shape, declarations);
38
+ }
39
+ /** Emits valid nodes directly to the selected output builder. */
40
+ function* iterateNodes(nodes, definitions) {
41
+ for (const node of normalizeArray(nodes)) {
42
+ const record = parseNode(node, definitions);
43
+ if (record)
44
+ yield record;
45
+ }
46
+ }
47
+ /** Emits valid edges while preserving generated IDs and document order. */
48
+ function* iterateEdges(edges, definitions, directed) {
49
+ let index = 0;
50
+ for (const edge of normalizeArray(edges)) {
51
+ const record = parseEdge(edge, index++, definitions, directed);
52
+ if (record)
53
+ yield record;
54
+ }
39
55
  }
40
56
  /** Decodes text or UTF-8 binary input. */
41
57
  function decodeGraphML(graphml) {
@@ -61,17 +77,20 @@ function getGraphMLRoot(document) {
61
77
  /** Selects the first graph element. */
62
78
  function getGraphElement(graphmlRoot) {
63
79
  const graph = graphmlRoot.graph;
80
+ if (typeof graph === 'string' && !graph.trim()) {
81
+ return {};
82
+ }
64
83
  if (!graph) {
65
84
  return null;
66
85
  }
67
86
  if (Array.isArray(graph)) {
68
- const firstGraph = graph.find((entry) => isObject(entry));
69
- return isObject(firstGraph) ? firstGraph : null;
87
+ const firstGraph = graph.find(entry => isObject(entry) || (typeof entry === 'string' && !entry.trim()));
88
+ return isObject(firstGraph) ? firstGraph : typeof firstGraph === 'string' ? {} : null;
70
89
  }
71
90
  return isObject(graph) ? graph : null;
72
91
  }
73
92
  /** Collects scoped keys and typed defaults. */
74
- function collectKeyDefinitions(graphmlRoot, graphElement) {
93
+ function collectKeyDefinitions(graphmlRoot, graphElement, lossless) {
75
94
  const keys = new Map();
76
95
  for (const candidate of [
77
96
  ...normalizeArray(graphmlRoot.key),
@@ -84,8 +103,8 @@ function collectKeyDefinitions(graphmlRoot, graphElement) {
84
103
  const name = String(candidate[`${XML_ATTRIBUTE_PREFIX}attr.name`] ?? id).trim();
85
104
  const type = normalizeType(candidate[`${XML_ATTRIBUTE_PREFIX}attr.type`]);
86
105
  const defaultNode = candidate.default ?? null;
87
- const defaultValue = defaultNode !== null ? castDataValue(defaultNode, type) : undefined;
88
- keys.set(id, { id, domain, name, type, defaultValue });
106
+ const defaultValue = defaultNode !== null ? castDataValue(defaultNode, type, lossless) : undefined;
107
+ keys.set(id, { id, domain, name, type, defaultValue, lossless });
89
108
  }
90
109
  }
91
110
  }
@@ -167,13 +186,15 @@ function assignAttributeFromDataEntry(entry, keyDefinitions, attributes) {
167
186
  }
168
187
  const definition = keyDefinitions.get(keyId);
169
188
  const attributeName = definition?.name ?? keyId;
170
- const value = castDataValue(entry, definition?.type ?? 'string');
189
+ const value = definition?.type === 'boolean' && extractTextContent(entry) === undefined
190
+ ? false
191
+ : castDataValue(entry, definition?.type ?? 'string', definition?.lossless);
171
192
  if (value !== undefined) {
172
193
  attributes[attributeName] = value;
173
194
  }
174
195
  }
175
196
  /** Converts GraphML scalar types while preserving unparseable numeric text. */
176
- function castDataValue(value, type) {
197
+ function castDataValue(value, type, lossless = false) {
177
198
  if (value === null || typeof value === 'undefined') {
178
199
  return undefined;
179
200
  }
@@ -184,6 +205,9 @@ function castDataValue(value, type) {
184
205
  if (type === 'boolean') {
185
206
  return parseBoolean(text);
186
207
  }
208
+ if (type === 'long' && lossless) {
209
+ return /^[+-]?\d+$/.test(text.trim()) ? BigInt(text.trim()) : text;
210
+ }
187
211
  if (type === 'int' || type === 'long') {
188
212
  const parsed = Number.parseInt(text, 10);
189
213
  return Number.isNaN(parsed) ? text : parsed;
@@ -207,12 +231,12 @@ function extractTextContent(value) {
207
231
  }
208
232
  if (isObject(value)) {
209
233
  const text = value[XML_TEXT_KEY];
210
- if (typeof text === 'string') {
211
- return text;
212
- }
213
- const nonAttributeEntries = Object.entries(value).filter(([key]) => !key.startsWith(XML_ATTRIBUTE_PREFIX));
234
+ const nonAttributeEntries = Object.entries(value).filter(([key]) => !key.startsWith(XML_ATTRIBUTE_PREFIX) && key !== XML_TEXT_KEY);
214
235
  if (nonAttributeEntries.length === 0) {
215
- return undefined;
236
+ return typeof text === 'string' ? text : undefined;
237
+ }
238
+ if (typeof text === 'string' && text.trim()) {
239
+ nonAttributeEntries.push([XML_TEXT_KEY, text]);
216
240
  }
217
241
  return JSON.stringify(Object.fromEntries(nonAttributeEntries));
218
242
  }
@@ -255,7 +279,6 @@ function normalizeType(value) {
255
279
  }
256
280
  return 'string';
257
281
  }
258
- /** Converts an edge element with its effective direction. */
259
282
  /** Reads the graph-wide default edge direction. */
260
283
  function parseEdgeDefault(value) {
261
284
  if (typeof value !== 'string') {
@@ -291,6 +314,6 @@ function parseBoolean(value) {
291
314
  if (normalized === 'false' || normalized === '0' || normalized === 'no' || normalized === 'n') {
292
315
  return false;
293
316
  }
294
- return Boolean(value);
317
+ return Boolean(normalized);
295
318
  }
296
319
  //# sourceMappingURL=parse-graphml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-graphml.js","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-graphml.js","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loaders.gl/graphs",
3
- "version": "4.5.3",
4
- "description": "Graph format parsers for DOT, GraphML, and related formats",
3
+ "version": "5.0.0-alpha.11",
4
+ "description": "Graph format parsers for DOT, GraphML, and GEXF",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "repository": {
@@ -12,6 +12,7 @@
12
12
  "graph",
13
13
  "dot",
14
14
  "graphml",
15
+ "gexf",
15
16
  "parser",
16
17
  "loader"
17
18
  ],
@@ -33,6 +34,11 @@
33
34
  "types": "./dist/dot-loader.d.ts",
34
35
  "import": "./dist/dot-loader.js",
35
36
  "require": "./dist/dot-loader.cjs"
37
+ },
38
+ "./gexf-loader": {
39
+ "types": "./dist/gexf-loader.d.ts",
40
+ "import": "./dist/gexf-loader.js",
41
+ "require": "./dist/gexf-loader.cjs"
36
42
  }
37
43
  },
38
44
  "sideEffects": false,
@@ -45,14 +51,17 @@
45
51
  "pre-build": "echo \"Nothing to build in @loaders.gl/graphs\""
46
52
  },
47
53
  "peerDependencies": {
48
- "@loaders.gl/core": "~4.5.0"
54
+ "@loaders.gl/core": "~5.0.0-alpha.0"
49
55
  },
56
+ "gitHead": "31449661e98c1c3f97bb4f8a7bcba7f19596ac00",
50
57
  "publishConfig": {
51
58
  "access": "public"
52
59
  },
53
60
  "dependencies": {
54
- "@loaders.gl/loader-utils": "4.5.3",
61
+ "@loaders.gl/loader-utils": "5.0.0-alpha.11",
62
+ "@loaders.gl/schema": "5.0.0-alpha.11",
63
+ "@loaders.gl/schema-utils": "5.0.0-alpha.11",
64
+ "apache-arrow": ">= 17.0.0",
55
65
  "fast-xml-parser": "^5.5.3"
56
- },
57
- "gitHead": "3ad4ab002b4a53ac5d88feb856117a8a1e8c5bb0"
66
+ }
58
67
  }
@@ -3,11 +3,27 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import type {Loader} from '@loaders.gl/loader-utils';
6
- import type {DOTGraphData} from './dot-types';
6
+ import type {DOTOutput} from './dot-types';
7
+ import type {GraphShape} from './graph-types';
8
+
9
+ /** Options for selecting the DOT graph output representation. */
10
+ export type DOTLoaderOptions = {
11
+ /** Format-specific graph options. */
12
+ dot?: {
13
+ /** Representation of each named table; defaults to Arrow. */
14
+ shape?: GraphShape;
15
+ };
16
+ };
7
17
 
8
18
  // @ts-ignore __VERSION__ is injected by the build.
9
19
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
10
20
 
21
+ /** Preloads the DOT parser implementation. */
22
+ async function preload() {
23
+ const {DOTLoaderWithParser} = await import('@loaders.gl/graphs/dot-loader');
24
+ return DOTLoaderWithParser;
25
+ }
26
+
11
27
  /** Metadata-only loader for Graphviz DOT documents. */
12
28
  export const DOTLoader = {
13
29
  name: 'DOT',
@@ -18,7 +34,8 @@ export const DOTLoader = {
18
34
  mimeTypes: ['text/vnd.graphviz', 'text/x-graphviz', 'application/vnd.graphviz'],
19
35
  text: true,
20
36
  worker: false,
21
- dataType: null as unknown as DOTGraphData,
37
+ dataType: null as unknown as DOTOutput,
22
38
  batchType: null as never,
23
- options: {}
24
- } as const satisfies Loader<DOTGraphData, never>;
39
+ options: {dot: {shape: 'arrow-table'}},
40
+ preload
41
+ } as const satisfies Loader<DOTOutput, never, DOTLoaderOptions>;
package/src/dot-loader.ts CHANGED
@@ -2,13 +2,16 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {DOTLoader} from './dot-loader-types';
5
+ import {DOTLoader, type DOTLoaderOptions} from './dot-loader-types';
6
6
  import {parseDOT} from './lib/parse-dot';
7
7
 
8
8
  /** Parser-bearing loader for synchronous and asynchronous DOT parsing. */
9
9
  export const DOTLoaderWithParser = {
10
10
  ...DOTLoader,
11
- parse: async (data: ArrayBuffer) => parseDOT(new TextDecoder().decode(data)),
12
- parseSync: (data: ArrayBuffer) => parseDOT(new TextDecoder().decode(data)),
13
- parseTextSync: parseDOT
11
+ parse: async (data: ArrayBuffer, options?: DOTLoaderOptions) =>
12
+ parseDOT(new TextDecoder().decode(data), options?.dot?.shape ?? 'arrow-table'),
13
+ parseSync: (data: ArrayBuffer, options?: DOTLoaderOptions) =>
14
+ parseDOT(new TextDecoder().decode(data), options?.dot?.shape ?? 'arrow-table'),
15
+ parseTextSync: (data: string, options?: DOTLoaderOptions) =>
16
+ parseDOT(data, options?.dot?.shape ?? 'arrow-table')
14
17
  };
package/src/dot-types.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import type {GraphData} from './graph-types';
5
+ import type {GraphData, GraphOutput} from './graph-types';
6
6
 
7
7
  /** Application attributes parsed from DOT. */
8
8
  type DOTAttributeMap = Record<string, unknown>;
@@ -36,3 +36,9 @@ export type DOTGraphData = GraphData & {
36
36
  /** DOT graph identity, direction, strictness, attributes, and subgraphs. */
37
37
  metadata: DOTMetadata;
38
38
  };
39
+
40
+ /** DOT tables or compatibility records with graph metadata. */
41
+ export type DOTOutput = GraphOutput & {
42
+ /** Graph identity, defaults, and subgraph descriptors. */
43
+ metadata: DOTMetadata;
44
+ };
@@ -0,0 +1,41 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {Loader} from '@loaders.gl/loader-utils';
6
+ import type {GraphShape} from './graph-types';
7
+ import type {GEXFOutput} from './gexf-types';
8
+
9
+ /** Options for selecting the GEXF graph output representation. */
10
+ export type GEXFLoaderOptions = {
11
+ /** GEXF-specific graph options. */
12
+ gexf?: {
13
+ /** Representation of each named table; defaults to Arrow. */
14
+ shape?: GraphShape;
15
+ };
16
+ };
17
+
18
+ // @ts-ignore __VERSION__ is injected by the build.
19
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
20
+
21
+ /** Preloads the GEXF parser implementation. */
22
+ async function preload() {
23
+ const {GEXFLoaderWithParser} = await import('@loaders.gl/graphs/gexf-loader');
24
+ return GEXFLoaderWithParser;
25
+ }
26
+
27
+ /** Metadata-only loader for static GEXF 1.2 and 1.3 documents. */
28
+ export const GEXFLoader = {
29
+ name: 'GEXF',
30
+ id: 'gexf',
31
+ module: 'graphs',
32
+ version: VERSION,
33
+ extensions: ['gexf'],
34
+ mimeTypes: ['application/gexf+xml'],
35
+ text: true,
36
+ worker: false,
37
+ dataType: null as unknown as GEXFOutput,
38
+ batchType: null as never,
39
+ options: {gexf: {shape: 'arrow-table'}},
40
+ preload
41
+ } as const satisfies Loader<GEXFOutput, never, GEXFLoaderOptions>;
@@ -0,0 +1,17 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {GEXFLoader, type GEXFLoaderOptions} from './gexf-loader-types';
6
+ import {parseGEXF} from './lib/parse-gexf';
7
+
8
+ /** Parser-bearing loader for synchronous and asynchronous GEXF parsing. */
9
+ export const GEXFLoaderWithParser = {
10
+ ...GEXFLoader,
11
+ parse: async (data: ArrayBuffer, options?: GEXFLoaderOptions) =>
12
+ parseGEXF(data, options?.gexf?.shape ?? 'arrow-table'),
13
+ parseSync: (data: ArrayBuffer, options?: GEXFLoaderOptions) =>
14
+ parseGEXF(data, options?.gexf?.shape ?? 'arrow-table'),
15
+ parseTextSync: (data: string, options?: GEXFLoaderOptions) =>
16
+ parseGEXF(data, options?.gexf?.shape ?? 'arrow-table')
17
+ };
@@ -0,0 +1,21 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import type {GraphOutput} from './graph-types';
6
+
7
+ /** Static GEXF document metadata, retained in every output shape. */
8
+ export type GEXFMetadata = {
9
+ /** Document format version, when supplied. */
10
+ version?: string;
11
+ /** Default direction used by edges without a type override. */
12
+ directed: boolean;
13
+ /** Document author, description, keywords, and modification date. */
14
+ attributes: Record<string, string>;
15
+ };
16
+
17
+ /** Standard graph tables or plain records with GEXF document metadata. */
18
+ export type GEXFOutput = GraphOutput & {
19
+ /** Document metadata and graph-wide direction. */
20
+ metadata: GEXFMetadata;
21
+ };
@@ -2,6 +2,8 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
+ import type {ArrowTable, ObjectRowTable, Tables} from '@loaders.gl/schema';
6
+
5
7
  /** A graph node with its original identifier and application attributes. */
6
8
  export type GraphNode = {
7
9
  /** Original node identifier. */
@@ -31,3 +33,36 @@ export type GraphData = {
31
33
  /** Edges in document order. */
32
34
  edges: GraphEdge[];
33
35
  };
36
+
37
+ /** Standard table representations supported by graph loaders. */
38
+ export type GraphShape = 'arrow-table' | 'object-row-table' | 'plain-graph-data';
39
+
40
+ /** Named node and edge tables in document order. */
41
+ export type GraphTables<TableType = ArrowTable> = Tables<TableType> & {
42
+ /** Node table followed by edge table. */
43
+ tables: [{name: 'nodes'; table: TableType}, {name: 'edges'; table: TableType}];
44
+ };
45
+
46
+ /** Graph loader output, with Arrow tables as the default representation. */
47
+ export type GraphOutput = GraphTables | GraphTables<ObjectRowTable> | GraphData;
48
+
49
+ /** Scalar and list types declared by graph format attributes. */
50
+ export type GraphAttributeType =
51
+ | 'boolean'
52
+ | 'int'
53
+ | 'long'
54
+ | 'float'
55
+ | 'double'
56
+ | 'string'
57
+ | {
58
+ /** Declared element type for a GEXF list attribute. */
59
+ list: GraphAttributeType;
60
+ };
61
+
62
+ /** Declared application attribute schemas for each graph table. */
63
+ export type GraphAttributeSchemas = {
64
+ /** Declared node attributes, including keys with no values. */
65
+ nodes: Map<string, GraphAttributeType>;
66
+ /** Declared edge attributes, including keys with no values. */
67
+ edges: Map<string, GraphAttributeType>;
68
+ };
@@ -3,11 +3,26 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  import type {Loader} from '@loaders.gl/loader-utils';
6
- import type {GraphData} from './graph-types';
6
+ import type {GraphOutput, GraphShape} from './graph-types';
7
+
8
+ /** Options for selecting the GraphML graph output representation. */
9
+ export type GraphMLLoaderOptions = {
10
+ /** Format-specific graph options. */
11
+ graphml?: {
12
+ /** Representation of each named table; defaults to Arrow. */
13
+ shape?: GraphShape;
14
+ };
15
+ };
7
16
 
8
17
  // @ts-ignore __VERSION__ is injected by the build.
9
18
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
10
19
 
20
+ /** Preloads the GraphML parser implementation. */
21
+ async function preload() {
22
+ const {GraphMLLoaderWithParser} = await import('@loaders.gl/graphs/graphml-loader');
23
+ return GraphMLLoaderWithParser;
24
+ }
25
+
11
26
  /** Metadata-only loader for GraphML 1.0 documents. */
12
27
  export const GraphMLLoader = {
13
28
  name: 'GraphML',
@@ -18,7 +33,8 @@ export const GraphMLLoader = {
18
33
  mimeTypes: ['application/graphml+xml'],
19
34
  text: true,
20
35
  worker: false,
21
- dataType: null as unknown as GraphData,
36
+ dataType: null as unknown as GraphOutput,
22
37
  batchType: null as never,
23
- options: {}
24
- } as const satisfies Loader<GraphData, never>;
38
+ options: {graphml: {shape: 'arrow-table'}},
39
+ preload
40
+ } as const satisfies Loader<GraphOutput, never, GraphMLLoaderOptions>;
@@ -2,13 +2,16 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {GraphMLLoader} from './graphml-loader-types';
5
+ import {GraphMLLoader, type GraphMLLoaderOptions} from './graphml-loader-types';
6
6
  import {parseGraphML} from './lib/parse-graphml';
7
7
 
8
8
  /** Parser-bearing loader for synchronous and asynchronous GraphML parsing. */
9
9
  export const GraphMLLoaderWithParser = {
10
10
  ...GraphMLLoader,
11
- parse: async (data: ArrayBuffer) => parseGraphML(data),
12
- parseSync: parseGraphML,
13
- parseTextSync: parseGraphML
11
+ parse: async (data: ArrayBuffer, options?: GraphMLLoaderOptions) =>
12
+ parseGraphML(data, options?.graphml?.shape ?? 'arrow-table'),
13
+ parseSync: (data: ArrayBuffer, options?: GraphMLLoaderOptions) =>
14
+ parseGraphML(data, options?.graphml?.shape ?? 'arrow-table'),
15
+ parseTextSync: (data: string, options?: GraphMLLoaderOptions) =>
16
+ parseGraphML(data, options?.graphml?.shape ?? 'arrow-table')
14
17
  };
package/src/index.ts CHANGED
@@ -2,7 +2,16 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- export {GraphMLLoaderWithParser as GraphMLLoader} from './graphml-loader';
5
+ export {GraphMLLoader} from './graphml-loader-types';
6
6
  export type {GraphData, GraphNode, GraphEdge} from './graph-types';
7
- export {DOTLoaderWithParser as DOTLoader} from './dot-loader';
7
+ export {DOTLoader} from './dot-loader-types';
8
8
  export type {DOTGraphData, DOTMetadata, DOTSubgraph} from './dot-types';
9
+
10
+ export type {GraphShape, GraphTables, GraphOutput} from './graph-types';
11
+ export type {DOTOutput} from './dot-types';
12
+ export type {DOTLoaderOptions} from './dot-loader-types';
13
+ export type {GraphMLLoaderOptions} from './graphml-loader-types';
14
+
15
+ export {GEXFLoader} from './gexf-loader-types';
16
+ export type {GEXFLoaderOptions} from './gexf-loader-types';
17
+ export type {GEXFMetadata, GEXFOutput} from './gexf-types';