@semilayer/react 1.1.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.
- package/dist/index.d.ts +45 -0
- package/dist/index.js +126 -0
- package/dist/index.js.map +1 -0
- package/package.json +37 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { BeamClient, SearchParams, SearchResponse, SimilarParams, SimilarResponse, QueryParams, QueryResponse } from '@semilayer/client';
|
|
3
|
+
|
|
4
|
+
interface SemiLayerProviderProps {
|
|
5
|
+
baseUrl: string;
|
|
6
|
+
apiKey: string;
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}
|
|
9
|
+
declare function SemiLayerProvider({ baseUrl, apiKey, children }: SemiLayerProviderProps): react_jsx_runtime.JSX.Element;
|
|
10
|
+
declare function useSemiLayer(): BeamClient;
|
|
11
|
+
|
|
12
|
+
interface UseSearchOptions {
|
|
13
|
+
enabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface UseSearchResult<M> {
|
|
16
|
+
data: SearchResponse<M> | null;
|
|
17
|
+
loading: boolean;
|
|
18
|
+
error: Error | null;
|
|
19
|
+
refetch: () => void;
|
|
20
|
+
}
|
|
21
|
+
declare function useSearch<M = Record<string, unknown>>(lens: string, params: SearchParams | null, opts?: UseSearchOptions): UseSearchResult<M>;
|
|
22
|
+
|
|
23
|
+
interface UseSimilarOptions {
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
}
|
|
26
|
+
interface UseSimilarResult<M> {
|
|
27
|
+
data: SimilarResponse<M> | null;
|
|
28
|
+
loading: boolean;
|
|
29
|
+
error: Error | null;
|
|
30
|
+
refetch: () => void;
|
|
31
|
+
}
|
|
32
|
+
declare function useSimilar<M = Record<string, unknown>>(lens: string, params: SimilarParams | null, opts?: UseSimilarOptions): UseSimilarResult<M>;
|
|
33
|
+
|
|
34
|
+
interface UseQueryOptions {
|
|
35
|
+
enabled?: boolean;
|
|
36
|
+
}
|
|
37
|
+
interface UseQueryResult<M> {
|
|
38
|
+
data: QueryResponse<M> | null;
|
|
39
|
+
loading: boolean;
|
|
40
|
+
error: Error | null;
|
|
41
|
+
refetch: () => void;
|
|
42
|
+
}
|
|
43
|
+
declare function useQuery<M = Record<string, unknown>>(lens: string, params?: QueryParams | null, opts?: UseQueryOptions): UseQueryResult<M>;
|
|
44
|
+
|
|
45
|
+
export { SemiLayerProvider, type SemiLayerProviderProps, useQuery, useSearch, useSemiLayer, useSimilar };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// src/provider.tsx
|
|
2
|
+
import { createContext, useContext, useMemo } from "react";
|
|
3
|
+
import { BeamClient } from "@semilayer/client";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var SemiLayerContext = createContext(null);
|
|
6
|
+
function SemiLayerProvider({ baseUrl, apiKey, children }) {
|
|
7
|
+
const client = useMemo(
|
|
8
|
+
() => new BeamClient({ baseUrl, apiKey }),
|
|
9
|
+
[baseUrl, apiKey]
|
|
10
|
+
);
|
|
11
|
+
return /* @__PURE__ */ jsx(SemiLayerContext.Provider, { value: client, children });
|
|
12
|
+
}
|
|
13
|
+
function useSemiLayer() {
|
|
14
|
+
const client = useContext(SemiLayerContext);
|
|
15
|
+
if (!client) {
|
|
16
|
+
throw new Error("useSemiLayer must be used within a <SemiLayerProvider>");
|
|
17
|
+
}
|
|
18
|
+
return client;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/use-search.ts
|
|
22
|
+
import { useState, useEffect, useCallback } from "react";
|
|
23
|
+
function useSearch(lens, params, opts) {
|
|
24
|
+
const client = useSemiLayer();
|
|
25
|
+
const [data, setData] = useState(null);
|
|
26
|
+
const [loading, setLoading] = useState(false);
|
|
27
|
+
const [error, setError] = useState(null);
|
|
28
|
+
const [trigger, setTrigger] = useState(0);
|
|
29
|
+
const enabled = opts?.enabled !== false;
|
|
30
|
+
const refetch = useCallback(() => setTrigger((t) => t + 1), []);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!params?.query || !enabled) {
|
|
33
|
+
setData(null);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
let cancelled = false;
|
|
37
|
+
setLoading(true);
|
|
38
|
+
setError(null);
|
|
39
|
+
client.search(lens, params).then((res) => {
|
|
40
|
+
if (!cancelled) setData(res);
|
|
41
|
+
}).catch((err) => {
|
|
42
|
+
if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)));
|
|
43
|
+
}).finally(() => {
|
|
44
|
+
if (!cancelled) setLoading(false);
|
|
45
|
+
});
|
|
46
|
+
return () => {
|
|
47
|
+
cancelled = true;
|
|
48
|
+
};
|
|
49
|
+
}, [client, lens, params?.query, params?.limit, params?.minScore, params?.mode, enabled, trigger]);
|
|
50
|
+
return { data, loading, error, refetch };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/use-similar.ts
|
|
54
|
+
import { useState as useState2, useEffect as useEffect2, useCallback as useCallback2 } from "react";
|
|
55
|
+
function useSimilar(lens, params, opts) {
|
|
56
|
+
const client = useSemiLayer();
|
|
57
|
+
const [data, setData] = useState2(null);
|
|
58
|
+
const [loading, setLoading] = useState2(false);
|
|
59
|
+
const [error, setError] = useState2(null);
|
|
60
|
+
const [trigger, setTrigger] = useState2(0);
|
|
61
|
+
const enabled = opts?.enabled !== false;
|
|
62
|
+
const refetch = useCallback2(() => setTrigger((t) => t + 1), []);
|
|
63
|
+
useEffect2(() => {
|
|
64
|
+
if (!params?.id || !enabled) {
|
|
65
|
+
setData(null);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
let cancelled = false;
|
|
69
|
+
setLoading(true);
|
|
70
|
+
setError(null);
|
|
71
|
+
client.similar(lens, params).then((res) => {
|
|
72
|
+
if (!cancelled) setData(res);
|
|
73
|
+
}).catch((err) => {
|
|
74
|
+
if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)));
|
|
75
|
+
}).finally(() => {
|
|
76
|
+
if (!cancelled) setLoading(false);
|
|
77
|
+
});
|
|
78
|
+
return () => {
|
|
79
|
+
cancelled = true;
|
|
80
|
+
};
|
|
81
|
+
}, [client, lens, params?.id, params?.limit, params?.minScore, enabled, trigger]);
|
|
82
|
+
return { data, loading, error, refetch };
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// src/use-query.ts
|
|
86
|
+
import { useState as useState3, useEffect as useEffect3, useCallback as useCallback3, useRef } from "react";
|
|
87
|
+
function useQuery(lens, params, opts) {
|
|
88
|
+
const client = useSemiLayer();
|
|
89
|
+
const [data, setData] = useState3(null);
|
|
90
|
+
const [loading, setLoading] = useState3(false);
|
|
91
|
+
const [error, setError] = useState3(null);
|
|
92
|
+
const [trigger, setTrigger] = useState3(0);
|
|
93
|
+
const enabled = opts?.enabled !== false;
|
|
94
|
+
const refetch = useCallback3(() => setTrigger((t) => t + 1), []);
|
|
95
|
+
const paramsRef = useRef(params);
|
|
96
|
+
const paramsKey = JSON.stringify(params ?? {});
|
|
97
|
+
paramsRef.current = params;
|
|
98
|
+
useEffect3(() => {
|
|
99
|
+
if (!enabled) {
|
|
100
|
+
setData(null);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
let cancelled = false;
|
|
104
|
+
setLoading(true);
|
|
105
|
+
setError(null);
|
|
106
|
+
client.query(lens, paramsRef.current ?? void 0).then((res) => {
|
|
107
|
+
if (!cancelled) setData(res);
|
|
108
|
+
}).catch((err) => {
|
|
109
|
+
if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)));
|
|
110
|
+
}).finally(() => {
|
|
111
|
+
if (!cancelled) setLoading(false);
|
|
112
|
+
});
|
|
113
|
+
return () => {
|
|
114
|
+
cancelled = true;
|
|
115
|
+
};
|
|
116
|
+
}, [client, lens, paramsKey, enabled, trigger]);
|
|
117
|
+
return { data, loading, error, refetch };
|
|
118
|
+
}
|
|
119
|
+
export {
|
|
120
|
+
SemiLayerProvider,
|
|
121
|
+
useQuery,
|
|
122
|
+
useSearch,
|
|
123
|
+
useSemiLayer,
|
|
124
|
+
useSimilar
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/use-search.ts","../src/use-similar.ts","../src/use-query.ts"],"sourcesContent":["import { createContext, useContext, useMemo } from 'react'\nimport { BeamClient } from '@semilayer/client'\n\nconst SemiLayerContext = createContext<BeamClient | null>(null)\n\nexport interface SemiLayerProviderProps {\n baseUrl: string\n apiKey: string\n children: React.ReactNode\n}\n\nexport function SemiLayerProvider({ baseUrl, apiKey, children }: SemiLayerProviderProps) {\n const client = useMemo(\n () => new BeamClient({ baseUrl, apiKey }),\n [baseUrl, apiKey],\n )\n\n return (\n <SemiLayerContext.Provider value={client}>{children}</SemiLayerContext.Provider>\n )\n}\n\nexport function useSemiLayer(): BeamClient {\n const client = useContext(SemiLayerContext)\n if (!client) {\n throw new Error('useSemiLayer must be used within a <SemiLayerProvider>')\n }\n return client\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { SearchParams, SearchResponse } from '@semilayer/client'\nimport { useSemiLayer } from './provider.js'\n\ninterface UseSearchOptions {\n enabled?: boolean\n}\n\ninterface UseSearchResult<M> {\n data: SearchResponse<M> | null\n loading: boolean\n error: Error | null\n refetch: () => void\n}\n\nexport function useSearch<M = Record<string, unknown>>(\n lens: string,\n params: SearchParams | null,\n opts?: UseSearchOptions,\n): UseSearchResult<M> {\n const client = useSemiLayer()\n const [data, setData] = useState<SearchResponse<M> | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const [trigger, setTrigger] = useState(0)\n\n const enabled = opts?.enabled !== false\n\n const refetch = useCallback(() => setTrigger((t) => t + 1), [])\n\n useEffect(() => {\n if (!params?.query || !enabled) {\n setData(null)\n return\n }\n\n let cancelled = false\n setLoading(true)\n setError(null)\n\n client\n .search<M>(lens, params)\n .then((res) => {\n if (!cancelled) setData(res)\n })\n .catch((err) => {\n if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)))\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n\n return () => {\n cancelled = true\n }\n }, [client, lens, params?.query, params?.limit, params?.minScore, params?.mode, enabled, trigger])\n\n return { data, loading, error, refetch }\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { SimilarParams, SimilarResponse } from '@semilayer/client'\nimport { useSemiLayer } from './provider.js'\n\ninterface UseSimilarOptions {\n enabled?: boolean\n}\n\ninterface UseSimilarResult<M> {\n data: SimilarResponse<M> | null\n loading: boolean\n error: Error | null\n refetch: () => void\n}\n\nexport function useSimilar<M = Record<string, unknown>>(\n lens: string,\n params: SimilarParams | null,\n opts?: UseSimilarOptions,\n): UseSimilarResult<M> {\n const client = useSemiLayer()\n const [data, setData] = useState<SimilarResponse<M> | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const [trigger, setTrigger] = useState(0)\n\n const enabled = opts?.enabled !== false\n\n const refetch = useCallback(() => setTrigger((t) => t + 1), [])\n\n useEffect(() => {\n if (!params?.id || !enabled) {\n setData(null)\n return\n }\n\n let cancelled = false\n setLoading(true)\n setError(null)\n\n client\n .similar<M>(lens, params)\n .then((res) => {\n if (!cancelled) setData(res)\n })\n .catch((err) => {\n if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)))\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n\n return () => {\n cancelled = true\n }\n }, [client, lens, params?.id, params?.limit, params?.minScore, enabled, trigger])\n\n return { data, loading, error, refetch }\n}\n","import { useState, useEffect, useCallback, useRef } from 'react'\nimport type { QueryParams, QueryResponse } from '@semilayer/client'\nimport { useSemiLayer } from './provider.js'\n\ninterface UseQueryOptions {\n enabled?: boolean\n}\n\ninterface UseQueryResult<M> {\n data: QueryResponse<M> | null\n loading: boolean\n error: Error | null\n refetch: () => void\n}\n\nexport function useQuery<M = Record<string, unknown>>(\n lens: string,\n params?: QueryParams | null,\n opts?: UseQueryOptions,\n): UseQueryResult<M> {\n const client = useSemiLayer()\n const [data, setData] = useState<QueryResponse<M> | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const [trigger, setTrigger] = useState(0)\n\n const enabled = opts?.enabled !== false\n\n const refetch = useCallback(() => setTrigger((t) => t + 1), [])\n\n // Serialize params for dependency tracking\n const paramsRef = useRef(params)\n const paramsKey = JSON.stringify(params ?? {})\n paramsRef.current = params\n\n useEffect(() => {\n if (!enabled) {\n setData(null)\n return\n }\n\n let cancelled = false\n setLoading(true)\n setError(null)\n\n client\n .query<M>(lens, paramsRef.current ?? undefined)\n .then((res) => {\n if (!cancelled) setData(res)\n })\n .catch((err) => {\n if (!cancelled) setError(err instanceof Error ? err : new Error(String(err)))\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n\n return () => {\n cancelled = true\n }\n }, [client, lens, paramsKey, enabled, trigger])\n\n return { data, loading, error, refetch }\n}\n"],"mappings":"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","names":["useState","useEffect","useCallback","useState","useCallback","useEffect","useState","useEffect","useCallback","useState","useCallback","useEffect"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@semilayer/react",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "SemiLayer React hooks — useSearch, useSimilar, useQuery",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsup",
|
|
19
|
+
"dev": "tsup --watch",
|
|
20
|
+
"lint": "eslint src/",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"test": "vitest run"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@semilayer/client": "workspace:*"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/react": "^19.0.0",
|
|
29
|
+
"react": "^19.0.0",
|
|
30
|
+
"tsup": "^8.0.0",
|
|
31
|
+
"typescript": "^5.7.0",
|
|
32
|
+
"vitest": "^3.0.0"
|
|
33
|
+
},
|
|
34
|
+
"peerDependencies": {
|
|
35
|
+
"react": ">=19.0.0"
|
|
36
|
+
}
|
|
37
|
+
}
|