glossarist 0.4.53 → 0.4.55
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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mentions/index.d.ts +4 -0
- package/dist/mentions/index.d.ts.map +1 -0
- package/dist/mentions/index.js +3 -0
- package/dist/mentions/index.js.map +1 -0
- package/dist/mentions/parser.d.ts +49 -0
- package/dist/mentions/parser.d.ts.map +1 -0
- package/dist/mentions/parser.js +140 -0
- package/dist/mentions/parser.js.map +1 -0
- package/dist/mentions/resolver.d.ts +8 -0
- package/dist/mentions/resolver.d.ts.map +1 -0
- package/dist/mentions/resolver.js +163 -0
- package/dist/mentions/resolver.js.map +1 -0
- package/dist/mentions/types.d.ts +70 -0
- package/dist/mentions/types.d.ts.map +1 -0
- package/dist/mentions/types.js +15 -0
- package/dist/mentions/types.js.map +1 -0
- package/dist/models/related-concept.d.ts +13 -0
- package/dist/models/related-concept.d.ts.map +1 -1
- package/dist/models/related-concept.js +5 -1
- package/dist/models/related-concept.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export { ReferenceResolver, Reference, referenceResolver, resolveBibliographyRec
|
|
|
12
12
|
export type { CitationClassification, CitationInput, CiteResolution } from './reference-resolver.js';
|
|
13
13
|
export { parseMention, extractMentionsFromText } from './reference-mention.js';
|
|
14
14
|
export type { MentionKind, MentionParseResult, ParseOptions, ExtractedMention } from './reference-mention.js';
|
|
15
|
+
export { parseMentions, parseMentionStrict, InvalidMentionError } from './mentions/parser.js';
|
|
16
|
+
export type { Segment, Mention as StrictMention, TextSegment, Target, TargetType, MentionKind as StrictMentionKind } from './mentions/parser.js';
|
|
17
|
+
export { resolveMention, resolveAll } from './mentions/resolver.js';
|
|
15
18
|
export { ReferenceClassifier } from './render-classification.js';
|
|
16
19
|
export { V1Reader, migrateV1ToV2 } from './v1-reader.js';
|
|
17
20
|
export { GlossaristError, InvalidInputError, YamlParseError } from './errors.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ export { validateConcept, validateRegister, validateGcrPackage, createConceptVal
|
|
|
10
10
|
export { conceptUuid, localizedConceptUuid, uuidV5 } from './uuid.js';
|
|
11
11
|
export { ReferenceResolver, Reference, referenceResolver, resolveBibliographyRecord, findNonVerbalEntity } from './reference-resolver.js';
|
|
12
12
|
export { parseMention, extractMentionsFromText } from './reference-mention.js';
|
|
13
|
+
export { parseMentions, parseMentionStrict, InvalidMentionError } from './mentions/parser.js';
|
|
14
|
+
export { resolveMention, resolveAll } from './mentions/resolver.js';
|
|
13
15
|
export { ReferenceClassifier } from './render-classification.js';
|
|
14
16
|
export { V1Reader, migrateV1ToV2 } from './v1-reader.js';
|
|
15
17
|
export { GlossaristError, InvalidInputError, YamlParseError } from './errors.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { parseMentions, parseMentionStrict, InvalidMentionError } from './parser.js';
|
|
2
|
+
export type { Segment, Mention, TextSegment, Target, TargetType, MentionKind } from './parser.js';
|
|
3
|
+
export { resolveMention, resolveAll } from './resolver.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mentions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mentions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict inline mention parser — implements the grammar defined in
|
|
3
|
+
* concept-model/docs/design/inline-mentions-implementation-guide.md.
|
|
4
|
+
*
|
|
5
|
+
* Key principle: invalid mentions produce errors, they are NEVER
|
|
6
|
+
* silently passed through.
|
|
7
|
+
*/
|
|
8
|
+
export type TargetType = 'urn' | 'dataset_qualified' | 'entity_id' | 'url' | 'path';
|
|
9
|
+
export interface Target {
|
|
10
|
+
type: TargetType;
|
|
11
|
+
urn?: string;
|
|
12
|
+
dataset?: string;
|
|
13
|
+
id?: string;
|
|
14
|
+
url?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
}
|
|
17
|
+
export type MentionKind = 'concept' | 'cite' | 'fig' | 'table' | 'formula' | 'bib' | 'link' | 'image';
|
|
18
|
+
export interface Mention {
|
|
19
|
+
kind: MentionKind;
|
|
20
|
+
target: Target;
|
|
21
|
+
label: string | null;
|
|
22
|
+
raw: string;
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
}
|
|
26
|
+
export interface TextSegment {
|
|
27
|
+
kind: 'text';
|
|
28
|
+
content: string;
|
|
29
|
+
start: number;
|
|
30
|
+
end: number;
|
|
31
|
+
}
|
|
32
|
+
export type Segment = Mention | TextSegment;
|
|
33
|
+
export declare class InvalidMentionError extends Error {
|
|
34
|
+
readonly raw: string;
|
|
35
|
+
readonly reason: string;
|
|
36
|
+
readonly position: number;
|
|
37
|
+
constructor(raw: string, reason: string, position: number);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parse a single mention body (the content inside {{...}}).
|
|
41
|
+
* Returns a Mention object or throws InvalidMentionError.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseMentionStrict(raw: string, position?: number): Mention;
|
|
44
|
+
/**
|
|
45
|
+
* Parse a text string into an array of segments (text + mentions).
|
|
46
|
+
* Throws InvalidMentionError on any invalid mention.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseMentions(text: string): Segment[];
|
|
49
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/mentions/parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,mBAAmB,GAAG,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpF,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtG,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAE5C,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,GAAG,EAAE,MAAM;aACX,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,MAAM;gBAFhB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;CAKnC;AAuED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,OAAO,CAmC7E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAkCrD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict inline mention parser — implements the grammar defined in
|
|
3
|
+
* concept-model/docs/design/inline-mentions-implementation-guide.md.
|
|
4
|
+
*
|
|
5
|
+
* Key principle: invalid mentions produce errors, they are NEVER
|
|
6
|
+
* silently passed through.
|
|
7
|
+
*/
|
|
8
|
+
export class InvalidMentionError extends Error {
|
|
9
|
+
raw;
|
|
10
|
+
reason;
|
|
11
|
+
position;
|
|
12
|
+
constructor(raw, reason, position) {
|
|
13
|
+
super(`Invalid mention at position ${position}: ${reason}`);
|
|
14
|
+
this.raw = raw;
|
|
15
|
+
this.reason = reason;
|
|
16
|
+
this.position = position;
|
|
17
|
+
this.name = 'InvalidMentionError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const URL_RE = /^https?:\/\/.+/;
|
|
21
|
+
const URN_RE = /^urn:[^:]+:.+/;
|
|
22
|
+
const DATASET_QUALIFIED_RE = /^([A-Za-z][A-Za-z0-9_-]*):(.+)$/;
|
|
23
|
+
/**
|
|
24
|
+
* Parse a target string into a structured Target object.
|
|
25
|
+
* Colon splitting: for DATASET:ID, split on the LAST colon.
|
|
26
|
+
*/
|
|
27
|
+
function parseTarget(text) {
|
|
28
|
+
const trimmed = text.trim();
|
|
29
|
+
if (URN_RE.test(trimmed)) {
|
|
30
|
+
return { type: 'urn', urn: trimmed };
|
|
31
|
+
}
|
|
32
|
+
if (URL_RE.test(trimmed)) {
|
|
33
|
+
return { type: 'url', url: trimmed };
|
|
34
|
+
}
|
|
35
|
+
if (trimmed.includes('/') || trimmed.includes('\\')) {
|
|
36
|
+
return { type: 'path', path: trimmed };
|
|
37
|
+
}
|
|
38
|
+
const dsMatch = trimmed.match(DATASET_QUALIFIED_RE);
|
|
39
|
+
if (dsMatch) {
|
|
40
|
+
const lastColon = trimmed.lastIndexOf(':');
|
|
41
|
+
return {
|
|
42
|
+
type: 'dataset_qualified',
|
|
43
|
+
dataset: trimmed.slice(0, lastColon),
|
|
44
|
+
id: trimmed.slice(lastColon + 1),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { type: 'entity_id', id: trimmed };
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Validate that a target type is acceptable for a given mention kind.
|
|
51
|
+
* Throws InvalidMentionError if the combination is invalid.
|
|
52
|
+
*/
|
|
53
|
+
function validateTargetForKind(kind, target, raw, position) {
|
|
54
|
+
const allowed = {
|
|
55
|
+
concept: ['dataset_qualified', 'urn'],
|
|
56
|
+
cite: ['dataset_qualified', 'urn'],
|
|
57
|
+
fig: ['entity_id', 'urn'],
|
|
58
|
+
table: ['entity_id', 'urn'],
|
|
59
|
+
formula: ['entity_id', 'urn'],
|
|
60
|
+
bib: ['entity_id'],
|
|
61
|
+
link: ['url'],
|
|
62
|
+
image: ['path', 'url'],
|
|
63
|
+
};
|
|
64
|
+
const accepted = allowed[kind];
|
|
65
|
+
if (!accepted.includes(target.type)) {
|
|
66
|
+
const targetDesc = target.type === 'dataset_qualified'
|
|
67
|
+
? `DATASET:ID '${target.dataset}:${target.id}'`
|
|
68
|
+
: target.type === 'urn'
|
|
69
|
+
? `URN '${target.urn}'`
|
|
70
|
+
: target.type === 'url'
|
|
71
|
+
? `URL '${target.url}'`
|
|
72
|
+
: target.type === 'path'
|
|
73
|
+
? `path '${target.path}'`
|
|
74
|
+
: `bare ID '${target.id}'`;
|
|
75
|
+
const acceptDesc = accepted.join(' or ');
|
|
76
|
+
throw new InvalidMentionError(raw, `${kind} target must be ${acceptDesc}; got ${targetDesc}`, position);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Parse a single mention body (the content inside {{...}}).
|
|
81
|
+
* Returns a Mention object or throws InvalidMentionError.
|
|
82
|
+
*/
|
|
83
|
+
export function parseMentionStrict(raw, position = 0) {
|
|
84
|
+
const body = raw.trim();
|
|
85
|
+
// Split kind:target[,label]
|
|
86
|
+
const colonIdx = body.indexOf(':');
|
|
87
|
+
if (colonIdx === -1) {
|
|
88
|
+
throw new InvalidMentionError(raw, `missing kind prefix — every mention must be {{kind:target}}; got '${body}'`, position);
|
|
89
|
+
}
|
|
90
|
+
const kindStr = body.slice(0, colonIdx).trim().toLowerCase();
|
|
91
|
+
const rest = body.slice(colonIdx + 1);
|
|
92
|
+
// Split target,label
|
|
93
|
+
const commaIdx = rest.indexOf(',');
|
|
94
|
+
const targetStr = (commaIdx >= 0 ? rest.slice(0, commaIdx) : rest).trim();
|
|
95
|
+
const label = commaIdx >= 0 ? rest.slice(commaIdx + 1).trim() : null;
|
|
96
|
+
const VALID_KINDS = ['concept', 'cite', 'fig', 'table', 'formula', 'bib', 'link', 'image'];
|
|
97
|
+
if (!VALID_KINDS.includes(kindStr)) {
|
|
98
|
+
throw new InvalidMentionError(raw, `unknown kind '${kindStr}' — valid kinds: ${VALID_KINDS.join(', ')}`, position);
|
|
99
|
+
}
|
|
100
|
+
const kind = kindStr;
|
|
101
|
+
const target = parseTarget(targetStr);
|
|
102
|
+
validateTargetForKind(kind, target, raw, position);
|
|
103
|
+
return { kind, target, label, raw: body, start: position, end: position + raw.length };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Parse a text string into an array of segments (text + mentions).
|
|
107
|
+
* Throws InvalidMentionError on any invalid mention.
|
|
108
|
+
*/
|
|
109
|
+
export function parseMentions(text) {
|
|
110
|
+
const segments = [];
|
|
111
|
+
const re = /\{\{([^{}]*?)\}\}/g;
|
|
112
|
+
let lastEnd = 0;
|
|
113
|
+
let m;
|
|
114
|
+
while ((m = re.exec(text)) !== null) {
|
|
115
|
+
// Text before this mention
|
|
116
|
+
if (m.index > lastEnd) {
|
|
117
|
+
segments.push({
|
|
118
|
+
kind: 'text',
|
|
119
|
+
content: text.slice(lastEnd, m.index),
|
|
120
|
+
start: lastEnd,
|
|
121
|
+
end: m.index,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// Parse the mention
|
|
125
|
+
const mention = parseMentionStrict(m[1], m.index);
|
|
126
|
+
segments.push(mention);
|
|
127
|
+
lastEnd = m.index + m[0].length;
|
|
128
|
+
}
|
|
129
|
+
// Trailing text
|
|
130
|
+
if (lastEnd < text.length) {
|
|
131
|
+
segments.push({
|
|
132
|
+
kind: 'text',
|
|
133
|
+
content: text.slice(lastEnd),
|
|
134
|
+
start: lastEnd,
|
|
135
|
+
end: text.length,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
return segments;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/mentions/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Mention, ResolutionContext, ResolvedMention } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a parsed mention against a ResolutionContext.
|
|
4
|
+
* Returns a ResolvedMention with status indicating the outcome.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveMention(mention: Mention, context: ResolutionContext): ResolvedMention;
|
|
7
|
+
export declare function resolveAll(mentions: ReadonlyArray<Mention>, context: ResolutionContext): ResolvedMention[];
|
|
8
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/mentions/resolver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,iBAAiB,GACzB,eAAe,CAsBjB;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,EAAE,iBAAiB,GACzB,eAAe,EAAE,CAEnB"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Spec-compliant inline mention resolver.
|
|
2
|
+
// Per docs/design/inline-mentions-implementation-guide.md §1.2.
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a parsed mention against a ResolutionContext.
|
|
5
|
+
* Returns a ResolvedMention with status indicating the outcome.
|
|
6
|
+
*/
|
|
7
|
+
export function resolveMention(mention, context) {
|
|
8
|
+
switch (mention.kind) {
|
|
9
|
+
case 'concept':
|
|
10
|
+
return resolveConceptLike(mention, context, false);
|
|
11
|
+
case 'cite':
|
|
12
|
+
return resolveConceptLike(mention, context, true);
|
|
13
|
+
case 'fig':
|
|
14
|
+
case 'table':
|
|
15
|
+
case 'formula':
|
|
16
|
+
return resolveEntity(mention, context);
|
|
17
|
+
case 'bib':
|
|
18
|
+
return resolveBib(mention, context);
|
|
19
|
+
case 'link':
|
|
20
|
+
return {
|
|
21
|
+
status: 'external',
|
|
22
|
+
kind: 'link',
|
|
23
|
+
label: mention.label,
|
|
24
|
+
url: mention.target.url ?? '',
|
|
25
|
+
};
|
|
26
|
+
case 'image':
|
|
27
|
+
return resolveImage(mention);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function resolveAll(mentions, context) {
|
|
31
|
+
return mentions.map(m => resolveMention(m, context));
|
|
32
|
+
}
|
|
33
|
+
function resolveConceptLike(mention, context, isCite) {
|
|
34
|
+
const target = mention.target;
|
|
35
|
+
const concept = target.type === 'urn'
|
|
36
|
+
? context.resolveConcept?.({ urn: target.urn }) ?? null
|
|
37
|
+
: target.type === 'dataset_qualified'
|
|
38
|
+
? context.resolveConcept?.({ dataset: target.dataset, id: target.id }) ?? null
|
|
39
|
+
: null;
|
|
40
|
+
if (!concept) {
|
|
41
|
+
return {
|
|
42
|
+
status: 'unresolved',
|
|
43
|
+
kind: mention.kind,
|
|
44
|
+
label: mention.label,
|
|
45
|
+
target,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (concept == null) {
|
|
49
|
+
return {
|
|
50
|
+
status: 'unresolved',
|
|
51
|
+
kind: mention.kind,
|
|
52
|
+
label: mention.label,
|
|
53
|
+
target,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
let source = undefined;
|
|
57
|
+
if (isCite && context.concept) {
|
|
58
|
+
source = findMatchingSource(context.concept, target);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
status: 'resolved',
|
|
62
|
+
kind: mention.kind,
|
|
63
|
+
label: mention.label,
|
|
64
|
+
concept,
|
|
65
|
+
source,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function resolveEntity(mention, context) {
|
|
69
|
+
const target = mention.target;
|
|
70
|
+
if (target.type !== 'entity_id' && target.type !== 'urn') {
|
|
71
|
+
return {
|
|
72
|
+
status: 'unresolved',
|
|
73
|
+
kind: mention.kind,
|
|
74
|
+
label: mention.label,
|
|
75
|
+
target,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const id = target.type === 'entity_id' ? target.id : '';
|
|
79
|
+
if (!id) {
|
|
80
|
+
return {
|
|
81
|
+
status: 'unresolved',
|
|
82
|
+
kind: mention.kind,
|
|
83
|
+
label: mention.label,
|
|
84
|
+
target,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const entityKind = mention.kind;
|
|
88
|
+
const entity = context.resolveEntity?.(entityKind, id) ?? null;
|
|
89
|
+
if (entity == null) {
|
|
90
|
+
return {
|
|
91
|
+
status: 'unresolved',
|
|
92
|
+
kind: mention.kind,
|
|
93
|
+
label: mention.label,
|
|
94
|
+
target,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
status: 'resolved',
|
|
99
|
+
kind: mention.kind,
|
|
100
|
+
label: mention.label,
|
|
101
|
+
entity,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function resolveBib(mention, context) {
|
|
105
|
+
const target = mention.target;
|
|
106
|
+
if (target.type !== 'entity_id') {
|
|
107
|
+
return {
|
|
108
|
+
status: 'unresolved',
|
|
109
|
+
kind: 'bib',
|
|
110
|
+
label: mention.label,
|
|
111
|
+
target,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const entry = context.resolveBibEntry?.(target.id) ?? null;
|
|
115
|
+
if (entry == null) {
|
|
116
|
+
return {
|
|
117
|
+
status: 'unresolved',
|
|
118
|
+
kind: 'bib',
|
|
119
|
+
label: mention.label,
|
|
120
|
+
target,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
status: 'resolved',
|
|
125
|
+
kind: 'bib',
|
|
126
|
+
label: mention.label,
|
|
127
|
+
entry,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function resolveImage(mention) {
|
|
131
|
+
const target = mention.target;
|
|
132
|
+
if (target.type === 'url') {
|
|
133
|
+
return {
|
|
134
|
+
status: 'external_image',
|
|
135
|
+
kind: 'image',
|
|
136
|
+
label: mention.label,
|
|
137
|
+
url: target.url,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
status: 'local_image',
|
|
142
|
+
kind: 'image',
|
|
143
|
+
label: mention.label,
|
|
144
|
+
path: target.path,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function findMatchingSource(concept, target) {
|
|
148
|
+
if (!concept.sources)
|
|
149
|
+
return undefined;
|
|
150
|
+
for (const source of concept.sources) {
|
|
151
|
+
const s = source;
|
|
152
|
+
const ref = s?.origin?.ref;
|
|
153
|
+
if (!ref)
|
|
154
|
+
continue;
|
|
155
|
+
if (target.type === 'dataset_qualified') {
|
|
156
|
+
if (ref.source === target.dataset && ref.id === target.id) {
|
|
157
|
+
return source;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/mentions/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export type TargetType = 'urn' | 'dataset_qualified' | 'entity_id' | 'url' | 'path';
|
|
2
|
+
export interface UrnTarget {
|
|
3
|
+
type: 'urn';
|
|
4
|
+
urn: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DatasetQualifiedTarget {
|
|
7
|
+
type: 'dataset_qualified';
|
|
8
|
+
dataset: string;
|
|
9
|
+
id: string;
|
|
10
|
+
}
|
|
11
|
+
export interface EntityIdTarget {
|
|
12
|
+
type: 'entity_id';
|
|
13
|
+
id: string;
|
|
14
|
+
}
|
|
15
|
+
export interface UrlTarget {
|
|
16
|
+
type: 'url';
|
|
17
|
+
url: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PathTarget {
|
|
20
|
+
type: 'path';
|
|
21
|
+
path: string;
|
|
22
|
+
}
|
|
23
|
+
export type Target = UrnTarget | DatasetQualifiedTarget | EntityIdTarget | UrlTarget | PathTarget;
|
|
24
|
+
export type MentionKind = 'concept' | 'cite' | 'fig' | 'table' | 'formula' | 'bib' | 'link' | 'image';
|
|
25
|
+
export interface Mention {
|
|
26
|
+
kind: MentionKind;
|
|
27
|
+
target: Target;
|
|
28
|
+
label: string | null;
|
|
29
|
+
raw: string;
|
|
30
|
+
start: number;
|
|
31
|
+
end: number;
|
|
32
|
+
}
|
|
33
|
+
export interface TextSegment {
|
|
34
|
+
kind: 'text';
|
|
35
|
+
content: string;
|
|
36
|
+
}
|
|
37
|
+
export type Segment = Mention | TextSegment;
|
|
38
|
+
export declare class InvalidMentionError extends Error {
|
|
39
|
+
readonly raw: string;
|
|
40
|
+
readonly reason: string;
|
|
41
|
+
readonly position: number;
|
|
42
|
+
constructor(raw: string, reason: string, position: number);
|
|
43
|
+
}
|
|
44
|
+
export interface ResolvedMention {
|
|
45
|
+
status: 'resolved' | 'external' | 'external_image' | 'local_image' | 'unresolved';
|
|
46
|
+
kind: MentionKind;
|
|
47
|
+
label: string | null;
|
|
48
|
+
concept?: unknown;
|
|
49
|
+
source?: unknown;
|
|
50
|
+
entity?: unknown;
|
|
51
|
+
entry?: unknown;
|
|
52
|
+
url?: string;
|
|
53
|
+
path?: string;
|
|
54
|
+
target?: Target;
|
|
55
|
+
}
|
|
56
|
+
export interface ResolutionContext {
|
|
57
|
+
concept?: {
|
|
58
|
+
sources?: ReadonlyArray<unknown>;
|
|
59
|
+
};
|
|
60
|
+
datasetName?: string;
|
|
61
|
+
resolveConcept?: (ref: {
|
|
62
|
+
dataset: string;
|
|
63
|
+
id: string;
|
|
64
|
+
} | {
|
|
65
|
+
urn: string;
|
|
66
|
+
}) => unknown | null;
|
|
67
|
+
resolveEntity?: (kind: 'fig' | 'table' | 'formula', id: string) => unknown | null;
|
|
68
|
+
resolveBibEntry?: (id: string) => unknown | null;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mentions/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Spec-compliant inline mention types.
|
|
2
|
+
// Per docs/design/inline-mentions-implementation-guide.md
|
|
3
|
+
export class InvalidMentionError extends Error {
|
|
4
|
+
raw;
|
|
5
|
+
reason;
|
|
6
|
+
position;
|
|
7
|
+
constructor(raw, reason, position) {
|
|
8
|
+
super(`Invalid mention at position ${position}: ${reason}`);
|
|
9
|
+
this.name = 'InvalidMentionError';
|
|
10
|
+
this.raw = raw;
|
|
11
|
+
this.reason = reason;
|
|
12
|
+
this.position = position;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mentions/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,0DAA0D;AAoE1D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,GAAG,CAAS;IACZ,MAAM,CAAS;IACf,QAAQ,CAAS;IAE1B,YAAY,GAAW,EAAE,MAAc,EAAE,QAAgB;QACvD,KAAK,CAAC,+BAA+B,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -8,11 +8,23 @@ export interface RelatedConceptJson {
|
|
|
8
8
|
type?: RelationshipType;
|
|
9
9
|
content?: LocalizedString | string | null;
|
|
10
10
|
ref?: ConceptRefJson | ConceptRef | null;
|
|
11
|
+
/**
|
|
12
|
+
* Explicit cross-dataset link URL authored in the YAML data.
|
|
13
|
+
*
|
|
14
|
+
* MECE boundary: `ref` is the canonical, deployment-independent
|
|
15
|
+
* reference ({source, id}). `target` is an author-provided URL for
|
|
16
|
+
* cases where the dataset explicitly records a resolved link (e.g.
|
|
17
|
+
* supersedes links to external standards). The resolver layer
|
|
18
|
+
* computes runtime URIs from `ref`; `target` is not computed —
|
|
19
|
+
* it is data.
|
|
20
|
+
*/
|
|
21
|
+
target?: string | null;
|
|
11
22
|
}
|
|
12
23
|
export declare class RelatedConcept extends GlossaristModel {
|
|
13
24
|
readonly type: RelationshipType;
|
|
14
25
|
readonly content: LocalizedString | null;
|
|
15
26
|
readonly ref: ConceptRef | null;
|
|
27
|
+
readonly target: string | null;
|
|
16
28
|
constructor(data?: RelatedConceptJson);
|
|
17
29
|
/**
|
|
18
30
|
* Convenience reader: returns the first available string value from
|
|
@@ -26,6 +38,7 @@ export declare class RelatedConcept extends GlossaristModel {
|
|
|
26
38
|
source?: string | null;
|
|
27
39
|
id?: string | null;
|
|
28
40
|
} | null;
|
|
41
|
+
target?: string | null;
|
|
29
42
|
} | null | undefined): string;
|
|
30
43
|
identity(): string;
|
|
31
44
|
static fromJSON(data: RelatedConceptJson): RelatedConcept;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"related-concept.d.ts","sourceRoot":"","sources":["../../src/models/related-concept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAkCnD,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"related-concept.d.ts","sourceRoot":"","sources":["../../src/models/related-concept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAkCnD,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,GAAG,CAAC,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,qBAAa,cAAe,SAAQ,eAAe;IACjD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnB,IAAI,GAAE,kBAAuB;IAYzC;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,IAAI,CAIjC;IAEQ,MAAM,IAAI,kBAAkB;IAQrC,MAAM,CAAC,UAAU,CACf,KAAK,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;QAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,IAAI,GAAG,SAAS,GACnB,MAAM;IAMA,QAAQ,IAAI,MAAM;WAIX,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc;CAGnE"}
|
|
@@ -39,6 +39,7 @@ export class RelatedConcept extends GlossaristModel {
|
|
|
39
39
|
type;
|
|
40
40
|
content;
|
|
41
41
|
ref;
|
|
42
|
+
target;
|
|
42
43
|
constructor(data = {}) {
|
|
43
44
|
super();
|
|
44
45
|
this.type = data.type ?? 'see';
|
|
@@ -48,6 +49,7 @@ export class RelatedConcept extends GlossaristModel {
|
|
|
48
49
|
? data.ref
|
|
49
50
|
: new ConceptRef(data.ref)
|
|
50
51
|
: null;
|
|
52
|
+
this.target = data.target ?? null;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Convenience reader: returns the first available string value from
|
|
@@ -65,12 +67,14 @@ export class RelatedConcept extends GlossaristModel {
|
|
|
65
67
|
obj.content = this.content;
|
|
66
68
|
if (this.ref != null)
|
|
67
69
|
obj.ref = this.ref.toJSON();
|
|
70
|
+
if (this.target != null)
|
|
71
|
+
obj.target = this.target;
|
|
68
72
|
return obj;
|
|
69
73
|
}
|
|
70
74
|
static identityOf(value) {
|
|
71
75
|
const v = value ?? {};
|
|
72
76
|
const ref = v.ref;
|
|
73
|
-
return `${v.type ?? ''}|${ref?.source ?? ''}|${ref?.id ?? ''}`;
|
|
77
|
+
return `${v.type ?? ''}|${ref?.source ?? ''}|${ref?.id ?? ''}|${v.target ?? ''}`;
|
|
74
78
|
}
|
|
75
79
|
identity() {
|
|
76
80
|
return RelatedConcept.identityOf(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"related-concept.js","sourceRoot":"","sources":["../../src/models/related-concept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,MAAM,CAAC,MAAM,kBAAkB,GAA0B,MAAM,CAAC,MAAM,CAAC;IACrE,0BAA0B;IAC1B,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe;IAC5D,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB;IAC1D,SAAS,EAAE,YAAY;IACvB,sBAAsB;IACtB,SAAS,EAAE,UAAU;IACrB,oBAAoB;IACpB,iBAAiB,EAAE,kBAAkB;IACrC,sBAAsB;IACtB,mBAAmB,EAAE,oBAAoB;IACzC,uBAAuB;IACvB,oBAAoB,EAAE,qBAAqB;IAC3C,+BAA+B;IAC/B,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc;IAC7D,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY;IAC3D,UAAU,EAAE,cAAc;IAC1B,uBAAuB;IACvB,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB;IACpE,eAAe;IACf,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe;IAC3E,wCAAwC;IACxC,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,0BAA0B;IAC/E,YAAY;IACZ,qEAAqE;IACrE,yEAAyE;IACzE,6DAA6D;IAC7D,UAAU,EAAE,aAAa;IACzB,4BAA4B;IAC5B,SAAS,EAAE,UAAU;IACrB,mCAAmC;IACnC,8BAA8B,EAAE,2BAA2B,EAAE,4BAA4B;IACzF,4BAA4B;IAC5B,WAAW,EAAE,cAAc;CAC5B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"related-concept.js","sourceRoot":"","sources":["../../src/models/related-concept.ts"],"names":[],"mappings":"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"}
|