@rubixstudios/payload-typesense 1.0.6 → 1.0.8

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 (59) hide show
  1. package/README.md +8 -0
  2. package/package.json +34 -21
  3. package/dist/components/HeadlessSearchInput.d.ts +0 -88
  4. package/dist/components/HeadlessSearchInput.d.ts.map +0 -1
  5. package/dist/components/HeadlessSearchInput.js +0 -604
  6. package/dist/components/ThemeProvider.d.ts +0 -9
  7. package/dist/components/ThemeProvider.d.ts.map +0 -1
  8. package/dist/components/ThemeProvider.js +0 -17
  9. package/dist/components/index.d.ts +0 -6
  10. package/dist/components/index.d.ts.map +0 -1
  11. package/dist/components/index.js +0 -3
  12. package/dist/components/themes/hooks.d.ts +0 -52
  13. package/dist/components/themes/hooks.d.ts.map +0 -1
  14. package/dist/components/themes/hooks.js +0 -177
  15. package/dist/components/themes/index.d.ts +0 -5
  16. package/dist/components/themes/index.d.ts.map +0 -1
  17. package/dist/components/themes/index.js +0 -4
  18. package/dist/components/themes/themes.d.ts +0 -6
  19. package/dist/components/themes/themes.d.ts.map +0 -1
  20. package/dist/components/themes/themes.js +0 -156
  21. package/dist/components/themes/types.d.ts +0 -147
  22. package/dist/components/themes/types.d.ts.map +0 -1
  23. package/dist/components/themes/types.js +0 -1
  24. package/dist/components/themes/utils.d.ts +0 -30
  25. package/dist/components/themes/utils.d.ts.map +0 -1
  26. package/dist/components/themes/utils.js +0 -397
  27. package/dist/endpoints/customEndpointHandler.d.ts +0 -3
  28. package/dist/endpoints/customEndpointHandler.d.ts.map +0 -1
  29. package/dist/endpoints/customEndpointHandler.js +0 -5
  30. package/dist/endpoints/health.d.ts +0 -12
  31. package/dist/endpoints/health.d.ts.map +0 -1
  32. package/dist/endpoints/health.js +0 -175
  33. package/dist/endpoints/search.d.ts +0 -13
  34. package/dist/endpoints/search.d.ts.map +0 -1
  35. package/dist/endpoints/search.js +0 -375
  36. package/dist/index.d.ts +0 -39
  37. package/dist/index.d.ts.map +0 -1
  38. package/dist/index.js +0 -148
  39. package/dist/lib/cache.d.ts +0 -41
  40. package/dist/lib/cache.d.ts.map +0 -1
  41. package/dist/lib/cache.js +0 -96
  42. package/dist/lib/config-validation.d.ts +0 -75
  43. package/dist/lib/config-validation.d.ts.map +0 -1
  44. package/dist/lib/config-validation.js +0 -174
  45. package/dist/lib/hooks.d.ts +0 -4
  46. package/dist/lib/hooks.d.ts.map +0 -1
  47. package/dist/lib/hooks.js +0 -54
  48. package/dist/lib/initialization.d.ts +0 -5
  49. package/dist/lib/initialization.d.ts.map +0 -1
  50. package/dist/lib/initialization.js +0 -102
  51. package/dist/lib/schema-mapper.d.ts +0 -14
  52. package/dist/lib/schema-mapper.d.ts.map +0 -1
  53. package/dist/lib/schema-mapper.js +0 -137
  54. package/dist/lib/types.d.ts +0 -183
  55. package/dist/lib/types.d.ts.map +0 -1
  56. package/dist/lib/types.js +0 -2
  57. package/dist/lib/typesense-client.d.ts +0 -5
  58. package/dist/lib/typesense-client.d.ts.map +0 -1
  59. package/dist/lib/typesense-client.js +0 -67
@@ -1,183 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
package/dist/lib/types.js DELETED
@@ -1,2 +0,0 @@
1
- // Generic API response wrapper
2
- export { };
@@ -1,5 +0,0 @@
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: (c: Typesense.Client) => Promise<boolean>;
5
- //# sourceMappingURL=typesense-client.d.ts.map
@@ -1 +0,0 @@
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;AAiDxD,eAAO,MAAM,qBAAqB,GACjC,iBAAiB,qBAAqB,CAAC,WAAW,CAAC,KACjD,SAAS,CAAC,MAoBZ,CAAA;AAED,eAAO,MAAM,uBAAuB,GACnC,GAAG,SAAS,CAAC,MAAM,KACjB,OAAO,CAAC,OAAO,CAQjB,CAAA"}
@@ -1,67 +0,0 @@
1
- import Typesense from "typesense";
2
- let client = null;
3
- const isOffline = ()=>{
4
- const evt = process.env.npm_lifecycle_event || "";
5
- if (evt.includes("build") || evt === "tsc") {
6
- return true;
7
- }
8
- if (process.argv.some((a)=>/(?:^|:|\/)(?:build|tsc)(?::|$)/i.test(a))) {
9
- return true;
10
- }
11
- if (process.env.CI === "true") {
12
- return true;
13
- }
14
- return false;
15
- };
16
- const createOfflineClient = ()=>{
17
- return {
18
- analytics: {
19
- retrieve: ()=>{
20
- return Promise.reject(new Error("Typesense offline"));
21
- }
22
- },
23
- collections: ()=>{
24
- return {
25
- retrieve: ()=>{
26
- return Promise.reject(new Error("Typesense offline"));
27
- }
28
- };
29
- },
30
- health: {
31
- retrieve: ()=>{
32
- return Promise.reject(new Error("Typesense offline"));
33
- }
34
- },
35
- operations: {
36
- get: ()=>{
37
- return Promise.reject(new Error("Typesense offline"));
38
- }
39
- }
40
- };
41
- };
42
- export const createTypesenseClient = (typesenseConfig)=>{
43
- if (client) {
44
- return client;
45
- }
46
- if (isOffline()) {
47
- client = createOfflineClient();
48
- return client;
49
- }
50
- client = new Typesense.Client({
51
- apiKey: typesenseConfig.apiKey,
52
- connectionTimeoutSeconds: typesenseConfig.connectionTimeoutSeconds || 2,
53
- nodes: typesenseConfig.nodes.map((node)=>({
54
- ...node,
55
- port: typeof node.port === "string" ? parseInt(node.port, 10) : node.port
56
- }))
57
- });
58
- return client;
59
- };
60
- export const testTypesenseConnection = async (c)=>{
61
- try {
62
- const res = await c.health.retrieve();
63
- return typeof res?.ok === "boolean" ? !!res.ok : true;
64
- } catch {
65
- return false;
66
- }
67
- };