@musnows/scriverse 0.7.2 → 0.7.4

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.
Files changed (82) hide show
  1. package/README.en.md +3 -0
  2. package/README.md +8 -0
  3. package/dist/ai-connectivity-test.js +109 -0
  4. package/dist/ai-connectivity-test.js.map +1 -0
  5. package/dist/ai-conversation-export.js +70 -0
  6. package/dist/ai-conversation-export.js.map +1 -0
  7. package/dist/ai-stream-timeout.js +18 -0
  8. package/dist/ai-stream-timeout.js.map +1 -0
  9. package/dist/ai.js +926 -354
  10. package/dist/ai.js.map +1 -1
  11. package/dist/app.js +498 -80
  12. package/dist/app.js.map +1 -1
  13. package/dist/attachment-storage.js +28 -12
  14. package/dist/attachment-storage.js.map +1 -1
  15. package/dist/backup-encryption.js +129 -0
  16. package/dist/backup-encryption.js.map +1 -0
  17. package/dist/character-extraction.js +133 -0
  18. package/dist/character-extraction.js.map +1 -0
  19. package/dist/cli-core.js +7 -6
  20. package/dist/cli-core.js.map +1 -1
  21. package/dist/collaboration-presence.js +200 -18
  22. package/dist/collaboration-presence.js.map +1 -1
  23. package/dist/database.js +335 -3
  24. package/dist/database.js.map +1 -1
  25. package/dist/docx-export.js +1 -1
  26. package/dist/docx-export.js.map +1 -1
  27. package/dist/domain.js +18 -0
  28. package/dist/domain.js.map +1 -1
  29. package/dist/epub-export.js +319 -0
  30. package/dist/epub-export.js.map +1 -0
  31. package/dist/hybrid-search.js +8 -0
  32. package/dist/hybrid-search.js.map +1 -1
  33. package/dist/image-metadata.js +17 -2
  34. package/dist/image-metadata.js.map +1 -1
  35. package/dist/presence-store.js +160 -0
  36. package/dist/presence-store.js.map +1 -0
  37. package/dist/public/ai-connectivity-test.d.ts +7 -0
  38. package/dist/public/ai-connectivity-test.js +82 -0
  39. package/dist/public/ai-context-meter.js +27 -0
  40. package/dist/public/ai-mentions.js +14 -0
  41. package/dist/public/ai-request-manager.js +99 -0
  42. package/dist/public/ai-stream-protocol.js +51 -0
  43. package/dist/public/app.js +3587 -559
  44. package/dist/public/background-task-center.js +1 -1
  45. package/dist/public/chapter-editor-virtualization.js +52 -0
  46. package/dist/public/chapter-version-diff.d.ts +20 -0
  47. package/dist/public/chapter-version-diff.js +116 -0
  48. package/dist/public/foreshadow-reminder.d.ts +32 -0
  49. package/dist/public/foreshadow-reminder.js +73 -0
  50. package/dist/public/global-replace-refresh.js +60 -0
  51. package/dist/public/index.html +161 -31
  52. package/dist/public/outline-board.d.ts +61 -0
  53. package/dist/public/outline-board.js +137 -0
  54. package/dist/public/page-route.d.ts +1 -0
  55. package/dist/public/page-route.js +8 -0
  56. package/dist/public/presence-client-id.d.ts +10 -0
  57. package/dist/public/presence-client-id.js +31 -0
  58. package/dist/public/reading-preview.d.ts +32 -0
  59. package/dist/public/reading-preview.js +136 -0
  60. package/dist/public/s3-backup-ui.d.ts +10 -0
  61. package/dist/public/s3-backup-ui.js +29 -0
  62. package/dist/public/setting-filters.d.ts +16 -0
  63. package/dist/public/setting-filters.js +19 -0
  64. package/dist/public/styles.css +522 -11
  65. package/dist/public/upload-progress.d.ts +2 -0
  66. package/dist/public/upload-progress.js +10 -0
  67. package/dist/s3-backup.js +197 -12
  68. package/dist/s3-backup.js.map +1 -1
  69. package/dist/security.js +86 -21
  70. package/dist/security.js.map +1 -1
  71. package/dist/server-runtime.js +38 -18
  72. package/dist/server-runtime.js.map +1 -1
  73. package/dist/store.js +899 -104
  74. package/dist/store.js.map +1 -1
  75. package/dist/upload-limits.js +35 -0
  76. package/dist/upload-limits.js.map +1 -0
  77. package/dist/user-auth.js +56 -10
  78. package/dist/user-auth.js.map +1 -1
  79. package/dist/utils.js +3 -0
  80. package/dist/utils.js.map +1 -1
  81. package/dist/version.js +1 -1
  82. package/package.json +4 -2
@@ -0,0 +1,319 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import JSZip from "jszip";
3
+ import sharp from "sharp";
4
+ export const EPUB_MIME_TYPE = "application/epub+zip";
5
+ const bidiControlCharacters = /[\u202a-\u202e\u2066-\u2069]/gu;
6
+ const unsafeFileNameCharacters = /[\u0000-\u001f\u007f-\u009f<>:"/\\|?*]/gu;
7
+ function xml(value) {
8
+ return value
9
+ .replaceAll("&", "&amp;")
10
+ .replaceAll("<", "&lt;")
11
+ .replaceAll(">", "&gt;")
12
+ .replaceAll('"', "&quot;")
13
+ .replaceAll("'", "&apos;");
14
+ }
15
+ function normalizeLanguage(value) {
16
+ const language = String(value ?? "").trim();
17
+ return /^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/u.test(language) ? language : "zh-CN";
18
+ }
19
+ function normalizeModifiedAt(value) {
20
+ const parsed = value ? new Date(value) : new Date();
21
+ const date = Number.isNaN(parsed.getTime()) ? new Date() : parsed;
22
+ return { date, value: date.toISOString().replace(/\.\d{3}Z$/u, "Z") };
23
+ }
24
+ function xhtmlPage(input) {
25
+ const bodyType = input.bodyType ? ` epub:type="${xml(input.bodyType)}"` : "";
26
+ const stylePath = input.stylePath ?? "../styles/book.css";
27
+ return `<?xml version="1.0" encoding="UTF-8"?>
28
+ <!DOCTYPE html>
29
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="${xml(input.language)}" xml:lang="${xml(input.language)}">
30
+ <head>
31
+ <meta charset="UTF-8" />
32
+ <title>${xml(input.title)}</title>
33
+ <link rel="stylesheet" type="text/css" href="${xml(stylePath)}" />
34
+ </head>
35
+ <body${bodyType}>
36
+ ${input.body}
37
+ </body>
38
+ </html>
39
+ `;
40
+ }
41
+ function renderChapterBody(content) {
42
+ const lines = String(content ?? "").replace(/\r\n?/gu, "\n").split("\n");
43
+ const blocks = [];
44
+ let paragraph = [];
45
+ let code = null;
46
+ const flushParagraph = () => {
47
+ if (!paragraph.length)
48
+ return;
49
+ blocks.push(` <p>${paragraph.map(xml).join("<br />\n")}</p>`);
50
+ paragraph = [];
51
+ };
52
+ const flushCode = () => {
53
+ if (code === null)
54
+ return;
55
+ blocks.push(` <pre class="code-block"><code>${xml(code.join("\n"))}</code></pre>`);
56
+ code = null;
57
+ };
58
+ for (const line of lines) {
59
+ if (/^\s*`{3,}[^`]*$/u.test(line)) {
60
+ if (code === null) {
61
+ flushParagraph();
62
+ code = [];
63
+ }
64
+ else {
65
+ flushCode();
66
+ }
67
+ continue;
68
+ }
69
+ if (code !== null) {
70
+ code.push(line);
71
+ continue;
72
+ }
73
+ if (!line.trim()) {
74
+ flushParagraph();
75
+ continue;
76
+ }
77
+ paragraph.push(line);
78
+ }
79
+ flushParagraph();
80
+ flushCode();
81
+ return blocks.join("\n");
82
+ }
83
+ async function prepareCover(cover) {
84
+ if (cover.mimeType === "image/jpeg") {
85
+ return { content: cover.content, extension: "jpg", mediaType: "image/jpeg" };
86
+ }
87
+ if (cover.mimeType === "image/png") {
88
+ return { content: cover.content, extension: "png", mediaType: "image/png" };
89
+ }
90
+ return {
91
+ content: await sharp(cover.content, { limitInputPixels: 16_777_216 }).png().toBuffer(),
92
+ extension: "png",
93
+ mediaType: "image/png"
94
+ };
95
+ }
96
+ function packageDocument(input) {
97
+ const creator = input.author ? `\n <dc:creator>${xml(input.author)}</dc:creator>` : "";
98
+ const description = input.description ? `\n <dc:description>${xml(input.description)}</dc:description>` : "";
99
+ const coverMetadata = input.cover ? '\n <meta name="cover" content="cover-image" />' : "";
100
+ const coverManifest = input.cover
101
+ ? `\n <item id="cover-image" href="images/cover.${input.cover.extension}" media-type="${input.cover.mediaType}" properties="cover-image" />\n <item id="cover-page" href="text/cover.xhtml" media-type="application/xhtml+xml" />`
102
+ : "";
103
+ const documentManifest = input.documents
104
+ .map((document) => ` <item id="${document.id}" href="${document.href}" media-type="application/xhtml+xml" />`)
105
+ .join("\n");
106
+ const coverSpine = input.cover ? '\n <itemref idref="cover-page" linear="no" />' : "";
107
+ const documentSpine = input.documents.map((document) => ` <itemref idref="${document.id}" />`).join("\n");
108
+ const guide = input.cover ? '\n <guide>\n <reference type="cover" title="封面" href="text/cover.xhtml" />\n </guide>' : "";
109
+ return `<?xml version="1.0" encoding="UTF-8"?>
110
+ <package xmlns="http://www.idpf.org/2007/opf" xmlns:dc="http://purl.org/dc/elements/1.1/" version="3.0" unique-identifier="pub-id" xml:lang="${xml(input.language)}" prefix="dcterms: http://purl.org/dc/terms/">
111
+ <metadata>
112
+ <dc:identifier id="pub-id">${xml(input.identifier)}</dc:identifier>
113
+ <dc:title>${xml(input.title)}</dc:title>
114
+ <dc:language>${xml(input.language)}</dc:language>${creator}${description}
115
+ <meta property="dcterms:modified">${xml(input.modifiedAt)}</meta>${coverMetadata}
116
+ </metadata>
117
+ <manifest>
118
+ <item id="nav" href="nav.xhtml" media-type="application/xhtml+xml" properties="nav" />
119
+ <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" />
120
+ <item id="style" href="styles/book.css" media-type="text/css" />${coverManifest}
121
+ ${documentManifest}
122
+ </manifest>
123
+ <spine toc="ncx">${coverSpine}
124
+ ${documentSpine}
125
+ </spine>${guide}
126
+ </package>
127
+ `;
128
+ }
129
+ function navigationDocument(input) {
130
+ const volumeContents = input.volumes.map(({ document, chapters }) => {
131
+ const children = chapters.length
132
+ ? `\n <ol>\n${chapters.map((chapter) => ` <li><a href="${chapter.href}">${xml(chapter.title)}</a></li>`).join("\n")}\n </ol>`
133
+ : "";
134
+ return ` <li><a href="${document.href}">${xml(document.title)}</a>${children}</li>`;
135
+ }).join("\n");
136
+ const contents = volumeContents || ' <li><a href="text/title.xhtml">书名页</a></li>';
137
+ const coverLandmark = input.hasCover ? '\n <li><a epub:type="cover" href="text/cover.xhtml">封面</a></li>' : "";
138
+ const body = ` <nav epub:type="toc" id="toc" aria-labelledby="toc-title">
139
+ <h1 id="toc-title">目录</h1>
140
+ <ol>
141
+ ${contents}
142
+ </ol>
143
+ </nav>
144
+ <nav epub:type="landmarks" aria-label="阅读导航">
145
+ <ol>${coverLandmark}
146
+ <li><a epub:type="titlepage" href="text/title.xhtml">书名页</a></li>
147
+ <li><a epub:type="bodymatter" href="${input.volumes[0]?.document.href ?? "text/title.xhtml"}">正文</a></li>
148
+ </ol>
149
+ </nav>`;
150
+ return xhtmlPage({ language: input.language, title: `${input.title}目录`, body, stylePath: "styles/book.css" });
151
+ }
152
+ function ncxDocument(input) {
153
+ let playOrder = 0;
154
+ const volumeNavigation = input.volumes.map(({ document, chapters }) => {
155
+ playOrder += 1;
156
+ const volumeOrder = playOrder;
157
+ const children = chapters.map((chapter) => {
158
+ playOrder += 1;
159
+ return ` <navPoint id="${chapter.id}" playOrder="${playOrder}">
160
+ <navLabel><text>${xml(chapter.title)}</text></navLabel>
161
+ <content src="${chapter.href}" />
162
+ </navPoint>`;
163
+ }).join("\n");
164
+ return ` <navPoint id="${document.id}" playOrder="${volumeOrder}">
165
+ <navLabel><text>${xml(document.title)}</text></navLabel>
166
+ <content src="${document.href}" />${children ? `\n${children}` : ""}
167
+ </navPoint>`;
168
+ }).join("\n");
169
+ const navigation = volumeNavigation || ` <navPoint id="title-page" playOrder="1">
170
+ <navLabel><text>${xml(input.title)}</text></navLabel>
171
+ <content src="text/title.xhtml" />
172
+ </navPoint>`;
173
+ return `<?xml version="1.0" encoding="UTF-8"?>
174
+ <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">
175
+ <head>
176
+ <meta name="dtb:uid" content="${xml(input.identifier)}" />
177
+ <meta name="dtb:depth" content="2" />
178
+ <meta name="dtb:totalPageCount" content="0" />
179
+ <meta name="dtb:maxPageNumber" content="0" />
180
+ </head>
181
+ <docTitle><text>${xml(input.title)}</text></docTitle>
182
+ <navMap>
183
+ ${navigation}
184
+ </navMap>
185
+ </ncx>
186
+ `;
187
+ }
188
+ const bookStyles = `@charset "UTF-8";
189
+ @namespace epub "http://www.idpf.org/2007/ops";
190
+ html { writing-mode: horizontal-tb; }
191
+ body { margin: 5%; color: #1f1f1f; font-family: serif; line-height: 1.8; }
192
+ h1 { margin: 1.5em 0 1em; font-size: 1.65em; line-height: 1.35; }
193
+ p { margin: 0 0 1em; text-align: justify; }
194
+ .title-page, .cover-page { min-height: 80vh; text-align: center; }
195
+ .title-page { display: flex; flex-direction: column; justify-content: center; }
196
+ .title-page p { text-align: center; }
197
+ .book-description { margin: 2em auto 0; max-width: 32em; color: #555; }
198
+ .cover-page img { display: block; max-width: 100%; max-height: 90vh; margin: 0 auto; object-fit: contain; }
199
+ .volume-label { color: #666; font-size: .85em; }
200
+ .code-block { margin: 1em 0; padding: .8em; overflow-wrap: anywhere; white-space: pre-wrap; font-family: monospace; font-size: .9em; line-height: 1.55; }
201
+ nav ol { padding-left: 1.5em; }
202
+ nav li { margin: .45em 0; }
203
+ nav[epub|type~="landmarks"] { margin-top: 2em; }
204
+ `;
205
+ export function epubDownloadFileName(title) {
206
+ const normalized = String(title ?? "")
207
+ .normalize("NFKC")
208
+ .replace(bidiControlCharacters, "")
209
+ .replace(unsafeFileNameCharacters, " ")
210
+ .replace(/\.{2,}/gu, " ")
211
+ .replace(/\s+/gu, " ")
212
+ .trim()
213
+ .replace(/[. ]+$/gu, "");
214
+ const stem = Array.from(normalized).slice(0, 120).join("") || "novel";
215
+ return `${stem}.epub`;
216
+ }
217
+ function asciiFallbackFileName(value) {
218
+ const stem = String(value ?? "")
219
+ .replace(/[^A-Za-z0-9._-]+/gu, "-")
220
+ .replace(/\.{2,}/gu, "-")
221
+ .replace(/-+/gu, "-")
222
+ .replace(/^[.-]+|[.-]+$/gu, "")
223
+ .slice(0, 80) || "novel";
224
+ return `${stem}.epub`;
225
+ }
226
+ function encodeRfc5987(value) {
227
+ return encodeURIComponent(value).replace(/['()*]/gu, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
228
+ }
229
+ export function epubContentDisposition(title, fallbackStem) {
230
+ return `attachment; filename="${asciiFallbackFileName(fallbackStem)}"; filename*=UTF-8''${encodeRfc5987(epubDownloadFileName(title))}`;
231
+ }
232
+ export async function createEpubArchive(input) {
233
+ const title = String(input.title || "未命名作品");
234
+ const author = String(input.author ?? "").trim();
235
+ const description = String(input.description ?? "").trim();
236
+ const language = normalizeLanguage(input.language);
237
+ const identifier = String(input.identifier ?? `urn:uuid:${randomUUID()}`);
238
+ const modified = normalizeModifiedAt(input.modifiedAt);
239
+ const cover = input.cover ? await prepareCover(input.cover) : null;
240
+ const archive = new JSZip();
241
+ const fileOptions = { date: modified.date };
242
+ archive.file("mimetype", EPUB_MIME_TYPE, { ...fileOptions, compression: "STORE" });
243
+ archive.file("META-INF/container.xml", `<?xml version="1.0" encoding="UTF-8"?>
244
+ <container xmlns="urn:oasis:names:tc:opendocument:xmlns:container" version="1.0">
245
+ <rootfiles>
246
+ <rootfile full-path="OEBPS/package.opf" media-type="application/oebps-package+xml" />
247
+ </rootfiles>
248
+ </container>
249
+ `, fileOptions);
250
+ archive.file("OEBPS/styles/book.css", bookStyles, fileOptions);
251
+ if (cover) {
252
+ archive.file(`OEBPS/images/cover.${cover.extension}`, cover.content, fileOptions);
253
+ archive.file("OEBPS/text/cover.xhtml", xhtmlPage({
254
+ language,
255
+ title: `${title}封面`,
256
+ body: ` <div class="cover-page"><img src="../images/cover.${cover.extension}" alt="${xml(title)}封面" /></div>`,
257
+ bodyType: "cover"
258
+ }), fileOptions);
259
+ }
260
+ const titleBody = ` <section class="title-page" epub:type="titlepage">
261
+ <h1>${xml(title)}</h1>${author ? `\n <p class="book-author">${xml(author)}</p>` : ""}${description ? `\n <p class="book-description">${xml(description)}</p>` : ""}
262
+ </section>`;
263
+ const titleDocument = {
264
+ id: "title-page",
265
+ href: "text/title.xhtml",
266
+ title,
267
+ content: xhtmlPage({ language, title, body: titleBody, bodyType: "frontmatter" })
268
+ };
269
+ archive.file(`OEBPS/${titleDocument.href}`, titleDocument.content, fileOptions);
270
+ const volumeDocuments = input.volumes.map((volume, volumeIndex) => {
271
+ const volumeNumber = String(volumeIndex + 1).padStart(3, "0");
272
+ const volumeTitle = String(volume.title ?? "");
273
+ const volumeDocument = {
274
+ id: `volume-${volumeNumber}`,
275
+ href: `text/volume-${volumeNumber}.xhtml`,
276
+ title: volumeTitle,
277
+ content: xhtmlPage({
278
+ language,
279
+ title: volumeTitle,
280
+ body: ` <section class="volume-page" epub:type="part"><h1>${xml(volumeTitle)}</h1></section>`,
281
+ bodyType: "bodymatter"
282
+ })
283
+ };
284
+ archive.file(`OEBPS/${volumeDocument.href}`, volumeDocument.content, fileOptions);
285
+ const chapters = volume.chapters.map((chapter, chapterIndex) => {
286
+ const chapterNumber = String(chapterIndex + 1).padStart(3, "0");
287
+ const chapterTitle = String(chapter.title ?? "");
288
+ const chapterDocument = {
289
+ id: `chapter-${volumeNumber}-${chapterNumber}`,
290
+ href: `text/chapter-${volumeNumber}-${chapterNumber}.xhtml`,
291
+ title: chapterTitle,
292
+ content: xhtmlPage({
293
+ language,
294
+ title: chapterTitle,
295
+ body: ` <article epub:type="chapter">\n <p class="volume-label">${xml(volumeTitle)}</p>\n <h1>${xml(chapterTitle)}</h1>\n${renderChapterBody(chapter.content)}\n </article>`,
296
+ bodyType: "bodymatter"
297
+ })
298
+ };
299
+ archive.file(`OEBPS/${chapterDocument.href}`, chapterDocument.content, fileOptions);
300
+ return chapterDocument;
301
+ });
302
+ return { document: volumeDocument, chapters };
303
+ });
304
+ const documents = [titleDocument, ...volumeDocuments.flatMap((volume) => [volume.document, ...volume.chapters])];
305
+ archive.file("OEBPS/nav.xhtml", navigationDocument({ title, language, volumes: volumeDocuments, hasCover: Boolean(cover) }), fileOptions);
306
+ archive.file("OEBPS/toc.ncx", ncxDocument({ title, identifier, volumes: volumeDocuments }), fileOptions);
307
+ archive.file("OEBPS/package.opf", packageDocument({
308
+ title,
309
+ author,
310
+ description,
311
+ language,
312
+ identifier,
313
+ modifiedAt: modified.value,
314
+ documents,
315
+ cover
316
+ }), fileOptions);
317
+ return archive;
318
+ }
319
+ //# sourceMappingURL=epub-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epub-export.js","sourceRoot":"","sources":["../src/epub-export.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,14 @@ export const HYBRID_SEARCH_TYPES = [
12
12
  "review",
13
13
  "agent-history"
14
14
  ];
15
+ export const MAXIMUM_WORK_SEARCH_QUERY_LENGTH = 100;
16
+ export function normalizeWorkSearchQuery(value) {
17
+ return value
18
+ .normalize("NFKC")
19
+ .toLocaleLowerCase("zh-CN")
20
+ .trim()
21
+ .slice(0, MAXIMUM_WORK_SEARCH_QUERY_LENGTH);
22
+ }
15
23
  const matchKindOrder = ["metadata", "exact", "phonetic"];
16
24
  const reciprocalRankConstant = 60;
17
25
  export function fuseHybridSearchChannels(channels, limit = 50) {
@@ -1 +1 @@
1
- {"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../src/hybrid-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hybrid-search.js","sourceRoot":"","sources":["../src/hybrid-search.ts"],"names":[],"mappings":"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"}
@@ -119,10 +119,25 @@ function readWebp(bytes) {
119
119
  assertDimensions(width, height);
120
120
  return { mimeType: "image/webp", width, height };
121
121
  }
122
+ function readGif(bytes) {
123
+ if (bytes.length < 6)
124
+ return null;
125
+ const signature = bytes.subarray(0, 6).toString("ascii");
126
+ if (signature !== "GIF87a" && signature !== "GIF89a")
127
+ return null;
128
+ if (bytes.length < 14)
129
+ throw new InvalidRasterImageError("GIF 文件结构不完整");
130
+ if (bytes[bytes.length - 1] !== 0x3b)
131
+ throw new InvalidRasterImageError("GIF 文件缺少结束标记");
132
+ const width = bytes.readUInt16LE(6);
133
+ const height = bytes.readUInt16LE(8);
134
+ assertDimensions(width, height);
135
+ return { mimeType: "image/gif", width, height };
136
+ }
122
137
  export function readRasterImageMetadata(bytes) {
123
- const metadata = readPng(bytes) ?? readJpeg(bytes) ?? readWebp(bytes);
138
+ const metadata = readPng(bytes) ?? readJpeg(bytes) ?? readWebp(bytes) ?? readGif(bytes);
124
139
  if (!metadata)
125
- throw new InvalidRasterImageError("仅支持 PNG、JPEG 或 WebP 图片");
140
+ throw new InvalidRasterImageError("仅支持 PNG、JPEG、WebPGIF 图片");
126
141
  return metadata;
127
142
  }
128
143
  //# sourceMappingURL=image-metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-metadata.js","sourceRoot":"","sources":["../src/image-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-metadata.js","sourceRoot":"","sources":["../src/image-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ function requiredString(value) {
2
+ return typeof value === "string" && value.length > 0 ? value : null;
3
+ }
4
+ function optionalString(value) {
5
+ return typeof value === "string" && value.length > 0 ? value : undefined;
6
+ }
7
+ function parsePage(row) {
8
+ const kind = requiredString(row.page_kind);
9
+ if (kind === "welcome" || kind === "settings")
10
+ return { kind };
11
+ if (kind === "editor") {
12
+ const resourceId = requiredString(row.page_resource_id);
13
+ return resourceId ? { kind, resourceId } : null;
14
+ }
15
+ if (kind === "module") {
16
+ const module = requiredString(row.page_module);
17
+ return module ? { kind, module } : null;
18
+ }
19
+ if (kind === "entity-editor") {
20
+ const module = requiredString(row.page_module);
21
+ const resourceId = optionalString(row.page_resource_id);
22
+ return module ? { kind, module, ...(resourceId ? { resourceId } : {}) } : null;
23
+ }
24
+ return null;
25
+ }
26
+ function uniqueRecipients(recipients) {
27
+ return recipients.filter((recipient, index, values) => values.findIndex((candidate) => (candidate.userId === recipient.userId && candidate.clientId === recipient.clientId)) === index);
28
+ }
29
+ function parseRecipients(value) {
30
+ if (typeof value !== "string")
31
+ return [];
32
+ try {
33
+ const parsed = JSON.parse(value);
34
+ if (!Array.isArray(parsed))
35
+ return [];
36
+ const recipients = [];
37
+ for (const item of parsed) {
38
+ if (!item || typeof item !== "object" || Array.isArray(item))
39
+ continue;
40
+ const candidate = item;
41
+ const userId = requiredString(candidate.userId);
42
+ const clientId = requiredString(candidate.clientId);
43
+ if (userId && clientId)
44
+ recipients.push({ userId, clientId });
45
+ }
46
+ return uniqueRecipients(recipients);
47
+ }
48
+ catch {
49
+ return [];
50
+ }
51
+ }
52
+ export class PresenceStore {
53
+ database;
54
+ constructor(database) {
55
+ this.database = database;
56
+ }
57
+ loadEntries(activeSince) {
58
+ const entries = [];
59
+ for (const row of this.database.all(`SELECT work_id, client_id, user_id, username, display_name, avatar_url,
60
+ page_kind, page_module, page_resource_id, last_seen_at
61
+ FROM presence_entries
62
+ WHERE last_seen_at >= ?
63
+ ORDER BY last_seen_at ASC, work_id ASC, client_id ASC`, activeSince)) {
64
+ const workId = requiredString(row.work_id);
65
+ const clientId = requiredString(row.client_id);
66
+ const userId = requiredString(row.user_id);
67
+ const username = requiredString(row.username);
68
+ const displayName = requiredString(row.display_name);
69
+ const lastSeenAt = requiredString(row.last_seen_at);
70
+ const page = parsePage(row);
71
+ if (!workId || !clientId || !userId || !username || !displayName || !lastSeenAt || !page)
72
+ continue;
73
+ entries.push({
74
+ workId,
75
+ clientId,
76
+ userId,
77
+ username,
78
+ displayName,
79
+ avatarUrl: typeof row.avatar_url === "string" ? row.avatar_url : null,
80
+ page,
81
+ lastSeenAt
82
+ });
83
+ }
84
+ return entries;
85
+ }
86
+ loadChanges(activeSince, limit) {
87
+ const resolvedLimit = Math.max(0, Math.trunc(limit));
88
+ if (resolvedLimit === 0)
89
+ return [];
90
+ const changes = [];
91
+ for (const row of this.database.all(`SELECT id, work_id, page_key, label, action, page_deleted, actor_user_id, actor_display_name,
92
+ saved_at, recipient_client_ids_json
93
+ FROM presence_changes
94
+ WHERE saved_at >= ?
95
+ ORDER BY saved_at DESC, id DESC
96
+ LIMIT ?`, activeSince, resolvedLimit)) {
97
+ const id = requiredString(row.id);
98
+ const workId = requiredString(row.work_id);
99
+ const pageKey = requiredString(row.page_key);
100
+ const label = requiredString(row.label);
101
+ const action = row.action === "delete" ? "delete" : "save";
102
+ const pageDeleted = Number(row.page_deleted) === 1;
103
+ const actorUserId = requiredString(row.actor_user_id);
104
+ const actorDisplayName = requiredString(row.actor_display_name);
105
+ const savedAt = requiredString(row.saved_at);
106
+ if (!id || !workId || !pageKey || !label || !actorUserId || !actorDisplayName || !savedAt)
107
+ continue;
108
+ changes.push({
109
+ id,
110
+ workId,
111
+ pageKey,
112
+ label,
113
+ action,
114
+ pageDeleted,
115
+ actorUserId,
116
+ actorDisplayName,
117
+ savedAt,
118
+ recipients: parseRecipients(row.recipient_client_ids_json)
119
+ });
120
+ }
121
+ return changes.reverse();
122
+ }
123
+ flush(batch) {
124
+ const hasCleanup = batch.entryExpiryCutoff !== undefined || batch.changeExpiryCutoff !== undefined;
125
+ if (batch.entries.length === 0 && batch.changes.length === 0 && !hasCleanup)
126
+ return;
127
+ this.database.transaction(() => {
128
+ for (const entry of batch.entries) {
129
+ this.database.run(`INSERT INTO presence_entries (
130
+ work_id, client_id, user_id, username, display_name, avatar_url,
131
+ page_kind, page_module, page_resource_id, last_seen_at
132
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
133
+ ON CONFLICT(work_id, client_id) DO UPDATE SET
134
+ user_id = excluded.user_id,
135
+ username = excluded.username,
136
+ display_name = excluded.display_name,
137
+ avatar_url = excluded.avatar_url,
138
+ page_kind = excluded.page_kind,
139
+ page_module = excluded.page_module,
140
+ page_resource_id = excluded.page_resource_id,
141
+ last_seen_at = excluded.last_seen_at
142
+ WHERE excluded.last_seen_at >= presence_entries.last_seen_at`, entry.workId, entry.clientId, entry.userId, entry.username, entry.displayName, entry.avatarUrl, entry.page.kind, entry.page.module ?? null, entry.page.resourceId ?? null, entry.lastSeenAt);
143
+ }
144
+ for (const change of batch.changes) {
145
+ this.database.run(`INSERT INTO presence_changes (
146
+ id, work_id, page_key, label, action, page_deleted, actor_user_id, actor_display_name,
147
+ saved_at, recipient_client_ids_json
148
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
149
+ ON CONFLICT(id) DO NOTHING`, change.id, change.workId, change.pageKey, change.label, change.action, change.pageDeleted ? 1 : 0, change.actorUserId, change.actorDisplayName, change.savedAt, JSON.stringify(uniqueRecipients(change.recipients)));
150
+ }
151
+ if (batch.entryExpiryCutoff !== undefined) {
152
+ this.database.run("DELETE FROM presence_entries WHERE last_seen_at < ?", batch.entryExpiryCutoff);
153
+ }
154
+ if (batch.changeExpiryCutoff !== undefined) {
155
+ this.database.run("DELETE FROM presence_changes WHERE saved_at < ?", batch.changeExpiryCutoff);
156
+ }
157
+ });
158
+ }
159
+ }
160
+ //# sourceMappingURL=presence-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence-store.js","sourceRoot":"","sources":["../src/presence-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type ConnectivityToastType = "info" | "warning" | "error";
2
+ export type ConnectivityToast = { message: string; type: ConnectivityToastType };
3
+ export type ConnectivityObjectType = "provider" | "model";
4
+
5
+ export function connectivityTestResultToast(result: unknown, objectType: ConnectivityObjectType): ConnectivityToast;
6
+ export function connectivityTestErrorToast(error: unknown, objectType: ConnectivityObjectType): ConnectivityToast;
7
+ export function connectivityConfigurationSavedToast(objectType: ConnectivityObjectType): string;