@singi-labs/sifa-sdk 0.11.13 → 0.11.15
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/README.md +43 -0
- package/dist/{adult-content-BpZD_3ow.d.cts → adult-content-C0XGPU5A.d.cts} +6 -0
- package/dist/{adult-content-BpZD_3ow.d.ts → adult-content-C0XGPU5A.d.ts} +6 -0
- package/dist/{feed-DHTy7fUN.d.cts → feed-BaHtJXYR.d.cts} +98 -1
- package/dist/{feed-DHTy7fUN.d.ts → feed-BaHtJXYR.d.ts} +98 -1
- package/dist/index.cjs +105 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -4
- package/dist/index.d.ts +28 -4
- package/dist/index.js +97 -2
- package/dist/index.js.map +1 -1
- package/dist/{keys-DuICaiIq.d.ts → keys-Cdu3x0cr.d.ts} +7 -3
- package/dist/{keys-K8kCuA5J.d.cts → keys-DdIxFB-C.d.cts} +7 -3
- package/dist/query/fetchers/index.cjs +83 -0
- package/dist/query/fetchers/index.cjs.map +1 -1
- package/dist/query/fetchers/index.d.cts +23 -5
- package/dist/query/fetchers/index.d.ts +23 -5
- package/dist/query/fetchers/index.js +81 -1
- package/dist/query/fetchers/index.js.map +1 -1
- package/dist/query/hooks/index.cjs +118 -0
- package/dist/query/hooks/index.cjs.map +1 -1
- package/dist/query/hooks/index.d.cts +74 -5
- package/dist/query/hooks/index.d.ts +74 -5
- package/dist/query/hooks/index.js +116 -2
- package/dist/query/hooks/index.js.map +1 -1
- package/dist/query/index.cjs +119 -0
- package/dist/query/index.cjs.map +1 -1
- package/dist/query/index.d.cts +6 -6
- package/dist/query/index.d.ts +6 -6
- package/dist/query/index.js +114 -2
- package/dist/query/index.js.map +1 -1
- package/dist/schemas/index.cjs +50 -0
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +2 -1
- package/dist/schemas/index.d.ts +2 -1
- package/dist/schemas/index.js +46 -1
- package/dist/schemas/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var react = require('react');
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var reactQuery = require('@tanstack/react-query');
|
|
6
|
+
var zod = require('zod');
|
|
6
7
|
|
|
7
8
|
// src/query/config.tsx
|
|
8
9
|
var SifaConfigContext = react.createContext(null);
|
|
@@ -169,6 +170,10 @@ var sifaQueryKeys = {
|
|
|
169
170
|
canonicalSkills: (query, limit) => ["sifa", "search", "canonical-skills", query, limit],
|
|
170
171
|
filters: () => ["sifa", "search", "filters"]
|
|
171
172
|
},
|
|
173
|
+
entity: {
|
|
174
|
+
all: () => ["sifa", "entity"],
|
|
175
|
+
search: (query, limit) => ["sifa", "entity", "search", query, limit]
|
|
176
|
+
},
|
|
172
177
|
discovery: {
|
|
173
178
|
all: () => ["sifa", "discovery"],
|
|
174
179
|
similar: (did, limit) => ["sifa", "discovery", "similar", did, limit],
|
|
@@ -2272,6 +2277,115 @@ function useDeleteAccount(options) {
|
|
|
2272
2277
|
...options
|
|
2273
2278
|
});
|
|
2274
2279
|
}
|
|
2280
|
+
var httpUrlNullable = zod.z.string().refine((s) => /^https?:\/\//i.test(s), { message: "must be an http(s) URL" }).nullable();
|
|
2281
|
+
var searchResultCommon = {
|
|
2282
|
+
kind: zod.z.string(),
|
|
2283
|
+
name: zod.z.string(),
|
|
2284
|
+
domain: zod.z.string().nullable(),
|
|
2285
|
+
country: zod.z.string().nullable(),
|
|
2286
|
+
logoUrl: httpUrlNullable,
|
|
2287
|
+
parentName: zod.z.string().nullable()
|
|
2288
|
+
};
|
|
2289
|
+
var EntitySearchResultSchema = zod.z.discriminatedUnion("source", [
|
|
2290
|
+
zod.z.object({
|
|
2291
|
+
source: zod.z.literal("entity"),
|
|
2292
|
+
entityId: zod.z.number().int().positive(),
|
|
2293
|
+
...searchResultCommon
|
|
2294
|
+
}),
|
|
2295
|
+
zod.z.object({
|
|
2296
|
+
source: zod.z.literal("pdl"),
|
|
2297
|
+
pdlId: zod.z.string().min(1),
|
|
2298
|
+
...searchResultCommon
|
|
2299
|
+
})
|
|
2300
|
+
]);
|
|
2301
|
+
var EntitySearchResponseSchema = zod.z.object({
|
|
2302
|
+
results: zod.z.array(EntitySearchResultSchema),
|
|
2303
|
+
hasMore: zod.z.boolean()
|
|
2304
|
+
});
|
|
2305
|
+
zod.z.object({
|
|
2306
|
+
entityId: zod.z.number().int().positive().optional(),
|
|
2307
|
+
pdlId: zod.z.string().min(1).optional()
|
|
2308
|
+
}).refine((v) => v.entityId != null !== (v.pdlId != null), {
|
|
2309
|
+
message: "exactly one of entityId or pdlId is required"
|
|
2310
|
+
});
|
|
2311
|
+
var EntitySelectResponseSchema = zod.z.object({
|
|
2312
|
+
entityId: zod.z.number().int().positive(),
|
|
2313
|
+
slug: zod.z.string(),
|
|
2314
|
+
kind: zod.z.string(),
|
|
2315
|
+
canonicalName: zod.z.string(),
|
|
2316
|
+
domain: zod.z.string().nullable(),
|
|
2317
|
+
entityRef: httpUrlNullable
|
|
2318
|
+
});
|
|
2319
|
+
var EntityImportSearchResponseSchema = zod.z.object({
|
|
2320
|
+
results: zod.z.array(EntitySearchResultSchema)
|
|
2321
|
+
});
|
|
2322
|
+
|
|
2323
|
+
// src/query/fetchers/entities.ts
|
|
2324
|
+
var EMPTY_SEARCH2 = { results: [], hasMore: false };
|
|
2325
|
+
async function fetchEntitySearch(config, query, limit, options = {}) {
|
|
2326
|
+
if (!query.trim()) return EMPTY_SEARCH2;
|
|
2327
|
+
const params = new URLSearchParams({ q: query });
|
|
2328
|
+
if (limit !== void 0) params.set("limit", String(limit));
|
|
2329
|
+
const data = await apiFetch(config, `/api/entities/search?${params.toString()}`, {
|
|
2330
|
+
cache: "no-store",
|
|
2331
|
+
...options
|
|
2332
|
+
});
|
|
2333
|
+
return EntitySearchResponseSchema.parse(data);
|
|
2334
|
+
}
|
|
2335
|
+
async function selectEntity(config, body, options = {}) {
|
|
2336
|
+
const data = await apiFetch(config, "/api/entities/select", {
|
|
2337
|
+
method: "POST",
|
|
2338
|
+
body,
|
|
2339
|
+
credentials: "include",
|
|
2340
|
+
...options
|
|
2341
|
+
});
|
|
2342
|
+
return EntitySelectResponseSchema.parse(data);
|
|
2343
|
+
}
|
|
2344
|
+
async function importSearchEntities(config, query, options = {}) {
|
|
2345
|
+
if (!query.trim()) return [];
|
|
2346
|
+
const data = await apiFetch(config, "/api/entities/import-search", {
|
|
2347
|
+
method: "POST",
|
|
2348
|
+
body: { q: query },
|
|
2349
|
+
credentials: "include",
|
|
2350
|
+
...options
|
|
2351
|
+
});
|
|
2352
|
+
return EntityImportSearchResponseSchema.parse(data).results;
|
|
2353
|
+
}
|
|
2354
|
+
|
|
2355
|
+
// src/query/hooks/use-entity-search.ts
|
|
2356
|
+
function useDebouncedValue(value, delayMs = 250) {
|
|
2357
|
+
const [debounced, setDebounced] = react.useState(value);
|
|
2358
|
+
react.useEffect(() => {
|
|
2359
|
+
const timer = setTimeout(() => setDebounced(value), delayMs);
|
|
2360
|
+
return () => clearTimeout(timer);
|
|
2361
|
+
}, [value, delayMs]);
|
|
2362
|
+
return debounced;
|
|
2363
|
+
}
|
|
2364
|
+
function useEntitySearch(query, opts = {}, queryOptions) {
|
|
2365
|
+
const config = useSifaConfig();
|
|
2366
|
+
const { limit = 5, debounceMs = 250, enabled = true } = opts;
|
|
2367
|
+
const debounced = useDebouncedValue(query.trim(), debounceMs);
|
|
2368
|
+
return reactQuery.useQuery({
|
|
2369
|
+
queryKey: sifaQueryKeys.entity.search(debounced, limit),
|
|
2370
|
+
queryFn: () => fetchEntitySearch(config, debounced, limit),
|
|
2371
|
+
enabled: enabled && debounced.length > 0,
|
|
2372
|
+
...queryOptions
|
|
2373
|
+
});
|
|
2374
|
+
}
|
|
2375
|
+
function useSelectEntity(options) {
|
|
2376
|
+
const config = useSifaConfig();
|
|
2377
|
+
return reactQuery.useMutation({
|
|
2378
|
+
mutationFn: (body) => selectEntity(config, body),
|
|
2379
|
+
...options
|
|
2380
|
+
});
|
|
2381
|
+
}
|
|
2382
|
+
function useImportSearchEntities(options) {
|
|
2383
|
+
const config = useSifaConfig();
|
|
2384
|
+
return reactQuery.useMutation({
|
|
2385
|
+
mutationFn: (query) => importSearchEntities(config, query),
|
|
2386
|
+
...options
|
|
2387
|
+
});
|
|
2388
|
+
}
|
|
2275
2389
|
|
|
2276
2390
|
exports.SifaProvider = SifaProvider;
|
|
2277
2391
|
exports.sifaQueryKeys = sifaQueryKeys;
|
|
@@ -2296,6 +2410,7 @@ exports.useCreateProfileLocation = useCreateProfileLocation;
|
|
|
2296
2410
|
exports.useCreateReaction = useCreateReaction;
|
|
2297
2411
|
exports.useCreateRecord = useCreateRecord;
|
|
2298
2412
|
exports.useCreateSkill = useCreateSkill;
|
|
2413
|
+
exports.useDebouncedValue = useDebouncedValue;
|
|
2299
2414
|
exports.useDeleteAccount = useDeleteAccount;
|
|
2300
2415
|
exports.useDeleteAvatarOverride = useDeleteAvatarOverride;
|
|
2301
2416
|
exports.useDeleteEducation = useDeleteEducation;
|
|
@@ -2306,6 +2421,7 @@ exports.useDeleteReaction = useDeleteReaction;
|
|
|
2306
2421
|
exports.useDeleteRecord = useDeleteRecord;
|
|
2307
2422
|
exports.useDeleteSkill = useDeleteSkill;
|
|
2308
2423
|
exports.useEndorsementCount = useEndorsementCount;
|
|
2424
|
+
exports.useEntitySearch = useEntitySearch;
|
|
2309
2425
|
exports.useExternalAccounts = useExternalAccounts;
|
|
2310
2426
|
exports.useFeatureAllowlist = useFeatureAllowlist;
|
|
2311
2427
|
exports.useFeaturedProfile = useFeaturedProfile;
|
|
@@ -2321,6 +2437,7 @@ exports.useHideOrcidPublication = useHideOrcidPublication;
|
|
|
2321
2437
|
exports.useHideProfileItem = useHideProfileItem;
|
|
2322
2438
|
exports.useHideSifaPublication = useHideSifaPublication;
|
|
2323
2439
|
exports.useHideStandardPublication = useHideStandardPublication;
|
|
2440
|
+
exports.useImportSearchEntities = useImportSearchEntities;
|
|
2324
2441
|
exports.useLinkSkillToPosition = useLinkSkillToPosition;
|
|
2325
2442
|
exports.useMutuals = useMutuals;
|
|
2326
2443
|
exports.useMyRoadmapVotes = useMyRoadmapVotes;
|
|
@@ -2336,6 +2453,7 @@ exports.useRevealMarqueDomain = useRevealMarqueDomain;
|
|
|
2336
2453
|
exports.useRoadmapVotes = useRoadmapVotes;
|
|
2337
2454
|
exports.useSearchFilters = useSearchFilters;
|
|
2338
2455
|
exports.useSearchProfiles = useSearchProfiles;
|
|
2456
|
+
exports.useSelectEntity = useSelectEntity;
|
|
2339
2457
|
exports.useSetExternalAccountPrimary = useSetExternalAccountPrimary;
|
|
2340
2458
|
exports.useSetPositionPrimary = useSetPositionPrimary;
|
|
2341
2459
|
exports.useSifaConfig = useSifaConfig;
|