ubid-common 0.1.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/LICENSE +21 -0
- package/README.md +20 -0
- package/dist/ParsingEngine.d.ts +3 -0
- package/dist/ParsingEngine.d.ts.map +1 -0
- package/dist/ParsingEngine.js +25 -0
- package/dist/PublicKeyResolverEngine.d.ts +3 -0
- package/dist/PublicKeyResolverEngine.d.ts.map +1 -0
- package/dist/PublicKeyResolverEngine.js +24 -0
- package/dist/VerifyingEngine.d.ts +3 -0
- package/dist/VerifyingEngine.d.ts.map +1 -0
- package/dist/VerifyingEngine.js +27 -0
- package/dist/credential-parsers/MsoMdocParser.d.ts +6 -0
- package/dist/credential-parsers/MsoMdocParser.d.ts.map +1 -0
- package/dist/credential-parsers/MsoMdocParser.js +164 -0
- package/dist/credential-parsers/SDJWTVCParser.d.ts +6 -0
- package/dist/credential-parsers/SDJWTVCParser.d.ts.map +1 -0
- package/dist/credential-parsers/SDJWTVCParser.js +214 -0
- package/dist/credential-verifiers/MsoMdocVerifier.d.ts +8 -0
- package/dist/credential-verifiers/MsoMdocVerifier.d.ts.map +1 -0
- package/dist/credential-verifiers/MsoMdocVerifier.js +213 -0
- package/dist/credential-verifiers/SDJWTVCValidation.d.ts +52 -0
- package/dist/credential-verifiers/SDJWTVCValidation.d.ts.map +1 -0
- package/dist/credential-verifiers/SDJWTVCValidation.js +248 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.d.ts +15 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.d.ts.map +1 -0
- package/dist/credential-verifiers/SDJWTVCVerifier.js +394 -0
- package/dist/defaultHttpClient.d.ts +3 -0
- package/dist/defaultHttpClient.d.ts.map +1 -0
- package/dist/defaultHttpClient.js +18 -0
- package/dist/error.d.ts +134 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +160 -0
- package/dist/functions/convertDataUriToImage.d.ts +2 -0
- package/dist/functions/convertDataUriToImage.d.ts.map +1 -0
- package/dist/functions/convertDataUriToImage.js +38 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts +5 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.d.ts.map +1 -0
- package/dist/functions/convertOpenid4vciToSdjwtvcClaims.js +31 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts +11 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.d.ts.map +1 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciClaims.js +35 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts +19 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.d.ts.map +1 -0
- package/dist/functions/convertSdjwtvcToOpenid4vciDisplay.js +56 -0
- package/dist/functions/formatDate.d.ts +2 -0
- package/dist/functions/formatDate.d.ts.map +1 -0
- package/dist/functions/formatDate.js +50 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.d.ts.map +1 -0
- package/dist/functions/index.js +19 -0
- package/dist/functions/openID4VCICredentialRendering.d.ts +5 -0
- package/dist/functions/openID4VCICredentialRendering.d.ts.map +1 -0
- package/dist/functions/openID4VCICredentialRendering.js +93 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/interfaces.d.ts +112 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +3 -0
- package/dist/rendering.d.ts +3 -0
- package/dist/rendering.d.ts.map +1 -0
- package/dist/rendering.js +56 -0
- package/dist/resolvers/RemoteJwksResolver.d.ts +17 -0
- package/dist/resolvers/RemoteJwksResolver.d.ts.map +1 -0
- package/dist/resolvers/RemoteJwksResolver.js +138 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts +710 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.d.ts.map +1 -0
- package/dist/schemas/CredentialConfigurationSupportedSchema.js +60 -0
- package/dist/schemas/CredentialOfferSchema.d.ts +40 -0
- package/dist/schemas/CredentialOfferSchema.d.ts.map +1 -0
- package/dist/schemas/CredentialOfferSchema.js +14 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts +49 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/OpenidAuthorizationServerMetadataSchema.js +21 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts +1030 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/OpenidCredentialIssuerMetadataSchema.js +35 -0
- package/dist/schemas/SdJwtVcPayloadSchema.d.ts +79 -0
- package/dist/schemas/SdJwtVcPayloadSchema.d.ts.map +1 -0
- package/dist/schemas/SdJwtVcPayloadSchema.js +27 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts +930 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.d.ts.map +1 -0
- package/dist/schemas/SdJwtVcTypeMetadataSchema.js +105 -0
- package/dist/schemas/index.d.ts +6 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +22 -0
- package/dist/status/TokenStatusListVerifier.d.ts +41 -0
- package/dist/status/TokenStatusListVerifier.d.ts.map +1 -0
- package/dist/status/TokenStatusListVerifier.js +410 -0
- package/dist/trust/AlgorithmPolicy.d.ts +27 -0
- package/dist/trust/AlgorithmPolicy.d.ts.map +1 -0
- package/dist/trust/AlgorithmPolicy.js +60 -0
- package/dist/trust/TrustRegistry.d.ts +49 -0
- package/dist/trust/TrustRegistry.d.ts.map +1 -0
- package/dist/trust/TrustRegistry.js +114 -0
- package/dist/types.d.ts +76 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/utils/escapeSVG.d.ts +2 -0
- package/dist/utils/escapeSVG.d.ts.map +1 -0
- package/dist/utils/escapeSVG.js +18 -0
- package/dist/utils/getIssuerMetadata.d.ts +8 -0
- package/dist/utils/getIssuerMetadata.d.ts.map +1 -0
- package/dist/utils/getIssuerMetadata.js +33 -0
- package/dist/utils/getSdJwtVcMetadata.d.ts +12 -0
- package/dist/utils/getSdJwtVcMetadata.d.ts.map +1 -0
- package/dist/utils/getSdJwtVcMetadata.js +274 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/matchLocalizedDisplay.d.ts +6 -0
- package/dist/utils/matchLocalizedDisplay.d.ts.map +1 -0
- package/dist/utils/matchLocalizedDisplay.js +16 -0
- package/dist/utils/util.d.ts +6 -0
- package/dist/utils/util.d.ts.map +1 -0
- package/dist/utils/util.js +53 -0
- package/dist/utils/verifyCertificate.d.ts +2 -0
- package/dist/utils/verifyCertificate.d.ts.map +1 -0
- package/dist/utils/verifyCertificate.js +100 -0
- package/dist/utils/verifySRIFromObject.d.ts +10 -0
- package/dist/utils/verifySRIFromObject.d.ts.map +1 -0
- package/dist/utils/verifySRIFromObject.js +32 -0
- package/dist/utils/verifyX5C.d.ts +11 -0
- package/dist/utils/verifyX5C.d.ts.map +1 -0
- package/dist/utils/verifyX5C.js +19 -0
- package/dist/x509/X509ChainVerifier.d.ts +59 -0
- package/dist/x509/X509ChainVerifier.d.ts.map +1 -0
- package/dist/x509/X509ChainVerifier.js +458 -0
- package/package.json +82 -0
package/dist/error.js
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CredentialRenderingError = exports.PublicKeyResolutionError = exports.X509ChainVerificationError = exports.TokenStatusListVerificationError = exports.CredentialVerificationError = exports.ValidatePresentationRequirementsError = exports.GetMatchingCredentialsError = exports.CredentialParsingWarnings = exports.CredentialParsingError = void 0;
|
|
4
|
+
exports.isCredentialParsingWarnings = isCredentialParsingWarnings;
|
|
5
|
+
var CredentialParsingError;
|
|
6
|
+
(function (CredentialParsingError) {
|
|
7
|
+
CredentialParsingError["CouldNotParse"] = "CouldNotParse";
|
|
8
|
+
CredentialParsingError["InvalidSdJwtVcPayload"] = "InvalidSdJwtVcPayload";
|
|
9
|
+
CredentialParsingError["InvalidDatatype"] = "InvalidDatatype";
|
|
10
|
+
CredentialParsingError["NotSupportedCredentialType"] = "NotSupportedCredentialType";
|
|
11
|
+
CredentialParsingError["HeaderFail"] = "HeaderFail";
|
|
12
|
+
CredentialParsingError["InfiniteRecursion"] = "InfiniteRecursion";
|
|
13
|
+
CredentialParsingError["PayloadFail"] = "PayloadFail";
|
|
14
|
+
CredentialParsingError["VctmDecodeFail"] = "VctmDecodeFail";
|
|
15
|
+
CredentialParsingError["UnknownError"] = "UnknownError";
|
|
16
|
+
CredentialParsingError["NotFound"] = "NotFound";
|
|
17
|
+
CredentialParsingError["NotFoundExtends"] = "NotFoundExtends";
|
|
18
|
+
CredentialParsingError["IntegrityMissing"] = "IntegrityMissing";
|
|
19
|
+
CredentialParsingError["JwtVcIssuerMismatch"] = "JwtVcIssuerMismatch";
|
|
20
|
+
CredentialParsingError["IntegrityFail"] = "IntegrityFail";
|
|
21
|
+
CredentialParsingError["SchemaShapeFail"] = "SchemaShapeFail";
|
|
22
|
+
CredentialParsingError["JwtVcIssuerFail"] = "JwtVcIssuerFail";
|
|
23
|
+
CredentialParsingError["FailFetchIssuerMetadata"] = "FailFetchIssuerMetadata";
|
|
24
|
+
CredentialParsingError["FailSchemaIssuerMetadata"] = "FailSchemaIssuerMetadata";
|
|
25
|
+
})(CredentialParsingError || (exports.CredentialParsingError = CredentialParsingError = {}));
|
|
26
|
+
exports.CredentialParsingWarnings = new Set([
|
|
27
|
+
CredentialParsingError.NotFound,
|
|
28
|
+
CredentialParsingError.NotFoundExtends,
|
|
29
|
+
CredentialParsingError.IntegrityMissing,
|
|
30
|
+
CredentialParsingError.JwtVcIssuerMismatch,
|
|
31
|
+
CredentialParsingError.IntegrityFail,
|
|
32
|
+
CredentialParsingError.JwtVcIssuerFail,
|
|
33
|
+
CredentialParsingError.FailFetchIssuerMetadata,
|
|
34
|
+
CredentialParsingError.FailSchemaIssuerMetadata,
|
|
35
|
+
]);
|
|
36
|
+
function isCredentialParsingWarnings(code) {
|
|
37
|
+
return exports.CredentialParsingWarnings.has(code);
|
|
38
|
+
}
|
|
39
|
+
var GetMatchingCredentialsError;
|
|
40
|
+
(function (GetMatchingCredentialsError) {
|
|
41
|
+
GetMatchingCredentialsError["PresentationDefinitionParseError"] = "PresentationDefinitionParseError";
|
|
42
|
+
})(GetMatchingCredentialsError || (exports.GetMatchingCredentialsError = GetMatchingCredentialsError = {}));
|
|
43
|
+
var ValidatePresentationRequirementsError;
|
|
44
|
+
(function (ValidatePresentationRequirementsError) {
|
|
45
|
+
ValidatePresentationRequirementsError["PresentationSubmissionParameterIsMissing"] = "PresentationSubmissionParameterIsMissing";
|
|
46
|
+
ValidatePresentationRequirementsError["ConstraintsAreNotSatisfied"] = "ConstraintsAreNotSatisfied";
|
|
47
|
+
ValidatePresentationRequirementsError["PresentationSubmissionParsingFailed"] = "PresentationSubmissionParsingFailed";
|
|
48
|
+
ValidatePresentationRequirementsError["FailedToParseAtLeastOnePresentation"] = "FailedToParseAtLeastOnePresentation";
|
|
49
|
+
ValidatePresentationRequirementsError["InvalidVpToken"] = "InvalidVpToken";
|
|
50
|
+
ValidatePresentationRequirementsError["CredentialParsingError"] = "CredentialParsingError";
|
|
51
|
+
ValidatePresentationRequirementsError["CouldNotFindAssociatedInputDescriptorBasedOnPresentationSubmission"] = "CouldNotFindAssociatedInputDescriptorBasedOnPresentationSubmission";
|
|
52
|
+
ValidatePresentationRequirementsError["CouldNotVerifyParsedCredentialWithInputDescriptor"] = "CouldNotVerifyParsedCredentialWithInputDescriptor";
|
|
53
|
+
ValidatePresentationRequirementsError["UnsupportedFormat"] = "UnsupportedFormat";
|
|
54
|
+
})(ValidatePresentationRequirementsError || (exports.ValidatePresentationRequirementsError = ValidatePresentationRequirementsError = {}));
|
|
55
|
+
var CredentialVerificationError;
|
|
56
|
+
(function (CredentialVerificationError) {
|
|
57
|
+
CredentialVerificationError["UnknownProblem"] = "UnknownProblem";
|
|
58
|
+
CredentialVerificationError["VerificationProcessNotStarted"] = "VerificationProcessNotStarted";
|
|
59
|
+
CredentialVerificationError["InvalidDatatype"] = "InvalidDatatype";
|
|
60
|
+
CredentialVerificationError["InvalidFormat"] = "InvalidFormat";
|
|
61
|
+
CredentialVerificationError["MissingOpts"] = "MissingOpts";
|
|
62
|
+
CredentialVerificationError["InvalidCertificateChain"] = "InvalidCertificateChain";
|
|
63
|
+
CredentialVerificationError["InvalidSignature"] = "InvalidSignature";
|
|
64
|
+
CredentialVerificationError["CannotResolveIssuerPublicKey"] = "CannotResolveIssuerPublicKey";
|
|
65
|
+
CredentialVerificationError["CannotImportIssuerPublicKey"] = "CannotImportIssuerPublicKey";
|
|
66
|
+
CredentialVerificationError["NotTrustedIssuer"] = "NotTrustedIssuer";
|
|
67
|
+
CredentialVerificationError["VctRegistryNotConfigured"] = "VctRegistryNotConfigured";
|
|
68
|
+
CredentialVerificationError["ExpiredCredential"] = "ExpiredCredential";
|
|
69
|
+
CredentialVerificationError["InvalidCredentialHeader"] = "InvalidCredentialHeader";
|
|
70
|
+
CredentialVerificationError["InvalidCredentialPayload"] = "InvalidCredentialPayload";
|
|
71
|
+
CredentialVerificationError["InvalidDisclosures"] = "InvalidDisclosures";
|
|
72
|
+
CredentialVerificationError["UnexpectedIssuer"] = "UnexpectedIssuer";
|
|
73
|
+
CredentialVerificationError["UnexpectedCredentialType"] = "UnexpectedCredentialType";
|
|
74
|
+
CredentialVerificationError["MissingRequiredClaims"] = "MissingRequiredClaims";
|
|
75
|
+
CredentialVerificationError["CannotImportHolderPublicKey"] = "CannotImportHolderPublicKey";
|
|
76
|
+
CredentialVerificationError["CannotExtractHolderPublicKey"] = "CannotExtractHolderPublicKey";
|
|
77
|
+
CredentialVerificationError["HolderKeyAlgorithmMismatch"] = "HolderKeyAlgorithmMismatch";
|
|
78
|
+
// KBJWT related
|
|
79
|
+
CredentialVerificationError["KeyBindingRequired"] = "KeyBindingRequired";
|
|
80
|
+
CredentialVerificationError["KbJwtVerificationFailedHeader"] = "KbJwtVerificationFailedHeader";
|
|
81
|
+
CredentialVerificationError["KbJwtVerificationFailedIat"] = "KbJwtVerificationFailedIat";
|
|
82
|
+
CredentialVerificationError["KbJwtVerificationFailedReplay"] = "KbJwtVerificationFailedReplay";
|
|
83
|
+
CredentialVerificationError["KbJwtVerificationFailedMissingParameters"] = "KbJwtVerificationFailedMissingParameters";
|
|
84
|
+
CredentialVerificationError["KbJwtVerificationFailedWrongSdHash"] = "KbJwtVerificationFailedWrongSdHash";
|
|
85
|
+
CredentialVerificationError["KbJwtVerificationFailedUnexpectedAudience"] = "KbJwtVerificationFailedUnexpectedAudience";
|
|
86
|
+
CredentialVerificationError["KbJwtVerificationFailedUnexpectedNonce"] = "KbJwtVerificationFailedUnexpectedNonce";
|
|
87
|
+
CredentialVerificationError["KbJwtVerificationFailedSignatureValidation"] = "KbJwtVerificationFailedSignatureValidation";
|
|
88
|
+
// Token Status List related
|
|
89
|
+
CredentialVerificationError["CredentialStatusRequired"] = "CredentialStatusRequired";
|
|
90
|
+
CredentialVerificationError["CredentialStatusVerificationFailed"] = "CredentialStatusVerificationFailed";
|
|
91
|
+
CredentialVerificationError["CredentialRevoked"] = "CredentialRevoked";
|
|
92
|
+
CredentialVerificationError["CredentialSuspended"] = "CredentialSuspended";
|
|
93
|
+
CredentialVerificationError["CredentialStatusApplicationSpecific"] = "CredentialStatusApplicationSpecific";
|
|
94
|
+
// MSO MDOC related
|
|
95
|
+
CredentialVerificationError["MsoMdocMissingDeviceKeyInfo"] = "MsoMdocMissingDeviceKeyInfo";
|
|
96
|
+
CredentialVerificationError["MsoMdocInvalidDeviceSignature"] = "MsoMdocInvalidDeviceSignature";
|
|
97
|
+
})(CredentialVerificationError || (exports.CredentialVerificationError = CredentialVerificationError = {}));
|
|
98
|
+
var TokenStatusListVerificationError;
|
|
99
|
+
(function (TokenStatusListVerificationError) {
|
|
100
|
+
TokenStatusListVerificationError["InvalidReference"] = "InvalidReference";
|
|
101
|
+
TokenStatusListVerificationError["StatusListUriNotTrusted"] = "StatusListUriNotTrusted";
|
|
102
|
+
TokenStatusListVerificationError["FetchFailed"] = "FetchFailed";
|
|
103
|
+
TokenStatusListVerificationError["InvalidResponse"] = "InvalidResponse";
|
|
104
|
+
TokenStatusListVerificationError["ResponseTooLarge"] = "ResponseTooLarge";
|
|
105
|
+
TokenStatusListVerificationError["InvalidHeader"] = "InvalidHeader";
|
|
106
|
+
TokenStatusListVerificationError["CannotResolveSigningKey"] = "CannotResolveSigningKey";
|
|
107
|
+
TokenStatusListVerificationError["CannotImportSigningKey"] = "CannotImportSigningKey";
|
|
108
|
+
TokenStatusListVerificationError["InvalidSignature"] = "InvalidSignature";
|
|
109
|
+
TokenStatusListVerificationError["InvalidPayload"] = "InvalidPayload";
|
|
110
|
+
TokenStatusListVerificationError["ExpiredStatusList"] = "ExpiredStatusList";
|
|
111
|
+
TokenStatusListVerificationError["DecompressionFailed"] = "DecompressionFailed";
|
|
112
|
+
TokenStatusListVerificationError["DecompressedListTooLarge"] = "DecompressedListTooLarge";
|
|
113
|
+
TokenStatusListVerificationError["IndexOutOfRange"] = "IndexOutOfRange";
|
|
114
|
+
})(TokenStatusListVerificationError || (exports.TokenStatusListVerificationError = TokenStatusListVerificationError = {}));
|
|
115
|
+
var X509ChainVerificationError;
|
|
116
|
+
(function (X509ChainVerificationError) {
|
|
117
|
+
X509ChainVerificationError["EmptyChain"] = "EmptyChain";
|
|
118
|
+
X509ChainVerificationError["NoTrustAnchors"] = "NoTrustAnchors";
|
|
119
|
+
X509ChainVerificationError["ChainTooLong"] = "ChainTooLong";
|
|
120
|
+
X509ChainVerificationError["ChainTooLarge"] = "ChainTooLarge";
|
|
121
|
+
X509ChainVerificationError["InvalidCertificateEncoding"] = "InvalidCertificateEncoding";
|
|
122
|
+
X509ChainVerificationError["DuplicateCertificate"] = "DuplicateCertificate";
|
|
123
|
+
X509ChainVerificationError["InvalidTrustAnchor"] = "InvalidTrustAnchor";
|
|
124
|
+
X509ChainVerificationError["InvalidChainOrder"] = "InvalidChainOrder";
|
|
125
|
+
X509ChainVerificationError["InvalidValidationTime"] = "InvalidValidationTime";
|
|
126
|
+
X509ChainVerificationError["CertificateNotYetValid"] = "CertificateNotYetValid";
|
|
127
|
+
X509ChainVerificationError["CertificateExpired"] = "CertificateExpired";
|
|
128
|
+
X509ChainVerificationError["WeakCertificateSignature"] = "WeakCertificateSignature";
|
|
129
|
+
X509ChainVerificationError["UnsupportedCriticalExtension"] = "UnsupportedCriticalExtension";
|
|
130
|
+
X509ChainVerificationError["LeafIsCertificateAuthority"] = "LeafIsCertificateAuthority";
|
|
131
|
+
X509ChainVerificationError["InvalidLeafKeyUsage"] = "InvalidLeafKeyUsage";
|
|
132
|
+
X509ChainVerificationError["AlgorithmMismatch"] = "AlgorithmMismatch";
|
|
133
|
+
X509ChainVerificationError["ExtendedKeyUsageMismatch"] = "ExtendedKeyUsageMismatch";
|
|
134
|
+
X509ChainVerificationError["InvalidExpectedHostname"] = "InvalidExpectedHostname";
|
|
135
|
+
X509ChainVerificationError["HostnameMismatch"] = "HostnameMismatch";
|
|
136
|
+
X509ChainVerificationError["InvalidCertificateChain"] = "InvalidCertificateChain";
|
|
137
|
+
X509ChainVerificationError["UntrustedRoot"] = "UntrustedRoot";
|
|
138
|
+
X509ChainVerificationError["CertificateRevoked"] = "CertificateRevoked";
|
|
139
|
+
X509ChainVerificationError["RevocationStatusUnavailable"] = "RevocationStatusUnavailable";
|
|
140
|
+
})(X509ChainVerificationError || (exports.X509ChainVerificationError = X509ChainVerificationError = {}));
|
|
141
|
+
var PublicKeyResolutionError;
|
|
142
|
+
(function (PublicKeyResolutionError) {
|
|
143
|
+
PublicKeyResolutionError["CannotResolvePublicKey"] = "CannotResolvePublicKey";
|
|
144
|
+
PublicKeyResolutionError["IssuerNotTrusted"] = "IssuerNotTrusted";
|
|
145
|
+
PublicKeyResolutionError["MissingKeyIdentifier"] = "MissingKeyIdentifier";
|
|
146
|
+
PublicKeyResolutionError["MissingAlgorithm"] = "MissingAlgorithm";
|
|
147
|
+
PublicKeyResolutionError["AlgorithmNotAllowed"] = "AlgorithmNotAllowed";
|
|
148
|
+
PublicKeyResolutionError["KeyNotFound"] = "KeyNotFound";
|
|
149
|
+
PublicKeyResolutionError["DuplicateKeyIdentifier"] = "DuplicateKeyIdentifier";
|
|
150
|
+
PublicKeyResolutionError["InvalidJwksResponse"] = "InvalidJwksResponse";
|
|
151
|
+
PublicKeyResolutionError["KeyNotAllowed"] = "KeyNotAllowed";
|
|
152
|
+
PublicKeyResolutionError["CredentialTypeNotAllowed"] = "CredentialTypeNotAllowed";
|
|
153
|
+
PublicKeyResolutionError["RemoteJwksFetchFailed"] = "RemoteJwksFetchFailed";
|
|
154
|
+
})(PublicKeyResolutionError || (exports.PublicKeyResolutionError = PublicKeyResolutionError = {}));
|
|
155
|
+
var CredentialRenderingError;
|
|
156
|
+
(function (CredentialRenderingError) {
|
|
157
|
+
CredentialRenderingError["IntegrityCheckFailed"] = "IntegrityCheckFailed";
|
|
158
|
+
CredentialRenderingError["CouldNotFetchSvg"] = "CouldNotFetchSvg";
|
|
159
|
+
})(CredentialRenderingError || (exports.CredentialRenderingError = CredentialRenderingError = {}));
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBZ0NBLGtFQUVDO0FBbENELElBQVksc0JBbUJYO0FBbkJELFdBQVksc0JBQXNCO0lBQ2pDLHlEQUErQixDQUFBO0lBQy9CLHlFQUErQyxDQUFBO0lBQy9DLDZEQUFtQyxDQUFBO0lBQ25DLG1GQUF5RCxDQUFBO0lBQ3pELG1EQUF5QixDQUFBO0lBQ3pCLGlFQUF1QyxDQUFBO0lBQ3ZDLHFEQUEyQixDQUFBO0lBQzNCLDJEQUFpQyxDQUFBO0lBQ2pDLHVEQUE2QixDQUFBO0lBQzdCLCtDQUFxQixDQUFBO0lBQ3JCLDZEQUFtQyxDQUFBO0lBQ25DLCtEQUFxQyxDQUFBO0lBQ3JDLHFFQUEyQyxDQUFBO0lBQzNDLHlEQUErQixDQUFBO0lBQy9CLDZEQUFtQyxDQUFBO0lBQ25DLDZEQUFtQyxDQUFBO0lBQ25DLDZFQUFtRCxDQUFBO0lBQ25ELCtFQUFxRCxDQUFBO0FBQ3RELENBQUMsRUFuQlcsc0JBQXNCLHNDQUF0QixzQkFBc0IsUUFtQmpDO0FBRVksUUFBQSx5QkFBeUIsR0FBRyxJQUFJLEdBQUcsQ0FBeUI7SUFDeEUsc0JBQXNCLENBQUMsUUFBUTtJQUMvQixzQkFBc0IsQ0FBQyxlQUFlO0lBQ3RDLHNCQUFzQixDQUFDLGdCQUFnQjtJQUN2QyxzQkFBc0IsQ0FBQyxtQkFBbUI7SUFDMUMsc0JBQXNCLENBQUMsYUFBYTtJQUNwQyxzQkFBc0IsQ0FBQyxlQUFlO0lBQ3RDLHNCQUFzQixDQUFDLHVCQUF1QjtJQUM5QyxzQkFBc0IsQ0FBQyx3QkFBd0I7Q0FDL0MsQ0FBQyxDQUFDO0FBRUgsU0FBZ0IsMkJBQTJCLENBQUMsSUFBNEI7SUFDdkUsT0FBTyxpQ0FBeUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELElBQVksMkJBRVg7QUFGRCxXQUFZLDJCQUEyQjtJQUN0QyxvR0FBcUUsQ0FBQTtBQUN0RSxDQUFDLEVBRlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFFdEM7QUFFRCxJQUFZLHFDQVdYO0FBWEQsV0FBWSxxQ0FBcUM7SUFDaEQsOEhBQXFGLENBQUE7SUFDckYsa0dBQXlELENBQUE7SUFDekQsb0hBQTJFLENBQUE7SUFDM0Usb0hBQTJFLENBQUE7SUFDM0UsMEVBQWlDLENBQUE7SUFDakMsMEZBQWlELENBQUE7SUFDakQsa0xBQXlJLENBQUE7SUFDekksZ0pBQXVHLENBQUE7SUFDdkcsZ0ZBQXVDLENBQUE7QUFFeEMsQ0FBQyxFQVhXLHFDQUFxQyxxREFBckMscUNBQXFDLFFBV2hEO0FBRUQsSUFBWSwyQkFnRFg7QUFoREQsV0FBWSwyQkFBMkI7SUFDdEMsZ0VBQWlDLENBQUE7SUFDakMsOEZBQStELENBQUE7SUFDL0Qsa0VBQW1DLENBQUE7SUFDbkMsOERBQStCLENBQUE7SUFDL0IsMERBQTJCLENBQUE7SUFDM0Isa0ZBQW1ELENBQUE7SUFHbkQsb0VBQXFDLENBQUE7SUFDckMsNEZBQTZELENBQUE7SUFDN0QsMEZBQTJELENBQUE7SUFDM0Qsb0VBQXFDLENBQUE7SUFDckMsb0ZBQXFELENBQUE7SUFFckQsc0VBQXVDLENBQUE7SUFDdkMsa0ZBQW1ELENBQUE7SUFDbkQsb0ZBQXFELENBQUE7SUFDckQsd0VBQXlDLENBQUE7SUFDekMsb0VBQXFDLENBQUE7SUFDckMsb0ZBQXFELENBQUE7SUFDckQsOEVBQStDLENBQUE7SUFFL0MsMEZBQTJELENBQUE7SUFDM0QsNEZBQTZELENBQUE7SUFDN0Qsd0ZBQXlELENBQUE7SUFFekQsZ0JBQWdCO0lBQ2hCLHdFQUF5QyxDQUFBO0lBQ3pDLDhGQUErRCxDQUFBO0lBQy9ELHdGQUF5RCxDQUFBO0lBQ3pELDhGQUErRCxDQUFBO0lBQy9ELG9IQUFxRixDQUFBO0lBQ3JGLHdHQUF5RSxDQUFBO0lBQ3pFLHNIQUF1RixDQUFBO0lBQ3ZGLGdIQUFpRixDQUFBO0lBQ2pGLHdIQUF5RixDQUFBO0lBRXpGLDRCQUE0QjtJQUM1QixvRkFBcUQsQ0FBQTtJQUNyRCx3R0FBeUUsQ0FBQTtJQUN6RSxzRUFBdUMsQ0FBQTtJQUN2QywwRUFBMkMsQ0FBQTtJQUMzQywwR0FBMkUsQ0FBQTtJQUUzRSxtQkFBbUI7SUFDbkIsMEZBQTJELENBQUE7SUFDM0QsOEZBQStELENBQUE7QUFDaEUsQ0FBQyxFQWhEVywyQkFBMkIsMkNBQTNCLDJCQUEyQixRQWdEdEM7QUFFRCxJQUFZLGdDQWVYO0FBZkQsV0FBWSxnQ0FBZ0M7SUFDM0MseUVBQXFDLENBQUE7SUFDckMsdUZBQW1ELENBQUE7SUFDbkQsK0RBQTJCLENBQUE7SUFDM0IsdUVBQW1DLENBQUE7SUFDbkMseUVBQXFDLENBQUE7SUFDckMsbUVBQStCLENBQUE7SUFDL0IsdUZBQW1ELENBQUE7SUFDbkQscUZBQWlELENBQUE7SUFDakQseUVBQXFDLENBQUE7SUFDckMscUVBQWlDLENBQUE7SUFDakMsMkVBQXVDLENBQUE7SUFDdkMsK0VBQTJDLENBQUE7SUFDM0MseUZBQXFELENBQUE7SUFDckQsdUVBQW1DLENBQUE7QUFDcEMsQ0FBQyxFQWZXLGdDQUFnQyxnREFBaEMsZ0NBQWdDLFFBZTNDO0FBRUQsSUFBWSwwQkF3Qlg7QUF4QkQsV0FBWSwwQkFBMEI7SUFDckMsdURBQXlCLENBQUE7SUFDekIsK0RBQWlDLENBQUE7SUFDakMsMkRBQTZCLENBQUE7SUFDN0IsNkRBQStCLENBQUE7SUFDL0IsdUZBQXlELENBQUE7SUFDekQsMkVBQTZDLENBQUE7SUFDN0MsdUVBQXlDLENBQUE7SUFDekMscUVBQXVDLENBQUE7SUFDdkMsNkVBQStDLENBQUE7SUFDL0MsK0VBQWlELENBQUE7SUFDakQsdUVBQXlDLENBQUE7SUFDekMsbUZBQXFELENBQUE7SUFDckQsMkZBQTZELENBQUE7SUFDN0QsdUZBQXlELENBQUE7SUFDekQseUVBQTJDLENBQUE7SUFDM0MscUVBQXVDLENBQUE7SUFDdkMsbUZBQXFELENBQUE7SUFDckQsaUZBQW1ELENBQUE7SUFDbkQsbUVBQXFDLENBQUE7SUFDckMsaUZBQW1ELENBQUE7SUFDbkQsNkRBQStCLENBQUE7SUFDL0IsdUVBQXlDLENBQUE7SUFDekMseUZBQTJELENBQUE7QUFDNUQsQ0FBQyxFQXhCVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQXdCckM7QUFFRCxJQUFZLHdCQVlYO0FBWkQsV0FBWSx3QkFBd0I7SUFDbkMsNkVBQWlELENBQUE7SUFDakQsaUVBQXFDLENBQUE7SUFDckMseUVBQTZDLENBQUE7SUFDN0MsaUVBQXFDLENBQUE7SUFDckMsdUVBQTJDLENBQUE7SUFDM0MsdURBQTJCLENBQUE7SUFDM0IsNkVBQWlELENBQUE7SUFDakQsdUVBQTJDLENBQUE7SUFDM0MsMkRBQStCLENBQUE7SUFDL0IsaUZBQXFELENBQUE7SUFDckQsMkVBQStDLENBQUE7QUFDaEQsQ0FBQyxFQVpXLHdCQUF3Qix3Q0FBeEIsd0JBQXdCLFFBWW5DO0FBRUQsSUFBWSx3QkFHWDtBQUhELFdBQVksd0JBQXdCO0lBQ25DLHlFQUE2QyxDQUFBO0lBQzdDLGlFQUFxQyxDQUFBO0FBQ3RDLENBQUMsRUFIVyx3QkFBd0Isd0NBQXhCLHdCQUF3QixRQUduQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertDataUriToImage.d.ts","sourceRoot":"","sources":["../../src/functions/convertDataUriToImage.ts"],"names":[],"mappings":"AAcA,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,SAAiB,QAsBrF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.convertDataUriToImage = convertDataUriToImage;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const mimeToExt = {
|
|
9
|
+
"image/png": ".png",
|
|
10
|
+
"image/jpeg": ".jpg",
|
|
11
|
+
"image/gif": ".gif",
|
|
12
|
+
"image/svg+xml": ".svg",
|
|
13
|
+
"image/webp": ".webp",
|
|
14
|
+
"image/bmp": ".bmp",
|
|
15
|
+
"image/x-icon": ".ico",
|
|
16
|
+
"image/tiff": ".tiff",
|
|
17
|
+
"image/heif": ".heif"
|
|
18
|
+
};
|
|
19
|
+
function convertDataUriToImage(dataUri, outputFileName = "output-image") {
|
|
20
|
+
const matches = dataUri.match(/^data:([a-zA-Z+\/]+);(?:charset=utf-8;)?(base64,|utf8,|utf-8,)?(.+)$/);
|
|
21
|
+
if (!matches) {
|
|
22
|
+
throw new Error("Invalid Data URI");
|
|
23
|
+
}
|
|
24
|
+
const mimeType = matches[1];
|
|
25
|
+
const encoding = matches[2];
|
|
26
|
+
const data = matches[3];
|
|
27
|
+
const fileExtension = mimeToExt[mimeType] || ".bin";
|
|
28
|
+
let buffer;
|
|
29
|
+
if (encoding === "base64") {
|
|
30
|
+
buffer = Buffer.from(data, "base64");
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
buffer = Buffer.from(decodeURIComponent(data), "utf-8");
|
|
34
|
+
}
|
|
35
|
+
const outputPath = `${outputFileName}${fileExtension}`;
|
|
36
|
+
fs_1.default.writeFileSync(outputPath, buffer);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydERhdGFVcmlUb0ltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmN0aW9ucy9jb252ZXJ0RGF0YVVyaVRvSW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxzREFzQkM7QUFwQ0QsNENBQW9CO0FBRXBCLE1BQU0sU0FBUyxHQUEyQjtJQUN6QyxXQUFXLEVBQUUsTUFBTTtJQUNuQixZQUFZLEVBQUUsTUFBTTtJQUNwQixXQUFXLEVBQUUsTUFBTTtJQUNuQixlQUFlLEVBQUUsTUFBTTtJQUN2QixZQUFZLEVBQUUsT0FBTztJQUNyQixXQUFXLEVBQUUsTUFBTTtJQUNuQixjQUFjLEVBQUUsTUFBTTtJQUN0QixZQUFZLEVBQUUsT0FBTztJQUNyQixZQUFZLEVBQUUsT0FBTztDQUNyQixDQUFDO0FBRUYsU0FBZ0IscUJBQXFCLENBQUMsT0FBZSxFQUFFLGNBQWMsR0FBRyxjQUFjO0lBQ3JGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztJQUV0RyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhCLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUM7SUFFcEQsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7U0FBTSxDQUFDO1FBQ1AsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsY0FBYyxHQUFHLGFBQWEsRUFBRSxDQUFDO0lBQ3ZELFlBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDLENBQUMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { OpenIdClaim } from "../schemas";
|
|
2
|
+
import { ClaimMetadataEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
|
|
3
|
+
export declare function convertOpenid4vciToSdjwtvcClaims(metadataClaims?: OpenIdClaim[] | null): ClaimMetadataEntry[];
|
|
4
|
+
export default convertOpenid4vciToSdjwtvcClaims;
|
|
5
|
+
//# sourceMappingURL=convertOpenid4vciToSdjwtvcClaims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertOpenid4vciToSdjwtvcClaims.d.ts","sourceRoot":"","sources":["../../src/functions/convertOpenid4vciToSdjwtvcClaims.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,sCAAsC,CAAC;AAE7F,wBAAgB,gCAAgC,CAC/C,cAAc,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,GACnC,kBAAkB,EAAE,CA+BtB;AAED,eAAe,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertOpenid4vciToSdjwtvcClaims = convertOpenid4vciToSdjwtvcClaims;
|
|
4
|
+
function convertOpenid4vciToSdjwtvcClaims(metadataClaims) {
|
|
5
|
+
if (!metadataClaims?.length)
|
|
6
|
+
return [];
|
|
7
|
+
return metadataClaims
|
|
8
|
+
.map((claim) => {
|
|
9
|
+
const normalizedDisplay = (claim.display ?? [])
|
|
10
|
+
.filter((d) => typeof d?.locale === "string" &&
|
|
11
|
+
d.locale.trim().length > 0 &&
|
|
12
|
+
typeof d?.name === "string" &&
|
|
13
|
+
d.name.trim().length > 0)
|
|
14
|
+
.map(d => ({
|
|
15
|
+
locale: d.locale.trim(),
|
|
16
|
+
label: d.name.trim(),
|
|
17
|
+
}));
|
|
18
|
+
// preserve mandatory if present (true OR false), skip if undefined
|
|
19
|
+
const mandatory = Object.prototype.hasOwnProperty.call(claim, "mandatory")
|
|
20
|
+
? claim.mandatory
|
|
21
|
+
: undefined;
|
|
22
|
+
return {
|
|
23
|
+
path: claim.path,
|
|
24
|
+
...(normalizedDisplay.length > 0 ? { display: normalizedDisplay } : {}),
|
|
25
|
+
...(mandatory !== undefined ? { mandatory } : {}),
|
|
26
|
+
};
|
|
27
|
+
})
|
|
28
|
+
.filter((e) => e !== null);
|
|
29
|
+
}
|
|
30
|
+
exports.default = convertOpenid4vciToSdjwtvcClaims;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydE9wZW5pZDR2Y2lUb1Nkand0dmNDbGFpbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2NvbnZlcnRPcGVuaWQ0dmNpVG9TZGp3dHZjQ2xhaW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsNEVBaUNDO0FBakNELFNBQWdCLGdDQUFnQyxDQUMvQyxjQUFxQztJQUVyQyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU07UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV2QyxPQUFPLGNBQWM7U0FDbkIsR0FBRyxDQUE0QixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3pDLE1BQU0saUJBQWlCLEdBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDbEUsTUFBTSxDQUNOLENBQUMsQ0FBQyxFQUF5QyxFQUFFLENBQzVDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDMUIsT0FBTyxDQUFDLEVBQUUsSUFBSSxLQUFLLFFBQVE7WUFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN6QjthQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkIsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBRUwsbUVBQW1FO1FBQ25FLE1BQU0sU0FBUyxHQUNkLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO1lBQ3ZELENBQUMsQ0FBRSxLQUFhLENBQUMsU0FBUztZQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsT0FBTztZQUNOLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDM0IsQ0FBQztJQUN6QixDQUFDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELGtCQUFlLGdDQUFnQyxDQUFDIn0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ClaimMetadataEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
|
|
2
|
+
import { OpenIdClaim } from "../schemas";
|
|
3
|
+
/**
|
|
4
|
+
* Converts SD-JWT VC type-metadata claims to OpenID4VCI claims.
|
|
5
|
+
* - display[].label -> display[].name
|
|
6
|
+
* - preserves mandatory if present
|
|
7
|
+
* - removes undefined fields
|
|
8
|
+
*/
|
|
9
|
+
export declare function convertSdjwtvcToOpenid4vciClaims(claims?: ClaimMetadataEntry[] | null): OpenIdClaim[];
|
|
10
|
+
export default convertSdjwtvcToOpenid4vciClaims;
|
|
11
|
+
//# sourceMappingURL=convertSdjwtvcToOpenid4vciClaims.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertSdjwtvcToOpenid4vciClaims.d.ts","sourceRoot":"","sources":["../../src/functions/convertSdjwtvcToOpenid4vciClaims.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAElB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,GAClC,WAAW,EAAE,CAgCf;AAED,eAAe,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertSdjwtvcToOpenid4vciClaims = convertSdjwtvcToOpenid4vciClaims;
|
|
4
|
+
/**
|
|
5
|
+
* Converts SD-JWT VC type-metadata claims to OpenID4VCI claims.
|
|
6
|
+
* - display[].label -> display[].name
|
|
7
|
+
* - preserves mandatory if present
|
|
8
|
+
* - removes undefined fields
|
|
9
|
+
*/
|
|
10
|
+
function convertSdjwtvcToOpenid4vciClaims(claims) {
|
|
11
|
+
if (!claims?.length)
|
|
12
|
+
return [];
|
|
13
|
+
return claims.map((claim) => {
|
|
14
|
+
// Map display entries
|
|
15
|
+
const display = (claim.display ?? [])
|
|
16
|
+
.filter((d) => typeof d?.locale === "string" &&
|
|
17
|
+
d.locale.trim() !== "" &&
|
|
18
|
+
typeof d?.label === "string" &&
|
|
19
|
+
d.label.trim() !== "")
|
|
20
|
+
.map((d) => ({
|
|
21
|
+
locale: d.locale.trim(),
|
|
22
|
+
name: d.label.trim(),
|
|
23
|
+
}));
|
|
24
|
+
// Only include mandatory if explicitly present (true OR false)
|
|
25
|
+
const hasMandatory = Object.prototype.hasOwnProperty.call(claim, "mandatory");
|
|
26
|
+
const result = {
|
|
27
|
+
path: claim.path,
|
|
28
|
+
...(display.length > 0 ? { display } : {}),
|
|
29
|
+
...(hasMandatory ? { mandatory: claim.mandatory } : {}),
|
|
30
|
+
};
|
|
31
|
+
return result;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
exports.default = convertSdjwtvcToOpenid4vciClaims;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFNkand0dmNUb09wZW5pZDR2Y2lDbGFpbXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2NvbnZlcnRTZGp3dHZjVG9PcGVuaWQ0dmNpQ2xhaW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsNEVBa0NDO0FBeENEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0NBQWdDLENBQy9DLE1BQW9DO0lBRXBDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRS9CLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBYyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3hDLHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2FBQ25DLE1BQU0sQ0FDTixDQUFDLENBQUMsRUFBMEIsRUFBRSxDQUM3QixPQUFPLENBQUMsRUFBRSxNQUFNLEtBQUssUUFBUTtZQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFDdEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxLQUFLLFFBQVE7WUFDNUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQ3RCO2FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNwQixDQUFDLENBQUMsQ0FBQztRQUVMLCtEQUErRDtRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3hELEtBQUssRUFDTCxXQUFXLENBQ1gsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFRO1lBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUN2RCxDQUFDO1FBRUYsT0FBTyxNQUFxQixDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELGtCQUFlLGdDQUFnQyxDQUFDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TypeDisplayEntry } from "../schemas/SdJwtVcTypeMetadataSchema";
|
|
2
|
+
import type { CredentialConfigurationSupported } from "../schemas/CredentialConfigurationSupportedSchema";
|
|
3
|
+
/**
|
|
4
|
+
* Convert SD-JWT VC TypeMetadata.display -> OpenID4VCI CredentialConfigurationSupported.display
|
|
5
|
+
*
|
|
6
|
+
* Notes:
|
|
7
|
+
* - svg_templates are intentionally ignored
|
|
8
|
+
* - We map:
|
|
9
|
+
* - name -> name
|
|
10
|
+
* - description -> description
|
|
11
|
+
* - rendering.simple.background_color -> background_color
|
|
12
|
+
* - rendering.simple.text_color -> text_color
|
|
13
|
+
* - rendering.simple.background_image.uri -> background_image.uri
|
|
14
|
+
* - rendering.simple.logo -> logo
|
|
15
|
+
* - locale -> locale
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare function convertSdjwtvcToOpenid4vciDisplay(display?: TypeDisplayEntry[]): CredentialConfigurationSupported["display"];
|
|
19
|
+
//# sourceMappingURL=convertSdjwtvcToOpenid4vciDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertSdjwtvcToOpenid4vciDisplay.d.ts","sourceRoot":"","sources":["../../src/functions/convertSdjwtvcToOpenid4vciDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AAK1G;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAChD,OAAO,CAAC,EAAE,gBAAgB,EAAE,GAC1B,gCAAgC,CAAC,SAAS,CAAC,CA2C7C"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertSdjwtvcToOpenid4vciDisplay = convertSdjwtvcToOpenid4vciDisplay;
|
|
4
|
+
/**
|
|
5
|
+
* Convert SD-JWT VC TypeMetadata.display -> OpenID4VCI CredentialConfigurationSupported.display
|
|
6
|
+
*
|
|
7
|
+
* Notes:
|
|
8
|
+
* - svg_templates are intentionally ignored
|
|
9
|
+
* - We map:
|
|
10
|
+
* - name -> name
|
|
11
|
+
* - description -> description
|
|
12
|
+
* - rendering.simple.background_color -> background_color
|
|
13
|
+
* - rendering.simple.text_color -> text_color
|
|
14
|
+
* - rendering.simple.background_image.uri -> background_image.uri
|
|
15
|
+
* - rendering.simple.logo -> logo
|
|
16
|
+
* - locale -> locale
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
function convertSdjwtvcToOpenid4vciDisplay(display) {
|
|
20
|
+
if (!display?.length)
|
|
21
|
+
return undefined;
|
|
22
|
+
const byLocale = new Map();
|
|
23
|
+
for (const d of display) {
|
|
24
|
+
const simple = d.rendering?.simple;
|
|
25
|
+
const candidate = {
|
|
26
|
+
name: d.name,
|
|
27
|
+
description: d.description,
|
|
28
|
+
locale: d.locale,
|
|
29
|
+
background_color: simple?.background_color,
|
|
30
|
+
text_color: simple?.text_color,
|
|
31
|
+
...(simple?.background_image?.uri
|
|
32
|
+
? { background_image: { uri: simple.background_image.uri } }
|
|
33
|
+
: {}),
|
|
34
|
+
...(simple?.logo?.uri
|
|
35
|
+
? {
|
|
36
|
+
logo: {
|
|
37
|
+
uri: simple.logo.uri,
|
|
38
|
+
alt_text: simple.logo.alt_text,
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
: {}),
|
|
42
|
+
};
|
|
43
|
+
// remove undefined keys (keeps output tidy)
|
|
44
|
+
for (const key of Object.keys(candidate)) {
|
|
45
|
+
if (candidate[key] === undefined)
|
|
46
|
+
delete candidate[key];
|
|
47
|
+
}
|
|
48
|
+
const existing = byLocale.get(d.locale);
|
|
49
|
+
if (!existing) {
|
|
50
|
+
byLocale.set(d.locale, candidate);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return Array.from(byLocale.values());
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFNkand0dmNUb09wZW5pZDR2Y2lEaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Z1bmN0aW9ucy9jb252ZXJ0U2Rqd3R2Y1RvT3BlbmlkNHZjaURpc3BsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFxQkEsOEVBNkNDO0FBNUREOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsaUNBQWlDLENBQ2hELE9BQTRCO0lBRTVCLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRXZDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUF3QyxDQUFDO0lBRWpFLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFFbkMsTUFBTSxTQUFTLEdBQWlDO1lBQy9DLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtZQUNaLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07WUFFaEIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLGdCQUFnQjtZQUMxQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVU7WUFFOUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHO2dCQUNoQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzVELENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFTixHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHO2dCQUNwQixDQUFDLENBQUM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNMLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUc7d0JBQ3BCLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVE7cUJBQzlCO2lCQUNEO2dCQUNELENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDTixDQUFDO1FBRUYsNENBQTRDO1FBQzVDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQTJDLEVBQUUsQ0FBQztZQUNwRixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO2dCQUFFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbEMsU0FBUztRQUNWLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatDate.d.ts","sourceRoot":"","sources":["../../src/functions/formatDate.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,SAAa,OA2CzD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatDate = formatDate;
|
|
4
|
+
function formatDate(value, format = 'datetime') {
|
|
5
|
+
// Regex for ISO 8601 format like '2024-10-08T07:28:49.117Z'
|
|
6
|
+
const iso8601Regex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/;
|
|
7
|
+
// Regex for simple YYYY-MM-DD format
|
|
8
|
+
const simpleDateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
9
|
+
// Regex for long-form date strings like 'Wed Dec 11 2024 14:46:19 GMT+0200'
|
|
10
|
+
const longFormDateRegex = /^[A-Z][a-z]{2} [A-Z][a-z]{2} \d{2} \d{4} \d{2}:\d{2}:\d{2} GMT[+-]\d{4}/;
|
|
11
|
+
let date;
|
|
12
|
+
if (typeof value === 'number' && value.toString().length === 10) {
|
|
13
|
+
// Handle Unix timestamp (seconds) by converting to milliseconds
|
|
14
|
+
date = new Date(value * 1000);
|
|
15
|
+
}
|
|
16
|
+
else if (typeof value === 'string') {
|
|
17
|
+
if (iso8601Regex.test(value)) {
|
|
18
|
+
// Handle ISO 8601 format
|
|
19
|
+
date = new Date(value);
|
|
20
|
+
}
|
|
21
|
+
else if (simpleDateRegex.test(value)) {
|
|
22
|
+
// A date-only value is a civil calendar date, not a UTC instant.
|
|
23
|
+
// Construct it in local time so western time zones do not display
|
|
24
|
+
// the previous day (for example, 2026-07-31 as 30/07/2026 in Chile).
|
|
25
|
+
const [year, month, day] = value.split('-').map(Number);
|
|
26
|
+
date = new Date(year, month - 1, day);
|
|
27
|
+
}
|
|
28
|
+
else if (longFormDateRegex.test(value)) {
|
|
29
|
+
// Handle long-form date string
|
|
30
|
+
date = new Date(value);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// Non-date strings, including IDs, are returned as-is
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else if (value instanceof Date) {
|
|
38
|
+
// Handle Date objects directly
|
|
39
|
+
date = value;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// For unsupported types, return the original value
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
const options = format === 'datetime'
|
|
46
|
+
? { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit' }
|
|
47
|
+
: { day: '2-digit', month: '2-digit', year: 'numeric' };
|
|
48
|
+
return date.toLocaleDateString('en-GB', options);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0RGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mdW5jdGlvbnMvZm9ybWF0RGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdDQTJDQztBQTNDRCxTQUFnQixVQUFVLENBQUMsS0FBVSxFQUFFLE1BQU0sR0FBRyxVQUFVO0lBQ3pELDREQUE0RDtJQUM1RCxNQUFNLFlBQVksR0FBRyw4Q0FBOEMsQ0FBQztJQUNwRSxxQ0FBcUM7SUFDckMsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUM7SUFDOUMsNEVBQTRFO0lBQzVFLE1BQU0saUJBQWlCLEdBQUcseUVBQXlFLENBQUM7SUFFcEcsSUFBSSxJQUFJLENBQUM7SUFFVCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ2pFLGdFQUFnRTtRQUNoRSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLHlCQUF5QjtZQUN6QixJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQzthQUFNLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLGlFQUFpRTtZQUNqRSxrRUFBa0U7WUFDbEUscUVBQXFFO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQywrQkFBK0I7WUFDL0IsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ1Asc0RBQXNEO1lBQ3RELE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNGLENBQUM7U0FBTSxJQUFJLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztRQUNsQywrQkFBK0I7UUFDL0IsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ1AsbURBQW1EO1FBQ25ELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxVQUFVO1FBQ3BDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO1FBQzlHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFFekQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQWMsQ0FBQyxDQUFDO0FBQ3pELENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/functions/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./convertOpenid4vciToSdjwtvcClaims"), exports);
|
|
18
|
+
__exportStar(require("./convertSdjwtvcToOpenid4vciClaims"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxRUFBbUQ7QUFDbkQscUVBQW1EIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openID4VCICredentialRendering.d.ts","sourceRoot":"","sources":["../../src/functions/openID4VCICredentialRendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAK1E,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG,6BAA6B,CAsG7G"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenID4VCICredentialRendering = OpenID4VCICredentialRendering;
|
|
4
|
+
const escapeSVG_1 = require("../utils/escapeSVG");
|
|
5
|
+
const formatDate_1 = require("./formatDate");
|
|
6
|
+
function OpenID4VCICredentialRendering(args) {
|
|
7
|
+
const defaultBackgroundColor = "#D3D3D3";
|
|
8
|
+
const defaultTextColor = "#000000";
|
|
9
|
+
const defaultName = "Credential";
|
|
10
|
+
const svgTemplate = `<svg
|
|
11
|
+
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="829"
|
|
12
|
+
height="504" version="1.1">
|
|
13
|
+
<rect width="100%" height="100%" fill="{{backgroundColor}}" />
|
|
14
|
+
{{backgroundImageBase64}}
|
|
15
|
+
{{logoBase64}}
|
|
16
|
+
<text x="50" y="80" font-family="Arial, Helvetica, sans-serif" font-size="35" fill="{{textColor}}" font-weight="normal">{{name}}</text>
|
|
17
|
+
<text x="50" y="120" font-family="Arial, Helvetica, sans-serif" font-size="20" fill="{{textColor}}" font-weight="normal">{{description}}</text>
|
|
18
|
+
<text x="790" y="431" text-anchor="end" font-family="Arial, Helvetica, sans-serif" font-size="25" fill="{{textColor}}" font-weight="normal">{{expiry_date}}</text>
|
|
19
|
+
</svg>`;
|
|
20
|
+
function formatExpiryDate(signedClaims) {
|
|
21
|
+
if (signedClaims.expiry_date) {
|
|
22
|
+
return (0, formatDate_1.formatDate)(signedClaims.expiry_date, 'date');
|
|
23
|
+
}
|
|
24
|
+
else if (signedClaims.exp != null) {
|
|
25
|
+
const expiryDateISO = new Date(Number(signedClaims.exp) * 1000).toISOString();
|
|
26
|
+
return (0, formatDate_1.formatDate)(expiryDateISO, 'date');
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function getBase64Image(url) {
|
|
33
|
+
if (!url)
|
|
34
|
+
return null;
|
|
35
|
+
try {
|
|
36
|
+
const isBrowser = typeof window !== "undefined";
|
|
37
|
+
if (isBrowser) {
|
|
38
|
+
// Frontend: Use FileReader with Fetch API
|
|
39
|
+
const response = await fetch(url);
|
|
40
|
+
const blob = await response.blob();
|
|
41
|
+
return new Promise((resolve, reject) => {
|
|
42
|
+
const reader = new FileReader();
|
|
43
|
+
reader.onloadend = () => resolve(reader.result);
|
|
44
|
+
reader.onerror = reject;
|
|
45
|
+
reader.readAsDataURL(blob);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Backend (Node.js): Use Axios or Fetch with Buffer
|
|
50
|
+
const response = await args.httpClient.get(url, {}, { responseType: 'arraybuffer', useCache: true });
|
|
51
|
+
const blob = response.data;
|
|
52
|
+
const base64 = Buffer.from(blob, "binary").toString("base64");
|
|
53
|
+
const mimeType = response.headers["content-type"]; // Get MIME type
|
|
54
|
+
return `data:${mimeType};base64,${base64}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error("Failed to load image", url, error);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const renderCustomSvgTemplate = async ({ signedClaims, displayConfig }) => {
|
|
63
|
+
const name = displayConfig?.name ? (0, escapeSVG_1.escapeSVG)(displayConfig?.name) : defaultName;
|
|
64
|
+
const description = displayConfig?.description ? (0, escapeSVG_1.escapeSVG)(displayConfig?.description) : "";
|
|
65
|
+
const backgroundColor = displayConfig.backgroundColor || defaultBackgroundColor;
|
|
66
|
+
const textColor = displayConfig.text_color || defaultTextColor;
|
|
67
|
+
const backgroundImageBase64 = displayConfig?.background_image?.uri ?
|
|
68
|
+
displayConfig?.background_image?.uri?.startsWith("data:") ?
|
|
69
|
+
displayConfig?.background_image.uri
|
|
70
|
+
: await getBase64Image(displayConfig?.background_image?.uri)
|
|
71
|
+
: '';
|
|
72
|
+
const logoBase64 = displayConfig?.logo?.uri ? await getBase64Image(displayConfig.logo.uri) : '';
|
|
73
|
+
const expiryDate = formatExpiryDate(signedClaims);
|
|
74
|
+
const replacedSvgText = svgTemplate
|
|
75
|
+
.replace(/{{backgroundColor}}/g, backgroundColor)
|
|
76
|
+
.replace(/{{backgroundImageBase64}}/g, backgroundImageBase64
|
|
77
|
+
? `<image xlink:href="${backgroundImageBase64}" x="0" y="0" width="100%" height="100%" preserveAspectRatio="xMidYMid slice" />`
|
|
78
|
+
: '')
|
|
79
|
+
.replace(/{{logoBase64}}/g, logoBase64
|
|
80
|
+
? `<image xlink:href="${logoBase64}" x="50" y="380" height="20%"><title>${displayConfig.logoAltText || 'Logo'}</title></image>`
|
|
81
|
+
: '')
|
|
82
|
+
.replace(/{{name}}/g, name)
|
|
83
|
+
.replace(/{{textColor}}/g, textColor)
|
|
84
|
+
.replace(/{{description}}/g, description)
|
|
85
|
+
.replace(/{{expiry_date}}/g, expiryDate ? `Expiry Date: ${expiryDate}` : '');
|
|
86
|
+
const dataUri = `data:image/svg+xml;utf8,${encodeURIComponent(replacedSvgText)}`;
|
|
87
|
+
return dataUri;
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
renderCustomSvgTemplate,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbklENFZDSUNyZWRlbnRpYWxSZW5kZXJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZnVuY3Rpb25zL29wZW5JRDRWQ0lDcmVkZW50aWFsUmVuZGVyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esc0VBc0dDO0FBekdELGtEQUErQztBQUMvQyw2Q0FBMEM7QUFFMUMsU0FBZ0IsNkJBQTZCLENBQUMsSUFBZ0M7SUFFN0UsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUM7SUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQ2pDLE1BQU0sV0FBVyxHQUNoQjs7Ozs7Ozs7O1NBU08sQ0FBQTtJQUdSLFNBQVMsZ0JBQWdCLENBQUMsWUFBOEI7UUFDdkQsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFBLHVCQUFVLEVBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUUsT0FBTyxJQUFBLHVCQUFVLEVBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO0lBQ0YsQ0FBQztJQUdELEtBQUssVUFBVSxjQUFjLENBQUMsR0FBVztRQUN4QyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRCLElBQUksQ0FBQztZQUNKLE1BQU0sU0FBUyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsQ0FBQztZQUVo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
|