@novis10813/secondbrain-cli 0.1.0 → 0.1.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/README.md +74 -5
- package/dist/commands/backlinks.d.ts.map +1 -1
- package/dist/commands/backlinks.js +16 -33
- package/dist/commands/backlinks.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +71 -57
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -20
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/get.js +27 -26
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +22 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/open.d.ts +3 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +28 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/orphans.d.ts.map +1 -1
- package/dist/commands/orphans.js +9 -27
- package/dist/commands/orphans.js.map +1 -1
- package/dist/commands/outlinks.d.ts +3 -0
- package/dist/commands/outlinks.d.ts.map +1 -0
- package/dist/commands/outlinks.js +48 -0
- package/dist/commands/outlinks.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +57 -39
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +4 -18
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +3 -17
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +63 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/vault.d.ts +3 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +233 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +134 -10
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config.d.ts +3 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/database.d.ts +58 -14
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +627 -207
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/global-config.d.ts +53 -0
- package/dist/utils/global-config.d.ts.map +1 -0
- package/dist/utils/global-config.js +144 -0
- package/dist/utils/global-config.js.map +1 -0
- package/dist/utils/parser.d.ts +95 -2
- package/dist/utils/parser.d.ts.map +1 -1
- package/dist/utils/parser.js +436 -38
- package/dist/utils/parser.js.map +1 -1
- package/dist/utils/placeholder.d.ts +37 -0
- package/dist/utils/placeholder.d.ts.map +1 -0
- package/dist/utils/placeholder.js +113 -0
- package/dist/utils/placeholder.js.map +1 -0
- package/dist/utils/position.d.ts +10 -0
- package/dist/utils/position.d.ts.map +1 -0
- package/dist/utils/position.js +24 -0
- package/dist/utils/position.js.map +1 -0
- package/dist/utils/sqlite-adapter.d.ts +8 -0
- package/dist/utils/sqlite-adapter.d.ts.map +1 -0
- package/dist/utils/sqlite-adapter.js +14 -0
- package/dist/utils/sqlite-adapter.js.map +1 -0
- package/dist/utils/template.d.ts +2 -2
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +8 -3
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/vault-resolve.d.ts +23 -0
- package/dist/utils/vault-resolve.d.ts.map +1 -0
- package/dist/utils/vault-resolve.js +86 -0
- package/dist/utils/vault-resolve.js.map +1 -0
- package/dist/utils/vault.d.ts +77 -10
- package/dist/utils/vault.d.ts.map +1 -1
- package/dist/utils/vault.js +253 -98
- package/dist/utils/vault.js.map +1 -1
- package/package.json +9 -3
package/dist/utils/parser.js
CHANGED
|
@@ -36,20 +36,98 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.NoteParser = void 0;
|
|
37
37
|
const crypto_1 = require("crypto");
|
|
38
38
|
const yaml = __importStar(require("yaml"));
|
|
39
|
+
const position_js_1 = require("./position.js");
|
|
39
40
|
class NoteParser {
|
|
40
41
|
static parse(content) {
|
|
41
|
-
const { frontmatter, body } = this.extractFrontmatter(content);
|
|
42
|
+
const { frontmatter, body, bodyStartIndex } = this.extractFrontmatter(content);
|
|
43
|
+
const codeRanges = this.getCodeBlockRanges(body);
|
|
42
44
|
const title = this.extractTitle(body);
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
+
const frontmatterPosition = bodyStartIndex > 0 ? (0, position_js_1.rangeToPos)(content, 0, bodyStartIndex) : undefined;
|
|
46
|
+
const tags = this.extractTags(frontmatter, body, codeRanges, content, bodyStartIndex, frontmatterPosition);
|
|
47
|
+
const links = this.extractLinks(frontmatter, body, content, bodyStartIndex, frontmatterPosition);
|
|
48
|
+
const headings = this.extractHeadings(body, codeRanges, content, bodyStartIndex);
|
|
49
|
+
const headingStructure = this.buildHeadingStructure(headings);
|
|
50
|
+
const bodyBlockRefs = this.extractBlockRefs(body, codeRanges, content, bodyStartIndex);
|
|
51
|
+
const embeds = this.extractEmbeds(body, codeRanges, content, bodyStartIndex);
|
|
52
|
+
const blockRefs = this.mergeBlockRefsFromLinks(bodyBlockRefs, links, embeds);
|
|
53
|
+
const listItems = this.extractListItems(body, codeRanges, content, bodyStartIndex);
|
|
54
|
+
const footnotes = this.extractFootnoteDefinitions(body, codeRanges, content, bodyStartIndex);
|
|
55
|
+
const footnoteRefs = this.extractFootnoteRefs(body, codeRanges, content, bodyStartIndex);
|
|
45
56
|
return {
|
|
46
57
|
title,
|
|
47
58
|
content: body,
|
|
48
59
|
frontmatter,
|
|
60
|
+
frontmatterPosition,
|
|
49
61
|
tags,
|
|
50
|
-
links
|
|
62
|
+
links,
|
|
63
|
+
headings,
|
|
64
|
+
headingStructure,
|
|
65
|
+
blockRefs,
|
|
66
|
+
embeds,
|
|
67
|
+
listItems,
|
|
68
|
+
footnotes,
|
|
69
|
+
footnoteRefs
|
|
51
70
|
};
|
|
52
71
|
}
|
|
72
|
+
/** Extract block ID from link/embed target like "path#^block-id" or "path#heading#^block-id". */
|
|
73
|
+
static parseBlockIdFromTarget(target) {
|
|
74
|
+
const m = target.match(/#\^([a-zA-Z0-9_-]+)$/);
|
|
75
|
+
return m ? m[1] : null;
|
|
76
|
+
}
|
|
77
|
+
static mergeBlockRefsFromLinks(bodyBlockRefs, links, embeds) {
|
|
78
|
+
const result = [...bodyBlockRefs];
|
|
79
|
+
const seen = new Set(bodyBlockRefs.map(b => b.blockId));
|
|
80
|
+
for (const link of links) {
|
|
81
|
+
const blockId = this.parseBlockIdFromTarget(link.target);
|
|
82
|
+
if (blockId && !seen.has(blockId)) {
|
|
83
|
+
seen.add(blockId);
|
|
84
|
+
result.push({
|
|
85
|
+
blockId,
|
|
86
|
+
line: link.line,
|
|
87
|
+
column: link.column,
|
|
88
|
+
position: link.position
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
for (const embed of embeds) {
|
|
93
|
+
const blockId = this.parseBlockIdFromTarget(embed.target);
|
|
94
|
+
if (blockId && !seen.has(blockId)) {
|
|
95
|
+
seen.add(blockId);
|
|
96
|
+
result.push({
|
|
97
|
+
blockId,
|
|
98
|
+
line: embed.line,
|
|
99
|
+
column: embed.column,
|
|
100
|
+
position: embed.position
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
static indexToPosition(content, index) {
|
|
107
|
+
const before = content.slice(0, index);
|
|
108
|
+
const lastNewline = before.lastIndexOf('\n');
|
|
109
|
+
const line = (before.match(/\n/g)?.length ?? 0) + 1;
|
|
110
|
+
const column = lastNewline === -1 ? index + 1 : index - lastNewline;
|
|
111
|
+
return { line, column };
|
|
112
|
+
}
|
|
113
|
+
static getCodeBlockRanges(content) {
|
|
114
|
+
const ranges = [];
|
|
115
|
+
const fenced = /```[^`]*?```/g;
|
|
116
|
+
let m;
|
|
117
|
+
while ((m = fenced.exec(content)) !== null) {
|
|
118
|
+
ranges.push([m.index, m.index + m[0].length]);
|
|
119
|
+
}
|
|
120
|
+
const inline = /`[^`]*`/g;
|
|
121
|
+
while ((m = inline.exec(content)) !== null) {
|
|
122
|
+
if (!ranges.some(([s, e]) => m.index >= s && m.index < e)) {
|
|
123
|
+
ranges.push([m.index, m.index + m[0].length]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return ranges;
|
|
127
|
+
}
|
|
128
|
+
static isInCodeBlock(index, ranges) {
|
|
129
|
+
return ranges.some(([s, e]) => index >= s && index < e);
|
|
130
|
+
}
|
|
53
131
|
static computeHash(content) {
|
|
54
132
|
return (0, crypto_1.createHash)('sha256').update(content).digest('hex');
|
|
55
133
|
}
|
|
@@ -60,13 +138,13 @@ class NoteParser {
|
|
|
60
138
|
try {
|
|
61
139
|
const frontmatter = yaml.parse(match[1]) || {};
|
|
62
140
|
const body = content.slice(match[0].length);
|
|
63
|
-
return { frontmatter, body };
|
|
141
|
+
return { frontmatter, body, bodyStartIndex: match[0].length };
|
|
64
142
|
}
|
|
65
143
|
catch {
|
|
66
144
|
// Invalid YAML, treat as no frontmatter
|
|
67
145
|
}
|
|
68
146
|
}
|
|
69
|
-
return { frontmatter: {}, body: content };
|
|
147
|
+
return { frontmatter: {}, body: content, bodyStartIndex: 0 };
|
|
70
148
|
}
|
|
71
149
|
static extractTitle(content) {
|
|
72
150
|
// Look for first H1 heading
|
|
@@ -81,62 +159,217 @@ class NoteParser {
|
|
|
81
159
|
}
|
|
82
160
|
return 'Untitled';
|
|
83
161
|
}
|
|
84
|
-
static extractTags(frontmatter, content) {
|
|
85
|
-
const
|
|
86
|
-
|
|
162
|
+
static extractTags(frontmatter, body, codeRanges, content, bodyStartIndex, frontmatterPosition) {
|
|
163
|
+
const seen = new Set();
|
|
164
|
+
const result = [];
|
|
165
|
+
const fmLine = { line: 1, column: 1 };
|
|
166
|
+
const fmPosition = frontmatterPosition ?? (0, position_js_1.rangeToPos)(content, 0, Math.min(1, content.length));
|
|
87
167
|
if (frontmatter.tags) {
|
|
88
168
|
if (Array.isArray(frontmatter.tags)) {
|
|
89
|
-
|
|
169
|
+
for (const tag of frontmatter.tags) {
|
|
170
|
+
const name = String(tag).replace(/^#/, '');
|
|
171
|
+
if (name) {
|
|
172
|
+
result.push({ name, ...fmLine, position: fmPosition });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
90
175
|
}
|
|
91
176
|
else if (typeof frontmatter.tags === 'string') {
|
|
92
|
-
frontmatter.tags.split(/[,\s]+/)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
177
|
+
for (const tag of frontmatter.tags.split(/[,\s]+/)) {
|
|
178
|
+
const name = tag.replace(/^#/, '');
|
|
179
|
+
if (name) {
|
|
180
|
+
result.push({ name, ...fmLine, position: fmPosition });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
96
183
|
}
|
|
97
184
|
}
|
|
98
|
-
// From content body (Obsidian-style #tags)
|
|
99
|
-
// Strip code blocks to avoid extracting tags from code
|
|
100
|
-
const contentWithoutCode = content
|
|
101
|
-
.replace(/```[\s\S]*?```/g, '') // Remove fenced code blocks
|
|
102
|
-
.replace(/`[^`]*`/g, ''); // Remove inline code
|
|
103
185
|
const tagRegex = /#([\w/-]+)/g;
|
|
104
186
|
let match;
|
|
105
|
-
while ((match = tagRegex.exec(
|
|
106
|
-
|
|
107
|
-
if (!contentWithoutCode.substring(match.index - 1, match.index).match(/\n|^/)) {
|
|
187
|
+
while ((match = tagRegex.exec(body)) !== null) {
|
|
188
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
108
189
|
continue;
|
|
109
|
-
|
|
110
|
-
|
|
190
|
+
const charBefore = match.index === 0 ? '\n' : body[match.index - 1];
|
|
191
|
+
const atLineStart = charBefore === '\n' || charBefore === '\r';
|
|
192
|
+
if (atLineStart && body.slice(match.index).match(/^#{1,6}\s+/))
|
|
193
|
+
continue; // heading
|
|
194
|
+
if (!atLineStart && !/[\s]/.test(charBefore))
|
|
195
|
+
continue; // require space/newline before #tag
|
|
196
|
+
const name = match[1];
|
|
197
|
+
const pos = this.indexToPosition(body, match.index);
|
|
198
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
199
|
+
result.push({ name, line: pos.line, column: pos.column, position });
|
|
111
200
|
}
|
|
112
|
-
return
|
|
201
|
+
return result;
|
|
113
202
|
}
|
|
114
|
-
static extractLinks(frontmatter, content) {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
203
|
+
static extractLinks(frontmatter, body, content, bodyStartIndex, frontmatterPosition) {
|
|
204
|
+
const result = [];
|
|
205
|
+
const fmPos = { line: 1, column: 1 };
|
|
206
|
+
const fmPosition = frontmatterPosition ?? (0, position_js_1.rangeToPos)(content, 0, Math.min(1, content.length));
|
|
207
|
+
this.extractLinksFromObject(frontmatter, (target) => {
|
|
208
|
+
result.push({ target, ...fmPos, position: fmPosition });
|
|
209
|
+
});
|
|
210
|
+
// Obsidian links [[x]] or [[x|label]]; exclude embeds ![[x]]
|
|
211
|
+
const linkRegex = /(?<!!)\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
|
|
120
212
|
let match;
|
|
121
|
-
while ((match = linkRegex.exec(
|
|
122
|
-
|
|
213
|
+
while ((match = linkRegex.exec(body)) !== null) {
|
|
214
|
+
const target = match[1].trim();
|
|
215
|
+
const pos = this.indexToPosition(body, match.index);
|
|
216
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
217
|
+
result.push({ target, line: pos.line, column: pos.column, position });
|
|
123
218
|
}
|
|
124
|
-
return
|
|
219
|
+
return result;
|
|
125
220
|
}
|
|
126
|
-
static
|
|
221
|
+
static extractEmbeds(body, codeRanges, content, bodyStartIndex) {
|
|
222
|
+
const result = [];
|
|
223
|
+
// Obsidian embeds: ![[path]] or ![[path|display]]; skip inside code blocks
|
|
224
|
+
const embedRegex = /!\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
|
|
225
|
+
let match;
|
|
226
|
+
while ((match = embedRegex.exec(body)) !== null) {
|
|
227
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
228
|
+
continue;
|
|
229
|
+
const target = match[1].trim();
|
|
230
|
+
const pos = this.indexToPosition(body, match.index);
|
|
231
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
232
|
+
result.push({ target, line: pos.line, column: pos.column, position });
|
|
233
|
+
}
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
static extractListItems(body, codeRanges, content, bodyStartIndex) {
|
|
237
|
+
const result = [];
|
|
238
|
+
// Match list items: unordered (-, *, +) or ordered (1., 2., etc.)
|
|
239
|
+
// Also match task items: - [ ] or - [x] or - [X]
|
|
240
|
+
// Pattern: (indentation)(marker)(optional task checkbox)(content)
|
|
241
|
+
const listItemRegex = /^(\s*)([-*+]|\d+\.)\s+(\[([ xX])\])?\s*(.+)$/gm;
|
|
242
|
+
let match;
|
|
243
|
+
while ((match = listItemRegex.exec(body)) !== null) {
|
|
244
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
245
|
+
continue;
|
|
246
|
+
const indent = match[1];
|
|
247
|
+
const level = Math.floor(indent.length / 2); // Typically 2 spaces per level
|
|
248
|
+
const taskCheckbox = match[3]; // '[x]', '[X]', '[ ]', or undefined
|
|
249
|
+
const taskChar = match[4]; // 'x', 'X', ' ', or undefined
|
|
250
|
+
// task is 'x' for checked tasks, undefined for unchecked/non-task items
|
|
251
|
+
const task = taskCheckbox && (taskChar === 'x' || taskChar === 'X') ? 'x' : undefined;
|
|
252
|
+
const pos = this.indexToPosition(body, match.index);
|
|
253
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
254
|
+
result.push({
|
|
255
|
+
level,
|
|
256
|
+
task,
|
|
257
|
+
line: pos.line,
|
|
258
|
+
column: pos.column,
|
|
259
|
+
position
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
static extractFootnoteDefinitions(body, codeRanges, content, bodyStartIndex) {
|
|
265
|
+
const result = [];
|
|
266
|
+
const definitionRegex = /^(\s*)\[\^([^\]]+)\]:\s*(.*)$/gm;
|
|
267
|
+
let match;
|
|
268
|
+
while ((match = definitionRegex.exec(body)) !== null) {
|
|
269
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
270
|
+
continue;
|
|
271
|
+
const id = match[2].trim();
|
|
272
|
+
const contentText = (match[3] ?? '').trim();
|
|
273
|
+
const pos = this.indexToPosition(body, match.index);
|
|
274
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
275
|
+
result.push({ id, content: contentText, line: pos.line, column: pos.column, position });
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
static extractFootnoteRefs(body, codeRanges, content, bodyStartIndex) {
|
|
280
|
+
const result = [];
|
|
281
|
+
const refRegex = /\[\^([^\]]+)\]/g;
|
|
282
|
+
let match;
|
|
283
|
+
while ((match = refRegex.exec(body)) !== null) {
|
|
284
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
285
|
+
continue;
|
|
286
|
+
const after = body[match.index + match[0].length];
|
|
287
|
+
if (after === ':')
|
|
288
|
+
continue;
|
|
289
|
+
const id = match[1].trim();
|
|
290
|
+
const pos = this.indexToPosition(body, match.index);
|
|
291
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
292
|
+
result.push({ id, line: pos.line, column: pos.column, position });
|
|
293
|
+
}
|
|
294
|
+
return result;
|
|
295
|
+
}
|
|
296
|
+
static extractLinksFromObject(obj, onLink) {
|
|
127
297
|
if (typeof obj === 'string') {
|
|
128
298
|
const linkRegex = /\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
|
|
129
299
|
let match;
|
|
130
300
|
while ((match = linkRegex.exec(obj)) !== null) {
|
|
131
|
-
|
|
301
|
+
onLink(match[1].trim());
|
|
132
302
|
}
|
|
133
303
|
}
|
|
134
304
|
else if (Array.isArray(obj)) {
|
|
135
|
-
obj.forEach(item => this.extractLinksFromObject(item,
|
|
305
|
+
obj.forEach(item => this.extractLinksFromObject(item, onLink));
|
|
136
306
|
}
|
|
137
307
|
else if (obj && typeof obj === 'object') {
|
|
138
|
-
Object.values(obj).forEach(value => this.extractLinksFromObject(value,
|
|
308
|
+
Object.values(obj).forEach(value => this.extractLinksFromObject(value, onLink));
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
static extractHeadings(body, codeRanges, content, bodyStartIndex) {
|
|
312
|
+
const result = [];
|
|
313
|
+
const headingRegex = /^(#{1,6})\s+(.+)$/gm;
|
|
314
|
+
let match;
|
|
315
|
+
while ((match = headingRegex.exec(body)) !== null) {
|
|
316
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
317
|
+
continue;
|
|
318
|
+
const level = match[1].length;
|
|
319
|
+
const text = match[2].trim();
|
|
320
|
+
const pos = this.indexToPosition(body, match.index);
|
|
321
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
322
|
+
result.push({ level, text, line: pos.line, column: pos.column, position });
|
|
323
|
+
}
|
|
324
|
+
return result;
|
|
325
|
+
}
|
|
326
|
+
static buildHeadingStructure(headings) {
|
|
327
|
+
const root = [];
|
|
328
|
+
const stack = [];
|
|
329
|
+
for (const heading of headings) {
|
|
330
|
+
const node = {
|
|
331
|
+
level: heading.level,
|
|
332
|
+
text: heading.text,
|
|
333
|
+
line: heading.line,
|
|
334
|
+
column: heading.column,
|
|
335
|
+
position: heading.position,
|
|
336
|
+
children: []
|
|
337
|
+
};
|
|
338
|
+
// Find the appropriate parent: the most recent heading with a lower level
|
|
339
|
+
while (stack.length > 0 && stack[stack.length - 1].level >= heading.level) {
|
|
340
|
+
stack.pop();
|
|
341
|
+
}
|
|
342
|
+
if (stack.length === 0) {
|
|
343
|
+
// No parent found, add to root
|
|
344
|
+
root.push(node);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Add as child of the most recent parent
|
|
348
|
+
stack[stack.length - 1].children.push(node);
|
|
349
|
+
}
|
|
350
|
+
// Push current node onto stack for potential children
|
|
351
|
+
stack.push(node);
|
|
352
|
+
}
|
|
353
|
+
return root;
|
|
354
|
+
}
|
|
355
|
+
static extractBlockRefs(body, codeRanges, content, bodyStartIndex) {
|
|
356
|
+
const result = [];
|
|
357
|
+
const seen = new Set();
|
|
358
|
+
// Obsidian block ref: ^block-id (alphanumeric, hyphens, underscores)
|
|
359
|
+
const blockRefRegex = /\^([a-zA-Z0-9_-]+)/g;
|
|
360
|
+
let match;
|
|
361
|
+
while ((match = blockRefRegex.exec(body)) !== null) {
|
|
362
|
+
if (this.isInCodeBlock(match.index, codeRanges))
|
|
363
|
+
continue;
|
|
364
|
+
const blockId = match[1];
|
|
365
|
+
if (seen.has(blockId))
|
|
366
|
+
continue;
|
|
367
|
+
seen.add(blockId);
|
|
368
|
+
const pos = this.indexToPosition(body, match.index);
|
|
369
|
+
const position = (0, position_js_1.rangeToPos)(content, bodyStartIndex + match.index, bodyStartIndex + match.index + match[0].length);
|
|
370
|
+
result.push({ blockId, line: pos.line, column: pos.column, position });
|
|
139
371
|
}
|
|
372
|
+
return result;
|
|
140
373
|
}
|
|
141
374
|
static generateNoteContent(title, content, frontmatter = {}) {
|
|
142
375
|
const fm = yaml.stringify(frontmatter).trim();
|
|
@@ -154,6 +387,171 @@ class NoteParser {
|
|
|
154
387
|
};
|
|
155
388
|
return this.generateNoteContent(dateStr, content, frontmatter);
|
|
156
389
|
}
|
|
390
|
+
/**
|
|
391
|
+
* Convert HeadingRef[] to HeadingCache[] for ContentMetadata.
|
|
392
|
+
* Maps `text` property to `heading` property.
|
|
393
|
+
*/
|
|
394
|
+
static headingsToCache(headings) {
|
|
395
|
+
return headings.map(h => ({
|
|
396
|
+
heading: h.text,
|
|
397
|
+
level: h.level,
|
|
398
|
+
position: h.position
|
|
399
|
+
}));
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Build document sections from parsed note (Obsidian-aligned).
|
|
403
|
+
* Sections: frontmatter (if present), then one section per heading from that heading to the next
|
|
404
|
+
* (or end of file). With no headings, a single content section from body start to EOF.
|
|
405
|
+
*/
|
|
406
|
+
static buildSections(parsed, fullContent) {
|
|
407
|
+
const sections = [];
|
|
408
|
+
const bodyStartOffset = parsed.frontmatterPosition != null ? parsed.frontmatterPosition.end.offset + 1 : 0;
|
|
409
|
+
if (parsed.frontmatterPosition != null) {
|
|
410
|
+
sections.push({
|
|
411
|
+
id: 'frontmatter',
|
|
412
|
+
type: 'frontmatter',
|
|
413
|
+
position: parsed.frontmatterPosition
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
const headings = parsed.headings;
|
|
417
|
+
if (headings.length === 0) {
|
|
418
|
+
sections.push({
|
|
419
|
+
id: '0',
|
|
420
|
+
type: 'content',
|
|
421
|
+
position: (0, position_js_1.rangeToPos)(fullContent, bodyStartOffset, fullContent.length)
|
|
422
|
+
});
|
|
423
|
+
return sections;
|
|
424
|
+
}
|
|
425
|
+
for (let i = 0; i < headings.length; i++) {
|
|
426
|
+
const startOffset = headings[i].position.start.offset;
|
|
427
|
+
const endOffset = i + 1 < headings.length ? headings[i + 1].position.start.offset : fullContent.length;
|
|
428
|
+
sections.push({
|
|
429
|
+
id: String(i),
|
|
430
|
+
type: 'heading',
|
|
431
|
+
position: (0, position_js_1.rangeToPos)(fullContent, startOffset, endOffset)
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
return sections;
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Convert ListItemRef[] to ListItemCache[] for ContentMetadata.
|
|
438
|
+
* Preserves task status and position information.
|
|
439
|
+
*/
|
|
440
|
+
static listItemsToCache(listItems) {
|
|
441
|
+
return listItems.map(li => ({
|
|
442
|
+
task: li.task,
|
|
443
|
+
position: li.position
|
|
444
|
+
}));
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Convert ParsedNote to ContentMetadata (Obsidian CachedMetadata format).
|
|
448
|
+
* Separates content-derived metadata from file system information.
|
|
449
|
+
*/
|
|
450
|
+
static parsedToContentMetadata(parsed, originalContent) {
|
|
451
|
+
const metadata = {};
|
|
452
|
+
// Convert links
|
|
453
|
+
if (parsed.links.length > 0) {
|
|
454
|
+
metadata.links = parsed.links.map((link) => {
|
|
455
|
+
// Try to extract display text from original content if available
|
|
456
|
+
let displayText;
|
|
457
|
+
let original = `[[${link.target}]]`;
|
|
458
|
+
if (originalContent) {
|
|
459
|
+
const startOffset = link.position.start.offset;
|
|
460
|
+
const endOffset = link.position.end.offset;
|
|
461
|
+
const linkText = originalContent.slice(startOffset, endOffset);
|
|
462
|
+
const match = linkText.match(/\[\[([^\]]+)\]\]/);
|
|
463
|
+
if (match) {
|
|
464
|
+
original = match[0];
|
|
465
|
+
const parts = match[1].split('|');
|
|
466
|
+
if (parts.length > 1) {
|
|
467
|
+
displayText = parts.slice(1).join('|');
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return {
|
|
472
|
+
link: link.target,
|
|
473
|
+
original,
|
|
474
|
+
displayText,
|
|
475
|
+
position: link.position
|
|
476
|
+
};
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
// Convert embeds
|
|
480
|
+
if (parsed.embeds.length > 0) {
|
|
481
|
+
metadata.embeds = parsed.embeds.map((embed) => {
|
|
482
|
+
// Try to extract display text from original content if available
|
|
483
|
+
let displayText;
|
|
484
|
+
let original = `![[${embed.target}]]`;
|
|
485
|
+
if (originalContent) {
|
|
486
|
+
const startOffset = embed.position.start.offset;
|
|
487
|
+
const endOffset = embed.position.end.offset;
|
|
488
|
+
const embedText = originalContent.slice(startOffset, endOffset);
|
|
489
|
+
const match = embedText.match(/!\[\[([^\]]+)\]\]/);
|
|
490
|
+
if (match) {
|
|
491
|
+
original = match[0];
|
|
492
|
+
const parts = match[1].split('|');
|
|
493
|
+
if (parts.length > 1) {
|
|
494
|
+
displayText = parts.slice(1).join('|');
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return {
|
|
499
|
+
link: embed.target,
|
|
500
|
+
original,
|
|
501
|
+
displayText,
|
|
502
|
+
position: embed.position
|
|
503
|
+
};
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
// Convert tags
|
|
507
|
+
if (parsed.tags.length > 0) {
|
|
508
|
+
metadata.tags = parsed.tags.map((tag) => ({
|
|
509
|
+
tag: tag.name,
|
|
510
|
+
position: tag.position
|
|
511
|
+
}));
|
|
512
|
+
}
|
|
513
|
+
// Convert headings
|
|
514
|
+
if (parsed.headings.length > 0) {
|
|
515
|
+
metadata.headings = this.headingsToCache(parsed.headings);
|
|
516
|
+
}
|
|
517
|
+
// Convert blocks
|
|
518
|
+
if (parsed.blockRefs.length > 0) {
|
|
519
|
+
metadata.blocks = parsed.blockRefs.map((block) => ({
|
|
520
|
+
id: block.blockId,
|
|
521
|
+
position: block.position
|
|
522
|
+
}));
|
|
523
|
+
}
|
|
524
|
+
// Convert frontmatter position
|
|
525
|
+
if (parsed.frontmatterPosition) {
|
|
526
|
+
metadata.frontmatter = {
|
|
527
|
+
position: parsed.frontmatterPosition
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
// Convert list items
|
|
531
|
+
if (parsed.listItems.length > 0) {
|
|
532
|
+
metadata.listItems = this.listItemsToCache(parsed.listItems);
|
|
533
|
+
}
|
|
534
|
+
// Convert footnotes (definitions)
|
|
535
|
+
if (parsed.footnotes.length > 0) {
|
|
536
|
+
metadata.footnotes = parsed.footnotes.map((fn) => ({
|
|
537
|
+
id: fn.id,
|
|
538
|
+
content: fn.content,
|
|
539
|
+
position: fn.position
|
|
540
|
+
}));
|
|
541
|
+
}
|
|
542
|
+
// Convert footnote refs
|
|
543
|
+
if (parsed.footnoteRefs.length > 0) {
|
|
544
|
+
metadata.footnoteRefs = parsed.footnoteRefs.map((ref) => ({
|
|
545
|
+
id: ref.id,
|
|
546
|
+
position: ref.position
|
|
547
|
+
}));
|
|
548
|
+
}
|
|
549
|
+
// Sections (from headings + frontmatter); require full content for correct positions
|
|
550
|
+
if (originalContent != null) {
|
|
551
|
+
metadata.sections = this.buildSections(parsed, originalContent);
|
|
552
|
+
}
|
|
553
|
+
return metadata;
|
|
554
|
+
}
|
|
157
555
|
}
|
|
158
556
|
exports.NoteParser = NoteParser;
|
|
159
557
|
//# sourceMappingURL=parser.js.map
|
package/dist/utils/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PlaceholderContext } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a DATE placeholder token and return the formatted date string.
|
|
4
|
+
*
|
|
5
|
+
* Supported formats:
|
|
6
|
+
* DATE → default 'YYYY-MM-DD'
|
|
7
|
+
* DATE:format → custom moment format
|
|
8
|
+
* DATE+N / DATE-N → offset by N days, default format
|
|
9
|
+
* DATE:format+N → custom format + day offset
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseDatePlaceholder(token: string, baseDate: Date): string;
|
|
12
|
+
/**
|
|
13
|
+
* Parse a TIME placeholder token and return the formatted time string.
|
|
14
|
+
*
|
|
15
|
+
* Supported formats:
|
|
16
|
+
* TIME → default 'HH:mm'
|
|
17
|
+
* TIME:format → custom moment format
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseTimePlaceholder(token: string, baseDate: Date): string;
|
|
20
|
+
/**
|
|
21
|
+
* Process all built-in placeholders in a template string.
|
|
22
|
+
*
|
|
23
|
+
* Built-in placeholders (uppercase keywords):
|
|
24
|
+
* {{DATE}} → today's date (YYYY-MM-DD)
|
|
25
|
+
* {{DATE:format}} → custom moment format
|
|
26
|
+
* {{DATE+N}} → N days from today
|
|
27
|
+
* {{DATE:format+N}} → custom format + offset
|
|
28
|
+
* {{TIME}} → current time (HH:mm)
|
|
29
|
+
* {{TIME:format}} → custom moment format
|
|
30
|
+
* {{TITLE}} → context.title (left as-is if not provided)
|
|
31
|
+
* {{VAULT}} → context.vault (left as-is if not provided)
|
|
32
|
+
* {{UUID}} → random UUID v4 (unique per occurrence)
|
|
33
|
+
*
|
|
34
|
+
* User-defined lowercase {{variable}} placeholders are NOT touched.
|
|
35
|
+
*/
|
|
36
|
+
export declare function processPlaceholders(template: string, context: PlaceholderContext): string;
|
|
37
|
+
//# sourceMappingURL=placeholder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placeholder.d.ts","sourceRoot":"","sources":["../../src/utils/placeholder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,CA0B1E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,CAK1E;AAkBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA8BzF"}
|