@singi-labs/sifa-sdk 0.19.94 → 0.19.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,16 +27,17 @@ Published publicly so third-party developers can build their own AT Protocol cli
27
27
 
28
28
  ## What this package contains
29
29
 
30
- | Area | What it provides |
31
- | ----------- | ------------------------------------------------------------------------------------- |
32
- | Types | TypeScript types for Sifa data structures, generated from `sifa-lexicons` |
33
- | Schemas | Zod schemas mirroring lexicon constraints for runtime validation |
34
- | Query layer | TanStack Query keys, fetchers, and React hooks for calling `sifa-api` |
35
- | ATproto | Wrapper around `@atproto/api` that accepts an authenticated agent |
36
- | Format | Pure formatters for dates, locations, profile completeness |
37
- | Logic | Business-logic predicates (display-only; server-side trust logic lives in `sifa-api`) |
38
- | Taxonomy | Constants and enums (continents, industries, skill categories, activity tiers) |
39
- | Tokens | Sifa-brand design tokens, exported via `@singi-labs/sifa-sdk/tokens` (optional) |
30
+ | Area | What it provides |
31
+ | ----------- | ------------------------------------------------------------------------------------------------------- |
32
+ | Types | TypeScript types for Sifa data structures, generated from `sifa-lexicons` |
33
+ | Schemas | Zod schemas mirroring lexicon constraints for runtime validation |
34
+ | Query layer | TanStack Query keys, fetchers, and React hooks for calling `sifa-api` |
35
+ | ATproto | Wrapper around `@atproto/api` that accepts an authenticated agent |
36
+ | Format | Pure formatters for dates, locations, profile completeness |
37
+ | Logic | Business-logic predicates (display-only; server-side trust logic lives in `sifa-api`) |
38
+ | Taxonomy | Constants and enums (continents, industries, skill categories, activity tiers) |
39
+ | Tokens | Sifa-brand design tokens, exported via `@singi-labs/sifa-sdk/tokens` (optional) |
40
+ | Testing | Anonymized profile responses and sample export details, via `@singi-labs/sifa-sdk/testing` (tests only) |
40
41
 
41
42
  ---
42
43
 
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Private contact and personal details for exports: email, phone, postal
5
+ * address, driver's license, right to work and nationality.
6
+ *
7
+ * Sifa never stores these and never writes them to the owner's PDS, where they
8
+ * would be public. The owner types them on the export page, the browser keeps
9
+ * them, and they go only into the files the owner downloads. This module holds
10
+ * the shape, the limits and the pick rule, so the export page and the server
11
+ * that builds a funder CV agree on them.
12
+ */
13
+
14
+ /** Longest value accepted per field. 254 is the longest valid email address. */
15
+ declare const EXPORT_CONTACT_LIMITS: {
16
+ readonly email: 254;
17
+ readonly phone: 40;
18
+ readonly address: 500;
19
+ readonly driversLicense: 60;
20
+ readonly rightToWork: 200;
21
+ readonly nationality: 100;
22
+ };
23
+ /** The contact details that go into an export. Absent keys are left out. */
24
+ interface ExportContact {
25
+ readonly email?: string;
26
+ readonly phone?: string;
27
+ /** Free text; lines are separated by `\n`. */
28
+ readonly address?: string;
29
+ /** License categories, e.g. "B, BE". */
30
+ readonly driversLicense?: string;
31
+ /** e.g. "EU citizen, no sponsorship needed". */
32
+ readonly rightToWork?: string;
33
+ readonly nationality?: string;
34
+ }
35
+ /** What the owner has typed, plus which fields they chose to include. */
36
+ interface ExportContactDraft {
37
+ readonly email?: string;
38
+ readonly phone?: string;
39
+ readonly address?: string;
40
+ readonly driversLicense?: string;
41
+ readonly rightToWork?: string;
42
+ readonly nationality?: string;
43
+ readonly includeEmail?: boolean;
44
+ readonly includePhone?: boolean;
45
+ readonly includeAddress?: boolean;
46
+ readonly includeDriversLicense?: boolean;
47
+ readonly includeRightToWork?: boolean;
48
+ readonly includeNationality?: boolean;
49
+ }
50
+ /**
51
+ * Validates a picked contact. Only lengths are checked: phone numbers and
52
+ * addresses vary too much between countries, and a wrong-looking email is a
53
+ * warning for the owner, not a reason to refuse the export.
54
+ */
55
+ declare const exportContactSchema: z.ZodObject<{
56
+ email: z.ZodOptional<z.ZodString>;
57
+ phone: z.ZodOptional<z.ZodString>;
58
+ address: z.ZodOptional<z.ZodString>;
59
+ driversLicense: z.ZodOptional<z.ZodString>;
60
+ rightToWork: z.ZodOptional<z.ZodString>;
61
+ nationality: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strict>;
63
+ /**
64
+ * The fields to put in an export: the included ones that are not blank, run
65
+ * through {@link normalizeExportContact}.
66
+ */
67
+ declare function pickExportContact(draft: ExportContactDraft): ExportContact;
68
+ /**
69
+ * Drops blank fields and tidies the rest. Every field but the address becomes
70
+ * one line with single spaces. An address keeps its line breaks but loses blank lines and the
71
+ * spaces around each line. Each field is cut at its {@link EXPORT_CONTACT_LIMITS}
72
+ * length. The emitters call this too, so a caller that skips
73
+ * {@link pickExportContact} and the schema gets the same bounded output.
74
+ */
75
+ declare function normalizeExportContact(contact: ExportContact): ExportContact;
76
+ /** A loose shape check for a non-blocking "check this address" hint. */
77
+ declare function looksLikeEmail(value: string): boolean;
78
+
79
+ export { type ExportContact as E, EXPORT_CONTACT_LIMITS as a, type ExportContactDraft as b, exportContactSchema as e, looksLikeEmail as l, normalizeExportContact as n, pickExportContact as p };
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Private contact and personal details for exports: email, phone, postal
5
+ * address, driver's license, right to work and nationality.
6
+ *
7
+ * Sifa never stores these and never writes them to the owner's PDS, where they
8
+ * would be public. The owner types them on the export page, the browser keeps
9
+ * them, and they go only into the files the owner downloads. This module holds
10
+ * the shape, the limits and the pick rule, so the export page and the server
11
+ * that builds a funder CV agree on them.
12
+ */
13
+
14
+ /** Longest value accepted per field. 254 is the longest valid email address. */
15
+ declare const EXPORT_CONTACT_LIMITS: {
16
+ readonly email: 254;
17
+ readonly phone: 40;
18
+ readonly address: 500;
19
+ readonly driversLicense: 60;
20
+ readonly rightToWork: 200;
21
+ readonly nationality: 100;
22
+ };
23
+ /** The contact details that go into an export. Absent keys are left out. */
24
+ interface ExportContact {
25
+ readonly email?: string;
26
+ readonly phone?: string;
27
+ /** Free text; lines are separated by `\n`. */
28
+ readonly address?: string;
29
+ /** License categories, e.g. "B, BE". */
30
+ readonly driversLicense?: string;
31
+ /** e.g. "EU citizen, no sponsorship needed". */
32
+ readonly rightToWork?: string;
33
+ readonly nationality?: string;
34
+ }
35
+ /** What the owner has typed, plus which fields they chose to include. */
36
+ interface ExportContactDraft {
37
+ readonly email?: string;
38
+ readonly phone?: string;
39
+ readonly address?: string;
40
+ readonly driversLicense?: string;
41
+ readonly rightToWork?: string;
42
+ readonly nationality?: string;
43
+ readonly includeEmail?: boolean;
44
+ readonly includePhone?: boolean;
45
+ readonly includeAddress?: boolean;
46
+ readonly includeDriversLicense?: boolean;
47
+ readonly includeRightToWork?: boolean;
48
+ readonly includeNationality?: boolean;
49
+ }
50
+ /**
51
+ * Validates a picked contact. Only lengths are checked: phone numbers and
52
+ * addresses vary too much between countries, and a wrong-looking email is a
53
+ * warning for the owner, not a reason to refuse the export.
54
+ */
55
+ declare const exportContactSchema: z.ZodObject<{
56
+ email: z.ZodOptional<z.ZodString>;
57
+ phone: z.ZodOptional<z.ZodString>;
58
+ address: z.ZodOptional<z.ZodString>;
59
+ driversLicense: z.ZodOptional<z.ZodString>;
60
+ rightToWork: z.ZodOptional<z.ZodString>;
61
+ nationality: z.ZodOptional<z.ZodString>;
62
+ }, z.core.$strict>;
63
+ /**
64
+ * The fields to put in an export: the included ones that are not blank, run
65
+ * through {@link normalizeExportContact}.
66
+ */
67
+ declare function pickExportContact(draft: ExportContactDraft): ExportContact;
68
+ /**
69
+ * Drops blank fields and tidies the rest. Every field but the address becomes
70
+ * one line with single spaces. An address keeps its line breaks but loses blank lines and the
71
+ * spaces around each line. Each field is cut at its {@link EXPORT_CONTACT_LIMITS}
72
+ * length. The emitters call this too, so a caller that skips
73
+ * {@link pickExportContact} and the schema gets the same bounded output.
74
+ */
75
+ declare function normalizeExportContact(contact: ExportContact): ExportContact;
76
+ /** A loose shape check for a non-blocking "check this address" hint. */
77
+ declare function looksLikeEmail(value: string): boolean;
78
+
79
+ export { type ExportContact as E, EXPORT_CONTACT_LIMITS as a, type ExportContactDraft as b, exportContactSchema as e, looksLikeEmail as l, normalizeExportContact as n, pickExportContact as p };
package/dist/index.cjs CHANGED
@@ -7692,7 +7692,7 @@ function describeSifaRecord(collection, value) {
7692
7692
  }
7693
7693
 
7694
7694
  // src/index.ts
7695
- var SIFA_SDK_VERSION = "0.19.94";
7695
+ var SIFA_SDK_VERSION = "0.19.95";
7696
7696
 
7697
7697
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
7698
7698
  exports.ACTIVITY_VERBS = ACTIVITY_VERBS;
package/dist/index.js CHANGED
@@ -377,7 +377,7 @@ import {
377
377
  roadmapIssueUrl
378
378
  } from "./roadmap/index.js";
379
379
  import { SIFA_REPO_GROUPS, describeSifaRecord, repoGroupForCollection } from "./repo/index.js";
380
- var SIFA_SDK_VERSION = "0.19.94";
380
+ var SIFA_SDK_VERSION = "0.19.95";
381
381
  export {
382
382
  ACTIVITY_TIERS,
383
383
  ACTIVITY_VERBS,
@@ -1,83 +1,9 @@
1
- import { z } from 'zod';
1
+ import { E as ExportContact } from '../export-contact-D_krcTBH.cjs';
2
+ export { a as EXPORT_CONTACT_LIMITS, b as ExportContactDraft, e as exportContactSchema, l as looksLikeEmail, n as normalizeExportContact, p as pickExportContact } from '../export-contact-D_krcTBH.cjs';
2
3
  import { L as LocationValue, J as ProfileLocation, 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-DU0pYHch.cjs';
4
+ import { z } from 'zod';
3
5
  import '../verification-providers-DeyGqaoC.cjs';
4
6
 
5
- /**
6
- * Private contact and personal details for exports: email, phone, postal
7
- * address, driver's license, right to work and nationality.
8
- *
9
- * Sifa never stores these and never writes them to the owner's PDS, where they
10
- * would be public. The owner types them on the export page, the browser keeps
11
- * them, and they go only into the files the owner downloads. This module holds
12
- * the shape, the limits and the pick rule, so the export page and the server
13
- * that builds a funder CV agree on them.
14
- */
15
-
16
- /** Longest value accepted per field. 254 is the longest valid email address. */
17
- declare const EXPORT_CONTACT_LIMITS: {
18
- readonly email: 254;
19
- readonly phone: 40;
20
- readonly address: 500;
21
- readonly driversLicense: 60;
22
- readonly rightToWork: 200;
23
- readonly nationality: 100;
24
- };
25
- /** The contact details that go into an export. Absent keys are left out. */
26
- interface ExportContact {
27
- readonly email?: string;
28
- readonly phone?: string;
29
- /** Free text; lines are separated by `\n`. */
30
- readonly address?: string;
31
- /** License categories, e.g. "B, BE". */
32
- readonly driversLicense?: string;
33
- /** e.g. "EU citizen, no sponsorship needed". */
34
- readonly rightToWork?: string;
35
- readonly nationality?: string;
36
- }
37
- /** What the owner has typed, plus which fields they chose to include. */
38
- interface ExportContactDraft {
39
- readonly email?: string;
40
- readonly phone?: string;
41
- readonly address?: string;
42
- readonly driversLicense?: string;
43
- readonly rightToWork?: string;
44
- readonly nationality?: string;
45
- readonly includeEmail?: boolean;
46
- readonly includePhone?: boolean;
47
- readonly includeAddress?: boolean;
48
- readonly includeDriversLicense?: boolean;
49
- readonly includeRightToWork?: boolean;
50
- readonly includeNationality?: boolean;
51
- }
52
- /**
53
- * Validates a picked contact. Only lengths are checked: phone numbers and
54
- * addresses vary too much between countries, and a wrong-looking email is a
55
- * warning for the owner, not a reason to refuse the export.
56
- */
57
- declare const exportContactSchema: z.ZodObject<{
58
- email: z.ZodOptional<z.ZodString>;
59
- phone: z.ZodOptional<z.ZodString>;
60
- address: z.ZodOptional<z.ZodString>;
61
- driversLicense: z.ZodOptional<z.ZodString>;
62
- rightToWork: z.ZodOptional<z.ZodString>;
63
- nationality: z.ZodOptional<z.ZodString>;
64
- }, z.core.$strict>;
65
- /**
66
- * The fields to put in an export: the included ones that are not blank, run
67
- * through {@link normalizeExportContact}.
68
- */
69
- declare function pickExportContact(draft: ExportContactDraft): ExportContact;
70
- /**
71
- * Drops blank fields and tidies the rest. Every field but the address becomes
72
- * one line with single spaces. An address keeps its line breaks but loses blank lines and the
73
- * spaces around each line. Each field is cut at its {@link EXPORT_CONTACT_LIMITS}
74
- * length. The emitters call this too, so a caller that skips
75
- * {@link pickExportContact} and the schema gets the same bounded output.
76
- */
77
- declare function normalizeExportContact(contact: ExportContact): ExportContact;
78
- /** A loose shape check for a non-blocking "check this address" hint. */
79
- declare function looksLikeEmail(value: string): boolean;
80
-
81
7
  /**
82
8
  * JSON Resume v1.0.0 emitter for a Sifa profile.
83
9
  *
@@ -514,4 +440,4 @@ type FunderCvDocument = NihFunderCv | ErcFunderCv;
514
440
  */
515
441
  declare function profileToFunderCv(profile: FunderCvProfileInput, selection: FunderCvSelection, options?: FunderCvOptions): FunderCvDocument;
516
442
 
517
- export { EXPORT_CONTACT_LIMITS, type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcFunderCvPerson, type ErcRecognition, type ExportContact, type ExportContactDraft, 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 FunderCvOptions, 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, exportContactSchema, findUnknownFunderCvItems, funderCvItemId, funderCvSelectionSchema, listFunderCvCandidates, looksLikeEmail, normalizeExportContact, pickExportContact, profileToFunderCv, profileToJsonResume, toResumeDate };
443
+ export { type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcFunderCvPerson, type ErcRecognition, ExportContact, 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 FunderCvOptions, 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,83 +1,9 @@
1
- import { z } from 'zod';
1
+ import { E as ExportContact } from '../export-contact-D_krcTBH.js';
2
+ export { a as EXPORT_CONTACT_LIMITS, b as ExportContactDraft, e as exportContactSchema, l as looksLikeEmail, n as normalizeExportContact, p as pickExportContact } from '../export-contact-D_krcTBH.js';
2
3
  import { L as LocationValue, J as ProfileLocation, 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-BEAuoL6l.js';
4
+ import { z } from 'zod';
3
5
  import '../verification-providers-DeyGqaoC.js';
4
6
 
5
- /**
6
- * Private contact and personal details for exports: email, phone, postal
7
- * address, driver's license, right to work and nationality.
8
- *
9
- * Sifa never stores these and never writes them to the owner's PDS, where they
10
- * would be public. The owner types them on the export page, the browser keeps
11
- * them, and they go only into the files the owner downloads. This module holds
12
- * the shape, the limits and the pick rule, so the export page and the server
13
- * that builds a funder CV agree on them.
14
- */
15
-
16
- /** Longest value accepted per field. 254 is the longest valid email address. */
17
- declare const EXPORT_CONTACT_LIMITS: {
18
- readonly email: 254;
19
- readonly phone: 40;
20
- readonly address: 500;
21
- readonly driversLicense: 60;
22
- readonly rightToWork: 200;
23
- readonly nationality: 100;
24
- };
25
- /** The contact details that go into an export. Absent keys are left out. */
26
- interface ExportContact {
27
- readonly email?: string;
28
- readonly phone?: string;
29
- /** Free text; lines are separated by `\n`. */
30
- readonly address?: string;
31
- /** License categories, e.g. "B, BE". */
32
- readonly driversLicense?: string;
33
- /** e.g. "EU citizen, no sponsorship needed". */
34
- readonly rightToWork?: string;
35
- readonly nationality?: string;
36
- }
37
- /** What the owner has typed, plus which fields they chose to include. */
38
- interface ExportContactDraft {
39
- readonly email?: string;
40
- readonly phone?: string;
41
- readonly address?: string;
42
- readonly driversLicense?: string;
43
- readonly rightToWork?: string;
44
- readonly nationality?: string;
45
- readonly includeEmail?: boolean;
46
- readonly includePhone?: boolean;
47
- readonly includeAddress?: boolean;
48
- readonly includeDriversLicense?: boolean;
49
- readonly includeRightToWork?: boolean;
50
- readonly includeNationality?: boolean;
51
- }
52
- /**
53
- * Validates a picked contact. Only lengths are checked: phone numbers and
54
- * addresses vary too much between countries, and a wrong-looking email is a
55
- * warning for the owner, not a reason to refuse the export.
56
- */
57
- declare const exportContactSchema: z.ZodObject<{
58
- email: z.ZodOptional<z.ZodString>;
59
- phone: z.ZodOptional<z.ZodString>;
60
- address: z.ZodOptional<z.ZodString>;
61
- driversLicense: z.ZodOptional<z.ZodString>;
62
- rightToWork: z.ZodOptional<z.ZodString>;
63
- nationality: z.ZodOptional<z.ZodString>;
64
- }, z.core.$strict>;
65
- /**
66
- * The fields to put in an export: the included ones that are not blank, run
67
- * through {@link normalizeExportContact}.
68
- */
69
- declare function pickExportContact(draft: ExportContactDraft): ExportContact;
70
- /**
71
- * Drops blank fields and tidies the rest. Every field but the address becomes
72
- * one line with single spaces. An address keeps its line breaks but loses blank lines and the
73
- * spaces around each line. Each field is cut at its {@link EXPORT_CONTACT_LIMITS}
74
- * length. The emitters call this too, so a caller that skips
75
- * {@link pickExportContact} and the schema gets the same bounded output.
76
- */
77
- declare function normalizeExportContact(contact: ExportContact): ExportContact;
78
- /** A loose shape check for a non-blocking "check this address" hint. */
79
- declare function looksLikeEmail(value: string): boolean;
80
-
81
7
  /**
82
8
  * JSON Resume v1.0.0 emitter for a Sifa profile.
83
9
  *
@@ -514,4 +440,4 @@ type FunderCvDocument = NihFunderCv | ErcFunderCv;
514
440
  */
515
441
  declare function profileToFunderCv(profile: FunderCvProfileInput, selection: FunderCvSelection, options?: FunderCvOptions): FunderCvDocument;
516
442
 
517
- export { EXPORT_CONTACT_LIMITS, type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcFunderCvPerson, type ErcRecognition, type ExportContact, type ExportContactDraft, 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 FunderCvOptions, 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, exportContactSchema, findUnknownFunderCvItems, funderCvItemId, funderCvSelectionSchema, listFunderCvCandidates, looksLikeEmail, normalizeExportContact, pickExportContact, profileToFunderCv, profileToJsonResume, toResumeDate };
443
+ export { type ErcContribution, type ErcEducation, type ErcFunderCv, type ErcFunderCvPerson, type ErcRecognition, ExportContact, 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 FunderCvOptions, 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 };