@singi-labs/sifa-sdk 0.21.0 → 0.23.0
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/{follow-profile-CgLLLQtJ.d.cts → follow-profile-BG_6eZwW.d.cts} +1 -1
- package/dist/{follow-profile-CVcA2w1v.d.ts → follow-profile-DGZzB5iM.d.ts} +1 -1
- package/dist/{index-BQAKeEoj.d.cts → index-BKvI1Bvg.d.cts} +1 -1
- package/dist/{index-DDh2RLvx.d.ts → index-BR8LDBo1.d.ts} +1 -1
- package/dist/index.cjs +35 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonld/index.d.cts +2 -2
- package/dist/jsonld/index.d.ts +2 -2
- package/dist/{network-map-2OKh3wSB.d.ts → network-map-CMyjk6jc.d.ts} +4 -4
- package/dist/{network-map-DJonNOl0.d.cts → network-map-CqLYThmY.d.cts} +4 -4
- package/dist/{org-settings-BShvhyFp.d.ts → org-settings-BliQdqbB.d.cts} +57 -1
- package/dist/{profile-investment-QSwX2GL5.d.cts → profile-investment-BmuXFlZw.d.cts} +2 -0
- package/dist/{profile-investment-QSwX2GL5.d.ts → profile-investment-BmuXFlZw.d.ts} +2 -0
- package/dist/{org-settings-C73Sin5E.d.cts → profile-self-D59D_rhI.d.ts} +57 -1
- package/dist/{profile-summary-BCOKt3qS.d.cts → profile-summary-CoTNGDpt.d.cts} +1 -1
- package/dist/{profile-summary-DF8-evvA.d.ts → profile-summary-Sv6rqQbx.d.ts} +1 -1
- package/dist/publishing/index.cjs +21 -1
- package/dist/publishing/index.cjs.map +1 -1
- package/dist/query/fetchers/index.cjs +21 -1
- package/dist/query/fetchers/index.cjs.map +1 -1
- package/dist/query/fetchers/index.d.cts +9 -9
- package/dist/query/fetchers/index.d.ts +9 -9
- package/dist/query/fetchers/profile-mutations.js.map +1 -1
- package/dist/query/hooks/index.cjs +21 -1
- package/dist/query/hooks/index.cjs.map +1 -1
- package/dist/query/hooks/index.d.cts +7 -7
- package/dist/query/hooks/index.d.ts +7 -7
- package/dist/query/index.cjs.map +1 -1
- package/dist/query/index.d.cts +12 -12
- package/dist/query/index.d.ts +12 -12
- package/dist/resume/index.d.cts +2 -2
- package/dist/resume/index.d.ts +2 -2
- package/dist/schemas/index.cjs +29 -6
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +3 -3
- package/dist/schemas/index.d.ts +3 -3
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/profile-self.js +18 -6
- package/dist/schemas/profile-self.js.map +1 -1
- package/dist/schemas/shared.js +28 -1
- package/dist/schemas/shared.js.map +1 -1
- package/dist/schemas/write/certification.js +3 -3
- package/dist/schemas/write/certification.js.map +1 -1
- package/dist/schemas/write/course.js +5 -10
- package/dist/schemas/write/course.js.map +1 -1
- package/dist/schemas/write/education.js +3 -3
- package/dist/schemas/write/education.js.map +1 -1
- package/dist/schemas/write/honor.js +2 -2
- package/dist/schemas/write/honor.js.map +1 -1
- package/dist/schemas/write/index.cjs +58 -32
- package/dist/schemas/write/index.cjs.map +1 -1
- package/dist/schemas/write/index.d.cts +21 -64
- package/dist/schemas/write/index.d.ts +21 -64
- package/dist/schemas/write/index.js +5 -1
- package/dist/schemas/write/index.js.map +1 -1
- package/dist/schemas/write/investment.js +3 -3
- package/dist/schemas/write/investment.js.map +1 -1
- package/dist/schemas/write/involvement.js +3 -3
- package/dist/schemas/write/involvement.js.map +1 -1
- package/dist/schemas/write/position.js +8 -3
- package/dist/schemas/write/position.js.map +1 -1
- package/dist/schemas/write/profile-self.js +19 -5
- package/dist/schemas/write/profile-self.js.map +1 -1
- package/dist/schemas/write/project.js +3 -3
- package/dist/schemas/write/project.js.map +1 -1
- package/dist/schemas/write/publication.js +2 -2
- package/dist/schemas/write/publication.js.map +1 -1
- package/dist/schemas/write/shared.js +6 -0
- package/dist/schemas/write/shared.js.map +1 -1
- package/dist/schemas/write/volunteering.js +3 -3
- package/dist/schemas/write/volunteering.js.map +1 -1
- package/dist/testing/index.d.cts +2 -2
- package/dist/testing/index.d.ts +2 -2
- package/dist/{types-JydVIhN5.d.cts → types-BC4A9-W9.d.cts} +2 -2
- package/dist/{types-CkomzDlY.d.ts → types-CcVRIHcX.d.ts} +2 -2
- package/dist/{use-user-settings-DQ6Dyby7.d.ts → use-user-settings-CI9eZQpp.d.ts} +11 -6
- package/dist/{use-user-settings-Bn6g8bgr.d.cts → use-user-settings-CfQKSBAC.d.cts} +11 -6
- package/dist/{user-settings-BdNrDa9O.d.ts → user-settings-BVFxLAOa.d.cts} +6 -11
- package/dist/{user-settings-C8JUD4DM.d.cts → user-settings-C65eFsPR.d.ts} +6 -11
- package/dist/{verification-providers-DeyGqaoC.d.cts → verification-providers-DQLIOSCK.d.cts} +7 -1
- package/dist/{verification-providers-DeyGqaoC.d.ts → verification-providers-DQLIOSCK.d.ts} +7 -1
- package/package.json +1 -1
package/dist/schemas/index.js
CHANGED
|
@@ -94,6 +94,7 @@ import {
|
|
|
94
94
|
didSchema,
|
|
95
95
|
externalRecordRefSchema,
|
|
96
96
|
languageTagSchema,
|
|
97
|
+
maxBytes,
|
|
97
98
|
maxGraphemes,
|
|
98
99
|
partialDateSchema,
|
|
99
100
|
selfLabelsSchema,
|
|
@@ -171,6 +172,7 @@ export {
|
|
|
171
172
|
externalRecordRefSchema,
|
|
172
173
|
languageTagSchema,
|
|
173
174
|
makeGraphFollowRecordSchema,
|
|
175
|
+
maxBytes,
|
|
174
176
|
maxGraphemes,
|
|
175
177
|
partialDateSchema,
|
|
176
178
|
resolveEmploymentVerification,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/index.ts"],"sourcesContent":["export { BlobRefSchema, type BlobRef } from './blob-ref.js';\nexport {\n EndorsementConfirmationRecordSchema,\n type EndorsementConfirmationRecord,\n} from './endorsement-confirmation.js';\nexport {\n EntitySearchResultSchema,\n EntitySearchResponseSchema,\n EntitySelectRequestSchema,\n EntitySelectResponseSchema,\n EntityImportSearchResponseSchema,\n EntityResolveDomainRequestSchema,\n EntityResolveDomainResponseSchema,\n EntityMintDomainResponseSchema,\n type EntitySearchResult,\n type EntitySearchResponse,\n type EntitySelectRequest,\n type EntitySelectResponse,\n type EntityImportSearchResponse,\n type EntityResolveDomainRequest,\n type EntityResolveDomainResponse,\n type EntityMintDomainResponse,\n} from './entity.js';\nexport { EndorsementRecordSchema, type EndorsementRecord } from './endorsement.js';\nexport {\n GermDeclarationRecordSchema,\n GERM_SHOW_BUTTON_TO_VALUES,\n type GermDeclarationRecord,\n type GermShowButtonTo,\n} from './germ-declaration.js';\nexport {\n ConfirmationRecordSchema,\n CONFIRMATION_RELATIONS,\n type ConfirmationRecord,\n type ConfirmationRelation,\n} from './confirmation.js';\nexport { OrgProfileRecordSchema, type OrgProfileRecord } from './org-profile.js';\nexport {\n OrgEmploymentAttestationRecordSchema,\n type OrgEmploymentAttestationRecord,\n} from './org-employment-attestation.js';\nexport {\n EmploymentVerificationRecordSchema,\n EMPLOYMENT_STATUS_TOKENS,\n VERIFICATION_METHOD_TOKENS,\n resolveEmploymentVerification,\n type EmploymentVerificationRecord,\n type EmploymentVerificationResolution,\n type ResolveEmploymentVerificationOptions,\n} from './employment-verification.js';\nexport {\n GraphFollowRecordSchema,\n makeGraphFollowRecordSchema,\n type GraphFollowRecord,\n} from './graph-follow.js';\nexport {\n FEATURE_FLAGS,\n FeatureAllowlistEntrySchema,\n FollowProfilePageSchema,\n FollowProfileSchema,\n type FeatureAllowlistEntry,\n type FeatureFlag,\n type FollowProfileItem,\n type FollowProfilePage,\n} from './follow-profile.js';\nexport {\n AtmosphereFeedItemSchema,\n FeedActorSchema,\n FollowFeedItemSchema,\n FollowFeedPageSchema,\n SifaFeedItemSchema,\n decodeFeedCursor,\n encodeFeedCursor,\n type AtmosphereFeedItem,\n type FeedActor,\n type FeedCursor,\n type FollowFeedItem,\n type FollowFeedPage,\n type SifaFeedItem,\n} from './feed.js';\nexport {\n ProfileCertificationRecordSchema,\n type ProfileCertificationRecord,\n} from './profile-certification.js';\nexport { ProfileCourseRecordSchema, type ProfileCourseRecord } from './profile-course.js';\nexport { ProfileEducationRecordSchema, type ProfileEducationRecord } from './profile-education.js';\nexport {\n ProfileExternalAccountRecordSchema,\n type ProfileExternalAccountRecord,\n} from './profile-external-account.js';\nexport { ProfileHonorRecordSchema, type ProfileHonorRecord } from './profile-honor.js';\nexport {\n ArtifactLinkSchema,\n PROFILE_INVOLVEMENT_NSID,\n ProfileInvolvementRecordSchema,\n type ArtifactLink,\n type ProfileInvolvementRecord,\n} from './profile-involvement.js';\nexport { ProfileLanguageRecordSchema, type ProfileLanguageRecord } from './profile-language.js';\nexport { ProfilePositionRecordSchema, type ProfilePositionRecord } from './profile-position.js';\nexport {\n PresentationDurationSchema,\n PresentationLinkSchema,\n ProfilePresentationRecordSchema,\n type PresentationDuration,\n type PresentationLink,\n type ProfilePresentationRecord,\n} from './profile-presentation.js';\nexport {\n ProfilePresentationDeliveryRecordSchema,\n type ProfilePresentationDeliveryRecord,\n} from './profile-presentation-delivery.js';\nexport { ProfileProjectRecordSchema, type ProfileProjectRecord } from './profile-project.js';\nexport {\n ProfilePublicationRecordSchema,\n PublicationAuthorSchema,\n RelatedIdentifierSchema,\n type ProfilePublicationRecord,\n type PublicationAuthor,\n} from './profile-publication.js';\nexport { ProfileSelfRecordSchema, type ProfileSelfRecord } from './profile-self.js';\nexport { ProfileSkillRecordSchema, type ProfileSkillRecord } from './profile-skill.js';\nexport {\n ProfileVolunteeringRecordSchema,\n type ProfileVolunteeringRecord,\n} from './profile-volunteering.js';\nexport {\n agentRefSchema,\n atUriSchema,\n cidSchema,\n datetimeSchema,\n didSchema,\n externalRecordRefSchema,\n languageTagSchema,\n maxGraphemes,\n partialDateSchema,\n selfLabelsSchema,\n skillRefSchema,\n strongRefSchema,\n uriSchema,\n type AgentRef,\n} from './shared.js';\nexport {\n ProfileInvestmentRecordSchema,\n InvestmentAmountSchema,\n PROFILE_INVESTMENT_NSID,\n type ProfileInvestmentRecord,\n} from './profile-investment.js';\n"],"mappings":";AAAA,SAAS,qBAAmC;AAC5C;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OASK;AACP,SAAS,+BAAuD;AAChE;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,8BAAqD;AAC9D;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,iCAA2D;AACpE,SAAS,oCAAiE;AAC1E;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gCAAyD;AAClE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mCAA+D;AACxE,SAAS,mCAA+D;AACxE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,kCAA6D;AACtE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,+BAAuD;AAChE,SAAS,gCAAyD;AAClE;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/index.ts"],"sourcesContent":["export { BlobRefSchema, type BlobRef } from './blob-ref.js';\nexport {\n EndorsementConfirmationRecordSchema,\n type EndorsementConfirmationRecord,\n} from './endorsement-confirmation.js';\nexport {\n EntitySearchResultSchema,\n EntitySearchResponseSchema,\n EntitySelectRequestSchema,\n EntitySelectResponseSchema,\n EntityImportSearchResponseSchema,\n EntityResolveDomainRequestSchema,\n EntityResolveDomainResponseSchema,\n EntityMintDomainResponseSchema,\n type EntitySearchResult,\n type EntitySearchResponse,\n type EntitySelectRequest,\n type EntitySelectResponse,\n type EntityImportSearchResponse,\n type EntityResolveDomainRequest,\n type EntityResolveDomainResponse,\n type EntityMintDomainResponse,\n} from './entity.js';\nexport { EndorsementRecordSchema, type EndorsementRecord } from './endorsement.js';\nexport {\n GermDeclarationRecordSchema,\n GERM_SHOW_BUTTON_TO_VALUES,\n type GermDeclarationRecord,\n type GermShowButtonTo,\n} from './germ-declaration.js';\nexport {\n ConfirmationRecordSchema,\n CONFIRMATION_RELATIONS,\n type ConfirmationRecord,\n type ConfirmationRelation,\n} from './confirmation.js';\nexport { OrgProfileRecordSchema, type OrgProfileRecord } from './org-profile.js';\nexport {\n OrgEmploymentAttestationRecordSchema,\n type OrgEmploymentAttestationRecord,\n} from './org-employment-attestation.js';\nexport {\n EmploymentVerificationRecordSchema,\n EMPLOYMENT_STATUS_TOKENS,\n VERIFICATION_METHOD_TOKENS,\n resolveEmploymentVerification,\n type EmploymentVerificationRecord,\n type EmploymentVerificationResolution,\n type ResolveEmploymentVerificationOptions,\n} from './employment-verification.js';\nexport {\n GraphFollowRecordSchema,\n makeGraphFollowRecordSchema,\n type GraphFollowRecord,\n} from './graph-follow.js';\nexport {\n FEATURE_FLAGS,\n FeatureAllowlistEntrySchema,\n FollowProfilePageSchema,\n FollowProfileSchema,\n type FeatureAllowlistEntry,\n type FeatureFlag,\n type FollowProfileItem,\n type FollowProfilePage,\n} from './follow-profile.js';\nexport {\n AtmosphereFeedItemSchema,\n FeedActorSchema,\n FollowFeedItemSchema,\n FollowFeedPageSchema,\n SifaFeedItemSchema,\n decodeFeedCursor,\n encodeFeedCursor,\n type AtmosphereFeedItem,\n type FeedActor,\n type FeedCursor,\n type FollowFeedItem,\n type FollowFeedPage,\n type SifaFeedItem,\n} from './feed.js';\nexport {\n ProfileCertificationRecordSchema,\n type ProfileCertificationRecord,\n} from './profile-certification.js';\nexport { ProfileCourseRecordSchema, type ProfileCourseRecord } from './profile-course.js';\nexport { ProfileEducationRecordSchema, type ProfileEducationRecord } from './profile-education.js';\nexport {\n ProfileExternalAccountRecordSchema,\n type ProfileExternalAccountRecord,\n} from './profile-external-account.js';\nexport { ProfileHonorRecordSchema, type ProfileHonorRecord } from './profile-honor.js';\nexport {\n ArtifactLinkSchema,\n PROFILE_INVOLVEMENT_NSID,\n ProfileInvolvementRecordSchema,\n type ArtifactLink,\n type ProfileInvolvementRecord,\n} from './profile-involvement.js';\nexport { ProfileLanguageRecordSchema, type ProfileLanguageRecord } from './profile-language.js';\nexport { ProfilePositionRecordSchema, type ProfilePositionRecord } from './profile-position.js';\nexport {\n PresentationDurationSchema,\n PresentationLinkSchema,\n ProfilePresentationRecordSchema,\n type PresentationDuration,\n type PresentationLink,\n type ProfilePresentationRecord,\n} from './profile-presentation.js';\nexport {\n ProfilePresentationDeliveryRecordSchema,\n type ProfilePresentationDeliveryRecord,\n} from './profile-presentation-delivery.js';\nexport { ProfileProjectRecordSchema, type ProfileProjectRecord } from './profile-project.js';\nexport {\n ProfilePublicationRecordSchema,\n PublicationAuthorSchema,\n RelatedIdentifierSchema,\n type ProfilePublicationRecord,\n type PublicationAuthor,\n} from './profile-publication.js';\nexport { ProfileSelfRecordSchema, type ProfileSelfRecord } from './profile-self.js';\nexport { ProfileSkillRecordSchema, type ProfileSkillRecord } from './profile-skill.js';\nexport {\n ProfileVolunteeringRecordSchema,\n type ProfileVolunteeringRecord,\n} from './profile-volunteering.js';\nexport {\n agentRefSchema,\n atUriSchema,\n cidSchema,\n datetimeSchema,\n didSchema,\n externalRecordRefSchema,\n languageTagSchema,\n maxBytes,\n maxGraphemes,\n partialDateSchema,\n selfLabelsSchema,\n skillRefSchema,\n strongRefSchema,\n uriSchema,\n type AgentRef,\n} from './shared.js';\nexport {\n ProfileInvestmentRecordSchema,\n InvestmentAmountSchema,\n PROFILE_INVESTMENT_NSID,\n type ProfileInvestmentRecord,\n} from './profile-investment.js';\n"],"mappings":";AAAA,SAAS,qBAAmC;AAC5C;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OASK;AACP,SAAS,+BAAuD;AAChE;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,8BAAqD;AAC9D;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,iCAA2D;AACpE,SAAS,oCAAiE;AAC1E;AAAA,EACE;AAAA,OAEK;AACP,SAAS,gCAAyD;AAClE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mCAA+D;AACxE,SAAS,mCAA+D;AACxE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAEK;AACP,SAAS,kCAA6D;AACtE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,+BAAuD;AAChE,SAAS,gCAAyD;AAClE;AAAA,EACE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
// src/schemas/profile-self.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
datetimeSchema,
|
|
5
|
+
languageTagSchema,
|
|
6
|
+
maxGraphemes,
|
|
7
|
+
profileAboutSchema,
|
|
8
|
+
profileDisplayNameSchema,
|
|
9
|
+
profileHeadlineSchema,
|
|
10
|
+
profileNameSchema,
|
|
11
|
+
profilePronounsSchema,
|
|
12
|
+
selfLabelsSchema
|
|
13
|
+
} from "./shared.js";
|
|
4
14
|
var ProfileSelfRecordSchema = z.object({
|
|
5
|
-
|
|
6
|
-
|
|
15
|
+
displayName: profileDisplayNameSchema.optional(),
|
|
16
|
+
pronouns: profilePronounsSchema.optional(),
|
|
17
|
+
headline: profileHeadlineSchema.optional(),
|
|
18
|
+
about: profileAboutSchema.optional(),
|
|
7
19
|
industry: z.string().refine(maxGraphemes(100)).max(1e3).optional(),
|
|
8
|
-
givenName:
|
|
9
|
-
familyName:
|
|
10
|
-
namePronunciation:
|
|
20
|
+
givenName: profileNameSchema.optional(),
|
|
21
|
+
familyName: profileNameSchema.optional(),
|
|
22
|
+
namePronunciation: profileNameSchema.optional(),
|
|
11
23
|
location: z.unknown().optional(),
|
|
12
24
|
openTo: z.array(z.string()).max(10).optional(),
|
|
13
25
|
preferredWorkplace: z.array(z.string()).max(3).optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/profile-self.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/profile-self.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport {\n datetimeSchema,\n languageTagSchema,\n maxGraphemes,\n profileAboutSchema,\n profileDisplayNameSchema,\n profileHeadlineSchema,\n profileNameSchema,\n profilePronounsSchema,\n selfLabelsSchema,\n} from './shared.js';\n\n/**\n * Zod schema for `id.sifa.profile.self` records. Singleton (record key `self`).\n *\n * `knownValues` on `openTo` and `preferredWorkplace` are advisory per the\n * lexicon spec -- unknown values are allowed, but documented options live\n * under the `id.sifa.defs#*` namespace.\n */\nexport const ProfileSelfRecordSchema = z.object({\n displayName: profileDisplayNameSchema.optional(),\n pronouns: profilePronounsSchema.optional(),\n headline: profileHeadlineSchema.optional(),\n about: profileAboutSchema.optional(),\n industry: z.string().refine(maxGraphemes(100)).max(1000).optional(),\n givenName: profileNameSchema.optional(),\n familyName: profileNameSchema.optional(),\n namePronunciation: profileNameSchema.optional(),\n location: z.unknown().optional(),\n openTo: z.array(z.string()).max(10).optional(),\n preferredWorkplace: z.array(z.string()).max(3).optional(),\n langs: z.array(languageTagSchema).max(3).optional(),\n labels: selfLabelsSchema.optional(),\n discoverable: z.boolean().optional(),\n /**\n * Where the avatar comes from instead of the avatar blob. Open per the\n * lexicon (`knownValues`); Sifa renders `actor.rpg.sprite`, the user's\n * rpg.actor character.\n */\n avatarSource: z.string().max(128).optional(),\n createdAt: datetimeSchema,\n});\n\nexport type ProfileSelfRecord = z.infer<typeof ProfileSelfRecordSchema>;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASA,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,aAAa,yBAAyB,SAAS;AAAA,EAC/C,UAAU,sBAAsB,SAAS;AAAA,EACzC,UAAU,sBAAsB,SAAS;AAAA,EACzC,OAAO,mBAAmB,SAAS;AAAA,EACnC,UAAU,EAAE,OAAO,EAAE,OAAO,aAAa,GAAG,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAAA,EAClE,WAAW,kBAAkB,SAAS;AAAA,EACtC,YAAY,kBAAkB,SAAS;AAAA,EACvC,mBAAmB,kBAAkB,SAAS;AAAA,EAC9C,UAAU,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EAC7C,oBAAoB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACxD,OAAO,EAAE,MAAM,iBAAiB,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAClD,QAAQ,iBAAiB,SAAS;AAAA,EAClC,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,cAAc,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC3C,WAAW;AACb,CAAC;","names":[]}
|
package/dist/schemas/shared.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/schemas/shared.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
function maxGraphemes(max) {
|
|
4
|
+
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
4
5
|
return (value) => {
|
|
5
|
-
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
6
6
|
let count = 0;
|
|
7
7
|
for (const _ of segmenter.segment(value)) {
|
|
8
8
|
count++;
|
|
@@ -11,6 +11,26 @@ function maxGraphemes(max) {
|
|
|
11
11
|
return true;
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
+
function maxBytes(max) {
|
|
15
|
+
const encoder = new TextEncoder();
|
|
16
|
+
return (value) => {
|
|
17
|
+
if (value.length * 3 <= max) return true;
|
|
18
|
+
return encoder.encode(value).length <= max;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function lexiconString(graphemes, bytes) {
|
|
22
|
+
return z.string().refine(maxGraphemes(graphemes), {
|
|
23
|
+
message: `Must be at most ${graphemes} characters`,
|
|
24
|
+
abort: true
|
|
25
|
+
}).refine(maxBytes(bytes), {
|
|
26
|
+
message: "This text is too long. Emoji and some scripts take more space, so shorten it a little."
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
var profileDisplayNameSchema = lexiconString(64, 640);
|
|
30
|
+
var profileNameSchema = lexiconString(64, 640);
|
|
31
|
+
var profilePronounsSchema = lexiconString(20, 200);
|
|
32
|
+
var profileHeadlineSchema = lexiconString(120, 1200);
|
|
33
|
+
var profileAboutSchema = lexiconString(5e3, 5e4);
|
|
14
34
|
var didSchema = z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, "Invalid DID");
|
|
15
35
|
var datetimeSchema = z.string().datetime({ offset: true });
|
|
16
36
|
var partialDateSchema = z.string().regex(/^\d{4}(-\d{2}(-\d{2}(T.+)?)?)?$/, "Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime");
|
|
@@ -46,8 +66,15 @@ export {
|
|
|
46
66
|
didSchema,
|
|
47
67
|
externalRecordRefSchema,
|
|
48
68
|
languageTagSchema,
|
|
69
|
+
lexiconString,
|
|
70
|
+
maxBytes,
|
|
49
71
|
maxGraphemes,
|
|
50
72
|
partialDateSchema,
|
|
73
|
+
profileAboutSchema,
|
|
74
|
+
profileDisplayNameSchema,
|
|
75
|
+
profileHeadlineSchema,
|
|
76
|
+
profileNameSchema,
|
|
77
|
+
profilePronounsSchema,
|
|
51
78
|
selfLabelsSchema,
|
|
52
79
|
skillRefSchema,
|
|
53
80
|
strongRefSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/schemas/shared.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * Grapheme-aware refinement matching the AT Protocol lexicon `maxGraphemes`\n * constraint. JS strings are sequences of UTF-16 code units, but lexicon\n * `maxGraphemes` counts user-perceived characters (grapheme clusters), so\n * emoji sequences, regional indicators, ZWJ joins, and combining marks all\n * count as one unit each. We use `Intl.Segmenter` to enforce this correctly.\n */\nexport function maxGraphemes(max: number) {\n
|
|
1
|
+
{"version":3,"sources":["../../src/schemas/shared.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * Grapheme-aware refinement matching the AT Protocol lexicon `maxGraphemes`\n * constraint. JS strings are sequences of UTF-16 code units, but lexicon\n * `maxGraphemes` counts user-perceived characters (grapheme clusters), so\n * emoji sequences, regional indicators, ZWJ joins, and combining marks all\n * count as one unit each. We use `Intl.Segmenter` to enforce this correctly.\n */\nexport function maxGraphemes(max: number) {\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n return (value: string): boolean => {\n let count = 0;\n for (const _ of segmenter.segment(value)) {\n count++;\n if (count > max) return false;\n }\n return true;\n };\n}\n\n/**\n * Byte-length refinement matching the AT Protocol lexicon string `maxLength`\n * constraint, which counts UTF-8 bytes (not UTF-16 code units). Uses\n * `TextEncoder` rather than `Buffer` so it also runs in browsers.\n */\nexport function maxBytes(max: number) {\n const encoder = new TextEncoder();\n return (value: string): boolean => {\n // UTF-8 uses at most 3 bytes per UTF-16 unit, so short strings cannot exceed `max`.\n if (value.length * 3 <= max) return true;\n return encoder.encode(value).length <= max;\n };\n}\n\n/**\n * A string capped by a lexicon `maxGraphemes` (user-perceived characters) and\n * `maxLength` (UTF-8 bytes) pair. The grapheme check aborts first, so an\n * over-long value reports only the character error.\n */\nexport function lexiconString(graphemes: number, bytes: number) {\n return z\n .string()\n .refine(maxGraphemes(graphemes), {\n message: `Must be at most ${graphemes} characters`,\n abort: true,\n })\n .refine(maxBytes(bytes), {\n message:\n 'This text is too long. Emoji and some scripts take more space, so shorten it a little.',\n });\n}\n\n/**\n * Field schemas for `id.sifa.profile.self`, shared by the record schema and the\n * write schemas so the lexicon limits live in one place.\n */\nexport const profileDisplayNameSchema = lexiconString(64, 640);\nexport const profileNameSchema = lexiconString(64, 640);\nexport const profilePronounsSchema = lexiconString(20, 200);\nexport const profileHeadlineSchema = lexiconString(120, 1200);\nexport const profileAboutSchema = lexiconString(5000, 50000);\n\n/** Decentralized identifier, AT Protocol `format: did`. */\nexport const didSchema = z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, 'Invalid DID');\n\n/** RFC 3339 datetime with timezone offset, AT Protocol `format: datetime`. */\nexport const datetimeSchema = z.string().datetime({ offset: true });\n\n/**\n * Freeform calendar date for user-facing profile dates (start/end, issued,\n * completed, awarded, published, etc.). Accepts a bare year, year-month,\n * year-month-day, or a full datetime (so a legacy record's RFC-3339 date maps\n * through on backfill without loss). NOT strict `datetime` -- users typically\n * remember only month/year, and LinkedIn-importer writes carry partial dates,\n * so the lexicons document these as freeform `YYYY-MM` / `YYYY-MM-DD`. Record\n * metadata like `createdAt` stays on `datetimeSchema`.\n */\nexport const partialDateSchema = z\n .string()\n .regex(/^\\d{4}(-\\d{2}(-\\d{2}(T.+)?)?)?$/, 'Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime');\n\n/** Generic AT-URI, AT Protocol `format: at-uri`. */\nexport const atUriSchema = z.string().regex(/^at:\\/\\/[^\\s]+$/, 'Invalid AT-URI');\n\n/** Content identifier, AT Protocol `format: cid`. Loose validation -- accepts CIDv0 and CIDv1. */\nexport const cidSchema = z\n .string()\n .regex(/^(Qm[1-9A-HJ-NP-Za-km-z]{44}|b[A-Za-z0-9+/=]+)$/, 'Invalid CID');\n\n/** BCP 47 language tag, AT Protocol `format: language`. */\nexport const languageTagSchema = z\n .string()\n .regex(/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/, 'Invalid BCP 47 language tag');\n\n/** Generic URI, AT Protocol `format: uri`. */\nexport const uriSchema = z.string().url();\n\n/**\n * StrongRef shape from `com.atproto.repo.strongRef` -- pins a record by both\n * AT-URI (identity) and CID (version).\n */\nexport const strongRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema,\n});\n\n/**\n * Reference to an `id.sifa.profile.skill` record by AT-URI. Mirrors\n * `id.sifa.defs#skillRef`, which carries no CID at all: skills are mutable\n * records in the same user's repo, so the reference resolves live and tracks\n * edits to the target.\n */\nexport const skillRefSchema = z.object({\n uri: atUriSchema,\n});\n\n/**\n * Reference to a record by AT-URI, with an optional CID. Mirrors\n * `id.sifa.defs#externalRecordRef`. Unlike a strongRef the CID is optional:\n * consumers resolve the AT-URI live so the reference tracks edits to the\n * target, and the CID is a best-effort integrity hint only.\n */\nexport const externalRecordRefSchema = z.object({\n uri: atUriSchema,\n cid: cidSchema.optional(),\n});\n\n/**\n * Shared reference to an organization or person named by a record. Mirrors\n * `id.sifa.defs#agentRef`. `name` is a point-in-time snapshot label captured\n * when the record was saved; `did` and `entityRef` are the durable identity and\n * should be resolved live. `name` is required so an empty object cannot validate\n * as a no-op. `.passthrough()` (not `.strict()`): external apps may emit fields a\n * newer schema will define, and dropping them on a round-trip would silently\n * lose data.\n */\nexport const agentRefSchema = z\n .object({\n name: z.string().min(1).refine(maxGraphemes(256)).max(2560),\n did: didSchema.optional(),\n entityRef: uriSchema.optional(),\n })\n .passthrough();\n\nexport type AgentRef = z.infer<typeof agentRefSchema>;\n\n/**\n * Self-labels shape from `com.atproto.label.defs#selfLabels`. Modelled\n * permissively because clients rarely construct this directly; the AppView\n * handles label validation.\n */\nexport const selfLabelsSchema = z.object({\n $type: z.literal('com.atproto.label.defs#selfLabels').optional(),\n values: z.array(z.object({ val: z.string() })),\n});\n"],"mappings":";AAAA,SAAS,SAAS;AASX,SAAS,aAAa,KAAa;AACxC,QAAM,YAAY,IAAI,KAAK,UAAU,QAAW,EAAE,aAAa,WAAW,CAAC;AAC3E,SAAO,CAAC,UAA2B;AACjC,QAAI,QAAQ;AACZ,eAAW,KAAK,UAAU,QAAQ,KAAK,GAAG;AACxC;AACA,UAAI,QAAQ,IAAK,QAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACF;AAOO,SAAS,SAAS,KAAa;AACpC,QAAM,UAAU,IAAI,YAAY;AAChC,SAAO,CAAC,UAA2B;AAEjC,QAAI,MAAM,SAAS,KAAK,IAAK,QAAO;AACpC,WAAO,QAAQ,OAAO,KAAK,EAAE,UAAU;AAAA,EACzC;AACF;AAOO,SAAS,cAAc,WAAmB,OAAe;AAC9D,SAAO,EACJ,OAAO,EACP,OAAO,aAAa,SAAS,GAAG;AAAA,IAC/B,SAAS,mBAAmB,SAAS;AAAA,IACrC,OAAO;AAAA,EACT,CAAC,EACA,OAAO,SAAS,KAAK,GAAG;AAAA,IACvB,SACE;AAAA,EACJ,CAAC;AACL;AAMO,IAAM,2BAA2B,cAAc,IAAI,GAAG;AACtD,IAAM,oBAAoB,cAAc,IAAI,GAAG;AAC/C,IAAM,wBAAwB,cAAc,IAAI,GAAG;AACnD,IAAM,wBAAwB,cAAc,KAAK,IAAI;AACrD,IAAM,qBAAqB,cAAc,KAAM,GAAK;AAGpD,IAAM,YAAY,EAAE,OAAO,EAAE,MAAM,kCAAkC,aAAa;AAGlF,IAAM,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,KAAK,CAAC;AAW3D,IAAM,oBAAoB,EAC9B,OAAO,EACP,MAAM,mCAAmC,mDAAmD;AAGxF,IAAM,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,gBAAgB;AAGxE,IAAM,YAAY,EACtB,OAAO,EACP,MAAM,mDAAmD,aAAa;AAGlE,IAAM,oBAAoB,EAC9B,OAAO,EACP,MAAM,uCAAuC,6BAA6B;AAGtE,IAAM,YAAY,EAAE,OAAO,EAAE,IAAI;AAMjC,IAAM,kBAAkB,EAAE,OAAO;AAAA,EACtC,KAAK;AAAA,EACL,KAAK;AACP,CAAC;AAQM,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,KAAK;AACP,CAAC;AAQM,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,KAAK;AAAA,EACL,KAAK,UAAU,SAAS;AAC1B,CAAC;AAWM,IAAM,iBAAiB,EAC3B,OAAO;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,aAAa,GAAG,CAAC,EAAE,IAAI,IAAI;AAAA,EAC1D,KAAK,UAAU,SAAS;AAAA,EACxB,WAAW,UAAU,SAAS;AAChC,CAAC,EACA,YAAY;AASR,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,OAAO,EAAE,QAAQ,mCAAmC,EAAE,SAAS;AAAA,EAC/D,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;","names":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// src/schemas/write/certification.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { entityRefSchema, optionalUrl } from "./shared.js";
|
|
3
|
+
import { entityRefSchema, optionalUrl, partialDateFieldSchema } from "./shared.js";
|
|
4
4
|
var CertificationWriteSchema = z.object({
|
|
5
5
|
name: z.string().min(1).max(256),
|
|
6
6
|
authority: z.string().max(256).nullable().optional(),
|
|
7
7
|
entityRef: entityRefSchema,
|
|
8
8
|
credentialId: z.string().max(256).nullable().optional(),
|
|
9
9
|
credentialUrl: optionalUrl(),
|
|
10
|
-
issuedAt:
|
|
11
|
-
expiresAt:
|
|
10
|
+
issuedAt: partialDateFieldSchema,
|
|
11
|
+
expiresAt: partialDateFieldSchema
|
|
12
12
|
});
|
|
13
13
|
export {
|
|
14
14
|
CertificationWriteSchema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/schemas/write/certification.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema, optionalUrl } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.certification`. */\nexport const CertificationWriteSchema = z.object({\n name: z.string().min(1).max(256),\n authority: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n credentialId: z.string().max(256).nullable().optional(),\n credentialUrl: optionalUrl(),\n issuedAt:
|
|
1
|
+
{"version":3,"sources":["../../../src/schemas/write/certification.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema, optionalUrl, partialDateFieldSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.certification`. */\nexport const CertificationWriteSchema = z.object({\n name: z.string().min(1).max(256),\n authority: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n credentialId: z.string().max(256).nullable().optional(),\n credentialUrl: optionalUrl(),\n issuedAt: partialDateFieldSchema,\n expiresAt: partialDateFieldSchema,\n});\n\nexport type CertificationWriteInput = z.infer<typeof CertificationWriteSchema>;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,aAAa,8BAA8B;AAG9D,IAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACnD,WAAW;AAAA,EACX,cAAc,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACtD,eAAe,YAAY;AAAA,EAC3B,UAAU;AAAA,EACV,WAAW;AACb,CAAC;","names":[]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// src/schemas/write/course.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { entityRefSchema,
|
|
3
|
+
import { entityRefSchema, partialDateFieldSchema } from "./shared.js";
|
|
4
4
|
var AT_URI_RE = /^at:\/\/[^/\s]+\/[^/\s]+\/[^/\s]+$/;
|
|
5
|
-
var teachingDate = z.string().refine(isValidPartialDate, "must be a valid YYYY, YYYY-MM or YYYY-MM-DD date").nullable().optional();
|
|
6
5
|
var CourseWriteSchema = z.object({
|
|
7
6
|
name: z.string().min(1).max(200),
|
|
8
7
|
number: z.string().max(50).nullable().optional(),
|
|
@@ -14,17 +13,13 @@ var CourseWriteSchema = z.object({
|
|
|
14
13
|
* stored and later split into a bogus rkey.
|
|
15
14
|
*/
|
|
16
15
|
credential: z.string().max(512).regex(AT_URI_RE, "must be an at-uri").nullable().optional(),
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
* granularity (YYYY-MM) and converts to a datetime before the write; stored
|
|
20
|
-
* and passed through as-is, mirroring `certification.issuedAt`.
|
|
21
|
-
*/
|
|
22
|
-
completedAt: z.string().nullable().optional(),
|
|
16
|
+
/** Completion date of a taken course (YYYY, YYYY-MM or YYYY-MM-DD). */
|
|
17
|
+
completedAt: partialDateFieldSchema,
|
|
23
18
|
/** `id.sifa.defs#courseRole` token. Absent or null means the user took the course. */
|
|
24
19
|
role: z.string().max(64).nullable().optional(),
|
|
25
20
|
/** Teaching period of a taught or assisted course (YYYY, YYYY-MM or YYYY-MM-DD). */
|
|
26
|
-
startedAt:
|
|
27
|
-
endedAt:
|
|
21
|
+
startedAt: partialDateFieldSchema,
|
|
22
|
+
endedAt: partialDateFieldSchema,
|
|
28
23
|
/** at-uri of the `id.sifa.profile.position` the course was part of (taken or taught). */
|
|
29
24
|
position: z.string().max(512).regex(AT_URI_RE, "must be an at-uri").nullable().optional(),
|
|
30
25
|
/** at-uri of the `id.sifa.profile.education` the course was part of. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/schemas/write/course.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema,
|
|
1
|
+
{"version":3,"sources":["../../../src/schemas/write/course.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema, partialDateFieldSchema } from './shared.js';\n\nconst AT_URI_RE = /^at:\\/\\/[^/\\s]+\\/[^/\\s]+\\/[^/\\s]+$/;\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.course`. */\nexport const CourseWriteSchema = z.object({\n name: z.string().min(1).max(200),\n number: z.string().max(50).nullable().optional(),\n institution: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n /**\n * at-uri of the linked `id.sifa.profile.certification` record. Structurally\n * validated (`at://authority/collection/rkey`) so a bad value can't be\n * stored and later split into a bogus rkey.\n */\n credential: z.string().max(512).regex(AT_URI_RE, 'must be an at-uri').nullable().optional(),\n /** Completion date of a taken course (YYYY, YYYY-MM or YYYY-MM-DD). */\n completedAt: partialDateFieldSchema,\n /** `id.sifa.defs#courseRole` token. Absent or null means the user took the course. */\n role: z.string().max(64).nullable().optional(),\n /** Teaching period of a taught or assisted course (YYYY, YYYY-MM or YYYY-MM-DD). */\n startedAt: partialDateFieldSchema,\n endedAt: partialDateFieldSchema,\n /** at-uri of the `id.sifa.profile.position` the course was part of (taken or taught). */\n position: z.string().max(512).regex(AT_URI_RE, 'must be an at-uri').nullable().optional(),\n /** at-uri of the `id.sifa.profile.education` the course was part of. */\n education: z.string().max(512).regex(AT_URI_RE, 'must be an at-uri').nullable().optional(),\n});\n\nexport type CourseWriteInput = z.infer<typeof CourseWriteSchema>;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,8BAA8B;AAExD,IAAM,YAAY;AAGX,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACxC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC/B,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,aAAa,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMX,YAAY,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,WAAW,mBAAmB,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE1F,aAAa;AAAA;AAAA,EAEb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAE7C,WAAW;AAAA,EACX,SAAS;AAAA;AAAA,EAET,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,WAAW,mBAAmB,EAAE,SAAS,EAAE,SAAS;AAAA;AAAA,EAExF,WAAW,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,WAAW,mBAAmB,EAAE,SAAS,EAAE,SAAS;AAC3F,CAAC;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/schemas/write/education.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { entityRefSchema } from "./shared.js";
|
|
3
|
+
import { entityRefSchema, partialDateFieldSchema } from "./shared.js";
|
|
4
4
|
var EducationWriteSchema = z.object({
|
|
5
5
|
institution: z.string().min(1).max(256),
|
|
6
6
|
entityRef: entityRefSchema,
|
|
@@ -9,8 +9,8 @@ var EducationWriteSchema = z.object({
|
|
|
9
9
|
eqfLevel: z.number().int().min(1).max(8).nullable().optional(),
|
|
10
10
|
description: z.string().max(5e4).nullable().optional(),
|
|
11
11
|
activities: z.string().max(1e3).nullable().optional(),
|
|
12
|
-
startedAt:
|
|
13
|
-
endedAt:
|
|
12
|
+
startedAt: partialDateFieldSchema,
|
|
13
|
+
endedAt: partialDateFieldSchema
|
|
14
14
|
});
|
|
15
15
|
export {
|
|
16
16
|
EducationWriteSchema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/schemas/write/education.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by `POST /profile/education` on sifa-api. */\nexport const EducationWriteSchema = z.object({\n institution: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n degree: z.string().max(256).nullable().optional(),\n fieldOfStudy: z.string().max(256).nullable().optional(),\n eqfLevel: z.number().int().min(1).max(8).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n activities: z.string().max(1000).nullable().optional(),\n startedAt:
|
|
1
|
+
{"version":3,"sources":["../../../src/schemas/write/education.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema, partialDateFieldSchema } from './shared.js';\n\n/** Schema enforced by `POST /profile/education` on sifa-api. */\nexport const EducationWriteSchema = z.object({\n institution: z.string().min(1).max(256),\n entityRef: entityRefSchema,\n degree: z.string().max(256).nullable().optional(),\n fieldOfStudy: z.string().max(256).nullable().optional(),\n eqfLevel: z.number().int().min(1).max(8).nullable().optional(),\n description: z.string().max(50000).nullable().optional(),\n activities: z.string().max(1000).nullable().optional(),\n startedAt: partialDateFieldSchema,\n endedAt: partialDateFieldSchema,\n});\n\nexport type EducationWriteInput = z.infer<typeof EducationWriteSchema>;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,8BAA8B;AAGjD,IAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,WAAW;AAAA,EACX,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,cAAc,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACtD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7D,aAAa,EAAE,OAAO,EAAE,IAAI,GAAK,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,YAAY,EAAE,OAAO,EAAE,IAAI,GAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,WAAW;AAAA,EACX,SAAS;AACX,CAAC;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// src/schemas/write/honor.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import { entityRefSchema } from "./shared.js";
|
|
3
|
+
import { entityRefSchema, partialDateFieldSchema } from "./shared.js";
|
|
4
4
|
var HonorWriteSchema = z.object({
|
|
5
5
|
title: z.string().min(1).max(200),
|
|
6
6
|
issuer: z.string().max(256).nullable().optional(),
|
|
7
7
|
entityRef: entityRefSchema,
|
|
8
8
|
description: z.string().max(5e4).nullable().optional(),
|
|
9
|
-
awardedAt:
|
|
9
|
+
awardedAt: partialDateFieldSchema
|
|
10
10
|
});
|
|
11
11
|
export {
|
|
12
12
|
HonorWriteSchema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/schemas/write/honor.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.honor`. */\nexport const HonorWriteSchema = z.object({\n title: z.string().min(1).max(200),\n issuer: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n description: z.string().max(50000).nullable().optional(),\n awardedAt:
|
|
1
|
+
{"version":3,"sources":["../../../src/schemas/write/honor.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { entityRefSchema, partialDateFieldSchema } from './shared.js';\n\n/** Schema enforced by the generic-record write endpoint for `id.sifa.profile.honor`. */\nexport const HonorWriteSchema = z.object({\n title: z.string().min(1).max(200),\n issuer: z.string().max(256).nullable().optional(),\n entityRef: entityRefSchema,\n description: z.string().max(50000).nullable().optional(),\n awardedAt: partialDateFieldSchema,\n});\n\nexport type HonorWriteInput = z.infer<typeof HonorWriteSchema>;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,SAAS,iBAAiB,8BAA8B;AAGjD,IAAM,mBAAmB,EAAE,OAAO;AAAA,EACvC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAChC,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,WAAW;AAAA,EACX,aAAa,EAAE,OAAO,EAAE,IAAI,GAAK,EAAE,SAAS,EAAE,SAAS;AAAA,EACvD,WAAW;AACb,CAAC;","names":[]}
|
|
@@ -66,6 +66,11 @@ function isValidPartialDate(input) {
|
|
|
66
66
|
if (typeof input !== "string") return false;
|
|
67
67
|
return PARTIAL_DATE_RE.test(input) || isValidDateOnly(input);
|
|
68
68
|
}
|
|
69
|
+
var DATETIME_DAY_RE = /^(\d{4}-\d{2}-\d{2})T\d{2}:\d{2}/;
|
|
70
|
+
var partialDateFieldSchema = zod.z.string().transform((v) => DATETIME_DAY_RE.exec(v)?.[1] ?? v).refine(
|
|
71
|
+
(v) => v === "" || isValidPartialDate(v),
|
|
72
|
+
"must be a valid YYYY, YYYY-MM or YYYY-MM-DD date"
|
|
73
|
+
).nullable().optional();
|
|
69
74
|
var entityRefSchema = zod.z.string().url().refine((s) => /^https?:\/\//i.test(s), { message: "entityRef must be an http(s) URL" }).max(2048).optional();
|
|
70
75
|
var artifactLinkSchema = zod.z.object({
|
|
71
76
|
url: zod.z.string().max(2048).refine((v) => httpUrlOrNull(v) !== null, "must be an http(s) URL"),
|
|
@@ -88,11 +93,10 @@ var CertificationWriteSchema = zod.z.object({
|
|
|
88
93
|
entityRef: entityRefSchema,
|
|
89
94
|
credentialId: zod.z.string().max(256).nullable().optional(),
|
|
90
95
|
credentialUrl: optionalUrl(),
|
|
91
|
-
issuedAt:
|
|
92
|
-
expiresAt:
|
|
96
|
+
issuedAt: partialDateFieldSchema,
|
|
97
|
+
expiresAt: partialDateFieldSchema
|
|
93
98
|
});
|
|
94
99
|
var AT_URI_RE = /^at:\/\/[^/\s]+\/[^/\s]+\/[^/\s]+$/;
|
|
95
|
-
var teachingDate = zod.z.string().refine(isValidPartialDate, "must be a valid YYYY, YYYY-MM or YYYY-MM-DD date").nullable().optional();
|
|
96
100
|
var CourseWriteSchema = zod.z.object({
|
|
97
101
|
name: zod.z.string().min(1).max(200),
|
|
98
102
|
number: zod.z.string().max(50).nullable().optional(),
|
|
@@ -104,17 +108,13 @@ var CourseWriteSchema = zod.z.object({
|
|
|
104
108
|
* stored and later split into a bogus rkey.
|
|
105
109
|
*/
|
|
106
110
|
credential: zod.z.string().max(512).regex(AT_URI_RE, "must be an at-uri").nullable().optional(),
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
* granularity (YYYY-MM) and converts to a datetime before the write; stored
|
|
110
|
-
* and passed through as-is, mirroring `certification.issuedAt`.
|
|
111
|
-
*/
|
|
112
|
-
completedAt: zod.z.string().nullable().optional(),
|
|
111
|
+
/** Completion date of a taken course (YYYY, YYYY-MM or YYYY-MM-DD). */
|
|
112
|
+
completedAt: partialDateFieldSchema,
|
|
113
113
|
/** `id.sifa.defs#courseRole` token. Absent or null means the user took the course. */
|
|
114
114
|
role: zod.z.string().max(64).nullable().optional(),
|
|
115
115
|
/** Teaching period of a taught or assisted course (YYYY, YYYY-MM or YYYY-MM-DD). */
|
|
116
|
-
startedAt:
|
|
117
|
-
endedAt:
|
|
116
|
+
startedAt: partialDateFieldSchema,
|
|
117
|
+
endedAt: partialDateFieldSchema,
|
|
118
118
|
/** at-uri of the `id.sifa.profile.position` the course was part of (taken or taught). */
|
|
119
119
|
position: zod.z.string().max(512).regex(AT_URI_RE, "must be an at-uri").nullable().optional(),
|
|
120
120
|
/** at-uri of the `id.sifa.profile.education` the course was part of. */
|
|
@@ -128,8 +128,8 @@ var EducationWriteSchema = zod.z.object({
|
|
|
128
128
|
eqfLevel: zod.z.number().int().min(1).max(8).nullable().optional(),
|
|
129
129
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
130
130
|
activities: zod.z.string().max(1e3).nullable().optional(),
|
|
131
|
-
startedAt:
|
|
132
|
-
endedAt:
|
|
131
|
+
startedAt: partialDateFieldSchema,
|
|
132
|
+
endedAt: partialDateFieldSchema
|
|
133
133
|
});
|
|
134
134
|
var ExternalAccountWriteSchema = zod.z.object({
|
|
135
135
|
platform: zod.z.enum(VALID_PLATFORMS),
|
|
@@ -143,7 +143,7 @@ var HonorWriteSchema = zod.z.object({
|
|
|
143
143
|
issuer: zod.z.string().max(256).nullable().optional(),
|
|
144
144
|
entityRef: entityRefSchema,
|
|
145
145
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
146
|
-
awardedAt:
|
|
146
|
+
awardedAt: partialDateFieldSchema
|
|
147
147
|
});
|
|
148
148
|
var projectMemberWriteSchema = zod.z.object({
|
|
149
149
|
did: zod.z.string().regex(/^did:[a-z]+:[^\s]+$/, "must be a DID"),
|
|
@@ -167,8 +167,8 @@ var ProjectWriteSchema = zod.z.object({
|
|
|
167
167
|
sameAs: externalRecordRefSchema.optional(),
|
|
168
168
|
/** Calendar events this project organized or hosted. An empty list clears them. */
|
|
169
169
|
events: zod.z.array(projectEventWriteSchema).max(200).optional(),
|
|
170
|
-
startedAt:
|
|
171
|
-
endedAt:
|
|
170
|
+
startedAt: partialDateFieldSchema,
|
|
171
|
+
endedAt: partialDateFieldSchema
|
|
172
172
|
});
|
|
173
173
|
|
|
174
174
|
// src/schemas/write/involvement.ts
|
|
@@ -179,9 +179,8 @@ var InvolvementWriteSchema = zod.z.object({
|
|
|
179
179
|
upstreamUrl: optionalUrl(),
|
|
180
180
|
role: zod.z.string().max(2560).nullable().optional(),
|
|
181
181
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
endedAt: zod.z.string().max(32).nullable().optional(),
|
|
182
|
+
startedAt: partialDateFieldSchema,
|
|
183
|
+
endedAt: partialDateFieldSchema,
|
|
185
184
|
links: zod.z.array(artifactLinkSchema).max(50).nullable().optional(),
|
|
186
185
|
/** Other people who worked on this alongside you. Same shape as project members. */
|
|
187
186
|
collaborators: zod.z.array(projectMemberWriteSchema).max(50).optional(),
|
|
@@ -211,8 +210,8 @@ var InvestmentWriteSchema = zod.z.object({
|
|
|
211
210
|
value: zod.z.number().int().min(0),
|
|
212
211
|
currency: zod.z.string().length(3)
|
|
213
212
|
}).nullable().optional(),
|
|
214
|
-
startedAt:
|
|
215
|
-
endedAt:
|
|
213
|
+
startedAt: partialDateFieldSchema,
|
|
214
|
+
endedAt: partialDateFieldSchema,
|
|
216
215
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
217
216
|
links: zod.z.array(artifactLinkSchema).max(50).nullable().optional()
|
|
218
217
|
});
|
|
@@ -233,8 +232,8 @@ var OrgEmploymentAttestationWriteSchema = zod.z.object({
|
|
|
233
232
|
createdAt: zod.z.string()
|
|
234
233
|
});
|
|
235
234
|
function maxGraphemes(max) {
|
|
235
|
+
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
236
236
|
return (value) => {
|
|
237
|
-
const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
238
237
|
let count = 0;
|
|
239
238
|
for (const _ of segmenter.segment(value)) {
|
|
240
239
|
count++;
|
|
@@ -243,6 +242,26 @@ function maxGraphemes(max) {
|
|
|
243
242
|
return true;
|
|
244
243
|
};
|
|
245
244
|
}
|
|
245
|
+
function maxBytes(max) {
|
|
246
|
+
const encoder = new TextEncoder();
|
|
247
|
+
return (value) => {
|
|
248
|
+
if (value.length * 3 <= max) return true;
|
|
249
|
+
return encoder.encode(value).length <= max;
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
function lexiconString(graphemes, bytes) {
|
|
253
|
+
return zod.z.string().refine(maxGraphemes(graphemes), {
|
|
254
|
+
message: `Must be at most ${graphemes} characters`,
|
|
255
|
+
abort: true
|
|
256
|
+
}).refine(maxBytes(bytes), {
|
|
257
|
+
message: "This text is too long. Emoji and some scripts take more space, so shorten it a little."
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
var profileDisplayNameSchema = lexiconString(64, 640);
|
|
261
|
+
var profileNameSchema = lexiconString(64, 640);
|
|
262
|
+
var profilePronounsSchema = lexiconString(20, 200);
|
|
263
|
+
var profileHeadlineSchema = lexiconString(120, 1200);
|
|
264
|
+
var profileAboutSchema = lexiconString(5e3, 5e4);
|
|
246
265
|
var didSchema = zod.z.string().regex(/^did:[a-z]+:[a-zA-Z0-9._:%-]+$/, "Invalid DID");
|
|
247
266
|
var datetimeSchema = zod.z.string().datetime({ offset: true });
|
|
248
267
|
zod.z.string().regex(/^\d{4}(-\d{2}(-\d{2}(T.+)?)?)?$/, "Expected YYYY, YYYY-MM, YYYY-MM-DD, or a datetime");
|
|
@@ -519,8 +538,8 @@ var PositionWriteSchema = zod.z.object({
|
|
|
519
538
|
onBehalfOfEntityRef: entityRefSchema.nullable(),
|
|
520
539
|
workplaceType: zod.z.string().nullable().optional(),
|
|
521
540
|
location: writeLocationSchema,
|
|
522
|
-
startedAt:
|
|
523
|
-
endedAt:
|
|
541
|
+
startedAt: partialDateFieldSchema,
|
|
542
|
+
endedAt: partialDateFieldSchema,
|
|
524
543
|
skills: zod.z.array(skillRefSchema).max(50).nullable().optional()
|
|
525
544
|
});
|
|
526
545
|
var PresentationDeliveryWriteSchema = zod.z.object({
|
|
@@ -589,11 +608,11 @@ var RPG_AVATAR_SOURCE = "actor.rpg.sprite";
|
|
|
589
608
|
|
|
590
609
|
// src/schemas/write/profile-self.ts
|
|
591
610
|
var ProfileSelfWriteSchema = zod.z.object({
|
|
592
|
-
headline:
|
|
593
|
-
about:
|
|
594
|
-
givenName:
|
|
595
|
-
familyName:
|
|
596
|
-
namePronunciation:
|
|
611
|
+
headline: profileHeadlineSchema.optional(),
|
|
612
|
+
about: profileAboutSchema.optional(),
|
|
613
|
+
givenName: profileNameSchema.optional(),
|
|
614
|
+
familyName: profileNameSchema.optional(),
|
|
615
|
+
namePronunciation: profileNameSchema.optional(),
|
|
597
616
|
industries: zod.z.array(
|
|
598
617
|
zod.z.object({
|
|
599
618
|
industry: zod.z.string().max(100),
|
|
@@ -615,6 +634,12 @@ var ProfileSelfWriteSchema = zod.z.object({
|
|
|
615
634
|
*/
|
|
616
635
|
avatarSource: zod.z.enum([RPG_AVATAR_SOURCE]).nullable().optional()
|
|
617
636
|
}).passthrough();
|
|
637
|
+
var ProfileOverrideWriteSchema = zod.z.object({
|
|
638
|
+
headline: profileHeadlineSchema.nullish(),
|
|
639
|
+
about: profileAboutSchema.nullish(),
|
|
640
|
+
displayName: profileDisplayNameSchema.nullish(),
|
|
641
|
+
pronouns: profilePronounsSchema.nullish()
|
|
642
|
+
});
|
|
618
643
|
|
|
619
644
|
// src/format/doi.ts
|
|
620
645
|
function normalizeDoi(value) {
|
|
@@ -639,7 +664,7 @@ var PublicationWriteSchema = zod.z.object({
|
|
|
639
664
|
publisher: zod.z.string().max(256).nullable().optional(),
|
|
640
665
|
url: optionalUrl(),
|
|
641
666
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
642
|
-
publishedAt:
|
|
667
|
+
publishedAt: partialDateFieldSchema,
|
|
643
668
|
// Absent here until now, so the write route stripped every co-author before
|
|
644
669
|
// it reached the PDS: the lexicon field, the indexer, the claim flattening
|
|
645
670
|
// and the editor all existed, and nothing joined them. An object schema
|
|
@@ -670,8 +695,8 @@ var VolunteeringWriteSchema = zod.z.object({
|
|
|
670
695
|
role: zod.z.string().max(256).nullable().optional(),
|
|
671
696
|
cause: zod.z.string().max(256).nullable().optional(),
|
|
672
697
|
description: zod.z.string().max(5e4).nullable().optional(),
|
|
673
|
-
startedAt:
|
|
674
|
-
endedAt:
|
|
698
|
+
startedAt: partialDateFieldSchema,
|
|
699
|
+
endedAt: partialDateFieldSchema
|
|
675
700
|
});
|
|
676
701
|
|
|
677
702
|
exports.CertificationWriteSchema = CertificationWriteSchema;
|
|
@@ -693,6 +718,7 @@ exports.PositionWriteSchema = PositionWriteSchema;
|
|
|
693
718
|
exports.PresentationDeliveryWriteSchema = PresentationDeliveryWriteSchema;
|
|
694
719
|
exports.PresentationWriteSchema = PresentationWriteSchema;
|
|
695
720
|
exports.ProfileLocationWriteSchema = ProfileLocationWriteSchema;
|
|
721
|
+
exports.ProfileOverrideWriteSchema = ProfileOverrideWriteSchema;
|
|
696
722
|
exports.ProfileSelfWriteSchema = ProfileSelfWriteSchema;
|
|
697
723
|
exports.ProjectWriteSchema = ProjectWriteSchema;
|
|
698
724
|
exports.PublicationWriteSchema = PublicationWriteSchema;
|