@singi-labs/sifa-sdk 0.11.23 → 0.11.25
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/{adult-content-DLMF0jAx.d.cts → adult-content-pvNBfDQL.d.cts} +32 -1
- package/dist/{adult-content-DLMF0jAx.d.ts → adult-content-pvNBfDQL.d.ts} +32 -1
- package/dist/{feed-DMWCGvKv.d.cts → feed-D2ZV8Eaj.d.cts} +74 -1
- package/dist/{feed-DMWCGvKv.d.ts → feed-D2ZV8Eaj.d.ts} +74 -1
- package/dist/index-BXi6sYhX.d.ts +611 -0
- package/dist/index-CCi2sg_u.d.ts +261 -0
- package/dist/index-CtH-frgT.d.cts +611 -0
- package/dist/index-OBJQIB9t.d.cts +261 -0
- package/dist/index.cjs +134 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +64 -7
- package/dist/index.d.ts +64 -7
- package/dist/index.js +120 -2
- package/dist/index.js.map +1 -1
- package/dist/{keys-OgHsKn9B.d.ts → keys-CxTXTPnI.d.ts} +2 -2
- package/dist/{keys-6Ck_vMeF.d.cts → keys-c5LIN2pO.d.cts} +2 -2
- package/dist/query/fetchers/index.cjs +11 -0
- package/dist/query/fetchers/index.cjs.map +1 -1
- package/dist/query/fetchers/index.d.cts +4 -247
- package/dist/query/fetchers/index.d.ts +4 -247
- package/dist/query/fetchers/index.js +11 -0
- package/dist/query/fetchers/index.js.map +1 -1
- package/dist/query/hooks/index.cjs +11 -0
- package/dist/query/hooks/index.cjs.map +1 -1
- package/dist/query/hooks/index.d.cts +6 -558
- package/dist/query/hooks/index.d.ts +6 -558
- package/dist/query/hooks/index.js +11 -0
- package/dist/query/hooks/index.js.map +1 -1
- package/dist/query/index.cjs +47 -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 +44 -1
- package/dist/query/index.js.map +1 -1
- package/dist/schemas/index.cjs +14 -0
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +415 -3
- package/dist/schemas/index.d.ts +415 -3
- package/dist/schemas/index.js +12 -1
- package/dist/schemas/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/shared-CHCY7Lst.d.cts +0 -416
- package/dist/shared-CHCY7Lst.d.ts +0 -416
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { S as SifaApiConfig, A as ApiFetchOptions, j as CreateResult, W as WriteResult } from './keys-c5LIN2pO.cjs';
|
|
2
|
+
import { d as Profile, v as ProfilePosition, D as SkillRef } from './adult-content-pvNBfDQL.cjs';
|
|
3
|
+
import { m as EntitySearchResponse, E as EntitySearchResult, g as EntityMintDomainResponse, k as EntityResolveDomainResponse, p as EntitySelectRequest, r as EntitySelectResponse } from './feed-D2ZV8Eaj.cjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Read the aggregated profile for a handle or DID.
|
|
7
|
+
*
|
|
8
|
+
* Returns `null` when the AppView has no profile for the given identifier
|
|
9
|
+
* (HTTP 404). Throws {@link ApiError} on other non-2xx responses.
|
|
10
|
+
*
|
|
11
|
+
* Server-callable (Next.js RSC) and client-callable (Expo, browser).
|
|
12
|
+
*/
|
|
13
|
+
declare function fetchProfile(config: SifaApiConfig, handleOrDid: string, options?: ApiFetchOptions): Promise<Profile | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Public AT Fund link for a profile, if one is configured. Returns `null`
|
|
16
|
+
* on any error or when the response payload's `url` field is missing or
|
|
17
|
+
* non-string.
|
|
18
|
+
*/
|
|
19
|
+
declare function fetchAtFundLink(config: SifaApiConfig, did: string, options?: ApiFetchOptions): Promise<string | null>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Create a new `id.sifa.profile.position` record on the authenticated
|
|
23
|
+
* user's PDS. The AppView signs and writes via the user's OAuth session.
|
|
24
|
+
*
|
|
25
|
+
* `data` should be a lexicon-shaped position record (without `createdAt`
|
|
26
|
+
* or `rkey`; the AppView fills both). Validate with
|
|
27
|
+
* `ProfilePositionRecordSchema.omit({ createdAt: true })` before calling
|
|
28
|
+
* if you want client-side guarantees.
|
|
29
|
+
*
|
|
30
|
+
* Never throws -- inspect `result.success` and use `result.error` /
|
|
31
|
+
* `result.pdsHost` for UI messaging.
|
|
32
|
+
*/
|
|
33
|
+
declare function createPosition(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
|
|
34
|
+
/** Update an existing position by `rkey`. */
|
|
35
|
+
declare function updatePosition(config: SifaApiConfig, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
36
|
+
/** Delete a position by `rkey`. */
|
|
37
|
+
declare function deletePosition(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
38
|
+
/** Mark a position as the user's primary (current) role. */
|
|
39
|
+
declare function setPositionPrimary(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
40
|
+
/** Clear the "primary" flag on a position. */
|
|
41
|
+
declare function unsetPositionPrimary(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Add a skill link to a position. Idempotent: if the skill is already
|
|
44
|
+
* linked, resolves to `{ success: true }` without a network call.
|
|
45
|
+
*
|
|
46
|
+
* Implementation note: the AppView only exposes whole-record PUTs, so
|
|
47
|
+
* this helper rebuilds the position body with the new skills list.
|
|
48
|
+
*/
|
|
49
|
+
declare function linkSkillToPosition(config: SifaApiConfig, position: ProfilePosition, skillRef: SkillRef, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
50
|
+
/** Remove a skill link from a position. */
|
|
51
|
+
declare function unlinkSkillFromPosition(config: SifaApiConfig, position: ProfilePosition, skillRef: SkillRef, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Create a new `id.sifa.profile.education` record on the authenticated
|
|
55
|
+
* user's PDS.
|
|
56
|
+
*/
|
|
57
|
+
declare function createEducation(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
|
|
58
|
+
/** Update an existing education record by `rkey`. */
|
|
59
|
+
declare function updateEducation(config: SifaApiConfig, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
60
|
+
/** Delete an education record by `rkey`. */
|
|
61
|
+
declare function deleteEducation(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Create a new `id.sifa.profile.skill` record on the authenticated
|
|
65
|
+
* user's PDS.
|
|
66
|
+
*/
|
|
67
|
+
declare function createSkill(config: SifaApiConfig, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
|
|
68
|
+
/** Update an existing skill record by `rkey`. */
|
|
69
|
+
declare function updateSkill(config: SifaApiConfig, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
70
|
+
/** Delete a skill record by `rkey`. */
|
|
71
|
+
declare function deleteSkill(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Generic record-create escape hatch. Most callers should prefer the
|
|
75
|
+
* dedicated section helpers (`createPosition`, `createEducation`, etc.)
|
|
76
|
+
* which take typed payloads and ship matching hooks. Use this when the
|
|
77
|
+
* lexicon doesn't yet have a dedicated endpoint (certifications,
|
|
78
|
+
* projects, publications, volunteering, honors, languages, courses).
|
|
79
|
+
*
|
|
80
|
+
* `collection` is a `id.sifa.profile.*` collection NSID. Routes to
|
|
81
|
+
* `POST /api/profile/records/<collection>`.
|
|
82
|
+
*/
|
|
83
|
+
declare function createRecord(config: SifaApiConfig, collection: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<CreateResult>;
|
|
84
|
+
/** Generic record-update escape hatch. See {@link createRecord}. */
|
|
85
|
+
declare function updateRecord(config: SifaApiConfig, collection: string, rkey: string, data: Record<string, unknown>, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
86
|
+
/** Generic record-delete escape hatch. See {@link createRecord}. */
|
|
87
|
+
declare function deleteRecord(config: SifaApiConfig, collection: string, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Hide a keytrace claim (verified-account claim discovered on the
|
|
91
|
+
* user's external accounts) from the user's profile. The claim itself
|
|
92
|
+
* stays in the index; only its display is suppressed.
|
|
93
|
+
*/
|
|
94
|
+
declare function hideKeytraceClaim(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
95
|
+
/** Restore a previously-hidden keytrace claim. */
|
|
96
|
+
declare function unhideKeytraceClaim(config: SifaApiConfig, rkey: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Make a Marque-registered domain public in the owner's Links section. Marque
|
|
100
|
+
* domains are owner-only by default; this reveals one. `domain` is the
|
|
101
|
+
* at.marque.domain rkey (the domain name itself).
|
|
102
|
+
*/
|
|
103
|
+
declare function revealMarqueDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
104
|
+
/** Make a previously-revealed Marque domain owner-only again. */
|
|
105
|
+
declare function unrevealMarqueDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<WriteResult>;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Organization typeahead. Returns curated entities first, then the PDL crawl,
|
|
109
|
+
* deduped by domain. Empty input returns an empty result without a network call.
|
|
110
|
+
*/
|
|
111
|
+
declare function fetchEntitySearch(config: SifaApiConfig, query: string, limit?: number, options?: ApiFetchOptions): Promise<EntitySearchResponse>;
|
|
112
|
+
/**
|
|
113
|
+
* Record a selection: promote a PDL row into a canonical entity (dedupe by
|
|
114
|
+
* domain) or bump an existing entity's usage counter. Returns the entity plus
|
|
115
|
+
* its portable `entityRef` (null for PDL-only entities). Requires a session.
|
|
116
|
+
*/
|
|
117
|
+
declare function selectEntity(config: SifaApiConfig, body: EntitySelectRequest, options?: ApiFetchOptions): Promise<EntitySelectResponse>;
|
|
118
|
+
/**
|
|
119
|
+
* Grow-on-demand: when the local typeahead misses, resolve the query live via
|
|
120
|
+
* Wikidata, import the org-class matches, and return them. Requires a session.
|
|
121
|
+
* Empty input returns an empty array without a network call.
|
|
122
|
+
*/
|
|
123
|
+
declare function importSearchEntities(config: SifaApiConfig, query: string, options?: ApiFetchOptions): Promise<EntitySearchResult[]>;
|
|
124
|
+
/**
|
|
125
|
+
* Grow-on-demand by domain, Branch 1: when a domain-shaped typeahead query
|
|
126
|
+
* misses locally, resolve any notable company whose official website is that
|
|
127
|
+
* domain (Wikidata reverse P856), importing the matches. Read-only w.r.t.
|
|
128
|
+
* minting. `canMint` tells the caller whether to offer the user-initiated
|
|
129
|
+
* "Add <domain>" affordance. Requires a session.
|
|
130
|
+
*/
|
|
131
|
+
declare function resolveEntityDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<EntityResolveDomainResponse>;
|
|
132
|
+
/**
|
|
133
|
+
* Grow-on-demand by domain, Branch 2 (user-initiated): mint a crawled-tier
|
|
134
|
+
* entity from the domain's own homepage (or resolve it to a notable company if
|
|
135
|
+
* one exists). Throws on a non-2xx response (domain not mintable, or the site
|
|
136
|
+
* yielded nothing usable). Requires a session.
|
|
137
|
+
*/
|
|
138
|
+
declare function mintEntityDomain(config: SifaApiConfig, domain: string, options?: ApiFetchOptions): Promise<EntityMintDomainResponse>;
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Counts confirmed endorsements received by a DID. The backend's
|
|
142
|
+
* `GET /api/endorsement/:did` already returns only confirmed endorsements
|
|
143
|
+
* (via inner join with `endorsementConfirmations`), so this helper just
|
|
144
|
+
* returns the array length. Failures return 0 so callers can route safely.
|
|
145
|
+
*
|
|
146
|
+
* Public endpoint -- no credentials needed.
|
|
147
|
+
*/
|
|
148
|
+
declare function fetchEndorsementCount(config: SifaApiConfig, did: string, options?: ApiFetchOptions): Promise<number>;
|
|
149
|
+
|
|
150
|
+
interface FetchNetworkStreamCountOptions extends ApiFetchOptions {
|
|
151
|
+
/**
|
|
152
|
+
* Pass the caller's `Cookie` header on Next.js RSC server-side calls.
|
|
153
|
+
* Required for authenticated server fetches because `credentials: 'include'`
|
|
154
|
+
* does not propagate browser cookies in RSC.
|
|
155
|
+
*
|
|
156
|
+
* When omitted, the request falls back to `credentials: 'include'` so
|
|
157
|
+
* client-side calls work without extra plumbing.
|
|
158
|
+
*/
|
|
159
|
+
cookieHeader?: string;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Counts items in the authenticated user's network stream digest. The
|
|
163
|
+
* underlying `GET /api/stream/network` endpoint may 404 while the feature
|
|
164
|
+
* is in development; in that case (and on any other error) this returns
|
|
165
|
+
* 0 so callers can route safely to a fallback experience.
|
|
166
|
+
*/
|
|
167
|
+
declare function fetchNetworkStreamCount(config: SifaApiConfig, did: string, options?: FetchNetworkStreamCountOptions): Promise<number>;
|
|
168
|
+
|
|
169
|
+
/** A node in the personal network graph. */
|
|
170
|
+
interface NetworkMapNode {
|
|
171
|
+
did: string;
|
|
172
|
+
handle: string;
|
|
173
|
+
displayName: string;
|
|
174
|
+
avatar: string | null;
|
|
175
|
+
/** Number of edges this node participates in within the rendered graph. */
|
|
176
|
+
degree: number;
|
|
177
|
+
/** Phase 2: community detection cluster id. */
|
|
178
|
+
cluster?: number;
|
|
179
|
+
/** Phase 2: pre-computed layout coordinates. */
|
|
180
|
+
x?: number;
|
|
181
|
+
y?: number;
|
|
182
|
+
}
|
|
183
|
+
/** A directed edge in the personal network graph. */
|
|
184
|
+
interface NetworkMapEdge {
|
|
185
|
+
source: string;
|
|
186
|
+
target: string;
|
|
187
|
+
mutual: boolean;
|
|
188
|
+
/** Networks this edge was observed in, e.g. `['sifa', 'bluesky']`. */
|
|
189
|
+
sources: string[];
|
|
190
|
+
}
|
|
191
|
+
/** The graph payload itself, decoupled from response metadata. */
|
|
192
|
+
interface NetworkMapGraphData {
|
|
193
|
+
nodes: NetworkMapNode[];
|
|
194
|
+
edges: NetworkMapEdge[];
|
|
195
|
+
/** Phase 2: cluster metadata for legend rendering. */
|
|
196
|
+
clusters?: Array<{
|
|
197
|
+
id: number;
|
|
198
|
+
label: string;
|
|
199
|
+
color: string;
|
|
200
|
+
}>;
|
|
201
|
+
}
|
|
202
|
+
/** Cached graph response. */
|
|
203
|
+
interface NetworkMapResponse {
|
|
204
|
+
generatedAt: string;
|
|
205
|
+
expiresAt: string;
|
|
206
|
+
graph: NetworkMapGraphData;
|
|
207
|
+
stats: {
|
|
208
|
+
totalNodes: number;
|
|
209
|
+
totalEdges: number;
|
|
210
|
+
mutualCount: number;
|
|
211
|
+
sources: Record<string, number>;
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/** Async job tracking generation progress. */
|
|
215
|
+
interface NetworkMapGenerationJob {
|
|
216
|
+
jobId: string;
|
|
217
|
+
did: string;
|
|
218
|
+
status: 'pending' | 'complete' | 'failed';
|
|
219
|
+
/** 0..100 */
|
|
220
|
+
progress: number;
|
|
221
|
+
createdAt: string;
|
|
222
|
+
completedAt?: string;
|
|
223
|
+
error?: string;
|
|
224
|
+
/**
|
|
225
|
+
* Queue position when the job is still pending and not yet picked up
|
|
226
|
+
* by the worker. 0 = next to run. Absent for in-flight or terminal
|
|
227
|
+
* jobs (and for any backend that doesn't yet report position).
|
|
228
|
+
*/
|
|
229
|
+
position?: number;
|
|
230
|
+
/**
|
|
231
|
+
* Estimated remaining seconds, derived server-side from the median
|
|
232
|
+
* historical duration for the user's follow-count bucket multiplied
|
|
233
|
+
* by `position + 1`. Absent when no historical data exists yet.
|
|
234
|
+
*/
|
|
235
|
+
etaSeconds?: number;
|
|
236
|
+
}
|
|
237
|
+
/** Returned by `initiateNetworkMapGeneration` when a new job was started or one was already running. */
|
|
238
|
+
interface NetworkMapPendingJob {
|
|
239
|
+
jobId: string;
|
|
240
|
+
status: 'pending' | 'cached';
|
|
241
|
+
}
|
|
242
|
+
/** Discriminate the union returned by `initiateNetworkMapGeneration`. */
|
|
243
|
+
declare function isNetworkMapResponse(value: NetworkMapPendingJob | NetworkMapResponse): value is NetworkMapResponse;
|
|
244
|
+
/**
|
|
245
|
+
* Kick off a personal network-map computation. The backend returns the
|
|
246
|
+
* cached map immediately when fresh, otherwise it returns a job id that
|
|
247
|
+
* the caller polls via `checkNetworkMapJobStatus`.
|
|
248
|
+
*/
|
|
249
|
+
declare function initiateNetworkMapGeneration(config: SifaApiConfig, options?: ApiFetchOptions): Promise<NetworkMapPendingJob | NetworkMapResponse>;
|
|
250
|
+
/**
|
|
251
|
+
* Poll the status of an in-flight generation job. Throws on 404 (unknown
|
|
252
|
+
* or expired job) — callers may want to treat that as terminal failure.
|
|
253
|
+
*/
|
|
254
|
+
declare function checkNetworkMapJobStatus(config: SifaApiConfig, jobId: string, options?: ApiFetchOptions): Promise<NetworkMapGenerationJob>;
|
|
255
|
+
/**
|
|
256
|
+
* Fetch the most recent cached network map for the authenticated user.
|
|
257
|
+
* Returns `null` when no map has ever been generated (404).
|
|
258
|
+
*/
|
|
259
|
+
declare function fetchNetworkMap(config: SifaApiConfig, options?: ApiFetchOptions): Promise<NetworkMapResponse | null>;
|
|
260
|
+
|
|
261
|
+
export { resolveEntityDomain as A, revealMarqueDomain as B, selectEntity as C, setPositionPrimary as D, unhideKeytraceClaim as E, type FetchNetworkStreamCountOptions as F, unlinkSkillFromPosition as G, unrevealMarqueDomain as H, unsetPositionPrimary as I, updateEducation as J, updatePosition as K, updateRecord as L, updateSkill as M, type NetworkMapEdge as N, type NetworkMapGenerationJob as a, type NetworkMapGraphData as b, type NetworkMapNode as c, type NetworkMapPendingJob as d, type NetworkMapResponse as e, checkNetworkMapJobStatus as f, createEducation as g, createPosition as h, createRecord as i, createSkill as j, deleteEducation as k, deletePosition as l, deleteRecord as m, deleteSkill as n, fetchAtFundLink as o, fetchEndorsementCount as p, fetchEntitySearch as q, fetchNetworkMap as r, fetchNetworkStreamCount as s, fetchProfile as t, hideKeytraceClaim as u, importSearchEntities as v, initiateNetworkMapGeneration as w, isNetworkMapResponse as x, linkSkillToPosition as y, mintEntityDomain as z };
|
package/dist/index.cjs
CHANGED
|
@@ -1434,6 +1434,53 @@ function getCalendarEventStatusLabel(value) {
|
|
|
1434
1434
|
return CALENDAR_EVENT_STATUS_LABELS[value] ?? value;
|
|
1435
1435
|
}
|
|
1436
1436
|
|
|
1437
|
+
// src/taxonomy/involvement-kind.ts
|
|
1438
|
+
var INVOLVEMENT_KIND_OPTIONS = [
|
|
1439
|
+
{ value: "id.sifa.defs#involvementOpenSource", label: "Open source", heading: "Open Source" },
|
|
1440
|
+
{ value: "id.sifa.defs#involvementCommunity", label: "Community", heading: "Community" },
|
|
1441
|
+
{ value: "id.sifa.defs#involvementCharity", label: "Volunteering", heading: "Volunteering" },
|
|
1442
|
+
{ value: "id.sifa.defs#involvementCivic", label: "Civic", heading: "Civic" },
|
|
1443
|
+
{ value: "id.sifa.defs#involvementOther", label: "Other", heading: "Other" }
|
|
1444
|
+
];
|
|
1445
|
+
var INVOLVEMENT_KIND_LABELS = Object.fromEntries(
|
|
1446
|
+
INVOLVEMENT_KIND_OPTIONS.map((o) => [o.value, o.label])
|
|
1447
|
+
);
|
|
1448
|
+
var INVOLVEMENT_KIND_HEADINGS = Object.fromEntries(
|
|
1449
|
+
INVOLVEMENT_KIND_OPTIONS.map((o) => [o.value, o.heading])
|
|
1450
|
+
);
|
|
1451
|
+
function getInvolvementKindLabel(value) {
|
|
1452
|
+
if (!value) return void 0;
|
|
1453
|
+
return INVOLVEMENT_KIND_LABELS[value] ?? value;
|
|
1454
|
+
}
|
|
1455
|
+
function getInvolvementKindHeading(value) {
|
|
1456
|
+
if (!value) return "Other";
|
|
1457
|
+
return INVOLVEMENT_KIND_HEADINGS[value] ?? "Other";
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
// src/taxonomy/artifact-link-kind.ts
|
|
1461
|
+
var ARTIFACT_LINK_KIND_OPTIONS = [
|
|
1462
|
+
{ value: "pull-request", label: "Pull request" },
|
|
1463
|
+
{ value: "issue", label: "Issue" },
|
|
1464
|
+
{ value: "commit", label: "Commit" },
|
|
1465
|
+
{ value: "review", label: "Review" },
|
|
1466
|
+
{ value: "release", label: "Release" },
|
|
1467
|
+
{ value: "talk", label: "Talk" },
|
|
1468
|
+
{ value: "video", label: "Video" },
|
|
1469
|
+
{ value: "slides", label: "Slides" },
|
|
1470
|
+
{ value: "article", label: "Article" },
|
|
1471
|
+
{ value: "thread", label: "Thread" },
|
|
1472
|
+
{ value: "dataset", label: "Dataset" },
|
|
1473
|
+
{ value: "edit", label: "Edit" },
|
|
1474
|
+
{ value: "other", label: "Link" }
|
|
1475
|
+
];
|
|
1476
|
+
var ARTIFACT_LINK_KIND_LABELS = Object.fromEntries(
|
|
1477
|
+
ARTIFACT_LINK_KIND_OPTIONS.map((o) => [o.value, o.label])
|
|
1478
|
+
);
|
|
1479
|
+
function getArtifactLinkKindLabel(value) {
|
|
1480
|
+
if (!value) return void 0;
|
|
1481
|
+
return ARTIFACT_LINK_KIND_LABELS[value] ?? value;
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1437
1484
|
// src/format/company-name.ts
|
|
1438
1485
|
var SMALL_WORDS = /* @__PURE__ */ new Set([
|
|
1439
1486
|
"a",
|
|
@@ -2506,6 +2553,46 @@ function isPseudoEmployer(company) {
|
|
|
2506
2553
|
return PSEUDO_EMPLOYERS.has(normalized);
|
|
2507
2554
|
}
|
|
2508
2555
|
|
|
2556
|
+
// src/logic/domain-detect.ts
|
|
2557
|
+
var MAX_DOMAIN_LEN = 253;
|
|
2558
|
+
var LABEL = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
|
|
2559
|
+
var TLD = /^[a-z]{2,63}$/;
|
|
2560
|
+
function stripTrailingDots(s) {
|
|
2561
|
+
let end = s.length;
|
|
2562
|
+
while (end > 0 && s.charCodeAt(end - 1) === 46) end -= 1;
|
|
2563
|
+
return s.slice(0, end);
|
|
2564
|
+
}
|
|
2565
|
+
function looksLikeDomain(query) {
|
|
2566
|
+
const q = query.trim().toLowerCase();
|
|
2567
|
+
if (!q || q.length > MAX_DOMAIN_LEN) return false;
|
|
2568
|
+
if (q.includes(" ") || q.includes(" ") || q.includes("@")) return false;
|
|
2569
|
+
let host = q;
|
|
2570
|
+
const schemeAt = host.indexOf("://");
|
|
2571
|
+
if (schemeAt !== -1) host = host.slice(schemeAt + 3);
|
|
2572
|
+
for (let i = 0; i < host.length; i += 1) {
|
|
2573
|
+
const ch = host[i];
|
|
2574
|
+
if (ch === "/" || ch === "?" || ch === "#") {
|
|
2575
|
+
host = host.slice(0, i);
|
|
2576
|
+
break;
|
|
2577
|
+
}
|
|
2578
|
+
}
|
|
2579
|
+
if (host.startsWith("www.")) host = host.slice(4);
|
|
2580
|
+
const colonAt = host.lastIndexOf(":");
|
|
2581
|
+
if (colonAt !== -1 && /^[0-9]{1,5}$/.test(host.slice(colonAt + 1))) {
|
|
2582
|
+
host = host.slice(0, colonAt);
|
|
2583
|
+
}
|
|
2584
|
+
host = stripTrailingDots(host);
|
|
2585
|
+
if (!host || host.length > MAX_DOMAIN_LEN) return false;
|
|
2586
|
+
const labels = host.split(".");
|
|
2587
|
+
if (labels.length < 2) return false;
|
|
2588
|
+
const tld = labels[labels.length - 1];
|
|
2589
|
+
if (tld === void 0 || !TLD.test(tld)) return false;
|
|
2590
|
+
for (let i = 0; i < labels.length - 1; i += 1) {
|
|
2591
|
+
if (!LABEL.test(labels[i])) return false;
|
|
2592
|
+
}
|
|
2593
|
+
return true;
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2509
2596
|
// src/logic/entity-disambiguation.ts
|
|
2510
2597
|
function entityDisambiguationLabel(fields) {
|
|
2511
2598
|
const parts = [];
|
|
@@ -2629,6 +2716,17 @@ var EntitySelectResponseSchema = zod.z.object({
|
|
|
2629
2716
|
var EntityImportSearchResponseSchema = zod.z.object({
|
|
2630
2717
|
results: zod.z.array(EntitySearchResultSchema)
|
|
2631
2718
|
});
|
|
2719
|
+
var EntityResolveDomainRequestSchema = zod.z.object({
|
|
2720
|
+
domain: zod.z.string().min(1).max(253)
|
|
2721
|
+
});
|
|
2722
|
+
var EntityResolveDomainResponseSchema = zod.z.object({
|
|
2723
|
+
results: zod.z.array(EntitySearchResultSchema),
|
|
2724
|
+
canMint: zod.z.boolean()
|
|
2725
|
+
});
|
|
2726
|
+
var EntityMintDomainResponseSchema = zod.z.object({
|
|
2727
|
+
result: EntitySearchResultSchema,
|
|
2728
|
+
pending: zod.z.boolean()
|
|
2729
|
+
});
|
|
2632
2730
|
var EndorsementRecordSchema = zod.z.object({
|
|
2633
2731
|
subject: didSchema,
|
|
2634
2732
|
skill: strongRefSchema,
|
|
@@ -2792,6 +2890,26 @@ var ProfileHonorRecordSchema = zod.z.object({
|
|
|
2792
2890
|
awardedAt: datetimeSchema.optional(),
|
|
2793
2891
|
createdAt: datetimeSchema
|
|
2794
2892
|
});
|
|
2893
|
+
var PROFILE_INVOLVEMENT_NSID = "id.sifa.profile.involvement";
|
|
2894
|
+
var partialDateSchema = zod.z.string().regex(/^\d{4}(-\d{2}(-\d{2}(T.+)?)?)?$/, "Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime");
|
|
2895
|
+
var ArtifactLinkSchema = zod.z.object({
|
|
2896
|
+
url: uriSchema,
|
|
2897
|
+
kind: zod.z.string().optional(),
|
|
2898
|
+
label: zod.z.string().refine(maxGraphemes(200)).max(2e3).optional()
|
|
2899
|
+
}).passthrough();
|
|
2900
|
+
var ProfileInvolvementRecordSchema = zod.z.object({
|
|
2901
|
+
kind: zod.z.string(),
|
|
2902
|
+
upstream: zod.z.string().refine(maxGraphemes(256)).max(2560).optional(),
|
|
2903
|
+
upstreamDid: didSchema.optional(),
|
|
2904
|
+
upstreamUrl: uriSchema.optional(),
|
|
2905
|
+
role: zod.z.string().refine(maxGraphemes(256)).max(2560).optional(),
|
|
2906
|
+
description: zod.z.string().refine(maxGraphemes(5e3)).max(5e4).optional(),
|
|
2907
|
+
startedAt: partialDateSchema.optional(),
|
|
2908
|
+
endedAt: partialDateSchema.optional(),
|
|
2909
|
+
links: zod.z.array(ArtifactLinkSchema).max(50).optional(),
|
|
2910
|
+
labels: selfLabelsSchema.optional(),
|
|
2911
|
+
createdAt: datetimeSchema
|
|
2912
|
+
}).passthrough();
|
|
2795
2913
|
var ProfileLanguageRecordSchema = zod.z.object({
|
|
2796
2914
|
name: zod.z.string().min(1).refine(maxGraphemes(64)).max(640),
|
|
2797
2915
|
proficiency: zod.z.string().optional(),
|
|
@@ -2914,7 +3032,7 @@ var ProfileVolunteeringRecordSchema = zod.z.object({
|
|
|
2914
3032
|
});
|
|
2915
3033
|
|
|
2916
3034
|
// src/index.ts
|
|
2917
|
-
var SIFA_SDK_VERSION = "0.11.
|
|
3035
|
+
var SIFA_SDK_VERSION = "0.11.25";
|
|
2918
3036
|
|
|
2919
3037
|
exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
|
|
2920
3038
|
exports.ACTIVITY_VISIBILITY_RULES = ACTIVITY_VISIBILITY_RULES;
|
|
@@ -2923,6 +3041,9 @@ exports.APP_CATEGORIES = APP_CATEGORIES;
|
|
|
2923
3041
|
exports.APP_CATEGORY_IDS = APP_CATEGORY_IDS;
|
|
2924
3042
|
exports.APP_CATEGORY_MAP = APP_CATEGORY_MAP;
|
|
2925
3043
|
exports.APP_URL_PATTERNS = APP_URL_PATTERNS;
|
|
3044
|
+
exports.ARTIFACT_LINK_KIND_LABELS = ARTIFACT_LINK_KIND_LABELS;
|
|
3045
|
+
exports.ARTIFACT_LINK_KIND_OPTIONS = ARTIFACT_LINK_KIND_OPTIONS;
|
|
3046
|
+
exports.ArtifactLinkSchema = ArtifactLinkSchema;
|
|
2926
3047
|
exports.AtmosphereFeedItemSchema = AtmosphereFeedItemSchema;
|
|
2927
3048
|
exports.CALENDAR_EVENT_MODE_LABELS = CALENDAR_EVENT_MODE_LABELS;
|
|
2928
3049
|
exports.CALENDAR_EVENT_STATUS_LABELS = CALENDAR_EVENT_STATUS_LABELS;
|
|
@@ -2940,6 +3061,9 @@ exports.ENTITY_REF_ANCHORS = ENTITY_REF_ANCHORS;
|
|
|
2940
3061
|
exports.EndorsementConfirmationRecordSchema = EndorsementConfirmationRecordSchema;
|
|
2941
3062
|
exports.EndorsementRecordSchema = EndorsementRecordSchema;
|
|
2942
3063
|
exports.EntityImportSearchResponseSchema = EntityImportSearchResponseSchema;
|
|
3064
|
+
exports.EntityMintDomainResponseSchema = EntityMintDomainResponseSchema;
|
|
3065
|
+
exports.EntityResolveDomainRequestSchema = EntityResolveDomainRequestSchema;
|
|
3066
|
+
exports.EntityResolveDomainResponseSchema = EntityResolveDomainResponseSchema;
|
|
2943
3067
|
exports.EntitySearchResponseSchema = EntitySearchResponseSchema;
|
|
2944
3068
|
exports.EntitySearchResultSchema = EntitySearchResultSchema;
|
|
2945
3069
|
exports.EntitySelectRequestSchema = EntitySelectRequestSchema;
|
|
@@ -2953,6 +3077,9 @@ exports.FollowProfilePageSchema = FollowProfilePageSchema;
|
|
|
2953
3077
|
exports.FollowProfileSchema = FollowProfileSchema;
|
|
2954
3078
|
exports.GraphFollowRecordSchema = GraphFollowRecordSchema;
|
|
2955
3079
|
exports.INDUSTRY_OPTIONS = INDUSTRY_OPTIONS;
|
|
3080
|
+
exports.INVOLVEMENT_KIND_HEADINGS = INVOLVEMENT_KIND_HEADINGS;
|
|
3081
|
+
exports.INVOLVEMENT_KIND_LABELS = INVOLVEMENT_KIND_LABELS;
|
|
3082
|
+
exports.INVOLVEMENT_KIND_OPTIONS = INVOLVEMENT_KIND_OPTIONS;
|
|
2956
3083
|
exports.MIN_SKILLS = MIN_SKILLS;
|
|
2957
3084
|
exports.OPEN_TO_OPTIONS = OPEN_TO_OPTIONS;
|
|
2958
3085
|
exports.OPEN_TO_TOKENS = OPEN_TO_TOKENS;
|
|
@@ -2964,6 +3091,7 @@ exports.PRESENTATION_LINK_TYPE_LABELS = PRESENTATION_LINK_TYPE_LABELS;
|
|
|
2964
3091
|
exports.PRESENTATION_LINK_TYPE_OPTIONS = PRESENTATION_LINK_TYPE_OPTIONS;
|
|
2965
3092
|
exports.PRESENTATION_ROLE_LABELS = PRESENTATION_ROLE_LABELS;
|
|
2966
3093
|
exports.PRESENTATION_ROLE_OPTIONS = PRESENTATION_ROLE_OPTIONS;
|
|
3094
|
+
exports.PROFILE_INVOLVEMENT_NSID = PROFILE_INVOLVEMENT_NSID;
|
|
2967
3095
|
exports.PUBLISHERS = PUBLISHERS;
|
|
2968
3096
|
exports.PresentationDurationSchema = PresentationDurationSchema;
|
|
2969
3097
|
exports.PresentationLinkSchema = PresentationLinkSchema;
|
|
@@ -2972,6 +3100,7 @@ exports.ProfileCourseRecordSchema = ProfileCourseRecordSchema;
|
|
|
2972
3100
|
exports.ProfileEducationRecordSchema = ProfileEducationRecordSchema;
|
|
2973
3101
|
exports.ProfileExternalAccountRecordSchema = ProfileExternalAccountRecordSchema;
|
|
2974
3102
|
exports.ProfileHonorRecordSchema = ProfileHonorRecordSchema;
|
|
3103
|
+
exports.ProfileInvolvementRecordSchema = ProfileInvolvementRecordSchema;
|
|
2975
3104
|
exports.ProfileLanguageRecordSchema = ProfileLanguageRecordSchema;
|
|
2976
3105
|
exports.ProfilePositionRecordSchema = ProfilePositionRecordSchema;
|
|
2977
3106
|
exports.ProfilePresentationDeliveryRecordSchema = ProfilePresentationDeliveryRecordSchema;
|
|
@@ -3020,6 +3149,7 @@ exports.getActivityTaxonomyVersion = getActivityTaxonomyVersion;
|
|
|
3020
3149
|
exports.getActivityTier = getActivityTier;
|
|
3021
3150
|
exports.getAppCategoryIcon = getAppCategoryIcon;
|
|
3022
3151
|
exports.getAppIdForCollection = getAppIdForCollection;
|
|
3152
|
+
exports.getArtifactLinkKindLabel = getArtifactLinkKindLabel;
|
|
3023
3153
|
exports.getCalendarEventModeLabel = getCalendarEventModeLabel;
|
|
3024
3154
|
exports.getCalendarEventStatusLabel = getCalendarEventStatusLabel;
|
|
3025
3155
|
exports.getContinent = getContinent;
|
|
@@ -3029,6 +3159,8 @@ exports.getFaviconUrl = getFaviconUrl;
|
|
|
3029
3159
|
exports.getFilledDimensionsMap = getFilledDimensionsMap;
|
|
3030
3160
|
exports.getHandleStem = getHandleStem;
|
|
3031
3161
|
exports.getIndustryLabelKey = getIndustryLabelKey;
|
|
3162
|
+
exports.getInvolvementKindHeading = getInvolvementKindHeading;
|
|
3163
|
+
exports.getInvolvementKindLabel = getInvolvementKindLabel;
|
|
3032
3164
|
exports.getLexiconEntry = getLexiconEntry;
|
|
3033
3165
|
exports.getOpenToLabelKey = getOpenToLabelKey;
|
|
3034
3166
|
exports.getPdsDisplayName = getPdsDisplayName;
|
|
@@ -3053,6 +3185,7 @@ exports.isVisibleActivityItem = isVisibleActivityItem;
|
|
|
3053
3185
|
exports.languageTagSchema = languageTagSchema;
|
|
3054
3186
|
exports.lexiconDateExtractor = lexiconDateExtractor;
|
|
3055
3187
|
exports.limitCombiningMarks = limitCombiningMarks;
|
|
3188
|
+
exports.looksLikeDomain = looksLikeDomain;
|
|
3056
3189
|
exports.makeGraphFollowRecordSchema = makeGraphFollowRecordSchema;
|
|
3057
3190
|
exports.maxGraphemes = maxGraphemes;
|
|
3058
3191
|
exports.meetsContrastAA = meetsContrastAA;
|