@credo-ts/core
Version:
<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1
1 lines • 11.1 kB
Source Map (JSON)
{"version":3,"file":"W3cV2Credential.mjs","names":[],"sources":["../../../../../src/modules/vc/models/credential/W3cV2Credential.ts"],"sourcesContent":["import { Expose, plainToClassFromExist, Type } from 'class-transformer'\nimport { IsOptional, IsRFC3339, ValidateNested } from 'class-validator'\nimport type { JsonObject, SingleOrArray } from '../../../../types'\nimport { asArray, JsonTransformer, mapSingleOrArray } from '../../../../utils'\nimport {\n IsInstanceOrArrayOfInstances,\n IsNever,\n IsStringOrInstanceOrArrayOfInstances,\n IsUri,\n} from '../../../../utils/validators'\nimport { CREDENTIALS_CONTEXT_V2_URL } from '../../constants'\nimport { IsCredentialJsonLdContext, IsCredentialType } from '../../validators'\nimport { W3cV2CredentialSchema, type W3cV2CredentialSchemaOptions } from './W3cV2CredentialSchema'\nimport { W3cV2CredentialStatus, type W3cV2CredentialStatusOptions } from './W3cV2CredentialStatus'\nimport { W3cV2CredentialSubject, type W3cV2CredentialSubjectOptions } from './W3cV2CredentialSubject'\nimport { W3cV2Evidence, type W3cV2EvidenceOptions } from './W3cV2Evidence'\nimport { IsW3cV2Issuer, W3cV2Issuer, type W3cV2IssuerOptions, W3cV2IssuerTransformer } from './W3cV2Issuer'\nimport type { W3cV2JsonCredential } from './W3cV2JsonCredential'\nimport {\n W3cV2LocalizedValue,\n type W3cV2LocalizedValueOptions,\n W3cV2LocalizedValueTransformer,\n} from './W3cV2LocalizedValue'\nimport { W3cV2RefreshService, type W3cV2RefreshServiceOptions } from './W3cV2RefreshService'\nimport { W3cV2TermsOfUse, type W3cV2TermsOfUseOptions } from './W3cV2TermsOfUse'\n\nexport interface W3cV2CredentialOptions {\n context?: Array<string | JsonObject>\n id?: string\n type: Array<string>\n name?: string | SingleOrArray<W3cV2LocalizedValueOptions>\n description?: string | SingleOrArray<W3cV2LocalizedValueOptions>\n issuer: string | W3cV2IssuerOptions\n credentialSubject: SingleOrArray<W3cV2CredentialSubjectOptions>\n validFrom?: string\n validUntil?: string\n credentialStatus?: SingleOrArray<W3cV2CredentialStatusOptions>\n credentialSchema?: SingleOrArray<W3cV2CredentialSchemaOptions>\n refreshService?: SingleOrArray<W3cV2RefreshServiceOptions>\n termsOfUse?: SingleOrArray<W3cV2TermsOfUseOptions>\n evidence?: SingleOrArray<W3cV2EvidenceOptions>\n [property: string]: unknown\n}\n\nexport class W3cV2Credential {\n public constructor(options: W3cV2CredentialOptions) {\n if (options) {\n const {\n context,\n id,\n type,\n name,\n description,\n issuer,\n credentialSubject,\n validFrom,\n validUntil,\n credentialStatus,\n credentialSchema,\n refreshService,\n termsOfUse,\n evidence,\n ...rest\n } = options\n\n plainToClassFromExist(this, rest)\n\n this.context = context ?? [CREDENTIALS_CONTEXT_V2_URL]\n this.id = id\n this.type = type || ['VerifiableCredential']\n\n if (name) {\n this.name =\n typeof name === 'string'\n ? name\n : mapSingleOrArray(name, (n) => (n instanceof W3cV2LocalizedValue ? n : new W3cV2LocalizedValue(n)))\n }\n\n if (description) {\n this.description =\n typeof description === 'string'\n ? description\n : mapSingleOrArray(description, (n) => (n instanceof W3cV2LocalizedValue ? n : new W3cV2LocalizedValue(n)))\n }\n\n this.issuer = typeof issuer === 'string' || issuer instanceof W3cV2Issuer ? issuer : new W3cV2Issuer(issuer)\n\n this.credentialSubject = mapSingleOrArray(credentialSubject, (subject) =>\n subject instanceof W3cV2CredentialSubject\n ? subject\n : // NOTE: type assertion is needed here since TS cannot properly infer the type.\n new W3cV2CredentialSubject(subject as W3cV2CredentialSubjectOptions)\n )\n\n this.validFrom = validFrom\n this.validUntil = validUntil\n\n if (credentialStatus) {\n this.credentialStatus = mapSingleOrArray(credentialStatus, (status) =>\n status instanceof W3cV2CredentialStatus ? status : new W3cV2CredentialStatus(status)\n )\n }\n\n if (credentialSchema) {\n this.credentialSchema = mapSingleOrArray(credentialSchema, (schema) =>\n schema instanceof W3cV2CredentialSchema ? schema : new W3cV2CredentialSchema(schema)\n )\n }\n\n if (refreshService) {\n this.refreshService = mapSingleOrArray(refreshService, (service) =>\n service instanceof W3cV2RefreshService ? service : new W3cV2RefreshService(service)\n )\n }\n\n if (termsOfUse) {\n this.termsOfUse = mapSingleOrArray(termsOfUse, (tos) =>\n tos instanceof W3cV2TermsOfUse ? tos : new W3cV2TermsOfUse(tos)\n )\n }\n\n if (evidence) {\n this.evidence = mapSingleOrArray(evidence, (evidence) =>\n evidence instanceof W3cV2Evidence ? evidence : new W3cV2Evidence(evidence)\n )\n }\n }\n }\n\n @Expose({ name: '@context' })\n @IsCredentialJsonLdContext({ credentialContext: CREDENTIALS_CONTEXT_V2_URL })\n public context!: Array<string | JsonObject>\n\n @IsOptional()\n @IsUri()\n public id?: string\n\n @IsCredentialType()\n public type!: SingleOrArray<string>\n\n @IsOptional()\n @IsStringOrInstanceOrArrayOfInstances({ classType: W3cV2LocalizedValue, allowEmptyArray: true })\n @W3cV2LocalizedValueTransformer()\n public name?: string | SingleOrArray<W3cV2LocalizedValue>\n\n @IsOptional()\n @IsStringOrInstanceOrArrayOfInstances({ classType: W3cV2LocalizedValue, allowEmptyArray: true })\n @W3cV2LocalizedValueTransformer()\n public description?: string | SingleOrArray<W3cV2LocalizedValue>\n\n @IsW3cV2Issuer()\n @W3cV2IssuerTransformer()\n public issuer!: string | W3cV2Issuer\n\n @Type(() => W3cV2CredentialSubject)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2CredentialSubject })\n public credentialSubject!: SingleOrArray<W3cV2CredentialSubject>\n\n @IsRFC3339()\n @IsOptional()\n public validFrom?: string\n\n @IsRFC3339()\n @IsOptional()\n public validUntil?: string\n\n @IsOptional()\n @Type(() => W3cV2CredentialStatus)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2CredentialStatus, allowEmptyArray: true })\n public credentialStatus?: SingleOrArray<W3cV2CredentialStatus>\n\n @IsOptional()\n @Type(() => W3cV2CredentialSchema)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2CredentialSchema, allowEmptyArray: true })\n public credentialSchema?: SingleOrArray<W3cV2CredentialSchema>\n\n @IsOptional()\n @Type(() => W3cV2RefreshService)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2RefreshService, allowEmptyArray: true })\n public refreshService?: SingleOrArray<W3cV2RefreshService>\n\n @IsOptional()\n @Type(() => W3cV2Evidence)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2Evidence, allowEmptyArray: true })\n public evidence?: SingleOrArray<W3cV2Evidence>\n\n @IsOptional()\n @Type(() => W3cV2TermsOfUse)\n @ValidateNested({ each: true })\n @IsInstanceOrArrayOfInstances({ classType: W3cV2TermsOfUse, allowEmptyArray: true })\n public termsOfUse?: SingleOrArray<W3cV2TermsOfUse>\n\n @IsNever()\n public vc?: never\n\n @IsNever()\n public vp?: never;\n\n [property: string]: unknown\n\n public get issuerId(): string {\n return this.issuer instanceof W3cV2Issuer ? this.issuer.id : this.issuer\n }\n\n public get credentialSchemaIds(): string[] {\n if (!this.credentialSchema) {\n return []\n }\n\n if (Array.isArray(this.credentialSchema)) {\n return this.credentialSchema.map((credentialSchema) => credentialSchema.id)\n }\n\n return [this.credentialSchema.id]\n }\n\n public get credentialSubjectIds(): string[] {\n if (Array.isArray(this.credentialSubject)) {\n return this.credentialSubject\n .map((credentialSubject) => credentialSubject.id)\n .filter((v): v is string => v !== undefined)\n }\n\n return this.credentialSubject.id ? [this.credentialSubject.id] : []\n }\n\n public get contexts(): Array<string | JsonObject> {\n return asArray(this.context)\n }\n\n public toJSON(): W3cV2JsonCredential {\n return JsonTransformer.toJSON(this) as W3cV2JsonCredential\n }\n}\n"],"mappings":"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"}