@graphty/graph-io 0.3.16 → 0.3.18

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 (111) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +29 -3
  3. package/dist/chunks/{escape-D1f9-cwf.js → escape-D-gZWO26.js} +3 -2
  4. package/dist/chunks/{escape-D1f9-cwf.js.map → escape-D-gZWO26.js.map} +1 -1
  5. package/dist/chunks/{importer-D7ZcGCeb.js → importer-Br_QeAeE.js} +4 -3
  6. package/dist/chunks/{importer-D7ZcGCeb.js.map → importer-Br_QeAeE.js.map} +1 -1
  7. package/dist/chunks/{importer-CXEiicAN.js → importer-DHagxvDD.js} +4 -3
  8. package/dist/chunks/{importer-CXEiicAN.js.map → importer-DHagxvDD.js.map} +1 -1
  9. package/dist/chunks/{importer-C7mnGdr_.js → importer-Du5crN9l.js} +510 -26
  10. package/dist/chunks/importer-Du5crN9l.js.map +1 -0
  11. package/dist/chunks/importer-aNJfe0qu.js +1614 -0
  12. package/dist/chunks/importer-aNJfe0qu.js.map +1 -0
  13. package/dist/chunks/{importer-B8lsjFWx.js → importer-d0uQxFp6.js} +4 -3
  14. package/dist/chunks/{importer-B8lsjFWx.js.map → importer-d0uQxFp6.js.map} +1 -1
  15. package/dist/chunks/ontology-BnrJ4I98.js +113 -0
  16. package/dist/chunks/ontology-BnrJ4I98.js.map +1 -0
  17. package/dist/chunks/{records-IHsCfv7s.js → records-Bk9jgodz.js} +2 -2
  18. package/dist/chunks/{records-IHsCfv7s.js.map → records-Bk9jgodz.js.map} +1 -1
  19. package/dist/chunks/{writer-BtWpUaiH.js → report-BOk0p5y8.js} +181 -912
  20. package/dist/chunks/report-BOk0p5y8.js.map +1 -0
  21. package/dist/chunks/writer-GAdltGmC.js +827 -0
  22. package/dist/chunks/writer-GAdltGmC.js.map +1 -0
  23. package/dist/csv.js +4 -3
  24. package/dist/csv.js.map +1 -1
  25. package/dist/dot.js +1 -1
  26. package/dist/gexf.js +3 -2
  27. package/dist/gexf.js.map +1 -1
  28. package/dist/gml.js +3 -2
  29. package/dist/gml.js.map +1 -1
  30. package/dist/graph-io.js +191 -134
  31. package/dist/graph-io.js.map +1 -1
  32. package/dist/graphml.js +1 -1
  33. package/dist/json.js +1 -1
  34. package/dist/neo4j.js +4 -3
  35. package/dist/neo4j.js.map +1 -1
  36. package/dist/obo.d.ts +1 -0
  37. package/dist/obo.js +6 -0
  38. package/dist/obo.js.map +1 -0
  39. package/dist/pajek.js +1 -1
  40. package/dist/src/common/codes.d.ts +43 -0
  41. package/dist/src/common/codes.d.ts.map +1 -1
  42. package/dist/src/common/codes.js +43 -0
  43. package/dist/src/common/codes.js.map +1 -1
  44. package/dist/src/common/input.d.ts +9 -0
  45. package/dist/src/common/input.d.ts.map +1 -1
  46. package/dist/src/common/input.js +16 -0
  47. package/dist/src/common/input.js.map +1 -1
  48. package/dist/src/common/ontology.d.ts +59 -0
  49. package/dist/src/common/ontology.d.ts.map +1 -0
  50. package/dist/src/common/ontology.js +147 -0
  51. package/dist/src/common/ontology.js.map +1 -0
  52. package/dist/src/common/options.d.ts +12 -1
  53. package/dist/src/common/options.d.ts.map +1 -1
  54. package/dist/src/common/options.js +51 -1
  55. package/dist/src/common/options.js.map +1 -1
  56. package/dist/src/formats/json/dialect.d.ts +8 -6
  57. package/dist/src/formats/json/dialect.d.ts.map +1 -1
  58. package/dist/src/formats/json/dialect.js +26 -3
  59. package/dist/src/formats/json/dialect.js.map +1 -1
  60. package/dist/src/formats/json/importer.d.ts +324 -7
  61. package/dist/src/formats/json/importer.d.ts.map +1 -1
  62. package/dist/src/formats/json/importer.js +154 -23
  63. package/dist/src/formats/json/importer.js.map +1 -1
  64. package/dist/src/formats/json/obographs.d.ts +21 -0
  65. package/dist/src/formats/json/obographs.d.ts.map +1 -0
  66. package/dist/src/formats/json/obographs.js +476 -0
  67. package/dist/src/formats/json/obographs.js.map +1 -0
  68. package/dist/src/formats/obo/importer.d.ts +90 -0
  69. package/dist/src/formats/obo/importer.d.ts.map +1 -0
  70. package/dist/src/formats/obo/importer.js +1248 -0
  71. package/dist/src/formats/obo/importer.js.map +1 -0
  72. package/dist/src/formats/obo/index.d.ts +7 -0
  73. package/dist/src/formats/obo/index.d.ts.map +1 -0
  74. package/dist/src/formats/obo/index.js +7 -0
  75. package/dist/src/formats/obo/index.js.map +1 -0
  76. package/dist/src/formats/obo/syntax.d.ts +121 -0
  77. package/dist/src/formats/obo/syntax.d.ts.map +1 -0
  78. package/dist/src/formats/obo/syntax.js +424 -0
  79. package/dist/src/formats/obo/syntax.js.map +1 -0
  80. package/dist/src/index.d.ts +5 -4
  81. package/dist/src/index.d.ts.map +1 -1
  82. package/dist/src/index.js +4 -3
  83. package/dist/src/index.js.map +1 -1
  84. package/dist/src/registry.d.ts +21 -3
  85. package/dist/src/registry.d.ts.map +1 -1
  86. package/dist/src/registry.js +32 -1
  87. package/dist/src/registry.js.map +1 -1
  88. package/dist/src/sniff.d.ts +1 -1
  89. package/dist/src/sniff.d.ts.map +1 -1
  90. package/dist/src/sniff.js +23 -3
  91. package/dist/src/sniff.js.map +1 -1
  92. package/dist/src/types.d.ts +31 -0
  93. package/dist/src/types.d.ts.map +1 -1
  94. package/dist/src/types.js.map +1 -1
  95. package/package.json +6 -1
  96. package/src/common/codes.ts +58 -0
  97. package/src/common/input.ts +16 -0
  98. package/src/common/ontology.ts +169 -0
  99. package/src/common/options.ts +78 -2
  100. package/src/formats/json/dialect.ts +37 -7
  101. package/src/formats/json/importer.ts +206 -28
  102. package/src/formats/json/obographs.ts +563 -0
  103. package/src/formats/obo/importer.ts +1695 -0
  104. package/src/formats/obo/index.ts +7 -0
  105. package/src/formats/obo/syntax.ts +466 -0
  106. package/src/index.ts +6 -0
  107. package/src/registry.ts +38 -3
  108. package/src/sniff.ts +35 -5
  109. package/src/types.ts +40 -1
  110. package/dist/chunks/importer-C7mnGdr_.js.map +0 -1
  111. package/dist/chunks/writer-BtWpUaiH.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importer.js","sourceRoot":"","sources":["../../../../src/formats/obo/importer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The OBO subpath entry (`@graphty/graph-io/obo`, design section 1.5): the importer of the OBO
3
+ * flat file format (the Gene Ontology and the OBO Foundry ontologies), its options and its issue
4
+ * codes. OBO is read-only: there is no exporter.
5
+ */
6
+ export { OBO_ISSUE, oboImporter, type OboImportOptions } from "./importer.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/formats/obo/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The OBO subpath entry (`@graphty/graph-io/obo`, design section 1.5): the importer of the OBO
3
+ * flat file format (the Gene Ontology and the OBO Foundry ontologies), its options and its issue
4
+ * codes. OBO is read-only: there is no exporter.
5
+ */
6
+ export { OBO_ISSUE, oboImporter } from "./importer.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/formats/obo/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAyB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * The lexical layer of the OBO importer (research-obo.md section 4.1): the tag-value line, the
3
+ * hidden `!` comment, the trailing `{name="value", ...}` qualifier block, the escapes of the OBO
4
+ * guides, quoted strings and bracketed xref lists. Pure functions over one logical line; the
5
+ * importer joins backslash continuations and splits form feeds before calling them.
6
+ *
7
+ * Every function works on the RAW text (escapes still in place) and unescapes only the pieces it
8
+ * hands back, so an escaped quote, colon, comma, brace or `!` never ends a construct.
9
+ */
10
+ /**
11
+ * Remove the OBO escapes: `\n` newline, `\t` tab, `\W` space, any other `\x` the character x; a
12
+ * backslash at the very end is dropped.
13
+ * @param text - raw text
14
+ * @returns the unescaped text
15
+ */
16
+ export declare function unescapeObo(text: string): string;
17
+ /**
18
+ * Whether a raw line ends with an unescaped backslash (the 1.0 / 1.2 line continuation).
19
+ * @param line - the raw line, trailing whitespace included
20
+ * @returns true when the line continues on the next one
21
+ */
22
+ export declare function endsWithContinuation(line: string): boolean;
23
+ /** A tag-value line split at its first unescaped colon. */
24
+ interface TagValue {
25
+ /** The tag, unescaped and trimmed. */
26
+ readonly tag: string;
27
+ /** The raw text after the colon, leading whitespace removed. */
28
+ readonly rest: string;
29
+ }
30
+ /**
31
+ * Split a line at its first unescaped colon (values contain colons freely: `is_a: GO:0000001`).
32
+ * @param line - the raw line, trimmed
33
+ * @returns the tag and the rest, or null when the line has no colon
34
+ */
35
+ export declare function splitTagValue(line: string): TagValue | null;
36
+ /**
37
+ * Strip the hidden comment: an unescaped `!` outside quotes that starts the value or follows
38
+ * whitespace begins a comment running to the end of the line. A `!` glued to the text before it
39
+ * (`#!/`, `Hello!`) is text, so URLs and names are never cut. A quote opens a string only where a
40
+ * token starts, as tokenize() reads it, so the `"` of an unquoted `5" pipe` is text and does not
41
+ * hide the comment after it.
42
+ * @param rest - the raw value
43
+ * @returns the value before the comment, trailing whitespace removed
44
+ */
45
+ export declare function stripComment(rest: string): string;
46
+ /** The qualifiers of a clause: name to value (a list when a name repeats). */
47
+ export type Qualifiers = Record<string, string | string[]>;
48
+ /** A value with its trailing qualifier blocks split off. */
49
+ interface QualifiedValue {
50
+ /** The raw value without the blocks, trimmed. */
51
+ readonly value: string;
52
+ /** The qualifiers, or null when the value has none. */
53
+ readonly qualifiers: Qualifiers | null;
54
+ /** A block that closes the value but does not parse, kept in `value` as text. */
55
+ readonly badBlock: string | null;
56
+ }
57
+ /**
58
+ * Split the trailing qualifier blocks off a value: a `{...}` is a block only when it closes the
59
+ * value (after the comment was stripped); several blocks (`{a="1"}{b="2"}`, 1.2 examples) are
60
+ * merged. A closing brace whose block does not parse is left in the value and reported.
61
+ * @param value - the raw value without its comment
62
+ * @returns the value and its qualifiers
63
+ */
64
+ export declare function splitQualifiers(value: string): QualifiedValue;
65
+ /**
66
+ * Parse the inside of a qualifier block: `name="value"` pairs separated by commas, the 1.2
67
+ * unquoted form (`source=PMID:1`) and missing spaces accepted. A name is everything up to `=`
68
+ * (qualifier names may be IRIs with colons).
69
+ * @param inner - the text between the braces
70
+ * @returns the qualifiers, or null when the block does not parse (a pair without `=`, an unclosed quote)
71
+ */
72
+ export declare function parseQualifiers(inner: string): Qualifiers | null;
73
+ /** One token of a value. */
74
+ export interface Token {
75
+ /** A bare word, a quoted string or a bracketed list. */
76
+ readonly kind: "word" | "quoted" | "list";
77
+ /** The token's text: unescaped for a word or a quoted string, raw inside the brackets for a list. */
78
+ readonly text: string;
79
+ /** Whether the quote or bracket was never closed (the token runs to the end of the value). */
80
+ readonly unterminated: boolean;
81
+ }
82
+ /**
83
+ * Split a value (comment and qualifiers removed) into words, quoted strings and bracketed lists.
84
+ * Whitespace separates tokens; an escaped space belongs to its word.
85
+ * @param value - the raw value
86
+ * @returns the tokens
87
+ */
88
+ export declare function tokenize(value: string): Token[];
89
+ /** One cross-reference: `ID "description" {qualifiers}`. */
90
+ export interface Xref {
91
+ /** The id (may hold spaces: `NIST Chemistry WebBook:110-63-4`, which owlapi reads). */
92
+ readonly id: string;
93
+ /** The description, or null. */
94
+ readonly description: string | null;
95
+ /** Per-xref qualifiers (OBO 1.2 inside a list), or null. */
96
+ readonly qualifiers: Qualifiers | null;
97
+ }
98
+ /**
99
+ * Read one cross-reference: the id is the text before the first unescaped quote, the quoted
100
+ * string its description, a closing block its qualifiers.
101
+ * @param raw - the raw text of one xref
102
+ * @returns the xref, or null when it has no id
103
+ */
104
+ export declare function parseXref(raw: string): Xref | null;
105
+ /**
106
+ * Split the inside of a bracketed list into xrefs at the unescaped commas outside quotes and
107
+ * braces (a solitary xref needs no escaping of its commas only outside a list).
108
+ * @param inner - the raw text between the brackets
109
+ * @returns the xrefs, in order
110
+ */
111
+ export declare function parseXrefList(inner: string): Xref[];
112
+ /**
113
+ * Whether the raw value holds an unescaped `{` or `}` outside quotes and outside a bracketed xref
114
+ * list (a brace mid-value that is not a closing qualifier block is literal text the writer should
115
+ * have escaped).
116
+ * @param value - the raw value, qualifiers already split off
117
+ * @returns true when a stray brace is present
118
+ */
119
+ export declare function hasStrayBrace(value: string): boolean;
120
+ export {};
121
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../../../src/formats/obo/syntax.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBhD;AAgBD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,2DAA2D;AAC3D,UAAU,QAAQ;IACd,sCAAsC;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAW3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED,8EAA8E;AAC9E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAE3D,4DAA4D;AAC5D,UAAU,cAAc;IACpB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACvC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAgB7D;AAwDD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA4ChE;AAmBD,4BAA4B;AAC5B,MAAM,WAAW,KAAK;IAClB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,qGAAqG;IACrG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8FAA8F;IAC9F,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CA6C/C;AAuBD,4DAA4D;AAC5D,MAAM,WAAW,IAAI;IACjB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAqBlD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CA4BnD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAiBpD"}
@@ -0,0 +1,424 @@
1
+ /**
2
+ * The lexical layer of the OBO importer (research-obo.md section 4.1): the tag-value line, the
3
+ * hidden `!` comment, the trailing `{name="value", ...}` qualifier block, the escapes of the OBO
4
+ * guides, quoted strings and bracketed xref lists. Pure functions over one logical line; the
5
+ * importer joins backslash continuations and splits form feeds before calling them.
6
+ *
7
+ * Every function works on the RAW text (escapes still in place) and unescapes only the pieces it
8
+ * hands back, so an escaped quote, colon, comma, brace or `!` never ends a construct.
9
+ */
10
+ /** The OBO escapes with a meaning of their own; any other `\x` is `x` (the guides). */
11
+ const ESCAPES = Object.freeze({
12
+ n: "\n",
13
+ t: "\t",
14
+ // the guides read `\W` as a space; the 1.4 BNF (and fastobo) as the letter W (design 4.1)
15
+ W: " ",
16
+ });
17
+ /**
18
+ * Remove the OBO escapes: `\n` newline, `\t` tab, `\W` space, any other `\x` the character x; a
19
+ * backslash at the very end is dropped.
20
+ * @param text - raw text
21
+ * @returns the unescaped text
22
+ */
23
+ export function unescapeObo(text) {
24
+ if (!text.includes("\\")) {
25
+ return text;
26
+ }
27
+ let out = "";
28
+ for (let i = 0; i < text.length; i++) {
29
+ const ch = text[i];
30
+ if (ch !== "\\") {
31
+ out += ch;
32
+ continue;
33
+ }
34
+ i++;
35
+ if (i < text.length) {
36
+ const next = text[i];
37
+ out += ESCAPES[next] ?? next;
38
+ }
39
+ }
40
+ return out;
41
+ }
42
+ /**
43
+ * Whether the character at `index` is escaped (preceded by an odd run of backslashes).
44
+ * @param text - the text
45
+ * @param index - the character's index
46
+ * @returns true when escaped
47
+ */
48
+ function isEscaped(text, index) {
49
+ let run = 0;
50
+ for (let i = index - 1; i >= 0 && text[i] === "\\"; i--) {
51
+ run++;
52
+ }
53
+ return run % 2 === 1;
54
+ }
55
+ /**
56
+ * Whether a raw line ends with an unescaped backslash (the 1.0 / 1.2 line continuation).
57
+ * @param line - the raw line, trailing whitespace included
58
+ * @returns true when the line continues on the next one
59
+ */
60
+ export function endsWithContinuation(line) {
61
+ return line.endsWith("\\") && !isEscaped(line, line.length - 1);
62
+ }
63
+ /**
64
+ * Split a line at its first unescaped colon (values contain colons freely: `is_a: GO:0000001`).
65
+ * @param line - the raw line, trimmed
66
+ * @returns the tag and the rest, or null when the line has no colon
67
+ */
68
+ export function splitTagValue(line) {
69
+ for (let i = 0; i < line.length; i++) {
70
+ if (line[i] === "\\") {
71
+ i++;
72
+ continue;
73
+ }
74
+ if (line[i] === ":") {
75
+ return { tag: unescapeObo(line.slice(0, i).trim()), rest: line.slice(i + 1).trimStart() };
76
+ }
77
+ }
78
+ return null;
79
+ }
80
+ /**
81
+ * Strip the hidden comment: an unescaped `!` outside quotes that starts the value or follows
82
+ * whitespace begins a comment running to the end of the line. A `!` glued to the text before it
83
+ * (`#!/`, `Hello!`) is text, so URLs and names are never cut. A quote opens a string only where a
84
+ * token starts, as tokenize() reads it, so the `"` of an unquoted `5" pipe` is text and does not
85
+ * hide the comment after it.
86
+ * @param rest - the raw value
87
+ * @returns the value before the comment, trailing whitespace removed
88
+ */
89
+ export function stripComment(rest) {
90
+ let quoted = false;
91
+ for (let i = 0; i < rest.length; i++) {
92
+ const ch = rest[i];
93
+ if (ch === "\\") {
94
+ i++;
95
+ continue;
96
+ }
97
+ const atStart = i === 0 || rest[i - 1] === " " || rest[i - 1] === "\t";
98
+ if (ch === '"' && (quoted || atStart)) {
99
+ quoted = !quoted;
100
+ }
101
+ else if (ch === "!" && !quoted && atStart) {
102
+ return rest.slice(0, i).trimEnd();
103
+ }
104
+ }
105
+ return rest.trimEnd();
106
+ }
107
+ /**
108
+ * Split the trailing qualifier blocks off a value: a `{...}` is a block only when it closes the
109
+ * value (after the comment was stripped); several blocks (`{a="1"}{b="2"}`, 1.2 examples) are
110
+ * merged. A closing brace whose block does not parse is left in the value and reported.
111
+ * @param value - the raw value without its comment
112
+ * @returns the value and its qualifiers
113
+ */
114
+ export function splitQualifiers(value) {
115
+ let rest = value;
116
+ let qualifiers = null;
117
+ for (;;) {
118
+ if (!rest.endsWith("}") || isEscaped(rest, rest.length - 1)) {
119
+ return { value: rest, qualifiers, badBlock: null };
120
+ }
121
+ const open = openingBrace(rest);
122
+ const parsed = open < 0 ? null : parseQualifiers(rest.slice(open + 1, -1));
123
+ if (parsed === null) {
124
+ return { value: rest, qualifiers, badBlock: open < 0 ? rest : rest.slice(open) };
125
+ }
126
+ // a block read right to left: an earlier block's names come first
127
+ qualifiers = qualifiers === null ? parsed : mergeQualifiers(parsed, qualifiers);
128
+ rest = rest.slice(0, open).trimEnd();
129
+ }
130
+ }
131
+ /**
132
+ * The index of the unescaped `{` outside quotes that opens the block closing the value.
133
+ * @param value - a raw value ending with `}`
134
+ * @returns the index, or -1 when there is none
135
+ */
136
+ function openingBrace(value) {
137
+ let quoted = false;
138
+ let open = -1;
139
+ for (let i = 0; i < value.length - 1; i++) {
140
+ const ch = value[i];
141
+ if (ch === "\\") {
142
+ i++;
143
+ continue;
144
+ }
145
+ if (ch === '"') {
146
+ quoted = !quoted;
147
+ }
148
+ else if (!quoted && ch === "{") {
149
+ open = i;
150
+ }
151
+ else if (!quoted && ch === "}") {
152
+ open = -1;
153
+ }
154
+ }
155
+ return quoted ? -1 : open;
156
+ }
157
+ /**
158
+ * Merge two qualifier records, a repeated name becoming a list.
159
+ * @param first - the earlier record
160
+ * @param second - the later record
161
+ * @returns the merged record
162
+ */
163
+ function mergeQualifiers(first, second) {
164
+ const out = { ...first };
165
+ for (const [name, value] of Object.entries(second)) {
166
+ addQualifier(out, name, value);
167
+ }
168
+ return out;
169
+ }
170
+ /**
171
+ * Add one qualifier, turning a repeated name into a list.
172
+ * @param record - the record
173
+ * @param name - the name
174
+ * @param value - the value (or values)
175
+ */
176
+ function addQualifier(record, name, value) {
177
+ if (!Object.prototype.hasOwnProperty.call(record, name)) {
178
+ record[name] = value;
179
+ return;
180
+ }
181
+ const before = record[name];
182
+ record[name] = [...(Array.isArray(before) ? before : [before]), ...(Array.isArray(value) ? value : [value])];
183
+ }
184
+ /**
185
+ * Parse the inside of a qualifier block: `name="value"` pairs separated by commas, the 1.2
186
+ * unquoted form (`source=PMID:1`) and missing spaces accepted. A name is everything up to `=`
187
+ * (qualifier names may be IRIs with colons).
188
+ * @param inner - the text between the braces
189
+ * @returns the qualifiers, or null when the block does not parse (a pair without `=`, an unclosed quote)
190
+ */
191
+ export function parseQualifiers(inner) {
192
+ const out = Object.create(null);
193
+ let i = 0;
194
+ const n = inner.length;
195
+ let any = false;
196
+ while (i < n) {
197
+ while (i < n && (inner[i] === " " || inner[i] === "\t" || inner[i] === ",")) {
198
+ i++;
199
+ }
200
+ if (i >= n) {
201
+ break;
202
+ }
203
+ const eq = inner.indexOf("=", i);
204
+ if (eq < 0) {
205
+ return null;
206
+ }
207
+ const name = unescapeObo(inner.slice(i, eq).trim());
208
+ if (name.length === 0 || name.includes('"')) {
209
+ return null;
210
+ }
211
+ i = eq + 1;
212
+ while (i < n && (inner[i] === " " || inner[i] === "\t")) {
213
+ i++;
214
+ }
215
+ let value;
216
+ if (inner[i] === '"') {
217
+ const end = closingQuote(inner, i + 1);
218
+ if (end < 0) {
219
+ return null;
220
+ }
221
+ value = unescapeObo(inner.slice(i + 1, end));
222
+ i = end + 1;
223
+ }
224
+ else {
225
+ let end = i;
226
+ while (end < n && inner[end] !== ",") {
227
+ end += inner[end] === "\\" ? 2 : 1;
228
+ }
229
+ value = unescapeObo(inner.slice(i, end).trim());
230
+ i = end;
231
+ }
232
+ addQualifier(out, name, value);
233
+ any = true;
234
+ }
235
+ return any ? { ...out } : null;
236
+ }
237
+ /**
238
+ * The index of the unescaped closing quote.
239
+ * @param text - the text
240
+ * @param from - the index after the opening quote
241
+ * @returns the index, or -1 when the text ends first
242
+ */
243
+ function closingQuote(text, from) {
244
+ for (let i = from; i < text.length; i++) {
245
+ if (text[i] === "\\") {
246
+ i++;
247
+ }
248
+ else if (text[i] === '"') {
249
+ return i;
250
+ }
251
+ }
252
+ return -1;
253
+ }
254
+ /**
255
+ * Split a value (comment and qualifiers removed) into words, quoted strings and bracketed lists.
256
+ * Whitespace separates tokens; an escaped space belongs to its word.
257
+ * @param value - the raw value
258
+ * @returns the tokens
259
+ */
260
+ export function tokenize(value) {
261
+ const tokens = [];
262
+ const n = value.length;
263
+ let i = 0;
264
+ while (i < n) {
265
+ const ch = value[i];
266
+ if (ch === " " || ch === "\t") {
267
+ i++;
268
+ continue;
269
+ }
270
+ if (ch === '"') {
271
+ const end = closingQuote(value, i + 1);
272
+ const stop = end < 0 ? n : end;
273
+ // a 1.4 language tag glued to the closing quote ("chat"@fr) is kept with the text, as an
274
+ // unquoted chat@fr is (research-obo.md 4.1: no language is split out)
275
+ let after = stop + 1;
276
+ if (end >= 0 && value[after] === "@") {
277
+ while (after < n && value[after] !== " " && value[after] !== "\t") {
278
+ after++;
279
+ }
280
+ }
281
+ const suffix = end < 0 ? "" : value.slice(stop + 1, after);
282
+ tokens.push({
283
+ kind: "quoted",
284
+ text: unescapeObo(value.slice(i + 1, stop)) + suffix,
285
+ unterminated: end < 0,
286
+ });
287
+ i = after;
288
+ continue;
289
+ }
290
+ if (ch === "[") {
291
+ const end = closingBracket(value, i + 1);
292
+ const stop = end < 0 ? n : end;
293
+ tokens.push({ kind: "list", text: value.slice(i + 1, stop), unterminated: end < 0 });
294
+ i = stop + 1;
295
+ continue;
296
+ }
297
+ let end = i;
298
+ while (end < n && value[end] !== " " && value[end] !== "\t") {
299
+ end += value[end] === "\\" ? 2 : 1;
300
+ }
301
+ tokens.push({ kind: "word", text: unescapeObo(value.slice(i, Math.min(end, n))), unterminated: false });
302
+ i = end;
303
+ }
304
+ return tokens;
305
+ }
306
+ /**
307
+ * The index of the unescaped `]` outside quotes closing a list.
308
+ * @param text - the text
309
+ * @param from - the index after `[`
310
+ * @returns the index, or -1 when the text ends first
311
+ */
312
+ function closingBracket(text, from) {
313
+ let quoted = false;
314
+ for (let i = from; i < text.length; i++) {
315
+ const ch = text[i];
316
+ if (ch === "\\") {
317
+ i++;
318
+ }
319
+ else if (ch === '"') {
320
+ quoted = !quoted;
321
+ }
322
+ else if (ch === "]" && !quoted) {
323
+ return i;
324
+ }
325
+ }
326
+ return -1;
327
+ }
328
+ /**
329
+ * Read one cross-reference: the id is the text before the first unescaped quote, the quoted
330
+ * string its description, a closing block its qualifiers.
331
+ * @param raw - the raw text of one xref
332
+ * @returns the xref, or null when it has no id
333
+ */
334
+ export function parseXref(raw) {
335
+ const { value, qualifiers } = splitQualifiers(raw.trim());
336
+ let quote = -1;
337
+ for (let i = 0; i < value.length; i++) {
338
+ if (value[i] === "\\") {
339
+ i++;
340
+ }
341
+ else if (value[i] === '"') {
342
+ quote = i;
343
+ break;
344
+ }
345
+ }
346
+ const id = unescapeObo((quote < 0 ? value : value.slice(0, quote)).trim());
347
+ if (id.length === 0) {
348
+ return null;
349
+ }
350
+ let description = null;
351
+ if (quote >= 0) {
352
+ const end = closingQuote(value, quote + 1);
353
+ description = unescapeObo(value.slice(quote + 1, end < 0 ? value.length : end));
354
+ }
355
+ return { id, description, qualifiers };
356
+ }
357
+ /**
358
+ * Split the inside of a bracketed list into xrefs at the unescaped commas outside quotes and
359
+ * braces (a solitary xref needs no escaping of its commas only outside a list).
360
+ * @param inner - the raw text between the brackets
361
+ * @returns the xrefs, in order
362
+ */
363
+ export function parseXrefList(inner) {
364
+ const out = [];
365
+ let quoted = false;
366
+ let depth = 0;
367
+ let start = 0;
368
+ const flush = (end) => {
369
+ const xref = parseXref(inner.slice(start, end));
370
+ if (xref !== null) {
371
+ out.push(xref);
372
+ }
373
+ };
374
+ for (let i = 0; i < inner.length; i++) {
375
+ const ch = inner[i];
376
+ if (ch === "\\") {
377
+ i++;
378
+ }
379
+ else if (ch === '"') {
380
+ quoted = !quoted;
381
+ }
382
+ else if (!quoted && ch === "{") {
383
+ depth++;
384
+ }
385
+ else if (!quoted && ch === "}") {
386
+ depth = Math.max(0, depth - 1);
387
+ }
388
+ else if (!quoted && depth === 0 && ch === ",") {
389
+ flush(i);
390
+ start = i + 1;
391
+ }
392
+ }
393
+ flush(inner.length);
394
+ return out;
395
+ }
396
+ /**
397
+ * Whether the raw value holds an unescaped `{` or `}` outside quotes and outside a bracketed xref
398
+ * list (a brace mid-value that is not a closing qualifier block is literal text the writer should
399
+ * have escaped).
400
+ * @param value - the raw value, qualifiers already split off
401
+ * @returns true when a stray brace is present
402
+ */
403
+ export function hasStrayBrace(value) {
404
+ let quoted = false;
405
+ let listed = false;
406
+ for (let i = 0; i < value.length; i++) {
407
+ const ch = value[i];
408
+ if (ch === "\\") {
409
+ i++;
410
+ }
411
+ else if (ch === '"') {
412
+ quoted = !quoted;
413
+ }
414
+ else if (!quoted && (ch === "[" || ch === "]")) {
415
+ // inside an xref list a brace opens that xref's qualifiers (OBO 1.2)
416
+ listed = ch === "[";
417
+ }
418
+ else if (!quoted && !listed && (ch === "{" || ch === "}")) {
419
+ return true;
420
+ }
421
+ }
422
+ return false;
423
+ }
424
+ //# sourceMappingURL=syntax.js.map