@hiai-gg/docsmint 0.5.7 → 0.5.8
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/backend/index.js +4 -3
- package/dist/frontend/components/editor/document-editor.js +974 -1033
- package/dist/frontend/components/editor/extensions.js +1 -1
- package/dist/frontend/components/editor/markdown-toggle.js +1 -1
- package/dist/frontend/components/editor/markdown.js +1 -1
- package/dist/frontend/{editorExtensions-BMHvUbdk.js → editorExtensions-BmINh76i.js} +1373 -1294
- package/dist/frontend/{markdown-BwnyjITU.js → markdown-A5xji16P.js} +1 -1
- package/dist/frontend/search.js +3 -3
- package/dist/frontend-ssr/assets/{editorExtensions-DUzwndMy.js → editorExtensions-BwGeSPuX.js} +101 -2
- package/dist/frontend-ssr/assets/{markdown-CjqvGi5W.js → markdown-CB8DZ-LT.js} +1 -1
- package/dist/frontend-ssr/components/editor/document-editor.js +2 -79
- package/dist/frontend-ssr/components/editor/extensions.js +1 -1
- package/dist/frontend-ssr/components/editor/markdown-toggle.js +1 -1
- package/dist/frontend-ssr/components/editor/markdown.js +1 -1
- package/dist/frontend-ssr/search.js +2 -2
- package/package.json +1 -1
- package/packages/cli/src/index.ts +1 -1
- package/packages/mcp-server/src/index.ts +1 -1
package/dist/frontend/search.js
CHANGED
|
@@ -810,9 +810,9 @@ function H(e, o) {
|
|
|
810
810
|
Item: Fe,
|
|
811
811
|
Trigger: Pe,
|
|
812
812
|
Value: Ie
|
|
813
|
-
}, je = M.prop(o, "extensionContext", 19, () => ({ pathname: "/search" })), We = ke(), N = De(), P = Te(), F = M.state(""), I = M.state(""), L = M.state(M.proxy([])), R = M.state(""), z = M.state(""), B = M.state(""), V = M.state(1), H = M.state(
|
|
813
|
+
}, je = M.prop(o, "extensionContext", 19, () => ({ pathname: "/search" })), We = ke(), N = De(), P = Te(), F = M.state(""), I = M.state(""), L = M.state(M.proxy([])), R = M.state(""), z = M.state(""), B = M.state(""), V = M.state(1), H = M.state(10), U = M.state("relevance"), W = M.state(!0), G = M.state(!0), Tt = M.state(M.proxy([])), K = M.state(M.proxy([])), Et = M.state(M.proxy([]));
|
|
814
814
|
M.user_effect(() => {
|
|
815
|
-
M.set(F, o.data.query ?? "", !0), M.set(I, o.data.filters?.folder ?? "", !0), M.set(L, o.data.filters?.tags ?? [], !0), M.set(R, o.data.filters?.category ?? "", !0), M.set(z, o.data.filters?.dateFrom ?? "", !0), M.set(B, o.data.filters?.dateTo ?? "", !0), M.set(V, o.data.page ?? 1, !0), M.set(H, o.data.limit ??
|
|
815
|
+
M.set(F, o.data.query ?? "", !0), M.set(I, o.data.filters?.folder ?? "", !0), M.set(L, o.data.filters?.tags ?? [], !0), M.set(R, o.data.filters?.category ?? "", !0), M.set(z, o.data.filters?.dateFrom ?? "", !0), M.set(B, o.data.filters?.dateTo ?? "", !0), M.set(V, o.data.page ?? 1, !0), M.set(H, o.data.limit ?? 10, !0);
|
|
816
816
|
});
|
|
817
817
|
let q = M.state(null), J = M.state(!1), Y = 0, Dt = M.state(0), X = M.state(!1), Ot = M.state(M.proxy([])), kt = M.state(M.proxy([])), At = M.state(M.proxy([])), jt = M.derived(() => Ae(We.searchWidgets, je())), Z = M.derived(() => M.get(q) ? Math.ceil(M.get(q).total / M.get(H)) : 0), Mt = M.derived(() => M.get(I) !== "" || M.get(L).length > 0 || M.get(R) !== "" || M.get(z) !== "" || M.get(B) !== "");
|
|
818
818
|
M.user_effect(() => {
|
|
@@ -855,7 +855,7 @@ function H(e, o) {
|
|
|
855
855
|
});
|
|
856
856
|
function $(e) {
|
|
857
857
|
let t = new URLSearchParams(), n = "q" in e ? e.q : M.get(F), r = "folder" in e ? e.folder : M.get(I), i = "tags" in e ? e.tags : M.get(L).join(","), a = "category" in e ? e.category : M.get(R), o = "dateFrom" in e ? e.dateFrom : M.get(z), s = "dateTo" in e ? e.dateTo : M.get(B), c = "page" in e ? e.page : String(M.get(V)), l = "limit" in e ? e.limit : String(M.get(H));
|
|
858
|
-
return n && t.set("q", n), r && t.set("folder", r), i && t.set("tags", i), a && t.set("category", a), o && t.set("dateFrom", o), s && t.set("dateTo", s), c && c !== "1" && t.set("page", c), l && l !== "
|
|
858
|
+
return n && t.set("q", n), r && t.set("folder", r), i && t.set("tags", i), a && t.set("category", a), o && t.set("dateFrom", o), s && t.set("dateTo", s), c && c !== "1" && t.set("page", c), l && l !== "10" && t.set("limit", l), `/search?${t.toString()}`;
|
|
859
859
|
}
|
|
860
860
|
function Rt(e) {
|
|
861
861
|
e.preventDefault();
|
package/dist/frontend-ssr/assets/{editorExtensions-DUzwndMy.js → editorExtensions-BwGeSPuX.js}
RENAMED
|
@@ -9,8 +9,107 @@ import TextAlign from "@tiptap/extension-text-align";
|
|
|
9
9
|
import { Markdown } from "@tiptap/markdown";
|
|
10
10
|
import StarterKit from "@tiptap/starter-kit";
|
|
11
11
|
import { common, createLowlight } from "lowlight";
|
|
12
|
+
//#region src/lib/components/editor/editor-content-sanitizer.ts
|
|
13
|
+
var ATTACHMENT_RAW_URL = /^\/api\/attachments\/[0-9a-f-]+\/raw$/i;
|
|
14
|
+
function isAttachmentImage(node) {
|
|
15
|
+
return node.type === "image" && typeof node.attrs?.src === "string" && ATTACHMENT_RAW_URL.test(node.attrs.src);
|
|
16
|
+
}
|
|
17
|
+
function isSafeEditorImageSource(value) {
|
|
18
|
+
if (typeof value !== "string") return false;
|
|
19
|
+
const src = value.trim();
|
|
20
|
+
return ATTACHMENT_RAW_URL.test(src) || /^https?:\/\//i.test(src) || /^blob:/i.test(src) || /^data:image\//i.test(src);
|
|
21
|
+
}
|
|
22
|
+
function isLoadableImage(node) {
|
|
23
|
+
if (node.type !== "image") return true;
|
|
24
|
+
return isSafeEditorImageSource(node.attrs?.src);
|
|
25
|
+
}
|
|
26
|
+
function sanitizeNode(node) {
|
|
27
|
+
if (!isLoadableImage(node)) return [];
|
|
28
|
+
if (!node.content) return [node];
|
|
29
|
+
const children = node.content.flatMap((child) => sanitizeNode(child));
|
|
30
|
+
if (node.type === "paragraph") {
|
|
31
|
+
const normalized = [];
|
|
32
|
+
let inline = [];
|
|
33
|
+
const flushInline = () => {
|
|
34
|
+
if (inline.length === 0) return;
|
|
35
|
+
normalized.push({
|
|
36
|
+
...node,
|
|
37
|
+
content: inline
|
|
38
|
+
});
|
|
39
|
+
inline = [];
|
|
40
|
+
};
|
|
41
|
+
for (const child of children) if (child.type === "image") {
|
|
42
|
+
flushInline();
|
|
43
|
+
normalized.push(child);
|
|
44
|
+
} else inline.push(child);
|
|
45
|
+
flushInline();
|
|
46
|
+
return normalized.length > 0 ? normalized : [{
|
|
47
|
+
...node,
|
|
48
|
+
content: []
|
|
49
|
+
}];
|
|
50
|
+
}
|
|
51
|
+
return [{
|
|
52
|
+
...node,
|
|
53
|
+
content: children
|
|
54
|
+
}];
|
|
55
|
+
}
|
|
56
|
+
function sanitizeEditorContent(value) {
|
|
57
|
+
return sanitizeNode(value)[0] ?? {
|
|
58
|
+
type: "doc",
|
|
59
|
+
content: [{ type: "paragraph" }]
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async function removeUnavailableAttachmentImages(value, fetchImpl = fetch) {
|
|
63
|
+
const root = sanitizeEditorContent(value);
|
|
64
|
+
const urls = /* @__PURE__ */ new Set();
|
|
65
|
+
const collect = (node) => {
|
|
66
|
+
if (isAttachmentImage(node)) urls.add(node.attrs?.src);
|
|
67
|
+
for (const child of node.content ?? []) collect(child);
|
|
68
|
+
};
|
|
69
|
+
collect(root);
|
|
70
|
+
const unavailable = /* @__PURE__ */ new Set();
|
|
71
|
+
await Promise.all(Array.from(urls, async (url) => {
|
|
72
|
+
try {
|
|
73
|
+
if (!(await fetchImpl(url, { credentials: "include" })).ok) unavailable.add(url);
|
|
74
|
+
} catch {
|
|
75
|
+
unavailable.add(url);
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
let removed = 0;
|
|
79
|
+
const remove = (node) => {
|
|
80
|
+
if (isAttachmentImage(node) && unavailable.has(node.attrs?.src)) {
|
|
81
|
+
removed += 1;
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
if (!node.content) return node;
|
|
85
|
+
return {
|
|
86
|
+
...node,
|
|
87
|
+
content: node.content.map(remove).filter((child) => child !== null)
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
content: remove(root) ?? {
|
|
92
|
+
type: "doc",
|
|
93
|
+
content: []
|
|
94
|
+
},
|
|
95
|
+
removed
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//#endregion
|
|
12
99
|
//#region src/lib/components/editor/editorExtensions.ts
|
|
13
100
|
var lowlight = createLowlight(common);
|
|
101
|
+
var SafeImage = Image.extend({ addAttributes() {
|
|
102
|
+
return {
|
|
103
|
+
src: {
|
|
104
|
+
default: null,
|
|
105
|
+
renderHTML: (attributes) => ({ src: isSafeEditorImageSource(attributes.src) ? attributes.src : null })
|
|
106
|
+
},
|
|
107
|
+
alt: { default: null },
|
|
108
|
+
title: { default: null },
|
|
109
|
+
width: { default: null },
|
|
110
|
+
height: { default: null }
|
|
111
|
+
};
|
|
112
|
+
} });
|
|
14
113
|
var EMPTY_PARAGRAPH_MARKDOWN = " ";
|
|
15
114
|
var NBSP_CHAR = "\xA0";
|
|
16
115
|
var TEXT_ALIGNMENTS = [
|
|
@@ -158,7 +257,7 @@ var editorExtensions = [
|
|
|
158
257
|
openOnClick: false,
|
|
159
258
|
HTMLAttributes: { class: "doc-link" }
|
|
160
259
|
}),
|
|
161
|
-
|
|
260
|
+
SafeImage.configure({
|
|
162
261
|
inline: false,
|
|
163
262
|
allowBase64: false,
|
|
164
263
|
HTMLAttributes: { class: "doc-image" },
|
|
@@ -183,4 +282,4 @@ var editorExtensions = [
|
|
|
183
282
|
TaskItem.configure({ nested: true })
|
|
184
283
|
];
|
|
185
284
|
//#endregion
|
|
186
|
-
export { TextAlignParagraph as n, editorExtensions as r, TextAlignHeading as t };
|
|
285
|
+
export { sanitizeEditorContent as a, removeUnavailableAttachmentImages as i, TextAlignParagraph as n, editorExtensions as r, TextAlignHeading as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as editorExtensions } from "./editorExtensions-
|
|
1
|
+
import { r as editorExtensions } from "./editorExtensions-BwGeSPuX.js";
|
|
2
2
|
import { MarkdownManager } from "@tiptap/markdown";
|
|
3
3
|
//#region src/lib/components/editor/markdown.ts
|
|
4
4
|
var managerSingleton = null;
|
|
@@ -10,8 +10,8 @@ import { a as resolveOfflineIdentity } from "../../assets/identity-B3uHoDtf.js";
|
|
|
10
10
|
import { n as getOfflineDB } from "../../assets/db-CnxeO66n.js";
|
|
11
11
|
import { h as unregisterShortcut, u as registerShortcut } from "../../assets/keyboard.svelte-BgF47N3L.js";
|
|
12
12
|
import { t as CreateSnapshotDialog } from "../../assets/CreateSnapshotDialog-CI8vXXcN.js";
|
|
13
|
-
import { r as editorExtensions } from "../../assets/editorExtensions-
|
|
14
|
-
import { t as markdownToJson } from "../../assets/markdown-
|
|
13
|
+
import { a as sanitizeEditorContent, i as removeUnavailableAttachmentImages, r as editorExtensions } from "../../assets/editorExtensions-BwGeSPuX.js";
|
|
14
|
+
import { t as markdownToJson } from "../../assets/markdown-CB8DZ-LT.js";
|
|
15
15
|
import * as $ from "svelte/internal/server";
|
|
16
16
|
import { onDestroy, onMount, tick } from "svelte";
|
|
17
17
|
import "svelte/reactivity";
|
|
@@ -2145,83 +2145,6 @@ function EditorToolbar($$renderer, $$props) {
|
|
|
2145
2145
|
});
|
|
2146
2146
|
}
|
|
2147
2147
|
//#endregion
|
|
2148
|
-
//#region src/lib/components/editor/editor-content-sanitizer.ts
|
|
2149
|
-
var ATTACHMENT_RAW_URL = /^\/api\/attachments\/[0-9a-f-]+\/raw$/i;
|
|
2150
|
-
function isAttachmentImage(node) {
|
|
2151
|
-
return node.type === "image" && typeof node.attrs?.src === "string" && ATTACHMENT_RAW_URL.test(node.attrs.src);
|
|
2152
|
-
}
|
|
2153
|
-
function sanitizeNode(node) {
|
|
2154
|
-
if (!node.content) return [node];
|
|
2155
|
-
const children = node.content.flatMap((child) => sanitizeNode(child));
|
|
2156
|
-
if (node.type === "paragraph") {
|
|
2157
|
-
const normalized = [];
|
|
2158
|
-
let inline = [];
|
|
2159
|
-
const flushInline = () => {
|
|
2160
|
-
if (inline.length === 0) return;
|
|
2161
|
-
normalized.push({
|
|
2162
|
-
...node,
|
|
2163
|
-
content: inline
|
|
2164
|
-
});
|
|
2165
|
-
inline = [];
|
|
2166
|
-
};
|
|
2167
|
-
for (const child of children) if (child.type === "image") {
|
|
2168
|
-
flushInline();
|
|
2169
|
-
normalized.push(child);
|
|
2170
|
-
} else inline.push(child);
|
|
2171
|
-
flushInline();
|
|
2172
|
-
return normalized.length > 0 ? normalized : [{
|
|
2173
|
-
...node,
|
|
2174
|
-
content: []
|
|
2175
|
-
}];
|
|
2176
|
-
}
|
|
2177
|
-
return [{
|
|
2178
|
-
...node,
|
|
2179
|
-
content: children
|
|
2180
|
-
}];
|
|
2181
|
-
}
|
|
2182
|
-
function sanitizeEditorContent(value) {
|
|
2183
|
-
return sanitizeNode(value)[0] ?? {
|
|
2184
|
-
type: "doc",
|
|
2185
|
-
content: [{ type: "paragraph" }]
|
|
2186
|
-
};
|
|
2187
|
-
}
|
|
2188
|
-
async function removeUnavailableAttachmentImages(value, fetchImpl = fetch) {
|
|
2189
|
-
const root = sanitizeEditorContent(value);
|
|
2190
|
-
const urls = /* @__PURE__ */ new Set();
|
|
2191
|
-
const collect = (node) => {
|
|
2192
|
-
if (isAttachmentImage(node)) urls.add(node.attrs?.src);
|
|
2193
|
-
for (const child of node.content ?? []) collect(child);
|
|
2194
|
-
};
|
|
2195
|
-
collect(root);
|
|
2196
|
-
const unavailable = /* @__PURE__ */ new Set();
|
|
2197
|
-
await Promise.all(Array.from(urls, async (url) => {
|
|
2198
|
-
try {
|
|
2199
|
-
if (!(await fetchImpl(url, { credentials: "include" })).ok) unavailable.add(url);
|
|
2200
|
-
} catch {
|
|
2201
|
-
unavailable.add(url);
|
|
2202
|
-
}
|
|
2203
|
-
}));
|
|
2204
|
-
let removed = 0;
|
|
2205
|
-
const remove = (node) => {
|
|
2206
|
-
if (isAttachmentImage(node) && unavailable.has(node.attrs?.src)) {
|
|
2207
|
-
removed += 1;
|
|
2208
|
-
return null;
|
|
2209
|
-
}
|
|
2210
|
-
if (!node.content) return node;
|
|
2211
|
-
return {
|
|
2212
|
-
...node,
|
|
2213
|
-
content: node.content.map(remove).filter((child) => child !== null)
|
|
2214
|
-
};
|
|
2215
|
-
};
|
|
2216
|
-
return {
|
|
2217
|
-
content: remove(root) ?? {
|
|
2218
|
-
type: "doc",
|
|
2219
|
-
content: []
|
|
2220
|
-
},
|
|
2221
|
-
removed
|
|
2222
|
-
};
|
|
2223
|
-
}
|
|
2224
|
-
//#endregion
|
|
2225
2148
|
//#region src/lib/components/editor/large-markdown.ts
|
|
2226
2149
|
var LARGE_MARKDOWN_THRESHOLD = 25e4;
|
|
2227
2150
|
function shouldDeferMarkdownParsing(markdown) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as TextAlignParagraph, r as editorExtensions, t as TextAlignHeading } from "../../assets/editorExtensions-
|
|
1
|
+
import { n as TextAlignParagraph, r as editorExtensions, t as TextAlignHeading } from "../../assets/editorExtensions-BwGeSPuX.js";
|
|
2
2
|
export { TextAlignHeading, TextAlignParagraph, editorExtensions };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Bt as editor_markdown_placeholder, zt as editor_markdown_label } from "../../assets/messages-BAQzILs4.js";
|
|
2
2
|
import { t as Copy } from "../../assets/copy-DkkCPkBL.js";
|
|
3
|
-
import "../../assets/markdown-
|
|
3
|
+
import "../../assets/markdown-CB8DZ-LT.js";
|
|
4
4
|
import * as $ from "svelte/internal/server";
|
|
5
5
|
//#region src/lib/components/editor/MarkdownToggle.svelte
|
|
6
6
|
function MarkdownToggle($$renderer, $$props) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as markdownToJson } from "../../assets/markdown-
|
|
1
|
+
import { t as markdownToJson } from "../../assets/markdown-CB8DZ-LT.js";
|
|
2
2
|
export { markdownToJson };
|
|
@@ -127,7 +127,7 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
127
127
|
let dateFrom = "";
|
|
128
128
|
let dateTo = "";
|
|
129
129
|
let currentPage = 1;
|
|
130
|
-
let pageSize =
|
|
130
|
+
let pageSize = 10;
|
|
131
131
|
let allDocuments = [];
|
|
132
132
|
let allFolders = [];
|
|
133
133
|
let allCategories = [];
|
|
@@ -169,7 +169,7 @@ function HiaiDocsSearchHost($$renderer, $$props) {
|
|
|
169
169
|
if (df) params.set("dateFrom", df);
|
|
170
170
|
if (dt) params.set("dateTo", dt);
|
|
171
171
|
if (p && p !== "1") params.set("page", p);
|
|
172
|
-
if (l && l !== "
|
|
172
|
+
if (l && l !== "10") params.set("limit", l);
|
|
173
173
|
return `/search?${params.toString()}`;
|
|
174
174
|
}
|
|
175
175
|
function applyDateRange() {
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@ import { registerSearch } from "./commands/search.js";
|
|
|
24
24
|
import { registerSnapshot } from "./commands/snapshot.js";
|
|
25
25
|
import { registerUpdate } from "./commands/update.js";
|
|
26
26
|
|
|
27
|
-
const VERSION = "0.5.
|
|
27
|
+
const VERSION = "0.5.8";
|
|
28
28
|
|
|
29
29
|
const program = new Command();
|
|
30
30
|
program
|