@oomkapwn/enquire-mcp 3.11.0-rc.2 → 3.11.0-rc.21
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/CHANGELOG.md +309 -0
- package/README.ar.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +5 -5
- package/README.hi.md +1 -1
- package/README.ja.md +4 -4
- package/README.md +5 -5
- package/README.pt.md +5 -5
- package/README.ru.md +6 -6
- package/README.zh.md +1 -1
- package/SECURITY.md +2 -2
- package/dist/bases.d.ts.map +1 -1
- package/dist/bases.js +39 -16
- package/dist/bases.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/dql.d.ts.map +1 -1
- package/dist/dql.js +15 -6
- package/dist/dql.js.map +1 -1
- package/dist/embed-db.d.ts +4 -1
- package/dist/embed-db.d.ts.map +1 -1
- package/dist/embed-db.js +6 -2
- package/dist/embed-db.js.map +1 -1
- package/dist/embed-pipeline.d.ts.map +1 -1
- package/dist/embed-pipeline.js +6 -1
- package/dist/embed-pipeline.js.map +1 -1
- package/dist/embeddings.d.ts +6 -0
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +5 -2
- package/dist/embeddings.js.map +1 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +21 -3
- package/dist/feedback.js.map +1 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +41 -33
- package/dist/frontmatter.js.map +1 -1
- package/dist/fts5.d.ts +4 -1
- package/dist/fts5.d.ts.map +1 -1
- package/dist/fts5.js +18 -9
- package/dist/fts5.js.map +1 -1
- package/dist/hnsw.d.ts.map +1 -1
- package/dist/hnsw.js +7 -3
- package/dist/hnsw.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/name-fold.d.ts +75 -0
- package/dist/name-fold.d.ts.map +1 -1
- package/dist/name-fold.js +94 -0
- package/dist/name-fold.js.map +1 -1
- package/dist/parser.d.ts +44 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +113 -15
- package/dist/parser.js.map +1 -1
- package/dist/periodic.d.ts.map +1 -1
- package/dist/periodic.js +2 -1
- package/dist/periodic.js.map +1 -1
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +89 -13
- package/dist/tool-registry.js.map +1 -1
- package/dist/tools/meta.d.ts +4 -0
- package/dist/tools/meta.d.ts.map +1 -1
- package/dist/tools/meta.js +66 -21
- package/dist/tools/meta.js.map +1 -1
- package/dist/tools/read.d.ts +14 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +56 -14
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/search.d.ts +30 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +86 -12
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/write.d.ts +1 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +102 -38
- package/dist/tools/write.js.map +1 -1
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +37 -4
- package/dist/vault.js.map +1 -1
- package/dist/watcher.d.ts +13 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +13 -0
- package/dist/watcher.js.map +1 -1
- package/dist/wildcard-match.d.ts +28 -0
- package/dist/wildcard-match.d.ts.map +1 -1
- package/dist/wildcard-match.js +66 -0
- package/dist/wildcard-match.js.map +1 -1
- package/docs/COMPARISON.md +2 -2
- package/docs/api.md +1 -1
- package/package.json +10 -10
package/dist/name-fold.js
CHANGED
|
@@ -32,4 +32,98 @@
|
|
|
32
32
|
export function foldName(name) {
|
|
33
33
|
return name.normalize("NFC").toLowerCase();
|
|
34
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* NFC-fold + case-fold a TAG for comparison or tag-keyed Maps/Sets. Strips any
|
|
37
|
+
* leading `#`(s) first, then applies {@link foldName}. Tags are a user-authored
|
|
38
|
+
* Unicode identity surface (Obsidian permits Unicode letters in tags), so the
|
|
39
|
+
* SAME canonical-key discipline as note names applies: a `#café` tag stored NFD
|
|
40
|
+
* (macOS) must match an NFC `café` query and dedupe against an NFC frontmatter
|
|
41
|
+
* `tags: [café]`. v3.11.0-rc.9 — the NFC class's tag sibling (the rc.46 name
|
|
42
|
+
* sweep + its invariant covered note names, never the parallel tag surface;
|
|
43
|
+
* confirmed by an external re-audit as L-TAG-1, with ~13 unfolded tag sites).
|
|
44
|
+
*
|
|
45
|
+
* @param tag - a raw tag, with or without leading `#`
|
|
46
|
+
* @returns the `#`-stripped, NFC-normalized, lower-cased comparison key
|
|
47
|
+
*/
|
|
48
|
+
export function foldTag(tag) {
|
|
49
|
+
return foldName(tag.replace(/^#+/, ""));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* NFC + case fold for a user-authored frontmatter / query VALUE before a
|
|
53
|
+
* case-INSENSITIVE compare (DQL `looseEq` / `contains`, `obsidian_search`
|
|
54
|
+
* `filter_frontmatter`). Semantically identical to {@link foldName} but named for
|
|
55
|
+
* the value surface so intent — and the NFC-class invariant — is explicit, so an
|
|
56
|
+
* NFD-on-disk value matches an NFC query literal. v3.11.0-rc.9 centralizes the
|
|
57
|
+
* rc.8 DQL-local `nfcLower` here so every query surface shares ONE implementation.
|
|
58
|
+
*
|
|
59
|
+
* @param value - a user-authored frontmatter or query-literal string
|
|
60
|
+
* @returns the NFC-normalized, lower-cased value
|
|
61
|
+
*/
|
|
62
|
+
export function nfcLower(value) {
|
|
63
|
+
return value.normalize("NFC").toLowerCase();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* NFC-normalize a value WITHOUT case-folding, for a case-SENSITIVE compare
|
|
67
|
+
* (Obsidian Bases frontmatter `==` / `contains`, which mirror Bases' own
|
|
68
|
+
* case-sensitive semantics). Canonicalizes Unicode form only — `café`(NFC) ===
|
|
69
|
+
* `café`(NFD) — while still distinguishing `Café` from `café`. v3.11.0-rc.9.
|
|
70
|
+
*
|
|
71
|
+
* @param value - a user-authored frontmatter or query-literal string
|
|
72
|
+
* @returns the NFC-normalized value (original case preserved)
|
|
73
|
+
*/
|
|
74
|
+
export function nfc(value) {
|
|
75
|
+
return value.normalize("NFC");
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Case/NFC-insensitive frontmatter KEY lookup. Obsidian "properties" / Dataview
|
|
79
|
+
* treat field NAMES case-insensitively, but a raw `frontmatter[key]` / `key in
|
|
80
|
+
* frontmatter` is exact-string by JS semantics — so a filter key `Status` (or an
|
|
81
|
+
* NFC key vs an NFD-on-disk key) silently missed `status`. This folds BOTH sides
|
|
82
|
+
* via {@link nfcLower} at LOOKUP time — NEVER at parse time (folding keys in
|
|
83
|
+
* `parseFrontmatter` would collide a distinct-cased key and corrupt write
|
|
84
|
+
* round-trips). v3.11.0-rc.10 (H1, external audit — the KEY sibling of the rc.9
|
|
85
|
+
* VALUE fold).
|
|
86
|
+
*
|
|
87
|
+
* Precedence: an EXACT own-key wins (preserves byte-exact semantics when the key
|
|
88
|
+
* is present verbatim); otherwise the FIRST own key (insertion order) whose fold
|
|
89
|
+
* matches wins (deterministic on a `Status`+`status` collision).
|
|
90
|
+
*
|
|
91
|
+
* @param obj - a frontmatter object (own enumerable string keys)
|
|
92
|
+
* @param key - the user/agent-supplied filter key
|
|
93
|
+
* @returns `{ present, value }` — `present:false`, `value:undefined` if no own key folds to `key`.
|
|
94
|
+
*/
|
|
95
|
+
export function lookupFoldedKey(obj, key) {
|
|
96
|
+
if (Object.hasOwn(obj, key))
|
|
97
|
+
return { present: true, value: obj[key] };
|
|
98
|
+
const want = nfcLower(key);
|
|
99
|
+
for (const k of Object.keys(obj)) {
|
|
100
|
+
if (nfcLower(k) === want)
|
|
101
|
+
return { present: true, value: obj[k] };
|
|
102
|
+
}
|
|
103
|
+
return { present: false, value: undefined };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Folded lookup across an ORDERED list of candidate frontmatter keys: returns the first
|
|
107
|
+
* candidate present with a non-nullish value (case/NFC-insensitive via {@link lookupFoldedKey}),
|
|
108
|
+
* else `undefined`. Preserves `a ?? b`-style precedence while folding the key — so a
|
|
109
|
+
* producer reading `fm.tags ?? fm.tag` (or `fm.title`) no longer goes blind to a case/NFC
|
|
110
|
+
* -variant property name (`Tags:`, `Title:`, an NFD-on-disk key).
|
|
111
|
+
*
|
|
112
|
+
* v3.11.0-rc.13 (rc.12-audit AUD-03 + the embed-title sibling) — closes the PRODUCER side
|
|
113
|
+
* of the rc.10/rc.12 H1 frontmatter-key-fold class: rc.10/rc.12 folded the *consumer*
|
|
114
|
+
* (query) reads, but the tag/title *producers* (parser/bases/meta/write/embed-pipeline)
|
|
115
|
+
* still read the key raw, so `Tags: [x]` was invisible to tag search / DQL / Bases.
|
|
116
|
+
*
|
|
117
|
+
* @param obj - a frontmatter object
|
|
118
|
+
* @param keys - candidate key names in precedence order (e.g. `["tags", "tag"]`)
|
|
119
|
+
* @returns the first present non-nullish folded value, or `undefined`
|
|
120
|
+
*/
|
|
121
|
+
export function lookupFoldedAny(obj, keys) {
|
|
122
|
+
for (const k of keys) {
|
|
123
|
+
const hit = lookupFoldedKey(obj, k);
|
|
124
|
+
if (hit.present && hit.value != null)
|
|
125
|
+
return hit.value;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
35
129
|
//# sourceMappingURL=name-fold.js.map
|
package/dist/name-fold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-fold.js","sourceRoot":"","sources":["../src/name-fold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"name-fold.js","sourceRoot":"","sources":["../src/name-fold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAAC,GAA4B,EAAE,GAAW;IACvE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IACvE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,GAA4B,EAAE,IAAc;IAC1E,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -68,9 +68,32 @@ export interface ParsedNote {
|
|
|
68
68
|
* ```
|
|
69
69
|
*/
|
|
70
70
|
export declare function parseNote(source: string): ParsedNote;
|
|
71
|
+
/**
|
|
72
|
+
* Linear, non-backtracking scan for `[[wikilink]]` (embed=false) / `![[embed]]`
|
|
73
|
+
* (embed=true) INNER captures, in source order. Byte-equivalent to the `m[1]`
|
|
74
|
+
* sequence of the former regexes `/(?<!!)\[\[([^\]\n]+?)\]\]/g` (wikilink) and
|
|
75
|
+
* `/!\[\[([^\]\n]+?)\]\]/g` (embed) — proven by `tests/wikilink-scan.test.ts`'s
|
|
76
|
+
* differential against inlined copies of those regexes over a broad corpus.
|
|
77
|
+
*
|
|
78
|
+
* v3.11.0-rc.17 (rc.16 re-audit, HIGH ReDoS) — REPLACES those two regexes. The
|
|
79
|
+
* lazy `[^\]\n]+?` searching for the 2-char `]]` delimiter is O(n²) on an
|
|
80
|
+
* unclosed `[[`-run: each `[[` start lazily extends to EOF hunting a `]]` that
|
|
81
|
+
* never comes (measured 195 KB → 10.7 s; reachable via the always-on
|
|
82
|
+
* `obsidian_read_note` → `parseNote` over adversarial note CONTENT = a
|
|
83
|
+
* bearer-reachable serve-http event-loop hang — the rc.39 worker sink-bound and
|
|
84
|
+
* the rc.14/rc.71 linear matchers never covered this wikilink/embed sink). This
|
|
85
|
+
* scan visits each `]` / `[[` / `\n` at most once → O(n) for ANY input. Inner
|
|
86
|
+
* excludes `]` and `\n` (a wikilink never crosses a line); the close is the first
|
|
87
|
+
* `]` after `[[`, which must be doubled (`]]`).
|
|
88
|
+
*
|
|
89
|
+
* @param text - Markdown source (already stripped of code spans, ideally).
|
|
90
|
+
* @param embed - false = `[[wikilink]]` (preceding char not `!`); true = `![[embed]]`.
|
|
91
|
+
* @returns Inner capture strings in source order.
|
|
92
|
+
*/
|
|
93
|
+
export declare function scanWikilinkInners(text: string, embed?: boolean): string[];
|
|
71
94
|
/**
|
|
72
95
|
* Extract all `[[wikilinks]]` from a markdown string. Excludes `![[embeds]]`
|
|
73
|
-
* via
|
|
96
|
+
* via the preceding-`!` check. Caller is responsible for stripping
|
|
74
97
|
* code fences / inline code first if recall over example markdown matters
|
|
75
98
|
* (use the same pipeline as {@link parseNote}).
|
|
76
99
|
*
|
|
@@ -86,6 +109,26 @@ export declare function extractWikilinks(text: string): Wikilink[];
|
|
|
86
109
|
* @returns Embeds in source order. Empty array if none found.
|
|
87
110
|
*/
|
|
88
111
|
export declare function extractEmbeds(text: string): Embed[];
|
|
112
|
+
/**
|
|
113
|
+
* Inline `#tag` extraction regex (shared — imported by `tools/meta.ts` so the
|
|
114
|
+
* two extractors cannot drift; was a byte-identical copy before v3.11.0-rc.10).
|
|
115
|
+
* Tag = a leading Unicode LETTER then letters/digits/`_`/`/`/`-`. Preceded by
|
|
116
|
+
* whitespace/bracket/BOL so `#1` in a heading is not a tag. The `u` flag is
|
|
117
|
+
* required for `\p{L}`. `matchAll` clones the regex per call, so sharing this
|
|
118
|
+
* `/g` instance across modules is lastIndex-safe.
|
|
119
|
+
*
|
|
120
|
+
* v3.11.0-rc.10 (M1, external audit) — the character class deliberately does NOT
|
|
121
|
+
* include `\p{M}` (combining marks); instead every caller NFC-normalizes the text
|
|
122
|
+
* BEFORE matching (see {@link extractInlineTags}). On macOS APFS an inline `#café`
|
|
123
|
+
* is stored DECOMPOSED (NFD: `e` + U+0301), and U+0301 is a `\p{M}` mark that the
|
|
124
|
+
* class excludes — so a raw match would TRUNCATE the capture to `cafe` and the
|
|
125
|
+
* accent would be lost BEFORE any downstream `nfc()`/`foldTag()` could recover it
|
|
126
|
+
* (the rc.9 producer-`nfc()` ran on already-corrupted input). Normalizing the text
|
|
127
|
+
* first composes the mark back into the base letter (`é` = `\p{L}`), so the capture
|
|
128
|
+
* is complete and canonical. (Normalize-before-match recovers ANY combining mark,
|
|
129
|
+
* not just the ones we could enumerate in a character class.)
|
|
130
|
+
*/
|
|
131
|
+
export declare const INLINE_TAG_RE: RegExp;
|
|
89
132
|
/**
|
|
90
133
|
* Extract `#hashtag` style inline tags from markdown body text. Tags must
|
|
91
134
|
* be preceded by whitespace, bracket, or BOL — `#1` inside a markdown
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB;wEACoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ;+DAC2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;wDACwD;AACxD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb;;;;oCAIgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB;8EAC0E;IAC1E,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CA8BpD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,MAAM,EAAE,CA6CxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAEnD;AAmCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,QAA+C,CAAC;AAE1E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAiB5E"}
|
package/dist/parser.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseFrontmatter } from "./frontmatter.js";
|
|
2
|
+
import { lookupFoldedAny, nfc } from "./name-fold.js";
|
|
2
3
|
/**
|
|
3
4
|
* Parse an Obsidian markdown source string. Splits frontmatter (via
|
|
4
5
|
* `parseFrontmatter`) from body, then extracts wikilinks, embeds, and tags
|
|
@@ -47,11 +48,81 @@ export function parseNote(source) {
|
|
|
47
48
|
tags: collectTags(frontmatter, sanitized)
|
|
48
49
|
};
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Linear, non-backtracking scan for `[[wikilink]]` (embed=false) / `![[embed]]`
|
|
53
|
+
* (embed=true) INNER captures, in source order. Byte-equivalent to the `m[1]`
|
|
54
|
+
* sequence of the former regexes `/(?<!!)\[\[([^\]\n]+?)\]\]/g` (wikilink) and
|
|
55
|
+
* `/!\[\[([^\]\n]+?)\]\]/g` (embed) — proven by `tests/wikilink-scan.test.ts`'s
|
|
56
|
+
* differential against inlined copies of those regexes over a broad corpus.
|
|
57
|
+
*
|
|
58
|
+
* v3.11.0-rc.17 (rc.16 re-audit, HIGH ReDoS) — REPLACES those two regexes. The
|
|
59
|
+
* lazy `[^\]\n]+?` searching for the 2-char `]]` delimiter is O(n²) on an
|
|
60
|
+
* unclosed `[[`-run: each `[[` start lazily extends to EOF hunting a `]]` that
|
|
61
|
+
* never comes (measured 195 KB → 10.7 s; reachable via the always-on
|
|
62
|
+
* `obsidian_read_note` → `parseNote` over adversarial note CONTENT = a
|
|
63
|
+
* bearer-reachable serve-http event-loop hang — the rc.39 worker sink-bound and
|
|
64
|
+
* the rc.14/rc.71 linear matchers never covered this wikilink/embed sink). This
|
|
65
|
+
* scan visits each `]` / `[[` / `\n` at most once → O(n) for ANY input. Inner
|
|
66
|
+
* excludes `]` and `\n` (a wikilink never crosses a line); the close is the first
|
|
67
|
+
* `]` after `[[`, which must be doubled (`]]`).
|
|
68
|
+
*
|
|
69
|
+
* @param text - Markdown source (already stripped of code spans, ideally).
|
|
70
|
+
* @param embed - false = `[[wikilink]]` (preceding char not `!`); true = `![[embed]]`.
|
|
71
|
+
* @returns Inner capture strings in source order.
|
|
72
|
+
*/
|
|
73
|
+
export function scanWikilinkInners(text, embed = false) {
|
|
74
|
+
const out = [];
|
|
75
|
+
let from = 0;
|
|
76
|
+
for (;;) {
|
|
77
|
+
const open = text.indexOf("[[", from);
|
|
78
|
+
if (open < 0)
|
|
79
|
+
break;
|
|
80
|
+
const innerStart = open + 2;
|
|
81
|
+
const bracket = text.indexOf("]", innerStart);
|
|
82
|
+
if (bracket < 0)
|
|
83
|
+
break; // no closing ']' anywhere → no further match is possible
|
|
84
|
+
// A `\n` before the first `]` means the inner would cross a newline (inner is
|
|
85
|
+
// `[^\]\n]`), so no `[[` start ≤ that `\n` can match → skip past it.
|
|
86
|
+
// v3.11.0-rc.18 (rc.17 external audit, HIGH ReDoS regression) — scan ONLY the
|
|
87
|
+
// bounded inner window [innerStart, bracket). The rc.17 form used the UNBOUNDED
|
|
88
|
+
// `text.indexOf("\n", innerStart)`: on a body with no `\n` between `[[` and EOF
|
|
89
|
+
// (a dense single-line `[[a]]`-run / MOC-index note) it rescanned to EOF every
|
|
90
|
+
// iteration → O(n²) (400k links = 8.2s; ~50s at the 5 MB cap, bearer-reachable
|
|
91
|
+
// via the always-on obsidian_read_note → parseNote). This bounded charCodeAt
|
|
92
|
+
// scan visits each inner char at most once → O(n) overall, and is
|
|
93
|
+
// byte-equivalent (it finds the same first `\n`-before-`]`, if any).
|
|
94
|
+
let nl = -1;
|
|
95
|
+
for (let k = innerStart; k < bracket; k++) {
|
|
96
|
+
if (text.charCodeAt(k) === 10 /* '\n' */) {
|
|
97
|
+
nl = k;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (nl >= 0) {
|
|
102
|
+
from = nl + 1;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (bracket === innerStart) {
|
|
106
|
+
from = open + 1; // empty inner (`[[]]`) — the inner needs ≥1 char; try next start
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (text.charCodeAt(bracket + 1) === 93 /* ']' */) {
|
|
110
|
+
const isEmbed = open > 0 && text.charCodeAt(open - 1) === 33; /* '!' */
|
|
111
|
+
if (isEmbed === embed)
|
|
112
|
+
out.push(text.slice(innerStart, bracket));
|
|
113
|
+
from = bracket + 2; // consume past `]]`
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// lone ']' (not doubled) — inner can't cross it and the close isn't `]]`;
|
|
117
|
+
// no `[[` start ≤ bracket can match → skip past this ']'.
|
|
118
|
+
from = bracket + 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
52
123
|
/**
|
|
53
124
|
* Extract all `[[wikilinks]]` from a markdown string. Excludes `![[embeds]]`
|
|
54
|
-
* via
|
|
125
|
+
* via the preceding-`!` check. Caller is responsible for stripping
|
|
55
126
|
* code fences / inline code first if recall over example markdown matters
|
|
56
127
|
* (use the same pipeline as {@link parseNote}).
|
|
57
128
|
*
|
|
@@ -59,7 +130,7 @@ const EMBED_RE = /!\[\[([^\]\n]+?)\]\]/g;
|
|
|
59
130
|
* @returns Wikilinks in source order. Empty array if none found.
|
|
60
131
|
*/
|
|
61
132
|
export function extractWikilinks(text) {
|
|
62
|
-
return matchLinks(text,
|
|
133
|
+
return matchLinks(text, false);
|
|
63
134
|
}
|
|
64
135
|
/**
|
|
65
136
|
* Extract all `![[embeds]]` from a markdown string. Same payload syntax as
|
|
@@ -69,14 +140,11 @@ export function extractWikilinks(text) {
|
|
|
69
140
|
* @returns Embeds in source order. Empty array if none found.
|
|
70
141
|
*/
|
|
71
142
|
export function extractEmbeds(text) {
|
|
72
|
-
return matchLinks(text,
|
|
143
|
+
return matchLinks(text, true);
|
|
73
144
|
}
|
|
74
|
-
function matchLinks(text,
|
|
145
|
+
function matchLinks(text, embed) {
|
|
75
146
|
const out = [];
|
|
76
|
-
for (const
|
|
77
|
-
const raw = m[1];
|
|
78
|
-
if (raw === undefined)
|
|
79
|
-
continue;
|
|
147
|
+
for (const raw of scanWikilinkInners(text, embed)) {
|
|
80
148
|
let alias;
|
|
81
149
|
let rest = raw;
|
|
82
150
|
const pipe = rest.indexOf("|");
|
|
@@ -106,7 +174,26 @@ function matchLinks(text, re) {
|
|
|
106
174
|
}
|
|
107
175
|
return out;
|
|
108
176
|
}
|
|
109
|
-
|
|
177
|
+
/**
|
|
178
|
+
* Inline `#tag` extraction regex (shared — imported by `tools/meta.ts` so the
|
|
179
|
+
* two extractors cannot drift; was a byte-identical copy before v3.11.0-rc.10).
|
|
180
|
+
* Tag = a leading Unicode LETTER then letters/digits/`_`/`/`/`-`. Preceded by
|
|
181
|
+
* whitespace/bracket/BOL so `#1` in a heading is not a tag. The `u` flag is
|
|
182
|
+
* required for `\p{L}`. `matchAll` clones the regex per call, so sharing this
|
|
183
|
+
* `/g` instance across modules is lastIndex-safe.
|
|
184
|
+
*
|
|
185
|
+
* v3.11.0-rc.10 (M1, external audit) — the character class deliberately does NOT
|
|
186
|
+
* include `\p{M}` (combining marks); instead every caller NFC-normalizes the text
|
|
187
|
+
* BEFORE matching (see {@link extractInlineTags}). On macOS APFS an inline `#café`
|
|
188
|
+
* is stored DECOMPOSED (NFD: `e` + U+0301), and U+0301 is a `\p{M}` mark that the
|
|
189
|
+
* class excludes — so a raw match would TRUNCATE the capture to `cafe` and the
|
|
190
|
+
* accent would be lost BEFORE any downstream `nfc()`/`foldTag()` could recover it
|
|
191
|
+
* (the rc.9 producer-`nfc()` ran on already-corrupted input). Normalizing the text
|
|
192
|
+
* first composes the mark back into the base letter (`é` = `\p{L}`), so the capture
|
|
193
|
+
* is complete and canonical. (Normalize-before-match recovers ANY combining mark,
|
|
194
|
+
* not just the ones we could enumerate in a character class.)
|
|
195
|
+
*/
|
|
196
|
+
export const INLINE_TAG_RE = /(?:^|[\s([{>])#([\p{L}][\p{L}\p{N}_/-]*)/gu;
|
|
110
197
|
/**
|
|
111
198
|
* Extract `#hashtag` style inline tags from markdown body text. Tags must
|
|
112
199
|
* be preceded by whitespace, bracket, or BOL — `#1` inside a markdown
|
|
@@ -117,9 +204,14 @@ const TAG_RE = /(?:^|[\s([{>])#([\p{L}][\p{L}\p{N}_/-]*)/gu;
|
|
|
117
204
|
*/
|
|
118
205
|
export function extractInlineTags(text) {
|
|
119
206
|
const found = new Set();
|
|
120
|
-
|
|
207
|
+
// v3.11.0-rc.10 (M1) — NFC-normalize the BODY before matching so an NFD inline
|
|
208
|
+
// tag (`#café` = `cafe`+U+0301 on macOS APFS) composes to `café` and the regex
|
|
209
|
+
// captures the full accented token instead of truncating at the combining mark.
|
|
210
|
+
for (const m of text.normalize("NFC").matchAll(INLINE_TAG_RE)) {
|
|
211
|
+
// nfc() is now belt-and-suspenders (the input is already NFC); kept so a future
|
|
212
|
+
// caller passing un-normalized text still stores a canonical tag.
|
|
121
213
|
if (m[1] !== undefined)
|
|
122
|
-
found.add(m[1]);
|
|
214
|
+
found.add(nfc(m[1]));
|
|
123
215
|
}
|
|
124
216
|
return [...found];
|
|
125
217
|
}
|
|
@@ -132,7 +224,11 @@ export function extractInlineTags(text) {
|
|
|
132
224
|
* @returns Normalized tag list. Empty array when no `tags` / `tag` key.
|
|
133
225
|
*/
|
|
134
226
|
export function extractFrontmatterTags(fm) {
|
|
135
|
-
|
|
227
|
+
// v3.11.0-rc.13 (rc.12-audit AUD-03) — fold the `tags`/`tag` KEY (case/NFC) so a
|
|
228
|
+
// `Tags:`/`Tag:` (or NFD-on-disk) frontmatter property is not invisible to tag
|
|
229
|
+
// retrieval (list_tags / list_notes(tag) / DQL `FROM #tag` / Bases / paper_audit).
|
|
230
|
+
// The PRODUCER sibling of the rc.10/rc.12 H1 frontmatter-key-fold class.
|
|
231
|
+
const raw = lookupFoldedAny(fm, ["tags", "tag"]);
|
|
136
232
|
if (!raw)
|
|
137
233
|
return [];
|
|
138
234
|
if (Array.isArray(raw)) {
|
|
@@ -147,7 +243,9 @@ export function extractFrontmatterTags(fm) {
|
|
|
147
243
|
return [];
|
|
148
244
|
}
|
|
149
245
|
function normalizeTag(t) {
|
|
150
|
-
|
|
246
|
+
// v3.11.0-rc.9 (L-TAG-1) — NFC-normalize the stored tag (display case kept) so
|
|
247
|
+
// frontmatter + inline forms of one accented tag canonicalize to a single key.
|
|
248
|
+
return nfc(t.replace(/^#+/, ""));
|
|
151
249
|
}
|
|
152
250
|
function collectTags(fm, body) {
|
|
153
251
|
const out = new Set();
|
package/dist/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/periodic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"periodic.d.ts","sourceRoot":"","sources":["../src/periodic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"periodic.d.ts","sourceRoot":"","sources":["../src/periodic.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAUD;;;;;;;;;;;mEAWmE;AACnE,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GACxC,OAAO,CAAC,cAAc,CAAC,CAgDzB;AASD;;;gEAGgE;AAChE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EACtB,GAAG,GAAE,IAAiB,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYhD;AAED;;gDAEgD;AAChD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAmC/D"}
|
package/dist/periodic.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
// Otherwise we fall back to the defaults that v0.11 hard-coded.
|
|
12
12
|
import { promises as fs } from "node:fs";
|
|
13
13
|
import * as path from "node:path";
|
|
14
|
+
import { stripSurroundingSlashes } from "./wildcard-match.js";
|
|
14
15
|
const DEFAULTS = {
|
|
15
16
|
daily: { format: "YYYY-MM-DD", folder: "" },
|
|
16
17
|
weekly: { format: "YYYY-[W]ww", folder: "" },
|
|
@@ -83,7 +84,7 @@ export async function loadPeriodicConfig(vaultRoot, isExcluded) {
|
|
|
83
84
|
function normaliseFolder(folder) {
|
|
84
85
|
// Strip leading/trailing slashes, normalize backslashes, then re-add a
|
|
85
86
|
// single trailing slash if non-empty so callers can concatenate cleanly.
|
|
86
|
-
const stripped = folder.replace(/\\/g, "/")
|
|
87
|
+
const stripped = stripSurroundingSlashes(folder.replace(/\\/g, "/"));
|
|
87
88
|
return stripped ? `${stripped}/` : "";
|
|
88
89
|
}
|
|
89
90
|
/** Resolve a periodic alias ("today" / "daily" / "weekly" / "monthly" /
|
package/dist/periodic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"periodic.js","sourceRoot":"","sources":["../src/periodic.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,mDAAmD;AACnD,iEAAiE;AACjE,2EAA2E;AAC3E,+EAA+E;AAC/E,EAAE;AACF,6EAA6E;AAC7E,0EAA0E;AAC1E,wEAAwE;AACxE,gEAAgE;AAEhE,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"periodic.js","sourceRoot":"","sources":["../src/periodic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAG3F,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2C9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAG3F,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA2C9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAiCxC,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAsErF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,qBAAqB,EAAE,OAAO;AAC9B;;;;GAIG;AACH,cAAc,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW;AAC/D;;;;GAIG;AACH,WAAW,GAAE,UAAU,CAAC,aAAa,CAAQ;AAC7C;;;;;GAKG;AACH,aAAa,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW;AAClE;;;;;GAKG;AACH,eAAe,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,eAAe,EAAE,aAAa,CAAA;CAAE,GAAG,IAAW,GAC9F,IAAI,CAk8BN;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,eAAe,EAAE,aAAa,GAAG,IAAI,CA6B1G;AAsBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8JxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAmE1F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAsDvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CASzF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAI/F"}
|