chore(standalone): fix type errors after merge with main

This commit is contained in:
Elian Doran
2026-04-04 17:35:48 +03:00
parent b52e65278e
commit 62a34e90dd
20 changed files with 58 additions and 140 deletions

View File

@@ -32,7 +32,7 @@
"@triliumnext/highlightjs": "workspace:*",
"@triliumnext/share-theme": "workspace:*",
"@triliumnext/split.js": "workspace:*",
"@zumer/snapdom": "2.6.0",
"@zumer/snapdom": "2.7.0",
"autocomplete.js": "0.38.1",
"bootstrap": "5.3.8",
"boxicons": "2.1.4",
@@ -43,8 +43,8 @@
"fflate": "0.8.2",
"force-graph": "1.51.2",
"globals": "17.4.0",
"i18next": "25.10.10",
"i18next-http-backend": "3.0.2",
"i18next": "26.0.3",
"i18next-http-backend": "3.0.4",
"jquery": "4.0.0",
"jquery.fancytree": "2.38.5",
"js-md5": "0.8.3",
@@ -59,11 +59,11 @@
"mark.js": "8.11.1",
"marked": "17.0.5",
"mermaid": "11.13.0",
"mind-elixir": "5.9.3",
"mind-elixir": "5.10.0",
"normalize.css": "8.0.1",
"panzoom": "9.4.4",
"preact": "10.29.0",
"react-i18next": "17.0.0",
"react-i18next": "17.0.2",
"react-window": "2.2.7",
"reveal.js": "6.0.0",
"svg-pan-zoom": "3.6.2",
@@ -84,6 +84,6 @@
"cross-env": "7.0.3",
"happy-dom": "20.8.9",
"script-loader": "0.7.2",
"vite-plugin-static-copy": "3.4.0"
"vite-plugin-static-copy": "4.0.0"
}
}

View File

@@ -4,7 +4,7 @@ import { existsSync } from "fs";
import fs from "fs-extra";
import path, { join } from "path";
import packageJson from "../package.json" assert { type: "json" };
import packageJson from "../package.json" with { type: "json" };
import { PRODUCT_NAME } from "../src/app-info.js";
const ELECTRON_FORGE_DIR = __dirname;

View File

@@ -37,6 +37,8 @@
"ai": "6.0.142",
"better-sqlite3": "12.8.0",
"html-to-text": "9.0.5",
"i18next-fs-backend": "2.6.3",
"i18next": "26.0.3",
"js-yaml": "4.1.1",
"unpdf": "1.4.0"
},
@@ -97,9 +99,7 @@
"html": "1.0.0",
"html2plaintext": "2.1.4",
"http-proxy-agent": "8.0.0",
"https-proxy-agent": "8.0.0",
"i18next": "26.0.3",
"i18next-fs-backend": "2.6.3",
"https-proxy-agent": "8.0.0",
"image-type": "6.1.0",
"ini": "6.0.0",
"is-animated": "2.0.2",

View File

@@ -1,7 +1,7 @@
import { special_notes as specialNotesService } from "@triliumnext/core";
import type { Router } from "express";
import dateNotesService from "../services/date_notes.js";
import specialNotesService from "../services/special_notes.js";
import eu from "./etapi_utils.js";
import mappers from "./mappers.js";

View File

@@ -10,13 +10,13 @@ import path from "path";
import ClsHookedExecutionContext from "./cls_provider.js";
import NodejsCryptoProvider from "./crypto_provider.js";
import NodejsZipProvider from "./zip_provider.js";
import ServerPlatformProvider from "./platform_provider.js";
import dataDirs from "./services/data_dir.js";
import port from "./services/port.js";
import NodeRequestProvider from "./services/request.js";
import WebSocketMessagingProvider from "./services/ws_messaging_provider.js";
import BetterSqlite3Provider from "./sql_provider.js";
import NodejsZipProvider from "./zip_provider.js";
async function startApplication() {
const config = (await import("./services/config.js")).default;

View File

@@ -1,10 +1,9 @@
import { utils } from "@triliumnext/core";
import { special_notes as specialNotesService,utils } from "@triliumnext/core";
import type { Request } from "express";
import imageType from "image-type";
import imageService from "../../services/image.js";
import noteService from "../../services/notes.js";
import specialNotesService from "../../services/special_notes.js";
async function uploadImage(req: Request) {
const file = req.file;

View File

@@ -1,16 +1,14 @@
import { BootstrapDefinition } from "@triliumnext/commons";
import { getSharedBootstrapItems, getSql, icon_packs as iconPackService, sql_init } from "@triliumnext/core";
import { getSharedBootstrapItems, icon_packs as iconPackService, sql_init } from "@triliumnext/core";
import type { Request, Response } from "express";
import packageJson from "../../package.json" with { type: "json" };
import type BNote from "../becca/entities/bnote.js";
import appPath from "../services/app_path.js";
import assetPath from "../services/asset_path.js";
import attributeService from "../services/attributes.js";
import config from "../services/config.js";
import log from "../services/log.js";
import optionService from "../services/options.js";
import { isDev, isElectron, isMac, isWindows, isWindows11 } from "../services/utils.js";
import { isDev, isElectron, isMac, isWindows11 } from "../services/utils.js";
import { generateCsrfToken } from "./csrf_protection.js";
type View = "desktop" | "mobile" | "print";

View File

@@ -2,6 +2,7 @@
* LLM tools for attachment operations.
*/
import { unwrapStringOrBuffer } from "@triliumnext/core/src/services/utils/binary.js";
import { z } from "zod";
import becca from "../../../becca/becca.js";
@@ -47,7 +48,7 @@ export const attachmentTools = defineTools({
return {
attachmentId: attachment.attachmentId,
source: "text" as const,
content: typeof content === "string" ? content : content.toString("utf-8")
content: unwrapStringOrBuffer(content)
};
}

View File

@@ -2,11 +2,12 @@
* Shared helpers for LLM tools — content conversion, metadata building, and previews.
*/
import { markdownExportService as markdownExport,markdownImportService as markdownImport } from "@triliumnext/core";
import { unwrapStringOrBuffer } from "@triliumnext/core/src/services/utils/binary.js";
import becca from "../../../becca/becca.js";
import type BAttachment from "../../../becca/entities/battachment.js";
import type BNote from "../../../becca/entities/bnote.js";
import markdownExport from "../../export/markdown.js";
import markdownImport from "../../import/markdown.js";
const CONTENT_PREVIEW_MAX_LENGTH = 500;
const ATTACHMENT_PREVIEW_MAX_LENGTH = 200;
@@ -97,7 +98,7 @@ export function getAttachmentContentPreview(att: BAttachment): string | null {
if (att.hasStringContent()) {
const content = att.getContent();
text = typeof content === "string" ? content : content.toString("utf-8");
text = unwrapStringOrBuffer(content);
} else {
const blob = att.blobId ? becca.getBlob({ blobId: att.blobId }) : null;
text = blob?.textRepresentation ?? null;

View File

@@ -2,14 +2,14 @@
* LLM tools for note operations (search, read, create, update, append).
*/
import { markdownImportService as markdownImport } from "@triliumnext/core";
import { z } from "zod";
import becca from "../../../becca/becca.js";
import markdownImport from "../../import/markdown.js";
import noteService from "../../notes.js";
import SearchContext from "../../search/search_context.js";
import searchService from "../../search/services/search.js";
import { TOOL_LIMITS, getContentPreview, getNoteContentForLlm, getNoteMeta, setNoteContentFromLlm } from "./helpers.js";
import { getContentPreview, getNoteContentForLlm, getNoteMeta, setNoteContentFromLlm,TOOL_LIMITS } from "./helpers.js";
import { defineTools } from "./tool_registry.js";
export const noteTools = defineTools({

View File

@@ -1,7 +1,7 @@
import { getTesseractCode } from '@triliumnext/commons';
import { blob as blobService } from '@triliumnext/core';
import becca from '../../becca/becca.js';
import blobService from '../blob.js';
import entityChangesService from '../entity_changes.js';
import log from '../log.js';
import options from '../options.js';
@@ -173,7 +173,7 @@ class OCRService {
mime: string;
blobId: string | undefined;
languageNoteId: string;
getContent: () => string | Buffer;
getContent: () => string | Uint8Array;
}, options: OCRProcessingOptions = {}): Promise<OCRResult | null> {
const { entityId, entityType, category, mime, blobId, languageNoteId } = entity;
@@ -369,8 +369,7 @@ class OCRService {
const hash = blobService.calculateContentHash({
blobId: blob.blobId,
content: blob.content,
textRepresentation: blob.textRepresentation,
utcDateModified: blob.utcDateModified!
textRepresentation: blob.textRepresentation
});
entityChangesService.putEntityChange({
entityName: "blobs",

View File

@@ -99,6 +99,10 @@ function getLlmChatHome() {
}
function saveLlmChat(llmChatNoteId: string | null) {
if (!llmChatNoteId) {
throw new Error(`Missing chat note ID`);
}
const llmChatNote = becca.getNote(llmChatNoteId);
if (!llmChatNote) {
throw new Error(`Unable to find LLM chat note ID: ${llmChatNoteId}`);

View File

@@ -336,7 +336,7 @@ export type BootstrapDefinition = {
csrfToken?: string;
headingStyle: "plain" | "underline" | "markdown";
layoutOrientation: "vertical" | "horizontal";
platform?: typeof process.platform | "web";
platform?: "aix" | "android" | "darwin" | "freebsd" | "haiku" | "linux" | "openbsd" | "sunos" | "win32" | "cygwin" | "netbsd" | "web";
isElectron: boolean;
isStandalone: boolean;
hasNativeTitleBar: boolean;

View File

@@ -13,7 +13,7 @@
"async-mutex": "0.5.0",
"chardet": "2.1.1",
"escape-html": "1.0.3",
"i18next": "25.10.10",
"i18next": "26.0.3",
"mime-types": "3.0.2",
"node-html-parser": "7.1.0",
"sanitize-filename": "1.6.4",

View File

@@ -113,6 +113,7 @@ export * as becca_easy_mocking from "./test/becca_easy_mocking";
export * as becca_mocking from "./test/becca_mocking";
export { default as markdownImportService } from "./services/import/markdown";
export { default as markdownExportService } from "./services/export/markdown";
export { default as scriptService } from "./services/script";
export { default as BackendScriptApi, type Api as BackendScriptApiInterface } from "./services/backend_script_api";

View File

@@ -8,7 +8,7 @@ import hiddenSubtreeService from "./hidden_subtree.js";
import oneTimeTimer from "./one_time_timer.js";
import type BNote from "../becca/entities/bnote.js";
import type AbstractBeccaEntity from "../becca/entities/abstract_becca_entity.js";
import type { DefinitionObject } from "./promoted_attribute_definition_interface.js";
import { DefinitionObject } from "@triliumnext/commons";
type Handler = (definition: DefinitionObject, note: BNote, targetNote: BNote) => void;

View File

@@ -11,6 +11,7 @@ import { cleanUpHelp, getHelpHiddenSubtreeData } from "./in_app_help.js";
import migrationService from "./migration.js";
import noteService from "./notes.js";
import { getLog } from "./log.js";
import { getSql } from "./sql/index.js";
export const LBTPL_ROOT = "_lbTplRoot";
export const LBTPL_BASE = "_lbTplBase";

View File

@@ -1,5 +1,5 @@
import becca from "../../../becca/becca.js";
import sql from "../../sql.js";
import { getSql } from "../../sql/index.js";
import NoteSet from "../note_set.js";
import type SearchContext from "../search_context.js";
import Expression from "./expression.js";
@@ -52,6 +52,7 @@ export default class OCRContentExpression extends Expression {
const params = this.tokens.map(token => `%${token}%`);
// Find notes whose own blob matches
const sql = getSql();
const noteIds = sql.getColumn<string>(`
SELECT n.noteId
FROM notes n

129
pnpm-lock.yaml generated
View File

@@ -467,7 +467,7 @@ importers:
version: 0.2.1(mermaid@11.13.0)
'@mind-elixir/node-menu':
specifier: 5.0.1
version: 5.0.1(mind-elixir@5.9.3)
version: 5.0.1(mind-elixir@5.10.0)
'@popperjs/core':
specifier: 2.11.8
version: 2.11.8
@@ -499,8 +499,8 @@ importers:
specifier: workspace:*
version: link:../../packages/splitjs
'@zumer/snapdom':
specifier: 2.6.0
version: 2.6.0
specifier: 2.7.0
version: 2.7.0
autocomplete.js:
specifier: 0.38.1
version: 0.38.1
@@ -532,11 +532,11 @@ importers:
specifier: 17.4.0
version: 17.4.0
i18next:
specifier: 25.10.10
version: 25.10.10(typescript@6.0.2)
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
i18next-http-backend:
specifier: 3.0.2
version: 3.0.2(encoding@0.1.13)
specifier: 3.0.4
version: 3.0.4(encoding@0.1.13)
jquery:
specifier: 4.0.0
version: 4.0.0
@@ -580,8 +580,8 @@ importers:
specifier: 11.13.0
version: 11.13.0
mind-elixir:
specifier: 5.9.3
version: 5.9.3
specifier: 5.10.0
version: 5.10.0
normalize.css:
specifier: 8.0.1
version: 8.0.1
@@ -592,8 +592,8 @@ importers:
specifier: 10.29.0
version: 10.29.0
react-i18next:
specifier: 17.0.0
version: 17.0.0(i18next@25.10.10(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)
specifier: 17.0.2
version: 17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)
react-window:
specifier: 2.2.7
version: 2.2.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -650,8 +650,8 @@ importers:
specifier: 0.7.2
version: 0.7.2
vite-plugin-static-copy:
specifier: 3.4.0
version: 3.4.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3))
specifier: 4.0.0
version: 4.0.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3))
apps/db-compare:
dependencies:
@@ -829,6 +829,12 @@ importers:
html-to-text:
specifier: 9.0.5
version: 9.0.5
i18next:
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
i18next-fs-backend:
specifier: 2.6.3
version: 2.6.3
js-yaml:
specifier: 4.1.1
version: 4.1.1
@@ -1007,12 +1013,6 @@ importers:
https-proxy-agent:
specifier: 8.0.0
version: 8.0.0
i18next:
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
i18next-fs-backend:
specifier: 2.6.3
version: 2.6.3
image-type:
specifier: 6.1.0
version: 6.1.0
@@ -1708,8 +1708,8 @@ importers:
specifier: 1.0.3
version: 1.0.3
i18next:
specifier: 25.10.10
version: 25.10.10(typescript@6.0.2)
specifier: 26.0.3
version: 26.0.3(typescript@6.0.2)
mime-types:
specifier: 3.0.2
version: 3.0.2
@@ -6903,9 +6903,6 @@ packages:
resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==}
engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'}
'@zumer/snapdom@2.6.0':
resolution: {integrity: sha512-JpPPkuMzozRVX6KArgCiMgLpgVW82kWgyoFk5DWGKE5msWGEshXEUdQHLLEyZRO7qioI1pI+yaBJz81tEP9gPg==}
'@zumer/snapdom@2.7.0':
resolution: {integrity: sha512-ZiELKzDszeFOazPQ/ExXzgtdoW9jADVjDjInr5XDAlVdCx0RbNsFiG7RLyM48XnA7EyCA9yTvmXSc3ElDrTRqA==}
@@ -7969,9 +7966,6 @@ packages:
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
hasBin: true
cross-fetch@4.0.0:
resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
cross-fetch@4.1.0:
resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
@@ -9761,20 +9755,9 @@ packages:
i18next-fs-backend@2.6.3:
resolution: {integrity: sha512-/5aW996nbolGh/qVU9urjAJ2QiXpiyGuhG8x/ZvvZQ3bMlrK+ouUdD6whS4e+sU9CCdUIzl7x/heEjsBh/3xtw==}
i18next-http-backend@3.0.2:
resolution: {integrity: sha512-PdlvPnvIp4E1sYi46Ik4tBYh/v/NbYfFFgTjkwFl0is8A18s7/bx9aXqsrOax9WUbeNS6mD2oix7Z0yGGf6m5g==}
i18next-http-backend@3.0.4:
resolution: {integrity: sha512-udwrBIE6cNpqn1gRAqRULq3+7MzIIuaiKRWrz++dVz5SqWW2VwXmPJtAgkI0JtMLFaADC9qNmnZAxWAhsxXx2g==}
i18next@25.10.10:
resolution: {integrity: sha512-cqUW2Z3EkRx7NqSyywjkgCLK7KLCL6IFVFcONG7nVYIJ3ekZ1/N5jUsihHV6Bq37NfhgtczxJcxduELtjTwkuQ==}
peerDependencies:
typescript: ^5 || ^6
peerDependenciesMeta:
typescript:
optional: true
i18next@26.0.3:
resolution: {integrity: sha512-1571kXINxHKY7LksWp8wP+zP0YqHSSpl/OW0Y0owFEf2H3s8gCAffWaZivcz14rMkOvn3R/psiQxVsR9t2Nafg==}
peerDependencies:
@@ -11089,9 +11072,6 @@ packages:
mind-elixir@5.10.0:
resolution: {integrity: sha512-AY/tDXz8stMbx0MIutdn63Dz0uwY1VVMKIxCqOOA2hg5WGdCGm2qqEZF498deLDxoZbL+hDf1SwBWzvWADBoPA==}
mind-elixir@5.9.3:
resolution: {integrity: sha512-OTTO6ofvDuzN4fxuBngqhQLJmIqModr2NgQb4OY+5DGRt54B+YNAvNnlspYwUXXGq2Rbht1DhXgeU4dr4CUy6Q==}
minimatch@10.2.4:
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
engines: {node: 18 || 20 || >=22}
@@ -12374,22 +12354,6 @@ packages:
peerDependencies:
react: ^19.2.4
react-i18next@17.0.0:
resolution: {integrity: sha512-L7aqwOePCExt6nlF7000lN2YKWnR7IpSpQId9sj01798Xn3LAncBdTHKl9lA/nr+YrG78BTqWPJxq9mlrrmH7Q==}
peerDependencies:
i18next: '>= 25.10.10'
react: '>= 16.8.0'
react-dom: '*'
react-native: '*'
typescript: ^5 || ^6
peerDependenciesMeta:
react-dom:
optional: true
react-native:
optional: true
typescript:
optional: true
react-i18next@17.0.2:
resolution: {integrity: sha512-shBftH2vaTWK2Bsp7FiL+cevx3xFJlvFxmsDFQSrJc+6twHkP0tv/bGa01VVWzpreUVVwU+3Hev5iFqRg65RwA==}
peerDependencies:
@@ -14257,12 +14221,6 @@ packages:
vite:
optional: true
vite-plugin-static-copy@3.4.0:
resolution: {integrity: sha512-ekryzCw0ouAOE8tw4RvVL/dfqguXzumsV3FBKoKso4MQ1MUUrUXtl5RI4KpJQUNGqFEsg9kxl4EvDl02YtA9VQ==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vite-plugin-static-copy@4.0.0:
resolution: {integrity: sha512-TTf6cVTV4M2pH2Wfr3zhevdRsIQezfm2ltDkSfkjqvvdryJHYQyNoPISvuytX3r9jFZV0yVeMYyGTsAvAH2XLw==}
engines: {node: ^22.0.0 || >=24.0.0}
@@ -17986,10 +17944,6 @@ snapshots:
dependencies:
mind-elixir: 5.10.0
'@mind-elixir/node-menu@5.0.1(mind-elixir@5.9.3)':
dependencies:
mind-elixir: 5.9.3
'@mixmark-io/domino@2.2.0': {}
'@modelcontextprotocol/sdk@1.29.0(zod@4.3.6)':
@@ -22177,8 +22131,6 @@ snapshots:
'@zip.js/zip.js@2.8.11': {}
'@zumer/snapdom@2.6.0': {}
'@zumer/snapdom@2.7.0': {}
abbrev@1.1.1: {}
@@ -23438,12 +23390,6 @@ snapshots:
dependencies:
cross-spawn: 7.0.6
cross-fetch@4.0.0(encoding@0.1.13):
dependencies:
node-fetch: 2.7.0(encoding@0.1.13)
transitivePeerDependencies:
- encoding
cross-fetch@4.1.0(encoding@0.1.13):
dependencies:
node-fetch: 2.7.0(encoding@0.1.13)
@@ -25797,24 +25743,12 @@ snapshots:
i18next-fs-backend@2.6.3: {}
i18next-http-backend@3.0.2(encoding@0.1.13):
dependencies:
cross-fetch: 4.0.0(encoding@0.1.13)
transitivePeerDependencies:
- encoding
i18next-http-backend@3.0.4(encoding@0.1.13):
dependencies:
cross-fetch: 4.1.0(encoding@0.1.13)
transitivePeerDependencies:
- encoding
i18next@25.10.10(typescript@6.0.2):
dependencies:
'@babel/runtime': 7.29.2
optionalDependencies:
typescript: 6.0.2
i18next@26.0.3(typescript@6.0.2):
dependencies:
'@babel/runtime': 7.29.2
@@ -27286,8 +27220,6 @@ snapshots:
mind-elixir@5.10.0: {}
mind-elixir@5.9.3: {}
minimatch@10.2.4:
dependencies:
brace-expansion: 5.0.5
@@ -28645,17 +28577,6 @@ snapshots:
react: 19.2.4
scheduler: 0.27.0
react-i18next@17.0.0(i18next@25.10.10(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2):
dependencies:
'@babel/runtime': 7.29.2
html-parse-stringify: 3.0.1
i18next: 25.10.10(typescript@6.0.2)
react: 19.2.4
use-sync-external-store: 1.6.0(react@19.2.4)
optionalDependencies:
react-dom: 19.2.4(react@19.2.4)
typescript: 6.0.2
react-i18next@17.0.2(i18next@26.0.3(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2):
dependencies:
'@babel/runtime': 7.29.2
@@ -30843,14 +30764,6 @@ snapshots:
- rollup
- supports-color
vite-plugin-static-copy@3.4.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
chokidar: 3.6.0
p-map: 7.0.4
picocolors: 1.1.1
tinyglobby: 0.2.15
vite: 8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)
vite-plugin-static-copy@4.0.0(vite@8.0.3(@types/node@24.12.0)(esbuild@0.27.4)(jiti@2.6.1)(less@4.1.3)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.3)):
dependencies:
chokidar: 3.6.0