@singi-labs/sifa-sdk 0.11.12 → 0.11.14

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 (36) hide show
  1. package/README.md +43 -0
  2. package/dist/{feed-DHTy7fUN.d.cts → feed-BaHtJXYR.d.cts} +98 -1
  3. package/dist/{feed-DHTy7fUN.d.ts → feed-BaHtJXYR.d.ts} +98 -1
  4. package/dist/index.cjs +113 -2
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.cts +34 -3
  7. package/dist/index.d.ts +34 -3
  8. package/dist/index.js +105 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/{keys-DuICaiIq.d.ts → keys-C0AracRc.d.ts} +6 -2
  11. package/dist/{keys-K8kCuA5J.d.cts → keys-DLxYsNCp.d.cts} +6 -2
  12. package/dist/query/fetchers/index.cjs +83 -0
  13. package/dist/query/fetchers/index.cjs.map +1 -1
  14. package/dist/query/fetchers/index.d.cts +22 -4
  15. package/dist/query/fetchers/index.d.ts +22 -4
  16. package/dist/query/fetchers/index.js +81 -1
  17. package/dist/query/fetchers/index.js.map +1 -1
  18. package/dist/query/hooks/index.cjs +118 -0
  19. package/dist/query/hooks/index.cjs.map +1 -1
  20. package/dist/query/hooks/index.d.cts +73 -4
  21. package/dist/query/hooks/index.d.ts +73 -4
  22. package/dist/query/hooks/index.js +116 -2
  23. package/dist/query/hooks/index.js.map +1 -1
  24. package/dist/query/index.cjs +119 -0
  25. package/dist/query/index.cjs.map +1 -1
  26. package/dist/query/index.d.cts +5 -5
  27. package/dist/query/index.d.ts +5 -5
  28. package/dist/query/index.js +114 -2
  29. package/dist/query/index.js.map +1 -1
  30. package/dist/schemas/index.cjs +47 -0
  31. package/dist/schemas/index.cjs.map +1 -1
  32. package/dist/schemas/index.d.cts +1 -1
  33. package/dist/schemas/index.d.ts +1 -1
  34. package/dist/schemas/index.js +43 -1
  35. package/dist/schemas/index.js.map +1 -1
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -89,6 +89,49 @@ pnpm lint
89
89
  pnpm typecheck
90
90
  ```
91
91
 
92
+ ### Testing your changes
93
+
94
+ For SDK logic in isolation (schemas, formatters, taxonomies, fetchers), write a
95
+ test and run the watcher. No consumer app needed:
96
+
97
+ ```bash
98
+ pnpm test:watch
99
+ ```
100
+
101
+ To test a change end-to-end inside a consumer (sifa-web, sifa-api), link your
102
+ local build in. The SDK ships its compiled `dist/`, not source, so keep a build
103
+ running while you edit:
104
+
105
+ ```bash
106
+ pnpm dev # tsup --watch, rebuilds dist/ on save
107
+ ```
108
+
109
+ Then point the consumer at your checkout. For a pnpm consumer (sifa-web), an
110
+ override is more reproducible across installs than a bare `pnpm link`:
111
+
112
+ ```jsonc
113
+ // consumer package.json
114
+ "pnpm": { "overrides": { "@singi-labs/sifa-sdk": "link:../sifa-sdk" } }
115
+ ```
116
+
117
+ then `pnpm install`. For an npm consumer (sifa-api), `npm link` works.
118
+
119
+ `react` and `@tanstack/react-query` are optional peer dependencies. If a linked
120
+ build throws "Invalid hook call" or a missing QueryClient, the consumer is
121
+ resolving two copies of them: run `pnpm dedupe`, or add an override pinning both
122
+ to a single version. Only the `./query/hooks` export needs React, so non-React
123
+ consumers like sifa-api never hit this.
124
+
125
+ For a publish-faithful check with no watch, pack a tarball instead of linking:
126
+
127
+ ```bash
128
+ pnpm build && pnpm pack # produces singi-labs-sifa-sdk-x.y.z.tgz
129
+ ```
130
+
131
+ then `pnpm add ./singi-labs-sifa-sdk-x.y.z.tgz` in the consumer. This installs
132
+ exactly what would publish (respects `files: ["dist"]`), with no symlink
133
+ resolution quirks.
134
+
92
135
  Standards:
93
136
 
94
137
  - Strict TypeScript -- `strict: true`, no `any`
@@ -1,5 +1,102 @@
1
1
  import { z } from 'zod';
2
2
 
3
+ /**
4
+ * A single typeahead row. Discriminated on `source`: a curated `entity` row
5
+ * carries `entityId`, a `pdl` staging row carries `pdlId`. The union guarantees
6
+ * the identifier for the row's source is always present, so a stable React key
7
+ * can never be `entity:undefined`. The disambiguation fields
8
+ * (domain/country/parentName) drive the dropdown display.
9
+ */
10
+ declare const EntitySearchResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ kind: z.ZodString;
12
+ name: z.ZodString;
13
+ domain: z.ZodNullable<z.ZodString>;
14
+ country: z.ZodNullable<z.ZodString>;
15
+ logoUrl: z.ZodNullable<z.ZodString>;
16
+ parentName: z.ZodNullable<z.ZodString>;
17
+ source: z.ZodLiteral<"entity">;
18
+ entityId: z.ZodNumber;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ kind: z.ZodString;
21
+ name: z.ZodString;
22
+ domain: z.ZodNullable<z.ZodString>;
23
+ country: z.ZodNullable<z.ZodString>;
24
+ logoUrl: z.ZodNullable<z.ZodString>;
25
+ parentName: z.ZodNullable<z.ZodString>;
26
+ source: z.ZodLiteral<"pdl">;
27
+ pdlId: z.ZodString;
28
+ }, z.core.$strip>], "source">;
29
+ type EntitySearchResult = z.infer<typeof EntitySearchResultSchema>;
30
+ /** Response of `GET /api/entities/search`. */
31
+ declare const EntitySearchResponseSchema: z.ZodObject<{
32
+ results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
33
+ kind: z.ZodString;
34
+ name: z.ZodString;
35
+ domain: z.ZodNullable<z.ZodString>;
36
+ country: z.ZodNullable<z.ZodString>;
37
+ logoUrl: z.ZodNullable<z.ZodString>;
38
+ parentName: z.ZodNullable<z.ZodString>;
39
+ source: z.ZodLiteral<"entity">;
40
+ entityId: z.ZodNumber;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ kind: z.ZodString;
43
+ name: z.ZodString;
44
+ domain: z.ZodNullable<z.ZodString>;
45
+ country: z.ZodNullable<z.ZodString>;
46
+ logoUrl: z.ZodNullable<z.ZodString>;
47
+ parentName: z.ZodNullable<z.ZodString>;
48
+ source: z.ZodLiteral<"pdl">;
49
+ pdlId: z.ZodString;
50
+ }, z.core.$strip>], "source">>;
51
+ hasMore: z.ZodBoolean;
52
+ }, z.core.$strip>;
53
+ type EntitySearchResponse = z.infer<typeof EntitySearchResponseSchema>;
54
+ /**
55
+ * Body of `POST /api/entities/select`: promote a PDL row OR bump an entity.
56
+ * Exactly one of `entityId`/`pdlId` must be present -- supplying both is
57
+ * ambiguous (the server would have to silently pick one) and is rejected.
58
+ */
59
+ declare const EntitySelectRequestSchema: z.ZodObject<{
60
+ entityId: z.ZodOptional<z.ZodNumber>;
61
+ pdlId: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>;
63
+ type EntitySelectRequest = z.infer<typeof EntitySelectRequestSchema>;
64
+ /** Response of `POST /api/entities/select`. `entityRef` is the portable
65
+ * Wikidata/ROR/LEI URI to write to the position record, or null for a
66
+ * PDL-only entity (its resolution stays AppView-side). */
67
+ declare const EntitySelectResponseSchema: z.ZodObject<{
68
+ entityId: z.ZodNumber;
69
+ slug: z.ZodString;
70
+ kind: z.ZodString;
71
+ canonicalName: z.ZodString;
72
+ domain: z.ZodNullable<z.ZodString>;
73
+ entityRef: z.ZodNullable<z.ZodString>;
74
+ }, z.core.$strip>;
75
+ type EntitySelectResponse = z.infer<typeof EntitySelectResponseSchema>;
76
+ /** Response of `POST /api/entities/import-search`. */
77
+ declare const EntityImportSearchResponseSchema: z.ZodObject<{
78
+ results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
79
+ kind: z.ZodString;
80
+ name: z.ZodString;
81
+ domain: z.ZodNullable<z.ZodString>;
82
+ country: z.ZodNullable<z.ZodString>;
83
+ logoUrl: z.ZodNullable<z.ZodString>;
84
+ parentName: z.ZodNullable<z.ZodString>;
85
+ source: z.ZodLiteral<"entity">;
86
+ entityId: z.ZodNumber;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ kind: z.ZodString;
89
+ name: z.ZodString;
90
+ domain: z.ZodNullable<z.ZodString>;
91
+ country: z.ZodNullable<z.ZodString>;
92
+ logoUrl: z.ZodNullable<z.ZodString>;
93
+ parentName: z.ZodNullable<z.ZodString>;
94
+ source: z.ZodLiteral<"pdl">;
95
+ pdlId: z.ZodString;
96
+ }, z.core.$strip>], "source">>;
97
+ }, z.core.$strip>;
98
+ type EntityImportSearchResponse = z.infer<typeof EntityImportSearchResponseSchema>;
99
+
3
100
  /**
4
101
  * Profile row shared across `/api/following`, `/api/profile/:handleOrDid/mutuals`,
5
102
  * and `/api/me/bluesky-suggestions`. Matches the existing `FollowProfile` TS
@@ -251,4 +348,4 @@ interface FeedCursor {
251
348
  declare function encodeFeedCursor(cursor: FeedCursor): string;
252
349
  declare function decodeFeedCursor(encoded: string): FeedCursor;
253
350
 
254
- export { type AtmosphereFeedItem as A, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, FEATURE_FLAGS as e, FeatureAllowlistEntrySchema as f, type FeedActor as g, FeedActorSchema as h, type FeedCursor as i, type FollowFeedItem as j, FollowFeedItemSchema as k, FollowFeedPageSchema as l, type FollowProfilePage as m, FollowProfilePageSchema as n, FollowProfileSchema as o, SifaFeedItemSchema as p, decodeFeedCursor as q, encodeFeedCursor as r };
351
+ export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntitySearchResult as E, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, type EntityImportSearchResponse as e, EntityImportSearchResponseSchema as f, type EntitySearchResponse as g, EntitySearchResponseSchema as h, EntitySearchResultSchema as i, type EntitySelectRequest as j, EntitySelectRequestSchema as k, type EntitySelectResponse as l, EntitySelectResponseSchema as m, FEATURE_FLAGS as n, FeatureAllowlistEntrySchema as o, type FeedActor as p, FeedActorSchema as q, type FeedCursor as r, type FollowFeedItem as s, FollowFeedItemSchema as t, FollowFeedPageSchema as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
@@ -1,5 +1,102 @@
1
1
  import { z } from 'zod';
2
2
 
3
+ /**
4
+ * A single typeahead row. Discriminated on `source`: a curated `entity` row
5
+ * carries `entityId`, a `pdl` staging row carries `pdlId`. The union guarantees
6
+ * the identifier for the row's source is always present, so a stable React key
7
+ * can never be `entity:undefined`. The disambiguation fields
8
+ * (domain/country/parentName) drive the dropdown display.
9
+ */
10
+ declare const EntitySearchResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ kind: z.ZodString;
12
+ name: z.ZodString;
13
+ domain: z.ZodNullable<z.ZodString>;
14
+ country: z.ZodNullable<z.ZodString>;
15
+ logoUrl: z.ZodNullable<z.ZodString>;
16
+ parentName: z.ZodNullable<z.ZodString>;
17
+ source: z.ZodLiteral<"entity">;
18
+ entityId: z.ZodNumber;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ kind: z.ZodString;
21
+ name: z.ZodString;
22
+ domain: z.ZodNullable<z.ZodString>;
23
+ country: z.ZodNullable<z.ZodString>;
24
+ logoUrl: z.ZodNullable<z.ZodString>;
25
+ parentName: z.ZodNullable<z.ZodString>;
26
+ source: z.ZodLiteral<"pdl">;
27
+ pdlId: z.ZodString;
28
+ }, z.core.$strip>], "source">;
29
+ type EntitySearchResult = z.infer<typeof EntitySearchResultSchema>;
30
+ /** Response of `GET /api/entities/search`. */
31
+ declare const EntitySearchResponseSchema: z.ZodObject<{
32
+ results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
33
+ kind: z.ZodString;
34
+ name: z.ZodString;
35
+ domain: z.ZodNullable<z.ZodString>;
36
+ country: z.ZodNullable<z.ZodString>;
37
+ logoUrl: z.ZodNullable<z.ZodString>;
38
+ parentName: z.ZodNullable<z.ZodString>;
39
+ source: z.ZodLiteral<"entity">;
40
+ entityId: z.ZodNumber;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ kind: z.ZodString;
43
+ name: z.ZodString;
44
+ domain: z.ZodNullable<z.ZodString>;
45
+ country: z.ZodNullable<z.ZodString>;
46
+ logoUrl: z.ZodNullable<z.ZodString>;
47
+ parentName: z.ZodNullable<z.ZodString>;
48
+ source: z.ZodLiteral<"pdl">;
49
+ pdlId: z.ZodString;
50
+ }, z.core.$strip>], "source">>;
51
+ hasMore: z.ZodBoolean;
52
+ }, z.core.$strip>;
53
+ type EntitySearchResponse = z.infer<typeof EntitySearchResponseSchema>;
54
+ /**
55
+ * Body of `POST /api/entities/select`: promote a PDL row OR bump an entity.
56
+ * Exactly one of `entityId`/`pdlId` must be present -- supplying both is
57
+ * ambiguous (the server would have to silently pick one) and is rejected.
58
+ */
59
+ declare const EntitySelectRequestSchema: z.ZodObject<{
60
+ entityId: z.ZodOptional<z.ZodNumber>;
61
+ pdlId: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strip>;
63
+ type EntitySelectRequest = z.infer<typeof EntitySelectRequestSchema>;
64
+ /** Response of `POST /api/entities/select`. `entityRef` is the portable
65
+ * Wikidata/ROR/LEI URI to write to the position record, or null for a
66
+ * PDL-only entity (its resolution stays AppView-side). */
67
+ declare const EntitySelectResponseSchema: z.ZodObject<{
68
+ entityId: z.ZodNumber;
69
+ slug: z.ZodString;
70
+ kind: z.ZodString;
71
+ canonicalName: z.ZodString;
72
+ domain: z.ZodNullable<z.ZodString>;
73
+ entityRef: z.ZodNullable<z.ZodString>;
74
+ }, z.core.$strip>;
75
+ type EntitySelectResponse = z.infer<typeof EntitySelectResponseSchema>;
76
+ /** Response of `POST /api/entities/import-search`. */
77
+ declare const EntityImportSearchResponseSchema: z.ZodObject<{
78
+ results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
79
+ kind: z.ZodString;
80
+ name: z.ZodString;
81
+ domain: z.ZodNullable<z.ZodString>;
82
+ country: z.ZodNullable<z.ZodString>;
83
+ logoUrl: z.ZodNullable<z.ZodString>;
84
+ parentName: z.ZodNullable<z.ZodString>;
85
+ source: z.ZodLiteral<"entity">;
86
+ entityId: z.ZodNumber;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ kind: z.ZodString;
89
+ name: z.ZodString;
90
+ domain: z.ZodNullable<z.ZodString>;
91
+ country: z.ZodNullable<z.ZodString>;
92
+ logoUrl: z.ZodNullable<z.ZodString>;
93
+ parentName: z.ZodNullable<z.ZodString>;
94
+ source: z.ZodLiteral<"pdl">;
95
+ pdlId: z.ZodString;
96
+ }, z.core.$strip>], "source">>;
97
+ }, z.core.$strip>;
98
+ type EntityImportSearchResponse = z.infer<typeof EntityImportSearchResponseSchema>;
99
+
3
100
  /**
4
101
  * Profile row shared across `/api/following`, `/api/profile/:handleOrDid/mutuals`,
5
102
  * and `/api/me/bluesky-suggestions`. Matches the existing `FollowProfile` TS
@@ -251,4 +348,4 @@ interface FeedCursor {
251
348
  declare function encodeFeedCursor(cursor: FeedCursor): string;
252
349
  declare function decodeFeedCursor(encoded: string): FeedCursor;
253
350
 
254
- export { type AtmosphereFeedItem as A, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, FEATURE_FLAGS as e, FeatureAllowlistEntrySchema as f, type FeedActor as g, FeedActorSchema as h, type FeedCursor as i, type FollowFeedItem as j, FollowFeedItemSchema as k, FollowFeedPageSchema as l, type FollowProfilePage as m, FollowProfilePageSchema as n, FollowProfileSchema as o, SifaFeedItemSchema as p, decodeFeedCursor as q, encodeFeedCursor as r };
351
+ export { type AtmosphereFeedItem as A, encodeFeedCursor as B, type EntitySearchResult as E, type FollowFeedPage as F, type SifaFeedItem as S, type FollowProfileItem as a, type FeatureAllowlistEntry as b, type FeatureFlag as c, AtmosphereFeedItemSchema as d, type EntityImportSearchResponse as e, EntityImportSearchResponseSchema as f, type EntitySearchResponse as g, EntitySearchResponseSchema as h, EntitySearchResultSchema as i, type EntitySelectRequest as j, EntitySelectRequestSchema as k, type EntitySelectResponse as l, EntitySelectResponseSchema as m, FEATURE_FLAGS as n, FeatureAllowlistEntrySchema as o, type FeedActor as p, FeedActorSchema as q, type FeedCursor as r, type FollowFeedItem as s, FollowFeedItemSchema as t, FollowFeedPageSchema as u, type FollowProfilePage as v, FollowProfilePageSchema as w, FollowProfileSchema as x, SifaFeedItemSchema as y, decodeFeedCursor as z };
package/dist/index.cjs CHANGED
@@ -1754,7 +1754,17 @@ function normalizePresentationRole(value) {
1754
1754
  const v = clean(value).toLowerCase();
1755
1755
  if (!v) return void 0;
1756
1756
  if (v.startsWith("id.sifa.defs#")) return v;
1757
- return ROLE_TOKENS[v] ?? v;
1757
+ const exact = ROLE_TOKENS[v];
1758
+ if (exact) return exact;
1759
+ if (v.includes("keynote")) return ROLE_TOKENS.keynote;
1760
+ if (v.includes("workshop") || v.includes("masterclass") || v.includes("training"))
1761
+ return ROLE_TOKENS.workshop;
1762
+ if (v.includes("panel")) return ROLE_TOKENS.panelist;
1763
+ if (v.includes("host") || v.includes("moderat") || v.includes("emcee") || v.includes("chair"))
1764
+ return ROLE_TOKENS.host;
1765
+ if (v.includes("speaker") || v.includes("present") || v.includes("talk"))
1766
+ return ROLE_TOKENS.presenter;
1767
+ return void 0;
1758
1768
  }
1759
1769
  var MODE_FRAGMENTS = {
1760
1770
  inperson: "#inperson",
@@ -2394,6 +2404,56 @@ function pickPrimaryPosition(positions) {
2394
2404
  if (flagged) return flagged;
2395
2405
  return [...active].sort((a, b) => (b.startedAt ?? "").localeCompare(a.startedAt ?? ""))[0];
2396
2406
  }
2407
+
2408
+ // src/logic/pseudo-employer.ts
2409
+ var PSEUDO_EMPLOYERS = /* @__PURE__ */ new Set([
2410
+ "self",
2411
+ "self employed",
2412
+ "selfemployed",
2413
+ "self employment",
2414
+ "self employed freelance",
2415
+ "freelance",
2416
+ "freelancer",
2417
+ "freelancing",
2418
+ "freelance work",
2419
+ "independent",
2420
+ "independent contractor",
2421
+ "independent consultant",
2422
+ "independent professional",
2423
+ "sole proprietor",
2424
+ "sole proprietorship",
2425
+ "sole trader",
2426
+ "own business",
2427
+ "my own business",
2428
+ "self employed consultant"
2429
+ ]);
2430
+ function normalizePseudo(value) {
2431
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim().replace(/\s+/g, " ");
2432
+ }
2433
+ function isPseudoEmployer(company) {
2434
+ const normalized = normalizePseudo(company);
2435
+ if (!normalized) return false;
2436
+ return PSEUDO_EMPLOYERS.has(normalized);
2437
+ }
2438
+
2439
+ // src/logic/entity-disambiguation.ts
2440
+ function entityDisambiguationLabel(fields) {
2441
+ const parts = [];
2442
+ if (fields.domain) parts.push(fields.domain);
2443
+ if (fields.country) parts.push(fields.country);
2444
+ if (fields.parentName) parts.push(`part of ${fields.parentName}`);
2445
+ return parts.join(" \xB7 ");
2446
+ }
2447
+ function searchResultDisambiguation(result) {
2448
+ return entityDisambiguationLabel({
2449
+ domain: result.domain,
2450
+ country: result.country,
2451
+ parentName: result.parentName
2452
+ });
2453
+ }
2454
+ function entityResultKey(result) {
2455
+ return result.source === "entity" ? `entity:${result.entityId}` : `pdl:${result.pdlId}`;
2456
+ }
2397
2457
  function maxGraphemes(max) {
2398
2458
  return (value) => {
2399
2459
  const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
@@ -2429,6 +2489,48 @@ var EndorsementConfirmationRecordSchema = zod.z.object({
2429
2489
  endorsement: strongRefSchema,
2430
2490
  createdAt: datetimeSchema
2431
2491
  });
2492
+ var httpUrlNullable = zod.z.string().refine((s) => /^https?:\/\//i.test(s), { message: "must be an http(s) URL" }).nullable();
2493
+ var searchResultCommon = {
2494
+ kind: zod.z.string(),
2495
+ name: zod.z.string(),
2496
+ domain: zod.z.string().nullable(),
2497
+ country: zod.z.string().nullable(),
2498
+ logoUrl: httpUrlNullable,
2499
+ parentName: zod.z.string().nullable()
2500
+ };
2501
+ var EntitySearchResultSchema = zod.z.discriminatedUnion("source", [
2502
+ zod.z.object({
2503
+ source: zod.z.literal("entity"),
2504
+ entityId: zod.z.number().int().positive(),
2505
+ ...searchResultCommon
2506
+ }),
2507
+ zod.z.object({
2508
+ source: zod.z.literal("pdl"),
2509
+ pdlId: zod.z.string().min(1),
2510
+ ...searchResultCommon
2511
+ })
2512
+ ]);
2513
+ var EntitySearchResponseSchema = zod.z.object({
2514
+ results: zod.z.array(EntitySearchResultSchema),
2515
+ hasMore: zod.z.boolean()
2516
+ });
2517
+ var EntitySelectRequestSchema = zod.z.object({
2518
+ entityId: zod.z.number().int().positive().optional(),
2519
+ pdlId: zod.z.string().min(1).optional()
2520
+ }).refine((v) => v.entityId != null !== (v.pdlId != null), {
2521
+ message: "exactly one of entityId or pdlId is required"
2522
+ });
2523
+ var EntitySelectResponseSchema = zod.z.object({
2524
+ entityId: zod.z.number().int().positive(),
2525
+ slug: zod.z.string(),
2526
+ kind: zod.z.string(),
2527
+ canonicalName: zod.z.string(),
2528
+ domain: zod.z.string().nullable(),
2529
+ entityRef: httpUrlNullable
2530
+ });
2531
+ var EntityImportSearchResponseSchema = zod.z.object({
2532
+ results: zod.z.array(EntitySearchResultSchema)
2533
+ });
2432
2534
  var EndorsementRecordSchema = zod.z.object({
2433
2535
  subject: didSchema,
2434
2536
  skill: strongRefSchema,
@@ -2695,7 +2797,7 @@ var ProfileVolunteeringRecordSchema = zod.z.object({
2695
2797
  });
2696
2798
 
2697
2799
  // src/index.ts
2698
- var SIFA_SDK_VERSION = "0.11.12";
2800
+ var SIFA_SDK_VERSION = "0.11.14";
2699
2801
 
2700
2802
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
2701
2803
  exports.ACTIVITY_VISIBILITY_RULES = ACTIVITY_VISIBILITY_RULES;
@@ -2719,6 +2821,11 @@ exports.EMPLOYMENT_TYPE_GROUPS = EMPLOYMENT_TYPE_GROUPS;
2719
2821
  exports.EMPLOYMENT_TYPE_LABELS = EMPLOYMENT_TYPE_LABELS;
2720
2822
  exports.EndorsementConfirmationRecordSchema = EndorsementConfirmationRecordSchema;
2721
2823
  exports.EndorsementRecordSchema = EndorsementRecordSchema;
2824
+ exports.EntityImportSearchResponseSchema = EntityImportSearchResponseSchema;
2825
+ exports.EntitySearchResponseSchema = EntitySearchResponseSchema;
2826
+ exports.EntitySearchResultSchema = EntitySearchResultSchema;
2827
+ exports.EntitySelectRequestSchema = EntitySelectRequestSchema;
2828
+ exports.EntitySelectResponseSchema = EntitySelectResponseSchema;
2722
2829
  exports.FEATURE_FLAGS = FEATURE_FLAGS;
2723
2830
  exports.FeatureAllowlistEntrySchema = FeatureAllowlistEntrySchema;
2724
2831
  exports.FeedActorSchema = FeedActorSchema;
@@ -2781,6 +2888,8 @@ exports.didSchema = didSchema;
2781
2888
  exports.dimensionsFromInputs = dimensionsFromInputs;
2782
2889
  exports.durationFromMinutes = durationFromMinutes;
2783
2890
  exports.encodeFeedCursor = encodeFeedCursor;
2891
+ exports.entityDisambiguationLabel = entityDisambiguationLabel;
2892
+ exports.entityResultKey = entityResultKey;
2784
2893
  exports.externalRecordRefSchema = externalRecordRefSchema;
2785
2894
  exports.findIndustry = findIndustry;
2786
2895
  exports.formatDistanceToNow = formatDistanceToNow;
@@ -2817,6 +2926,7 @@ exports.isAppCategory = isAppCategory;
2817
2926
  exports.isCompanyRequired = isCompanyRequired;
2818
2927
  exports.isKnownAppId = isKnownAppId;
2819
2928
  exports.isKnownPlatform = isKnownPlatform;
2929
+ exports.isPseudoEmployer = isPseudoEmployer;
2820
2930
  exports.isValidRgbColor = isValidRgbColor;
2821
2931
  exports.isVisibleActivityItem = isVisibleActivityItem;
2822
2932
  exports.languageTagSchema = languageTagSchema;
@@ -2846,6 +2956,7 @@ exports.resolveCardUrl = resolveCardUrl;
2846
2956
  exports.rgbToString = rgbToString;
2847
2957
  exports.sanitizeDisplayText = sanitizeDisplayText;
2848
2958
  exports.sanitizeHandleInput = sanitizeHandleInput;
2959
+ exports.searchResultDisambiguation = searchResultDisambiguation;
2849
2960
  exports.selfLabelsSchema = selfLabelsSchema;
2850
2961
  exports.singleDateExtractor = singleDateExtractor;
2851
2962
  exports.sortByDateDesc = sortByDateDesc;