Skip to content

Commit a4905df

Browse files
dnplkndllclaude
andcommitted
feat: add OpenSearch and Typesense fulltext adapters
Add two new search backend adapters implementing FullTextAdapter: - @hcengineering/opensearch: Drop-in replacement using OpenSearch 2.x client. Removes deprecated type: _doc params, uses osErr error types. Fixes inherited bugs: updateMany error ID matching, remove() array mutation. - @hcengineering/typesense: Native Typesense adapter with proper query translation. Uses filter_by for workspace/class scoping, optional filter clauses for soft boosts (matching ES should semantics), read-modify-write for updateByQuery, and batch import for updateMany. Binary doc.data is skipped (relies on Rekoni extraction). Both adapters follow the same factory pattern as the existing elastic adapter and can be selected at runtime. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Don Kendall <kendall@donkendall.com>
1 parent f9cb970 commit a4905df

11 files changed

Lines changed: 1709 additions & 0 deletions

File tree

common/config/rush/pnpm-lock.yaml

Lines changed: 201 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module.exports = {
2+
extends: ['./node_modules/@hcengineering/platform-rig/profiles/default/eslint.config.json'],
3+
parserOptions: {
4+
tsconfigRootDir: __dirname,
5+
project: './tsconfig.json'
6+
}
7+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
{
2+
"name": "@hcengineering/opensearch",
3+
"version": "0.7.17",
4+
"main": "lib/index.js",
5+
"svelte": "src/index.ts",
6+
"types": "types/index.d.ts",
7+
"files": [
8+
"lib/**/*",
9+
"types/**/*",
10+
"src/**/*",
11+
"!lib/**/*.test.*",
12+
"!lib/**/*.spec.*",
13+
"!lib/__tests__/**/*",
14+
"!lib/__test__/**/*",
15+
"!lib/tests/**/*",
16+
"!types/**/*.test.*",
17+
"!types/**/*.spec.*",
18+
"!types/__tests__/**/*",
19+
"!types/__test__/**/*",
20+
"!types/tests/**/*",
21+
"!src/**/*.test.*",
22+
"!src/**/*.spec.*",
23+
"!src/__tests__/**/*",
24+
"!src/__test__/**/*",
25+
"!src/tests/**/*"
26+
],
27+
"author": "Anticrm Platform Contributors",
28+
"license": "EPL-2.0",
29+
"scripts": {
30+
"init": "ts-node src/__init.ts",
31+
"build": "compile",
32+
"build:watch": "compile",
33+
"format": "format src",
34+
"test": "jest --passWithNoTests --silent --forceExit",
35+
"_phase:build": "compile transpile src",
36+
"_phase:test": "jest --passWithNoTests --silent --forceExit",
37+
"_phase:format": "format src",
38+
"_phase:validate": "compile validate"
39+
},
40+
"devDependencies": {
41+
"@hcengineering/platform-rig": "workspace:^0.7.19",
42+
"@typescript-eslint/eslint-plugin": "^6.21.0",
43+
"eslint-plugin-import": "^2.26.0",
44+
"eslint-plugin-promise": "^6.1.1",
45+
"eslint-plugin-n": "^15.4.0",
46+
"eslint": "^8.54.0",
47+
"ts-node": "^10.9.2",
48+
"@typescript-eslint/parser": "^6.21.0",
49+
"eslint-config-standard-with-typescript": "^40.0.0",
50+
"prettier": "^3.6.2",
51+
"typescript": "^5.9.3",
52+
"jest": "^29.7.0",
53+
"ts-jest": "^29.1.1",
54+
"@types/jest": "^29.5.5",
55+
"eslint-plugin-svelte": "^2.35.1"
56+
},
57+
"dependencies": {
58+
"@hcengineering/core": "workspace:^0.7.24",
59+
"@hcengineering/platform": "workspace:^0.7.19",
60+
"@hcengineering/server-core": "workspace:^0.7.18",
61+
"@opensearch-project/opensearch": "^2.12.0",
62+
"@hcengineering/analytics": "workspace:^0.7.17"
63+
},
64+
"repository": {
65+
"type": "git",
66+
"url": "git+https://github.com/hcengineering/huly.server.git"
67+
},
68+
"publishConfig": {
69+
"access": "public"
70+
}
71+
}

0 commit comments

Comments
 (0)