From b2a46b8c155120199095e39fd62c0482b9984cbd Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Tue, 4 Jun 2024 18:04:08 +0800 Subject: [PATCH 1/9] feat: 0.5 migration guide Signed-off-by: Timo Glastra --- guides/getting-started/set-up/anoncreds.md | 4 +- guides/getting-started/set-up/aries-askar.md | 4 +- guides/getting-started/set-up/index.md | 6 +- guides/getting-started/set-up/indy-vdr.md | 4 +- guides/tutorials/index.md | 3 +- guides/updating/update-assistant.md | 93 +- guides/updating/update-indy-sdk-to-askar.md | 79 +- guides/updating/versions/0.4-to-0.5.md | 381 ++++++ snippets/current/package.json | 33 +- yarn.lock | 1221 +++++++++++++++--- 10 files changed, 1605 insertions(+), 223 deletions(-) create mode 100644 guides/updating/versions/0.4-to-0.5.md diff --git a/guides/getting-started/set-up/anoncreds.md b/guides/getting-started/set-up/anoncreds.md index 48abc917..26f2a249 100644 --- a/guides/getting-started/set-up/anoncreds.md +++ b/guides/getting-started/set-up/anoncreds.md @@ -11,13 +11,13 @@ When using Credo with AnonCreds, there are a few extra dependencies that need to # Node.JS ```console -yarn add @credo-ts/anoncreds@^0.5.0 @hyperledger/anoncreds-nodejs@^0.2.0 +yarn add @credo-ts/anoncreds@^0.5.3 @hyperledger/anoncreds-nodejs@^0.2.2 ``` # React Native ```console -yarn add @credo-ts/anoncreds@^0.5.0 @hyperledger/anoncreds-react-native@^0.2.0 +yarn add @credo-ts/anoncreds@^0.5.3 @hyperledger/anoncreds-react-native@^0.2.2 ``` diff --git a/guides/getting-started/set-up/aries-askar.md b/guides/getting-started/set-up/aries-askar.md index 8afb10ee..2fb63d1e 100644 --- a/guides/getting-started/set-up/aries-askar.md +++ b/guides/getting-started/set-up/aries-askar.md @@ -17,13 +17,13 @@ When using Credo with Aries Askar, there are a few extra dependencies that need # Node.JS ```console -yarn add @credo-ts/askar@^0.5.0 @hyperledger/aries-askar-nodejs@^0.2.0 +yarn add @credo-ts/askar@^0.5.3 @hyperledger/aries-askar-nodejs@^0.2.1 ``` # React Native ```console -yarn add @credo-ts/askar@^0.5.0 @hyperledger/aries-askar-react-native@^0.2.0 +yarn add @credo-ts/askar@^0.5.3 @hyperledger/aries-askar-react-native@^0.2.1 ``` diff --git a/guides/getting-started/set-up/index.md b/guides/getting-started/set-up/index.md index bf1ce391..f5cd289c 100644 --- a/guides/getting-started/set-up/index.md +++ b/guides/getting-started/set-up/index.md @@ -20,6 +20,8 @@ For Credo `0.5.x`, **the following features are experimental**: - Using multi-tenancy from the `@credo-ts/tenants` module - Using BBS+ Signatures from the `@credo-ts/bbs-signatures` module - Using the cheqd module from the `@credo-ts/cheqd` module +- Using DIF Presentation Exchange +- Using AnonCreds in the W3C Verifiable Credential format ::: @@ -32,13 +34,13 @@ First we have to install the minimal amount of dependencies that are required fo # Node.JS ```console -yarn add @credo-ts/core@^0.5.0 @credo-ts/node@^0.5.0 +yarn add @credo-ts/core@^0.5.3 @credo-ts/node@^0.5.3 ``` # React Native ```console -yarn add @credo-ts/core@^0.5.0 @credo-ts/react-native@^0.5.0 react-native-fs react-native-get-random-values +yarn add @credo-ts/core@^0.5.3 @credo-ts/react-native@^0.5.3 react-native-fs react-native-get-random-values ``` diff --git a/guides/getting-started/set-up/indy-vdr.md b/guides/getting-started/set-up/indy-vdr.md index d4926e07..49224783 100644 --- a/guides/getting-started/set-up/indy-vdr.md +++ b/guides/getting-started/set-up/indy-vdr.md @@ -11,13 +11,13 @@ When using Credo with Indy VDR, there are a few extra dependencies that need to # Node.JS ```console -yarn add @credo-ts/indy-vdr@^0.5.0 @hyperledger/indy-vdr-nodejs@^0.2.0 +yarn add @credo-ts/indy-vdr@^0.5.3 @hyperledger/indy-vdr-nodejs@^0.2.2 ``` # React Native ```console -yarn add @credo-ts/indy-vdr@^0.5.0 @hyperledger/indy-vdr-react-native@^0.2.0 +yarn add @credo-ts/indy-vdr@^0.5.3 @hyperledger/indy-vdr-react-native@^0.2.2 ``` diff --git a/guides/tutorials/index.md b/guides/tutorials/index.md index 596cfd60..bff5a058 100644 --- a/guides/tutorials/index.md +++ b/guides/tutorials/index.md @@ -3,7 +3,6 @@ import DocCardList from '@theme/DocCardList'; # Tutorials In this section we will explain some features that everyone will use. This -includes setting up your Aries agent, creating a connection between Aries -agents, issuing a credential and verifying a proof. +includes setting up your Credo agent, creating a connection between Aries agents, issuing a credential and verifying a proof. diff --git a/guides/updating/update-assistant.md b/guides/updating/update-assistant.md index dbbaadd7..80ccd6fa 100644 --- a/guides/updating/update-assistant.md +++ b/guides/updating/update-assistant.md @@ -7,14 +7,28 @@ The Update Assistant helps you update the storage objects from Credo to newer ve - [Storing the agent storage version outside of the agent storage](#storing-the-agent-storage-version-outside-of-the-agent-storage) - [Automatically update on agent startup](#automatically-update-on-agent-startup) - [Backups](#backups) + - [Disabling backups](#disabling-backups) +- [Tenant Migration](#tenant-migration) + - [Automatically update on tenant startup](#automatically-update-on-tenant-startup) + - [Manually upgrading tenant storage](#manually-upgrading-tenant-storage) ## Update Strategies There are three options on how to leverage the update assistant on agent startup: -1. Manually instantiating the update assistant on agent startup -2. Storing the agent storage version outside of the agent storage -3. Automatically update on agent startup +- [Update Strategies](#update-strategies) + - [Manually instantiating the update assistant on agent startup](#manually-instantiating-the-update-assistant-on-agent-startup) + - [Storing the agent storage version outside of the agent storage](#storing-the-agent-storage-version-outside-of-the-agent-storage) + - [Automatically update on agent startup](#automatically-update-on-agent-startup) +- [Backups](#backups) + - [Disabling backups](#disabling-backups) +- [Tenant Migration](#tenant-migration) + - [Automatically update on tenant startup](#automatically-update-on-tenant-startup) + - [Manually upgrading tenant storage](#manually-upgrading-tenant-storage) + +Note that the Update Assistant only supports updating the root wallet storage. If you are leveraging the tenants module, read [Tenant Migration](#tenant-migration) for more information on how to update storage for each tenant. + +In addition, for all update methods you can configure whether a backup should be created before the update process starts. In the case the upgrade fails, the backup will be restored. In general we recommend to keep this option enabled (it is enabled by default), but there are a few important exceptions so make sure to read the section on [backups](#backups) carefully for more information. ### Manually instantiating the update assistant on agent startup @@ -47,7 +61,11 @@ await updateAssistant.initialize() // Check if the agent is up to date, if not call update if (!(await updateAssistant.isUpToDate())) { - await updateAssistant.update() + await updateAssistant.update({ + // If you don't want to create a backup before the update process starts + // (see ) + createBackupBeforeUpdate: false, + }) } // Once finished initialize the agent. You should do this on every launch of the agent @@ -105,6 +123,12 @@ await agent.initialize() This is by far the easiest way to update the agent, but has the least amount of flexibility and is not configurable. This means you will have to use the default update options to update the agent storage. You can find the default update config in the respective version migration guides (e.g. in [0.1-to-0.2](/guides/updating/versions/0.1-to-0.2.md)). +:::caution + +If you're using the `autoUpdateStorageOnStartup` option and hosting multiple Credo instances that point to the same database, you need to make sure that they won't all try to update the storage on startup. Only one instance should try to update the storage, and thus in cases where multiple instances are hosted pointing to the same database, this approach is not recommended. + +::: + ```ts import { UpdateAssistant, Agent } from '@credo-ts/core' @@ -116,6 +140,7 @@ const agent = new Agent({ config: { ...config, autoUpdateStorageOnStartup: true, + createBackupBeforeStorageUpdate: true, }, dependencies: agentDependencies, }) @@ -133,6 +158,60 @@ The backups can be found at the following locations. The `backupIdentifier` is g - Backup path: `${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}` - Migration backup: `${agent.config.fileSystem.basePath}/afj/migration/backup/${backupIdentifier}-error` -> In the future the backup assistant will make a number of improvements to the recovery process. Namely: -> -> - Do not throw an error if the update fails, but rather return an object that contains the status, and include the backup paths and backup identifiers. +### Disabling backups + +In general we recommend keeping backups before storage updates enabled. However, there are a few scenarios where you should disable backups in Credo before updating the storage: + +- You are using Aries Askar with an SQLite database and multi-tenancy with `AskarMultiWalletDatabaseScheme.ProfilePerWallet` as the database scheme. Credo supports creating backups of SQLite databases, however as as each tenant is stored as a profile in the same database, if a backup is restored it will overwrite the storage of the whole database, and thus for all tenants. In future versions we will add support for more granular control of the backup. +- You are using Aries Askar with a Postgres database. We don't support creating backups for Postgres, and we advice you to create a backup of your database yourself before updating the storage. + +## Tenant Migration + +Migration of tenant storage is an additional process that needs to be performed when updating to a new breaking version of Credo. When you have migrated the storage of the root wallet, you can start up the agent and use it for the root wallet. But the tenant will still be using an older version of the storage. + +:::info + +Future versions of Credo are expected to work with the latest two major storage versions, writing using the latest format, but allowing to read also the previous storage format version. This allows to gradually upgrade your infrastructure to a new version, requiring as minimal downtime as possible. + +::: + +:::caution + +If you're using an Aries Askar with an SQLite database while also leveraging multi-tenancy and using `AskarMultiWalletDatabaseScheme.ProfilePerWallet` as the database scheme, you need to make sure to disable `backupBeforeStorageUpdate` in the `updateOptions` when updating the storage of a tenant. See [Disabling backups](#disabling-backups) for more information. + +::: + +### Automatically update on tenant startup + +The `autoUpdateStorageOnStartup` also works for tenants within an agent, meaning that you can automatically update the storage of a tenant when the tenant is first opened after the upgrade. Compared to the root wallet, which is updated when the agent starts, a tenant will be automatically upgraded when the tenant is first opened. + +The same rules apply as with the auto updating of storage on startup, so make sure to read section on [Automatically update on agent startup](#automatically-update-on-agent-startup). + +:::caution + +If you're using a multi-instance setup with the same storage backend, you need to make sure that only one instance updates the storage of a tenant. This is tricky to do with auto updating, and therefore we recommend to use the manual approach. + +::: + +### Manually upgrading tenant storage + +If you want to manually upgrade the storage of a tenant, you can use the `getTenantsWithOutdatedStorage` method to get a list of tenants that have outdated storage. Then you can use the `updateTenantStorage` method to update the storage of a tenant. This method will return a promise that resolves when the storage has been updated. If the storage is already up to date, the promise will resolve immediately. If an error occurs during the updating, an error will be thrown, just like if you would use the Update Assistant. + +```ts +const outdatedTenantsAfterUpdate = await agent.modules.tenants.getTenantsWithOutdatedStorage() + +for (const tenant of outdatedTenantsAfterUpdate) { + await agent.modules.tenants.updateTenantStorage({ + tenantId: tenant.id, + updateOptions: { + // NOTE: if you're using Askar with SQLite and AskarMultiWalletDatabaseScheme.ProfilePerWallet, OR you use Postgres, you should disable backups + // by credo and create them manually beforehand. + createBackupBeforeUpdate: true, + }, + }) +} +``` + +You can use the manual approach to update the storage of a tenant, even while `autoUpdateStorageOnStartup` is enabled, but you need to make sure that the auto update won't be run for the tenant you are manually updating, so we recommend to disable `autoUpdateStorageOnStartup` when manually updating the storage of a tenant. + +After you've upgraded the storage of a tenant, you can use the tenant as usual. diff --git a/guides/updating/update-indy-sdk-to-askar.md b/guides/updating/update-indy-sdk-to-askar.md index da9c4a94..2f73db69 100644 --- a/guides/updating/update-indy-sdk-to-askar.md +++ b/guides/updating/update-indy-sdk-to-askar.md @@ -4,7 +4,7 @@ This documentation explains the process of migrating your Indy SDK wallet to [Ar :::danger -While the migration script technically works on node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done. +While the migration script technically works on Node.JS, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done. ::: @@ -84,10 +84,30 @@ Updating does not require a lot of code, but must be done with caution. It is very important to note that the migration script only has to be run once. If it runs for a second time, it will error saying that the database is already migrated. Also, when the migration is finished, it is common practice to store this state in your persistent app storage. This script does not provide a way to detect if an update has happened, so storing this value will prevent the script from running every time. For more information regarding this topic, please check out [Update Assistant](./update-assistant.md#storing-the-agent-storage-version-outside-of-the-agent-storage). -### add the required dependencies +### Migrate code to Aries Askar, Indy VDR, AnonCreds. + +Since Credo 0.4, there have been three new packages introduced that replace Indy SDK: Aries Askar (secure storage and cryptography), Indy VDR (integration with Hyperledger Indy blockchain), and AnonCreds (AnonCreds credential format). + +Before setting up the migration script for Aries Askar (the storage), it is advised to first update your code with the new dependencies, and test it in a fresh environment to make sure everything works as expected. + +To update your code to use the new packages, remove the `@aries-framework/indy-sdk`, `indy-sdk`, `indy-sdk-react-native`, `@types/indy-sdk` and `@types/indy-sdk-react-native` packages from the dependencies of your project, and remove all related imports from your code. + +Then, setup the required dependencies for Aries Askar, Indy VDR, and AnonCreds. It is not required to set up all dependencies. This guide focuses on migration the storage from Indy SDK to Aries Askar, so only the Aries Askar dependency is required. + +To setup the new dependencies, follow the getting started guide for each package: + +- [Aries Askar](../getting-started/set-up/aries-askar.md) +- [AnonCreds](../getting-started/set-up/anoncreds.md) +- [Indy VDR](../getting-started/set-up/indy-vdr.md) + +Once this has been set-up, make sure all code works on a **fresh environment** before continuing with the migration script. + +### Add the required dependencies + +Once all the new dependencies have been configured for your platform, you can add the migration script to your project: ```sh -yarn add @hyperledger/aries-askar-react-native @credo-ts/indy-sdk-to-askar-migration react-native-fs +yarn add @credo-ts/indy-sdk-to-askar-migration@^0.5.3 ``` Below is the minimal code required for the migration to work. It is recommended to turn the logger on as it gives a lot of information regarding the migration. @@ -99,7 +119,7 @@ The agent is not allowed to be initialized to run this script. This makes sure n ::: ```typescript -import { agentDependencies } from '@credo-ts/react-native' +import { agentDependencies } from '@credo-ts/react-native' // or @credo-ts/node import { AskarModule } from '@credo-ts/askar' import { IndySdkToAskarMigrationUpdater } from '@credo-ts/indy-sdk-to-askar-migration' import { ariesAskar } from '@hyperledger/aries-askar-react-native' @@ -109,6 +129,7 @@ const oldAgent = new Agent({ /* ... */ }, modules: { + // ... other modules (including optionally IndyVdrModule and AnonCredsModule) ariesAskar: new AskarModule({ ariesAskar, }), @@ -116,46 +137,40 @@ const oldAgent = new Agent({ dependencies: agentDependencies, }) -const dbPath = '' // see section below +// See section below for getting the database path +const dbPath = getMobileIndySdkDatabasePath(oldAgent.config.walletConfig.id) -const updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent }) +const updater = await IndySdkToAskarMigrationUpdater.initialize({ dbPath, agent: oldAgent }) await updater.update() ``` ### Getting the database path -#### Android +#### React Native -On android, the database is commonly located under the `ExternalDirectoryPath`. +On Android, the database is commonly located under the `ExternalDirectoryPath`. If you did not follow the default Indy SDK for React Native setup on Android, your path might differ. Check out [Indy SDK React Native Android Setup](https://github.com/hyperledger-archives/indy-sdk-react-native#5-load-indy-library) for the default behavior. -If you did not follow the default indy-sdk for React Native setup, your path might differ. Check out [step 5 of the Android setup for Indy SDK React Native](https://github.com/hyperledger/indy-sdk-react-native#5-load-indy-library) for the default behavior. +On iOS, the database is commonly located under the `DocumentDirectoryPath`. For iOS this can only change if your phone does not have the `HOME` environment variable set. This is not usual behavior, and if `HOME` is not set, the `base` in the code section below will be `/home/indy/Documents`. + +To get the path to the database, you can use the following code, where `walletId` is the `walletConfig.id`. ```typescript +import { Platform } from 'react-native' import fs from 'react-native-fs' -const base = fs.ExternalDirectoryPath -const indyClient = '.indy_client' -const wallet = 'wallet' -const walletId = agent.config.walletConfig.id -const file = 'sqlite.db' - -const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}` +/** + * Get the path to and Indy SDK SQlite wallet database on mobile. + * + * @note this assumes you are using the default configuration. + * If you are not, you will need to adjust the path accordingly. + */ +function getMobileIndySdkDatabasePath(walletId: string) { + const base = Platform.OS === 'android' ? fs.ExternalDirectoryPath : fs.DocumentDirectoryPath + + return `${base}/.indy_client/wallet/${walletId}/sqlite.db` +} ``` -#### iOS - -On iOS, the database is commonly located under the `DocumentDirectoryPath`. +#### Node.JS -For iOS this can only change if your phone does not have the `HOME` environment variable set. This is not usual behavior, and if `HOME` is not set, the `base` in the code section below will be `/home/indy/Documents`. - -```typescript -import fs from 'react-native-fs' - -const base = fs.DocumentDirectoryPath -const indyClient = '.indy_client' -const wallet = 'wallet' -const walletId = agent.config.walletConfig.id -const file = 'sqlite.db' - -const dbPath = `${base}/${indyClient}/${wallet}/${walletId}/${file}` -``` +Migration of data from Indy SDK to Aries Askar is not supported yet in Node.JS. If you are using Node.JS or Postgres and need to update to Aries Askar, please open an issue on [GitHub](https://github.com/openwallet-foundation/credo-ts). diff --git a/guides/updating/versions/0.4-to-0.5.md b/guides/updating/versions/0.4-to-0.5.md new file mode 100644 index 00000000..a22cedf1 --- /dev/null +++ b/guides/updating/versions/0.4-to-0.5.md @@ -0,0 +1,381 @@ +# Migrating from Credo 0.4.x to 0.5.x + +This document describes everything you need to know for updating Credo 0.4.x to 0.5.x. If you're not aware of how updating in Credo works make sure to first read the guide on [Updating Credo](/guides/updating/index.md), and the [Update Assistant](/guides/updating/update-assistant.md). Starting from Credo 0.5, we now support migration of tenant storage in addition to the root wallet. If you're using the tenants module, make sure to read the guides carefully. + +See [Pull Request 1747](https://github.com/openwallet-foundation/credo-ts/pull/1747) for more information.). + +First of all, update your dependencies to the 0.5.x versions. This will also update the needed peer dependencies. **Extension packages are not updated with this command**. You need to update these manually, and make sure they're up to date with the latest version of Credo. + +Credo 0.5.0 is a major release, but there haven't been a lot of breaking changes to the stable API, most of the changes are related to OpenID4VC, SD-JWT VC and DIF Presentation Exchange. One notable change is that the Indy SDK has been fully deprecated and removed from Credo. This means that starting from 0.5, you cannot use Credo with the Indy SDK. If you need to migrate your storage from Indy SDK to Aries Askar, see the note below for instructions. Another notable change is the migration of all AnonCreds credential records to be stored as `W3cCredentialRecord` instead of `AnonCredsCredentialRecord`. + +Follow the mentioned steps in this document carefully to make the upgrade as smooth as possible. + +:::caution + +The migration guide only covers how to migrate from 0.4.x to 0.5.x while keeping the same behavior and dependencies. Credo 0.4.0 added support for [Aries Askar](https://github.com/hyperledger/aries-askar), [Indy VDR](https://github.com/hyperledger/indy-vdr) and [AnonCreds RS](https://github.com/hyperledger/anoncreds-rs) as a replacement for the Indy SDK. + +Migrating to these new components requires additional migration steps, which need to be closely followed to prevent loss of data. These can be found at the [Update Indy SDK to Askar guide](../update-indy-sdk-to-askar.md). + +As noted in the [Update Indy SDK to Askar guide](../update-indy-sdk-to-askar.md), it is very important that the 0.3.x or 0.4x to 0.5.x update is started after migrating from the Indy SDK to Aries Askar. + +The rest of this guides will **assume you have already migrated from the Indy SDK to Aries Askar, AnonCreds and Indy VDR**. + +::: + +:::caution + +The following APIs, modules and features are experimental and therefore not covered by the semver versioning in Credo. If you're using any of these features, make sure to use an exact version of Credo (`0.5.0`) instead of a range (`^0.5.0`): + +- Issuance of revocable AnonCreds credentials and revocation of AnonCreds credentials +- Using any of the OpenID4VC from the `@credo-ts/openid4vc` package +- SD-JWT Verifiable Credentials +- DIF Presentation Exchange +- Issuance and verification of AnonCreds in W3C Verifiable Credential format + +::: + +First install the updated dependencies. For all dependencies you have in `package.json`, update them to the following versions, for your platform. If you don't use a package, you don't have to add it here. + +In the upgrade from 0.4 to 0.5, Aries Framework JavaScript has been renamed to Credo, and therefore the package scope has also changed. **The scope for all packages starting with `@aries-framework` should be updated to `@credo-ts`**. So `@aries-framework/core` becomes `@credo-ts/core`, etc.. + +If you were using `@aries-framework/anoncreds` and `@aries-framework/anoncreds-rs`, these have been combined into `@credo-ts/anoncreds`. So **`@aries-framework/anoncreds-rs` can be removed from the dependencies**. + + + +#### React Native + +- `"@credo-ts/*": "^0.5.3"` - except for packages starting with `@credo-ts` listed below. +- `"@credo-ts/react-hooks": "^0.6.1"` +- `"@credo-ts/push-notifications": "^0.7.1"` +- `"@hyperledger/anoncreds-react-native": "^0.2.2"` +- `"@hyperledger/indy-vdr-react-native": "^0.2.2"` +- `"@hyperledger/aries-askar-react-native": "^0.2.1"` + +In addition, if you were using `@aries-framework/anoncreds` and `@aries-framework/anoncreds-rs`, these have been combined into `@credo-ts/anoncreds`. So **`@aries-framework/anoncreds-rs` can be removed from the dependencies**. + +#### Node + +- `"@credo-ts/*": "^0.5.3"` - except for packages starting with `@credo-ts` listed below. +- `"@credo-ts/react-hooks": "^0.6.1"` +- `"@credo-ts/push-notifications": "^0.7.1"` +- `"@hyperledger/anoncreds-nodejs": "^0.2.1"` +- `"@hyperledger/indy-vdr-nodejs": "^0.2.1"` +- `"@hyperledger/aries-askar-nodejs": "^0.2.0"` + + + +## Breaking Code Changes + +This section will list all breaking changes made to the public API of Credo between version 0.4.x and 0.5.x. + +:::info + +If you have custom modules take into account there could be a lot more breaking changes that aren't documented here. We try to make sure that the biggest breaking changes to the internal API are also documented here, but it is possible some breaking changes are not documented here (feel free to open a pull request). + +::: + +### Node 16 deprecated + +Starting from Credo 0.5, Node 16 has been deprecated and is no longer supported. The supported versions for Credo are Node 18 and 20. We aim to keep support for all LTS releases (the even version numbers) that are either Current, Active, or in Maintenance. Other versions may work, but are not part of our testing and release process. + +See the [Release Schedule](https://nodejs.org/en/about/previous-releases#release-schedule) on the Node.JS website for information on past and upcoming Node.JS releases. + +### Aries to Credo + +With the move from Aries Framework JavaScript to Credo, several classes and imports have been renamed to match the new name. The following imports should be updated: + +- `AriesFrameworkError` -> `CredoError` + +### Label optional in `OutOfBandInvitation` + +A small change, but the `label` property on an `OutOfBandInvitation` is now optional. + +### Caching in `DidResolver` interface + +Did resolving within Credo now support caching of resolved did documents. Especially in some flows where the did document is resolved several times, this can improve performance a lot. + +If you haven't implemented a custom `DidResolver`, you don't have to do anything to benefit from the new caching behavior, this is enabled by default. If you want to opt out of caching (and have the same behavior as 0.4), you can tweak it using the following properties in the did resolver options: + +```typescript +const didResult = await agent.dids.resolve('did:example:123', { + // how long to cache the resolved did document in seconds + cacheDurationInSeconds: 400, + // whether to persist the resolved did document in the cache + persistInCache: true, + // whether to use the cache for resolving the did document + useCache: true, +}) +``` + +If you have implemented a custom did resolver, you need to set the `allowsCaching` property to indicate whether the did resolver allows the documents it resolves to be cached. For example, for local resolvers it's often easier to resolve the document than to have it cached, so you can set `allowsCaching` to `false` (example are `did:key`, `did:jwk`, `did:peer`). For resolvers that resolve documents from a remote source, it's often better to cache the resolved document, so you can set `allowsCaching` to `true` (example are `did:web`, `did:cheqd`, `did:indy`). + +```typescript +export class ExampleDidResolver implements DidResolver { + public readonly supportedMethods = ['example'] + + // whether to allow caching + public readonly allowsCaching = true + + public async resolve() { + // ... resolver implementation + } +} +``` + +### Out Of Band Handshake Protocols enum updated to not include minor version + +The `HandshakeProtocol` enum, which you can provide when creating out of band invitations, has been updated to not include the minor version in the values anymore. The minor version has instead been replaced by an `x`, indicating it can be any value. If you were only using the enum, this should not cause issues. But if you were relying on the values within the enum to have a specific format, this could cause some issues. + +For example the value for `HandshakeProtocol.DidExchange` has been updated from `https://didcomm.org/didexchange/1.1` to `https://didcomm.org/didexchange/1.x`. + +### AnonCreds RS and AnonCreds package combined + +With the removal of the Indy SDK from Credo, we have made the setup for AnonCreds easier. + +In 0.4 you had to provide both the `AnonCredsModule` (from `@aries-framework/anoncreds`) as well as the `AnonCredsRsModule` (from `@aries-framework/anoncreds-rs`). In 0.5 these have been combined into a single `AnonCredsModule` (from `@credo-ts/anoncreds`). + + + +##### 0.4.x + +```ts +import { Agent } from '@aries-framework/core' +import { AnonCredsModule } from '@aries-framework/anoncreds' + +// or import from @hyperledger/anoncreds-react-native in React Native +import { anoncreds } from '@hyperledger/anoncreds-nodejs' + +const agent = new Agent({ + /* ... rest of agent setup */ + + modules: { + anoncreds: new AnonCredsModule({ + registries: [ + /* registries */ + ], + }), + anoncredsRs: new AnonCredsRsModule({ + anoncreds, + }), + }, +}) +``` + +##### 0.5.x + +```ts +import { Agent } from 'credo-ts/core' +import { AnonCredsModule } from 'credo-ts/anoncreds' + +// or import from @hyperledger/anoncreds-react-native in React Native +import { anoncreds } from '@hyperledger/anoncreds-nodejs' + +const agent = new Agent({ + /* ... rest of agent setup */ + + modules: { + anoncreds: new AnonCredsModule({ + registries: [ + /* registries */ + ], + + // anoncreds has been moved to AnonCredsModule + anoncreds, + }), + }, +}) +``` + + + +### OpenId4VC Holder module + +The `@aries-framework/openid4vc-client` has been deprecated in favour of the new `@credo-ts/openid4vc` package. + +The OpenID4VC Client from Credo/AFJ 0.4 only supported receiving credential using OpenID for Verifiable Credentials Issuance. The new package now also support issuance, proving and verification. This section covers how to update the existing functionality to Credo 0.5, but for a detailed guide on how to use the new OpenID4VC features in Credo, see [OpenID4VC Guide](/guides/oid4vc/index.md). + +First update the import of `@aries-framework/openid4vc-client` to `@credo-ts/openid4vc`, and change the module to the new `OpenId4VcHolderModule`: + + + +##### 0.4.x + +```ts +import { Agent } from '@aries-framework/core' +import { OpenId4VcClientModule } from '@aries-framework/openid4vc-client' + +// Import from @aries-framework/react-native in React Native +import { agentDependencies } from '@aries-framework/node' + +const agent = new Agent({ + config: { + /* ... */ + }, + dependencies: agentDependencies, + modules: { + /* ... other modules */ + openId4VcClient: new OpenId4VcClientModule(), + }, +}) +``` + +##### 0.5.x + +```ts +import { Agent } from '@aries-framework/core' +import { OpenId4VcHolderModule } from '@aries-framework/openid4vc' + +// Import from @aries-framework/react-native in React Native +import { agentDependencies } from '@aries-framework/node' + +const agent = new Agent({ + config: { + /* ... */ + }, + dependencies: agentDependencies, + modules: { + /* ... other modules */ + openId4VcHolder: new OpenId4VcHolderModule(), + }, +}) +``` + + + +Next, update your credential receiving logic to first resolve the credential offer (using `agent.modules.openId4VcHolder.resolverCredentialOffer`), and then accept the credential offer (using `agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode`). + + + +##### 0.4.x + +```ts +import { DidKey, KeyDidCreateOptions, JwaSignatureAlgorithm } from '@aries-framework/core' +import { OpenIdCredentialFormatProfile } from '@aries-framework/openid4vc-client' + +// Example uri +const data = 'openid-credential-offer://?credential_offer_uri=...' + +await agent.modules.openId4VcClient.requestCredentialUsingPreAuthorizedCode({ + uri: data, + proofOfPossessionVerificationMethodResolver: async ({ supportedDidMethods, keyType, supportsAllDidMethods }) => { + if (supportsAllDidMethods || supportedDidMethods?.includes('did:key')) { + const didResult = await agent.dids.create({ + method: 'key', + options: { + keyType, + }, + }) + + if (didResult.didState.state !== 'finished') { + throw new Error('DID creation failed.') + } + + const didKey = DidKey.fromDid(didResult.didState.did) + + return didResult.didState.didDocument.dereferenceKey(`${didKey.did}#${didKey.key.fingerprint}`) + } + + throw new Error(`Unable to create a key binding`) + }, + verifyCredentialStatus: false, + allowedCredentialFormats: [OpenIdCredentialFormatProfile.JwtVcJson], + allowedProofOfPossessionSignatureAlgorithms: [JwaSignatureAlgorithm.EdDSA, JwaSignatureAlgorithm.ES256], +}) +``` + +##### 0.5.x + +```ts +import { DidKey, KeyDidCreateOptions, JwaSignatureAlgorithm, getJwkFromKey } from '@credo-ts/core' +import { OpenId4VciCredentialFormatProfile } from '@credo-ts/openid4vc' + +// Example uri +const data = 'openid-credential-offer://?credential_offer_uri=...' + +const resolvedCredentialOffer = await agent.modules.openId4VcHolder.resolverCredentialOffer(data) + +await agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode( + // First parameter is now the resolved credential offer + resolvedCredentialOffer, + { + // has been renamed from proofOfPossessionVerificationMethodResolver to credentialBindingResolver + credentialBindingResolver: async ({ + supportedDidMethods, + keyType, + supportsAllDidMethods, + // supportsJwk now also passed + supportsJwk, + credentialFormat, + }) => { + // NOTE: example implementation. Adjust based on your needs + // Return the binding to the credential that should be used. Either did or jwk is supported + + if (supportsAllDidMethods || supportedDidMethods?.include('did:key')) { + const didResult = await agent.dids.create({ + method: 'key', + options: { + keyType, + }, + }) + + if (didResult.didState.state !== 'finished') { + throw new Error('DID creation failed.') + } + + const didKey = DidKey.fromDid(didResult.didState.did) + + // you now need to return an object instead of VerificationMethod instance + // and method 'did' or 'jwk' + return { + method: 'did', + didUrl: `${didKey.did}#${didKey.key.fingerprint}`, + } + } + + // we also support plain jwk for sd-jwt only + if (supportsJwk && credentialFormat === OpenId4VciCredentialFormatProfile.SdJwtVc) { + const key = await agent.wallet.createKey({ + keyType, + }) + + // you now need to return an object instead of VerificationMethod instance + // and method 'did' or 'jwk' + return { + method: 'jwk', + jwk: getJwkFromKey(key), + } + } + + throw new Error('Unable to create a key binding') + }, + + verifyCredentialStatus: false, + allowedProofOfPossessionSignatureAlgorithms: [JwaSignatureAlgorithm.EdDSA, JwaSignatureAlgorithm.ES256], + } +) +``` + + + +### Message Pickup + +> TODO: write migration guide for message pickup +> https://github.com/openwallet-foundation/credo-ts/pull/1638 + +### Askar short-lived sessions + +This is an internal change, but Askar now only uses short-lived sessions. Before a session was created and kept alive until the agent was shutdown or the tenant session was closed (in case of multi-tenancy). Now a session is created for each read and write operation to your wallet. + +Askar manages a connection pool internally and aligns more with how Askar is supposed to be used, and makes the multi-tenancy implementation more robust. This is also in preparation for some bigger wallet and storage API changes in future versions, where we want to support transactions (batching multiple read/writes operations), record locking (to prevent race condition updates), and more. + +See [Pull Request 1743](https://github.com/openwallet-foundation/credo-ts/pull/1743) for more information. + +### AnonCreds W3C format + +AnonCreds credentials in Credo now support the W3c Verifiable Credential format. Using the new [Aries RFC 0809: W3C Verifiable Credential Data Integrity Attachment format](https://hyperledger.github.io/aries-rfcs/latest/features/0809-w3c-data-integrity-credential-attachment/) you can issue AnonCreds credentials in W3C VC Data Integrity format, and verify them in W3C VC Data Integrity using [Aries RFC 0510: Presentation-Exchange Attachment format](https://hyperledger.github.io/aries-rfcs/latest/aip2/0510-dif-pres-exch-attach/). + +With the change, we've updated the storage of all AnonCreds credentials to be stored as `W3cCredentialRecord` instead of `AnonCredsCredentialRecord`. The `AnonCredsCredentialRecord` is still used for some legacy records which we were not able to migrate to the new format yes (because they rely on resolving objects from the ledger to properly migrate). However in future versions, also these records will be migrated and the `AnonCredsCredentialRecord` will be removed from the codebase. + +This means some AnonCreds credentials are stored in `W3cCredentialRecord` format, and some in `AnonCredsCredentialRecord` format. Make sure to use the designated methods on the `AnonCredsModule` as well as on the `ProofsModule` to find and query for AnonCreds records, to make sure all record types are returned. + +See [Pull Request 1744](https://github.com/openwallet-foundation/credo-ts/pull/1744) for more information. diff --git a/snippets/current/package.json b/snippets/current/package.json index d668b4c7..3bb9acc3 100644 --- a/snippets/current/package.json +++ b/snippets/current/package.json @@ -13,22 +13,23 @@ "dev:set-up": "ts-node --esm src/set-up.ts" }, "dependencies": { - "@credo-ts/anoncreds": "0.5.0-alpha.110", - "@credo-ts/askar": "0.5.0-alpha.110", - "@credo-ts/core": "0.5.0-alpha.110", - "@credo-ts/indy-vdr": "0.5.0-alpha.110", - "@credo-ts/cheqd": "0.5.0-alpha.110", - "@credo-ts/node": "0.5.0-alpha.110", - "@credo-ts/react-native": "0.5.0-alpha.110", - "@hyperledger/anoncreds-nodejs": "0.2.0-dev.9", - "@hyperledger/anoncreds-react-native": "0.2.0-dev.9", - "@hyperledger/anoncreds-shared": "0.2.0-dev.9", - "@hyperledger/aries-askar-nodejs": "0.2.0-dev.6", - "@hyperledger/aries-askar-react-native": "0.2.0-dev.6", - "@hyperledger/aries-askar-shared": "0.2.0-dev.6", - "@hyperledger/indy-vdr-nodejs": "0.2.0-dev.6", - "@hyperledger/indy-vdr-react-native": "0.2.0-dev.6", - "@hyperledger/indy-vdr-shared": "0.2.0-dev.6", + "@credo-ts/anoncreds": "^0.5.3", + "@credo-ts/askar": "^0.5.3", + "@credo-ts/cheqd": "^0.5.3", + "@credo-ts/core": "^0.5.3", + "@credo-ts/indy-vdr": "^0.5.3", + "@credo-ts/node": "^0.5.3", + "@credo-ts/openid4vc": "^0.5.3", + "@credo-ts/react-native": "^0.5.3", + "@hyperledger/anoncreds-nodejs": "^0.2.1", + "@hyperledger/anoncreds-react-native": "^0.2.1", + "@hyperledger/anoncreds-shared": "^0.2.1", + "@hyperledger/aries-askar-nodejs": "^0.2.0", + "@hyperledger/aries-askar-react-native": "^0.2.0", + "@hyperledger/aries-askar-shared": "^0.2.0", + "@hyperledger/indy-vdr-nodejs": "^0.2.1", + "@hyperledger/indy-vdr-react-native": "^0.2.1", + "@hyperledger/indy-vdr-shared": "^0.2.1", "node-fetch": "2" } } diff --git a/yarn.lock b/yarn.lock index ec7eef0b..71d80279 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@2060.io/ffi-napi@4.0.8", "@2060.io/ffi-napi@^4.0.8": +"@2060.io/ffi-napi@4.0.8": version "4.0.8" resolved "https://registry.yarnpkg.com/@2060.io/ffi-napi/-/ffi-napi-4.0.8.tgz#ec3424d9ec979491b41b8d82514ae82a647da8b0" integrity sha512-sONRKLtxFKN5PXuZaa41b/kTN+R5qAh6PAL15/fnafnvAKQ5WBoxRIy8xRh8jo9mydywtt4IrWtatB93w0+3cA== @@ -14,6 +14,18 @@ node-gyp-build "^4.2.1" ref-struct-di "^1.1.0" +"@2060.io/ffi-napi@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@2060.io/ffi-napi/-/ffi-napi-4.0.9.tgz#194fca2132932ba02e62d716c786d20169b20b8d" + integrity sha512-JfVREbtkJhMXSUpya3JCzDumdjeZDCKv4PemiWK+pts5CYgdoMidxeySVlFeF5pHqbBpox4I0Be7sDwAq4N0VQ== + dependencies: + "@2060.io/ref-napi" "^3.0.6" + debug "^4.1.1" + get-uv-event-loop-napi-h "^1.0.5" + node-addon-api "^3.0.0" + node-gyp-build "^4.2.1" + ref-struct-di "^1.1.0" + "@2060.io/ref-napi@3.0.6", "@2060.io/ref-napi@^3.0.6": version "3.0.6" resolved "https://registry.yarnpkg.com/@2060.io/ref-napi/-/ref-napi-3.0.6.tgz#32b1a257cada096f95345fd7abae746385ecc5dd" @@ -1641,6 +1653,29 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== +"@cheqd/sdk@^2.4.4": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@cheqd/sdk/-/sdk-2.4.4.tgz#80daf50e1ac83da0ec4e471def042c47496015c9" + integrity sha512-ratcHNuKUZH6pmRvyLeiEFODhrlawfiDssaSzANscOTjeDMJzHK0YvEiSXswZAHcsB/DWbGlR+9gKhbLyD5G7w== + dependencies: + "@cheqd/ts-proto" "~2.2.0" + "@cosmjs/amino" "~0.30.0" + "@cosmjs/crypto" "~0.30.0" + "@cosmjs/encoding" "~0.30.0" + "@cosmjs/math" "~0.30.0" + "@cosmjs/proto-signing" "~0.30.0" + "@cosmjs/stargate" "~0.30.0" + "@cosmjs/tendermint-rpc" "~0.30.0" + "@cosmjs/utils" "~0.30.0" + "@stablelib/ed25519" "^1.0.3" + cosmjs-types "^0.7.1" + did-jwt "^6.11.6" + did-resolver "^4.1.0" + file-type "^16.5.4" + long "^4.0.0" + multiformats "^9.9.0" + uuid "^9.0.0" + "@cheqd/sdk@cjs": version "2.2.0" resolved "https://registry.yarnpkg.com/@cheqd/sdk/-/sdk-2.2.0.tgz#0b07c0e2337fbe2bd7d62a49ce9fb4515711b52a" @@ -1670,6 +1705,14 @@ long "^5.2.1" protobufjs "^7.2.3" +"@cheqd/ts-proto@~2.2.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@cheqd/ts-proto/-/ts-proto-2.2.2.tgz#c0e808c6d438da7098a225ea24ee94db9822fa06" + integrity sha512-32XCz1tD/T8r9Pw6IWH+XDttnGEguN0/1dWoUnTZ6uIPAA65YYSz2Ba9ZJ69a7YipYzX9C1CRddVZ3u229dfYg== + dependencies: + long "^5.2.3" + protobufjs "^7.2.4" + "@cmfcmf/docusaurus-search-local@^0.10.0": version "0.10.0" resolved "https://registry.yarnpkg.com/@cmfcmf/docusaurus-search-local/-/docusaurus-search-local-0.10.0.tgz#0a77847641ec490f4663666e5eee07416f5a0c63" @@ -1707,6 +1750,16 @@ "@cosmjs/math" "^0.29.5" "@cosmjs/utils" "^0.29.5" +"@cosmjs/amino@^0.30.1", "@cosmjs/amino@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" + integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@cosmjs/amino@^0.31.3": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.31.3.tgz#0f4aa6bd68331c71bd51b187fa64f00eb075db0a" @@ -1730,6 +1783,19 @@ elliptic "^6.5.4" libsodium-wrappers "^0.7.6" +"@cosmjs/crypto@^0.30.1", "@cosmjs/crypto@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" + integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== + dependencies: + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + "@noble/hashes" "^1" + bn.js "^5.2.0" + elliptic "^6.5.4" + libsodium-wrappers "^0.7.6" + "@cosmjs/crypto@^0.31.3": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.31.3.tgz#c752cb6d682fdc735dcb45a2519f89c56ba16c26" @@ -1752,6 +1818,15 @@ bech32 "^1.1.4" readonly-date "^1.0.0" +"@cosmjs/encoding@^0.30.1", "@cosmjs/encoding@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" + integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== + dependencies: + base64-js "^1.3.0" + bech32 "^1.1.4" + readonly-date "^1.0.0" + "@cosmjs/encoding@^0.31.3": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.31.3.tgz#2519d9c9ae48368424971f253775c4580b54c5aa" @@ -1769,6 +1844,14 @@ "@cosmjs/stream" "^0.29.5" xstream "^11.14.0" +"@cosmjs/json-rpc@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" + integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== + dependencies: + "@cosmjs/stream" "^0.30.1" + xstream "^11.14.0" + "@cosmjs/math@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.29.5.tgz#722c96e080d6c2b62215ce9f4c70da7625b241b6" @@ -1776,6 +1859,13 @@ dependencies: bn.js "^5.2.0" +"@cosmjs/math@^0.30.1", "@cosmjs/math@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" + integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== + dependencies: + bn.js "^5.2.0" + "@cosmjs/math@^0.31.3": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.31.3.tgz#767f7263d12ba1b9ed2f01f68d857597839fd957" @@ -1796,6 +1886,19 @@ cosmjs-types "^0.5.2" long "^4.0.0" +"@cosmjs/proto-signing@^0.30.1", "@cosmjs/proto-signing@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" + integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== + dependencies: + "@cosmjs/amino" "^0.30.1" + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + "@cosmjs/proto-signing@^0.31.0": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.31.3.tgz#20440b7b96fb2cd924256a10e656fd8d4481cdcd" @@ -1819,6 +1922,16 @@ ws "^7" xstream "^11.14.0" +"@cosmjs/socket@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" + integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== + dependencies: + "@cosmjs/stream" "^0.30.1" + isomorphic-ws "^4.0.1" + ws "^7" + xstream "^11.14.0" + "@cosmjs/stargate@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.29.5.tgz#d597af1c85a3c2af7b5bdbec34d5d40692cc09e4" @@ -1837,6 +1950,24 @@ protobufjs "~6.11.3" xstream "^11.14.0" +"@cosmjs/stargate@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" + integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== + dependencies: + "@confio/ics23" "^0.6.8" + "@cosmjs/amino" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/proto-signing" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/tendermint-rpc" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + cosmjs-types "^0.7.1" + long "^4.0.0" + protobufjs "~6.11.3" + xstream "^11.14.0" + "@cosmjs/stream@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.29.5.tgz#350981cac496d04939b92ee793b9b19f44bc1d4e" @@ -1844,6 +1975,13 @@ dependencies: xstream "^11.14.0" +"@cosmjs/stream@^0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" + integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== + dependencies: + xstream "^11.14.0" + "@cosmjs/tendermint-rpc@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.29.5.tgz#f205c10464212bdf843f91bb2e4a093b618cb5c2" @@ -1860,70 +1998,96 @@ readonly-date "^1.0.0" xstream "^11.14.0" +"@cosmjs/tendermint-rpc@^0.30.1", "@cosmjs/tendermint-rpc@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" + integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== + dependencies: + "@cosmjs/crypto" "^0.30.1" + "@cosmjs/encoding" "^0.30.1" + "@cosmjs/json-rpc" "^0.30.1" + "@cosmjs/math" "^0.30.1" + "@cosmjs/socket" "^0.30.1" + "@cosmjs/stream" "^0.30.1" + "@cosmjs/utils" "^0.30.1" + axios "^0.21.2" + readonly-date "^1.0.0" + xstream "^11.14.0" + "@cosmjs/utils@^0.29.5": version "0.29.5" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.29.5.tgz#3fed1b3528ae8c5f1eb5d29b68755bebfd3294ee" integrity sha512-m7h+RXDUxOzEOGt4P+3OVPX7PuakZT3GBmaM/Y2u+abN3xZkziykD/NvedYFvvCCdQo714XcGl33bwifS9FZPQ== +"@cosmjs/utils@^0.30.1", "@cosmjs/utils@~0.30.0": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" + integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== + "@cosmjs/utils@^0.31.3": version "0.31.3" resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.31.3.tgz#f97bbfda35ad69e80cd5c7fe0a270cbda16db1ed" integrity sha512-VBhAgzrrYdIe0O5IbKRqwszbQa7ZyQLx9nEQuHQ3HUplQW7P44COG/ye2n6AzCudtqxmwdX7nyX8ta1J07GoqA== -"@credo-ts/anoncreds@0.5.0-alpha.110", "@credo-ts/anoncreds@0.5.0-alpha.110+9da02d4e": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/anoncreds/-/anoncreds-0.5.0-alpha.110.tgz#3dcbfa18b26a463b060a733a6dba44cd7d779103" - integrity sha512-+MmYXBEcfwhposMub428myuyAc+mnRp30/rMFDmVt7s6+cwVJFXDGCoV8ErSV5sts+PoECd+LcGPLGJPwGMnWQ== +"@credo-ts/anoncreds@0.5.3", "@credo-ts/anoncreds@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/anoncreds/-/anoncreds-0.5.3.tgz#3e6775b461fc34e377bebe2c0ca53c34ee630a26" + integrity sha512-NXkmbBnWEHnzorbXJ/4VlDZtdz9LrDfojPqX0ZZNIfGiV7K8/uuFHjr8LIPbzjfIsJiaL9VSxnoejHFkTOoilQ== dependencies: - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" + "@astronautlabs/jsonpath" "^1.1.2" + "@credo-ts/core" "0.5.3" + big-integer "^1.6.51" bn.js "^5.2.1" class-transformer "0.5.1" - class-validator "0.14.0" + class-validator "0.14.1" reflect-metadata "^0.1.13" -"@credo-ts/askar@0.5.0-alpha.110": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/askar/-/askar-0.5.0-alpha.110.tgz#8ca54e7b7a6cf462e9508e5e8f5d0ac69d39ad5a" - integrity sha512-qbHjfJ8UMccxroDhESAAz4X8uJNWUXX3vUbcHRX/7zmTqwNUt+1QSKzmNTuR8/h1pOL1TBGvBwp37ZldRiXFoA== +"@credo-ts/askar@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/askar/-/askar-0.5.3.tgz#53eaddd6247bbf0aabea436e722d646a0a603e2b" + integrity sha512-AegnSygDAiY77cgidxNAb/ROeGtCNFo2L0nvxXs5MqBIGreT/+llslc5+/FIHDsDfUNB70Y/KK2qsLTVU3MtRg== dependencies: - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" + "@credo-ts/core" "0.5.3" bn.js "^5.2.1" class-transformer "0.5.1" - class-validator "0.14.0" - rxjs "^7.2.0" + class-validator "0.14.1" + rxjs "^7.8.0" tsyringe "^4.8.0" -"@credo-ts/cheqd@0.5.0-alpha.110": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/cheqd/-/cheqd-0.5.0-alpha.110.tgz#1a9a3b5ce4f7449ce3cf1a679815f69dad4ad8df" - integrity sha512-cMYilmQsBk7HlVr22JcqYDyNG2ExhjtxNJHeLcLBFroU4DZwNVCukgFhjEpvUbbfgQnOojWZ87/QBL8xWzimLQ== - dependencies: - "@cheqd/sdk" cjs - "@cheqd/ts-proto" cjs - "@cosmjs/crypto" "^0.29.5" - "@cosmjs/proto-signing" "^0.31.0" - "@credo-ts/anoncreds" "0.5.0-alpha.110+9da02d4e" - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" +"@credo-ts/cheqd@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/cheqd/-/cheqd-0.5.3.tgz#7aa1c3ea33b73bc6b4d3f6e8a047d742622d05b4" + integrity sha512-PbIsgH6bY93ChEJQGAW03F9QNVsJ8splB/XpdnwAEJh2Tthnt/4n1WfsnKuazrP4+8N9+Ozzh7/E8+cVpHsCPQ== + dependencies: + "@cheqd/sdk" "^2.4.4" + "@cheqd/ts-proto" "~2.2.0" + "@cosmjs/crypto" "~0.30.0" + "@cosmjs/proto-signing" "~0.30.0" + "@credo-ts/anoncreds" "0.5.3" + "@credo-ts/core" "0.5.3" "@stablelib/ed25519" "^1.0.3" class-transformer "^0.5.1" - class-validator "^0.14.0" - rxjs "^7.2.0" + class-validator "0.14.1" + rxjs "^7.8.0" tsyringe "^4.8.0" -"@credo-ts/core@0.5.0-alpha.110", "@credo-ts/core@0.5.0-alpha.110+9da02d4e": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/core/-/core-0.5.0-alpha.110.tgz#c7b5091f8a8e567073e5e9aa6d69c763f30f0a9f" - integrity sha512-O8B88dn9qLIXeantTAhk+eZv7JBXyo0wunxmo6K5vqNn4giRt1YciibPC7MLPwnsczpLvRN773Nc5eWF5sqgvQ== +"@credo-ts/core@0.5.3", "@credo-ts/core@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/core/-/core-0.5.3.tgz#cccbce993acbe7651fb397e7a0933ffde3246027" + integrity sha512-bM9iNhhXWiJ4YdH5uqaIfK3XhZ6GjuzF0AwE1vMy586sZz05J1ZLQvIYzRpm/p3Buxj9rimnLrc4jcYNit0VUw== dependencies: "@digitalcredentials/jsonld" "^6.0.0" "@digitalcredentials/jsonld-signatures" "^9.4.0" "@digitalcredentials/vc" "^6.0.1" "@multiformats/base-x" "^4.0.1" - "@sphereon/pex" "^2.2.2" - "@sphereon/pex-models" "^2.1.2" - "@sphereon/ssi-types" "^0.17.5" + "@sd-jwt/core" "^0.6.1" + "@sd-jwt/decode" "^0.6.1" + "@sd-jwt/types" "^0.6.1" + "@sd-jwt/utils" "^0.6.1" + "@sphereon/pex" "^3.3.2" + "@sphereon/pex-models" "^2.2.4" + "@sphereon/ssi-types" "^0.23.0" "@stablelib/ed25519" "^1.0.2" - "@stablelib/random" "^1.0.1" "@stablelib/sha256" "^1.0.1" "@types/ws" "^8.5.4" abort-controller "^3.0.0" @@ -1931,7 +2095,7 @@ borc "^3.0.0" buffer "^6.0.3" class-transformer "0.5.1" - class-validator "0.14.0" + class-validator "0.14.1" did-resolver "^4.1.0" jsonpath "^1.1.1" lru_map "^0.4.1" @@ -1940,39 +2104,53 @@ object-inspect "^1.10.3" query-string "^7.0.1" reflect-metadata "^0.1.13" - rxjs "^7.2.0" + rxjs "^7.8.0" tsyringe "^4.8.0" uuid "^9.0.0" varint "^6.0.0" web-did-resolver "^2.0.21" -"@credo-ts/indy-vdr@0.5.0-alpha.110": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/indy-vdr/-/indy-vdr-0.5.0-alpha.110.tgz#2af819e336292cf4fd88106257e26b13451433a0" - integrity sha512-nuUcWhcrfICHkjAwxNN55riPm6odXLmmyjqmaq64MXD8YTpCzErjKaJIrr1RAeQ6FHr4L2v6EiDNS6sS0o3RnA== +"@credo-ts/indy-vdr@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/indy-vdr/-/indy-vdr-0.5.3.tgz#14c1fbe77b77f7214ee66807e4011a5e3c813819" + integrity sha512-UjydimYomJ2wArr0qkXy21I3PK6859vs/y/BEeKgt4b1cI7hGBZ23+DSTfxHZdf/fLy4k0iu+cfFwx3VoNyAng== dependencies: - "@credo-ts/anoncreds" "0.5.0-alpha.110+9da02d4e" - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" + "@credo-ts/anoncreds" "0.5.3" + "@credo-ts/core" "0.5.3" -"@credo-ts/node@0.5.0-alpha.110": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/node/-/node-0.5.0-alpha.110.tgz#c25812ce5c64ef76782d229ae1a97085df978878" - integrity sha512-w/jIpZ30YVdPAoTl9F6pdpVKOSpRnQI4itEDt513bz+tS8ndsoKgXbNJV2B5wO+N1J+X3ls8StMsz64iWAv7vA== +"@credo-ts/node@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/node/-/node-0.5.3.tgz#163e530fa3260835081b653363c2e610c3d5347d" + integrity sha512-CbriW2WqYyB1ak9PNR+5a1okKuxjepL1bgAbEk98rfveGccyV/misL5kCmWtT/bnETl9fB+UcJ47GbvBeNmDiQ== dependencies: - "@2060.io/ffi-napi" "^4.0.8" + "@2060.io/ffi-napi" "^4.0.9" "@2060.io/ref-napi" "^3.0.6" - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" + "@credo-ts/core" "0.5.3" "@types/express" "^4.17.15" express "^4.17.1" ws "^8.13.0" -"@credo-ts/react-native@0.5.0-alpha.110": - version "0.5.0-alpha.110" - resolved "https://registry.yarnpkg.com/@credo-ts/react-native/-/react-native-0.5.0-alpha.110.tgz#78d07ee5f18b332fa914e66924a9261499a807f7" - integrity sha512-OhyYeFvKKDtLfRTtzMjDlpI9I2sizwHeTwPIgfT5djzzMnA6ak3sGkKikk6jHB7LXaRnRnsF+0QWDBnXx7n8jQ== +"@credo-ts/openid4vc@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/openid4vc/-/openid4vc-0.5.3.tgz#b7858d8f872692237dd67591e04fc4319a9f69fb" + integrity sha512-SP0s06deIusUT71ui/yM8sOynF4rbd7Q7Pc+i9vdy/IUAfdZ4h7LFNcl+WvduAMLLGY49K0ncsyBUQukmkniDw== + dependencies: + "@credo-ts/core" "0.5.3" + "@sphereon/did-auth-siop" "^0.6.4" + "@sphereon/oid4vci-client" "^0.10.2" + "@sphereon/oid4vci-common" "^0.10.1" + "@sphereon/oid4vci-issuer" "^0.10.2" + "@sphereon/ssi-types" "^0.23.0" + class-transformer "^0.5.1" + rxjs "^7.8.0" + +"@credo-ts/react-native@^0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@credo-ts/react-native/-/react-native-0.5.3.tgz#4b4975123a9d558d338942cf107019308f673cf0" + integrity sha512-46b8R+8rYJQ/GuZHX2jFWRuc9E53pXG9vn1cftZ5H8+x0SYiOk0bQdQuNqvsYa52UK2wbA0eQh8e24hUp3yGAw== dependencies: "@azure/core-asynciterator-polyfill" "^1.0.2" - "@credo-ts/core" "0.5.0-alpha.110+9da02d4e" + "@credo-ts/core" "0.5.3" events "^3.3.0" "@cspotcode/source-map-support@^0.8.0": @@ -2474,7 +2652,7 @@ "@docusaurus/theme-search-algolia" "2.3.1" "@docusaurus/types" "2.3.1" -"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": +"@docusaurus/react-loadable@5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== @@ -2668,18 +2846,6 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@hyperledger/anoncreds-nodejs@0.2.0-dev.9": - version "0.2.0-dev.9" - resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-nodejs/-/anoncreds-nodejs-0.2.0-dev.9.tgz#f33385780485f97bb3122d90611cc584157d2be9" - integrity sha512-XrpaYNDJTpxzGMKJP7icePKnu0jhkCKP8U7LAS7cNxt5fgkJzW4zb4TPINLNKs28RFYwxm9fOss8R3mfCVEiuA== - dependencies: - "@2060.io/ffi-napi" "4.0.8" - "@2060.io/ref-napi" "3.0.6" - "@hyperledger/anoncreds-shared" "0.2.0-dev.9" - "@mapbox/node-pre-gyp" "^1.0.11" - ref-array-di "1.2.2" - ref-struct-di "1.1.1" - "@hyperledger/anoncreds-nodejs@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-nodejs/-/anoncreds-nodejs-0.1.0.tgz#925f4004af85e772a3ee55f240b281148cbfb6e6" @@ -2693,13 +2859,17 @@ ref-napi "3.0.3" ref-struct-di "1.1.1" -"@hyperledger/anoncreds-react-native@0.2.0-dev.9": - version "0.2.0-dev.9" - resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-react-native/-/anoncreds-react-native-0.2.0-dev.9.tgz#912656223f253efedb6752bc98a269d68701582c" - integrity sha512-evL0Xg4hKvrzacPeTAwlOAV6hYgPMJqJUz+/OVpqmhKheA9VUoUHwCeTyNnnj8o6cmBm7+SJpkIznlJcV1mI/g== +"@hyperledger/anoncreds-nodejs@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-nodejs/-/anoncreds-nodejs-0.2.1.tgz#7dbde3e878758371e4d44542daa7f54ecf48f38e" + integrity sha512-wfQEVSqYHq6mQFTLRMVayyi8kbHlz3RGEIe10JOQSHCw4ZCTifQ1XuVajSwOj8ykNYwxuckcfNikJtJScs7l+w== dependencies: - "@hyperledger/anoncreds-shared" "0.2.0-dev.9" - "@mapbox/node-pre-gyp" "^1.0.10" + "@2060.io/ffi-napi" "4.0.8" + "@2060.io/ref-napi" "3.0.6" + "@hyperledger/anoncreds-shared" "0.2.1" + "@mapbox/node-pre-gyp" "^1.0.11" + ref-array-di "1.2.2" + ref-struct-di "1.1.1" "@hyperledger/anoncreds-react-native@^0.1.0": version "0.1.0" @@ -2709,28 +2879,23 @@ "@hyperledger/anoncreds-shared" "0.1.0" "@mapbox/node-pre-gyp" "^1.0.10" +"@hyperledger/anoncreds-react-native@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-react-native/-/anoncreds-react-native-0.2.1.tgz#0402356591536b51d421de4a96096fe39ec8f37f" + integrity sha512-7dkc5hcLidniDVyCT2wM0mLkHVT68YB4aqnbN/iQvzRj5tM80zEM4MkPEV5BSkhKkr66HVZ91GFGR2fg555qIQ== + dependencies: + "@hyperledger/anoncreds-shared" "0.2.1" + "@mapbox/node-pre-gyp" "^1.0.10" + "@hyperledger/anoncreds-shared@0.1.0", "@hyperledger/anoncreds-shared@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-shared/-/anoncreds-shared-0.1.0.tgz#947c602c385bfa79b63849c9e48b51cc9d41d820" integrity sha512-DisZFY4YbrugRCCv7AtYFUTsrGigHF1dVaiA36WrhRUgetwDzKgMiYGkxFQmCe0IJ0mDw4M7sbTJBXxfxij/+A== -"@hyperledger/anoncreds-shared@0.2.0-dev.9": - version "0.2.0-dev.9" - resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-shared/-/anoncreds-shared-0.2.0-dev.9.tgz#da6cbab72324b1185f97e3edaf8fef752117795b" - integrity sha512-2cK6x2jq98JjKJQRYGmhyPWLB0aYBYrUDM1J/kSQP2RCRoHj1hHV6Ok/DlUmxk+wO1o+71gvb8CYvoGPMI6C4Q== - -"@hyperledger/aries-askar-nodejs@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-nodejs/-/aries-askar-nodejs-0.2.0-dev.6.tgz#0a86dc3215db8d147a4fef9404267a5e94e503a5" - integrity sha512-dnWcr31oOARRy0fhhw/CpfGhrxIg37UmZHJM0YB+fy30EmwXWHfZy8h1qy8D7uuyfD5FI1pXNDOlYgmMuLdJNQ== - dependencies: - "@2060.io/ffi-napi" "4.0.8" - "@2060.io/ref-napi" "3.0.6" - "@hyperledger/aries-askar-shared" "0.2.0-dev.6" - "@mapbox/node-pre-gyp" "^1.0.10" - node-cache "^5.1.2" - ref-array-di "^1.2.2" - ref-struct-di "^1.1.1" +"@hyperledger/anoncreds-shared@0.2.1", "@hyperledger/anoncreds-shared@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-shared/-/anoncreds-shared-0.2.1.tgz#7a8be78473e8cdd33b73ccdf2e9b838226aef0f9" + integrity sha512-QpkmsiDBto4B3MS7+tJKn8DHCuhaZuzPKy+SoSAIH8wrjBmQ4NQqzMBZXs0z0JnNr1egkIFR3HIFsIu9ayK20g== "@hyperledger/aries-askar-nodejs@^0.1.1": version "0.1.1" @@ -2745,13 +2910,18 @@ ref-napi "^3.0.3" ref-struct-di "^1.1.1" -"@hyperledger/aries-askar-react-native@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-react-native/-/aries-askar-react-native-0.2.0-dev.6.tgz#5f55d2524fc03ce30e118ca921e95b388874f251" - integrity sha512-gt0LDqyIaK3URt+rACUWioD4osi4ou8hiqub6WT2oxvZB8y/cHIAPEmeA4N7pPLbouKUXbVvPA3JLgGiTg5W4A== +"@hyperledger/aries-askar-nodejs@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-nodejs/-/aries-askar-nodejs-0.2.0.tgz#7a0b469184f0682d0e31955e29d091956f662273" + integrity sha512-d73D2zK1f1cM5y8MFp4BK+NvkquujDlRr91THpxkuRwmLf407gibOY3G4OdGIkL1kQtorGM5c5U0/qMzW+8E1Q== dependencies: - "@hyperledger/aries-askar-shared" "0.2.0-dev.6" + "@2060.io/ffi-napi" "4.0.8" + "@2060.io/ref-napi" "3.0.6" + "@hyperledger/aries-askar-shared" "0.2.0" "@mapbox/node-pre-gyp" "^1.0.10" + node-cache "^5.1.2" + ref-array-di "^1.2.2" + ref-struct-di "^1.1.1" "@hyperledger/aries-askar-react-native@^0.1.1": version "0.1.1" @@ -2761,6 +2931,14 @@ "@hyperledger/aries-askar-shared" "0.1.1" "@mapbox/node-pre-gyp" "^1.0.10" +"@hyperledger/aries-askar-react-native@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-react-native/-/aries-askar-react-native-0.2.0.tgz#46b1ec8cffbccdba8d80e00f6061daf1d934d55f" + integrity sha512-wSM/QGR3ACeO5D2jFGCEFnkuTrxRaKjPEuEiHi7YwfpFvKIh5B+60FwpeTy/LbPGDCHm6woR03eBV1NGgW54gw== + dependencies: + "@hyperledger/aries-askar-shared" "0.2.0" + "@mapbox/node-pre-gyp" "^1.0.10" + "@hyperledger/aries-askar-shared@0.1.1", "@hyperledger/aries-askar-shared@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-shared/-/aries-askar-shared-0.1.1.tgz#bdb34ad718e988db5a47d540fd22ba2c7a86a1d3" @@ -2768,25 +2946,13 @@ dependencies: fast-text-encoding "^1.0.3" -"@hyperledger/aries-askar-shared@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-shared/-/aries-askar-shared-0.2.0-dev.6.tgz#c94eec01ecbf70709d8b62744873dd05cba06ad9" - integrity sha512-gJa28QNR5yZI2DAnfb6/wafVaI2upcT1fmt0g+Qe68IY+JJXQHzijP+zuxR3EF8pQxFEJLBmlFDn3hPHr4Kpiw== +"@hyperledger/aries-askar-shared@0.2.0", "@hyperledger/aries-askar-shared@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-shared/-/aries-askar-shared-0.2.0.tgz#9291733f8fa1e3039dfe36e1fabca1819b93bd1b" + integrity sha512-A6bHbTwTtV1YT3XphNFltX34DCBtj7qPyip4R+WAQFnus5286a2xsppNvl5OAPMAxgKjQTdyFBqcYaNRc0lqIQ== dependencies: buffer "^6.0.3" -"@hyperledger/indy-vdr-nodejs@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-nodejs/-/indy-vdr-nodejs-0.2.0-dev.6.tgz#c21916600e17cf6ee46fc78a054cb904f9156594" - integrity sha512-yOmfOqJJJapJRWdKSJQG7q/frKGUrntoae4fiYnwdQEWy4rdRiyZPo0ht9R6uuZ/AQwxtNMMRylvQZBfHA+vKA== - dependencies: - "@2060.io/ffi-napi" "4.0.8" - "@2060.io/ref-napi" "3.0.6" - "@hyperledger/indy-vdr-shared" "0.2.0-dev.6" - "@mapbox/node-pre-gyp" "^1.0.10" - ref-array-di "^1.2.2" - ref-struct-di "^1.1.1" - "@hyperledger/indy-vdr-nodejs@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-nodejs/-/indy-vdr-nodejs-0.1.0.tgz#a006393e3ecb1a4661bbd52299b796247e8bde47" @@ -2800,13 +2966,17 @@ ref-napi "^3.0.3" ref-struct-di "^1.1.1" -"@hyperledger/indy-vdr-react-native@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-react-native/-/indy-vdr-react-native-0.2.0-dev.6.tgz#a742d268389eb614d7eaccd83bf9be78844d4c3f" - integrity sha512-BR1eQctpmoCH9PoY8q/HltOIEt39LyvwyoXMvoIZ4ICAeufTLNqI6hkKefpPPqkdkAnAhT5tgD02W295SA0KWw== +"@hyperledger/indy-vdr-nodejs@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-nodejs/-/indy-vdr-nodejs-0.2.1.tgz#9ea2a3d5d833dbcae327831a6d68c3c118682535" + integrity sha512-8AXypweZgdYazCX0qADR71gIn0TMmxAR9HStAJCNnLq4dAwvvt6NAXNt4ssiXc2pECgyTGiCb+gyyj8utPL1gg== dependencies: - "@hyperledger/indy-vdr-shared" "0.2.0-dev.6" + "@2060.io/ffi-napi" "4.0.8" + "@2060.io/ref-napi" "3.0.6" + "@hyperledger/indy-vdr-shared" "0.2.1" "@mapbox/node-pre-gyp" "^1.0.10" + ref-array-di "^1.2.2" + ref-struct-di "^1.1.1" "@hyperledger/indy-vdr-react-native@^0.1.0": version "0.1.0" @@ -2816,15 +2986,23 @@ "@hyperledger/indy-vdr-shared" "0.1.0" "@mapbox/node-pre-gyp" "^1.0.10" +"@hyperledger/indy-vdr-react-native@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-react-native/-/indy-vdr-react-native-0.2.1.tgz#674aba9d0296295e2699cf2b24c7c6319b4a7730" + integrity sha512-ZwVYwr6whh1LJDSk3CHBRgRARYCp0ecb4ok31khmyLC99nEB2HnP0ES6Mw8Bb94QXaP8djikYdIT2RB+bdlidg== + dependencies: + "@hyperledger/indy-vdr-shared" "0.2.1" + "@mapbox/node-pre-gyp" "^1.0.10" + "@hyperledger/indy-vdr-shared@0.1.0", "@hyperledger/indy-vdr-shared@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-shared/-/indy-vdr-shared-0.1.0.tgz#f8023a2d25ca9395ec2fd0e6a0dfbda6459fab03" integrity sha512-VfGraHX6RMmNcF4WYD5F1anjJzPN7KSrj5GP3g0hCrdXMDXEtO8t1lHQLVfrBgdjhR7gE82Nx+ZAYlGnTxoE+A== -"@hyperledger/indy-vdr-shared@0.2.0-dev.6": - version "0.2.0-dev.6" - resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-shared/-/indy-vdr-shared-0.2.0-dev.6.tgz#4954ee06fa8a2e4545b35cd525b7b86e0f10b6fe" - integrity sha512-pNLq0zkqv5rFCpU9tzyJ5DPvED5YE+UFP8iKwVD7fe+mAD6/VpweOunYNKgIBT4K1DYI21q7bs3SzxQZ0hLlKw== +"@hyperledger/indy-vdr-shared@0.2.1", "@hyperledger/indy-vdr-shared@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@hyperledger/indy-vdr-shared/-/indy-vdr-shared-0.2.1.tgz#c48e63557277b81f5a5ad5e6ee05c54155e3718a" + integrity sha512-kyHedFiV3Y9+1CRaShjBgsgCPp/FOAZ5/6wY2+twlbOMfl5N1yC9C8mw2fzBDs99gYzMO3edz4sFxoInnT2sag== "@jest/schemas@^29.4.3": version "29.4.3" @@ -3105,6 +3283,67 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== +"@sd-jwt/core@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/core/-/core-0.6.1.tgz#d28be10d0f4b672636fcf7ad71737cb08e5dae96" + integrity sha512-egFTb23o6BGWF93vnjopN02rSiC1HOOnkk9BI8Kao3jz9ipZAHdO6wF7gwfZm5Nlol/Kd1/KSLhbOUPYt++FjA== + dependencies: + "@sd-jwt/decode" "0.6.1" + "@sd-jwt/present" "0.6.1" + "@sd-jwt/types" "0.6.1" + "@sd-jwt/utils" "0.6.1" + +"@sd-jwt/decode@0.6.1", "@sd-jwt/decode@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/decode/-/decode-0.6.1.tgz#141f7782df53bab7159a75d91ed4711e1c14a7ea" + integrity sha512-QgTIoYd5zyKKLgXB4xEYJTrvumVwtsj5Dog0v0L9UH9ZvHekDaeexS247X7A4iSdzTvmZzUpGskgABOa4D8NmQ== + dependencies: + "@sd-jwt/types" "0.6.1" + "@sd-jwt/utils" "0.6.1" + +"@sd-jwt/decode@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/decode/-/decode-0.2.1.tgz#e0fb32dd2a95440ad69237e66ea2cd4770ec7e09" + integrity sha512-rs55WB3llrMObxN8jeMl06km/h0WivO9jSWNubO9JUIdlfrVhssU38xoXakvQeSDjAJkUUhfZcvmC2vNo1X6Wg== + dependencies: + "@sd-jwt/types" "0.2.1" + "@sd-jwt/utils" "0.2.1" + +"@sd-jwt/present@0.6.1", "@sd-jwt/present@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/present/-/present-0.6.1.tgz#82b9188becb0fa240897c397d84a54d55c7d169e" + integrity sha512-QRD3TUDLj4PqQNZ70bBxh8FLLrOE9mY8V9qiZrJSsaDOLFs2p1CtZG+v9ig62fxFYJZMf4bWKwYjz+qqGAtxCg== + dependencies: + "@sd-jwt/decode" "0.6.1" + "@sd-jwt/types" "0.6.1" + "@sd-jwt/utils" "0.6.1" + +"@sd-jwt/types@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/types/-/types-0.2.1.tgz#e1e6b47728dffa90ed244e15e2253bd01793cb96" + integrity sha512-nbNik/cq6UIMsN144FcgPZQzaqIsjEEj307j3ZSFORkQBR4Tsmcj54aswTuNh0Z0z/4aSbfw14vOKBZvRWyVLQ== + +"@sd-jwt/types@0.6.1", "@sd-jwt/types@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/types/-/types-0.6.1.tgz#fc4235e00cf40d35a21d6bc02e44e12d7162aa9b" + integrity sha512-LKpABZJGT77jNhOLvAHIkNNmGqXzyfwBT+6r+DN9zNzMx1CzuNR0qXk1GMUbast9iCfPkGbnEpUv/jHTBvlIvg== + +"@sd-jwt/utils@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/utils/-/utils-0.2.1.tgz#35ad83232eab2de911e765d93222acd871982a5e" + integrity sha512-9eRrge44dhE3fenawR/RZGxP5iuW9DtgdOVANu/JK5PEl80r0fDsMwm/gDjuv8OgLDCmQ6uSaVte1lYaTG71bQ== + dependencies: + "@sd-jwt/types" "0.2.1" + buffer "*" + +"@sd-jwt/utils@0.6.1", "@sd-jwt/utils@^0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@sd-jwt/utils/-/utils-0.6.1.tgz#33273b20c9eb1954e4eab34118158b646b574ff9" + integrity sha512-1NHZ//+GecGQJb+gSdDicnrHG0DvACUk9jTnXA5yLZhlRjgkjyfJLNsCZesYeCyVp/SiyvIC9B+JwoY4kI0TwQ== + dependencies: + "@sd-jwt/types" "0.6.1" + js-base64 "^3.7.6" + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -3146,30 +3385,127 @@ resolved "https://registry.yarnpkg.com/@sovpro/delimited-stream/-/delimited-stream-1.1.0.tgz#4334bba7ee241036e580fdd99c019377630d26b4" integrity sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw== -"@sphereon/pex-models@^2.1.2": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@sphereon/pex-models/-/pex-models-2.1.5.tgz#ba4474a3783081392b72403c4c8ee6da3d2e5585" - integrity sha512-7THexvdYUK/Dh8olBB46ErT9q/RnecnMdb5r2iwZ6be0Dt4vQLAUN7QU80H0HZBok4jRTb8ydt12x0raBSTHOg== +"@sphereon/did-auth-siop@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@sphereon/did-auth-siop/-/did-auth-siop-0.6.4.tgz#7abf0d0e8d2aa0f4108b90c2d7f6186093a23019" + integrity sha512-0hw/lypy7kHpChJc/206XFd1XVhfUEIg2RIuw2u0RE3POqMeuOL5DWiPHh3e7Oo0nzG9gdgJC8Yffv69d9QIrg== + dependencies: + "@astronautlabs/jsonpath" "^1.1.2" + "@sphereon/did-uni-client" "^0.6.2" + "@sphereon/pex" "^3.3.2" + "@sphereon/pex-models" "^2.2.4" + "@sphereon/ssi-types" "0.22.0" + "@sphereon/wellknown-dids-client" "^0.1.3" + cross-fetch "^4.0.0" + did-jwt "6.11.6" + did-resolver "^4.1.0" + events "^3.3.0" + language-tags "^1.0.9" + multiformats "^12.1.3" + qs "^6.11.2" + sha.js "^2.4.11" + uint8arrays "^3.1.1" + uuid "^9.0.0" -"@sphereon/pex@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-2.2.2.tgz#3df9ed75281b46f0899256774060ed2ff982fade" - integrity sha512-NkR8iDTC2PSnYsOHlG2M2iOpFTTbzszs2/pL3iK3Dlv9QYLqX7NtPAlmeSwaoVP1NB1ewcs6U1DtemQAD+90yQ== +"@sphereon/did-uni-client@^0.6.2": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@sphereon/did-uni-client/-/did-uni-client-0.6.3.tgz#91a96cb233c58bbc226e865874e02214e8f0f82e" + integrity sha512-g7LD7ofbE36slHN7Bhr5dwUrj6t0BuZeXBYJMaVY/pOeL1vJxW1cZHbZqu0NSfOmzyBg4nsYVlgTjyi/Aua2ew== + dependencies: + cross-fetch "^3.1.8" + did-resolver "^4.1.0" + +"@sphereon/oid4vci-client@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@sphereon/oid4vci-client/-/oid4vci-client-0.10.2.tgz#70ceff97e6fb8220e8de5e626359ad2ea146ef1e" + integrity sha512-G0vE9/MwdyHQnYpnuaJqbRSIKXCLVyOVhJtJCKuqMEa9oYoNx+DwRKt5zjeiHfVxjjDoauFQ8qP2WOuvsqdR0w== + dependencies: + "@sphereon/oid4vci-common" "0.10.1" + "@sphereon/ssi-types" "^0.18.1" + cross-fetch "^3.1.8" + debug "^4.3.4" + +"@sphereon/oid4vci-common@0.10.1", "@sphereon/oid4vci-common@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@sphereon/oid4vci-common/-/oid4vci-common-0.10.1.tgz#49bc77bcdef0e9696526e9517a3caed3fc134804" + integrity sha512-J5MdekO5/EgA7UCpMFdPgAnift1vzvauH5ll19iYZoxKlTL1DZ1yiablo47l3aaral7DASM99HJyHfL7ceGcvg== + dependencies: + "@sphereon/ssi-types" "^0.18.1" + cross-fetch "^3.1.8" + jwt-decode "^3.1.2" + sha.js "^2.4.11" + uint8arrays "3.1.1" + +"@sphereon/oid4vci-issuer@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@sphereon/oid4vci-issuer/-/oid4vci-issuer-0.10.2.tgz#9d9d2ac73927b59e9feba784d1ea87971af7281e" + integrity sha512-9EteuVxZe2tWfmISLelDWBhSzN4s/TAg74z9VDHoyzX/4EED/wtCYXny8JZRwBZAAc9Pdl/3qADe15d3rOQqJw== + dependencies: + "@sphereon/oid4vci-common" "0.10.1" + "@sphereon/ssi-types" "^0.18.1" + uuid "^9.0.0" + +"@sphereon/pex-models@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@sphereon/pex-models/-/pex-models-2.2.4.tgz#0ce28e9858b38012fe1ff7d9fd12ec503473ee66" + integrity sha512-pGlp+wplneE1+Lk3U48/2htYKTbONMeG5/x7vhO6AnPUOsnOXeJdftPrBYWVSzz/JH5GJptAc6+pAyYE1zMu4Q== + +"@sphereon/pex@^3.3.2": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-3.3.3.tgz#8712ecc3c1a2548bd5e531bb41dd54e8010c1dc5" + integrity sha512-CXwdEcMTUh2z/5AriBn3OuShEG06l2tgiIr7qDJthnkez8DQ3sZo2vr4NEQWKKAL+DeAWAI4FryQGO4KuK7yfg== dependencies: "@astronautlabs/jsonpath" "^1.1.2" - "@sphereon/pex-models" "^2.1.2" - "@sphereon/ssi-types" "^0.17.5" + "@sd-jwt/decode" "^0.6.1" + "@sd-jwt/present" "^0.6.1" + "@sd-jwt/types" "^0.6.1" + "@sphereon/pex-models" "^2.2.4" + "@sphereon/ssi-types" "0.22.0" ajv "^8.12.0" ajv-formats "^2.1.1" jwt-decode "^3.1.2" - nanoid "^3.3.6" - string.prototype.matchall "^4.0.8" + nanoid "^3.3.7" + string.prototype.matchall "^4.0.10" + uint8arrays "^3.1.1" -"@sphereon/ssi-types@^0.17.5": - version "0.17.5" - resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.17.5.tgz#7b4de0326e7c2993ab816caeef6deaea41a5f65f" - integrity sha512-hoQOkeOtshvIzNAG+HTqcKxeGssLVfwX7oILHJgs6VMb1GhR6QlqjMAxflDxZ/8Aq2R0I6fEPWmf73zAXY2X2Q== +"@sphereon/ssi-types@0.22.0": + version "0.22.0" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.22.0.tgz#da2eed7296e8932271af0c72a66eeea20b0b5689" + integrity sha512-YPJAZlKmzNALXK8ohP3ETxj1oVzL4+M9ljj3fD5xrbacvYax1JPCVKc8BWSubGcQckKHPbgbpcS7LYEeghyT9Q== dependencies: + "@sd-jwt/decode" "^0.6.1" + jwt-decode "^3.1.2" + +"@sphereon/ssi-types@^0.18.1": + version "0.18.1" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.18.1.tgz#c00e4939149f4e441fae56af860735886a4c33a5" + integrity sha512-uM0gb1woyc0R+p+qh8tVDi15ZWmpzo9BP0iBp/yRkJar7gAfgwox/yvtEToaH9jROKnDCwL3DDQCDeNucpMkwg== + dependencies: + "@sd-jwt/decode" "^0.2.0" + jwt-decode "^3.1.2" + +"@sphereon/ssi-types@^0.23.0": + version "0.23.4" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.23.4.tgz#8d53e12b51e00376fdc0190c8244b1602f12d5ca" + integrity sha512-1lM2yfOEhpcYYBxm/12KYY4n3ZSahVf5rFqGdterQkMJMthwr20HqTjw3+VK5p7IVf+86DyBoZJyS4V9tSsoCA== + dependencies: + "@sd-jwt/decode" "^0.6.1" + jwt-decode "^3.1.2" + +"@sphereon/ssi-types@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.9.0.tgz#d140eb6abd77381926d0da7ac51b3c4b96a31b4b" + integrity sha512-umCr/syNcmvMMbQ+i/r/mwjI1Qw2aFPp9AwBTvTo1ailAVaaJjJGPkkVz1K9/2NZATNdDiQ3A8yGzdVJoKh9pA== + dependencies: + jwt-decode "^3.1.2" + +"@sphereon/wellknown-dids-client@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@sphereon/wellknown-dids-client/-/wellknown-dids-client-0.1.3.tgz#4711599ed732903e9f45fe051660f925c9b508a4" + integrity sha512-TAT24L3RoXD8ocrkTcsz7HuJmgjNjdoV6IXP1p3DdaI/GqkynytXE3J1+F7vUFMRYwY5nW2RaXSgDQhrFJemaA== + dependencies: + "@sphereon/ssi-types" "^0.9.0" + cross-fetch "^3.1.5" jwt-decode "^3.1.2" "@stablelib/aead@^1.0.1": @@ -3421,6 +3757,11 @@ dependencies: defer-to-connect "^1.0.1" +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -3555,7 +3896,7 @@ dependencies: "@types/node" "*" -"@types/indy-sdk-react-native@npm:@types/indy-sdk@1.16.26", "@types/indy-sdk@1.16.26": +"@types/indy-sdk-react-native@npm:@types/indy-sdk@1.16.26": version "1.16.26" resolved "https://registry.yarnpkg.com/@types/indy-sdk/-/indy-sdk-1.16.26.tgz#871f82c3f7d241d649aff5eb6800048890efb8f8" integrity sha512-KlnjsVsX/7yTmyyIlHWcytlBHoQ1vPGeiLnLv5y1vDftL6OQ5V+hebfAr7d3roMEsjCTH3qKkklwGcj1qS90YA== @@ -3569,6 +3910,13 @@ dependencies: buffer "^6.0.0" +"@types/indy-sdk@1.16.26": + version "1.16.26" + resolved "https://registry.yarnpkg.com/@types/indy-sdk/-/indy-sdk-1.16.26.tgz#871f82c3f7d241d649aff5eb6800048890efb8f8" + integrity sha512-KlnjsVsX/7yTmyyIlHWcytlBHoQ1vPGeiLnLv5y1vDftL6OQ5V+hebfAr7d3roMEsjCTH3qKkklwGcj1qS90YA== + dependencies: + buffer "^6.0.0" + "@types/indy-sdk@1.16.27": version "1.16.27" resolved "https://registry.yarnpkg.com/@types/indy-sdk/-/indy-sdk-1.16.27.tgz#f5f01fe2cd39b74cacf91ea84d46a2e351cefa3b" @@ -3771,6 +4119,11 @@ resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.14.tgz#5512aef43ba353ea2fe2d0d8c7ce71c75c2ad9e6" integrity sha512-J6OAed6rhN6zyqL9Of6ZMamhlsOEU/poBVvbHr/dKOYKTeuYYMlDkMv+b6UUV0o2i0tw73cgyv/97WTWaUl0/g== +"@types/validator@^13.11.8": + version "13.11.9" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.9.tgz#adfe96520b437a0eaa798a475877bf2f75ee402d" + integrity sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw== + "@types/ws@^7.4.6": version "7.4.7" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" @@ -4173,6 +4526,14 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -4209,6 +4570,20 @@ arraybuffer.prototype.slice@^1.0.2: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -4255,6 +4630,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -4554,7 +4936,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^6.0.0, buffer@^6.0.2, buffer@^6.0.3: +buffer@*, buffer@^6.0.0, buffer@^6.0.2, buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -4626,6 +5008,17 @@ call-bind@^1.0.4, call-bind@^1.0.5: get-intrinsic "^1.2.1" set-function-length "^1.1.1" +call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -4799,6 +5192,15 @@ class-validator@0.14.0, class-validator@^0.14.0: libphonenumber-js "^1.10.14" validator "^13.7.0" +class-validator@0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/class-validator/-/class-validator-0.14.1.tgz#ff2411ed8134e9d76acfeb14872884448be98110" + integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ== + dependencies: + "@types/validator" "^13.11.8" + libphonenumber-js "^1.10.53" + validator "^13.9.0" + clean-css@^5.2.2, clean-css@^5.3.0: version "5.3.2" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" @@ -5134,6 +5536,14 @@ cosmjs-types@^0.5.2: long "^4.0.0" protobufjs "~6.11.2" +cosmjs-types@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" + integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== + dependencies: + long "^4.0.0" + protobufjs "~6.11.2" + cosmjs-types@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.8.0.tgz#2ed78f3e990f770229726f95f3ef5bf9e2b6859b" @@ -5159,6 +5569,20 @@ cross-fetch@^3.1.5: dependencies: node-fetch "2.6.7" +cross-fetch@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -5614,6 +6038,33 @@ data-uri-to-buffer@^4.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dayjs@^1.11.7: version "1.11.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" @@ -5626,7 +6077,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5688,6 +6139,15 @@ define-data-property@^1.0.1, define-data-property@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.0" +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -5789,7 +6249,7 @@ detect-port@^1.3.0: address "^1.0.1" debug "4" -did-jwt@^6.11.6: +did-jwt@6.11.6, did-jwt@^6.11.6: version "6.11.6" resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-6.11.6.tgz#3eeb30d6bd01f33bfa17089574915845802a7d44" integrity sha512-OfbWknRxJuUqH6Lk0x+H1FsuelGugLbBDEwsoJnicFOntIG/A4y19fn0a8RLxaQbWQ5gXg0yDq5E2huSBiiXzw== @@ -6100,11 +6560,82 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" +es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" @@ -6114,6 +6645,15 @@ es-set-tostringtag@^2.0.1: has-tostringtag "^1.0.0" hasown "^2.0.0" +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -6484,6 +7024,15 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-type@^16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -6749,6 +7298,17 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -6781,6 +7341,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + get-symbol-from-current-process-h@^1.0.1, get-symbol-from-current-process-h@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz#510af52eaef873f7028854c3377f47f7bb200265" @@ -6967,11 +7536,23 @@ has-property-descriptors@^1.0.1: dependencies: get-intrinsic "^1.2.2" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== +has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" @@ -6984,6 +7565,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -7016,6 +7604,13 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -7413,6 +8008,15 @@ internal-slot@^1.0.5: hasown "^2.0.0" side-channel "^1.0.4" +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + "internmap@1 - 2": version "2.0.3" resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" @@ -7467,6 +8071,14 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: get-intrinsic "^1.2.0" is-typed-array "^1.1.10" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -7518,6 +8130,13 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" @@ -7580,6 +8199,11 @@ is-negative-zero@^2.0.2: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" @@ -7659,6 +8283,13 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -7685,6 +8316,13 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -7814,6 +8452,11 @@ joi@^17.6.0: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" +js-base64@^3.7.6: + version "3.7.7" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.7.tgz#e51b84bf78fbf5702b9541e2cb7bfcb893b43e79" + integrity sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw== + js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -7976,6 +8619,18 @@ ky@^0.33.3: resolved "https://registry.yarnpkg.com/ky/-/ky-0.33.3.tgz#bf1ad322a3f2c3428c13cfa4b3af95e6c4a2f543" integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw== +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + latest-version@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" @@ -8019,6 +8674,11 @@ libphonenumber-js@^1.10.14, libphonenumber-js@^1.9.7: resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.26.tgz#3e6604357b3434b0005f85778b44153f4fadeecd" integrity sha512-oB3l4J5gEhMV+ymmlIjWedsbCpsNRqbEZ/E/MpN2QVyinKNra6DcuXywxSk/72M3DZDoH/6kzurOq1erznBMwQ== +libphonenumber-js@^1.10.53: + version "1.10.59" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.59.tgz#ece26801dcf11fe3f8265bbc01981d9d808f9e6c" + integrity sha512-HeTsOrDF/hWhEiKqZVwg9Cqlep5x2T+IYDENvT2VRj3iX8JQ7Y+omENv+AIn0vC8m6GYhivfCed5Cgfw27r5SA== + libsodium-sumo@^0.7.13: version "0.7.13" resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.13.tgz#533b97d2be44b1277e59c1f9f60805978ac5542d" @@ -8134,7 +8794,7 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== -long@^5.0.0, long@^5.2.1: +long@^5.0.0, long@^5.2.1, long@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== @@ -8511,6 +9171,11 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" +multiformats@^12.1.3: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + multiformats@^9.4.2, multiformats@^9.6.5, multiformats@^9.9.0: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" @@ -8521,7 +9186,7 @@ nan@^2.11.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.6: +nanoid@^3.3.6, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== @@ -8595,6 +9260,13 @@ node-fetch@3.0.0-beta.9: data-uri-to-buffer "^3.0.1" fetch-blob "^2.1.1" +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^3.2.10: version "3.3.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" @@ -8741,7 +9413,7 @@ object.assign@^4.1.0: has-symbols "^1.0.3" object-keys "^1.1.1" -object.assign@^4.1.4: +object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -9010,6 +9682,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -9034,6 +9711,11 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -9454,6 +10136,24 @@ protobufjs@^7.2.3: "@types/node" ">=13.7.0" long "^5.0.0" +protobufjs@^7.2.4: + version "7.3.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" + integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -9511,6 +10211,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.11.2: + version "6.12.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.0.tgz#edd40c3b823995946a8a0b1f208669c7a200db77" + integrity sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg== + dependencies: + side-channel "^1.0.6" + query-string@^7.0.1: version "7.1.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" @@ -9682,6 +10389,14 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" +"react-loadable@npm:@docusaurus/react-loadable@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" + integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== + dependencies: + "@types/react" "*" + prop-types "^15.6.2" + react-native-securerandom@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/react-native-securerandom/-/react-native-securerandom-0.1.1.tgz#f130623a412c338b0afadedbc204c5cbb8bf2070" @@ -9763,6 +10478,13 @@ readable-stream@^3.0.6, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9848,7 +10570,7 @@ regenerator-transform@^0.15.1: dependencies: "@babel/runtime" "^7.8.4" -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: +regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -9857,6 +10579,16 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + regexpu-core@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" @@ -10078,6 +10810,13 @@ rxjs@^7.2.0, rxjs@^7.5.4: dependencies: tslib "^2.1.0" +rxjs@^7.8.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-array-concat@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" @@ -10088,12 +10827,22 @@ safe-array-concat@^1.0.1: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10107,6 +10856,15 @@ safe-regex-test@^1.0.0: get-intrinsic "^1.2.2" is-regex "^1.1.4" +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -10292,6 +11050,18 @@ set-function-length@^1.1.1: gopd "^1.0.1" has-property-descriptors "^1.0.1" +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -10301,6 +11071,16 @@ set-function-name@^2.0.0: functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -10316,6 +11096,14 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.11: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -10363,6 +11151,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -10566,20 +11364,23 @@ string-width@^5.0.1: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== +string.prototype.matchall@^4.0.10: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" string.prototype.trim@^1.2.8: version "1.2.8" @@ -10590,6 +11391,16 @@ string.prototype.trim@^1.2.8: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + string.prototype.trimend@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" @@ -10599,6 +11410,15 @@ string.prototype.trimend@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" @@ -10608,6 +11428,15 @@ string.prototype.trimstart@^1.0.7: define-properties "^1.2.0" es-abstract "^1.22.1" +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10665,6 +11494,14 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -10819,6 +11656,14 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + totalist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" @@ -10936,6 +11781,15 @@ typed-array-buffer@^1.0.0: get-intrinsic "^1.2.1" is-typed-array "^1.1.10" +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + typed-array-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" @@ -10946,6 +11800,17 @@ typed-array-byte-length@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + typed-array-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" @@ -10957,6 +11822,18 @@ typed-array-byte-offset@^1.0.0: has-proto "^1.0.1" is-typed-array "^1.1.10" +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -10966,6 +11843,18 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -10983,7 +11872,7 @@ ua-parser-js@^0.7.30: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" integrity sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g== -uint8arrays@^3.0.0: +uint8arrays@3.1.1, uint8arrays@^3.0.0, uint8arrays@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== @@ -11277,6 +12166,11 @@ validator@^13.5.2, validator@^13.7.0: resolved "https://registry.yarnpkg.com/validator/-/validator-13.9.0.tgz#33e7b85b604f3bbce9bb1a05d5c3e22e1c2ff855" integrity sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA== +validator@^13.9.0: + version "13.11.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" + integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -11545,6 +12439,17 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From d71a591e2fbbbfdb2f7e8c2cca6be63ecbab0b47 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Tue, 4 Jun 2024 18:06:10 +0800 Subject: [PATCH 2/9] typo Signed-off-by: Timo Glastra --- guides/updating/versions/0.4-to-0.5.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/updating/versions/0.4-to-0.5.md b/guides/updating/versions/0.4-to-0.5.md index a22cedf1..3806c2a6 100644 --- a/guides/updating/versions/0.4-to-0.5.md +++ b/guides/updating/versions/0.4-to-0.5.md @@ -242,7 +242,7 @@ const agent = new Agent({ -Next, update your credential receiving logic to first resolve the credential offer (using `agent.modules.openId4VcHolder.resolverCredentialOffer`), and then accept the credential offer (using `agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode`). +Next, update your credential receiving logic to first resolve the credential offer (using `agent.modules.openId4VcHolder.resolveCredentialOffer`), and then accept the credential offer (using `agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode`). @@ -292,7 +292,7 @@ import { OpenId4VciCredentialFormatProfile } from '@credo-ts/openid4vc' // Example uri const data = 'openid-credential-offer://?credential_offer_uri=...' -const resolvedCredentialOffer = await agent.modules.openId4VcHolder.resolverCredentialOffer(data) +const resolvedCredentialOffer = await agent.modules.openId4VcHolder.resolveCredentialOffer(data) await agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode( // First parameter is now the resolved credential offer From 86f621757537f90395cf2a085e259a8c71dc3926 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Tue, 4 Jun 2024 18:17:48 +0800 Subject: [PATCH 3/9] type issues Signed-off-by: Timo Glastra --- snippets/current/src/set-up-cheqd.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/snippets/current/src/set-up-cheqd.ts b/snippets/current/src/set-up-cheqd.ts index b606a712..92fb81c7 100644 --- a/snippets/current/src/set-up-cheqd.ts +++ b/snippets/current/src/set-up-cheqd.ts @@ -82,9 +82,7 @@ const ed25519PublicKeyBase58 = key.publicKeyBase58 await agent.dids.create({ method: 'cheqd', secret: {}, - options: { - network: 'testnet', - }, + options: {}, didDocument: new DidDocument({ id: 'did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d', controller: ['did:cheqd:testnet:92874297-d824-40ea-8ae5-364a1ec9237d'], From 7b13efff3f282ec43164908a73a72468bbd18451 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Tue, 4 Jun 2024 20:48:25 +0800 Subject: [PATCH 4/9] feat: openid4vc guides Signed-off-by: Timo Glastra --- guides/getting-started/set-up/cheqd/index.md | 2 +- guides/getting-started/set-up/openid4vc.md | 37 ++ ...e-an-anoncreds-credential-over-didcomm.md} | 16 +- guides/tutorials/openid4vc/index.md | 7 + ...edentials-using-openid4vc-issuer-module.md | 39 ++ ...edentials-using-openid4vc-holder-module.md | 25 + ...entials-using-openid4vc-verifier-module.md | 23 + guides/updating/versions/0.2-to-0.3.md | 2 +- guides/updating/versions/0.4-to-0.5.md | 2 +- package.json | 6 +- sidebars.js | 14 +- snippets/current/package.json | 3 +- ... => issue-anoncreds-credential-didcomm.ts} | 1 + snippets/current/src/sd-jwt-vc-openid4vc.ts | 435 ++++++++++++++++++ .../current/src/set-up-openid4vc-holder.ts | 35 ++ .../src/set-up-openid4vc-issuer-verifier.ts | 79 ++++ 16 files changed, 710 insertions(+), 16 deletions(-) create mode 100644 guides/getting-started/set-up/openid4vc.md rename guides/tutorials/{issue-a-credential.md => issue-an-anoncreds-credential-over-didcomm.md} (82%) create mode 100644 guides/tutorials/openid4vc/index.md create mode 100644 guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md create mode 100644 guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md create mode 100644 guides/tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module.md rename snippets/current/src/{issue-a-credential.ts => issue-anoncreds-credential-didcomm.ts} (99%) create mode 100644 snippets/current/src/sd-jwt-vc-openid4vc.ts create mode 100644 snippets/current/src/set-up-openid4vc-holder.ts create mode 100644 snippets/current/src/set-up-openid4vc-issuer-verifier.ts diff --git a/guides/getting-started/set-up/cheqd/index.md b/guides/getting-started/set-up/cheqd/index.md index c0bc9135..10ed94c3 100644 --- a/guides/getting-started/set-up/cheqd/index.md +++ b/guides/getting-started/set-up/cheqd/index.md @@ -91,4 +91,4 @@ The cosmosPayerSeed can be a 32-bit seed value or a mnemonic, which can be manag - [Cheqd DID Module](../../../tutorials/cheqd/index.md) - [Register Schema and Credential Definition](../../../tutorials/registering-schema-and-credential-definition.md) -- [Issue a Credential](../../../tutorials/issue-a-credential.md) +- [Issue an AnonCreds Credential over DIDComm](../../../tutorials/issue-an-anoncreds-credential-over-didcomm.md) diff --git a/guides/getting-started/set-up/openid4vc.md b/guides/getting-started/set-up/openid4vc.md new file mode 100644 index 00000000..013a3d10 --- /dev/null +++ b/guides/getting-started/set-up/openid4vc.md @@ -0,0 +1,37 @@ +# OpenID for Verifiable Credentials + +The OpenID4VC module provides support for the [OpenID for Verifiable Credentials group of protocols](https://openid.net/sg/openid4vc/) defined under the OpenID Foundation. Currently this includes the [OpenID for Verifiable Credential Issuance](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html), [Self-Issued OpenID Provider v2](https://openid.net/specs/openid-connect-self-issued-v2-1_0.html), and [OpenID for Verifiable Presentations](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html). + +For the current supported versions for any of the OpenID4VC protocols, please refer to the [OpenID4VC Feature](../../features/openid4vc.md) page. + +The OpenID4VC Module in Credo currently exposes three modules, one for each role in the triangle trust: `OpenId4VcIssuerModule`, `OpenId4VcHolderModule`, and `OpenId4VcVerifierModule`. The issuer and verifier modules are expected to run in a cloud environment, as they require several endpoints to be exposed to the public internet. The holder module can run in a cloud environment or on a mobile device. + +### Installing OpenID4VC Module + +When using Credo with OpenID4VC you need to install the `@credo-ts/openid4vc` module: + +```console +yarn add @credo-ts/openid4vc@^0.5.3 +``` + +### Adding OpenID4VC Modules to the Agent + +After installing the dependencies, we can register the the different modules on the agent. + +#### Issuer and Verifier + +If you want to issue or verify credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcIssuerModule` and the `OpenId4VcVerifierModule`. These modules can only run on the server, in Node.JS and don't work in a React Native environment. These modules can be added separately, it's not required to use both modules. The set up for the issuer and verifier module can be combined with the set up for the holder module below to support issuance, holding, and verification OpenID4VC flows within the same agent. + +In the example we haven't implemented the `credentialRequestToCredentialMapper` method for the issuer module yet, this is covered in the [OpenID4VC Guides](/guides/tutorials/openid4vc). + +```typescript showLineNumbers set-up-openid4vc-issuer-verifier.ts section-1 + +``` + +### Holder + +If you want to receive and present credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcHolderModule`. This module can run in both Node.JS and React Native. + +```typescript showLineNumbers set-up-openid4vc-holder.ts section-1 + +``` diff --git a/guides/tutorials/issue-a-credential.md b/guides/tutorials/issue-an-anoncreds-credential-over-didcomm.md similarity index 82% rename from guides/tutorials/issue-a-credential.md rename to guides/tutorials/issue-an-anoncreds-credential-over-didcomm.md index d99f6e1c..f1bd7f98 100644 --- a/guides/tutorials/issue-a-credential.md +++ b/guides/tutorials/issue-an-anoncreds-credential-over-didcomm.md @@ -1,6 +1,6 @@ -# Issue a credential +# Issue an AnonCreds credential over DIDComm -In this tutorial we will issue a credential from the _Issuer_ to a _Holder_. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the _Issuer_ and the _Holder_ and the _Issuer_ also has a registered schema and credential definition. After initializing the _Issuer_ will send a credential to the _holder_, and will then accept this credential and automatically store it in their wallet. +In this tutorial we will issue an AnonCreds credential from the _Issuer_ to a _Holder_ over DIDComm. We will start with setting up both their agents with the minimal configuration required to follow this tutorial. It is assumed that there is a connection between the _Issuer_ and the _Holder_ and the _Issuer_ also has a registered schema and credential definition. After initializing the _Issuer_ will send a credential to the _holder_, and will then accept this credential and automatically store it in their wallet. _Using [AnonCreds](https://anoncreds-wg.github.io/anoncreds-spec/) and the [Issue Credential V2 Protocol](https://github.com/hyperledger/aries-rfcs/blob/main/features/0453-issue-credential-v2/README.md) or the [Issue Credential V1 Protocol](https://github.com/hyperledger/aries-rfcs/blob/main/features/0036-issue-credential/README.md)._ @@ -8,7 +8,7 @@ _Using [AnonCreds](https://anoncreds-wg.github.io/anoncreds-spec/) and the [Issu This section assumes that -1. You have [set-up your develoment environment](../getting-started). +1. You have [set-up your development environment](../getting-started). 1. You have basic knowledge of the required fields in the [Agent Config](./agent-config) 1. You have completed the [Create a Connection tutorial](./create-a-connection) 1. You have a registered schema and credential definition. This can be done by following the [Registering on a AnonCreds Registry](./registering-schema-and-credential-definition) @@ -53,7 +53,7 @@ ngrok http :::issuer -```typescript showLineNumbers issue-a-credential.ts section-1 +```typescript showLineNumbers issue-anoncreds-credential-didcomm.ts section-1 ``` @@ -70,7 +70,7 @@ For the _Holder_ we need to setup a basic agent with a wallet, mediator, outboun :::holder -```typescript showLineNumbers issue-a-credential.ts section-2 +```typescript showLineNumbers issue-anoncreds-credential-didcomm.ts section-2 ``` @@ -82,7 +82,7 @@ When we want to accept a credential, we have to listen to incoming credentials a :::holder -```typescript showLineNumbers issue-a-credential.ts section-3 +```typescript showLineNumbers issue-anoncreds-credential-didcomm.ts section-3 ``` @@ -100,7 +100,7 @@ Now that everything is setup on both sides, the _Issuer_ can now offer a credent :::issuer -```typescript showLineNumbers issue-a-credential.ts section-4 +```typescript showLineNumbers issue-anoncreds-credential-didcomm.ts section-4 ``` @@ -110,7 +110,7 @@ Now that everything is setup on both sides, the _Issuer_ can now offer a credent :::issuer -```typescript showLineNumbers issue-a-credential.ts section-5 +```typescript showLineNumbers issue-anoncreds-credential-didcomm.ts section-5 ``` diff --git a/guides/tutorials/openid4vc/index.md b/guides/tutorials/openid4vc/index.md new file mode 100644 index 00000000..33008784 --- /dev/null +++ b/guides/tutorials/openid4vc/index.md @@ -0,0 +1,7 @@ +import DocCardList from '@theme/DocCardList'; + +# OpenID for Verifiable Credentials Tutorials + +This section covers all tutorials related to the OpenID for Verifiable Credentials module in Credo. Before you start, make sure you have configured the required OpenID4VC modules on your agent according to the [OpenID4VC Setup Guide](/guides/getting-started/set-up/openid4vc.md) + + diff --git a/guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md b/guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md new file mode 100644 index 00000000..87dacc44 --- /dev/null +++ b/guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md @@ -0,0 +1,39 @@ +# Issuing Credentials using the OpenID4VC Issuer Module + +This tutorial will guide you through the process of issuing credentials using the OpenID4VC Issuer Module. Before starting this tutorial, make sure you have completed the [OpenID4VC Issuer Module Setup](/guides/getting-started/set-up/openid4vc.md). + +This guides only covers the issuance of credentials using the OpenID4VC Issuer Module. Follow the [Receiving and Proving Credentials using the OpenID4VC Holder Module](/guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md) guide to learn how to receive and prove credentials using the OpenID4VC Holder Module. + +## Creating the issuer + +Once you have set-up your agent (under `issuer` variable), we first need to configure your issuer and the credentials you want to issue. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-2 + +``` + +If you want to update the display metadata or the credentials supported by the issuer, you can use the `issuer.modules.openId4VcIssuer.updateIssuer` method. + +## Creating a credential offer + +Once you have configured the issuer, you can create a credential offer. The credential offer method will generate a credential offer URI that you can share with a holder. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-3 + +``` + +We have also added an event listener that listens for state changed events, this allows us to know when the issuance session is done. + +## Implementing the credential mapper + +The OpenID4VC Issuer Module setup didn't cover the implementation of the `credentialRequestToCredentialMapper` yet. When you create a credential offer with the OpenID4VC Issuer Module in Credo, you don't have to provide the credential data directly. + +Instead, you provide a `credentialRequestToCredentialMapper` function in the agent configuration, that will be called when the holder requests the credential. + +This allows you to dynamically generate the credential data based on the holder's request, and means you also don't have to store any credential data in the agent. + +Below is an example `credentialRequestToCredentialMapper` function that generates a credential based on the holder's request. Make sure to register this function in the agent configuration `modules.openId4VcIssuer.endpoints.credential.credentialsRequestToCredentialMapper`. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-4 + +``` diff --git a/guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md b/guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md new file mode 100644 index 00000000..264c251c --- /dev/null +++ b/guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md @@ -0,0 +1,25 @@ +# Receiving and Proving Credentials using the OpenID4VC Holder Module + +This tutorial will guide you through the process of receiving and proving credentials using the OpenID4VC Holder Module. Before starting this tutorial, make sure you have completed the [OpenID4VC Holder Module Setup](/guides/getting-started/set-up/openid4vc.md). + +This guides only covers the receiving and proving of credentials using the OpenID4VC Holder Module. Follow the [Issuing Credentials using the OpenID4VC Issuer Module](/guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md) and [Verifying Credentials using the OpenID4VC Verifier Module](/guides/tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module.md) guides to learn how to issue and verify credentials using the OpenID4VC Issuer and Verifier Modules. + +## Resolving and accepting a credential offer + +Once you have set-up your agent (under `holder` variable), and have a credential offer (either created using the issuer module, or an external OpenID4VC issuer), we can resolve and accept the credential offer. + +The `credentialBindingResolver` is a method you need to provide that configures how the credential should be bound to the wallet. The implemented binding resolver in this tutorial first checks if the issuer supports `did:key` and will use that. Otherwise it will check if jwk is supported. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-6 + +``` + +Finally the credentials are stored using the SD JWT VC and W3C modules. In a wallet application you could choose to first show the credential to the user before storing it in the wallet. + +## Resolving and accepting an authorization request (presentation request) + +Once you have a credential in your wallet, you can start presenting it based on a receive authorization request including an OpenID4VP presentation request (either created using the verifier module, or an external OpenID4VC verifier). First we resolve the authorization request, and then we accept it and present the credential in our wallet. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-9 + +``` diff --git a/guides/tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module.md b/guides/tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module.md new file mode 100644 index 00000000..0958b2e4 --- /dev/null +++ b/guides/tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module.md @@ -0,0 +1,23 @@ +# Verifying Credentials using the OpenID4VC Verifier Module + +This tutorial will guide you through the process of verifying credentials using the OpenID4VC Verifier Module. Before starting this tutorial, make sure you have completed the [OpenID4VC Verifier Module Setup](/guides/getting-started/set-up/openid4vc.md). + +This guides only covers the verification of credentials using the OpenID4VC Verifier Module. Follow the [Issuing Credentials using the OpenID4VC Issuer Module](/guides/tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module.md) and [Receiving and Proving Credentials using the OpenID4VC Holder Module](/guides/tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module.md) guide to learn how to issuer, receive and prove credentials using the OpenID4VC Issuer and Holder Modules. + +## Creating the verifier + +Once you have set-up your agent (under `verifier` variable), we first need to configure your verifier. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-7 + +``` + +## Creating an authorization request + +Once you have configured the verifier, you can create an authorization request including an OpenID4VP presentation request based on [DIF Presentation Exchange V2](https://identity.foundation/presentation-exchange/spec/v2.0.0/). The authorization request method will generate an authorization request URI that you can share with a holder. + +```typescript showLineNumbers sd-jwt-vc-openid4vc.ts section-8 + +``` + +We have also added an event listener that listens for state changed events, this allows us to know when the verification session is done. diff --git a/guides/updating/versions/0.2-to-0.3.md b/guides/updating/versions/0.2-to-0.3.md index f1a47066..6d24d1c1 100644 --- a/guides/updating/versions/0.2-to-0.3.md +++ b/guides/updating/versions/0.2-to-0.3.md @@ -190,7 +190,7 @@ This procedure can be done in module's `register(dependencyManager, featureRegis ### Ledger Module -Apart from the aforementioned indyLedgers configuration, you should also [note a slight change](../../tutorials/issue-a-credential.md#side-notes) in behaviour when attempting to register credential definitions that already exists on the ledger but not in the wallet. +Apart from the aforementioned indyLedgers configuration, you should also [note a slight change](../../tutorials/issue-an-anoncreds-credential-over-didcomm.md#side-notes) in behaviour when attempting to register credential definitions that already exists on the ledger but not in the wallet. ### Proofs Module diff --git a/guides/updating/versions/0.4-to-0.5.md b/guides/updating/versions/0.4-to-0.5.md index 3806c2a6..6a769848 100644 --- a/guides/updating/versions/0.4-to-0.5.md +++ b/guides/updating/versions/0.4-to-0.5.md @@ -310,7 +310,7 @@ await agent.modules.openId4VcHolder.acceptCredentialOfferUsingPreAuthorizedCode( // NOTE: example implementation. Adjust based on your needs // Return the binding to the credential that should be used. Either did or jwk is supported - if (supportsAllDidMethods || supportedDidMethods?.include('did:key')) { + if (supportsAllDidMethods || supportedDidMethods?.includes('did:key')) { const didResult = await agent.dids.create({ method: 'key', options: { diff --git a/package.json b/package.json index c9a0170a..d033259d 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,10 @@ "devDependencies": { "@docusaurus/module-type-aliases": "^2.3.1", "@tsconfig/docusaurus": "^1.0.5", - "prettier": "^2.7.1", - "typescript": "^4.6.4", "@types/node": "18", - "ts-node": "^10.8.1" + "prettier": "^2.7.1", + "ts-node": "^10.8.1", + "typescript": "^4.6.4" }, "browserslist": { "production": [ diff --git a/sidebars.js b/sidebars.js index cd20c172..3e360777 100644 --- a/sidebars.js +++ b/sidebars.js @@ -35,6 +35,7 @@ const sidebars = { 'getting-started/set-up/anoncreds', 'getting-started/set-up/indy-vdr', 'getting-started/set-up/cheqd/index', + 'getting-started/set-up/openid4vc', ], }, ], @@ -65,8 +66,18 @@ const sidebars = { 'tutorials/create-a-connection', 'tutorials/cheqd/index', 'tutorials/registering-schema-and-credential-definition', - 'tutorials/issue-a-credential', + 'tutorials/issue-an-anoncreds-credential-over-didcomm', 'tutorials/mediation', + { + type: 'category', + label: 'OpenID for Verifiable Credentials', + link: { type: 'doc', id: 'tutorials/openid4vc/index' }, + items: [ + 'tutorials/openid4vc/issuing-credentials-using-openid4vc-issuer-module', + 'tutorials/openid4vc/receiving-and-proving-credentials-using-openid4vc-holder-module', + 'tutorials/openid4vc/verifying-credentials-using-openid4vc-verifier-module', + ], + }, ], }, { @@ -79,6 +90,7 @@ const sidebars = { 'updating/versions/0.1-to-0.2', 'updating/versions/0.2-to-0.3', 'updating/versions/0.3-to-0.4', + 'updating/versions/0.4-to-0.5', ], }, 'ecosystem/index', diff --git a/snippets/current/package.json b/snippets/current/package.json index 3bb9acc3..23cd3623 100644 --- a/snippets/current/package.json +++ b/snippets/current/package.json @@ -8,7 +8,8 @@ "dev:mediator-setup": "ts-node --esm src/mediator-setup.ts", "dev:mediation-recipient": "ts-node --esm src/mediation-recipient.ts", "dev:connection": "ts-node --esm src/create-a-connection.ts", - "dev:credential": "ts-node --esm src/issue-a-credential.ts", + "dev:issue-anoncreds-credential-didcomm": "ts-node --esm src/issue-anoncreds-credential-didcomm.ts", + "dev:openid4vc": "ts-node --esm src/sd-jwt-vc-openid4vc.ts", "dev:register-with-indy": "ts-node --esm src/register-schema-and-cred-def.ts", "dev:set-up": "ts-node --esm src/set-up.ts" }, diff --git a/snippets/current/src/issue-a-credential.ts b/snippets/current/src/issue-anoncreds-credential-didcomm.ts similarity index 99% rename from snippets/current/src/issue-a-credential.ts rename to snippets/current/src/issue-anoncreds-credential-didcomm.ts index b3d9ca4d..40522465 100644 --- a/snippets/current/src/issue-a-credential.ts +++ b/snippets/current/src/issue-anoncreds-credential-didcomm.ts @@ -143,6 +143,7 @@ holder.events.on(CredentialEventTypes.CredentialSta console.log('received a credential') // custom logic here await holder.credentials.acceptOffer({ credentialRecordId: payload.credentialRecord.id }) + break case CredentialState.Done: console.log(`Credential for credential id ${payload.credentialRecord.id} is accepted`) // For demo purposes we exit the program here. diff --git a/snippets/current/src/sd-jwt-vc-openid4vc.ts b/snippets/current/src/sd-jwt-vc-openid4vc.ts new file mode 100644 index 00000000..5f320e9d --- /dev/null +++ b/snippets/current/src/sd-jwt-vc-openid4vc.ts @@ -0,0 +1,435 @@ +import type { InitConfig, SdJwtVcRecord, W3cCredentialRecord } from '@credo-ts/core' +import { AskarModule } from '@credo-ts/askar' + +const issuerConfig: InitConfig = { + label: 'openid4vc-issuer', + walletConfig: { + id: 'openid4vc-issuer', + key: 'testkey0000000000000000000000000', + }, +} + +const holderConfig: InitConfig = { + label: 'openid4vc-holder', + walletConfig: { + id: 'openid4vc-holder', + key: 'testkey0000000000000000000000000', + }, +} + +// start-section-4 +import { + OpenId4VcIssuanceSessionStateChangedEvent, + OpenId4VcIssuerEvents, + OpenId4VcVerificationSessionState, + OpenId4VcVerificationSessionStateChangedEvent, + OpenId4VcVerifierEvents, + OpenId4VciCredentialFormatProfile, + OpenId4VciCredentialRequestToCredentialMapper, +} from '@credo-ts/openid4vc' + +const credentialRequestToCredentialMapper: OpenId4VciCredentialRequestToCredentialMapper = async ({ + // agent context for the current wallet / tenant + agentContext, + // the credential offer related to the credential request + credentialOffer, + // the received credential request + credentialRequest, + // the list of credentialsSupported entries + credentialsSupported, + // the cryptographic binding provided by the holder in the credential request proof + holderBinding, + // the issuance session associated with the credential request and offer + issuanceSession, +}) => { + const firstSupported = credentialsSupported[0] + + // We only support vc+sd-jwt in this example, but you can add more formats + if (firstSupported.format !== OpenId4VciCredentialFormatProfile.SdJwtVc) { + throw new Error('Only vc+sd-jwt is supported') + } + + // We only support AcmeCorpEmployee in this example, but you can support any type + if (firstSupported.vct !== 'AcmeCorpEmployee') { + throw new Error('Only AcmeCorpEmployee is supported') + } + + // find the first did:key did in our wallet. You can modify this based on your needs + const didsApi = agentContext.dependencyManager.resolve(DidsApi) + const [didKeyDidRecord] = await didsApi.getCreatedDids({ + method: 'key', + }) + + const didKey = DidKey.fromDid(didKeyDidRecord.did) + const didUrl = `${didKey.did}#${didKey.key.fingerprint}` + + return { + credentialSupportedId: firstSupported.id, + format: 'vc+sd-jwt', + // We can provide the holderBinding as is, if we don't want to make changes + holder: holderBinding, + payload: { + vct: firstSupported.vct, + firstName: 'John', + lastName: 'Doe', + }, + disclosureFrame: { + _sd: ['lastName'], + }, + issuer: { + method: 'did', + didUrl, + }, + } +} + +// end-section-4 + +// start-section-1 +import { Agent, DidsApi, DifPresentationExchangeService, KeyType } from '@credo-ts/core' +import { agentDependencies } from '@credo-ts/node' +import { ariesAskar } from '@hyperledger/aries-askar-nodejs' + +import express, { Router } from 'express' +import { OpenId4VcIssuerModule, OpenId4VcVerifierModule } from '@credo-ts/openid4vc' + +// Create two express routers, all endpoints for the +// issuer and verifier will be added to these routers +const verifierRouter = Router() +const issuerRouter = Router() + +// Register the routers on the express server. The path should match +// with the baseUrl you configure in the modules below. +const app = express() +app.use('/oid4vci', issuerRouter) +app.use('/siop', verifierRouter) + +const issuer = new Agent({ + config: issuerConfig, + dependencies: agentDependencies, + modules: { + askar: new AskarModule({ + ariesAskar, + }), + openId4VcIssuer: new OpenId4VcIssuerModule({ + baseUrl: 'http://127.0.0.1:3000/oid4vci', + + // If no router is passed, one will be created. + // you still have to register the router on your express server + // but you can access it on agent.modules.openId4VcIssuer.config.router + // It works the same for verifier: agent.modules.openId4VcVerifier.config.router + router: issuerRouter, + + // Each of the endpoints can have configuration associated with it, such as the + // path (under the baseUrl) to use for the endpoints. + endpoints: { + // The credentialRequestToCredentialMapper is the only required endpoint + // configuration that must be provided. This method is called whenever a + // credential request has been received for an offer we created. The callback should + // return the issued credential to return in the credential response to the holder. + credential: { + credentialRequestToCredentialMapper, + }, + }, + }), + + // the base URL of the verifier, the router + openId4VcVerifier: new OpenId4VcVerifierModule({ + baseUrl: 'http://127.0.0.1:3000/siop', + + router: verifierRouter, + }), + }, +}) + +// listen on port 3000 for the openid4vc app +app.listen(3000) +// end-section-1 + +await issuer + .initialize() + .then(() => { + console.log('Issuer agent initialized!') + }) + .catch((e) => { + console.error(`Something went wrong while setting up the issuer agent! Message: ${e}`) + }) + +// we use the same agent for the verifier, but the tutorial uses verifier.xxx +const verifier = issuer + +// start-section-2 +import { JwaSignatureAlgorithm } from '@credo-ts/core' + +// Create an issuer with one supported credential: AcmeCorpEmployee +const openid4vcIssuer = await issuer.modules.openId4VcIssuer.createIssuer({ + display: [ + { + name: 'ACME Corp.', + description: 'ACME Corp. is a company that provides the best services.', + text_color: '#000000', + background_color: '#FFFFFF', + logo: { + url: 'https://acme.com/logo.png', + alt_text: 'ACME Corp. logo', + }, + }, + ], + credentialsSupported: [ + { + format: 'vc+sd-jwt', + vct: 'AcmeCorpEmployee', + id: 'AcmeCorpEmployee', + cryptographic_binding_methods_supported: ['did:key'], + cryptographic_suites_supported: [JwaSignatureAlgorithm.ES256], + }, + ], +}) + +// Create a did:key that we will use for issuance +const issuerDidResult = await issuer.dids.create({ + method: 'key', + options: { + keyType: KeyType.Ed25519, + }, +}) + +if (issuerDidResult.didState.state !== 'finished') { + throw new Error('DID creation failed.') +} +// end-section-2 + +// start-section-3 +const { credentialOffer, issuanceSession } = await issuer.modules.openId4VcIssuer.createCredentialOffer({ + issuerId: openid4vcIssuer.issuerId, + // values must match the `id` of the credential supported by the issuer + offeredCredentials: ['AcmeCorpEmployee'], + + // Only pre-authorized code flow is supported + preAuthorizedCodeFlowConfig: { + userPinRequired: false, + }, + + // You can store any metadata about the issuance here + issuanceMetadata: { + someKey: 'someValue', + }, +}) + +// Listen and react to changes in the issuance session +issuer.events.on( + OpenId4VcIssuerEvents.IssuanceSessionStateChanged, + (event) => { + if (event.payload.issuanceSession.id === issuanceSession.id) { + console.log('Issuance session state changed to ', event.payload.issuanceSession.state) + } + } +) +// end-section-3 + +// start-section-5 +import { OpenId4VcHolderModule } from '@credo-ts/openid4vc' + +const holder = new Agent({ + config: holderConfig, + dependencies: agentDependencies, + modules: { + askar: new AskarModule({ + ariesAskar, + }), + + // no configuration required for holder module + openId4VcHolderModule: new OpenId4VcHolderModule(), + }, +}) +// end-section-5 + +await holder + .initialize() + .then(() => { + console.log('Holder agent initialized!') + }) + .catch((e) => { + console.error(`Something went wrong while setting up the holder agent! Message: ${e}`) + }) + +// start-section-6 +import { KeyDidCreateOptions, getJwkFromKey, DidKey } from '@credo-ts/core' + +// resolved credential offer contains the offer, metadata, etc.. +const resolvedCredentialOffer = await holder.modules.openId4VcHolderModule.resolveCredentialOffer(credentialOffer) +console.log('Resolved credential offer', JSON.stringify(resolvedCredentialOffer.credentialOfferPayload, null, 2)) + +// issuer only supports pre-authorized flow for now +const credentials = await holder.modules.openId4VcHolderModule.acceptCredentialOfferUsingPreAuthorizedCode( + resolvedCredentialOffer, + { + credentialBindingResolver: async ({ + supportedDidMethods, + keyType, + supportsAllDidMethods, + // supportsJwk now also passed + supportsJwk, + credentialFormat, + }) => { + // NOTE: example implementation. Adjust based on your needs + // Return the binding to the credential that should be used. Either did or jwk is supported + + if (supportsAllDidMethods || supportedDidMethods?.includes('did:key')) { + const didResult = await holder.dids.create({ + method: 'key', + options: { + keyType, + }, + }) + + if (didResult.didState.state !== 'finished') { + throw new Error('DID creation failed.') + } + + const didKey = DidKey.fromDid(didResult.didState.did) + + return { + method: 'did', + didUrl: `${didKey.did}#${didKey.key.fingerprint}`, + } + } + + // we also support plain jwk for sd-jwt only + if (supportsJwk && credentialFormat === OpenId4VciCredentialFormatProfile.SdJwtVc) { + const key = await holder.wallet.createKey({ + keyType, + }) + + // you now need to return an object instead of VerificationMethod instance + // and method 'did' or 'jwk' + return { + method: 'jwk', + jwk: getJwkFromKey(key), + } + } + + throw new Error('Unable to create a key binding') + }, + } +) + +console.log('Received credentials', JSON.stringify(credentials, null, 2)) + +// Store the received credentials +const records: Array = [] +for (const credential of credentials) { + if ('compact' in credential) { + const record = await holder.sdJwtVc.store(credential.compact) + records.push(record) + } else { + const record = await holder.w3cCredentials.storeCredential({ + credential, + }) + records.push(record) + } +} +// end-section-6 + +// start-section-7 +// Create a verifier +const openId4VcVerifier = await verifier.modules.openId4VcVerifier.createVerifier({}) + +// Create a did:key that we will use for signing OpenID4VP authorization requests +const verifierDidResult = await issuer.dids.create({ + method: 'key', + options: { + keyType: KeyType.Ed25519, + }, +}) + +if (verifierDidResult.didState.state !== 'finished') { + throw new Error('DID creation failed.') +} + +const verifierDidKey = DidKey.fromDid(verifierDidResult.didState.did) +// end-section-7 + +// start-section-8 +const { authorizationRequest, verificationSession } = + await verifier.modules.openId4VcVerifier.createAuthorizationRequest({ + verifierId: openId4VcVerifier.verifierId, + requestSigner: { + didUrl: `${verifierDidKey.did}#${verifierDidKey.key.fingerprint}`, + method: 'did', + }, + // Add DIF presentation exchange data + presentationExchange: { + definition: { + id: '9ed05140-b33b-445e-a0f0-9a23aa501868', + name: 'Employee Verification', + purpose: 'We need to verify your employee status to grant access to the employee portal', + input_descriptors: [ + { + id: '9c98fb43-6fd5-49b1-8dcc-69bd2a378f23', + constraints: { + // Require limit disclosure + limit_disclosure: 'required', + fields: [ + { + filter: { + type: 'string', + const: 'AcmeCorpEmployee', + }, + path: ['$.vct'], + }, + ], + }, + }, + ], + }, + }, + }) + +// Listen and react to changes in the verification session +verifier.events.on( + OpenId4VcVerifierEvents.VerificationSessionStateChanged, + async (event) => { + if (event.payload.verificationSession.id === verificationSession.id) { + console.log('Verification session state changed to ', event.payload.verificationSession.state) + } + + if (event.payload.verificationSession.state === OpenId4VcVerificationSessionState.ResponseVerified) { + const verifiedAuthorizationResponse = await verifier.modules.openId4VcVerifier.getVerifiedAuthorizationResponse( + verificationSession.id + ) + console.log('Successfully verified presentation.', JSON.stringify(verifiedAuthorizationResponse, null, 2)) + + console.log('Exiting...') + process.exit() + } + } +) +// end-section-8 + +// start-section-9 + +// resolved credential offer contains the offer, metadata, etc.. +const resolvedAuthorizationRequest = await holder.modules.openId4VcHolderModule.resolveSiopAuthorizationRequest( + authorizationRequest +) +console.log( + 'Resolved credentials for request', + JSON.stringify(resolvedAuthorizationRequest.presentationExchange.credentialsForRequest, null, 2) +) + +const presentationExchangeService = holder.dependencyManager.resolve(DifPresentationExchangeService) +// Automatically select credentials. In a wallet you could manually choose which credentials to return based on the "resolvedAuthorizationRequest.presentationExchange.credentialsForRequest" value +const selectedCredentials = presentationExchangeService.selectCredentialsForRequest( + resolvedAuthorizationRequest.presentationExchange.credentialsForRequest +) + +// issuer only supports pre-authorized flow for now +const authorizationResponse = await holder.modules.openId4VcHolderModule.acceptSiopAuthorizationRequest({ + authorizationRequest: resolvedAuthorizationRequest.authorizationRequest, + presentationExchange: { + credentials: selectedCredentials, + }, +}) +console.log('Submitted authorization response', JSON.stringify(authorizationResponse.submittedResponse, null, 2)) +// end-section-9 diff --git a/snippets/current/src/set-up-openid4vc-holder.ts b/snippets/current/src/set-up-openid4vc-holder.ts new file mode 100644 index 00000000..ccd5d21d --- /dev/null +++ b/snippets/current/src/set-up-openid4vc-holder.ts @@ -0,0 +1,35 @@ +import type { InitConfig } from '@credo-ts/core' + +const config: InitConfig = { + label: 'docs-agent-nodejs', + walletConfig: { + id: 'wallet-id', + key: 'testkey0000000000000000000000000', + }, +} + +// start-section-1 +import { Agent } from '@credo-ts/core' +// or import from '@credo-ts/react-native' for React Native +import { agentDependencies } from '@credo-ts/node' + +import { OpenId4VcHolderModule } from '@credo-ts/openid4vc' + +const agent = new Agent({ + config, + dependencies: agentDependencies, + modules: { + // no configuration required for holder module + openId4VcHolderModule: new OpenId4VcHolderModule(), + }, +}) +// end-section-1 + +agent + .initialize() + .then(() => { + console.log('Agent initialized!') + }) + .catch((e) => { + console.error(`Something went wrong while setting up the agent! Message: ${e}`) + }) diff --git a/snippets/current/src/set-up-openid4vc-issuer-verifier.ts b/snippets/current/src/set-up-openid4vc-issuer-verifier.ts new file mode 100644 index 00000000..93125970 --- /dev/null +++ b/snippets/current/src/set-up-openid4vc-issuer-verifier.ts @@ -0,0 +1,79 @@ +import type { InitConfig } from '@credo-ts/core' + +const config: InitConfig = { + label: 'docs-agent-nodejs', + walletConfig: { + id: 'wallet-id', + key: 'testkey0000000000000000000000000', + }, +} + +// start-section-1 +import { Agent } from '@credo-ts/core' +// OpenID4VC issuer and verifier modules only work in Node.JS +import { agentDependencies } from '@credo-ts/node' + +import express, { Router } from 'express' +import { OpenId4VcIssuerModule, OpenId4VcVerifierModule } from '@credo-ts/openid4vc' + +// Create two express routers, all endpoints for the +// issuer and verifier will be added to these routers +const verifierRouter = Router() +const issuerRouter = Router() + +// Register the routers on the express server. The path should match +// with the baseUrl you configure in the modules below. +const app = express() +app.use('/oid4vci', issuerRouter) +app.use('/siop', verifierRouter) + +const agent = new Agent({ + config, + dependencies: agentDependencies, + modules: { + openId4VcIssuer: new OpenId4VcIssuerModule({ + baseUrl: 'http://127.0.0.1:3000/oid4vci', + + // If no router is passed, one will be created. + // you still have to register the router on your express server + // but you can access it on agent.modules.openId4VcIssuer.config.router + // It works the same for verifier: agent.modules.openId4VcVerifier.config.router + router: issuerRouter, + + // Each of the endpoints can have configuration associated with it, such as the + // path (under the baseUrl) to use for the endpoints. + endpoints: { + // The credentialRequestToCredentialMapper is the only required endpoint + // configuration that must be provided. This method is called whenever a + // credential request has been received for an offer we created. The callback should + // return the issued credential to return in the credential response to the holder. + credential: { + credentialRequestToCredentialMapper: async () => { + throw new Error('Not implemented') + }, + }, + }, + }), + + // openId4VcVerifier module can only be used in Node.JS + openId4VcVerifier: new OpenId4VcVerifierModule({ + baseUrl: 'http://127.0.0.1:3000/siop', + + router: verifierRouter, + }), + }, +}) + +// listen on port 3000 for the openid4vc app. +app.listen(3000) + +// end-section-1 + +agent + .initialize() + .then(() => { + console.log('Agent initialized!') + }) + .catch((e) => { + console.error(`Something went wrong while setting up the agent! Message: ${e}`) + }) From eb6188679b3e4a6633a6f3090cc44be4008766d6 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Tue, 4 Jun 2024 20:51:30 +0800 Subject: [PATCH 5/9] chore: address feedback Signed-off-by: Timo Glastra --- .../ISSUE_TEMPLATE/documentation-request.yml | 2 +- guides/concepts/platform-and-environment.md | 2 +- guides/getting-started/index.md | 2 +- guides/getting-started/prerequisites.md | 18 +++++++++--------- guides/getting-started/set-up/anoncreds.md | 6 +++--- guides/getting-started/set-up/aries-askar.md | 6 +++--- guides/getting-started/set-up/index.md | 8 ++++---- guides/getting-started/set-up/indy-vdr.md | 6 +++--- guides/getting-started/set-up/openid4vc.md | 4 ++-- guides/updating/update-assistant.md | 2 +- guides/updating/update-indy-sdk-to-askar.md | 8 ++++---- guides/updating/versions/0.4-to-0.5.md | 2 +- .../src/set-up-openid4vc-issuer-verifier.ts | 4 ++-- 13 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/documentation-request.yml b/.github/ISSUE_TEMPLATE/documentation-request.yml index 56057d5d..4c9b4972 100644 --- a/.github/ISSUE_TEMPLATE/documentation-request.yml +++ b/.github/ISSUE_TEMPLATE/documentation-request.yml @@ -30,7 +30,7 @@ body: description: You may select more than one. options: - label: React Native - - label: Node.JS + - label: Node.js - type: checkboxes id: contribute attributes: diff --git a/guides/concepts/platform-and-environment.md b/guides/concepts/platform-and-environment.md index d97d290d..8a5892cd 100644 --- a/guides/concepts/platform-and-environment.md +++ b/guides/concepts/platform-and-environment.md @@ -1,3 +1,3 @@ # Platform and Environment -[Credo](https://github.com/openwallet-foundation/credo-ts) is developed to support a [Node.JS](https://nodejs.org) and [React Native](https://reactnative.dev) environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.JS as an issuer as a verifier, and uses React Native as a holder. +[Credo](https://github.com/openwallet-foundation/credo-ts) is developed to support a [Node.js](https://nodejs.org) and [React Native](https://reactnative.dev) environment. With this it is entirely possible to build an entire SSI ecosystem with Credo. This would use Node.js as an issuer as a verifier, and uses React Native as a holder. diff --git a/guides/getting-started/index.md b/guides/getting-started/index.md index 300ae4df..d3bec0e3 100644 --- a/guides/getting-started/index.md +++ b/guides/getting-started/index.md @@ -2,7 +2,7 @@ import DocCardList from '@theme/DocCardList'; # Getting started -In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.JS and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents). +In this section we will go over everything you need to get started on a technical level. First there are some general prerequisites for Node.js and React Native. Credo works for creating both server-side applications (commonly but not always for creating issuer and verifier agents) and mobile applications (commonly holder agents). Based on the platform you want to work on, the installation guides you should follow are the same, but some steps may differ. diff --git a/guides/getting-started/prerequisites.md b/guides/getting-started/prerequisites.md index 1758afe8..8a0ab320 100644 --- a/guides/getting-started/prerequisites.md +++ b/guides/getting-started/prerequisites.md @@ -1,14 +1,14 @@ # Prerequisites -To work with [Credo](https://github.com/openwallet-foundation/credo-ts) we need to install some dependencies and set-up our Node.JS environment. Even when creating a mobile app in React Native, we need Node.JS installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started! +To work with [Credo](https://github.com/openwallet-foundation/credo-ts) we need to install some dependencies and set-up our Node.js environment. Even when creating a mobile app in React Native, we need Node.js installed. We will go over the specific installation process for each platform. Go ahead and pick your system of choice to get started! The specific items that we set-up: -- [Node.JS](https://nodejs.org) - v16 or v18 +- [Node.js](https://nodejs.org) - v16 or v18 - [yarn](https://classic.yarnpkg.com/lang/en/docs/install) or [npm](https://www.npmjs.com/) -- Node.JS or React Native project. +- Node.js or React Native project. -### Node.JS +### Node.js NodeJS is the most popular JavaScript runtime environment excluding browsers. It can run on your desktop or even a server. @@ -16,7 +16,7 @@ NodeJS is the most popular JavaScript runtime environment excluding browsers. It #### Windows -You can download it from the [Node.JS Website](https://nodejs.org/en/download/) +You can download it from the [Node.js Website](https://nodejs.org/en/download/) #### macOS @@ -26,17 +26,17 @@ Make sure you have [Homebrew](https://brew.sh/) installed. If not you can instal /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ``` -Then install Node.JS with the following command: +Then install Node.js with the following command: ```console brew install nodejs ``` -Alternatively, you can download it from the [Node.JS Website](https://nodejs.org/en/download/) +Alternatively, you can download it from the [Node.js Website](https://nodejs.org/en/download/) #### Linux -Either follow one of the specific steps for installing Node.JS on linux below, or you can download it directly from the [Node.JS Website](https://nodejs.org/en/download/) +Either follow one of the specific steps for installing Node.js on linux below, or you can download it directly from the [Node.js Website](https://nodejs.org/en/download/) ##### Arch Linux @@ -76,4 +76,4 @@ npm install --global yarn ### Project Setup -Finally, you need to make sure you have a project set-up using Node.JS or React Native. If you're not familiar with setting up a project, we suggest following the [Introduction to Node.JS](https://nodejs.dev/en/learn/) or [React Native Quickstart](https://reactnative.dev/docs/environment-setup) guides. +Finally, you need to make sure you have a project set-up using Node.js or React Native. If you're not familiar with setting up a project, we suggest following the [Introduction to Node.js](https://nodejs.dev/en/learn/) or [React Native Quickstart](https://reactnative.dev/docs/environment-setup) guides. diff --git a/guides/getting-started/set-up/anoncreds.md b/guides/getting-started/set-up/anoncreds.md index 26f2a249..b647fada 100644 --- a/guides/getting-started/set-up/anoncreds.md +++ b/guides/getting-started/set-up/anoncreds.md @@ -4,11 +4,11 @@ The AnonCreds module provides functionality for issuing and verifying [AnonCreds ### Installing -When using Credo with AnonCreds, there are a few extra dependencies that need to be installed. We need to install `@credo-ts/anoncreds` package, which contains the interfaces, and `@hyperledger/anoncreds-` package which is an implementation which depends on a wrapper of anoncreds-rs. Currently there are bindings for Node.JS, as `@hyperledger/anoncreds-nodejs`, and React Native as `@hyperlegder/anoncreds-react-native`. +When using Credo with AnonCreds, there are a few extra dependencies that need to be installed. We need to install `@credo-ts/anoncreds` package, which contains the interfaces, and `@hyperledger/anoncreds-` package which is an implementation which depends on a wrapper of anoncreds-rs. Currently there are bindings for Node.js, as `@hyperledger/anoncreds-nodejs`, and React Native as `@hyperlegder/anoncreds-react-native`. -# Node.JS +# Node.js ```console yarn add @credo-ts/anoncreds@^0.5.3 @hyperledger/anoncreds-nodejs@^0.2.2 @@ -28,7 +28,7 @@ After installing the dependencies, we should register the `AnonCredsModule` on t -# Node.JS +# Node.js ```typescript showLineNumbers set-up-anoncreds.ts section-1 diff --git a/guides/getting-started/set-up/aries-askar.md b/guides/getting-started/set-up/aries-askar.md index 2fb63d1e..67102ba8 100644 --- a/guides/getting-started/set-up/aries-askar.md +++ b/guides/getting-started/set-up/aries-askar.md @@ -10,11 +10,11 @@ If you're upgrading from the Indy SDK to Aries Askar, see [Migrating from an Ind ### Installing Aries Askar -When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the `@credo-ts/askar` package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform `@hyperledger/aries-askar-`. Currently there are bindings for Node.JS, as `@hyperledger/aries-askar-nodejs`, and React Native as `@hyperlegder/aries-askar-react-native`. +When using Credo with Aries Askar, there are a few extra dependencies that need to be installed. We need to install the `@credo-ts/askar` package, which implements the needed interfaces for the agent. Secondly, we need to add native bindings for the specific platform `@hyperledger/aries-askar-`. Currently there are bindings for Node.js, as `@hyperledger/aries-askar-nodejs`, and React Native as `@hyperlegder/aries-askar-react-native`. -# Node.JS +# Node.js ```console yarn add @credo-ts/askar@^0.5.3 @hyperledger/aries-askar-nodejs@^0.2.1 @@ -34,7 +34,7 @@ After installing the dependencies, we can register the Askar Module on the agent -# Node.JS +# Node.js ```typescript showLineNumbers set-up-askar.ts section-1 diff --git a/guides/getting-started/set-up/index.md b/guides/getting-started/set-up/index.md index f5cd289c..11db6181 100644 --- a/guides/getting-started/set-up/index.md +++ b/guides/getting-started/set-up/index.md @@ -5,7 +5,7 @@ import DocCardList from '@theme/DocCardList'; :::info This guide assumes you have followed the [Prerequisites](./prerequisites), and you have a valid -[Node.JS](https://nodejs.org) or [React Native](https://reactnative.dev) project setup. +[Node.js](https://nodejs.org) or [React Native](https://reactnative.dev) project setup. ::: @@ -31,7 +31,7 @@ First we have to install the minimal amount of dependencies that are required fo -# Node.JS +# Node.js ```console yarn add @credo-ts/core@^0.5.3 @credo-ts/node@^0.5.3 @@ -51,7 +51,7 @@ yarn add @credo-ts/core@^0.5.3 @credo-ts/react-native@^0.5.3 react-native-fs rea # Node.js -No additional setup is required for Node.JS +No additional setup is required for Node.js # React Native @@ -113,7 +113,7 @@ enough for your specific use cases. Please refer to the -# Node.JS +# Node.js ```typescript showLineNumbers set-up.ts section-1 diff --git a/guides/getting-started/set-up/indy-vdr.md b/guides/getting-started/set-up/indy-vdr.md index 49224783..0b5b4cf4 100644 --- a/guides/getting-started/set-up/indy-vdr.md +++ b/guides/getting-started/set-up/indy-vdr.md @@ -4,11 +4,11 @@ ### Installing Indy VDR -When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the `@hyperledger/indy-vdr`, which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform `@hyperledger/indy-vdr-`. Currently there are bindings for Node.JS, as `@hyperledger/indy-vdr-nodejs`, and React Native as `@hyperlegder/indy-vdr-react-native`. +When using Credo with Indy VDR, there are a few extra dependencies that need to be installed. We need to install the `@hyperledger/indy-vdr`, which contains all the functionality to register objects on an Hyperledger Indy VDR. Secondly, we need to add native bindings for the specific platform `@hyperledger/indy-vdr-`. Currently there are bindings for Node.js, as `@hyperledger/indy-vdr-nodejs`, and React Native as `@hyperlegder/indy-vdr-react-native`. -# Node.JS +# Node.js ```console yarn add @credo-ts/indy-vdr@^0.5.3 @hyperledger/indy-vdr-nodejs@^0.2.2 @@ -28,7 +28,7 @@ After installing the dependencies, we can register the Indy VDR module on the ag -# Node.JS +# Node.js ```typescript showLineNumbers set-up-indy-vdr.ts section-1 diff --git a/guides/getting-started/set-up/openid4vc.md b/guides/getting-started/set-up/openid4vc.md index 013a3d10..2d6b56e7 100644 --- a/guides/getting-started/set-up/openid4vc.md +++ b/guides/getting-started/set-up/openid4vc.md @@ -20,7 +20,7 @@ After installing the dependencies, we can register the the different modules on #### Issuer and Verifier -If you want to issue or verify credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcIssuerModule` and the `OpenId4VcVerifierModule`. These modules can only run on the server, in Node.JS and don't work in a React Native environment. These modules can be added separately, it's not required to use both modules. The set up for the issuer and verifier module can be combined with the set up for the holder module below to support issuance, holding, and verification OpenID4VC flows within the same agent. +If you want to issue or verify credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcIssuerModule` and the `OpenId4VcVerifierModule`. These modules can only run on the server, in Node.js and don't work in a React Native environment. These modules can be added separately, it's not required to use both modules. The set up for the issuer and verifier module can be combined with the set up for the holder module below to support issuance, holding, and verification OpenID4VC flows within the same agent. In the example we haven't implemented the `credentialRequestToCredentialMapper` method for the issuer module yet, this is covered in the [OpenID4VC Guides](/guides/tutorials/openid4vc). @@ -30,7 +30,7 @@ In the example we haven't implemented the `credentialRequestToCredentialMapper` ### Holder -If you want to receive and present credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcHolderModule`. This module can run in both Node.JS and React Native. +If you want to receive and present credentials using OpenID for Verifiable Credentials, you can add the `OpenId4VcHolderModule`. This module can run in both Node.js and React Native. ```typescript showLineNumbers set-up-openid4vc-holder.ts section-1 diff --git a/guides/updating/update-assistant.md b/guides/updating/update-assistant.md index 80ccd6fa..8db71a36 100644 --- a/guides/updating/update-assistant.md +++ b/guides/updating/update-assistant.md @@ -63,7 +63,7 @@ await updateAssistant.initialize() if (!(await updateAssistant.isUpToDate())) { await updateAssistant.update({ // If you don't want to create a backup before the update process starts - // (see ) + // (see "Disabling Backups") createBackupBeforeUpdate: false, }) } diff --git a/guides/updating/update-indy-sdk-to-askar.md b/guides/updating/update-indy-sdk-to-askar.md index 2f73db69..7b63bc75 100644 --- a/guides/updating/update-indy-sdk-to-askar.md +++ b/guides/updating/update-indy-sdk-to-askar.md @@ -4,7 +4,7 @@ This documentation explains the process of migrating your Indy SDK wallet to [Ar :::danger -While the migration script technically works on Node.JS, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done. +While the migration script technically works on Node.js, it is strongly advised not to use it, yet. The migration of issuer records (such as Schemas and Credential Definitions) is not implemented yet. When a credential definition is detected it will revert the migration process and no harm is done. ::: @@ -54,7 +54,7 @@ This update script does not transform did records. This is fine for something li :::danger -Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a node.js environment. +Updating of credential definitions is not yet supported. This is why it is strongly advised not to run this script in a Node.js environment. ::: @@ -171,6 +171,6 @@ function getMobileIndySdkDatabasePath(walletId: string) { } ``` -#### Node.JS +#### Node.js -Migration of data from Indy SDK to Aries Askar is not supported yet in Node.JS. If you are using Node.JS or Postgres and need to update to Aries Askar, please open an issue on [GitHub](https://github.com/openwallet-foundation/credo-ts). +Migration of data from Indy SDK to Aries Askar is not supported yet in Node.js. If you are using Node.js or Postgres and need to update to Aries Askar, please open an issue on [GitHub](https://github.com/openwallet-foundation/credo-ts). diff --git a/guides/updating/versions/0.4-to-0.5.md b/guides/updating/versions/0.4-to-0.5.md index 6a769848..62cb4604 100644 --- a/guides/updating/versions/0.4-to-0.5.md +++ b/guides/updating/versions/0.4-to-0.5.md @@ -78,7 +78,7 @@ If you have custom modules take into account there could be a lot more breaking Starting from Credo 0.5, Node 16 has been deprecated and is no longer supported. The supported versions for Credo are Node 18 and 20. We aim to keep support for all LTS releases (the even version numbers) that are either Current, Active, or in Maintenance. Other versions may work, but are not part of our testing and release process. -See the [Release Schedule](https://nodejs.org/en/about/previous-releases#release-schedule) on the Node.JS website for information on past and upcoming Node.JS releases. +See the [Release Schedule](https://nodejs.org/en/about/previous-releases#release-schedule) on the Node.js website for information on past and upcoming Node.js releases. ### Aries to Credo diff --git a/snippets/current/src/set-up-openid4vc-issuer-verifier.ts b/snippets/current/src/set-up-openid4vc-issuer-verifier.ts index 93125970..2343ddbe 100644 --- a/snippets/current/src/set-up-openid4vc-issuer-verifier.ts +++ b/snippets/current/src/set-up-openid4vc-issuer-verifier.ts @@ -10,7 +10,7 @@ const config: InitConfig = { // start-section-1 import { Agent } from '@credo-ts/core' -// OpenID4VC issuer and verifier modules only work in Node.JS +// OpenID4VC issuer and verifier modules only work in Node.js import { agentDependencies } from '@credo-ts/node' import express, { Router } from 'express' @@ -55,7 +55,7 @@ const agent = new Agent({ }, }), - // openId4VcVerifier module can only be used in Node.JS + // openId4VcVerifier module can only be used in Node.js openId4VcVerifier: new OpenId4VcVerifierModule({ baseUrl: 'http://127.0.0.1:3000/siop', From 26dc625cbcc505e93dd820d1baa2a254f7b715e3 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 6 Jun 2024 08:54:32 +0200 Subject: [PATCH 6/9] Update package.json Co-authored-by: Berend Sliedrecht <61358536+berendsliedrecht@users.noreply.github.com> Signed-off-by: Timo Glastra --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d033259d..c1c96f25 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@types/node": "18", "prettier": "^2.7.1", "ts-node": "^10.8.1", - "typescript": "^4.6.4" + "typescript": "~4.6.4" }, "browserslist": { "production": [ From 106fff17849d14217b3bbbfd6105977939d0c9d0 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 6 Jun 2024 08:54:57 +0200 Subject: [PATCH 7/9] Update openid4vc.md Co-authored-by: Berend Sliedrecht <61358536+berendsliedrecht@users.noreply.github.com> Signed-off-by: Timo Glastra --- guides/getting-started/set-up/openid4vc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/getting-started/set-up/openid4vc.md b/guides/getting-started/set-up/openid4vc.md index 2d6b56e7..6f9feb0e 100644 --- a/guides/getting-started/set-up/openid4vc.md +++ b/guides/getting-started/set-up/openid4vc.md @@ -11,7 +11,7 @@ The OpenID4VC Module in Credo currently exposes three modules, one for each role When using Credo with OpenID4VC you need to install the `@credo-ts/openid4vc` module: ```console -yarn add @credo-ts/openid4vc@^0.5.3 +yarn add @credo-ts/openid4vc@0.5.3 ``` ### Adding OpenID4VC Modules to the Agent From 11078bb25b43a8a8091dfc3277d253184a9d5ade Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 6 Jun 2024 09:59:11 +0200 Subject: [PATCH 8/9] updates Signed-off-by: Timo Glastra --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 71d80279..efecc69d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11862,10 +11862,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.6.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@~4.6.4: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== ua-parser-js@^0.7.30: version "0.7.35" From c7b0796b470dd3e46e507ea9861d927a3df31a28 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 6 Jun 2024 10:55:43 +0200 Subject: [PATCH 9/9] ts version Signed-off-by: Timo Glastra --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c1c96f25..82f3f49d 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@types/node": "18", "prettier": "^2.7.1", "ts-node": "^10.8.1", - "typescript": "~4.6.4" + "typescript": "~4.9.5" }, "browserslist": { "production": [ diff --git a/yarn.lock b/yarn.lock index efecc69d..b800df9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11862,10 +11862,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@~4.6.4: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== +typescript@~4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== ua-parser-js@^0.7.30: version "0.7.35"