@rubixstudios/payload-typesense 1.0.0

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 (60) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +182 -0
  3. package/dist/components/HeadlessSearchInput.d.ts +86 -0
  4. package/dist/components/HeadlessSearchInput.d.ts.map +1 -0
  5. package/dist/components/HeadlessSearchInput.js +602 -0
  6. package/dist/components/ThemeProvider.d.ts +10 -0
  7. package/dist/components/ThemeProvider.d.ts.map +1 -0
  8. package/dist/components/ThemeProvider.js +17 -0
  9. package/dist/components/index.d.ts +6 -0
  10. package/dist/components/index.d.ts.map +1 -0
  11. package/dist/components/index.js +3 -0
  12. package/dist/components/themes/hooks.d.ts +52 -0
  13. package/dist/components/themes/hooks.d.ts.map +1 -0
  14. package/dist/components/themes/hooks.js +177 -0
  15. package/dist/components/themes/index.d.ts +5 -0
  16. package/dist/components/themes/index.d.ts.map +1 -0
  17. package/dist/components/themes/index.js +4 -0
  18. package/dist/components/themes/themes.d.ts +6 -0
  19. package/dist/components/themes/themes.d.ts.map +1 -0
  20. package/dist/components/themes/themes.js +156 -0
  21. package/dist/components/themes/types.d.ts +147 -0
  22. package/dist/components/themes/types.d.ts.map +1 -0
  23. package/dist/components/themes/types.js +1 -0
  24. package/dist/components/themes/utils.d.ts +30 -0
  25. package/dist/components/themes/utils.d.ts.map +1 -0
  26. package/dist/components/themes/utils.js +397 -0
  27. package/dist/endpoints/customEndpointHandler.d.ts +3 -0
  28. package/dist/endpoints/customEndpointHandler.d.ts.map +1 -0
  29. package/dist/endpoints/customEndpointHandler.js +5 -0
  30. package/dist/endpoints/health.d.ts +12 -0
  31. package/dist/endpoints/health.d.ts.map +1 -0
  32. package/dist/endpoints/health.js +174 -0
  33. package/dist/endpoints/search.d.ts +13 -0
  34. package/dist/endpoints/search.d.ts.map +1 -0
  35. package/dist/endpoints/search.js +375 -0
  36. package/dist/index.d.ts +39 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +148 -0
  39. package/dist/lib/cache.d.ts +41 -0
  40. package/dist/lib/cache.d.ts.map +1 -0
  41. package/dist/lib/cache.js +96 -0
  42. package/dist/lib/config-validation.d.ts +75 -0
  43. package/dist/lib/config-validation.d.ts.map +1 -0
  44. package/dist/lib/config-validation.js +174 -0
  45. package/dist/lib/hooks.d.ts +4 -0
  46. package/dist/lib/hooks.d.ts.map +1 -0
  47. package/dist/lib/hooks.js +54 -0
  48. package/dist/lib/initialization.d.ts +5 -0
  49. package/dist/lib/initialization.d.ts.map +1 -0
  50. package/dist/lib/initialization.js +102 -0
  51. package/dist/lib/schema-mapper.d.ts +14 -0
  52. package/dist/lib/schema-mapper.d.ts.map +1 -0
  53. package/dist/lib/schema-mapper.js +137 -0
  54. package/dist/lib/types.d.ts +183 -0
  55. package/dist/lib/types.d.ts.map +1 -0
  56. package/dist/lib/types.js +2 -0
  57. package/dist/lib/typesense-client.d.ts +5 -0
  58. package/dist/lib/typesense-client.d.ts.map +1 -0
  59. package/dist/lib/typesense-client.js +20 -0
  60. package/package.json +92 -0
@@ -0,0 +1,183 @@
1
+ export interface BaseDocument {
2
+ _status?: 'draft' | 'published';
3
+ createdAt: Date | string;
4
+ id: string;
5
+ slug?: string;
6
+ updatedAt: Date | string;
7
+ }
8
+ export interface SearchResult<T = any> {
9
+ collection?: string;
10
+ content?: string;
11
+ displayName?: string;
12
+ document: T;
13
+ highlight?: {
14
+ [field: string]: {
15
+ matched_tokens: string[];
16
+ snippet: string;
17
+ value: string;
18
+ };
19
+ };
20
+ highlights?: Array<{
21
+ field: string;
22
+ matched_tokens: string[];
23
+ snippet: string;
24
+ value: string;
25
+ }>;
26
+ icon?: string;
27
+ id: string;
28
+ text_match?: number;
29
+ text_match_info?: {
30
+ best_field_score: string;
31
+ best_field_weight: number;
32
+ fields_matched: number;
33
+ score: string;
34
+ tokens_matched: number;
35
+ };
36
+ title?: string;
37
+ updatedAt?: string;
38
+ }
39
+ export interface SearchResponse<T = any> {
40
+ collections?: Array<{
41
+ collection: string;
42
+ displayName: string;
43
+ error?: string;
44
+ found: number;
45
+ icon: string;
46
+ }>;
47
+ found: number;
48
+ hits: SearchResult<T>[];
49
+ page: number;
50
+ request_params: {
51
+ page?: number;
52
+ per_page: number;
53
+ q: string;
54
+ sort_by?: string;
55
+ };
56
+ search_cutoff: boolean;
57
+ search_time_ms: number;
58
+ }
59
+ export interface SuggestResult<T = any> {
60
+ collection?: string;
61
+ displayName?: string;
62
+ document: T;
63
+ highlight?: Record<string, string>;
64
+ icon?: string;
65
+ text_match?: number;
66
+ }
67
+ export type SearchResultProps<T = any> = {
68
+ onClick?: (result: SearchResult<T>) => void;
69
+ result: SearchResult<T>;
70
+ };
71
+ export interface SuggestResponse<T = any> {
72
+ found: number;
73
+ hits: SuggestResult<T>[];
74
+ page: number;
75
+ request_params: {
76
+ per_page: number;
77
+ q: string;
78
+ };
79
+ search_cutoff: boolean;
80
+ search_time_ms: number;
81
+ }
82
+ export interface CollectionConfig<T = any> {
83
+ displayName?: string;
84
+ enabled?: boolean;
85
+ facetFields?: Array<keyof T | string>;
86
+ fieldMapping?: Record<string, string>;
87
+ icon?: string;
88
+ searchFields?: Array<keyof T | string>;
89
+ }
90
+ export interface TypesenseSearchConfig<T = Record<string, any>> {
91
+ collections: Record<string, CollectionConfig<T>>;
92
+ settings?: {
93
+ cache?: {
94
+ maxSize?: number;
95
+ ttl?: number;
96
+ };
97
+ categorized?: boolean;
98
+ };
99
+ typesense: {
100
+ apiKey: string;
101
+ connectionTimeoutSeconds?: number;
102
+ nodes: Array<{
103
+ host: string;
104
+ port: number;
105
+ protocol: 'http' | 'https';
106
+ }>;
107
+ numRetries?: number;
108
+ retryIntervalSeconds?: number;
109
+ };
110
+ }
111
+ export interface SearchParams {
112
+ facets?: string[];
113
+ filters?: Record<string, any>;
114
+ highlight_fields?: string[];
115
+ num_typos?: number;
116
+ page?: number;
117
+ per_page?: number;
118
+ q: string;
119
+ snippet_threshold?: number;
120
+ sort_by?: string;
121
+ typo_tokens_threshold?: number;
122
+ }
123
+ export interface BaseSearchInputProps<T = any> {
124
+ baseUrl: string;
125
+ className?: string;
126
+ collection?: string;
127
+ debounceMs?: number;
128
+ errorClassName?: string;
129
+ inputClassName?: string;
130
+ inputWrapperClassName?: string;
131
+ loadingClassName?: string;
132
+ maxResults?: number;
133
+ minQueryLength?: number;
134
+ noResultsClassName?: string;
135
+ onError?: (error: string) => void;
136
+ onLoading?: (loading: boolean) => void;
137
+ onResultClick?: (result: SearchResult<T>) => void;
138
+ onResults?: (results: SearchResponse<T>) => void;
139
+ onSearch?: (query: string, results: SearchResponse<T>) => void;
140
+ placeholder?: string;
141
+ resultsHeaderClassName?: string;
142
+ resultsListClassName?: string;
143
+ }
144
+ export interface CacheEntry<T = any> {
145
+ data: T;
146
+ timestamp: number;
147
+ ttl: number;
148
+ }
149
+ export interface CacheOptions {
150
+ maxSize?: number;
151
+ ttl?: number;
152
+ }
153
+ export interface HealthCheckResponse {
154
+ cache?: {
155
+ maxSize: number;
156
+ size: number;
157
+ };
158
+ collections?: string[];
159
+ error?: string;
160
+ lastSync?: number;
161
+ status: 'healthy' | 'unhealthy';
162
+ typesense?: {
163
+ ok: boolean;
164
+ version?: string;
165
+ };
166
+ }
167
+ export interface ErrorResponse {
168
+ code?: string;
169
+ details?: string;
170
+ error: string;
171
+ timestamp?: string;
172
+ }
173
+ export interface ApiResponse<T = any> {
174
+ data?: T;
175
+ error?: ErrorResponse;
176
+ meta?: {
177
+ cached?: boolean;
178
+ requestId?: string;
179
+ timestamp: string;
180
+ };
181
+ success: boolean;
182
+ }
183
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ // Generic API response wrapper
2
+ export { };
@@ -0,0 +1,5 @@
1
+ import Typesense from 'typesense';
2
+ import type { TypesenseSearchConfig } from '../index.js';
3
+ export declare const createTypesenseClient: (typesenseConfig: TypesenseSearchConfig["typesense"]) => Typesense.Client;
4
+ export declare const testTypesenseConnection: (client: Typesense.Client) => Promise<boolean>;
5
+ //# sourceMappingURL=typesense-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typesense-client.d.ts","sourceRoot":"","sources":["../../src/lib/typesense-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,eAAO,MAAM,qBAAqB,GAAI,iBAAiB,qBAAqB,CAAC,WAAW,CAAC,qBASxF,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,QAAQ,SAAS,CAAC,MAAM,KAAG,OAAO,CAAC,OAAO,CAQvF,CAAA"}
@@ -0,0 +1,20 @@
1
+ import Typesense from 'typesense';
2
+ export const createTypesenseClient = (typesenseConfig)=>{
3
+ return new Typesense.Client({
4
+ apiKey: typesenseConfig.apiKey,
5
+ connectionTimeoutSeconds: typesenseConfig.connectionTimeoutSeconds || 2,
6
+ nodes: typesenseConfig.nodes.map((node)=>({
7
+ ...node,
8
+ port: typeof node.port === 'string' ? parseInt(node.port) : node.port
9
+ }))
10
+ });
11
+ };
12
+ export const testTypesenseConnection = async (client)=>{
13
+ try {
14
+ await client.health.retrieve();
15
+ return true;
16
+ } catch (_error) {
17
+ // Handle Typesense connection error
18
+ return false;
19
+ }
20
+ };
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@rubixstudios/payload-typesense",
3
+ "version": "1.0.0",
4
+ "description": "A production-ready search plugin that integrates Typesense with Payload CMS, offering fast, typo-tolerant search with real-time synchronization. This fork by Rubix Studios reduces bloat and introduces targeted changes for improved performance, maintainability, and flexibility.",
5
+ "license": "MIT",
6
+ "author": "Rubix Studios <hello@rubixstudios.com.au> (https://rubixstudios.com.au)",
7
+ "homepage": "https://rubixstudios.com.au",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/rubix-studios-pty-ltd/payload-typesense.git",
11
+ "directory": "packages/payload-typesense"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/rubix-studios-pty-ltd/payload-typesense/issues"
15
+ },
16
+ "maintainers": [
17
+ {
18
+ "name": "Rubix Studios",
19
+ "email": "hello@rubixstudios.com.au",
20
+ "url": "https://rubixstudios.com.au"
21
+ }
22
+ ],
23
+ "type": "module",
24
+ "keywords": [
25
+ "payload",
26
+ "payloadcms",
27
+ "typesense",
28
+ "search",
29
+ "plugin",
30
+ "cms",
31
+ "headless",
32
+ "typescript",
33
+ "react",
34
+ "nextjs"
35
+ ],
36
+ "sideEffects": false,
37
+ "exports": {
38
+ ".": {
39
+ "import": "./dist/index.js",
40
+ "types": "./dist/index.d.ts",
41
+ "default": "./dist/index.js"
42
+ }
43
+ },
44
+ "main": "./dist/index.js",
45
+ "types": "./dist/index.d.ts",
46
+ "files": [
47
+ "dist"
48
+ ],
49
+ "scripts": {
50
+ "build": "pnpm build:types && pnpm build:swc",
51
+ "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
52
+ "build:types": "tsc -p tsconfig.json",
53
+ "clean": "rimraf -g {dist,*.tsbuildinfo}",
54
+ "lint": "eslint .",
55
+ "lint:fix": "eslint . --fix",
56
+ "prepublishOnly": "pnpm clean && pnpm build"
57
+ },
58
+ "devDependencies": {
59
+ "@payloadcms/eslint-config": "3.28.0",
60
+ "@swc/cli": "^0.7.8",
61
+ "@swc/core": "^1.13.5",
62
+ "@types/react": "19.1.15",
63
+ "eslint": "^9.36.0",
64
+ "payload": "3.57.0",
65
+ "rimraf": "6.0.1",
66
+ "typescript": "5.9.2"
67
+ },
68
+ "peerDependencies": {
69
+ "payload": "^3.57.0"
70
+ },
71
+ "engines": {
72
+ "node": "^22.19.0 || >=20.9.0"
73
+ },
74
+ "publishConfig": {
75
+ "access": "public",
76
+ "registry": "https://registry.npmjs.org/",
77
+ "exports": {
78
+ ".": {
79
+ "import": "./dist/index.js",
80
+ "types": "./dist/index.d.ts",
81
+ "default": "./dist/index.js"
82
+ }
83
+ },
84
+ "main": "./dist/index.js",
85
+ "types": "./dist/index.d.ts"
86
+ },
87
+ "dependencies": {
88
+ "typesense": "^2.1.0",
89
+ "zod": "^4.1.11"
90
+ },
91
+ "packageManager": "pnpm@10.17.1"
92
+ }