@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.
Files changed (38) hide show
  1. package/README.md +43 -0
  2. package/dist/{adult-content-BpZD_3ow.d.cts → adult-content-C0XGPU5A.d.cts} +6 -0
  3. package/dist/{adult-content-BpZD_3ow.d.ts → adult-content-C0XGPU5A.d.ts} +6 -0
  4. package/dist/{feed-DHTy7fUN.d.cts → feed-BaHtJXYR.d.cts} +98 -1
  5. package/dist/{feed-DHTy7fUN.d.ts → feed-BaHtJXYR.d.ts} +98 -1
  6. package/dist/index.cjs +105 -1
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.cts +28 -4
  9. package/dist/index.d.ts +28 -4
  10. package/dist/index.js +97 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/{keys-DuICaiIq.d.ts → keys-Cdu3x0cr.d.ts} +7 -3
  13. package/dist/{keys-K8kCuA5J.d.cts → keys-DdIxFB-C.d.cts} +7 -3
  14. package/dist/query/fetchers/index.cjs +83 -0
  15. package/dist/query/fetchers/index.cjs.map +1 -1
  16. package/dist/query/fetchers/index.d.cts +23 -5
  17. package/dist/query/fetchers/index.d.ts +23 -5
  18. package/dist/query/fetchers/index.js +81 -1
  19. package/dist/query/fetchers/index.js.map +1 -1
  20. package/dist/query/hooks/index.cjs +118 -0
  21. package/dist/query/hooks/index.cjs.map +1 -1
  22. package/dist/query/hooks/index.d.cts +74 -5
  23. package/dist/query/hooks/index.d.ts +74 -5
  24. package/dist/query/hooks/index.js +116 -2
  25. package/dist/query/hooks/index.js.map +1 -1
  26. package/dist/query/index.cjs +119 -0
  27. package/dist/query/index.cjs.map +1 -1
  28. package/dist/query/index.d.cts +6 -6
  29. package/dist/query/index.d.ts +6 -6
  30. package/dist/query/index.js +114 -2
  31. package/dist/query/index.js.map +1 -1
  32. package/dist/schemas/index.cjs +50 -0
  33. package/dist/schemas/index.cjs.map +1 -1
  34. package/dist/schemas/index.d.cts +2 -1
  35. package/dist/schemas/index.d.ts +2 -1
  36. package/dist/schemas/index.js +46 -1
  37. package/dist/schemas/index.js.map +1 -1
  38. 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;