@velvetmonkey/vault-core 0.1.0 → 0.2.1

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/wikilinks.js CHANGED
@@ -5,6 +5,29 @@
5
5
  * respecting protected zones (code, frontmatter, existing links, etc.)
6
6
  */
7
7
  import { getProtectedZones, rangeOverlapsProtectedZone } from './protectedZones.js';
8
+ /**
9
+ * Get entity name from Entity (handles both string and object formats)
10
+ */
11
+ function extractEntityName(entity) {
12
+ return typeof entity === 'string' ? entity : entity.name;
13
+ }
14
+ /**
15
+ * Get all search terms for an entity (name + aliases)
16
+ * Returns tuples of [searchTerm, entityName] for proper linking
17
+ */
18
+ function getSearchTerms(entity) {
19
+ if (typeof entity === 'string') {
20
+ return [{ term: entity, entityName: entity }];
21
+ }
22
+ // Include the entity name and all aliases
23
+ const terms = [
24
+ { term: entity.name, entityName: entity.name }
25
+ ];
26
+ for (const alias of entity.aliases) {
27
+ terms.push({ term: alias, entityName: entity.name });
28
+ }
29
+ return terms;
30
+ }
8
31
  /**
9
32
  * Common words to exclude from wikilink suggestions
10
33
  */
@@ -50,7 +73,7 @@ function findEntityMatches(content, entity, caseInsensitive) {
50
73
  * Apply wikilinks to entities in content
51
74
  *
52
75
  * @param content - The markdown content to process
53
- * @param entities - List of entity names to look for
76
+ * @param entities - List of entity names or Entity objects to look for
54
77
  * @param options - Wikilink options
55
78
  * @returns Result with updated content and statistics
56
79
  */
@@ -63,31 +86,94 @@ export function applyWikilinks(content, entities, options = {}) {
63
86
  linkedEntities: [],
64
87
  };
65
88
  }
66
- // Filter out excluded words and sort by length (longest first)
67
- // to avoid partial matches (e.g., "API Management" before "API")
68
- const sortedEntities = entities
69
- .filter(e => !shouldExcludeEntity(e))
70
- .sort((a, b) => b.length - a.length);
89
+ // Build search terms from all entities (names + aliases)
90
+ // Each term maps back to its canonical entity name
91
+ const allSearchTerms = [];
92
+ for (const entity of entities) {
93
+ const terms = getSearchTerms(entity);
94
+ for (const t of terms) {
95
+ if (!shouldExcludeEntity(t.term)) {
96
+ allSearchTerms.push(t);
97
+ }
98
+ }
99
+ }
100
+ // Sort by term length (longest first) to avoid partial matches
101
+ allSearchTerms.sort((a, b) => b.term.length - a.term.length);
71
102
  // Get protected zones
72
103
  let zones = getProtectedZones(content);
73
104
  let result = content;
74
105
  let linksAdded = 0;
75
106
  const linkedEntities = [];
76
- for (const entity of sortedEntities) {
77
- // Find all matches
78
- const matches = findEntityMatches(result, entity, caseInsensitive);
79
- // Filter out matches in protected zones
80
- const validMatches = matches.filter(match => !rangeOverlapsProtectedZone(match.start, match.end, zones));
81
- if (validMatches.length === 0) {
82
- continue;
107
+ if (firstOccurrenceOnly) {
108
+ // For firstOccurrenceOnly mode, we need to find the earliest match across
109
+ // all terms (name + aliases) for each entity, then link that one
110
+ // Also need to handle overlapping matches between different entities
111
+ // First, collect ALL valid matches for each entity (name + aliases combined)
112
+ const entityAllMatches = new Map();
113
+ for (const { term, entityName } of allSearchTerms) {
114
+ const entityKey = entityName.toLowerCase();
115
+ // Find all matches of the search term
116
+ const matches = findEntityMatches(result, term, caseInsensitive);
117
+ // Filter out matches in protected zones
118
+ const validMatches = matches.filter(match => !rangeOverlapsProtectedZone(match.start, match.end, zones));
119
+ if (validMatches.length === 0) {
120
+ continue;
121
+ }
122
+ // Add to entity's matches
123
+ const existingMatches = entityAllMatches.get(entityKey) || [];
124
+ for (const match of validMatches) {
125
+ existingMatches.push({ term, match });
126
+ }
127
+ entityAllMatches.set(entityKey, existingMatches);
128
+ }
129
+ // Sort each entity's matches by position
130
+ for (const [_entityKey, matches] of entityAllMatches.entries()) {
131
+ matches.sort((a, b) => a.match.start - b.match.start);
132
+ }
133
+ // Build final list: for each entity, pick the earliest non-overlapping match
134
+ // Process entities in order of their earliest match length (longest first for same position)
135
+ let allCandidates = [];
136
+ for (const [entityKey, matches] of entityAllMatches.entries()) {
137
+ // Find the original entityName (with correct casing)
138
+ const entityName = allSearchTerms.find(t => t.entityName.toLowerCase() === entityKey)?.entityName || entityKey;
139
+ for (const m of matches) {
140
+ allCandidates.push({ entityName, ...m });
141
+ }
142
+ }
143
+ // Sort by position, then by match length (descending)
144
+ allCandidates.sort((a, b) => {
145
+ if (a.match.start !== b.match.start)
146
+ return a.match.start - b.match.start;
147
+ return b.match.matched.length - a.match.matched.length;
148
+ });
149
+ // Select non-overlapping matches, preferring longer ones at same position
150
+ // Each entity gets at most one match
151
+ const selectedMatches = [];
152
+ const selectedEntityNames = new Set();
153
+ for (const candidate of allCandidates) {
154
+ const entityKey = candidate.entityName.toLowerCase();
155
+ // Skip if this entity already has a selected match
156
+ if (selectedEntityNames.has(entityKey)) {
157
+ continue;
158
+ }
159
+ // Check if this overlaps with any already selected match
160
+ const overlaps = selectedMatches.some(existing => (candidate.match.start >= existing.match.start && candidate.match.start < existing.match.end) ||
161
+ (candidate.match.end > existing.match.start && candidate.match.end <= existing.match.end) ||
162
+ (candidate.match.start <= existing.match.start && candidate.match.end >= existing.match.end));
163
+ if (!overlaps) {
164
+ selectedMatches.push(candidate);
165
+ selectedEntityNames.add(entityKey);
166
+ }
83
167
  }
84
- // Determine which matches to process
85
- const matchesToProcess = firstOccurrenceOnly
86
- ? [validMatches[0]]
87
- : [...validMatches].reverse(); // Process from end to start to preserve positions
88
- for (const match of matchesToProcess) {
89
- // Apply wikilink (use original entity name for consistency)
90
- const wikilink = `[[${entity}]]`;
168
+ // Sort by position from end to start to preserve offsets when inserting
169
+ selectedMatches.sort((a, b) => b.match.start - a.match.start);
170
+ for (const { entityName, term: _term, match } of selectedMatches) {
171
+ // Use display text format when matched text differs from entity name
172
+ const matchedTextLower = match.matched.toLowerCase();
173
+ const entityNameLower = entityName.toLowerCase();
174
+ const wikilink = matchedTextLower === entityNameLower
175
+ ? `[[${entityName}]]`
176
+ : `[[${entityName}|${match.matched}]]`;
91
177
  result = result.slice(0, match.start) + wikilink + result.slice(match.end);
92
178
  // Update protected zones (shift positions after insertion)
93
179
  const shift = wikilink.length - match.matched.length;
@@ -104,8 +190,49 @@ export function applyWikilinks(content, entities, options = {}) {
104
190
  });
105
191
  zones.sort((a, b) => a.start - b.start);
106
192
  linksAdded++;
107
- if (!linkedEntities.includes(entity)) {
108
- linkedEntities.push(entity);
193
+ if (!linkedEntities.includes(entityName)) {
194
+ linkedEntities.push(entityName);
195
+ }
196
+ }
197
+ }
198
+ else {
199
+ // For all occurrences mode, process each term
200
+ for (const { term, entityName } of allSearchTerms) {
201
+ // Find all matches of the search term
202
+ const matches = findEntityMatches(result, term, caseInsensitive);
203
+ // Filter out matches in protected zones
204
+ const validMatches = matches.filter(match => !rangeOverlapsProtectedZone(match.start, match.end, zones));
205
+ if (validMatches.length === 0) {
206
+ continue;
207
+ }
208
+ // Process from end to start to preserve positions
209
+ const matchesToProcess = [...validMatches].reverse();
210
+ for (const match of matchesToProcess) {
211
+ // Use display text format when matched text differs from entity name
212
+ const matchedTextLower = match.matched.toLowerCase();
213
+ const entityNameLower = entityName.toLowerCase();
214
+ const wikilink = matchedTextLower === entityNameLower
215
+ ? `[[${entityName}]]`
216
+ : `[[${entityName}|${match.matched}]]`;
217
+ result = result.slice(0, match.start) + wikilink + result.slice(match.end);
218
+ // Update protected zones (shift positions after insertion)
219
+ const shift = wikilink.length - match.matched.length;
220
+ zones = zones.map(zone => ({
221
+ ...zone,
222
+ start: zone.start <= match.start ? zone.start : zone.start + shift,
223
+ end: zone.end <= match.start ? zone.end : zone.end + shift,
224
+ }));
225
+ // Add new wikilink as protected zone
226
+ zones.push({
227
+ start: match.start,
228
+ end: match.start + wikilink.length,
229
+ type: 'wikilink',
230
+ });
231
+ zones.sort((a, b) => a.start - b.start);
232
+ linksAdded++;
233
+ if (!linkedEntities.includes(entityName)) {
234
+ linkedEntities.push(entityName);
235
+ }
109
236
  }
110
237
  }
111
238
  }
@@ -125,8 +252,9 @@ export function suggestWikilinks(content, entities, options = {}) {
125
252
  if (!entities.length) {
126
253
  return suggestions;
127
254
  }
128
- // Filter and sort entities
255
+ // Extract entity names, filter and sort
129
256
  const sortedEntities = entities
257
+ .map(e => extractEntityName(e))
130
258
  .filter(e => !shouldExcludeEntity(e))
131
259
  .sort((a, b) => b.length - a.length);
132
260
  // Get protected zones
@@ -1 +1 @@
1
- {"version":3,"file":"wikilinks.js","sourceRoot":"","sources":["../src/wikilinks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wikilinks.js","sourceRoot":"","sources":["../src/wikilinks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velvetmonkey/vault-core",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Shared vault utilities for Flywheel ecosystem (entity scanning, wikilinks, protected zones)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -40,7 +40,7 @@
40
40
  "engines": {
41
41
  "node": ">=18.0.0"
42
42
  },
43
- "license": "AGPL-3.0",
43
+ "license": "Apache-2.0",
44
44
  "files": [
45
45
  "dist",
46
46
  "README.md"