@nocobase/plugin-ai 2.0.60 → 2.0.62

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 (40) hide show
  1. package/dist/externalVersion.js +16 -16
  2. package/dist/locale/de-DE.json +1 -0
  3. package/dist/locale/en-US.json +1 -0
  4. package/dist/locale/es-ES.json +1 -0
  5. package/dist/locale/fr-FR.json +1 -0
  6. package/dist/locale/hu-HU.json +1 -0
  7. package/dist/locale/id-ID.json +1 -0
  8. package/dist/locale/it-IT.json +1 -0
  9. package/dist/locale/ja-JP.json +1 -0
  10. package/dist/locale/ko-KR.json +1 -0
  11. package/dist/locale/nl-NL.json +1 -0
  12. package/dist/locale/pt-BR.json +1 -0
  13. package/dist/locale/ru-RU.json +1 -0
  14. package/dist/locale/tr-TR.json +1 -0
  15. package/dist/locale/uk-UA.json +1 -0
  16. package/dist/locale/vi-VN.json +1 -0
  17. package/dist/locale/zh-CN.json +1 -0
  18. package/dist/locale/zh-TW.json +1 -0
  19. package/dist/node_modules/@langchain/xai/package.json +1 -1
  20. package/dist/node_modules/fast-glob/package.json +1 -1
  21. package/dist/node_modules/flexsearch/package.json +1 -1
  22. package/dist/node_modules/fs-extra/package.json +1 -1
  23. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  24. package/dist/node_modules/openai/package.json +1 -1
  25. package/dist/node_modules/zod/package.json +1 -1
  26. package/dist/server/llm-providers/anthropic.js +17 -23
  27. package/dist/server/llm-providers/dashscope.js +3 -3
  28. package/dist/server/llm-providers/deepseek.js +2 -2
  29. package/dist/server/llm-providers/google-genai.js +17 -22
  30. package/dist/server/llm-providers/kimi/provider.js +4 -4
  31. package/dist/server/llm-providers/mimo.js +2 -2
  32. package/dist/server/llm-providers/ollama.js +14 -21
  33. package/dist/server/llm-providers/openai/completions.js +2 -2
  34. package/dist/server/llm-providers/openai/embedding.js +1 -1
  35. package/dist/server/llm-providers/openai/responses.js +2 -2
  36. package/dist/server/llm-providers/provider.d.ts +3 -1
  37. package/dist/server/llm-providers/provider.js +49 -15
  38. package/dist/server/llm-providers/xai.js +2 -2
  39. package/dist/server/resource/ai.js +11 -9
  40. package/package.json +2 -2
@@ -8,20 +8,20 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/plugin-acl": "2.0.60",
12
- "@nocobase/plugin-workflow": "2.0.60",
13
- "@nocobase/client": "2.0.60",
14
- "@nocobase/utils": "2.0.60",
15
- "@nocobase/database": "2.0.60",
16
- "@nocobase/server": "2.0.60",
17
- "@nocobase/plugin-file-manager": "2.0.60",
18
- "@nocobase/actions": "2.0.60",
19
- "@nocobase/ai": "2.0.60",
11
+ "@nocobase/plugin-acl": "2.0.62",
12
+ "@nocobase/plugin-workflow": "2.0.62",
13
+ "@nocobase/client": "2.0.62",
14
+ "@nocobase/utils": "2.0.62",
15
+ "@nocobase/database": "2.0.62",
16
+ "@nocobase/server": "2.0.62",
17
+ "@nocobase/plugin-file-manager": "2.0.62",
18
+ "@nocobase/actions": "2.0.62",
19
+ "@nocobase/ai": "2.0.62",
20
20
  "react": "18.2.0",
21
21
  "antd": "5.24.2",
22
22
  "@formily/core": "2.3.7",
23
23
  "@formily/react": "2.3.7",
24
- "@nocobase/flow-engine": "2.0.60",
24
+ "@nocobase/flow-engine": "2.0.62",
25
25
  "@ant-design/icons": "5.6.1",
26
26
  "@formily/antd-v5": "1.2.3",
27
27
  "react-router-dom": "6.30.1",
@@ -31,19 +31,19 @@ module.exports = {
31
31
  "@langchain/core": "1.1.48",
32
32
  "langchain": "1.2.39",
33
33
  "@langchain/langgraph": "1.1.5",
34
- "@nocobase/cache": "2.0.60",
34
+ "@nocobase/cache": "2.0.62",
35
35
  "@langchain/anthropic": "1.3.17",
36
- "axios": "1.7.7",
37
36
  "@langchain/openai": "1.2.7",
38
37
  "@langchain/deepseek": "1.0.11",
39
38
  "@langchain/google-genai": "2.1.18",
40
39
  "@langchain/ollama": "1.2.7",
41
- "@nocobase/acl": "2.0.60",
42
- "@nocobase/resourcer": "2.0.60",
40
+ "@nocobase/acl": "2.0.62",
41
+ "@nocobase/resourcer": "2.0.62",
43
42
  "@emotion/css": "11.13.0",
44
43
  "react-i18next": "11.18.6",
45
- "@nocobase/plugin-data-source-manager": "2.0.60",
44
+ "@nocobase/plugin-data-source-manager": "2.0.62",
46
45
  "ahooks": "3.7.8",
47
46
  "@langchain/langgraph-checkpoint": "1.0.0",
48
- "@nocobase/data-source-manager": "2.0.60"
47
+ "@nocobase/data-source-manager": "2.0.62",
48
+ "axios": "1.7.7"
49
49
  };
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM-Dienst",
109
109
  "LLM services": "LLM-Dienste",
110
+ "LLM service test failed. Please check the service configuration.": "Test des LLM-Dienstes fehlgeschlagen. Bitte überprüfen Sie die Dienstkonfiguration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "Eine Obergrenze für die Anzahl der Tokens, die für eine Vervollständigung generiert werden können, einschließlich sichtbarer Ausgabe-Tokens und Reasoning-Tokens.",
@@ -132,6 +132,7 @@
132
132
  "LLM service": "LLM service",
133
133
  "LLM service not configured": "LLM service not configured",
134
134
  "LLM services": "LLM services",
135
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
135
136
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
136
137
  "Limit": "Limit",
137
138
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM szolgáltatás",
109
109
  "LLM services": "LLM szolgáltatások",
110
+ "LLM service test failed. Please check the service configuration.": "Az LLM szolgáltatás tesztje sikertelen. Kérjük, ellenőrizze a szolgáltatás konfigurációját.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "A generálható tokenek maximális határa egy befejezéshez, beleértve a látható kimeneti tokeneket és a gondolkodási tokeneket.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "Layanan LLM",
109
109
  "LLM services": "Layanan LLM",
110
+ "LLM service test failed. Please check the service configuration.": "Pengujian layanan LLM gagal. Silakan periksa konfigurasi layanan.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "Batas atas jumlah token yang dapat dihasilkan untuk penyelesaian, termasuk token keluaran yang terlihat dan token penalaran.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "Servizio LLM",
109
109
  "LLM services": "Servizi LLM",
110
+ "LLM service test failed. Please check the service configuration.": "Test del servizio LLM non riuscito. Controllare la configurazione del servizio.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "Un limite superiore per il numero di token che possono essere generati per un completamento, inclusi i token di output visibili e i token di ragionamento.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLMサービス",
109
109
  "LLM services": "LLMサービス",
110
+ "LLM service test failed. Please check the service configuration.": "LLMサービスのテストに失敗しました。サービス設定を確認してください。",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "生成可能なトークン数の上限値(可視出力トークンと推論トークンを含む)。入力トークンと出力トークンの総数はモデルのコンテキスト長制限に準拠します。",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM 서비스",
109
109
  "LLM services": "LLM 서비스",
110
+ "LLM service test failed. Please check the service configuration.": "LLM 서비스 테스트에 실패했습니다. 서비스 구성을 확인하세요.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "완료에 대해 생성할 수 있는 토큰 수의 상한값으로, 표시 가능한 출력 토큰과 추론 토큰이 포함됩니다.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM dienst",
109
109
  "LLM services": "LLM diensten",
110
+ "LLM service test failed. Please check the service configuration.": "Test van de LLM-dienst is mislukt. Controleer de serviceconfiguratie.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "Een bovengrens voor het aantal tokens dat kan worden gegenereerd voor een voltooiing, inclusief zichtbare outputtokens en redeneertokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "Сервис LLM",
109
109
  "LLM services": "Сервисы LLM",
110
+ "LLM service test failed. Please check the service configuration.": "Проверка сервиса LLM не удалась. Проверьте конфигурацию сервиса.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "Верхняя граница количества токенов, которые могут быть сгенерированы для завершения, включая видимые выходные токены и токены рассуждений.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM service test failed. Please check the service configuration.",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -133,6 +133,7 @@
133
133
  "LLM service": "LLM 服务",
134
134
  "LLM service not configured": "LLM 服务未配置",
135
135
  "LLM services": "LLM 服务",
136
+ "LLM service test failed. Please check the service configuration.": "LLM 服务测试失败,请检查服务配置。",
136
137
  "Label for task selection buttons when multiple tasks exist": "多个任务可选时,用于让用户选择任务的按钮标题",
137
138
  "Limit": "限制",
138
139
  "Max completion tokens description": "限制一次请求中模型生成 completion 的最大 token 数。输入 token 和输出 token 的总长度受模型的上下文长度的限制。",
@@ -107,6 +107,7 @@
107
107
  "KnowledgeBase": "Knowledge Base",
108
108
  "LLM service": "LLM service",
109
109
  "LLM services": "LLM services",
110
+ "LLM service test failed. Please check the service configuration.": "LLM 服務測試失敗,請檢查服務設定。",
110
111
  "Label for task selection buttons when multiple tasks exist": "Label for task selection buttons when multiple tasks exist",
111
112
  "Limit": "Limit",
112
113
  "Max completion tokens description": "An upper bound for the number of tokens that can be generated for a completion, including visible output tokens and reasoning tokens.",
@@ -1 +1 @@
1
- {"name":"@langchain/xai","version":"1.3.3","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-xai/","dependencies":{"@langchain/openai":"1.2.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@types/uuid":"^9","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^3.5.0","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/core":"^1.1.21","@langchain/eslint":"0.1.1","@langchain/openai":"^1.2.7","@langchain/tsconfig":"0.0.1","@langchain/standard-tests":"0.0.23"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --write \"src\"","format:check":"prettier --check \"src\"","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-05-29T10:17:50.382Z"}
1
+ {"name":"@langchain/xai","version":"1.3.3","description":"xAI integration for LangChain.js","author":"LangChain","license":"MIT","type":"module","engines":{"node":">=20"},"repository":{"type":"git","url":"git@github.com:langchain-ai/langchainjs.git"},"homepage":"https://github.com/langchain-ai/langchainjs/tree/main/libs/langchain-xai/","dependencies":{"@langchain/openai":"1.2.7"},"peerDependencies":{"@langchain/core":"^1.0.0"},"devDependencies":{"@tsconfig/recommended":"^1.0.3","@types/uuid":"^9","@vitest/coverage-v8":"^3.2.4","dotenv":"^16.3.1","dpdm":"^3.14.0","eslint":"^9.34.0","prettier":"^3.5.0","typescript":"~5.8.3","vitest":"^3.2.4","zod":"^3.25.76","@langchain/core":"^1.1.21","@langchain/eslint":"0.1.1","@langchain/openai":"^1.2.7","@langchain/tsconfig":"0.0.1","@langchain/standard-tests":"0.0.23"},"publishConfig":{"access":"public"},"main":"./dist/index.cjs","types":"./dist/index.d.cts","exports":{".":{"input":"./src/index.ts","require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"},"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./package.json":"./package.json"},"files":["dist/","CHANGELOG.md","README.md","LICENSE"],"module":"./dist/index.js","scripts":{"build":"turbo build:compile --filter @langchain/xai --output-logs new-only","build:compile":"tsdown","lint:eslint":"eslint --cache src/","lint:dpdm":"dpdm --skip-dynamic-imports circular --exit-code circular:1 --no-warning --no-tree src/*.ts src/**/*.ts","lint":"pnpm lint:eslint && pnpm lint:dpdm","lint:fix":"pnpm lint:eslint --fix && pnpm lint:dpdm","clean":"rm -rf .turbo dist/","test":"vitest run","test:watch":"vitest --watch","test:int":"vitest --mode int","test:standard:unit":"vitest --mode standard-unit","test:standard:int":"vitest --mode standard-int","test:standard":"pnpm test:standard:unit && pnpm test:standard:int","format":"prettier --write \"src\"","format:check":"prettier --check \"src\"","typegen":"pnpm run typegen:profiles","typegen:profiles":"pnpm --filter @langchain/model-profiles make --config profiles.toml"},"_lastModified":"2026-06-10T17:43:54.700Z"}
@@ -1 +1 @@
1
- {"name":"fast-glob","version":"3.3.2","description":"It's a very fast and efficient glob library for Node.js","license":"MIT","repository":"mrmlnc/fast-glob","author":{"name":"Denis Malinochkin","url":"https://mrmlnc.com"},"engines":{"node":">=8.6.0"},"main":"out/index.js","typings":"out/index.d.ts","files":["out","!out/{benchmark,tests}","!out/**/*.map","!out/**/*.spec.*"],"keywords":["glob","patterns","fast","implementation"],"devDependencies":{"@nodelib/fs.macchiato":"^1.0.1","@types/glob-parent":"^5.1.0","@types/merge2":"^1.1.4","@types/micromatch":"^4.0.0","@types/mocha":"^5.2.7","@types/node":"^14.18.53","@types/picomatch":"^2.3.0","@types/sinon":"^7.5.0","bencho":"^0.1.1","eslint":"^6.5.1","eslint-config-mrmlnc":"^1.1.0","execa":"^7.1.1","fast-glob":"^3.0.4","fdir":"^6.0.1","glob":"^10.0.0","hereby":"^1.8.1","mocha":"^6.2.1","rimraf":"^5.0.0","sinon":"^7.5.0","snap-shot-it":"^7.9.10","typescript":"^4.9.5"},"dependencies":{"@nodelib/fs.stat":"^2.0.2","@nodelib/fs.walk":"^1.2.3","glob-parent":"^5.1.2","merge2":"^1.3.0","micromatch":"^4.0.4"},"scripts":{"clean":"rimraf out","lint":"eslint \"src/**/*.ts\" --cache","compile":"tsc","test":"mocha \"out/**/*.spec.js\" -s 0","test:e2e":"mocha \"out/**/*.e2e.js\" -s 0","test:e2e:sync":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(sync\\)\"","test:e2e:async":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(async\\)\"","test:e2e:stream":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(stream\\)\"","build":"npm run clean && npm run compile && npm run lint && npm test","watch":"npm run clean && npm run compile -- --sourceMap --watch","bench:async":"npm run bench:product:async && npm run bench:regression:async","bench:stream":"npm run bench:product:stream && npm run bench:regression:stream","bench:sync":"npm run bench:product:sync && npm run bench:regression:sync","bench:product":"npm run bench:product:async && npm run bench:product:sync && npm run bench:product:stream","bench:product:async":"hereby bench:product:async","bench:product:sync":"hereby bench:product:sync","bench:product:stream":"hereby bench:product:stream","bench:regression":"npm run bench:regression:async && npm run bench:regression:sync && npm run bench:regression:stream","bench:regression:async":"hereby bench:regression:async","bench:regression:sync":"hereby bench:regression:sync","bench:regression:stream":"hereby bench:regression:stream"},"_lastModified":"2026-05-29T10:17:51.297Z"}
1
+ {"name":"fast-glob","version":"3.3.2","description":"It's a very fast and efficient glob library for Node.js","license":"MIT","repository":"mrmlnc/fast-glob","author":{"name":"Denis Malinochkin","url":"https://mrmlnc.com"},"engines":{"node":">=8.6.0"},"main":"out/index.js","typings":"out/index.d.ts","files":["out","!out/{benchmark,tests}","!out/**/*.map","!out/**/*.spec.*"],"keywords":["glob","patterns","fast","implementation"],"devDependencies":{"@nodelib/fs.macchiato":"^1.0.1","@types/glob-parent":"^5.1.0","@types/merge2":"^1.1.4","@types/micromatch":"^4.0.0","@types/mocha":"^5.2.7","@types/node":"^14.18.53","@types/picomatch":"^2.3.0","@types/sinon":"^7.5.0","bencho":"^0.1.1","eslint":"^6.5.1","eslint-config-mrmlnc":"^1.1.0","execa":"^7.1.1","fast-glob":"^3.0.4","fdir":"^6.0.1","glob":"^10.0.0","hereby":"^1.8.1","mocha":"^6.2.1","rimraf":"^5.0.0","sinon":"^7.5.0","snap-shot-it":"^7.9.10","typescript":"^4.9.5"},"dependencies":{"@nodelib/fs.stat":"^2.0.2","@nodelib/fs.walk":"^1.2.3","glob-parent":"^5.1.2","merge2":"^1.3.0","micromatch":"^4.0.4"},"scripts":{"clean":"rimraf out","lint":"eslint \"src/**/*.ts\" --cache","compile":"tsc","test":"mocha \"out/**/*.spec.js\" -s 0","test:e2e":"mocha \"out/**/*.e2e.js\" -s 0","test:e2e:sync":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(sync\\)\"","test:e2e:async":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(async\\)\"","test:e2e:stream":"mocha \"out/**/*.e2e.js\" -s 0 --grep \"\\(stream\\)\"","build":"npm run clean && npm run compile && npm run lint && npm test","watch":"npm run clean && npm run compile -- --sourceMap --watch","bench:async":"npm run bench:product:async && npm run bench:regression:async","bench:stream":"npm run bench:product:stream && npm run bench:regression:stream","bench:sync":"npm run bench:product:sync && npm run bench:regression:sync","bench:product":"npm run bench:product:async && npm run bench:product:sync && npm run bench:product:stream","bench:product:async":"hereby bench:product:async","bench:product:sync":"hereby bench:product:sync","bench:product:stream":"hereby bench:product:stream","bench:regression":"npm run bench:regression:async && npm run bench:regression:sync && npm run bench:regression:stream","bench:regression:async":"hereby bench:regression:async","bench:regression:sync":"hereby bench:regression:sync","bench:regression:stream":"hereby bench:regression:stream"},"_lastModified":"2026-06-10T17:43:55.405Z"}
@@ -1 +1 @@
1
- {"public":true,"preferGlobal":false,"name":"flexsearch","version":"0.8.212","description":"Next-Generation full-text search library for Browser and Node.js","homepage":"https://github.com/nextapps-de/flexsearch/","author":"Thomas Wilkerling","copyright":"Nextapps GmbH","license":"Apache-2.0","readme":"README.md","keywords":["fulltext search","elastic search","fastest search","contextual search","document search","fuzzy search","fuzzy match","search engine"],"repository":{"type":"git","url":"https://github.com/nextapps-de/flexsearch.git"},"bugs":{"url":"https://github.com/nextapps-de/flexsearch/issues","email":"info@nextapps.de"},"main":"dist/flexsearch.bundle.min.js","module":"dist/flexsearch.bundle.module.min.mjs","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./dist/flexsearch.bundle.module.min.mjs","require":"./dist/flexsearch.bundle.min.js"},"./lang/*":{"import":"./dist/module/lang/*.js","require":"./dist/lang/*.min.js"},"./db/*":{"import":"./dist/module/db/*/index.js","require":"./dist/db/*/index.cjs"},"./debug":{"import":"./dist/flexsearch.bundle.module.debug.mjs","require":"./dist/flexsearch.bundle.debug.js"}},"browser":{"flexsearch":"./dist/flexsearch.bundle.module.min.mjs","flexsearch/debug":"./dist/flexsearch.bundle.module.debug.mjs","dist/flexsearch.bundle.min.js":"./dist/flexsearch.bundle.min.js","dist/flexsearch.bundle.module.min.js":"./dist/flexsearch.bundle.module.min.mjs","dist/flexsearch.bundle.module.min.mjs":"./dist/flexsearch.bundle.module.min.mjs","worker_threads":false,"path":false,"clickhouse":false,"mongodb":false,"pg-promise":false,"redis":false,"sqlite3":false},"scripts":{"build":"npm run build:bundle && npm run build:bundle:debug && exit 0","build:bundle":"node task/build RELEASE=bundle DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:bundle:debug":"node task/build RELEASE=bundle DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:compact":"node task/build RELEASE=compact DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:compact:debug":"node task/build RELEASE=compact DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:light":"node task/build RELEASE=light DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:light:debug":"node task/build RELEASE=light DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:es5":"node task/build RELEASE=es5 DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:es5:debug":"node task/build RELEASE=es5 DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:lang":"node task/build RELEASE=lang","build:db":"npx rollup tmp/db/indexeddb/index.js --file dist/db/indexeddb/index.cjs --format cjs && npx rollup tmp/db/postgres/index.js --file dist/db/postgres/index.cjs --format cjs && npx rollup tmp/db/sqlite/index.js --file dist/db/sqlite/index.cjs --format cjs && npx rollup tmp/db/mongodb/index.js --file dist/db/mongodb/index.cjs --format cjs && npx rollup tmp/db/redis/index.js --file dist/db/redis/index.cjs --format cjs && npx rollup tmp/db/clickhouse/index.js --file dist/db/clickhouse/index.cjs --format cjs","build:module":"node task/babel && exit 0","build:module:debug":"node task/babel DEBUG=true && exit 0","build:module:min":"node task/babel RELEASE=min && exit 0","build:module:bundle":"node task/build RELEASE=bundle.module DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:module:bundle:debug":"node task/build RELEASE=bundle.module DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:compact":"node task/build RELEASE=compact.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:compact:debug":"node task/build RELEASE=compact.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:light":"node task/build RELEASE=light.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:light:debug":"node task/build RELEASE=light.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:all":"npm run build:bundle && npm run build:bundle:debug && npm run build:light && npm run build:light:debug && npm run build:compact && npm run build:compact:debug && npm run build:module:bundle && npm run build:module:bundle:debug && npm run build:module:light && npm run build:module:light:debug && npm run build:module:compact && npm run build:module:compact:debug && npm run build:es5 && npm run build:es5:debug && npm run build:lang && npm run build:module && npm run build:module:debug && npm run build:module:min && npm run build:db","build:custom":"node task/build RELEASE=custom","test":"mocha test/*.js --exit","test:coverage":"c8 -c test/.c8rc.json mocha test/*.js --exit","test:keystore":"set NODE_OPTIONS=--max-old-space-size=16000 && c8 -c test/.c8rc.json mocha test/keystore.js --exit","test:db":"c8 -c test/.c8rc.json mocha test/persistent.*.js --exit","test:all":"npx mocha test/*.js --exit module/bundle && npx mocha test/*.js --exit module-debug/bundle && npx mocha test/*.js --exit module-min/bundle && npx mocha test/*.js --exit flexsearch.bundle.debug && npx mocha test/*.js --exit flexsearch.bundle.min && npx mocha test/*.js --exit flexsearch.bundle.module.debug && npx mocha test/*.js --exit flexsearch.bundle.module.min && npx mocha test/*.js --exit flexsearch.compact.debug && npx mocha test/*.js --exit flexsearch.compact.min && npx mocha test/*.js --exit flexsearch.compact.module.debug && npx mocha test/*.js --exit flexsearch.compact.module.min && npx mocha test/*.js --exit flexsearch.es5.debug && npx mocha test/*.js --exit flexsearch.es5.min && npx mocha test/*.js --exit flexsearch.light.debug && npx mocha test/*.js --exit flexsearch.light.min && npx mocha test/*.js --exit flexsearch.light.module.debug && npx mocha test/*.js --exit flexsearch.light.module.min","release":"npm version --no-git-tag-version patch && npm run build:all && npm run test:all"},"files":["dist/**","src/**","task/**","index.d.ts","README.md","CHANGELOG.md","LICENSE"],"devDependencies":{"babel-cli":"^6.26.0","babel-plugin-conditional-compile":"^0.0.5","babel-plugin-minify-constant-folding":"^0.5.0","babel-plugin-minify-dead-code-elimination":"^0.5.2","babel-plugin-minify-flip-comparisons":"^0.4.3","babel-plugin-minify-guarded-expressions":"^0.4.4","babel-plugin-minify-infinity":"^0.4.3","babel-plugin-minify-mangle-names":"^0.5.1","babel-plugin-minify-replace":"^0.5.0","babel-plugin-minify-simplify":"^0.5.1","babel-plugin-minify-type-constructors":"^0.4.3","babel-plugin-transform-member-expression-literals":"^6.9.4","babel-plugin-transform-merge-sibling-variables":"^6.9.5","babel-plugin-transform-minify-booleans":"^6.9.4","babel-plugin-transform-property-literals":"^6.9.4","babel-plugin-transform-simplify-comparison-operators":"^6.9.4","babel-plugin-transform-undefined-to-void":"^6.9.4","c8":"^10.1.3","chai":"^5.2.0","clickhouse":"^2.6.0","google-closure-compiler":"^20250520.0.0","mocha":"^11.1.0","mongodb":"^6.13.0","pg-promise":"^11.13.0","redis":"^5.1.0","rollup":"^4.35.0","sqlite3":"^5.1.7"},"funding":[{"type":"github","url":"https://github.com/ts-thomas"},{"type":"paypal","url":"https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW"},{"type":"opencollective","url":"https://opencollective.com/flexsearch"},{"type":"patreon","url":"https://patreon.com/user?u=96245532"},{"type":"liberapay","url":"https://liberapay.com/ts-thomas"}],"_lastModified":"2026-05-29T10:17:51.798Z"}
1
+ {"public":true,"preferGlobal":false,"name":"flexsearch","version":"0.8.212","description":"Next-Generation full-text search library for Browser and Node.js","homepage":"https://github.com/nextapps-de/flexsearch/","author":"Thomas Wilkerling","copyright":"Nextapps GmbH","license":"Apache-2.0","readme":"README.md","keywords":["fulltext search","elastic search","fastest search","contextual search","document search","fuzzy search","fuzzy match","search engine"],"repository":{"type":"git","url":"https://github.com/nextapps-de/flexsearch.git"},"bugs":{"url":"https://github.com/nextapps-de/flexsearch/issues","email":"info@nextapps.de"},"main":"dist/flexsearch.bundle.min.js","module":"dist/flexsearch.bundle.module.min.mjs","types":"./index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./dist/flexsearch.bundle.module.min.mjs","require":"./dist/flexsearch.bundle.min.js"},"./lang/*":{"import":"./dist/module/lang/*.js","require":"./dist/lang/*.min.js"},"./db/*":{"import":"./dist/module/db/*/index.js","require":"./dist/db/*/index.cjs"},"./debug":{"import":"./dist/flexsearch.bundle.module.debug.mjs","require":"./dist/flexsearch.bundle.debug.js"}},"browser":{"flexsearch":"./dist/flexsearch.bundle.module.min.mjs","flexsearch/debug":"./dist/flexsearch.bundle.module.debug.mjs","dist/flexsearch.bundle.min.js":"./dist/flexsearch.bundle.min.js","dist/flexsearch.bundle.module.min.js":"./dist/flexsearch.bundle.module.min.mjs","dist/flexsearch.bundle.module.min.mjs":"./dist/flexsearch.bundle.module.min.mjs","worker_threads":false,"path":false,"clickhouse":false,"mongodb":false,"pg-promise":false,"redis":false,"sqlite3":false},"scripts":{"build":"npm run build:bundle && npm run build:bundle:debug && exit 0","build:bundle":"node task/build RELEASE=bundle DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:bundle:debug":"node task/build RELEASE=bundle DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:compact":"node task/build RELEASE=compact DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:compact:debug":"node task/build RELEASE=compact DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:light":"node task/build RELEASE=light DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:light:debug":"node task/build RELEASE=light DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:es5":"node task/build RELEASE=es5 DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:es5:debug":"node task/build RELEASE=es5 DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=true SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT LANGUAGE_OUT=ECMASCRIPT5_STRICT","build:lang":"node task/build RELEASE=lang","build:db":"npx rollup tmp/db/indexeddb/index.js --file dist/db/indexeddb/index.cjs --format cjs && npx rollup tmp/db/postgres/index.js --file dist/db/postgres/index.cjs --format cjs && npx rollup tmp/db/sqlite/index.js --file dist/db/sqlite/index.cjs --format cjs && npx rollup tmp/db/mongodb/index.js --file dist/db/mongodb/index.cjs --format cjs && npx rollup tmp/db/redis/index.js --file dist/db/redis/index.cjs --format cjs && npx rollup tmp/db/clickhouse/index.js --file dist/db/clickhouse/index.cjs --format cjs","build:module":"node task/babel && exit 0","build:module:debug":"node task/babel DEBUG=true && exit 0","build:module:min":"node task/babel RELEASE=min && exit 0","build:module:bundle":"node task/build RELEASE=bundle.module DEBUG=false PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false","build:module:bundle:debug":"node task/build RELEASE=bundle.module DEBUG=true PROFILER=false SUPPORT_WORKER=true SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=true SUPPORT_RESOLVER=true SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=true SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:compact":"node task/build RELEASE=compact.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:compact:debug":"node task/build RELEASE=compact.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=true SUPPORT_CACHE=true SUPPORT_ASYNC=true SUPPORT_STORE=true SUPPORT_TAGS=true SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=true SUPPORT_DOCUMENT=true POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=true SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:module:light":"node task/build RELEASE=light.module DEBUG=false PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false","build:module:light:debug":"node task/build RELEASE=light.module DEBUG=true PROFILER=false SUPPORT_WORKER=false SUPPORT_ENCODER=true SUPPORT_CHARSET=false SUPPORT_CACHE=false SUPPORT_ASYNC=false SUPPORT_STORE=false SUPPORT_TAGS=false SUPPORT_SUGGESTION=true SUPPORT_SERIALIZE=false SUPPORT_DOCUMENT=false POLYFILL=false SUPPORT_PERSISTENT=false SUPPORT_RESOLVER=false SUPPORT_HIGHLIGHTING=false SUPPORT_KEYSTORE=false SUPPORT_COMPRESSION=false FORMATTING=PRETTY_PRINT","build:all":"npm run build:bundle && npm run build:bundle:debug && npm run build:light && npm run build:light:debug && npm run build:compact && npm run build:compact:debug && npm run build:module:bundle && npm run build:module:bundle:debug && npm run build:module:light && npm run build:module:light:debug && npm run build:module:compact && npm run build:module:compact:debug && npm run build:es5 && npm run build:es5:debug && npm run build:lang && npm run build:module && npm run build:module:debug && npm run build:module:min && npm run build:db","build:custom":"node task/build RELEASE=custom","test":"mocha test/*.js --exit","test:coverage":"c8 -c test/.c8rc.json mocha test/*.js --exit","test:keystore":"set NODE_OPTIONS=--max-old-space-size=16000 && c8 -c test/.c8rc.json mocha test/keystore.js --exit","test:db":"c8 -c test/.c8rc.json mocha test/persistent.*.js --exit","test:all":"npx mocha test/*.js --exit module/bundle && npx mocha test/*.js --exit module-debug/bundle && npx mocha test/*.js --exit module-min/bundle && npx mocha test/*.js --exit flexsearch.bundle.debug && npx mocha test/*.js --exit flexsearch.bundle.min && npx mocha test/*.js --exit flexsearch.bundle.module.debug && npx mocha test/*.js --exit flexsearch.bundle.module.min && npx mocha test/*.js --exit flexsearch.compact.debug && npx mocha test/*.js --exit flexsearch.compact.min && npx mocha test/*.js --exit flexsearch.compact.module.debug && npx mocha test/*.js --exit flexsearch.compact.module.min && npx mocha test/*.js --exit flexsearch.es5.debug && npx mocha test/*.js --exit flexsearch.es5.min && npx mocha test/*.js --exit flexsearch.light.debug && npx mocha test/*.js --exit flexsearch.light.min && npx mocha test/*.js --exit flexsearch.light.module.debug && npx mocha test/*.js --exit flexsearch.light.module.min","release":"npm version --no-git-tag-version patch && npm run build:all && npm run test:all"},"files":["dist/**","src/**","task/**","index.d.ts","README.md","CHANGELOG.md","LICENSE"],"devDependencies":{"babel-cli":"^6.26.0","babel-plugin-conditional-compile":"^0.0.5","babel-plugin-minify-constant-folding":"^0.5.0","babel-plugin-minify-dead-code-elimination":"^0.5.2","babel-plugin-minify-flip-comparisons":"^0.4.3","babel-plugin-minify-guarded-expressions":"^0.4.4","babel-plugin-minify-infinity":"^0.4.3","babel-plugin-minify-mangle-names":"^0.5.1","babel-plugin-minify-replace":"^0.5.0","babel-plugin-minify-simplify":"^0.5.1","babel-plugin-minify-type-constructors":"^0.4.3","babel-plugin-transform-member-expression-literals":"^6.9.4","babel-plugin-transform-merge-sibling-variables":"^6.9.5","babel-plugin-transform-minify-booleans":"^6.9.4","babel-plugin-transform-property-literals":"^6.9.4","babel-plugin-transform-simplify-comparison-operators":"^6.9.4","babel-plugin-transform-undefined-to-void":"^6.9.4","c8":"^10.1.3","chai":"^5.2.0","clickhouse":"^2.6.0","google-closure-compiler":"^20250520.0.0","mocha":"^11.1.0","mongodb":"^6.13.0","pg-promise":"^11.13.0","redis":"^5.1.0","rollup":"^4.35.0","sqlite3":"^5.1.7"},"funding":[{"type":"github","url":"https://github.com/ts-thomas"},{"type":"paypal","url":"https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW"},{"type":"opencollective","url":"https://opencollective.com/flexsearch"},{"type":"patreon","url":"https://patreon.com/user?u=96245532"},{"type":"liberapay","url":"https://liberapay.com/ts-thomas"}],"_lastModified":"2026-06-10T17:43:55.900Z"}
@@ -1 +1 @@
1
- {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-05-29T10:17:50.645Z"}
1
+ {"name":"fs-extra","version":"9.1.0","description":"fs-extra contains methods that aren't included in the vanilla Node.js fs package. Such as recursive mkdir, copy, and remove.","engines":{"node":">=10"},"homepage":"https://github.com/jprichardson/node-fs-extra","repository":{"type":"git","url":"https://github.com/jprichardson/node-fs-extra"},"keywords":["fs","file","file system","copy","directory","extra","mkdirp","mkdir","mkdirs","recursive","json","read","write","extra","delete","remove","touch","create","text","output","move","promise"],"author":"JP Richardson <jprichardson@gmail.com>","license":"MIT","dependencies":{"at-least-node":"^1.0.0","graceful-fs":"^4.2.0","jsonfile":"^6.0.1","universalify":"^2.0.0"},"devDependencies":{"coveralls":"^3.0.0","klaw":"^2.1.1","klaw-sync":"^3.0.2","minimist":"^1.1.1","mocha":"^5.0.5","nyc":"^15.0.0","proxyquire":"^2.0.1","read-dir-files":"^0.1.1","standard":"^14.1.0"},"main":"./lib/index.js","files":["lib/","!lib/**/__tests__/"],"scripts":{"full-ci":"npm run lint && npm run coverage","coverage":"nyc -r lcovonly npm run unit","coveralls":"coveralls < coverage/lcov.info","lint":"standard","test-find":"find ./lib/**/__tests__ -name *.test.js | xargs mocha","test":"npm run lint && npm run unit","unit":"node test.js"},"_lastModified":"2026-06-10T17:43:54.872Z"}
@@ -1 +1 @@
1
- {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-05-29T10:17:43.807Z"}
1
+ {"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-06-10T17:43:48.686Z"}
@@ -1 +1 @@
1
- {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-05-29T10:17:46.887Z"}
1
+ {"name":"openai","version":"6.22.0","description":"The official TypeScript library for the OpenAI API","author":"OpenAI <support@openai.com>","types":"./index.d.ts","main":"./index.js","type":"commonjs","repository":"github:openai/openai-node","license":"Apache-2.0","packageManager":"yarn@1.22.22","files":["**/*"],"private":false,"publishConfig":{"access":"public"},"scripts":{"test":"./scripts/test","build":"./scripts/build","format":"./scripts/format","tsn":"ts-node -r tsconfig-paths/register","lint":"./scripts/lint","fix":"./scripts/format"},"dependencies":{},"bin":{"openai":"bin/cli"},"exports":{".":{"require":{"types":"./index.d.ts","default":"./index.js"},"types":"./index.d.mts","default":"./index.mjs"},"./_vendor/*.mjs":{"default":"./_vendor/*.mjs"},"./_vendor/*.js":{"default":"./_vendor/*.js"},"./_vendor/*":{"import":"./_vendor/*.mjs","require":"./_vendor/*.js"},"./api-promise":{"import":"./api-promise.mjs","require":"./api-promise.js"},"./api-promise.js":{"default":"./api-promise.js"},"./api-promise.mjs":{"default":"./api-promise.mjs"},"./azure":{"import":"./azure.mjs","require":"./azure.js"},"./azure.js":{"default":"./azure.js"},"./azure.mjs":{"default":"./azure.mjs"},"./beta/*.mjs":{"default":"./beta/*.mjs"},"./beta/*.js":{"default":"./beta/*.js"},"./beta/*":{"import":"./beta/*.mjs","require":"./beta/*.js"},"./client":{"import":"./client.mjs","require":"./client.js"},"./client.js":{"default":"./client.js"},"./client.mjs":{"default":"./client.mjs"},"./core/*.mjs":{"default":"./core/*.mjs"},"./core/*.js":{"default":"./core/*.js"},"./core/*":{"import":"./core/*.mjs","require":"./core/*.js"},"./error":{"import":"./error.mjs","require":"./error.js"},"./error.js":{"default":"./error.js"},"./error.mjs":{"default":"./error.mjs"},"./helpers/*.mjs":{"default":"./helpers/*.mjs"},"./helpers/*.js":{"default":"./helpers/*.js"},"./helpers/*":{"import":"./helpers/*.mjs","require":"./helpers/*.js"},"./index":{"import":"./index.mjs","require":"./index.js"},"./index.js":{"default":"./index.js"},"./index.mjs":{"default":"./index.mjs"},"./lib/*.mjs":{"default":"./lib/*.mjs"},"./lib/*.js":{"default":"./lib/*.js"},"./lib/*":{"import":"./lib/*.mjs","require":"./lib/*.js"},"./pagination":{"import":"./pagination.mjs","require":"./pagination.js"},"./pagination.js":{"default":"./pagination.js"},"./pagination.mjs":{"default":"./pagination.mjs"},"./realtime/*.mjs":{"default":"./realtime/*.mjs"},"./realtime/*.js":{"default":"./realtime/*.js"},"./realtime/*":{"import":"./realtime/*.mjs","require":"./realtime/*.js"},"./resource":{"import":"./resource.mjs","require":"./resource.js"},"./resource.js":{"default":"./resource.js"},"./resource.mjs":{"default":"./resource.mjs"},"./resources/*.mjs":{"default":"./resources/*.mjs"},"./resources/*.js":{"default":"./resources/*.js"},"./resources/*":{"import":"./resources/*.mjs","require":"./resources/*.js"},"./resources":{"import":"./resources.mjs","require":"./resources.js"},"./resources.js":{"default":"./resources.js"},"./resources.mjs":{"default":"./resources.mjs"},"./streaming":{"import":"./streaming.mjs","require":"./streaming.js"},"./streaming.js":{"default":"./streaming.js"},"./streaming.mjs":{"default":"./streaming.mjs"},"./uploads":{"import":"./uploads.mjs","require":"./uploads.js"},"./uploads.js":{"default":"./uploads.js"},"./uploads.mjs":{"default":"./uploads.mjs"},"./version":{"import":"./version.mjs","require":"./version.js"},"./version.js":{"default":"./version.js"},"./version.mjs":{"default":"./version.mjs"}},"peerDependencies":{"ws":"^8.18.0","zod":"^3.25 || ^4.0"},"peerDependenciesMeta":{"ws":{"optional":true},"zod":{"optional":true}},"_lastModified":"2026-06-10T17:43:51.893Z"}
@@ -1 +1 @@
1
- {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-05-29T10:17:44.985Z"}
1
+ {"name":"zod","version":"4.3.5","type":"module","license":"MIT","author":"Colin McDonnell <zod@colinhacks.com>","description":"TypeScript-first schema declaration and validation library with static type inference","homepage":"https://zod.dev","llms":"https://zod.dev/llms.txt","llmsFull":"https://zod.dev/llms-full.txt","mcpServer":"https://mcp.inkeep.com/zod/mcp","funding":"https://github.com/sponsors/colinhacks","sideEffects":false,"files":["src","**/*.js","**/*.mjs","**/*.cjs","**/*.d.ts","**/*.d.mts","**/*.d.cts","**/package.json"],"keywords":["typescript","schema","validation","type","inference"],"main":"./index.cjs","types":"./index.d.cts","module":"./index.js","zshy":{"exports":{"./package.json":"./package.json",".":"./src/index.ts","./mini":"./src/mini/index.ts","./locales":"./src/locales/index.ts","./v3":"./src/v3/index.ts","./v4":"./src/v4/index.ts","./v4-mini":"./src/v4-mini/index.ts","./v4/mini":"./src/v4/mini/index.ts","./v4/core":"./src/v4/core/index.ts","./v4/locales":"./src/v4/locales/index.ts","./v4/locales/*":"./src/v4/locales/*"},"conditions":{"@zod/source":"src"}},"exports":{"./package.json":"./package.json",".":{"@zod/source":"./src/index.ts","types":"./index.d.cts","import":"./index.js","require":"./index.cjs"},"./mini":{"@zod/source":"./src/mini/index.ts","types":"./mini/index.d.cts","import":"./mini/index.js","require":"./mini/index.cjs"},"./locales":{"@zod/source":"./src/locales/index.ts","types":"./locales/index.d.cts","import":"./locales/index.js","require":"./locales/index.cjs"},"./v3":{"@zod/source":"./src/v3/index.ts","types":"./v3/index.d.cts","import":"./v3/index.js","require":"./v3/index.cjs"},"./v4":{"@zod/source":"./src/v4/index.ts","types":"./v4/index.d.cts","import":"./v4/index.js","require":"./v4/index.cjs"},"./v4-mini":{"@zod/source":"./src/v4-mini/index.ts","types":"./v4-mini/index.d.cts","import":"./v4-mini/index.js","require":"./v4-mini/index.cjs"},"./v4/mini":{"@zod/source":"./src/v4/mini/index.ts","types":"./v4/mini/index.d.cts","import":"./v4/mini/index.js","require":"./v4/mini/index.cjs"},"./v4/core":{"@zod/source":"./src/v4/core/index.ts","types":"./v4/core/index.d.cts","import":"./v4/core/index.js","require":"./v4/core/index.cjs"},"./v4/locales":{"@zod/source":"./src/v4/locales/index.ts","types":"./v4/locales/index.d.cts","import":"./v4/locales/index.js","require":"./v4/locales/index.cjs"},"./v4/locales/*":{"@zod/source":"./src/v4/locales/*","types":"./v4/locales/*","import":"./v4/locales/*","require":"./v4/locales/*"}},"repository":{"type":"git","url":"git+https://github.com/colinhacks/zod.git"},"bugs":{"url":"https://github.com/colinhacks/zod/issues"},"support":{"backing":{"npm-funding":true}},"scripts":{"clean":"git clean -xdf . -e node_modules","build":"zshy --project tsconfig.build.json","postbuild":"tsx ../../scripts/write-stub-package-jsons.ts && pnpm biome check --write .","test:watch":"pnpm vitest","test":"pnpm vitest run","prepublishOnly":"tsx ../../scripts/check-versions.ts"},"_lastModified":"2026-06-10T17:43:49.948Z"}
@@ -7,11 +7,9 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- var __create = Object.create;
11
10
  var __defProp = Object.defineProperty;
12
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
13
  var __hasOwnProp = Object.prototype.hasOwnProperty;
16
14
  var __export = (target, all) => {
17
15
  for (var name in all)
@@ -25,14 +23,6 @@ var __copyProps = (to, from, except, desc) => {
25
23
  }
26
24
  return to;
27
25
  };
28
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
- // If the importer is in node compatibility mode or this is not an ESM
30
- // file that has been converted to a CommonJS file using a Babel-
31
- // compatible transform (i.e. "__esModule" has not been set), then set
32
- // "default" to the CommonJS "module.exports" for node compatibility.
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
27
  var anthropic_exports = {};
38
28
  __export(anthropic_exports, {
@@ -42,8 +32,8 @@ __export(anthropic_exports, {
42
32
  module.exports = __toCommonJS(anthropic_exports);
43
33
  var import_provider = require("./provider");
44
34
  var import_anthropic = require("@langchain/anthropic");
45
- var import_axios = __toESM(require("axios"));
46
- var import_utils = require("../utils");
35
+ var import_utils = require("@nocobase/utils");
36
+ var import_utils2 = require("../utils");
47
37
  var import_ai_manager = require("../manager/ai-manager");
48
38
  const MAX_TOKENS_PRESET = {
49
39
  "kimi-for-coding": 128 * 1024
@@ -53,7 +43,7 @@ class AnthropicProvider extends import_provider.LLMProvider {
53
43
  return "https://api.anthropic.com";
54
44
  }
55
45
  createModel() {
56
- const { apiKey, baseURL } = this.serviceOptions || {};
46
+ const { apiKey } = this.serviceOptions || {};
57
47
  const sanitizedModelOptions = { ...this.modelOptions || {} };
58
48
  const model = sanitizedModelOptions.model;
59
49
  const hasTemperature = sanitizedModelOptions.temperature !== void 0 && sanitizedModelOptions.temperature !== null;
@@ -81,7 +71,7 @@ class AnthropicProvider extends import_provider.LLMProvider {
81
71
  apiKey,
82
72
  ...sanitizedModelOptions,
83
73
  model,
84
- anthropicApiUrl: baseURL || this.baseURL,
74
+ anthropicApiUrl: this.getResolvedBaseURL(),
85
75
  verbose: false
86
76
  });
87
77
  }
@@ -89,18 +79,22 @@ class AnthropicProvider extends import_provider.LLMProvider {
89
79
  var _a, _b, _c, _d, _e;
90
80
  const options = this.serviceOptions || {};
91
81
  const apiKey = options.apiKey;
92
- let baseURL = options.baseURL || this.baseURL;
93
- if (!baseURL) {
82
+ let url;
83
+ try {
84
+ url = this.buildRequestURL("v1/models");
85
+ } catch (e) {
86
+ return { code: 400, errMsg: e instanceof Error ? e.message : String(e) };
87
+ }
88
+ if (!url) {
94
89
  return { code: 400, errMsg: "baseURL is required" };
95
90
  }
96
91
  if (!apiKey) {
97
92
  return { code: 400, errMsg: "API Key required" };
98
93
  }
99
- if (baseURL && baseURL.endsWith("/")) {
100
- baseURL = baseURL.slice(0, -1);
101
- }
102
94
  try {
103
- const res = await import_axios.default.get(`${baseURL}/v1/models`, {
95
+ const res = await (0, import_utils.serverRequest)({
96
+ method: "GET",
97
+ url,
104
98
  headers: {
105
99
  "x-api-key": apiKey,
106
100
  "anthropic-version": "2023-06-01"
@@ -157,11 +151,11 @@ class AnthropicProvider extends import_provider.LLMProvider {
157
151
  if (chunk && Array.isArray(chunk)) {
158
152
  const textBlock = chunk.find((block) => block.type === "text");
159
153
  if (textBlock) {
160
- return (0, import_utils.stripToolCallTags)(textBlock.text);
154
+ return (0, import_utils2.stripToolCallTags)(textBlock.text);
161
155
  }
162
156
  return null;
163
157
  }
164
- return (0, import_utils.stripToolCallTags)(chunk);
158
+ return (0, import_utils2.stripToolCallTags)(chunk);
165
159
  }
166
160
  builtInTools() {
167
161
  var _a, _b;
@@ -193,7 +187,7 @@ class AnthropicProvider extends import_provider.LLMProvider {
193
187
  async convertToContent(ctx, attachment) {
194
188
  const fileManager = this.app.pm.get("file-manager");
195
189
  const url = await fileManager.getFileURL(attachment);
196
- const data = await (0, import_utils.encodeFile)(ctx, decodeURIComponent(url));
190
+ const data = await (0, import_utils2.encodeFile)(ctx, decodeURIComponent(url));
197
191
  if (attachment.mimetype.startsWith("image/")) {
198
192
  return {
199
193
  placement: "contentBlocks",
@@ -53,7 +53,7 @@ class DashscopeProvider extends import_provider.LLMProvider {
53
53
  }
54
54
  createModel() {
55
55
  var _a, _b;
56
- const { baseURL, apiKey } = this.serviceOptions || {};
56
+ const { apiKey } = this.serviceOptions || {};
57
57
  const { responseFormat, structuredOutput } = this.modelOptions || {};
58
58
  const { schema } = structuredOutput || {};
59
59
  const modelKwargs = {};
@@ -78,7 +78,7 @@ class DashscopeProvider extends import_provider.LLMProvider {
78
78
  ...this.modelOptions,
79
79
  modelKwargs,
80
80
  configuration: {
81
- baseURL: baseURL || this.baseURL
81
+ baseURL: this.getResolvedBaseURL()
82
82
  },
83
83
  verbose: false
84
84
  });
@@ -134,7 +134,7 @@ class DashscopeEmbeddingProvider extends import_provider.EmbeddingProvider {
134
134
  createEmbedding() {
135
135
  return new import_openai.OpenAIEmbeddings({
136
136
  configuration: {
137
- baseURL: this.baseURL ?? "",
137
+ baseURL: this.baseURL,
138
138
  apiKey: this.apiKey
139
139
  },
140
140
  model: this.model
@@ -76,7 +76,7 @@ class DeepSeekProvider extends import_provider.LLMProvider {
76
76
  return "https://api.deepseek.com";
77
77
  }
78
78
  createModel() {
79
- const { baseURL, apiKey } = this.serviceOptions || {};
79
+ const { apiKey } = this.serviceOptions || {};
80
80
  const { responseFormat } = this.modelOptions || {};
81
81
  const modelKwargs = {};
82
82
  if (responseFormat) {
@@ -89,7 +89,7 @@ class DeepSeekProvider extends import_provider.LLMProvider {
89
89
  ...this.modelOptions,
90
90
  modelKwargs,
91
91
  configuration: {
92
- baseURL: baseURL || this.baseURL
92
+ baseURL: this.getResolvedBaseURL()
93
93
  },
94
94
  verbose: false
95
95
  });
@@ -7,11 +7,9 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- var __create = Object.create;
11
10
  var __defProp = Object.defineProperty;
12
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
13
  var __hasOwnProp = Object.prototype.hasOwnProperty;
16
14
  var __export = (target, all) => {
17
15
  for (var name in all)
@@ -25,14 +23,6 @@ var __copyProps = (to, from, except, desc) => {
25
23
  }
26
24
  return to;
27
25
  };
28
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
- // If the importer is in node compatibility mode or this is not an ESM
30
- // file that has been converted to a CommonJS file using a Babel-
31
- // compatible transform (i.e. "__esModule" has not been set), then set
32
- // "default" to the CommonJS "module.exports" for node compatibility.
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
27
  var google_genai_exports = {};
38
28
  __export(google_genai_exports, {
@@ -43,8 +33,8 @@ __export(google_genai_exports, {
43
33
  module.exports = __toCommonJS(google_genai_exports);
44
34
  var import_google_genai = require("@langchain/google-genai");
45
35
  var import_provider = require("./provider");
46
- var import_axios = __toESM(require("axios"));
47
- var import_utils = require("../utils");
36
+ var import_utils = require("@nocobase/utils");
37
+ var import_utils2 = require("../utils");
48
38
  var import_ai_manager = require("../manager/ai-manager");
49
39
  const GOOGLE_GEN_AI_URL = "https://generativelanguage.googleapis.com";
50
40
  class GoogleGenAIProvider extends import_provider.LLMProvider {
@@ -52,32 +42,37 @@ class GoogleGenAIProvider extends import_provider.LLMProvider {
52
42
  return GOOGLE_GEN_AI_URL;
53
43
  }
54
44
  createModel() {
55
- const { apiKey, baseURL } = this.serviceOptions || {};
45
+ const { apiKey } = this.serviceOptions || {};
56
46
  const { model, responseFormat } = this.modelOptions || {};
57
47
  return new import_google_genai.ChatGoogleGenerativeAI({
58
48
  apiKey,
59
49
  ...this.modelOptions,
60
50
  model,
61
51
  json: responseFormat === "json",
62
- baseUrl: baseURL ?? this.baseURL
52
+ baseUrl: this.getResolvedBaseURL()
63
53
  });
64
54
  }
65
55
  async listModels() {
66
56
  var _a, _b;
67
57
  const options = this.serviceOptions || {};
68
58
  const apiKey = options.apiKey;
69
- let baseURL = options.baseURL || this.baseURL;
70
- if (!baseURL) {
59
+ let url;
60
+ try {
61
+ url = this.buildRequestURL(`v1beta/models?key=${encodeURIComponent(apiKey ?? "")}`);
62
+ } catch (e) {
63
+ return { code: 400, errMsg: e instanceof Error ? e.message : String(e) };
64
+ }
65
+ if (!url) {
71
66
  return { code: 400, errMsg: "baseURL is required" };
72
67
  }
73
68
  if (!apiKey) {
74
69
  return { code: 400, errMsg: "API Key required" };
75
70
  }
76
- if (baseURL && baseURL.endsWith("/")) {
77
- baseURL = baseURL.slice(0, -1);
78
- }
79
71
  try {
80
- const res = await import_axios.default.get(`${baseURL}/v1beta/models?key=${apiKey}`);
72
+ const res = await (0, import_utils.serverRequest)({
73
+ method: "GET",
74
+ url
75
+ });
81
76
  return {
82
77
  models: (_a = res == null ? void 0 : res.data) == null ? void 0 : _a.models.map((model) => ({
83
78
  id: model.name
@@ -127,7 +122,7 @@ class GoogleGenAIProvider extends import_provider.LLMProvider {
127
122
  const fileManager = this.app.pm.get("file-manager");
128
123
  const url = await fileManager.getFileURL(attachment);
129
124
  if ((_a = attachment.mimetype) == null ? void 0 : _a.startsWith("image/")) {
130
- const data = await (0, import_utils.encodeFile)(ctx, decodeURIComponent(url));
125
+ const data = await (0, import_utils2.encodeFile)(ctx, decodeURIComponent(url));
131
126
  return {
132
127
  placement: "contentBlocks",
133
128
  content: {
@@ -138,7 +133,7 @@ class GoogleGenAIProvider extends import_provider.LLMProvider {
138
133
  }
139
134
  };
140
135
  } else {
141
- const data = await (0, import_utils.encodeFile)(ctx, decodeURIComponent(url));
136
+ const data = await (0, import_utils2.encodeFile)(ctx, decodeURIComponent(url));
142
137
  return {
143
138
  placement: "contentBlocks",
144
139
  content: {
@@ -52,7 +52,7 @@ class KimiProvider extends import_provider.LLMProvider {
52
52
  return "https://api.moonshot.cn/v1";
53
53
  }
54
54
  createModel() {
55
- const { baseURL, apiKey } = this.serviceOptions || {};
55
+ const { apiKey } = this.serviceOptions || {};
56
56
  const { responseFormat, structuredOutput } = this.modelOptions || {};
57
57
  const { schema } = structuredOutput || {};
58
58
  const responseFormatOptions = {
@@ -68,7 +68,7 @@ class KimiProvider extends import_provider.LLMProvider {
68
68
  response_format: responseFormatOptions
69
69
  },
70
70
  configuration: {
71
- baseURL: baseURL || this.baseURL
71
+ baseURL: this.getResolvedBaseURL()
72
72
  }
73
73
  });
74
74
  }
@@ -105,11 +105,11 @@ class KimiProvider extends import_provider.LLMProvider {
105
105
  return ((_a = attachment.mimetype) == null ? void 0 : _a.startsWith("image/")) ?? false;
106
106
  }
107
107
  get documentLoader() {
108
- var _a, _b;
108
+ var _a;
109
109
  if (!this._documentLoader) {
110
110
  const loader = new import_document_loader2.KimiDocumentLoader(this.aiPlugin.fileManager, {
111
111
  apiKey: (_a = this.serviceOptions) == null ? void 0 : _a.apiKey,
112
- baseURL: ((_b = this.serviceOptions) == null ? void 0 : _b.baseURL) || this.baseURL
112
+ baseURL: this.getResolvedBaseURL()
113
113
  });
114
114
  this._documentLoader = new import_document_loader.CachedDocumentLoader(this.aiPlugin, {
115
115
  loader,
@@ -51,7 +51,7 @@ class MiMoProvider extends import_provider.LLMProvider {
51
51
  return "https://api.xiaomimimo.com/v1";
52
52
  }
53
53
  createModel() {
54
- const { baseURL, apiKey } = this.serviceOptions || {};
54
+ const { apiKey } = this.serviceOptions || {};
55
55
  const { responseFormat, structuredOutput } = this.modelOptions || {};
56
56
  const { schema } = structuredOutput || {};
57
57
  const responseFormatOptions = {
@@ -67,7 +67,7 @@ class MiMoProvider extends import_provider.LLMProvider {
67
67
  response_format: responseFormatOptions
68
68
  },
69
69
  configuration: {
70
- baseURL: baseURL || this.baseURL
70
+ baseURL: this.getResolvedBaseURL()
71
71
  },
72
72
  verbose: true
73
73
  });
@@ -7,11 +7,9 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- var __create = Object.create;
11
10
  var __defProp = Object.defineProperty;
12
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
12
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
13
  var __hasOwnProp = Object.prototype.hasOwnProperty;
16
14
  var __export = (target, all) => {
17
15
  for (var name in all)
@@ -25,14 +23,6 @@ var __copyProps = (to, from, except, desc) => {
25
23
  }
26
24
  return to;
27
25
  };
28
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
- // If the importer is in node compatibility mode or this is not an ESM
30
- // file that has been converted to a CommonJS file using a Babel-
31
- // compatible transform (i.e. "__esModule" has not been set), then set
32
- // "default" to the CommonJS "module.exports" for node compatibility.
33
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
34
- mod
35
- ));
36
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
37
27
  var ollama_exports = {};
38
28
  __export(ollama_exports, {
@@ -44,17 +34,16 @@ module.exports = __toCommonJS(ollama_exports);
44
34
  var import_ollama = require("@langchain/ollama");
45
35
  var import_provider = require("./provider");
46
36
  var import_ai_manager = require("../manager/ai-manager");
47
- var import_axios = __toESM(require("axios"));
37
+ var import_utils = require("@nocobase/utils");
48
38
  const OLLAMA_DEFAULT_URL = "http://localhost:11434";
49
39
  class OllamaProvider extends import_provider.LLMProvider {
50
40
  get baseURL() {
51
41
  return OLLAMA_DEFAULT_URL;
52
42
  }
53
43
  createModel() {
54
- const { baseURL } = this.serviceOptions || {};
55
44
  const { model, temperature, topP, topK, numPredict, ...rest } = this.modelOptions || {};
56
45
  return new import_ollama.ChatOllama({
57
- baseUrl: baseURL || this.baseURL,
46
+ baseUrl: this.getResolvedBaseURL(),
58
47
  model: model || "mistral-nemo:12b",
59
48
  temperature,
60
49
  topP,
@@ -68,16 +57,20 @@ class OllamaProvider extends import_provider.LLMProvider {
68
57
  }
69
58
  async listModels() {
70
59
  var _a;
71
- const options = this.serviceOptions || {};
72
- let baseURL = options.baseURL || this.baseURL;
73
- if (!baseURL) {
74
- return { code: 400, errMsg: "baseURL is required" };
60
+ let url;
61
+ try {
62
+ url = this.buildRequestURL("api/tags");
63
+ } catch (e) {
64
+ return { code: 400, errMsg: e instanceof Error ? e.message : String(e) };
75
65
  }
76
- if (baseURL && baseURL.endsWith("/")) {
77
- baseURL = baseURL.slice(0, -1);
66
+ if (!url) {
67
+ return { code: 400, errMsg: "baseURL is required" };
78
68
  }
79
69
  try {
80
- const res = await import_axios.default.get(`${baseURL}/api/tags`);
70
+ const res = await (0, import_utils.serverRequest)({
71
+ method: "GET",
72
+ url
73
+ });
81
74
  const models = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.models) || [];
82
75
  return {
83
76
  models: models.map((model) => ({
@@ -87,7 +80,7 @@ class OllamaProvider extends import_provider.LLMProvider {
87
80
  } catch (e) {
88
81
  return {
89
82
  code: 500,
90
- errMsg: `Failed to fetch Ollama models: ${e.message}. Make sure Ollama is running at ${baseURL}`
83
+ errMsg: `Failed to fetch Ollama models: ${e.message}. Make sure Ollama is running at ${this.getResolvedBaseURL()}`
91
84
  };
92
85
  }
93
86
  }
@@ -36,7 +36,7 @@ class OpenAICompletionsProvider extends import_provider.LLMProvider {
36
36
  return "https://api.openai.com/v1";
37
37
  }
38
38
  createModel() {
39
- const { baseURL, apiKey } = this.serviceOptions || {};
39
+ const { apiKey } = this.serviceOptions || {};
40
40
  const { responseFormat, structuredOutput } = this.modelOptions || {};
41
41
  const { schema } = structuredOutput || {};
42
42
  const responseFormatOptions = {
@@ -52,7 +52,7 @@ class OpenAICompletionsProvider extends import_provider.LLMProvider {
52
52
  response_format: responseFormatOptions
53
53
  },
54
54
  configuration: {
55
- baseURL: baseURL || this.baseURL
55
+ baseURL: this.getResolvedBaseURL()
56
56
  }
57
57
  });
58
58
  }
@@ -38,7 +38,7 @@ class OpenAiEmbeddingProvider extends import_provider.EmbeddingProvider {
38
38
  createEmbedding() {
39
39
  return new import_openai.OpenAIEmbeddings({
40
40
  configuration: {
41
- baseURL: this.baseURL ?? "",
41
+ baseURL: this.baseURL,
42
42
  apiKey: this.apiKey
43
43
  },
44
44
  model: this.model
@@ -37,7 +37,7 @@ class OpenAIResponsesProvider extends import_provider.LLMProvider {
37
37
  return "https://api.openai.com/v1";
38
38
  }
39
39
  createModel() {
40
- const { baseURL, apiKey } = this.serviceOptions || {};
40
+ const { apiKey } = this.serviceOptions || {};
41
41
  const { responseFormat, structuredOutput } = this.modelOptions || {};
42
42
  const { schema } = structuredOutput || {};
43
43
  const responseFormatOptions = {
@@ -56,7 +56,7 @@ class OpenAIResponsesProvider extends import_provider.LLMProvider {
56
56
  }
57
57
  },
58
58
  configuration: {
59
- baseURL: baseURL || this.baseURL
59
+ baseURL: this.getResolvedBaseURL()
60
60
  },
61
61
  verbose: false,
62
62
  useResponsesApi: true
@@ -76,6 +76,8 @@ export declare abstract class LLMProvider {
76
76
  parseResponseMetadata(output: LLMResult): any;
77
77
  parseResponseError(err: any): any;
78
78
  protected get documentLoader(): CachedDocumentLoader;
79
+ protected getResolvedBaseURL(): string;
80
+ protected buildRequestURL(pathname: string): string;
79
81
  protected get aiPlugin(): PluginAIServer;
80
82
  }
81
83
  export interface EmbeddingProviderOptions {
@@ -92,7 +94,7 @@ export declare abstract class EmbeddingProvider {
92
94
  abstract createEmbedding(): EmbeddingsInterface;
93
95
  protected abstract getDefaultUrl(): string;
94
96
  protected get apiKey(): any;
95
- protected get baseURL(): any;
97
+ protected get baseURL(): string;
96
98
  protected get model(): any;
97
99
  }
98
100
  type FromType = 'ToolsEntry';
@@ -41,12 +41,26 @@ __export(provider_exports, {
41
41
  ToolDefinition: () => ToolDefinition
42
42
  });
43
43
  module.exports = __toCommonJS(provider_exports);
44
- var import_axios = __toESM(require("axios"));
45
- var import_utils = require("../utils");
44
+ var import_utils = require("@nocobase/utils");
45
+ var import_utils2 = require("../utils");
46
46
  var import_langchain = require("langchain");
47
47
  var import_stream = require("@langchain/core/utils/stream");
48
48
  var import_document_loader = require("../document-loader");
49
49
  var import_node_path = __toESM(require("node:path"));
50
+ function normalizeBaseURL(baseURL) {
51
+ (0, import_utils.checkUrlAgainstWhitelist)(baseURL);
52
+ return new URL(baseURL).toString().replace(/\/$/, "");
53
+ }
54
+ function resolveServiceOptions(serviceOptions, app) {
55
+ const rendered = app.environment.renderJsonTemplate(serviceOptions ?? {});
56
+ if ((rendered == null ? void 0 : rendered.baseURL) != null) {
57
+ if (typeof rendered.baseURL !== "string") {
58
+ throw new Error("baseURL must be a string");
59
+ }
60
+ rendered.baseURL = normalizeBaseURL(rendered.baseURL);
61
+ }
62
+ return rendered;
63
+ }
50
64
  class LLMProvider {
51
65
  app;
52
66
  serviceOptions;
@@ -58,7 +72,7 @@ class LLMProvider {
58
72
  constructor(opts) {
59
73
  const { app, serviceOptions, modelOptions } = opts;
60
74
  this.app = app;
61
- this.serviceOptions = app.environment.renderJsonTemplate(serviceOptions);
75
+ this.serviceOptions = resolveServiceOptions(serviceOptions, app);
62
76
  if (modelOptions) {
63
77
  this.modelOptions = modelOptions;
64
78
  this.chatModel = this.createModel();
@@ -97,18 +111,19 @@ class LLMProvider {
97
111
  var _a, _b, _c, _d;
98
112
  const options = this.serviceOptions || {};
99
113
  const apiKey = options.apiKey;
100
- let baseURL = options.baseURL || this.baseURL;
101
- if (!baseURL) {
102
- return { code: 400, errMsg: "baseURL is required" };
114
+ let url;
115
+ try {
116
+ url = this.buildRequestURL("models");
117
+ } catch (e) {
118
+ return { code: 400, errMsg: e instanceof Error ? e.message : String(e) };
103
119
  }
104
120
  if (!apiKey) {
105
121
  return { code: 400, errMsg: "API Key required" };
106
122
  }
107
- if (baseURL && baseURL.endsWith("/")) {
108
- baseURL = baseURL.slice(0, -1);
109
- }
110
123
  try {
111
- const res = await import_axios.default.get(`${baseURL}/models`, {
124
+ const res = await (0, import_utils.serverRequest)({
125
+ method: "GET",
126
+ url,
112
127
  headers: {
113
128
  Authorization: `Bearer ${apiKey}`
114
129
  }
@@ -122,10 +137,10 @@ class LLMProvider {
122
137
  }
123
138
  }
124
139
  parseResponseMessage(message) {
125
- return (0, import_utils.parseResponseMessage)(message);
140
+ return (0, import_utils2.parseResponseMessage)(message);
126
141
  }
127
142
  parseResponseChunk(chunk) {
128
- return (0, import_utils.stripToolCallTags)(chunk);
143
+ return (0, import_utils2.stripToolCallTags)(chunk);
129
144
  }
130
145
  async parseAttachment(ctx, attachment) {
131
146
  if (this.isApiSupportedAttachment(attachment)) {
@@ -160,7 +175,7 @@ class LLMProvider {
160
175
  async convertToContent(ctx, attachment) {
161
176
  const fileManager = this.app.pm.get("file-manager");
162
177
  const url = await fileManager.getFileURL(attachment);
163
- const data = await (0, import_utils.encodeFile)(ctx, decodeURIComponent(url));
178
+ const data = await (0, import_utils2.encodeFile)(ctx, decodeURIComponent(url));
164
179
  if (attachment.mimetype.startsWith("image/")) {
165
180
  return {
166
181
  placement: "contentBlocks",
@@ -286,6 +301,22 @@ ${parsed.text}
286
301
  get documentLoader() {
287
302
  return this.aiPlugin.documentLoaders.cached;
288
303
  }
304
+ getResolvedBaseURL() {
305
+ var _a;
306
+ const baseURL = ((_a = this.serviceOptions) == null ? void 0 : _a.baseURL) ?? this.baseURL;
307
+ if (!baseURL) {
308
+ throw new Error("baseURL is required");
309
+ }
310
+ if (typeof baseURL !== "string") {
311
+ throw new Error("baseURL must be a string");
312
+ }
313
+ return normalizeBaseURL(baseURL);
314
+ }
315
+ buildRequestURL(pathname) {
316
+ const url = new URL(pathname.replace(/^\/+/, ""), `${this.getResolvedBaseURL()}/`).toString();
317
+ (0, import_utils.checkUrlAgainstWhitelist)(url);
318
+ return url;
319
+ }
289
320
  get aiPlugin() {
290
321
  return this.app.pm.get("ai");
291
322
  }
@@ -295,7 +326,7 @@ class EmbeddingProvider {
295
326
  this.opts = opts;
296
327
  const { app, serviceOptions, modelOptions } = this.opts;
297
328
  this.app = app;
298
- this.serviceOptions = app.environment.renderJsonTemplate(serviceOptions ?? {});
329
+ this.serviceOptions = resolveServiceOptions(serviceOptions, app);
299
330
  this.modelOptions = modelOptions;
300
331
  }
301
332
  app;
@@ -314,7 +345,10 @@ class EmbeddingProvider {
314
345
  if (!baseURL) {
315
346
  throw new Error("baseURL is required");
316
347
  }
317
- return baseURL;
348
+ if (typeof baseURL !== "string") {
349
+ throw new Error("baseURL must be a string");
350
+ }
351
+ return normalizeBaseURL(baseURL);
318
352
  }
319
353
  get model() {
320
354
  const { model } = this.modelOptions ?? {};
@@ -38,7 +38,7 @@ class XAIProvider extends import_provider.LLMProvider {
38
38
  return "https://api.x.ai/v1";
39
39
  }
40
40
  createModel() {
41
- const { baseURL, apiKey } = this.serviceOptions || {};
41
+ const { apiKey } = this.serviceOptions || {};
42
42
  const { responseFormat, structuredOutput, ...restModelOptions } = this.modelOptions || {};
43
43
  const { schema } = structuredOutput || {};
44
44
  const responseFormatOptions = {
@@ -50,7 +50,7 @@ class XAIProvider extends import_provider.LLMProvider {
50
50
  return new import_xai.ChatXAI({
51
51
  apiKey,
52
52
  ...restModelOptions,
53
- baseURL: baseURL || this.baseURL,
53
+ baseURL: this.getResolvedBaseURL(),
54
54
  modelKwargs: {
55
55
  response_format: responseFormatOptions
56
56
  }
@@ -39,8 +39,11 @@ __export(ai_exports, {
39
39
  default: () => ai_default
40
40
  });
41
41
  module.exports = __toCommonJS(ai_exports);
42
+ var import_package = require("../../../package.json");
42
43
  var import_lodash = __toESM(require("lodash"));
43
44
  var import_recommended_models = require("../../common/recommended-models");
45
+ const getModelsListFailedMessage = "Get models list failed, you can enter a model name manually.";
46
+ const testFlightFailedMessage = "LLM service test failed. Please check the service configuration.";
44
47
  const aiResource = {
45
48
  name: "ai",
46
49
  actions: {
@@ -99,10 +102,7 @@ const aiResource = {
99
102
  const res = await provider.listModels();
100
103
  if (res.errMsg) {
101
104
  ctx.log.error(res.errMsg);
102
- ctx.throw(
103
- res.code || 500,
104
- `${ctx.t("Get models list failed, you can enter a model name manually.")} ${res.errMsg}`
105
- );
105
+ ctx.throw(res.code || 500, ctx.t(getModelsListFailedMessage, { ns: import_package.name }));
106
106
  }
107
107
  ctx.body = res.models || [];
108
108
  }
@@ -123,10 +123,7 @@ const aiResource = {
123
123
  const res = await providerClient.listModels();
124
124
  if (res.errMsg) {
125
125
  ctx.log.error(res.errMsg);
126
- ctx.throw(
127
- res.code || 500,
128
- `${ctx.t("Get models list failed, you can enter a model name manually.")} ${res.errMsg}`
129
- );
126
+ ctx.throw(res.code || 500, ctx.t(getModelsListFailedMessage, { ns: import_package.name }));
130
127
  }
131
128
  const models = res.models || [];
132
129
  if (model) {
@@ -152,7 +149,12 @@ const aiResource = {
152
149
  responseFormat: "text"
153
150
  }
154
151
  });
155
- ctx.body = await providerClient.testFlight();
152
+ const result = await providerClient.testFlight();
153
+ if (result.status === "error") {
154
+ ctx.log.error(result.message);
155
+ result.message = ctx.t(testFlightFailedMessage, { ns: import_package.name });
156
+ }
157
+ ctx.body = result;
156
158
  return next();
157
159
  },
158
160
  listAllEnabledModels: async (ctx, next) => {
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Create AI employees with diverse skills to collaborate with humans, build systems, and handle business operations.",
7
7
  "description.ru-RU": "Поддержка интеграции с AI-сервисами: предоставляются AI-узлы для рабочих процессов, расширяя возможности бизнес-обработки.",
8
8
  "description.zh-CN": "创建各种技能的 AI 员工,与人类协同,搭建系统,处理业务。",
9
- "version": "2.0.60",
9
+ "version": "2.0.62",
10
10
  "license": "Apache-2.0",
11
11
  "main": "dist/server/index.js",
12
12
  "homepage": "https://docs.nocobase.com/handbook/action-ai",
@@ -61,5 +61,5 @@
61
61
  "keywords": [
62
62
  "AI"
63
63
  ],
64
- "gitHead": "c9bdc985d79d20e88c93cb2eee9bbf24a382ee08"
64
+ "gitHead": "b21b0a5111d188ba495eb579fdae674c5680fff2"
65
65
  }