@loaders.gl/graphs 5.0.0-alpha.9 → 5.0.0-beta.2

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 (84) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +123 -4
  3. package/THIRD-PARTY-NOTICES.md +17 -0
  4. package/dist/dot-loader-types.cjs +59 -0
  5. package/dist/dot-loader-types.cjs.map +7 -0
  6. package/dist/dot-loader-types.d.ts +25 -8
  7. package/dist/dot-loader-types.d.ts.map +1 -1
  8. package/dist/dot-loader-types.js +2 -2
  9. package/dist/dot-loader-types.js.map +1 -1
  10. package/dist/dot-loader.cjs +638 -47
  11. package/dist/dot-loader.cjs.map +3 -3
  12. package/dist/dot-loader.d.ts +10 -6
  13. package/dist/dot-loader.d.ts.map +1 -1
  14. package/dist/dot-loader.js +3 -3
  15. package/dist/dot-loader.js.map +1 -1
  16. package/dist/dot-types.d.ts +6 -1
  17. package/dist/dot-types.d.ts.map +1 -1
  18. package/dist/gexf-loader-types.cjs +59 -0
  19. package/dist/gexf-loader-types.cjs.map +7 -0
  20. package/dist/gexf-loader-types.d.ts +53 -0
  21. package/dist/gexf-loader-types.d.ts.map +1 -0
  22. package/dist/gexf-loader-types.js +26 -0
  23. package/dist/gexf-loader-types.js.map +1 -0
  24. package/dist/gexf-loader.cjs +2940 -0
  25. package/dist/gexf-loader.cjs.map +6 -0
  26. package/dist/gexf-loader.d.ts +24 -0
  27. package/dist/gexf-loader.d.ts.map +1 -0
  28. package/dist/gexf-loader.js +13 -0
  29. package/dist/gexf-loader.js.map +1 -0
  30. package/dist/gexf-types.d.ts +16 -0
  31. package/dist/gexf-types.d.ts.map +1 -0
  32. package/dist/gexf-types.js +5 -0
  33. package/dist/gexf-types.js.map +1 -0
  34. package/dist/graph-types.d.ts +28 -0
  35. package/dist/graph-types.d.ts.map +1 -1
  36. package/dist/graphml-loader-types.cjs +59 -0
  37. package/dist/graphml-loader-types.cjs.map +7 -0
  38. package/dist/graphml-loader-types.d.ts +24 -8
  39. package/dist/graphml-loader-types.d.ts.map +1 -1
  40. package/dist/graphml-loader-types.js +2 -2
  41. package/dist/graphml-loader-types.js.map +1 -1
  42. package/dist/graphml-loader.cjs +2303 -69
  43. package/dist/graphml-loader.cjs.map +3 -3
  44. package/dist/graphml-loader.d.ts +10 -6
  45. package/dist/graphml-loader.d.ts.map +1 -1
  46. package/dist/graphml-loader.js +3 -3
  47. package/dist/graphml-loader.js.map +1 -1
  48. package/dist/index.cjs +56 -1085
  49. package/dist/index.cjs.map +4 -3
  50. package/dist/index.d.ts +7 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +1 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/lib/build-graph-tables.d.ts +4 -0
  55. package/dist/lib/build-graph-tables.d.ts.map +1 -0
  56. package/dist/lib/build-graph-tables.js +143 -0
  57. package/dist/lib/build-graph-tables.js.map +1 -0
  58. package/dist/lib/parse-dot.d.ts +3 -1
  59. package/dist/lib/parse-dot.d.ts.map +1 -1
  60. package/dist/lib/parse-dot.js +38 -21
  61. package/dist/lib/parse-dot.js.map +1 -1
  62. package/dist/lib/parse-gexf.d.ts +5 -0
  63. package/dist/lib/parse-gexf.d.ts.map +1 -0
  64. package/dist/lib/parse-gexf.js +382 -0
  65. package/dist/lib/parse-gexf.js.map +1 -0
  66. package/dist/lib/parse-graphml.d.ts +2 -1
  67. package/dist/lib/parse-graphml.d.ts.map +1 -1
  68. package/dist/lib/parse-graphml.js +54 -31
  69. package/dist/lib/parse-graphml.js.map +1 -1
  70. package/package.json +18 -8
  71. package/src/dot-loader-types.ts +15 -5
  72. package/src/dot-loader.ts +7 -4
  73. package/src/dot-types.ts +7 -1
  74. package/src/gexf-loader-types.ts +41 -0
  75. package/src/gexf-loader.ts +17 -0
  76. package/src/gexf-types.ts +21 -0
  77. package/src/graph-types.ts +35 -0
  78. package/src/graphml-loader-types.ts +14 -5
  79. package/src/graphml-loader.ts +7 -4
  80. package/src/index.ts +9 -0
  81. package/src/lib/build-graph-tables.ts +208 -0
  82. package/src/lib/parse-dot.ts +44 -21
  83. package/src/lib/parse-gexf.ts +390 -0
  84. package/src/lib/parse-graphml.ts +92 -40
@@ -0,0 +1,382 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { parseXMLSync, validateXML } from '@loaders.gl/documents/xml-parser';
5
+ import { buildGraphTables } from "./build-graph-tables.js";
6
+ const XML_OPTIONS = {
7
+ ignoreAttributes: false,
8
+ parseAttributeValue: false,
9
+ parseTagValue: false,
10
+ trimValues: false,
11
+ attributeNamePrefix: '@_',
12
+ textNodeName: '#text'
13
+ };
14
+ const GEXF_NAMESPACE = /^https?:\/\/(?:www\.)?gexf.net\/1\.(?:2(?:draft)?|3)(\/viz)?$/;
15
+ const TEMPORAL_ATTRIBUTES = [
16
+ 'start',
17
+ 'end',
18
+ 'startopen',
19
+ 'endopen',
20
+ 'timestamp',
21
+ 'timestamps',
22
+ 'intervals'
23
+ ];
24
+ /** Parses a static GEXF document directly into the selected graph representation. */
25
+ export function parseGEXF(input, shape = 'arrow-table') {
26
+ const text = typeof input === 'string' ? input : new TextDecoder().decode(input);
27
+ const validation = validateXML(text);
28
+ if (validation !== true)
29
+ throw new Error(`Invalid GEXF XML: ${validation.message}`);
30
+ // External and custom entity declarations are outside the supported format subset.
31
+ if (/<!DOCTYPE\s/i.test(text))
32
+ throw new Error('GEXF document types are unsupported.');
33
+ const document = normalizeNamespaces(parseXMLSync(text, XML_OPTIONS), {});
34
+ const root = getElement(document.gexf, 'gexf');
35
+ const version = root['@_version'];
36
+ if (version && !['1.2', '1.2draft', '1.3'].includes(version)) {
37
+ throw new Error(`Unsupported GEXF version: ${version}`);
38
+ }
39
+ const graph = getElement(root.graph, 'graph');
40
+ const directed = parseDirection(graph['@_defaultedgetype'] ?? 'undirected');
41
+ const definitions = {
42
+ nodes: new Map(),
43
+ edges: new Map()
44
+ };
45
+ for (const attributes of getElements(graph.attributes)) {
46
+ const domain = attributes['@_class'];
47
+ if (domain !== 'node' && domain !== 'edge')
48
+ throw new Error('GEXF attributes require a node or edge class.');
49
+ const scoped = domain === 'node' ? definitions.nodes : definitions.edges;
50
+ const names = new Set(Array.from(scoped.values(), definition => definition.name));
51
+ for (const attribute of getElements(attributes.attribute)) {
52
+ const identifier = requireAttribute(attribute, 'id');
53
+ const name = requireAttribute(attribute, 'title');
54
+ if (name === 'gexf' || names.has(name) || scoped.has(identifier)) {
55
+ throw new Error(`Duplicate or reserved GEXF attribute: ${name}`);
56
+ }
57
+ names.add(name);
58
+ const type = parseAttributeType(requireAttribute(attribute, 'type'));
59
+ scoped.set(identifier, {
60
+ name,
61
+ type,
62
+ defaultValue: attribute.default === undefined
63
+ ? undefined
64
+ : castValue(readTextContent(attribute.default), type)
65
+ });
66
+ }
67
+ }
68
+ const nodeElements = getElements(getContainer(graph.nodes).node);
69
+ const edgeElements = getElements(getContainer(graph.edges).edge);
70
+ const nodeIdentifiers = new Set();
71
+ for (const node of nodeElements) {
72
+ const identifier = requireAttribute(node, 'id');
73
+ if (nodeIdentifiers.has(identifier))
74
+ throw new Error(`Duplicate GEXF node ID: ${identifier}`);
75
+ nodeIdentifiers.add(identifier);
76
+ }
77
+ const edgeIdentifiers = new Set(edgeElements
78
+ .map(edge => edge['@_id'])
79
+ .filter((identifier) => typeof identifier === 'string'));
80
+ const seenEdges = new Set();
81
+ /** Emits node records directly to the table builder. */
82
+ function* iterateNodes() {
83
+ for (const node of nodeElements)
84
+ yield parseRecord(node, definitions.nodes);
85
+ }
86
+ /** Emits edge records without materializing a plain graph. */
87
+ function* iterateEdges() {
88
+ for (const [index, edge] of edgeElements.entries()) {
89
+ const sourceId = requireAttribute(edge, 'source');
90
+ const targetId = requireAttribute(edge, 'target');
91
+ if (!nodeIdentifiers.has(sourceId) || !nodeIdentifiers.has(targetId)) {
92
+ throw new Error('GEXF edge references an undeclared node.');
93
+ }
94
+ let identifier = edge['@_id'] === undefined ? undefined : requireAttribute(edge, 'id');
95
+ if (identifier === undefined) {
96
+ identifier = `edge-${index}`;
97
+ while (edgeIdentifiers.has(identifier))
98
+ identifier = `_${identifier}`;
99
+ edgeIdentifiers.add(identifier);
100
+ }
101
+ if (seenEdges.has(identifier))
102
+ throw new Error(`Duplicate GEXF edge ID: ${identifier}`);
103
+ seenEdges.add(identifier);
104
+ yield {
105
+ ...parseRecord(edge, definitions.edges, identifier),
106
+ sourceId,
107
+ targetId,
108
+ directed: edge['@_type'] === undefined ? directed : parseDirection(edge['@_type'])
109
+ };
110
+ }
111
+ }
112
+ const metadataAttributes = Object.create(null);
113
+ const meta = getContainer(root.meta);
114
+ for (const name of ['creator', 'description', 'keywords']) {
115
+ if (meta[name] !== undefined)
116
+ metadataAttributes[name] = readTextContent(meta[name]);
117
+ }
118
+ if (typeof meta['@_lastmodifieddate'] === 'string')
119
+ metadataAttributes.lastmodifieddate = meta['@_lastmodifieddate'];
120
+ const declarations = {
121
+ nodes: new Map(Array.from(definitions.nodes.values(), definition => [definition.name, definition.type])),
122
+ edges: new Map(Array.from(definitions.edges.values(), definition => [definition.name, definition.type]))
123
+ };
124
+ return {
125
+ ...buildGraphTables(iterateNodes(), iterateEdges(), shape, declarations),
126
+ metadata: { version, directed, attributes: metadataAttributes }
127
+ };
128
+ }
129
+ /** Resolves inherited namespace bindings without treating foreign elements as GEXF. */
130
+ function normalizeNamespaces(element, inherited) {
131
+ const namespaces = Object.assign(Object.create(null), inherited);
132
+ for (const [name, value] of Object.entries(element)) {
133
+ if (name === '@_xmlns')
134
+ namespaces[''] = String(value);
135
+ else if (name.startsWith('@_xmlns:'))
136
+ namespaces[name.slice(8)] = String(value);
137
+ }
138
+ const normalized = Object.create(null);
139
+ for (const [name, value] of Object.entries(element)) {
140
+ if (name.startsWith('@_') || name === '#text' || name.startsWith('?')) {
141
+ normalized[name] = value;
142
+ continue;
143
+ }
144
+ const separator = name.indexOf(':');
145
+ const prefix = separator < 0 ? '' : name.slice(0, separator);
146
+ const localName = name.slice(separator + 1);
147
+ // Namespace declarations on this child also scope the child's own name.
148
+ const children = Array.isArray(value) ? value : [value];
149
+ for (const child of children) {
150
+ const object = typeof child === 'object' && child !== null ? child : {};
151
+ const namespace = object[prefix ? `@_xmlns:${prefix}` : '@_xmlns'] ?? namespaces[prefix];
152
+ const match = typeof namespace === 'string' ? GEXF_NAMESPACE.exec(namespace) : null;
153
+ const key = match
154
+ ? `${match[1] ? 'viz:' : ''}${localName}`
155
+ : namespace || prefix
156
+ ? `foreign:${name}`
157
+ : localName;
158
+ const childValue = typeof child === 'object' && child !== null
159
+ ? match || (!namespace && !prefix)
160
+ ? normalizeNamespaces(object, namespaces)
161
+ : object
162
+ : child;
163
+ if (normalized[key] === undefined)
164
+ normalized[key] = childValue;
165
+ else
166
+ normalized[key] = [
167
+ ...(Array.isArray(normalized[key]) ? normalized[key] : [normalized[key]]),
168
+ childValue
169
+ ];
170
+ }
171
+ }
172
+ assertStaticElement(normalized);
173
+ return normalized;
174
+ }
175
+ /** Rejects temporal and hierarchical constructs that flat static tables cannot represent. */
176
+ function assertStaticElement(element) {
177
+ if ((element['@_mode'] !== undefined && element['@_mode'] !== 'static') ||
178
+ TEMPORAL_ATTRIBUTES.some(name => element[`@_${name}`] !== undefined) ||
179
+ element.spells !== undefined) {
180
+ throw new Error('Dynamic GEXF graphs and temporal values are unsupported.');
181
+ }
182
+ if (element['@_pid'] !== undefined ||
183
+ element.parents !== undefined ||
184
+ (element['@_id'] !== undefined && (element.nodes !== undefined || element.edges !== undefined))) {
185
+ throw new Error('Hierarchical GEXF graphs are unsupported.');
186
+ }
187
+ }
188
+ /** Reads a singleton element, including an empty element. */
189
+ function getElement(value, name) {
190
+ if (value === '')
191
+ return {};
192
+ if (value && typeof value === 'object' && !Array.isArray(value))
193
+ return value;
194
+ throw new Error(`GEXF requires one <${name}> element.`);
195
+ }
196
+ /** Reads scalar text from elements that also declare local namespace bindings. */
197
+ function readTextContent(value) {
198
+ if (typeof value === 'string')
199
+ return value;
200
+ const text = getElement(value, 'text')['#text'];
201
+ return typeof text === 'string' ? text : '';
202
+ }
203
+ /** Reads an optional container while rejecting repeated containers. */
204
+ function getContainer(value) {
205
+ return value === undefined ? {} : getElement(value, 'container');
206
+ }
207
+ /** Reads repeated or singleton element records. */
208
+ function getElements(value) {
209
+ if (value === undefined)
210
+ return [];
211
+ return (Array.isArray(value) ? value : [value]).map(entry => getElement(entry, 'record'));
212
+ }
213
+ /** Reads a required XML attribute without changing identifier or label whitespace. */
214
+ function requireAttribute(element, name) {
215
+ const value = element[`@_${name}`];
216
+ if (typeof value !== 'string' || value === '')
217
+ throw new Error(`GEXF requires a ${name} attribute.`);
218
+ return value;
219
+ }
220
+ /** Reads a direction while rejecting bidirectional mutual edges. */
221
+ function parseDirection(value) {
222
+ if (value !== 'directed' && value !== 'undirected')
223
+ throw new Error(`Unsupported GEXF edge type: ${String(value)}`);
224
+ return value === 'directed';
225
+ }
226
+ /** Maps supported GEXF scalar and list types to graph column declarations. */
227
+ function parseAttributeType(value) {
228
+ if (value.startsWith('list') && !value.slice(4).startsWith('list')) {
229
+ return { list: parseAttributeType(value.slice(4)) };
230
+ }
231
+ if (value === 'integer' || value === 'byte' || value === 'short')
232
+ return 'int';
233
+ if (value === 'boolean' || value === 'long' || value === 'float' || value === 'double')
234
+ return value;
235
+ if (['string', 'anyURI', 'date', 'char', 'bigdecimal', 'biginteger'].includes(value))
236
+ return 'string';
237
+ throw new Error(`Unsupported GEXF attribute type: ${value}`);
238
+ }
239
+ /** Casts exact declared values; invalid scalar text survives Arrow promotion to Utf8. */
240
+ function castValue(text, type) {
241
+ if (typeof type === 'object') {
242
+ return parseListValues(text).map(value => castValue(value, type.list));
243
+ }
244
+ if (type === 'string')
245
+ return text;
246
+ const trimmed = text.trim();
247
+ if (type === 'boolean') {
248
+ if (trimmed === 'true' || trimmed === '1')
249
+ return true;
250
+ if (trimmed === 'false' || trimmed === '0')
251
+ return false;
252
+ return text;
253
+ }
254
+ if (type === 'int' || type === 'long') {
255
+ if (!/^[+-]?\d+$/.test(trimmed))
256
+ return text;
257
+ return type === 'long'
258
+ ? BigInt(trimmed)
259
+ : Number.isSafeInteger(Number(trimmed))
260
+ ? Number(trimmed)
261
+ : text;
262
+ }
263
+ if (trimmed === 'INF')
264
+ return Infinity;
265
+ if (trimmed === '-INF')
266
+ return -Infinity;
267
+ if (trimmed === 'NaN')
268
+ return NaN;
269
+ if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(trimmed))
270
+ return text;
271
+ const number = Number(trimmed);
272
+ const represented = type === 'float' ? Math.fround(number) : number;
273
+ const nonzero = /[1-9]/.test(trimmed.split(/[eE]/)[0]);
274
+ return Number.isFinite(represented) && (represented !== 0 || !nonzero) ? number : text;
275
+ }
276
+ /** Reads bracketed and legacy lists, preserving quoted delimiters and string whitespace. */
277
+ function parseListValues(text) {
278
+ const trimmed = text.trim();
279
+ const bracketed = trimmed.startsWith('[');
280
+ if (bracketed !== trimmed.endsWith(']'))
281
+ throw new Error('Invalid GEXF list brackets.');
282
+ const contents = bracketed ? trimmed.slice(1, -1) : trimmed;
283
+ if (!contents.trim())
284
+ return [];
285
+ const values = [];
286
+ let value = '';
287
+ let quote = '';
288
+ let quoted = false;
289
+ let closed = false;
290
+ for (let index = 0; index < contents.length; index++) {
291
+ const character = contents[index];
292
+ if (quote) {
293
+ if (character === '\\' && (contents[index + 1] === quote || contents[index + 1] === '\\')) {
294
+ value += contents[++index];
295
+ }
296
+ else if (character === quote) {
297
+ quote = '';
298
+ closed = true;
299
+ }
300
+ else
301
+ value += character;
302
+ }
303
+ else if (character === ',' || (!bracketed && (character === '|' || character === ';'))) {
304
+ values.push(quoted ? value : value.trim());
305
+ value = '';
306
+ quoted = false;
307
+ closed = false;
308
+ }
309
+ else if (closed) {
310
+ if (character.trim())
311
+ throw new Error('Invalid GEXF list text after a quote.');
312
+ }
313
+ else if ((character === "'" || character === '"') && !value.trim()) {
314
+ quote = character;
315
+ quoted = true;
316
+ value = '';
317
+ }
318
+ else
319
+ value += character;
320
+ }
321
+ if (quote)
322
+ throw new Error('Unterminated GEXF list quote.');
323
+ values.push(quoted ? value : value.trim());
324
+ return values;
325
+ }
326
+ /** Converts application attributes and native GEXF properties to a collision-free record. */
327
+ function parseRecord(element, definitions, identifier) {
328
+ const attributes = Object.create(null);
329
+ for (const definition of definitions.values()) {
330
+ if (definition.defaultValue !== undefined)
331
+ attributes[definition.name] = Array.isArray(definition.defaultValue)
332
+ ? [...definition.defaultValue]
333
+ : definition.defaultValue;
334
+ }
335
+ for (const attvalue of getElements(getContainer(element.attvalues).attvalue)) {
336
+ const key = requireAttribute(attvalue, 'for');
337
+ const definition = definitions.get(key);
338
+ if (!definition)
339
+ throw new Error(`Undeclared GEXF attribute: ${key}`);
340
+ attributes[definition.name] = castValue(requireValue(attvalue), definition.type);
341
+ }
342
+ const native = Object.create(null);
343
+ if (element['@_weight'] !== undefined)
344
+ native.weight = castValue(String(element['@_weight']), 'double');
345
+ if (element['@_kind'] !== undefined)
346
+ native.kind = element['@_kind'];
347
+ const visualization = Object.create(null);
348
+ for (const name of ['color', 'position', 'size', 'shape', 'thickness']) {
349
+ const value = element[`viz:${name}`];
350
+ if (value === undefined)
351
+ continue;
352
+ const properties = Object.create(null);
353
+ for (const [key, property] of Object.entries(getElement(value, `viz:${name}`))) {
354
+ if (key.startsWith('@_') && !key.startsWith('@_xmlns')) {
355
+ const propertyName = key.slice(2);
356
+ properties[propertyName] =
357
+ ['r', 'g', 'b', 'a', 'x', 'y', 'z'].includes(propertyName) ||
358
+ (propertyName === 'value' && (name === 'size' || name === 'thickness'))
359
+ ? castValue(String(property), 'double')
360
+ : property;
361
+ }
362
+ }
363
+ visualization[name] = properties;
364
+ }
365
+ if (Object.keys(visualization).length)
366
+ native.viz = visualization;
367
+ if (Object.keys(native).length)
368
+ attributes.gexf = native;
369
+ return {
370
+ id: identifier ?? requireAttribute(element, 'id'),
371
+ label: element['@_label'],
372
+ attributes
373
+ };
374
+ }
375
+ /** Reads an attribute value, allowing the empty string. */
376
+ function requireValue(element) {
377
+ const value = element['@_value'];
378
+ if (typeof value !== 'string')
379
+ throw new Error('GEXF attvalue requires a value attribute.');
380
+ return value;
381
+ }
382
+ //# sourceMappingURL=parse-gexf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-gexf.js","sourceRoot":"","sources":["../../src/lib/parse-gexf.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import type { GraphData } from "../graph-types.js";
1
+ import type { GraphData, GraphOutput, GraphShape } from "../graph-types.js";
2
2
  /** Accepted GraphML document inputs. */
3
3
  export type GraphMLInput = string | ArrayBuffer | Uint8Array;
4
4
  /** Parses the first GraphML graph into framework-independent node and edge records. */
5
5
  export declare function parseGraphML(graphml: GraphMLInput): GraphData;
6
+ export declare function parseGraphML(graphml: GraphMLInput, shape: GraphShape): GraphOutput;
6
7
  //# sourceMappingURL=parse-graphml.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-graphml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,SAAS,EAAuB,0BAAuB;AAyCpE,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CA6B7D"}
1
+ {"version":3,"file":"parse-graphml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-graphml.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EAGT,WAAW,EACX,UAAU,EAGX,0BAAuB;AAyCxB,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAE7D,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;AAC/D,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC"}
@@ -1,22 +1,22 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { XMLParser } from 'fast-xml-parser';
4
+ import { parseXMLSync } from '@loaders.gl/documents/xml-parser';
5
+ import { buildGraphTables } from "./build-graph-tables.js";
5
6
  const XML_ATTRIBUTE_PREFIX = '@_';
6
7
  const XML_TEXT_KEY = '#text';
7
- const graphmlParser = new XMLParser({
8
+ const GRAPHML_XML_OPTIONS = {
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
- /** Parses the first GraphML graph into framework-independent node and edge records. */
17
- export function parseGraphML(graphml) {
16
+ };
17
+ export function parseGraphML(graphml, shape = 'plain-graph-data') {
18
18
  const xmlText = decodeGraphML(graphml);
19
- const document = graphmlParser.parse(xmlText);
19
+ const document = parseXMLSync(xmlText, GRAPHML_XML_OPTIONS);
20
20
  const graphmlRoot = getGraphMLRoot(document);
21
21
  if (!graphmlRoot) {
22
22
  throw new Error('GraphML document does not contain a <graphml> element.');
@@ -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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"}