@singi-labs/sifa-sdk 0.19.76 → 0.19.77

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.
@@ -1,6 +1,6 @@
1
- import { L as LocationValue, d as ProfilePosition, f as ProfileEducation, P as ProfileSkill, e as ProfileCertification, i as ProfileProject, j as ProfilePublication, N as ProfileVolunteering, g as ProfileHonor, h as ProfileLanguage, p as ExternalAccount } from '../index-k6tBrbEU.cjs';
1
+ import { L as LocationValue, d as ProfilePosition, f as ProfileEducation, P as ProfileSkill, e as ProfileCertification, i as ProfileProject, j as ProfilePublication, N as ProfileVolunteering, g as ProfileHonor, h as ProfileLanguage, p as ExternalAccount, M as ProfilePresentation, B as ProfileCourse } from '../index-k6tBrbEU.cjs';
2
+ import { z } from 'zod';
2
3
  import '../verification-providers-7il3kPQS.cjs';
3
- import 'zod';
4
4
 
5
5
  /**
6
6
  * JSON Resume v1.0.0 emitter for a Sifa profile.
@@ -167,4 +167,237 @@ declare function toResumeDate(value: string | undefined): string | undefined;
167
167
  */
168
168
  declare function profileToJsonResume(profile: JsonResumeProfileInput, options?: JsonResumeOptions): JsonResume;
169
169
 
170
- export { type JsonResume, type JsonResumeAward, type JsonResumeBasics, type JsonResumeCertificate, type JsonResumeEducation, type JsonResumeLanguage, type JsonResumeLocation, type JsonResumeMeta, type JsonResumeOptions, type JsonResumeProfileInput, type JsonResumeProfileLink, type JsonResumeProject, type JsonResumePublication, type JsonResumeSkill, type JsonResumeVolunteer, type JsonResumeWork, type Sanitizer, profileToJsonResume, toResumeDate };
170
+ /**
171
+ * Funder-format CV documents: the NIH Biographical Sketch (Common Form plus
172
+ * NIH Supplement) and the ERC Part B1 "Curriculum vitae and Track Record".
173
+ *
174
+ * A pure mapper from a Sifa profile and the owner's pick of items to a plain
175
+ * JSON document a typesetter lays out. Like the JSON Resume emitter next door,
176
+ * nothing here fetches or renders.
177
+ *
178
+ * Funders cap how many items a CV may list. The caps live in
179
+ * `FUNDER_CV_GROUPS`, so the export page that offers the choice and the server
180
+ * that enforces it read one number. Sections a funder asks for that Sifa holds
181
+ * no records for (a personal statement, contributions to science, career
182
+ * breaks) are emitted as `null` or empty, for the template to show as a
183
+ * placeholder the applicant fills in.
184
+ */
185
+
186
+ declare const FUNDER_CV_FORMATS: readonly ["nih", "erc"];
187
+ type FunderCvFormat = (typeof FUNDER_CV_FORMATS)[number];
188
+ declare const FUNDER_CV_ITEM_KINDS: readonly ["publication", "presentation", "honor"];
189
+ type FunderCvItemKind = (typeof FUNDER_CV_ITEM_KINDS)[number];
190
+ interface FunderCvGroupSpec {
191
+ readonly kinds: readonly FunderCvItemKind[];
192
+ /** Most items the funder's form takes for this group. */
193
+ readonly max: number;
194
+ }
195
+ /**
196
+ * The pickable groups per format, with the funder's item limits.
197
+ *
198
+ * - NIH Common Form "Products": up to 5 closely related to the proposed
199
+ * project and up to 5 other significant products. Publications, conference
200
+ * papers and presentations all count. NIH Supplement "Honors": up to 15.
201
+ * - ERC Part B1 "Research achievements": up to ten research outputs. "Peer
202
+ * recognition" is "selected examples" with no number; 15 is Sifa's own cap,
203
+ * to keep the section inside the 4-page limit.
204
+ */
205
+ declare const FUNDER_CV_GROUPS: {
206
+ readonly nih: {
207
+ readonly related: {
208
+ readonly kinds: readonly ["publication", "presentation"];
209
+ readonly max: 5;
210
+ };
211
+ readonly other: {
212
+ readonly kinds: readonly ["publication", "presentation"];
213
+ readonly max: 5;
214
+ };
215
+ readonly honors: {
216
+ readonly kinds: readonly ["honor"];
217
+ readonly max: 15;
218
+ };
219
+ };
220
+ readonly erc: {
221
+ readonly outputs: {
222
+ readonly kinds: readonly ["publication"];
223
+ readonly max: 10;
224
+ };
225
+ readonly recognition: {
226
+ readonly kinds: readonly ["honor", "presentation"];
227
+ readonly max: 15;
228
+ };
229
+ };
230
+ };
231
+ type FunderCvGroupName<F extends FunderCvFormat> = keyof (typeof FUNDER_CV_GROUPS)[F] & string;
232
+ /** A picked item: `<kind>:<rkey>`, e.g. `publication:3kxyz`. */
233
+ declare function funderCvItemId(kind: FunderCvItemKind, rkey: string): string;
234
+ /**
235
+ * The owner's pick for one format. Enforces the shape and the funder's limits;
236
+ * whether each id is one of the owner's own visible records is a separate
237
+ * check against the profile, `findUnknownFunderCvItems`.
238
+ */
239
+ declare const funderCvSelectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
240
+ format: z.ZodLiteral<"nih">;
241
+ related: z.ZodDefault<z.ZodArray<z.ZodString>>;
242
+ other: z.ZodDefault<z.ZodArray<z.ZodString>>;
243
+ honors: z.ZodDefault<z.ZodArray<z.ZodString>>;
244
+ }, z.core.$strip>, z.ZodObject<{
245
+ format: z.ZodLiteral<"erc">;
246
+ outputs: z.ZodDefault<z.ZodArray<z.ZodString>>;
247
+ recognition: z.ZodDefault<z.ZodArray<z.ZodString>>;
248
+ }, z.core.$strip>], "format">;
249
+ type FunderCvSelection = z.infer<typeof funderCvSelectionSchema>;
250
+ /** The subset of `Profile` the funder mapper reads. */
251
+ interface FunderCvProfileInput {
252
+ readonly handle: string;
253
+ readonly displayName?: string;
254
+ readonly givenName?: string;
255
+ readonly familyName?: string;
256
+ readonly headline?: string;
257
+ readonly website?: string;
258
+ readonly positions?: ProfilePosition[];
259
+ readonly education?: ProfileEducation[];
260
+ readonly publications?: ProfilePublication[];
261
+ readonly presentations?: ProfilePresentation[];
262
+ readonly honors?: ProfileHonor[];
263
+ readonly courses?: ProfileCourse[];
264
+ readonly volunteering?: ProfileVolunteering[];
265
+ readonly externalAccounts?: ExternalAccount[];
266
+ }
267
+ interface FunderCvCandidate {
268
+ readonly id: string;
269
+ readonly kind: FunderCvItemKind;
270
+ readonly title: string;
271
+ /** `YYYY`, `YYYY-MM` or `YYYY-MM-DD`; absent when the record has no date. */
272
+ readonly date?: string;
273
+ }
274
+ /**
275
+ * The owner's visible items of the given kinds, most recent first. Undated
276
+ * items go last, in profile order. The sort is stable, so equal dates keep
277
+ * profile order too.
278
+ */
279
+ declare function listFunderCvCandidates(profile: FunderCvProfileInput, kinds: readonly FunderCvItemKind[]): FunderCvCandidate[];
280
+ /**
281
+ * What the export page pre-ticks: the most recent publications up to each
282
+ * limit (for NIH, the first five as closely related and the next five as
283
+ * other), and the most recent honors. Talks are offered but not pre-ticked.
284
+ */
285
+ declare function defaultFunderCvSelection(profile: FunderCvProfileInput, format: FunderCvFormat): FunderCvSelection;
286
+ /**
287
+ * Ids in the selection that are not visible records on this profile. The
288
+ * profile is the owner's own, so an empty result means every pick is theirs.
289
+ */
290
+ declare function findUnknownFunderCvItems(profile: FunderCvProfileInput, selection: FunderCvSelection): string[];
291
+ interface FunderCvPerson {
292
+ /** Full name as the profile shows it; the handle when there is no name. */
293
+ readonly name: string;
294
+ readonly givenName?: string;
295
+ readonly familyName?: string;
296
+ /** Bare ORCID iD, e.g. `0000-0002-1825-0097`. */
297
+ readonly orcid?: string;
298
+ readonly website?: string;
299
+ }
300
+ /** One product or research output, ready to cite. */
301
+ interface FunderCvCitation {
302
+ readonly kind: 'publication' | 'presentation';
303
+ readonly title: string;
304
+ /** Authors in record order, comma separated. For a talk, the speaker. */
305
+ readonly authors?: string;
306
+ /** Journal, publisher or event. */
307
+ readonly venue?: string;
308
+ /** Year. */
309
+ readonly date?: string;
310
+ readonly doi?: string;
311
+ readonly url?: string;
312
+ }
313
+ interface FunderCvHonor {
314
+ readonly year?: string;
315
+ readonly title: string;
316
+ readonly organization?: string;
317
+ }
318
+ interface NihEducation {
319
+ readonly organization: string;
320
+ readonly location?: string;
321
+ readonly degree?: string;
322
+ /** Start date, `MM/YYYY` or `YYYY`. */
323
+ readonly start?: string;
324
+ /** Receipt date, `MM/YYYY` or `YYYY`. */
325
+ readonly end?: string;
326
+ readonly field?: string;
327
+ }
328
+ interface FunderCvAppointment {
329
+ /** `YYYY`. */
330
+ readonly start?: string;
331
+ /** `YYYY`, or null for a current appointment. */
332
+ readonly end: string | null;
333
+ readonly title: string;
334
+ readonly organization?: string;
335
+ readonly location?: string;
336
+ }
337
+ /** NIH Biographical Sketch: Common Form plus NIH Supplement. */
338
+ interface NihFunderCv {
339
+ readonly format: 'nih';
340
+ readonly person: FunderCvPerson;
341
+ readonly positionTitle?: string;
342
+ /** Primary organization: the current position's. */
343
+ readonly organization?: string;
344
+ readonly location?: string;
345
+ readonly education: NihEducation[];
346
+ readonly appointments: FunderCvAppointment[];
347
+ readonly products: {
348
+ readonly related: FunderCvCitation[];
349
+ readonly other: FunderCvCitation[];
350
+ };
351
+ readonly honors: FunderCvHonor[];
352
+ /** Supplement "Personal Statement". Sifa holds no record for it. */
353
+ readonly personalStatement: string | null;
354
+ /** Supplement "Contributions to Science". Sifa holds no record for them. */
355
+ readonly contributions: string[];
356
+ }
357
+ interface ErcEducation {
358
+ /** Receipt date, `MM/YYYY` or `YYYY`. */
359
+ readonly date?: string;
360
+ readonly degree?: string;
361
+ readonly field?: string;
362
+ readonly institution: string;
363
+ }
364
+ interface ErcRecognition {
365
+ readonly kind: 'honor' | 'presentation';
366
+ readonly year?: string;
367
+ readonly title: string;
368
+ /** Awarding body, or the event a talk was given at. */
369
+ readonly organization?: string;
370
+ }
371
+ interface ErcContribution {
372
+ readonly kind: 'teaching' | 'service';
373
+ readonly start?: string;
374
+ readonly end: string | null;
375
+ readonly title: string;
376
+ readonly organization?: string;
377
+ }
378
+ /** ERC Part B1, section "Curriculum vitae and Track Record". */
379
+ interface ErcFunderCv {
380
+ readonly format: 'erc';
381
+ readonly person: FunderCvPerson;
382
+ readonly education: ErcEducation[];
383
+ readonly currentPositions: FunderCvAppointment[];
384
+ readonly previousPositions: FunderCvAppointment[];
385
+ readonly outputs: FunderCvCitation[];
386
+ readonly recognition: ErcRecognition[];
387
+ readonly communityContributions: ErcContribution[];
388
+ /** Proposal acronym for the page header. Not a profile fact. */
389
+ readonly acronym: string | null;
390
+ /** "Career breaks, diverse career paths and major life events". */
391
+ readonly careerBreaks: string | null;
392
+ }
393
+ type FunderCvDocument = NihFunderCv | ErcFunderCv;
394
+ /**
395
+ * Build the funder document from the profile and the owner's selection.
396
+ *
397
+ * Hidden records never appear. Selected ids that match no visible record are
398
+ * skipped; callers that must refuse them check `findUnknownFunderCvItems`
399
+ * first. Selected items keep the order they were picked in.
400
+ */
401
+ declare function profileToFunderCv(profile: FunderCvProfileInput, selection: FunderCvSelection): FunderCvDocument;
402
+
403
+ export { type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcRecognition, FUNDER_CV_FORMATS, FUNDER_CV_GROUPS, FUNDER_CV_ITEM_KINDS, type FunderCvAppointment, type FunderCvCandidate, type FunderCvCitation, type FunderCvDocument, type FunderCvFormat, type FunderCvGroupName, type FunderCvGroupSpec, type FunderCvHonor, type FunderCvItemKind, type FunderCvPerson, type FunderCvProfileInput, type FunderCvSelection, type JsonResume, type JsonResumeAward, type JsonResumeBasics, type JsonResumeCertificate, type JsonResumeEducation, type JsonResumeLanguage, type JsonResumeLocation, type JsonResumeMeta, type JsonResumeOptions, type JsonResumeProfileInput, type JsonResumeProfileLink, type JsonResumeProject, type JsonResumePublication, type JsonResumeSkill, type JsonResumeVolunteer, type JsonResumeWork, type NihEducation, type NihFunderCv, type Sanitizer, defaultFunderCvSelection, findUnknownFunderCvItems, funderCvItemId, funderCvSelectionSchema, listFunderCvCandidates, profileToFunderCv, profileToJsonResume, toResumeDate };
@@ -1,6 +1,6 @@
1
- import { L as LocationValue, d as ProfilePosition, f as ProfileEducation, P as ProfileSkill, e as ProfileCertification, i as ProfileProject, j as ProfilePublication, N as ProfileVolunteering, g as ProfileHonor, h as ProfileLanguage, p as ExternalAccount } from '../index-DAiJZvPg.js';
1
+ import { L as LocationValue, d as ProfilePosition, f as ProfileEducation, P as ProfileSkill, e as ProfileCertification, i as ProfileProject, j as ProfilePublication, N as ProfileVolunteering, g as ProfileHonor, h as ProfileLanguage, p as ExternalAccount, M as ProfilePresentation, B as ProfileCourse } from '../index-DAiJZvPg.js';
2
+ import { z } from 'zod';
2
3
  import '../verification-providers-7il3kPQS.js';
3
- import 'zod';
4
4
 
5
5
  /**
6
6
  * JSON Resume v1.0.0 emitter for a Sifa profile.
@@ -167,4 +167,237 @@ declare function toResumeDate(value: string | undefined): string | undefined;
167
167
  */
168
168
  declare function profileToJsonResume(profile: JsonResumeProfileInput, options?: JsonResumeOptions): JsonResume;
169
169
 
170
- export { type JsonResume, type JsonResumeAward, type JsonResumeBasics, type JsonResumeCertificate, type JsonResumeEducation, type JsonResumeLanguage, type JsonResumeLocation, type JsonResumeMeta, type JsonResumeOptions, type JsonResumeProfileInput, type JsonResumeProfileLink, type JsonResumeProject, type JsonResumePublication, type JsonResumeSkill, type JsonResumeVolunteer, type JsonResumeWork, type Sanitizer, profileToJsonResume, toResumeDate };
170
+ /**
171
+ * Funder-format CV documents: the NIH Biographical Sketch (Common Form plus
172
+ * NIH Supplement) and the ERC Part B1 "Curriculum vitae and Track Record".
173
+ *
174
+ * A pure mapper from a Sifa profile and the owner's pick of items to a plain
175
+ * JSON document a typesetter lays out. Like the JSON Resume emitter next door,
176
+ * nothing here fetches or renders.
177
+ *
178
+ * Funders cap how many items a CV may list. The caps live in
179
+ * `FUNDER_CV_GROUPS`, so the export page that offers the choice and the server
180
+ * that enforces it read one number. Sections a funder asks for that Sifa holds
181
+ * no records for (a personal statement, contributions to science, career
182
+ * breaks) are emitted as `null` or empty, for the template to show as a
183
+ * placeholder the applicant fills in.
184
+ */
185
+
186
+ declare const FUNDER_CV_FORMATS: readonly ["nih", "erc"];
187
+ type FunderCvFormat = (typeof FUNDER_CV_FORMATS)[number];
188
+ declare const FUNDER_CV_ITEM_KINDS: readonly ["publication", "presentation", "honor"];
189
+ type FunderCvItemKind = (typeof FUNDER_CV_ITEM_KINDS)[number];
190
+ interface FunderCvGroupSpec {
191
+ readonly kinds: readonly FunderCvItemKind[];
192
+ /** Most items the funder's form takes for this group. */
193
+ readonly max: number;
194
+ }
195
+ /**
196
+ * The pickable groups per format, with the funder's item limits.
197
+ *
198
+ * - NIH Common Form "Products": up to 5 closely related to the proposed
199
+ * project and up to 5 other significant products. Publications, conference
200
+ * papers and presentations all count. NIH Supplement "Honors": up to 15.
201
+ * - ERC Part B1 "Research achievements": up to ten research outputs. "Peer
202
+ * recognition" is "selected examples" with no number; 15 is Sifa's own cap,
203
+ * to keep the section inside the 4-page limit.
204
+ */
205
+ declare const FUNDER_CV_GROUPS: {
206
+ readonly nih: {
207
+ readonly related: {
208
+ readonly kinds: readonly ["publication", "presentation"];
209
+ readonly max: 5;
210
+ };
211
+ readonly other: {
212
+ readonly kinds: readonly ["publication", "presentation"];
213
+ readonly max: 5;
214
+ };
215
+ readonly honors: {
216
+ readonly kinds: readonly ["honor"];
217
+ readonly max: 15;
218
+ };
219
+ };
220
+ readonly erc: {
221
+ readonly outputs: {
222
+ readonly kinds: readonly ["publication"];
223
+ readonly max: 10;
224
+ };
225
+ readonly recognition: {
226
+ readonly kinds: readonly ["honor", "presentation"];
227
+ readonly max: 15;
228
+ };
229
+ };
230
+ };
231
+ type FunderCvGroupName<F extends FunderCvFormat> = keyof (typeof FUNDER_CV_GROUPS)[F] & string;
232
+ /** A picked item: `<kind>:<rkey>`, e.g. `publication:3kxyz`. */
233
+ declare function funderCvItemId(kind: FunderCvItemKind, rkey: string): string;
234
+ /**
235
+ * The owner's pick for one format. Enforces the shape and the funder's limits;
236
+ * whether each id is one of the owner's own visible records is a separate
237
+ * check against the profile, `findUnknownFunderCvItems`.
238
+ */
239
+ declare const funderCvSelectionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
240
+ format: z.ZodLiteral<"nih">;
241
+ related: z.ZodDefault<z.ZodArray<z.ZodString>>;
242
+ other: z.ZodDefault<z.ZodArray<z.ZodString>>;
243
+ honors: z.ZodDefault<z.ZodArray<z.ZodString>>;
244
+ }, z.core.$strip>, z.ZodObject<{
245
+ format: z.ZodLiteral<"erc">;
246
+ outputs: z.ZodDefault<z.ZodArray<z.ZodString>>;
247
+ recognition: z.ZodDefault<z.ZodArray<z.ZodString>>;
248
+ }, z.core.$strip>], "format">;
249
+ type FunderCvSelection = z.infer<typeof funderCvSelectionSchema>;
250
+ /** The subset of `Profile` the funder mapper reads. */
251
+ interface FunderCvProfileInput {
252
+ readonly handle: string;
253
+ readonly displayName?: string;
254
+ readonly givenName?: string;
255
+ readonly familyName?: string;
256
+ readonly headline?: string;
257
+ readonly website?: string;
258
+ readonly positions?: ProfilePosition[];
259
+ readonly education?: ProfileEducation[];
260
+ readonly publications?: ProfilePublication[];
261
+ readonly presentations?: ProfilePresentation[];
262
+ readonly honors?: ProfileHonor[];
263
+ readonly courses?: ProfileCourse[];
264
+ readonly volunteering?: ProfileVolunteering[];
265
+ readonly externalAccounts?: ExternalAccount[];
266
+ }
267
+ interface FunderCvCandidate {
268
+ readonly id: string;
269
+ readonly kind: FunderCvItemKind;
270
+ readonly title: string;
271
+ /** `YYYY`, `YYYY-MM` or `YYYY-MM-DD`; absent when the record has no date. */
272
+ readonly date?: string;
273
+ }
274
+ /**
275
+ * The owner's visible items of the given kinds, most recent first. Undated
276
+ * items go last, in profile order. The sort is stable, so equal dates keep
277
+ * profile order too.
278
+ */
279
+ declare function listFunderCvCandidates(profile: FunderCvProfileInput, kinds: readonly FunderCvItemKind[]): FunderCvCandidate[];
280
+ /**
281
+ * What the export page pre-ticks: the most recent publications up to each
282
+ * limit (for NIH, the first five as closely related and the next five as
283
+ * other), and the most recent honors. Talks are offered but not pre-ticked.
284
+ */
285
+ declare function defaultFunderCvSelection(profile: FunderCvProfileInput, format: FunderCvFormat): FunderCvSelection;
286
+ /**
287
+ * Ids in the selection that are not visible records on this profile. The
288
+ * profile is the owner's own, so an empty result means every pick is theirs.
289
+ */
290
+ declare function findUnknownFunderCvItems(profile: FunderCvProfileInput, selection: FunderCvSelection): string[];
291
+ interface FunderCvPerson {
292
+ /** Full name as the profile shows it; the handle when there is no name. */
293
+ readonly name: string;
294
+ readonly givenName?: string;
295
+ readonly familyName?: string;
296
+ /** Bare ORCID iD, e.g. `0000-0002-1825-0097`. */
297
+ readonly orcid?: string;
298
+ readonly website?: string;
299
+ }
300
+ /** One product or research output, ready to cite. */
301
+ interface FunderCvCitation {
302
+ readonly kind: 'publication' | 'presentation';
303
+ readonly title: string;
304
+ /** Authors in record order, comma separated. For a talk, the speaker. */
305
+ readonly authors?: string;
306
+ /** Journal, publisher or event. */
307
+ readonly venue?: string;
308
+ /** Year. */
309
+ readonly date?: string;
310
+ readonly doi?: string;
311
+ readonly url?: string;
312
+ }
313
+ interface FunderCvHonor {
314
+ readonly year?: string;
315
+ readonly title: string;
316
+ readonly organization?: string;
317
+ }
318
+ interface NihEducation {
319
+ readonly organization: string;
320
+ readonly location?: string;
321
+ readonly degree?: string;
322
+ /** Start date, `MM/YYYY` or `YYYY`. */
323
+ readonly start?: string;
324
+ /** Receipt date, `MM/YYYY` or `YYYY`. */
325
+ readonly end?: string;
326
+ readonly field?: string;
327
+ }
328
+ interface FunderCvAppointment {
329
+ /** `YYYY`. */
330
+ readonly start?: string;
331
+ /** `YYYY`, or null for a current appointment. */
332
+ readonly end: string | null;
333
+ readonly title: string;
334
+ readonly organization?: string;
335
+ readonly location?: string;
336
+ }
337
+ /** NIH Biographical Sketch: Common Form plus NIH Supplement. */
338
+ interface NihFunderCv {
339
+ readonly format: 'nih';
340
+ readonly person: FunderCvPerson;
341
+ readonly positionTitle?: string;
342
+ /** Primary organization: the current position's. */
343
+ readonly organization?: string;
344
+ readonly location?: string;
345
+ readonly education: NihEducation[];
346
+ readonly appointments: FunderCvAppointment[];
347
+ readonly products: {
348
+ readonly related: FunderCvCitation[];
349
+ readonly other: FunderCvCitation[];
350
+ };
351
+ readonly honors: FunderCvHonor[];
352
+ /** Supplement "Personal Statement". Sifa holds no record for it. */
353
+ readonly personalStatement: string | null;
354
+ /** Supplement "Contributions to Science". Sifa holds no record for them. */
355
+ readonly contributions: string[];
356
+ }
357
+ interface ErcEducation {
358
+ /** Receipt date, `MM/YYYY` or `YYYY`. */
359
+ readonly date?: string;
360
+ readonly degree?: string;
361
+ readonly field?: string;
362
+ readonly institution: string;
363
+ }
364
+ interface ErcRecognition {
365
+ readonly kind: 'honor' | 'presentation';
366
+ readonly year?: string;
367
+ readonly title: string;
368
+ /** Awarding body, or the event a talk was given at. */
369
+ readonly organization?: string;
370
+ }
371
+ interface ErcContribution {
372
+ readonly kind: 'teaching' | 'service';
373
+ readonly start?: string;
374
+ readonly end: string | null;
375
+ readonly title: string;
376
+ readonly organization?: string;
377
+ }
378
+ /** ERC Part B1, section "Curriculum vitae and Track Record". */
379
+ interface ErcFunderCv {
380
+ readonly format: 'erc';
381
+ readonly person: FunderCvPerson;
382
+ readonly education: ErcEducation[];
383
+ readonly currentPositions: FunderCvAppointment[];
384
+ readonly previousPositions: FunderCvAppointment[];
385
+ readonly outputs: FunderCvCitation[];
386
+ readonly recognition: ErcRecognition[];
387
+ readonly communityContributions: ErcContribution[];
388
+ /** Proposal acronym for the page header. Not a profile fact. */
389
+ readonly acronym: string | null;
390
+ /** "Career breaks, diverse career paths and major life events". */
391
+ readonly careerBreaks: string | null;
392
+ }
393
+ type FunderCvDocument = NihFunderCv | ErcFunderCv;
394
+ /**
395
+ * Build the funder document from the profile and the owner's selection.
396
+ *
397
+ * Hidden records never appear. Selected ids that match no visible record are
398
+ * skipped; callers that must refuse them check `findUnknownFunderCvItems`
399
+ * first. Selected items keep the order they were picked in.
400
+ */
401
+ declare function profileToFunderCv(profile: FunderCvProfileInput, selection: FunderCvSelection): FunderCvDocument;
402
+
403
+ export { type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcRecognition, FUNDER_CV_FORMATS, FUNDER_CV_GROUPS, FUNDER_CV_ITEM_KINDS, type FunderCvAppointment, type FunderCvCandidate, type FunderCvCitation, type FunderCvDocument, type FunderCvFormat, type FunderCvGroupName, type FunderCvGroupSpec, type FunderCvHonor, type FunderCvItemKind, type FunderCvPerson, type FunderCvProfileInput, type FunderCvSelection, type JsonResume, type JsonResumeAward, type JsonResumeBasics, type JsonResumeCertificate, type JsonResumeEducation, type JsonResumeLanguage, type JsonResumeLocation, type JsonResumeMeta, type JsonResumeOptions, type JsonResumeProfileInput, type JsonResumeProfileLink, type JsonResumeProject, type JsonResumePublication, type JsonResumeSkill, type JsonResumeVolunteer, type JsonResumeWork, type NihEducation, type NihFunderCv, type Sanitizer, defaultFunderCvSelection, findUnknownFunderCvItems, funderCvItemId, funderCvSelectionSchema, listFunderCvCandidates, profileToFunderCv, profileToJsonResume, toResumeDate };
@@ -1,6 +1,26 @@
1
1
  // src/resume/index.ts
2
2
  import { profileToJsonResume, toResumeDate } from "./json-resume.js";
3
+ import {
4
+ FUNDER_CV_FORMATS,
5
+ FUNDER_CV_GROUPS,
6
+ FUNDER_CV_ITEM_KINDS,
7
+ defaultFunderCvSelection,
8
+ findUnknownFunderCvItems,
9
+ funderCvItemId,
10
+ funderCvSelectionSchema,
11
+ listFunderCvCandidates,
12
+ profileToFunderCv
13
+ } from "./funder-cv.js";
3
14
  export {
15
+ FUNDER_CV_FORMATS,
16
+ FUNDER_CV_GROUPS,
17
+ FUNDER_CV_ITEM_KINDS,
18
+ defaultFunderCvSelection,
19
+ findUnknownFunderCvItems,
20
+ funderCvItemId,
21
+ funderCvSelectionSchema,
22
+ listFunderCvCandidates,
23
+ profileToFunderCv,
4
24
  profileToJsonResume,
5
25
  toResumeDate
6
26
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/resume/index.ts"],"sourcesContent":["export { profileToJsonResume, toResumeDate } from './json-resume.js';\nexport type {\n JsonResume,\n JsonResumeAward,\n JsonResumeBasics,\n JsonResumeCertificate,\n JsonResumeEducation,\n JsonResumeLanguage,\n JsonResumeLocation,\n JsonResumeMeta,\n JsonResumeOptions,\n JsonResumeProfileInput,\n JsonResumeProfileLink,\n JsonResumeProject,\n JsonResumePublication,\n JsonResumeSkill,\n JsonResumeVolunteer,\n JsonResumeWork,\n Sanitizer,\n} from './json-resume.js';\n"],"mappings":";AAAA,SAAS,qBAAqB,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../../src/resume/index.ts"],"sourcesContent":["export { profileToJsonResume, toResumeDate } from './json-resume.js';\nexport type {\n JsonResume,\n JsonResumeAward,\n JsonResumeBasics,\n JsonResumeCertificate,\n JsonResumeEducation,\n JsonResumeLanguage,\n JsonResumeLocation,\n JsonResumeMeta,\n JsonResumeOptions,\n JsonResumeProfileInput,\n JsonResumeProfileLink,\n JsonResumeProject,\n JsonResumePublication,\n JsonResumeSkill,\n JsonResumeVolunteer,\n JsonResumeWork,\n Sanitizer,\n} from './json-resume.js';\nexport {\n FUNDER_CV_FORMATS,\n FUNDER_CV_GROUPS,\n FUNDER_CV_ITEM_KINDS,\n defaultFunderCvSelection,\n findUnknownFunderCvItems,\n funderCvItemId,\n funderCvSelectionSchema,\n listFunderCvCandidates,\n profileToFunderCv,\n} from './funder-cv.js';\nexport type {\n ErcContribution,\n ErcEducation,\n ErcFunderCv,\n ErcRecognition,\n FunderCvAppointment,\n FunderCvCandidate,\n FunderCvCitation,\n FunderCvDocument,\n FunderCvFormat,\n FunderCvGroupName,\n FunderCvGroupSpec,\n FunderCvHonor,\n FunderCvItemKind,\n FunderCvPerson,\n FunderCvProfileInput,\n FunderCvSelection,\n NihEducation,\n NihFunderCv,\n} from './funder-cv.js';\n"],"mappings":";AAAA,SAAS,qBAAqB,oBAAoB;AAoBlD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@singi-labs/sifa-sdk",
3
- "version": "0.19.76",
3
+ "version": "0.19.77",
4
4
  "description": "Sifa SDK — public client library for the Sifa AppView on AT Protocol. Shared by sifa-web and sifa-app.",
5
5
  "license": "MIT",
6
6
  "type": "module",