diff --git a/apps/easypid/src/agent/initialize.ts b/apps/easypid/src/agent/initialize.ts index 266b240a..e7fbf3e8 100644 --- a/apps/easypid/src/agent/initialize.ts +++ b/apps/easypid/src/agent/initialize.ts @@ -1,7 +1,8 @@ -import { setFallbackSecureEnvironment } from '@animo-id/expo-secure-environment' +import { setFallbackSecureEnvironment, shouldUseFallbackSecureEnvironment } from '@animo-id/expo-secure-environment' import { trustedX509Certificates } from '@easypid/constants' import { WalletServiceProviderClient } from '@easypid/crypto/WalletServiceProviderClient' import { initializeEasyPIDAgent } from '@package/agent' +import { getShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' export async function initializeAppAgent({ walletKey, @@ -29,6 +30,7 @@ export async function initializeAppAgent({ await wsp.createSalt() await wsp.register() } + if (getShouldUseCloudHsm()) shouldUseFallbackSecureEnvironment(true) setFallbackSecureEnvironment(wsp) return agent diff --git a/apps/easypid/src/app/(app)/_layout.tsx b/apps/easypid/src/app/(app)/_layout.tsx index c0736b8c..8cf7a792 100644 --- a/apps/easypid/src/app/(app)/_layout.tsx +++ b/apps/easypid/src/app/(app)/_layout.tsx @@ -9,6 +9,7 @@ import { type CredentialDataHandlerOptions, DeeplinkHandler, useHaptics } from ' import { HeroIcons, IconContainer } from '@package/ui' import { useEffect, useState } from 'react' import { useTheme } from 'tamagui' +import { WithBackgroundPidRefresh } from '../../features/pid/WithBackPidRefresh' const jsonRecordIds = [activityStorage.recordId] @@ -65,42 +66,44 @@ export default function AppLayout() { return ( - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + ) diff --git a/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts b/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts index dc68692e..27d0d5de 100644 --- a/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts +++ b/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts @@ -1,6 +1,5 @@ -import { MMKV, useMMKVBoolean } from 'react-native-mmkv' - -const mmkv = new MMKV() +import { useMMKVBoolean } from 'react-native-mmkv' +import { mmkv } from '../../storage/mmkv' export function useHasFinishedOnboarding() { return useMMKVBoolean('hasFinishedOnboarding', mmkv) diff --git a/apps/easypid/src/features/onboarding/onboardingContext.tsx b/apps/easypid/src/features/onboarding/onboardingContext.tsx index 9fe10af1..768238d9 100644 --- a/apps/easypid/src/features/onboarding/onboardingContext.tsx +++ b/apps/easypid/src/features/onboarding/onboardingContext.tsx @@ -13,7 +13,6 @@ import { type CardScanningState, type OnboardingPage, type OnboardingStep, - type PidFlowTypes, SIMULATOR_PIN, pidSetupSteps, } from '@easypid/utils/sharedPidSetup' @@ -36,6 +35,7 @@ import { OnboardingBiometrics } from './screens/biometrics' import { OnboardingIntroductionSteps } from './screens/introduction-steps' import OnboardingPinEnter from './screens/pin' import OnboardingWelcome from './screens/welcome' +import { useShouldUseCloudHsm } from './useShouldUseCloudHsm' export const onboardingSteps = [ { @@ -132,6 +132,7 @@ export function OnboardingContextProvider({ const [currentStepName, setCurrentStepName] = useState(initialStep ?? 'welcome') const router = useRouter() const [, setHasFinishedOnboarding] = useHasFinishedOnboarding() + const [shouldUseCloudHsm, setShouldUseCloudHsm] = useShouldUseCloudHsm() const pidDisplay = usePidDisplay() const [receivePidUseCase, setReceivePidUseCase] = useState() @@ -627,7 +628,15 @@ export function OnboardingContextProvider({ let screen: React.JSX.Element if (currentStep.step === 'welcome') { - screen = + screen = ( + { + // TODO: make configurable + // setShouldUseCloudHsm(true) + goToNextStep() + }} + /> + ) } else if (currentStep.step === 'pin' || currentStep.step === 'pin-reenter') { screen = ( { + if (!shouldUseCloudHsm) return {} + + let shouldRefreshSdJwt = false + if (sdJwt) { + const sdJwtBatch = getBatchCredentialMetadata(sdJwt) + if (sdJwtBatch) { + shouldRefreshSdJwt = sdJwtBatch.additionalCredentials.length <= batchThreshold + } + } + + let shouldRefreshMdoc = false + if (mdoc) { + const mdocBatch = getBatchCredentialMetadata(mdoc) + if (mdocBatch) { + shouldRefreshMdoc = mdocBatch.additionalCredentials.length <= batchThreshold + } + } + + return { + shouldRefreshSdJwt, + shouldRefreshMdoc, + } + }, [sdJwt, mdoc, batchThreshold, shouldUseCloudHsm]) + + useEffect(() => { + if (isRefreshing || !hasInternet || !shouldUseCloudHsm) return + + if (shouldRefreshMdoc || shouldRefreshSdJwt) { + setIsRefreshing(true) + + refreshPid({ + agent, + sdJwt: shouldRefreshSdJwt ? sdJwt : undefined, + mdoc: shouldRefreshMdoc ? mdoc : undefined, + }).finally(() => setIsRefreshing(false)) + } + }, [shouldRefreshMdoc, shouldRefreshSdJwt, hasInternet, agent, isRefreshing, mdoc, sdJwt, shouldUseCloudHsm]) +} diff --git a/apps/easypid/src/hooks/usePidCredential.tsx b/apps/easypid/src/hooks/usePidCredential.tsx index a3a60fbd..38856031 100644 --- a/apps/easypid/src/hooks/usePidCredential.tsx +++ b/apps/easypid/src/hooks/usePidCredential.tsx @@ -1,4 +1,4 @@ -import { ClaimFormat } from '@credo-ts/core' +import { ClaimFormat, MdocRecord, SdJwtVcRecord } from '@credo-ts/core' import { type CredentialForDisplayId, type CredentialMetadata, useCredentialsForDisplay } from '@package/agent' import { capitalizeFirstLetter, sanitizeString } from '@package/utils' import { useMemo } from 'react' @@ -386,13 +386,14 @@ export function usePidCredential() { attributesForDisplay: getPidAttributesForDisplay(attributes, claimFormat), metadata: pidCredential.metadata, metadataForDisplay: getPidMetadataAttributesForDisplay(attributes, pidCredential.metadata, ClaimFormat.SdJwtVc), + record: pidCredential.record, } }) }, [credentials]) if (isLoading) { return { - credential: undefined, + credentials: undefined, isLoading: true, } as const } @@ -402,6 +403,9 @@ export function usePidCredential() { pidCredentialForDisplay: pidCredentials[0] as (typeof pidCredentials)[number] | undefined, credentialIds: pidCredentials.map((p) => p.id), credentials: pidCredentials, + mdoc: pidCredentials.find((c): c is typeof c & { record: MdocRecord } => c.record instanceof MdocRecord)?.record, + sdJwt: pidCredentials.find((c): c is typeof c & { record: SdJwtVcRecord } => c.record instanceof SdJwtVcRecord) + ?.record, } as const } diff --git a/apps/easypid/src/storage/mmkv.ts b/apps/easypid/src/storage/mmkv.ts new file mode 100644 index 00000000..d22cf8fb --- /dev/null +++ b/apps/easypid/src/storage/mmkv.ts @@ -0,0 +1,3 @@ +import { MMKV } from 'react-native-mmkv' + +export const mmkv = new MMKV() diff --git a/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts b/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts index f7949314..3d0fc251 100644 --- a/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts +++ b/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts @@ -6,22 +6,32 @@ import { type SdJwtVcRecord, receiveCredentialFromOpenId4VciOffer, resolveOpenId4VciOffer, + setRefreshCredentialMetadata, storeCredential, } from '@package/agent' +import { getShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' import { ReceivePidUseCaseFlow, type ReceivePidUseCaseFlowOptions } from './ReceivePidUseCaseFlow' -import { C_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' +import { C_PRIME_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' export class ReceivePidUseCaseCFlow extends ReceivePidUseCaseFlow { public static async initialize(options: ReceivePidUseCaseFlowOptions) { const resolved = await resolveOpenId4VciOffer({ agent: options.agent, - offer: { uri: C_SD_JWT_MDOC_OFFER }, + offer: { uri: C_PRIME_SD_JWT_MDOC_OFFER }, authorization: { clientId: ReceivePidUseCaseCFlow.CLIENT_ID, redirectUri: ReceivePidUseCaseCFlow.REDIRECT_URI, }, }) + // NOTE: the bdr pid issuer does not include in their metadata that they support batch while they do support is + // and Credo checks for this. We modify the metadata so we can still use batch issuance + if (!resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance) { + resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance = { + batch_size: 10, + } + } + if ( !resolved.resolvedAuthorizationRequest || resolved.resolvedAuthorizationRequest.authorizationFlow === OpenId4VciAuthorizationFlow.PresentationDuringIssuance @@ -57,17 +67,28 @@ export class ReceivePidUseCaseCFlow extends ReceivePidUseCaseFlow { resolvedCredentialOffer: this.resolvedCredentialOffer, credentialConfigurationIdsToRequest, clientId: ReceivePidUseCaseCFlow.CLIENT_ID, + requestBatch: getShouldUseCloudHsm() ? 10 : false, pidSchemes, }) const credentialRecords: Array = [] for (const credentialResponse of credentialResponses) { const credentialRecord = credentialResponse.credential - if (typeof credentialRecord === 'string') throw new Error('No string expected for c flow') + if (credentialRecord.type !== 'SdJwtVcRecord' && credentialRecord.type !== 'MdocRecord') { throw new Error(`Unexpected record type ${credentialRecord.type}`) } + // It seems the refresh token can be re-used, so we store it on all the records + if (this.accessToken.accessTokenResponse.refresh_token) { + setRefreshCredentialMetadata(credentialRecord, { + refreshToken: this.accessToken.accessTokenResponse.refresh_token, + dpop: this.accessToken.dpop + ? { alg: this.accessToken.dpop.alg, jwk: this.accessToken.dpop.jwk.toJson() } + : undefined, + }) + } + credentialRecords.push(credentialRecord) await storeCredential(this.options.agent, credentialRecord) } diff --git a/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts b/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts new file mode 100644 index 00000000..f0e6c024 --- /dev/null +++ b/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts @@ -0,0 +1,124 @@ +import { ClaimFormat, MdocRecord, getJwkFromJson } from '@credo-ts/core' +import type { AppAgent } from '@easypid/agent' +import { + type OpenId4VciRequestTokenResponse, + type OpenId4VciResolvedCredentialOffer, + SdJwtVcRecord, + acquireRefreshTokenAccessToken, + getRefreshCredentialMetadata, + receiveCredentialFromOpenId4VciOffer, + resolveOpenId4VciOffer, + setRefreshCredentialMetadata, + storeCredential, +} from '@package/agent' +import { pidSchemes } from '../constants' +import { ReceivePidUseCaseFlow } from './ReceivePidUseCaseFlow' +import { C_PRIME_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' + +export interface RefreshPidUseCaseOptions { + agent: AppAgent +} + +export class RefreshPidUseCase { + protected options: RefreshPidUseCaseOptions + + public resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer + protected accessToken?: OpenId4VciRequestTokenResponse + + static REDIRECT_URI = ReceivePidUseCaseFlow.REDIRECT_URI + static CLIENT_ID = ReceivePidUseCaseFlow.CLIENT_ID + + public static async initialize(options: RefreshPidUseCaseOptions) { + const resolved = await resolveOpenId4VciOffer({ + agent: options.agent, + offer: { uri: C_PRIME_SD_JWT_MDOC_OFFER }, + fetchAuthorization: false, + }) + + if (!resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance) { + // NOTE: the bdr pid issuer does not include in their metadata that they support batch while they do support is + // and Credo checks for this. We modify the metadata so we can still use batch issuance + resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance = { + batch_size: 10, + } + } + + return new RefreshPidUseCase(options, resolved.resolvedCredentialOffer) + } + + protected constructor(options: RefreshPidUseCaseOptions, resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer) { + this.resolvedCredentialOffer = resolvedCredentialOffer + this.options = options + } + + public async retrieveCredentialsUsingExistingRecords({ + sdJwt, + mdoc, + }: { + sdJwt?: SdJwtVcRecord + mdoc?: MdocRecord + }) { + const existingRefreshMetadata = + (sdJwt ? getRefreshCredentialMetadata(sdJwt) : undefined) ?? + (mdoc ? getRefreshCredentialMetadata(mdoc) : undefined) + + if (!existingRefreshMetadata) { + throw new Error('Refresh metadata must be available for refresh') + } + + const accessToken = await acquireRefreshTokenAccessToken({ + agent: this.options.agent, + clientId: ReceivePidUseCaseFlow.CLIENT_ID, + resolvedCredentialOffer: this.resolvedCredentialOffer, + authorizationServer: this.resolvedCredentialOffer.metadata.authorizationServers[0].issuer, + refreshToken: existingRefreshMetadata?.refreshToken, + dpop: existingRefreshMetadata?.dpop + ? { alg: existingRefreshMetadata.dpop.alg, jwk: getJwkFromJson(existingRefreshMetadata.dpop.jwk) } + : undefined, + }) + + const limitToFormats: string[] = [] + if (mdoc) limitToFormats.push(ClaimFormat.MsoMdoc) + if (sdJwt) limitToFormats.push(ClaimFormat.SdJwtVc) + + const credentialConfigurationIdsToRequest = Object.entries( + this.resolvedCredentialOffer.offeredCredentialConfigurations + ) + .filter(([, configuration]) => limitToFormats.includes(configuration.format)) + .map(([id]) => id) + + const credentialResponses = await receiveCredentialFromOpenId4VciOffer({ + agent: this.options.agent, + accessToken, + resolvedCredentialOffer: this.resolvedCredentialOffer, + credentialConfigurationIdsToRequest, + clientId: RefreshPidUseCase.CLIENT_ID, + requestBatch: 10, + pidSchemes, + }) + + const credentialRecords: Array = [] + for (const credentialResponse of credentialResponses) { + const credentialRecord = credentialResponse.credential + + if (credentialRecord.type !== 'SdJwtVcRecord' && credentialRecord.type !== 'MdocRecord') { + throw new Error(`Unexpected record type ${credentialRecord.type}`) + } + + // No refresh token is issued for the refresh access token so we take the existing refresh metadata + setRefreshCredentialMetadata(credentialRecord, existingRefreshMetadata) + + if (credentialRecord instanceof SdJwtVcRecord && sdJwt) { + credentialRecords.push(credentialRecord) + await storeCredential(this.options.agent, credentialRecord) + await this.options.agent.sdJwtVc.deleteById(sdJwt.id) + } else if (credentialRecord instanceof MdocRecord && mdoc) { + credentialRecords.push(credentialRecord) + await storeCredential(this.options.agent, credentialRecord) + await this.options.agent.mdoc.deleteById(mdoc.id) + } + } + + return credentialRecords + } +} diff --git a/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts b/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts index 0f9d32a4..dc71f633 100644 --- a/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts +++ b/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts @@ -4,5 +4,9 @@ export const B_PRIME_SD_JWT_VC_OFFER = export const C_SD_JWT_MDOC_OFFER = 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%2C%20%22pid-mso-mdoc%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' +// issues refresh_token +export const C_PRIME_SD_JWT_MDOC_OFFER = + 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc1%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%2C%20%22pid-mso-mdoc%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' + export const C_SD_JWT_OFFER = 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' diff --git a/apps/easypid/src/utils/resetWallet.ts b/apps/easypid/src/utils/resetWallet.ts index c1864097..157730c5 100644 --- a/apps/easypid/src/utils/resetWallet.ts +++ b/apps/easypid/src/utils/resetWallet.ts @@ -9,6 +9,7 @@ import { removeHasFinishedOnboarding, removeHasSeenIntroTooltip, } from '@easypid/features/onboarding/hasFinishedOnboarding' +import { removeShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' export async function resetWallet(secureUnlock: SecureUnlockReturn) { if (secureUnlock.state === 'unlocked') { @@ -33,6 +34,7 @@ export async function resetWallet(secureUnlock: SecureUnlockReturn | string): W3cVerifiableCredential { + return typeof credential === 'string' + ? W3cJwtVerifiableCredential.fromSerializedJwt(credential) + : W3cJsonLdVerifiableCredential.fromJson(credential) +} + export function encodeCredential(credential: VerifiableCredential): Record | string { const credentialResult = credentialWithClaimFormat(credential) diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 3518dc99..3d695132 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -2,11 +2,16 @@ import 'react-native-get-random-values' import 'fast-text-encoding' import { Buffer } from '@credo-ts/core' +export { + setRefreshCredentialMetadata, + RefreshCredentialMetadata, + getRefreshCredentialMetadata, +} from './openid4vc/refreshMetadata' // @ts-ignore global.Buffer = Buffer -export type { OpenId4VciTxCode } from '@credo-ts/openid4vc' +export type { OpenId4VciTxCode, OpenId4VciDpopRequestOptions } from '@credo-ts/openid4vc' export { initializeFullAgent, initializeEasyPIDAgent, diff --git a/packages/agent/src/invitation/handler.ts b/packages/agent/src/invitation/handler.ts index 001bf469..a32f534c 100644 --- a/packages/agent/src/invitation/handler.ts +++ b/packages/agent/src/invitation/handler.ts @@ -2,9 +2,6 @@ import type { ConnectionRecord, CredentialStateChangedEvent, DifPexCredentialsForRequest, - JwkDidCreateOptions, - Key, - KeyDidCreateOptions, OutOfBandInvitation, OutOfBandRecord, P256Jwk, @@ -14,10 +11,12 @@ import type { PlaintextMessage } from '@credo-ts/core/build/types' import type { OpenId4VcSiopVerifiedAuthorizationRequest, OpenId4VciCredentialConfigurationSupportedWithFormats, + OpenId4VciDpopRequestOptions, OpenId4VciRequestTokenResponse, OpenId4VciResolvedAuthorizationRequest, OpenId4VciResolvedCredentialOffer, } from '@credo-ts/openid4vc' +import { getOid4vciCallbacks } from '@credo-ts/openid4vc/build/shared/callbacks' import { Linking } from 'react-native' import type { EitherAgent, FullAppAgent } from '../agent' @@ -25,28 +24,20 @@ import { V1OfferCredentialMessage, V1RequestPresentationMessage } from '@credo-t import { CredentialEventTypes, CredentialState, + Hasher, JwaSignatureAlgorithm, Jwt, - KeyBackend, - KeyType, - Mdoc, - MdocRecord, - MdocRepository, OutOfBandRepository, ProofEventTypes, ProofState, - type SdJwtVcRecord, - SdJwtVcRepository, V2OfferCredentialMessage, V2RequestPresentationMessage, - W3cCredentialRecord, - W3cCredentialRepository, X509ModuleConfig, - getJwkFromKey, parseMessageType, } from '@credo-ts/core' import { supportsIncomingMessageType } from '@credo-ts/core/build/utils/messageType' import { + OpenId4VciHolderService, getOfferedCredentials, getScopesFromCredentialConfigurationsSupported, preAuthorizedCodeGrantIdentifier, @@ -54,10 +45,11 @@ import { import { getHostNameFromUrl } from '@package/utils' import { filter, first, firstValueFrom, merge, timeout } from 'rxjs' +import { Oauth2Client, getAuthorizationServerMetadataFromList } from '@animo-id/oauth2' import q from 'query-string' +import { handleBatchCredential } from '../batch' import { credentialRecordFromCredential, encodeCredential } from '../format/credentialEncoding' import { formatDifPexCredentialsForRequest } from '../format/formatPresentation' -import type { CredentialForDisplayId } from '../hooks' import { setBatchCredentialMetadata } from '../openid4vc/batchMetadata' import { getCredentialBindingResolver } from '../openid4vc/credentialBindingResolver' import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata } from '../openid4vc/displayMetadata' @@ -69,11 +61,13 @@ export async function resolveOpenId4VciOffer({ offer, authorization, customHeaders, + fetchAuthorization = true, }: { agent: EitherAgent offer: { data?: string; uri?: string } authorization?: { clientId: string; redirectUri: string } customHeaders?: Record + fetchAuthorization?: boolean }) { let offerUri = offer.uri @@ -95,7 +89,7 @@ export async function resolveOpenId4VciOffer({ let resolvedAuthorizationRequest: OpenId4VciResolvedAuthorizationRequest | undefined = undefined // NOTE: we always assume scopes are used at the moment - if (resolvedCredentialOffer.credentialOfferPayload.grants?.authorization_code) { + if (fetchAuthorization && resolvedCredentialOffer.credentialOfferPayload.grants?.authorization_code) { // If only authorization_code grant is valid and user didn't provide authorization details we can't continue if (!resolvedCredentialOffer.credentialOfferPayload.grants[preAuthorizedCodeGrantIdentifier] && !authorization) { throw new Error( @@ -168,6 +162,54 @@ export async function acquireAuthorizationCodeUsingPresentation({ }) } +export async function acquireRefreshTokenAccessToken({ + authorizationServer, + resolvedCredentialOffer, + agent, + clientId, + refreshToken, + dpop, +}: { + agent: EitherAgent + resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer + authorizationServer: string + clientId: string + refreshToken: string + dpop?: OpenId4VciDpopRequestOptions +}): Promise { + const oauth2Client = new Oauth2Client({ callbacks: getOid4vciCallbacks(agent.context) }) + + // TODO: dpop retry also for this method + const accessTokenResponse = await oauth2Client.retrieveRefreshTokenAccessToken({ + refreshToken, + resource: resolvedCredentialOffer.credentialOfferPayload.credential_issuer, + authorizationServerMetadata: getAuthorizationServerMetadataFromList( + resolvedCredentialOffer.metadata.authorizationServers, + authorizationServer + ), + additionalRequestPayload: { + client_id: clientId, + }, + dpop: dpop + ? { + nonce: dpop.nonce, + signer: { + method: 'jwk', + alg: dpop.alg, + publicJwk: dpop.jwk.toJson(), + }, + } + : undefined, + }) + + return { + accessToken: accessTokenResponse.accessTokenResponse.access_token, + cNonce: accessTokenResponse.accessTokenResponse.c_nonce, + dpop: dpop ? { ...dpop, nonce: accessTokenResponse.dpop?.nonce } : undefined, + accessTokenResponse: accessTokenResponse.accessTokenResponse, + } +} + export async function acquireAuthorizationCodeAccessToken({ resolvedCredentialOffer, agent, @@ -199,12 +241,14 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ accessToken, clientId, pidSchemes, + requestBatch, }: { agent: EitherAgent resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer credentialConfigurationIdsToRequest?: string[] clientId?: string pidSchemes?: { sdJwtVcVcts: Array; msoMdocDoctypes: Array } + requestBatch?: boolean | number // TODO: cNonce should maybe be provided separately (multiple calls can have different c_nonce values) accessToken: OpenId4VciRequestTokenResponse @@ -229,6 +273,7 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ clientId, credentialConfigurationIds: Object.keys(offeredCredentialsToRequest), verifyCredentialStatus: false, + requestBatch, allowedProofOfPossessionSignatureAlgorithms: [ // NOTE: MATTR launchpad for JFF MUST use EdDSA. So it is important that the default (first allowed one) // is EdDSA. The list is ordered by preference, so if no suites are defined by the issuer, the first one @@ -248,14 +293,6 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ ] as OpenId4VciCredentialConfigurationSupportedWithFormats const firstCredential = credentials[0] - if (typeof firstCredential === 'string') { - return { - ...credentialResponse, - configuration, - credential: firstCredential, - } - } - const record = credentialRecordFromCredential(firstCredential) // OpenID4VC metadata @@ -474,20 +511,25 @@ export const shareProof = async ({ // input descriptor has been provided in `selectedCredentials` we will use that. Otherwise // it will pick the first available credential. const credentials = Object.fromEntries( - credentialsForRequest.requirements.flatMap((requirement) => - requirement.submissionEntry.map((entry) => { - const credentialId = selectedCredentials[entry.inputDescriptorId] - const credential = - entry.verifiableCredentials.find((vc) => vc.credentialRecord.id === credentialId) ?? - entry.verifiableCredentials[0] - - return [entry.inputDescriptorId, [credential.credentialRecord]] - }) + await Promise.all( + credentialsForRequest.requirements.flatMap((requirement) => + requirement.submissionEntry.map(async (entry) => { + const credentialId = selectedCredentials[entry.inputDescriptorId] + const credential = + entry.verifiableCredentials.find((vc) => vc.credentialRecord.id === credentialId) ?? + entry.verifiableCredentials[0] + + // Optionally use a batch credential + const credentialRecord = await handleBatchCredential(agent, credential.credentialRecord) + + return [entry.inputDescriptorId, [credentialRecord]] as [string, (typeof credentialRecord)[]] + }) + ) ) ) try { - // Temp solution to add and remove the trusted certicaite + // Temp solution to add and remove the trusted certificate const certificate = authorizationRequest.jwt && allowUntrustedCertificate ? extractCertificateFromJwt(authorizationRequest.jwt) : null @@ -519,32 +561,6 @@ export const shareProof = async ({ } } -export async function storeCredential( - agent: EitherAgent, - credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord -) { - if (credentialRecord instanceof W3cCredentialRecord) { - await agent.dependencyManager.resolve(W3cCredentialRepository).save(agent.context, credentialRecord) - } else if (credentialRecord instanceof MdocRecord) { - await agent.dependencyManager.resolve(MdocRepository).save(agent.context, credentialRecord) - } else { - await agent.dependencyManager.resolve(SdJwtVcRepository).save(agent.context, credentialRecord) - } -} - -export async function deleteCredential(agent: EitherAgent, credentialId: CredentialForDisplayId) { - if (credentialId.startsWith('w3c-credential-')) { - const w3cCredentialId = credentialId.replace('w3c-credential-', '') - await agent.w3cCredentials.removeCredentialRecord(w3cCredentialId) - } else if (credentialId.startsWith('sd-jwt-vc')) { - const sdJwtVcId = credentialId.replace('sd-jwt-vc-', '') - await agent.sdJwtVc.deleteById(sdJwtVcId) - } else if (credentialId.startsWith('mdoc-')) { - const mdocId = credentialId.replace('mdoc-', '') - await agent.mdoc.deleteById(mdocId) - } -} - /** * @todo we probably need a way to cancel this method, if the qr scanner is .e.g dismissed. */ diff --git a/packages/agent/src/invitation/index.ts b/packages/agent/src/invitation/index.ts index 6f6412c4..4908fe99 100644 --- a/packages/agent/src/invitation/index.ts +++ b/packages/agent/src/invitation/index.ts @@ -31,12 +31,11 @@ export { receiveOutOfBandInvitation, receiveCredentialFromOpenId4VciOffer, acquireAuthorizationCodeAccessToken, + acquireRefreshTokenAccessToken, acquirePreAuthorizedAccessToken, resolveOpenId4VciOffer, - storeCredential, getCredentialsForProofRequest, shareProof, - deleteCredential, withTrustedCertificate, acquireAuthorizationCodeUsingPresentation, } from './handler' diff --git a/packages/agent/src/openid4vc/refreshMetadata.ts b/packages/agent/src/openid4vc/refreshMetadata.ts new file mode 100644 index 00000000..af50392a --- /dev/null +++ b/packages/agent/src/openid4vc/refreshMetadata.ts @@ -0,0 +1,29 @@ +import type { JwaSignatureAlgorithm, JwkJson, MdocRecord, SdJwtVcRecord, W3cCredentialRecord } from '@credo-ts/core' + +export interface RefreshCredentialMetadata { + refreshToken: string + dpop?: { alg: JwaSignatureAlgorithm; jwk: JwkJson } +} + +const refreshCredentialMetadataKey = '_paradym/refreshCredentialMetadata' + +/** + * Gets the refresh credential metadata from the given credential record. + */ +export function getRefreshCredentialMetadata( + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +): RefreshCredentialMetadata | null { + return credentialRecord.metadata.get(refreshCredentialMetadataKey) +} + +/** + * Sets the refresh credential metadata on the given credential record + * + * NOTE: this does not save the record. + */ +export function setRefreshCredentialMetadata( + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord, + metadata: RefreshCredentialMetadata +) { + credentialRecord.metadata.set(refreshCredentialMetadataKey, metadata) +} diff --git a/packages/agent/src/storage/credential.ts b/packages/agent/src/storage/credential.ts new file mode 100644 index 00000000..ef2b8617 --- /dev/null +++ b/packages/agent/src/storage/credential.ts @@ -0,0 +1,48 @@ +import { + MdocRecord, + MdocRepository, + type SdJwtVcRecord, + SdJwtVcRepository, + W3cCredentialRecord, + W3cCredentialRepository, +} from '@credo-ts/core' +import type { EitherAgent } from '../agent' +import type { CredentialForDisplayId } from '../hooks' + +export async function updateCredential( + agent: EitherAgent, + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +) { + if (credentialRecord instanceof W3cCredentialRecord) { + await agent.dependencyManager.resolve(W3cCredentialRepository).update(agent.context, credentialRecord) + } else if (credentialRecord instanceof MdocRecord) { + await agent.dependencyManager.resolve(MdocRepository).update(agent.context, credentialRecord) + } else { + await agent.dependencyManager.resolve(SdJwtVcRepository).update(agent.context, credentialRecord) + } +} +export async function storeCredential( + agent: EitherAgent, + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +) { + if (credentialRecord instanceof W3cCredentialRecord) { + await agent.dependencyManager.resolve(W3cCredentialRepository).save(agent.context, credentialRecord) + } else if (credentialRecord instanceof MdocRecord) { + await agent.dependencyManager.resolve(MdocRepository).save(agent.context, credentialRecord) + } else { + await agent.dependencyManager.resolve(SdJwtVcRepository).save(agent.context, credentialRecord) + } +} + +export async function deleteCredential(agent: EitherAgent, credentialId: CredentialForDisplayId) { + if (credentialId.startsWith('w3c-credential-')) { + const w3cCredentialId = credentialId.replace('w3c-credential-', '') + await agent.w3cCredentials.removeCredentialRecord(w3cCredentialId) + } else if (credentialId.startsWith('sd-jwt-vc')) { + const sdJwtVcId = credentialId.replace('sd-jwt-vc-', '') + await agent.sdJwtVc.deleteById(sdJwtVcId) + } else if (credentialId.startsWith('mdoc-')) { + const mdocId = credentialId.replace('mdoc-', '') + await agent.mdoc.deleteById(mdocId) + } +} diff --git a/packages/agent/src/storage/index.ts b/packages/agent/src/storage/index.ts index 24ae6d9f..4cb8d5b2 100644 --- a/packages/agent/src/storage/index.ts +++ b/packages/agent/src/storage/index.ts @@ -1,2 +1,3 @@ export * from './walletJsonStore' export * from './WalletJsonStoreProvider' +export * from './credential' diff --git a/packages/app/src/provider/Provider.tsx b/packages/app/src/provider/Provider.tsx index 5d333478..d4ceaf10 100644 --- a/packages/app/src/provider/Provider.tsx +++ b/packages/app/src/provider/Provider.tsx @@ -14,7 +14,7 @@ export function Provider({ children, ...rest }: PropsWithChildren - + {children} diff --git a/patches/@credo-ts__askar@0.6.0-alpha-20241120125910.patch b/patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch similarity index 100% rename from patches/@credo-ts__askar@0.6.0-alpha-20241120125910.patch rename to patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f2449fc..6b5772fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,17 +11,20 @@ overrides: '@hyperledger/anoncreds-react-native': ^0.2.4 '@hyperledger/aries-askar-react-native': ^0.2.3 '@hyperledger/indy-vdr-react-native': ^0.2.0 - '@credo-ts/anoncreds': 0.6.0-alpha-20241120125910 - '@credo-ts/askar': 0.6.0-alpha-20241120125910 - '@credo-ts/cheqd': 0.6.0-alpha-20241120125910 - '@credo-ts/core': 0.6.0-alpha-20241120125910 - '@credo-ts/indy-vdr': 0.6.0-alpha-20241120125910 - '@credo-ts/openid4vc': 0.6.0-alpha-20241120125910 - '@credo-ts/question-answer': 0.6.0-alpha-20241120125910 - '@credo-ts/react-native': 0.6.0-alpha-20241120125910 + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226 + '@credo-ts/askar': 0.6.0-alpha-20241120153226 + '@credo-ts/cheqd': 0.6.0-alpha-20241120153226 + '@credo-ts/core': 0.6.0-alpha-20241120153226 + '@credo-ts/indy-vdr': 0.6.0-alpha-20241120153226 + '@credo-ts/openid4vc': 0.6.0-alpha-20241120153226 + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226 + '@credo-ts/react-native': 0.6.0-alpha-20241120153226 '@credo-ts/react-hooks': 0.6.1 '@animo-id/expo-ausweis-sdk': 0.0.1-alpha.14 - '@animo-id/expo-secure-environment': 0.1.0-alpha.9 + '@animo-id/oid4vci': 0.1.4-alpha-20241120145259 + '@animo-id/oauth2': 0.1.4-alpha-20241120145259 + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259 + '@animo-id/expo-secure-environment': 0.1.0-alpha.10 '@animo-id/expo-mdoc-data-transfer': 0.0.3-alpha.7 '@types/react': ~18.2.79 react-docgen-typescript: 2.2.2 @@ -32,9 +35,9 @@ patchedDependencies: '@animo-id/mdoc@0.2.38': hash: zifb323ygrtdb6olnw5okh7czy path: patches/@animo-id__mdoc@0.2.38.patch - '@credo-ts/askar@0.6.0-alpha-20241120125910': + '@credo-ts/askar@0.6.0-alpha-20241120153226': hash: zbu2rcss5evxukkhh5w5venkba - path: patches/@credo-ts__askar@0.6.0-alpha-20241120125910.patch + path: patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch '@hyperledger/indy-vdr-react-native@0.2.2': hash: jtxhiuxe2e3i7qwlurpufqwh5a path: patches/@hyperledger__indy-vdr-react-native@0.2.2.patch @@ -62,11 +65,11 @@ importers: specifier: 0.0.3-alpha.7 version: 0.0.3-alpha.7(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react@18.3.1) '@animo-id/expo-secure-environment': - specifier: 0.1.0-alpha.9 - version: 0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + specifier: 0.1.0-alpha.10 + version: 0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) '@credo-ts/core': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@expo-google-fonts/open-sans': specifier: ^0.2.3 version: 0.2.3 @@ -231,8 +234,8 @@ importers: apps/paradym: dependencies: '@animo-id/expo-secure-environment': - specifier: 0.1.0-alpha.9 - version: 0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + specifier: 0.1.0-alpha.10 + version: 0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) '@hyperledger/anoncreds-react-native': specifier: ^0.2.4 version: 0.2.4(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) @@ -529,33 +532,39 @@ importers: packages/agent: dependencies: + '@animo-id/oauth2': + specifier: 0.1.4-alpha-20241120145259 + version: 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oid4vci': + specifier: 0.1.4-alpha-20241120145259 + version: 0.1.4-alpha-20241120145259(typescript@5.3.3) '@credo-ts/anoncreds': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/askar': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/cheqd': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/core': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/indy-vdr': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/openid4vc': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/question-answer': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/react-hooks': specifier: 0.6.1 - version: 0.6.1(@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1) + version: 0.6.1(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1) '@credo-ts/react-native': - specifier: 0.6.0-alpha-20241120125910 - version: 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-react-native': specifier: ^0.2.4 version: 0.2.4(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) @@ -573,7 +582,7 @@ importers: version: 5.59.16(react@18.3.1) credo-ts-didweb-anoncreds: specifier: 0.0.1-alpha.13 - version: 0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4) + version: 0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4) expo: specifier: '*' version: 51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) @@ -775,8 +784,8 @@ packages: expo: '>= 51' react: 18.3.1 - '@animo-id/expo-secure-environment@0.1.0-alpha.9': - resolution: {integrity: sha512-PUNwemorocBwHfvDoB4tzv6nDlxobDetsbyqeSnQCDdrapKHIubdtEaWNlrzRhiKqSCg9dWwhQdCmTE9pY0ilw==} + '@animo-id/expo-secure-environment@0.1.0-alpha.10': + resolution: {integrity: sha512-ZnEnayIbjDarLizdT1FDhx1N00kObEs8uT+X60zattWXufrhaetlHZwMI2mK8eqK1bdiyVE/g0Gd+BcfinU4Jw==} peerDependencies: expo: '*' react: 18.3.1 @@ -785,14 +794,14 @@ packages: '@animo-id/mdoc@0.2.38': resolution: {integrity: sha512-98KQ0jvwTYsFOffTGvvHXBDo23b5xmhYjPiMIX6e807I6iS4fZZ9ypfBySdA5IiGUvXELKqEv27AUaayQa/9bg==} - '@animo-id/oauth2-utils@0.1.3': - resolution: {integrity: sha512-PzAx57LbDmmhI1qnF6Y/soYHLyHXxheSzlle+8rHexZmnWHXwxJ5nyOn/EQhGOqk5UEXLHYsD+27oyrMH3iR4A==} + '@animo-id/oauth2-utils@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-gbc2bOpnM101KTmVtZJwbo9IAn3bn5Ah1UMUdQbdxD8M2DPAMuvM1j4JxVsIn46DGoPUWW0uGspGXAjxFv2x5g==} - '@animo-id/oauth2@0.1.3': - resolution: {integrity: sha512-e4i+9nn3hyaxJ5LFTRb8Ri43VCAN5xpOvD0o2DcL6U90Y5ih3L+GVU6pzYylwk0iX/VD/HCMayDvF9qusDBh4w==} + '@animo-id/oauth2@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-w3lCkPh0I15Nbq0RZvQTBreDLcsIicCXmeNRUQx3xrrd25+GSaBoIMQel299I07ozDjDn9VptMCJGXNSSNBMyw==} - '@animo-id/oid4vci@0.1.3': - resolution: {integrity: sha512-01ka6sIQUVXNcrw6/fcWCbFpso60bb9Ejv4WUunA/7pGiowdzmmf4aaMRd2em/v5riRpo2tsIqv23SAbyTl41A==} + '@animo-id/oid4vci@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-OkqVn2XSlyMYZV+WyPcjh7Iz9dJx6ZTYlMiIc4/qM3j5cQeVf70wKwVZLzBLMrdiQWBw2l+AC7cPtTjl25F/MA==} '@astronautlabs/jsonpath@1.1.2': resolution: {integrity: sha512-FqL/muoreH7iltYC1EB5Tvox5E8NSOOPGkgns4G+qxRKl6k5dxEVljUjB5NcKESzkqwnUqWjSZkL61XGYOuV+A==} @@ -1682,46 +1691,46 @@ packages: '@cosmjs/utils@0.30.1': resolution: {integrity: sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==} - '@credo-ts/anoncreds@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-yioNElzg66YI+9ydsHNSAvtkWwJ8sMOC3Jf9GhIAUApvNaj6bDQXumo4uNfeS7uD5fVjwlC+Nt7C9HWA/YLLMA==} + '@credo-ts/anoncreds@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-9E1iQGqzdGGoELuoysSymJ9ZBkF4aZkok6HDqs6h3kJB1qHgBPw005SVHXN0+5ABVxJJo9/C7ENAEv5VAZ+2KQ==} peerDependencies: '@hyperledger/anoncreds-shared': ^0.2.2 - '@credo-ts/askar@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-vaBQZTufTSprSIWr+JUObIjOTwDcaeErMEWg1u0mOvXO+9NviAThGfb6tJAziKjmWnWJSaYc0KO4zAjcgOE1wQ==} + '@credo-ts/askar@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-oTIjsSON8uWHnFQueOMTVuv8uXbOo+xJ/QxIs8znmbMRiCTsDPDxHTlMOAmpXPv62yknSKPjRPkjzgeUg8X6JQ==} peerDependencies: - '@animo-id/expo-secure-environment': 0.1.0-alpha.9 + '@animo-id/expo-secure-environment': 0.1.0-alpha.10 '@hyperledger/aries-askar-shared': ^0.2.3 peerDependenciesMeta: '@animo-id/expo-secure-environment': optional: true - '@credo-ts/cheqd@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-krSWNtoGoHcz3XrnZckzSRG9/TYJcGycU6vPRb5v0B+ho2rTR1x7/RIVtDpa2VwhRWJwY89pD7LKM/LkIm7dag==} + '@credo-ts/cheqd@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-VVuxM0kutWyQbaimOHVMuiJ4nqEQkQOYyPg7RbWX4LOwSxWnxIOzTzhhm5j6xUJ6yGu7T8lcvI8Hx3zLVDzFiw==} - '@credo-ts/core@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-Zx+pse/A1qD22Q2+Nq8l19Xs2xIOTY8CjPRW6xbw44eDnaUjY7IuClfw4hUly6zvkqQKDc5YJK8Wv3LlFDNvPQ==} + '@credo-ts/core@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-j0my549nfyo+AizUkgvMWLcAbBtd41WhXRLfSHlfr7cZlNc4CmPSV9BUKjmeBoPGW9kWl778GlhWt4sCdxvkhA==} - '@credo-ts/indy-vdr@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-j58ojHvfftX3UdG+oYfPNnCmVfxHjuZamNqdaqnmDzfurXkdBAHffS6JbuWMSRiJCn7nd8z1neeKL/2j6SouMQ==} + '@credo-ts/indy-vdr@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-rYkXp2754hbKz4UUC5UNy3N6tPfB9rHrZildGo0qXuKCGhJZpJ7Ut96LT3VcoPRPvXw4nmSMniiCusYaeEd2fQ==} peerDependencies: '@hyperledger/indy-vdr-shared': ^0.2.2 - '@credo-ts/openid4vc@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-eVzctHKt6SSEXkR6etMPLG4/Z3jIVsp0cPdSWlZ5nAHhLJ02bR3/WMGgd+V0UllgUtINW9MJbKpeSf/6V1UzKw==} + '@credo-ts/openid4vc@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-GWE1bZqc1TDXCidGnpy+lyo0UVhIgD3xaoytYj4Z8iYF7B+m6BFU0zw1yFtiEFxRn25+vTLeYw+KVVzVLlyOww==} - '@credo-ts/question-answer@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-e94sNywciz6gaiB/fCj5/z9POGdVWC9JBeLTNs4YLF9p1hUXRpMHbNh1OSLqRMv9UPlKjOIdpAcwr2hWJfmOvw==} + '@credo-ts/question-answer@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-ZlGrPYs2sP51IIgMpG6YZ27KHEhDIdBScvMl2HtxjkveRX3zoZmU9nq2W74xL4alHHTPTGT83YnIXVpTdkDJ6w==} '@credo-ts/react-hooks@0.6.1': resolution: {integrity: sha512-lZt1N5oKzYfh9DMUBauX9Q2irJPxbztfK9zkYU93mhSV7jF5up0X/TdWxj85l9Guu7iL84JDQJY11CpIHquPOQ==} peerDependencies: - '@credo-ts/core': 0.6.0-alpha-20241120125910 - '@credo-ts/question-answer': 0.6.0-alpha-20241120125910 + '@credo-ts/core': 0.6.0-alpha-20241120153226 + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226 react: 18.3.1 - '@credo-ts/react-native@0.6.0-alpha-20241120125910': - resolution: {integrity: sha512-YOB++UirV77p8Sy1geSI189YBamGMrrDbevXpuMU6+UX2DOYjNq7y1ONba8lHVUu63PGuYOYAo770nQGuhDXOw==} + '@credo-ts/react-native@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-VvSb/SX02w+fQ6d4Uqb8zzLIX4ocDd6YRbOvHEAIoL3tZoaYAkdsNk8E4WmKK2mG83uCY0HBfqqwroPIa3FrYw==} peerDependencies: react-native: ~0.74.5 react-native-fs: ^2.20.0 @@ -4594,9 +4603,6 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@18.18.8': - resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==} - '@types/node@18.19.63': resolution: {integrity: sha512-hcUB7THvrGmaEcPcvUZCZtQ2Z3C+UR/aOcraBLCvTsFMh916Gc1kCCYcfcMuB76HM2pSerxl1PoP3KnmHzd9Lw==} @@ -5616,8 +5622,8 @@ packages: credo-ts-didweb-anoncreds@0.0.1-alpha.13: resolution: {integrity: sha512-0x8lipY82+ALdTu+gVRe6RKvoJRvn2/Bhj/klk8PhmvWAAQXVMvzVOmUrw0BLTQ+19+koY1yufltglWXxRMxqA==} peerDependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241120125910 - '@credo-ts/core': 0.6.0-alpha-20241120125910 + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226 + '@credo-ts/core': 0.6.0-alpha-20241120153226 '@hyperledger/anoncreds-shared': ^0.2.1 cross-env@7.0.3: @@ -6339,7 +6345,7 @@ packages: expo-constants: '*' expo-linking: '*' expo-status-bar: '*' - react-native-reanimated: ~3.15.5 + react-native-reanimated: '*' react-native-safe-area-context: '*' react-native-screens: '*' peerDependenciesMeta: @@ -10457,7 +10463,7 @@ snapshots: - supports-color - utf-8-validate - '@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': + '@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': dependencies: '@peculiar/asn1-ecc': 2.3.14 '@peculiar/asn1-schema': 2.3.13 @@ -10467,7 +10473,7 @@ snapshots: react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1) optional: true - '@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': + '@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': dependencies: '@peculiar/asn1-ecc': 2.3.14 '@peculiar/asn1-schema': 2.3.13 @@ -10480,24 +10486,24 @@ snapshots: dependencies: compare-versions: 6.1.1 - '@animo-id/oauth2-utils@0.1.3(typescript@5.3.3)': + '@animo-id/oauth2-utils@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: buffer: 6.0.3 valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript - '@animo-id/oauth2@0.1.3(typescript@5.3.3)': + '@animo-id/oauth2@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: - '@animo-id/oauth2-utils': 0.1.3(typescript@5.3.3) + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259(typescript@5.3.3) valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript - '@animo-id/oid4vci@0.1.3(typescript@5.3.3)': + '@animo-id/oid4vci@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: - '@animo-id/oauth2': 0.1.3(typescript@5.3.3) - '@animo-id/oauth2-utils': 0.1.3(typescript@5.3.3) + '@animo-id/oauth2': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259(typescript@5.3.3) valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript @@ -11654,10 +11660,10 @@ snapshots: '@cosmjs/utils@0.30.1': {} - '@credo-ts/anoncreds@0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-shared': 0.2.4 '@sphereon/pex-models': 2.3.1 big-integer: 1.6.52 @@ -11673,9 +11679,9 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/askar@0.6.0-alpha-20241120125910(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/askar@0.6.0-alpha-20241120153226(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/aries-askar-shared': 0.2.3 bn.js: 5.2.1 class-transformer: 0.5.1 @@ -11683,7 +11689,7 @@ snapshots: rxjs: 7.8.1 tsyringe: 4.8.0 optionalDependencies: - '@animo-id/expo-secure-environment': 0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + '@animo-id/expo-secure-environment': 0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - domexception - encoding @@ -11692,15 +11698,15 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/cheqd@0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/cheqd@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@cheqd/sdk': 2.5.1 '@cheqd/ts-proto': 2.3.2 '@cosmjs/crypto': 0.30.1 '@cosmjs/proto-signing': 0.30.1 '@cosmjs/stargate': 0.30.1 - '@credo-ts/anoncreds': 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@stablelib/ed25519': 1.0.3 class-transformer: 0.5.1 class-validator: 0.14.1 @@ -11718,7 +11724,7 @@ snapshots: - utf-8-validate - web-streams-polyfill - '@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@animo-id/mdoc': 0.2.38(patch_hash=zifb323ygrtdb6olnw5okh7czy) '@digitalcredentials/jsonld': 6.0.0(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) @@ -11770,7 +11776,7 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@animo-id/mdoc': 0.2.38(patch_hash=zifb323ygrtdb6olnw5okh7czy) '@digitalcredentials/jsonld': 6.0.0(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) @@ -11822,10 +11828,10 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/indy-vdr@0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/indy-vdr@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/indy-vdr-shared': 0.2.2 transitivePeerDependencies: - '@hyperledger/anoncreds-shared' @@ -11836,11 +11842,11 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/openid4vc@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/openid4vc@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: - '@animo-id/oauth2': 0.1.3(typescript@5.3.3) - '@animo-id/oid4vci': 0.1.3(typescript@5.3.3) - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@animo-id/oauth2': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oid4vci': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@sphereon/did-auth-siop': 0.16.1-fix.173(typescript@5.3.3) '@sphereon/oid4vc-common': 0.16.1-fix.173 '@sphereon/ssi-types': 0.30.2-next.135 @@ -11873,9 +11879,9 @@ snapshots: - typescript - web-streams-polyfill - '@credo-ts/question-answer@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) class-transformer: 0.5.1 class-validator: 0.14.1 rxjs: 7.8.1 @@ -11887,17 +11893,17 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/react-hooks@0.6.1(@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1)': + '@credo-ts/react-hooks@0.6.1(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/question-answer': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) react: 18.3.1 rxjs: 7.8.1 - '@credo-ts/react-native@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/react-native@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@azure/core-asynciterator-polyfill': 1.0.2 - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) events: 3.3.0 react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1) react-native-fs: 2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)) @@ -14662,7 +14668,7 @@ snapshots: '@rnx-kit/chromium-edge-launcher@1.0.0': dependencies: - '@types/node': 18.18.8 + '@types/node': 18.19.63 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -17181,11 +17187,7 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 18.18.8 - - '@types/node@18.18.8': - dependencies: - undici-types: 5.26.5 + '@types/node': 22.8.6 '@types/node@18.19.63': dependencies: @@ -18117,7 +18119,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 18.18.8 + '@types/node': 22.8.6 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -18367,10 +18369,10 @@ snapshots: credentials-context@2.0.0: {} - credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4): + credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4): dependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241120125910(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241120125910(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-shared': 0.2.4 canonicalize: 1.0.8 query-string: 7.1.3