diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 0ab17c34..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,78 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - ignorePatterns: ['**/tests/*'], - extends: [ - 'eslint:recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:@typescript-eslint/recommended', - 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - ], - parserOptions: { - tsconfigRootDir: __dirname, - project: ['./tsconfig.eslint.json'], - }, - settings: { - 'import/extensions': ['.js', '.ts'], - 'import/parsers': { - '@typescript-eslint/parser': ['.ts', '.tsx'], - }, - 'import/resolver': { - typescript: { - project: './tsconfig.json', - alwaysTryTypes: true, - }, - }, - }, - rules: { - 'no-constant-condition': 'warn', - '@typescript-eslint/no-explicit-any': 'warn', - '@typescript-eslint/explicit-function-return-type': 'off', - '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-use-before-define': ['error', { functions: false, classes: false, variables: true }], - '@typescript-eslint/explicit-member-accessibility': 'error', - 'no-console': 'error', - '@typescript-eslint/ban-ts-comment': 'warn', - '@typescript-eslint/consistent-type-imports': 'error', - 'import/no-cycle': 'error', - 'import/order': [ - 'error', - { - groups: ['type', ['builtin', 'external'], 'parent', 'sibling', 'index'], - alphabetize: { - order: 'asc', - }, - 'newlines-between': 'always', - }, - ], - 'import/no-extraneous-dependencies': [ - 'error', - { - devDependencies: false, - }, - ], - }, - overrides: [ - { - files: ['jest.config.ts', '.eslintrc.js'], - env: { - node: true, - }, - }, - { - files: ['*.test.ts', '**/__tests__/**', '**/tests/**', 'jest.*.ts', '**/samples/**'], - env: { - jest: true, - node: false, - }, - rules: { - 'import/no-extraneous-dependencies': [ - 'error', - { - devDependencies: true, - }, - ], - }, - }, - ], -} diff --git a/.github/workflows/continuous-delivery.yml b/.github/workflows/continuous-delivery.yml index 175bf207..ffdc2e57 100644 --- a/.github/workflows/continuous-delivery.yml +++ b/.github/workflows/continuous-delivery.yml @@ -42,5 +42,3 @@ jobs: tags: | ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.SERVICE }}:${{ env.TAG }} ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.SERVICE }}:latest - - diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index de3f5b0a..7efcc045 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -2,27 +2,27 @@ name: Continuous Integration on: pull_request: - branches: [main] + branches: [main, develop] push: - branches: [main] + branches: [main, develop] concurrency: # Cancel previous runs that are not completed yet - group: afj-controller-${{ github.ref }}-${{ github.repository }}-${{ github.event_name }} + group: credo-controller-${{ github.ref }}-${{ github.repository }}-${{ github.event_name }} cancel-in-progress: true jobs: validate: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 name: Validate steps: - - name: Checkout afj-controller + - name: Checkout credo-controller uses: actions/checkout@v4 - - name: Setup NodeJS - uses: actions/setup-node@v3 + - name: Setup node v20 + uses: actions/setup-node@v4 with: - node-version: 18.19.0 + node-version: 20 cache: 'yarn' - name: Install dependencies diff --git a/README.md b/README.md index f0a21d51..caf31b2d 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ const run = async () => { { // ... AFJ Config ... // }, - agentDependencies + agentDependencies, ) await startServer(agent, { port: 3000 }) } diff --git a/bin/afj-rest.js b/bin/afj-rest.js index 3b416b16..c393a347 100755 --- a/bin/afj-rest.js +++ b/bin/afj-rest.js @@ -1,6 +1,9 @@ #!/usr/bin/env node -/* eslint-disable @typescript-eslint/no-var-requires, no-undef */ - -const { runCliServer } = require('../build/cli') - -runCliServer() +import('../build/cli.js') + .then((module) => { + module.runCliServer() + }) + .catch((err) => { + console.error('Error starting CLI server:', err) + process.exit(1) + }) diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..49a4599d --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,93 @@ +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; +import eslintPluginImport from 'eslint-plugin-import'; +import eslintPluginPrettier from 'eslint-plugin-prettier'; +import eslintPluginTypescript from '@typescript-eslint/eslint-plugin'; +import parser from '@typescript-eslint/parser'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +export default [ + { + ignores: ['**/tests/*', 'build'], + files: ['**/*.ts'], + languageOptions: { + parser, + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.eslint.json'], + sourceType: 'module', + }, + globals: { + console: false, // no-console rule + }, + }, + plugins: { + '@typescript-eslint': eslintPluginTypescript, + import: eslintPluginImport, + prettier: eslintPluginPrettier, + }, + rules: { + 'no-constant-condition': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-use-before-define': ['error', { functions: false, classes: false, variables: true }], + '@typescript-eslint/explicit-member-accessibility': 'error', + 'no-console': 'error', + '@typescript-eslint/ban-ts-comment': 'warn', + '@typescript-eslint/consistent-type-imports': 'error', + 'import/no-cycle': 'error', + 'import/order': [ + 'error', + { + groups: ['type', ['builtin', 'external'], 'parent', 'sibling', 'index'], + alphabetize: { + order: 'asc', + }, + 'newlines-between': 'always', + }, + ], + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: false, + }, + ], + 'prettier/prettier': 'error', + }, + }, + { + files: ['jest.config.ts', 'eslint.config.js'], + languageOptions: { + parserOptions: { + sourceType: 'commonjs', + }, + globals: { + require: true, + module: true, + __dirname: true, + }, + }, + }, + { + files: ['*.test.ts', '**/__tests__/**', '**/tests/**', 'jest.*.ts', '**/samples/**'], + languageOptions: { + globals: { + describe: true, + test: true, + expect: true, + jest: true, + }, + }, + rules: { + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + }, + ], + }, + }, +]; diff --git a/package.json b/package.json index 51e7d442..77ac0f16 100644 --- a/package.json +++ b/package.json @@ -1,118 +1,121 @@ { - "name": "credo-controller", - "main": "build/index", - "types": "build/index", - "version": "2.0.0", - "files": [ - "build" - ], - "publishConfig": { - "access": "public" - }, - "license": "Apache-2.0", - "description": "Rest endpoint wrapper for using your agent over HTTP", - "homepage": "https://github.com/hyperledger/aries-framework-javascript-ext/tree/main/packages/rest", - "repository": { - "type": "git", - "url": "https://github.com/hyperledger/aries-framework-javascript-ext", - "directory": "packages/rest" - }, - "bin": { - "afj-rest": "bin/afj-rest.js" - }, - "scripts": { - "check-types": "tsc --noEmit -p tsconfig.build.json", - "prettier": "prettier '**/*.+(js|json|ts|md|yml|yaml)'", - "format": "yarn prettier --write", - "check-format": "yarn prettier --list-different", - "tsoa": "tsoa spec-and-routes", - "dev": "tsoa spec-and-routes && tsnd --respawn samples/sampleWithApp.ts", - "build": "yarn run clean && yarn run compile", - "prestart:dev": "yarn run clean && yarn run compile", - "start:dev": "./bin/afj-rest.js --config ./samples/cliConfig.json", - "clean": "rimraf -rf ./build", - "compile": "tsoa spec-and-routes && tsc -p tsconfig.build.json", - "prepublishOnly": "yarn run build", - "test": "jest", - "postinstall": "patch-package", - "lint": "eslint --ignore-path .gitignore .", - "validate": "yarn lint && yarn check-types && yarn check-format" - }, - "dependencies": { - "@ayanworks/credo-polygon-w3c-module": "1.0.1-alpha.1", - "@credo-ts/anoncreds": "0.5.3", - "@credo-ts/askar": "0.5.3", - "@credo-ts/core": "0.5.3", - "@credo-ts/indy-vdr": "0.5.3", - "@credo-ts/node": "0.5.3", - "@credo-ts/push-notifications": "^0.7.0", - "@credo-ts/question-answer": "0.5.3", - "@credo-ts/tenants": "0.5.3", - "@hyperledger/anoncreds-nodejs": "0.2.2", - "@hyperledger/aries-askar-nodejs": "0.2.1", - "@hyperledger/indy-vdr-nodejs": "0.2.2", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.202.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.202.0", - "@opentelemetry/instrumentation-express": "^0.51.0", - "@opentelemetry/instrumentation-http": "^0.202.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.48.0", - "@opentelemetry/resources": "^2.0.1", - "@opentelemetry/sdk-logs": "^0.202.0", - "@opentelemetry/sdk-node": "^0.202.0", - "@opentelemetry/semantic-conventions": "^1.34.0", - "@tsoa/runtime": "^6.0.0", - "@types/node-fetch": "^2.6.4", - "@types/ref-struct-di": "^1.1.9", - "@types/uuid": "^8.3.4", - "@types/ws": "^8.5.4", - "axios": "^1.4.0", - "body-parser": "^1.20.0", - "cors": "^2.8.5", - "dotenv": "^16.4.5", - "express": "^5.1.0", - "express-rate-limit": "^7.5.0", - "joi": "^17.12.3", - "jsonwebtoken": "^9.0.2", - "node-fetch": "^2.6.7", - "patch-package": "^8.0.0", - "postinstall-postinstall": "^2.1.0", - "reflect-metadata": "^0.1.13", - "swagger-ui-express": "^4.4.0", - "tslog": "^3.3.3", - "tsoa": "^6.0.1", - "tsyringe": "^4.8.0", - "yargs": "^17.3.1" - }, - "devDependencies": { - "@types/body-parser": "^1.19.2", - "@types/cors": "^2.8.12", - "@types/eslint": "^8.40.2", - "@types/express": "^5.0.2", - "@types/jest": "^27.0.3", - "@types/jsonwebtoken": "^9.0.5", - "@types/multer": "^1.4.7", - "@types/node": "^18.18.8", - "@types/ref-array-di": "^1.2.8", - "@types/ref-struct-di": "^1.1.9", - "@types/supertest": "^2.0.12", - "@types/swagger-ui-express": "^4.1.8", - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.19.1", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.8.0", - "eslint-import-resolver-typescript": "^3.5.5", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "jest": "^29.7.0", - "ngrok": "^4.3.1", - "prettier": "^2.8.8", - "supertest": "^6.2.3", - "ts-jest": "^29.1.2", - "ts-node-dev": "^2.0.0", - "typescript": "^5.3.3" - }, - "engines": { - "node": "18.19.0" - } -} \ No newline at end of file + "name": "credo-controller", + "main": "build/index", + "types": "build/index", + "version": "2.0.0", + "files": [ + "build" + ], + "publishConfig": { + "access": "public" + }, + "license": "Apache-2.0", + "description": "Rest endpoint wrapper for using your agent over HTTP", + "homepage": "https://github.com/hyperledger/aries-framework-javascript-ext/tree/main/packages/rest", + "repository": { + "type": "git", + "url": "https://github.com/hyperledger/aries-framework-javascript-ext", + "directory": "packages/rest" + }, + "bin": { + "afj-rest": "bin/afj-rest.js" + }, + "scripts": { + "check-types": "tsc --noEmit -p tsconfig.build.json", + "prettier": "prettier '**/*.+(js|json|ts|md|yml|yaml)'", + "format": "yarn prettier --write", + "check-format": "yarn prettier --list-different", + "tsoa": "tsoa spec-and-routes", + "dev": "tsoa spec-and-routes && tsnd --respawn samples/sampleWithApp.ts", + "build": "yarn run clean && yarn run compile", + "prestart:dev": "yarn run clean && yarn run compile", + "start:dev": "./bin/afj-rest.js --config ./samples/cliConfig.json", + "clean": "rimraf -rf ./build", + "compile": "tsoa spec-and-routes && tsc -p tsconfig.build.json", + "prepublishOnly": "yarn run build", + "test": "jest", + "postinstall": "patch-package", + "lint": "eslint", + "validate": "yarn lint && yarn check-types && yarn check-format" + }, + "dependencies": { + "@ayanworks/credo-polygon-w3c-module": "1.0.1-alpha.1", + "@credo-ts/anoncreds": "0.6.1-pr-2091-20241119140918", + "@credo-ts/askar": "0.6.1-pr-2091-20241119140918", + "@credo-ts/core": "0.6.1-pr-2091-20241119140918", + "@credo-ts/indy-vdr": "0.6.1-pr-2091-20241119140918", + "@credo-ts/node": "^0.6.1-pr-2091-20241119140918", + "@credo-ts/openid4vc": "0.6.1-pr-2091-20241119140918", + "@credo-ts/question-answer": "0.6.1-pr-2091-20241119140918", + "@credo-ts/tenants": "0.6.1-pr-2091-20241119140918", + "@hyperledger/anoncreds-nodejs": "0.3.1", + "@hyperledger/aries-askar-nodejs": "^0.2.3", + "@hyperledger/indy-vdr-nodejs": "0.2.2", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.202.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.202.0", + "@opentelemetry/instrumentation-express": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.202.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.48.0", + "@opentelemetry/resources": "^2.0.1", + "@opentelemetry/sdk-logs": "^0.202.0", + "@opentelemetry/sdk-node": "^0.202.0", + "@opentelemetry/semantic-conventions": "^1.34.0", + "@openwallet-foundation/askar-nodejs": "^0.3.2", + "@tsoa/runtime": "^6.6.0", + "@types/node-fetch": "^2.6.4", + "@types/ref-struct-di": "^1.1.12", + "@types/uuid": "^10.0.0", + "@types/ws": "^8.18.1", + "axios": "^1.9.0", + "body-parser": "^2.2.0", + "cors": "^2.8.5", + "dotenv": "^16.5.0", + "express": "^5.1.0", + "express-rate-limit": "^7.5.0", + "joi": "^17.13.3", + "jsonwebtoken": "^9.0.2", + "node-fetch": "^3.3.2", + "patch-package": "^8.0.0", + "reflect-metadata": "^0.2.2", + "swagger-ui-express": "^4.4.0", + "tslog": "^3.3.3", + "tsoa": "^6.0.1", + "tsyringe": "^4.8.0", + "ws": "^8.18.2", + "yargs": "^17.7.2" + }, + "devDependencies": { + "@types/body-parser": "^1.19.5", + "@types/cors": "^2.8.18", + "@types/eslint": "^9.6.1", + "@types/express": "^5.0.2", + "@types/express-serve-static-core": "^5.0.6", + "@types/jest": "^29.5.14", + "@types/jsonwebtoken": "^9.0.9", + "@types/multer": "^1.4.12", + "@types/node": "^20.17.0", + "@types/ref-array-di": "^1.2.8", + "@types/ref-struct-di": "^1.1.12", + "@types/supertest": "^6.0.3", + "@types/swagger-ui-express": "^4.1.8", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "@typescript-eslint/parser": "^8.26.0", + "eslint": "^9.27.0", + "eslint-config-prettier": "^10.1.5", + "eslint-import-resolver-typescript": "^4.4.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.4.0", + "jest": "^29.7.0", + "ngrok": "^4.3.3", + "prettier": "^3.5.3", + "supertest": "^7.1.1", + "ts-jest": "^29.3.4", + "ts-node-dev": "^2.0.0", + "typescript": "^5.8.3" + }, + "resolutions": { + "@credo-ts/core": "0.6.1-pr-2091-20241119140918", + "@credo-ts/askar": "0.6.1-pr-2091-20241119140918" + } +} diff --git a/patches/@credo-ts+core+0.5.1+001+initial.patch b/patches/@credo-ts+core+0.5.1+001+initial.patch deleted file mode 100644 index c67f4eda..00000000 --- a/patches/@credo-ts+core+0.5.1+001+initial.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff --git a/node_modules/@credo-ts/core/build/agent/EnvelopeService.js b/node_modules/@credo-ts/core/build/agent/EnvelopeService.js -index 12261a9..0238d59 100644 ---- a/node_modules/@credo-ts/core/build/agent/EnvelopeService.js -+++ b/node_modules/@credo-ts/core/build/agent/EnvelopeService.js -@@ -32,12 +32,14 @@ let EnvelopeService = class EnvelopeService { - let encryptedMessage = await agentContext.wallet.pack(message, recipientKeysBase58, senderKeyBase58 !== null && senderKeyBase58 !== void 0 ? senderKeyBase58 : undefined); - // If the message has routing keys (mediator) pack for each mediator - for (const routingKeyBase58 of routingKeysBase58) { -+ console.log(`message['@type']`, JSON.stringify(message['@type'])) - const forwardMessage = new messages_1.ForwardMessage({ - // Forward to first recipient key - to: recipientKeysBase58[0], - message: encryptedMessage, - }); - recipientKeysBase58 = [routingKeyBase58]; -+ forwardMessage["messageType"] = message['@type']; - this.logger.debug('Forward message created', forwardMessage); - const forwardJson = forwardMessage.toJSON({ - useDidSovPrefixWhereAllowed: agentContext.config.useDidSovPrefixWhereAllowed, -diff --git a/node_modules/@credo-ts/core/build/modules/routing/messages/ForwardMessage.d.ts b/node_modules/@credo-ts/core/build/modules/routing/messages/ForwardMessage.d.ts -index 4f8577b..396f78a 100644 ---- a/node_modules/@credo-ts/core/build/modules/routing/messages/ForwardMessage.d.ts -+++ b/node_modules/@credo-ts/core/build/modules/routing/messages/ForwardMessage.d.ts -@@ -3,6 +3,7 @@ import { EncryptedMessage } from '../../../types'; - export interface ForwardMessageOptions { - id?: string; - to: string; -+ messageType: string; - message: EncryptedMessage; - } - /** -@@ -19,5 +20,6 @@ export declare class ForwardMessage extends AgentMessage { - readonly type: string; - static readonly type: import("../../../utils/messageType").ParsedMessageType; - to: string; -+ messageType: string; - message: EncryptedMessage; - } -diff --git a/node_modules/@credo-ts/core/build/types.d.ts b/node_modules/@credo-ts/core/build/types.d.ts -index e0384d9..0a669fb 100644 ---- a/node_modules/@credo-ts/core/build/types.d.ts -+++ b/node_modules/@credo-ts/core/build/types.d.ts -@@ -81,6 +81,7 @@ export interface PlaintextMessage { - thid?: string; - pthid?: string; - }; -+ messageType: string; - [key: string]: unknown; - } - export interface OutboundPackage { \ No newline at end of file diff --git a/patches/@credo-ts+core+0.5.0.patch b/patches/@credo-ts+core+0.5.15+001+message-type-for-messages.patch similarity index 70% rename from patches/@credo-ts+core+0.5.0.patch rename to patches/@credo-ts+core+0.5.15+001+message-type-for-messages.patch index 7350b168..d4ed27a7 100644 --- a/patches/@credo-ts+core+0.5.0.patch +++ b/patches/@credo-ts+core+0.5.15+001+message-type-for-messages.patch @@ -1,15 +1,8 @@ diff --git a/node_modules/@credo-ts/core/build/agent/EnvelopeService.js b/node_modules/@credo-ts/core/build/agent/EnvelopeService.js -index 12261a9..0238d59 100644 +index 72821a7..d11d209 100644 --- a/node_modules/@credo-ts/core/build/agent/EnvelopeService.js +++ b/node_modules/@credo-ts/core/build/agent/EnvelopeService.js -@@ -32,12 +32,14 @@ let EnvelopeService = class EnvelopeService { - let encryptedMessage = await agentContext.wallet.pack(message, recipientKeysBase58, senderKeyBase58 !== null && senderKeyBase58 !== void 0 ? senderKeyBase58 : undefined); - // If the message has routing keys (mediator) pack for each mediator - for (const routingKeyBase58 of routingKeysBase58) { -+ console.log(`message['@type']`, JSON.stringify(message['@type'])) - const forwardMessage = new messages_1.ForwardMessage({ - // Forward to first recipient key - to: recipientKeysBase58[0], +@@ -38,6 +38,7 @@ let EnvelopeService = class EnvelopeService { message: encryptedMessage, }); recipientKeysBase58 = [routingKeyBase58]; @@ -37,14 +30,14 @@ index 4f8577b..396f78a 100644 message: EncryptedMessage; } diff --git a/node_modules/@credo-ts/core/build/types.d.ts b/node_modules/@credo-ts/core/build/types.d.ts -index e0384d9..0a669fb 100644 +index 0d52d00..4bdb736 100644 --- a/node_modules/@credo-ts/core/build/types.d.ts +++ b/node_modules/@credo-ts/core/build/types.d.ts -@@ -81,6 +81,7 @@ export interface PlaintextMessage { +@@ -82,6 +82,7 @@ export interface PlaintextMessage { thid?: string; pthid?: string; }; -+ messageType: string; ++ messageType: string; [key: string]: unknown; } export interface OutboundPackage { diff --git a/patches/@credo-ts+core+0.5.3+004+added-prettyVc-in-JsonCredential-interface.patch b/patches/@credo-ts+core+0.5.15+003+added-prettyVc-in-JsonCredential-interface.patch similarity index 100% rename from patches/@credo-ts+core+0.5.3+004+added-prettyVc-in-JsonCredential-interface.patch rename to patches/@credo-ts+core+0.5.15+003+added-prettyVc-in-JsonCredential-interface.patch diff --git a/patches/@credo-ts+core+0.5.3+005+commenting validationPresentation to avoid abandoned issue.patch b/patches/@credo-ts+core+0.5.15+004+commenting validationPresentation to avoid abandoned issue.patch similarity index 100% rename from patches/@credo-ts+core+0.5.3+005+commenting validationPresentation to avoid abandoned issue.patch rename to patches/@credo-ts+core+0.5.15+004+commenting validationPresentation to avoid abandoned issue.patch diff --git a/patches/@credo-ts+core+0.5.3+002+fix-process-problem-report.patch b/patches/@credo-ts+core+0.5.3+002+fix-process-problem-report.patch deleted file mode 100644 index 64632960..00000000 --- a/patches/@credo-ts+core+0.5.3+002+fix-process-problem-report.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/node_modules/@credo-ts/core/build/modules/credentials/protocol/BaseCredentialProtocol.js b/node_modules/@credo-ts/core/build/modules/credentials/protocol/BaseCredentialProtocol.js -index 30dbb7a..5b1b54c 100644 ---- a/node_modules/@credo-ts/core/build/modules/credentials/protocol/BaseCredentialProtocol.js -+++ b/node_modules/@credo-ts/core/build/modules/credentials/protocol/BaseCredentialProtocol.js -@@ -19,11 +19,9 @@ class BaseCredentialProtocol { - */ - async processProblemReport(messageContext) { - const { message: credentialProblemReportMessage, agentContext } = messageContext; -- const connection = messageContext.assertReadyConnection(); - agentContext.config.logger.debug(`Processing problem report with message id ${credentialProblemReportMessage.id}`); - const credentialRecord = await this.getByProperties(agentContext, { - threadId: credentialProblemReportMessage.threadId, -- connectionId: connection.id, - }); - // Update record - credentialRecord.errorMessage = `${credentialProblemReportMessage.description.code}: ${credentialProblemReportMessage.description.en}`; -diff --git a/node_modules/@credo-ts/core/build/modules/proofs/protocol/BaseProofProtocol.js b/node_modules/@credo-ts/core/build/modules/proofs/protocol/BaseProofProtocol.js -index 25d2948..cf9e315 100644 ---- a/node_modules/@credo-ts/core/build/modules/proofs/protocol/BaseProofProtocol.js -+++ b/node_modules/@credo-ts/core/build/modules/proofs/protocol/BaseProofProtocol.js -@@ -8,11 +8,10 @@ const ProofState_1 = require("../models/ProofState"); - const repository_1 = require("../repository"); - class BaseProofProtocol { - async processProblemReport(messageContext) { -- const { message: proofProblemReportMessage, agentContext, connection } = messageContext; -+ const { message: proofProblemReportMessage, agentContext } = messageContext; - agentContext.config.logger.debug(`Processing problem report with message id ${proofProblemReportMessage.id}`); - const proofRecord = await this.getByProperties(agentContext, { - threadId: proofProblemReportMessage.threadId, -- connectionId: connection === null || connection === void 0 ? void 0 : connection.id, - }); - // Update record - proofRecord.errorMessage = `${proofProblemReportMessage.description.code}: ${proofProblemReportMessage.description.en}`; diff --git a/patches/@credo-ts+core+0.5.3+006+w3c-issuance-without-holder-did-negotiaton.patch b/patches/@credo-ts+core+0.5.3+006+w3c-issuance-without-holder-did-negotiaton.patch deleted file mode 100644 index fa875140..00000000 --- a/patches/@credo-ts+core+0.5.3+006+w3c-issuance-without-holder-did-negotiaton.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/node_modules/@credo-ts/core/build/modules/credentials/protocol/v2/V2CredentialProtocol.js b/node_modules/@credo-ts/core/build/modules/credentials/protocol/v2/V2CredentialProtocol.js -index fb1fb9d..b519694 100644 ---- a/node_modules/@credo-ts/core/build/modules/credentials/protocol/v2/V2CredentialProtocol.js -+++ b/node_modules/@credo-ts/core/build/modules/credentials/protocol/v2/V2CredentialProtocol.js -@@ -97,7 +97,6 @@ class V2CredentialProtocol extends BaseCredentialProtocol_1.BaseCredentialProtoc - let credentialRecord = await this.findByProperties(messageContext.agentContext, { - threadId: proposalMessage.threadId, - role: models_1.CredentialRole.Issuer, -- connectionId: connection === null || connection === void 0 ? void 0 : connection.id, - }); - const formatServices = this.getFormatServicesFromMessage(proposalMessage.formats); - if (formatServices.length === 0) { \ No newline at end of file diff --git a/src/authentication.ts b/src/authentication.ts index fd054dc5..41334ede 100644 --- a/src/authentication.ts +++ b/src/authentication.ts @@ -10,7 +10,7 @@ export async function expressAuthentication( request: express.Request, securityName: string, secMethod?: { [key: string]: any }, - scopes?: string + scopes?: string, ) { const logger = new TsLogger(LogLevel.info) diff --git a/src/cli.ts b/src/cli.ts index f352694f..23f8eb3d 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,8 +1,9 @@ -import type { AriesRestConfig } from './cliAgent' +import type { AriesRestConfig } from './cliAgent.js' import yargs from 'yargs' +import { hideBin } from 'yargs/helpers' -import { runRestAgent } from './cliAgent' +import { runRestAgent } from './cliAgent.js' interface IndyLedger { genesisTransactions: string @@ -52,69 +53,32 @@ interface InboundTransport { type Transports = 'http' | 'ws' async function parseArguments(): Promise { - return yargs + return yargs(hideBin(process.argv)) .command('start', 'Start Credo Rest agent') - .option('label', { - alias: 'l', - string: true, - demandOption: true, - }) - .option('wallet-id', { - string: true, - demandOption: true, - }) - .option('wallet-key', { - string: true, - demandOption: true, - }) - .option('wallet-type', { - string: true, - demandOption: true, - }) - .option('wallet-url', { - string: true, - demandOption: true, - }) - .option('wallet-scheme', { - string: true, - demandOption: true, - }) - .option('wallet-account', { - string: true, - demandOption: true, - }) - .option('wallet-password', { - string: true, - demandOption: true, - }) - .option('wallet-admin-account', { - string: true, - demandOption: true, - }) - .option('wallet-admin-password', { - string: true, - demandOption: true, - }) + .option('label', { alias: 'l', string: true, demandOption: true }) + .option('wallet-id', { string: true, demandOption: true }) + .option('wallet-key', { string: true, demandOption: true }) + .option('wallet-type', { string: true, demandOption: true }) + .option('wallet-url', { string: true, demandOption: true }) + .option('wallet-scheme', { string: true, demandOption: true }) + .option('wallet-account', { string: true, demandOption: true }) + .option('wallet-password', { string: true, demandOption: true }) + .option('wallet-admin-account', { string: true, demandOption: true }) + .option('wallet-admin-password', { string: true, demandOption: true }) .option('indy-ledger', { array: true, default: [], - coerce: (input) => { - return input.map((item: { genesisTransactions: string; indyNamespace: string }) => ({ + coerce: (input) => + input.map((item: { genesisTransactions: string; indyNamespace: string }) => ({ genesisTransactions: item.genesisTransactions, indyNamespace: item.indyNamespace, - })) - }, + })), }) .option('endpoint', { array: true, - coerce: (input) => { - return input.map((item: string) => String(item)) - }, - }) - .option('log-level', { - number: true, - default: 3, + coerce: (input) => input.map((item: string) => String(item)), }) + .option('log-level', { number: true, default: 3 }) .option('outbound-transport', { array: true, coerce: (input) => { @@ -140,30 +104,25 @@ async function parseArguments(): Promise { 'port' in item && typeof item.port === 'number' ) { - const transport: Transports = item.transport as Transports - const port: number = item.port - transports.push({ transport, port }) + transports.push({ transport: item.transport as Transports, port: item.port }) } else { throw new Error( - 'Inbound transport should be specified as an array of objects with transport and port properties.' + 'Inbound transport should be specified as an array of objects with transport and port properties.', ) } } return transports }, }) - .option('auto-accept-connections', { - boolean: true, - default: false, - }) + .option('auto-accept-connections', { boolean: true, default: false }) .option('auto-accept-credentials', { choices: ['always', 'never', 'contentApproved'], coerce: (input: string) => { - if (input === 'always' || input === 'never' || input === 'contentApproved') { + if (['always', 'never', 'contentApproved'].includes(input)) { return input as 'always' | 'never' | 'contentApproved' } else { throw new Error( - 'Invalid value for auto-accept-credentials. Valid values are "always", "never", or "contentApproved".' + 'Invalid value for auto-accept-credentials. Valid values are "always", "never", or "contentApproved".', ) } }, @@ -171,41 +130,23 @@ async function parseArguments(): Promise { .option('auto-accept-proofs', { choices: ['always', 'never', 'contentApproved'], coerce: (input: string) => { - if (input === 'always' || input === 'never' || input === 'contentApproved') { + if (['always', 'never', 'contentApproved'].includes(input)) { return input as 'always' | 'never' | 'contentApproved' } else { throw new Error( - 'Invalid value for auto-accept-proofs. Valid values are "always", "never", or "contentApproved".' + 'Invalid value for auto-accept-proofs. Valid values are "always", "never", or "contentApproved".', ) } }, }) - .option('webhook-url', { - string: true, - }) - .option('admin-port', { - number: true, - demandOption: true, - }) - .option('tenancy', { - boolean: true, - default: false, - }) - .option('did-registry-contract-address', { - string: true, - }) - .option('schema-manager-contract-address', { - string: true, - }) - .option('wallet-connect-timeout', { - number: true, - }) - .option('wallet-max-connections', { - number: true, - }) - .option('wallet-idle-timeout', { - number: true, - }) + .option('webhook-url', { string: true }) + .option('admin-port', { number: true, demandOption: true }) + .option('tenancy', { boolean: true, default: false }) + .option('did-registry-contract-address', { string: true }) + .option('schema-manager-contract-address', { string: true }) + .option('wallet-connect-timeout', { number: true }) + .option('wallet-max-connections', { number: true }) + .option('wallet-idle-timeout', { number: true }) .config() .env('AFJ_REST') .parseAsync() as Promise diff --git a/src/cliAgent.ts b/src/cliAgent.ts index 1db8a874..81a190df 100644 --- a/src/cliAgent.ts +++ b/src/cliAgent.ts @@ -1,6 +1,7 @@ import type { InitConfig } from '@credo-ts/core' import type { WalletConfig } from '@credo-ts/core/build/types' import type { IndyVdrPoolConfig } from '@credo-ts/indy-vdr' +import type { RequestHandler } from 'express' import { PolygonDidRegistrar, PolygonDidResolver, PolygonModule } from '@ayanworks/credo-polygon-w3c-module' import { @@ -34,6 +35,7 @@ import { Agent, JsonLdCredentialFormatService, DifPresentationExchangeProofFormatService, + X509Module, } from '@credo-ts/core' import { IndyVdrAnonCredsRegistry, @@ -42,6 +44,7 @@ import { IndyVdrIndyDidRegistrar, } from '@credo-ts/indy-vdr' import { agentDependencies, HttpInboundTransport, WsInboundTransport } from '@credo-ts/node' +import { OpenId4VcIssuerModule, OpenId4VcVerifierModule } from '@credo-ts/openid4vc' import { QuestionAnswerModule } from '@credo-ts/question-answer' import { TenantsModule } from '@credo-ts/tenants' import { anoncreds } from '@hyperledger/anoncreds-nodejs' @@ -49,12 +52,17 @@ import { ariesAskar } from '@hyperledger/aries-askar-nodejs' import { indyVdr } from '@hyperledger/indy-vdr-nodejs' import axios from 'axios' import { randomBytes } from 'crypto' +import { Router } from 'express' import { readFile } from 'fs/promises' import jwt from 'jsonwebtoken' import { IndicioAcceptanceMechanism, IndicioTransactionAuthorAgreement, Network, NetworkName } from './enums/enum' import { setupServer } from './server' import { TsLogger } from './utils/logger' +import { getCredentialRequestToCredentialMapper } from './utils/oid4vc-agent' + +const openId4VciRouter = Router() +const openId4VpRouter = Router() export type Transports = 'ws' | 'http' export type InboundTransport = { @@ -124,7 +132,7 @@ const getModules = ( autoAcceptConnections: boolean, autoAcceptCredentials: AutoAcceptCredential, autoAcceptProofs: AutoAcceptProof, - walletScheme: AskarMultiWalletDatabaseScheme + walletScheme: AskarMultiWalletDatabaseScheme, ) => { const legacyIndyCredentialFormat = new LegacyIndyCredentialFormatService() const legacyIndyProofFormat = new LegacyIndyProofFormatService() @@ -198,6 +206,20 @@ const getModules = ( rpcUrl: rpcUrl ? rpcUrl : (process.env.RPC_URL as string), serverUrl: fileServerUrl ? fileServerUrl : (process.env.SERVER_URL as string), }), + openId4VcVerifier: new OpenId4VcVerifierModule({ + baseUrl: `http://${process.env.APP_URL}/oid4vp`, + router: openId4VpRouter, + }), + openId4VcIssuer: new OpenId4VcIssuerModule({ + baseUrl: `http://${process.env.APP_URL}/oid4vci`, + router: openId4VciRouter, + statefullCredentialOfferExpirationInSeconds: Number(process.env.OPENID_CRED_OFFER_EXPIRY) || 3600, + accessTokenExpiresInSeconds: Number(process.env.OPENID_ACCESS_TOKEN_EXPIRY) || 3600, + authorizationCodeExpiresInSeconds: Number(process.env.OPENID_AUTH_CODE_EXPIRY) || 3600, + cNonceExpiresInSeconds: Number(process.env.OPENID_CNONCE_EXPIRY) || 3600, + dpopRequired: false, + credentialRequestToCredentialMapper: (...args) => getCredentialRequestToCredentialMapper()(...args), + }), } } @@ -212,7 +234,7 @@ const getWithTenantModules = ( autoAcceptConnections: boolean, autoAcceptCredentials: AutoAcceptCredential, autoAcceptProofs: AutoAcceptProof, - walletScheme: AskarMultiWalletDatabaseScheme + walletScheme: AskarMultiWalletDatabaseScheme, ) => { const modules = getModules( networkConfig, @@ -224,7 +246,7 @@ const getWithTenantModules = ( autoAcceptConnections, autoAcceptCredentials, autoAcceptProofs, - walletScheme + walletScheme, ) return { tenants: new TenantsModule({ @@ -288,6 +310,7 @@ export async function runRestAgent(restConfig: AriesRestConfig) { // As backup is only supported for sqlite storage // we need to manually take backup of the storage before updating the storage backupBeforeStorageUpdate: false, + allowInsecureHttpUrls: true, // Allow insecure HTTP URLs for genesis transactions } async function fetchLedgerData(ledgerConfig: { @@ -355,7 +378,7 @@ export async function runRestAgent(restConfig: AriesRestConfig) { autoAcceptConnections || true, autoAcceptCredentials || AutoAcceptCredential.Always, autoAcceptProofs || AutoAcceptProof.ContentApproved, - walletScheme || AskarMultiWalletDatabaseScheme.ProfilePerWallet + walletScheme || AskarMultiWalletDatabaseScheme.ProfilePerWallet, ) const modules = getModules( networkConfig, @@ -367,7 +390,7 @@ export async function runRestAgent(restConfig: AriesRestConfig) { autoAcceptConnections || true, autoAcceptCredentials || AutoAcceptCredential.Always, autoAcceptProofs || AutoAcceptProof.ContentApproved, - walletScheme || AskarMultiWalletDatabaseScheme.ProfilePerWallet + walletScheme || AskarMultiWalletDatabaseScheme.ProfilePerWallet, ) const agent = new Agent({ config: agentConfig, @@ -388,10 +411,31 @@ export async function runRestAgent(restConfig: AriesRestConfig) { agent.registerOutboundTransport(new OutboundTransport()) } + // Register inbound transports + // for (const inboundTransport of inboundTransports) { + // const InboundTransport = inboundTransportMapping[inboundTransport.transport] + // agent.registerInboundTransport(new InboundTransport({ port: inboundTransport.port })) + + // // agent.modules.didcomm.registerInboundTransport(transport) + + // // Configure the oid4vc routers on the http inbound transport + // if (inboundTransport instanceof HttpInboundTransport) { + // inboundTransport.app.use('/oid4vci', modules.openId4VcIssuer.config.router as unknown as RequestHandler) + // inboundTransport.app.use('/oid4vp', modules.openId4VcVerifier.config.router as unknown as RequestHandler) + // // InboundTransport.app.use('/oid4vh', modules.openId4VcHolderModule.config.router as unknown as RequestHandler) + // } + // } // Register inbound transports for (const inboundTransport of inboundTransports) { const InboundTransport = inboundTransportMapping[inboundTransport.transport] - agent.registerInboundTransport(new InboundTransport({ port: inboundTransport.port })) + const transport = new InboundTransport({ port: inboundTransport.port }) + agent.registerInboundTransport(transport) + + // Configure the oid4vc routers on the http inbound transport + if (transport instanceof HttpInboundTransport) { + transport.app.use('/oid4vci', modules.openId4VcIssuer.config.router as any) + transport.app.use('/oid4vp', modules.openId4VcVerifier.config.router as any) + } } await agent.initialize() @@ -435,7 +479,7 @@ export async function runRestAgent(restConfig: AriesRestConfig) { port: adminPort, schemaFileServerURL, }, - token + token, ) logger.info(`*** API Token: ${token}`) diff --git a/src/controllers/agent/AgentController.ts b/src/controllers/agent/AgentController.ts index aad7d02b..19fb9012 100644 --- a/src/controllers/agent/AgentController.ts +++ b/src/controllers/agent/AgentController.ts @@ -2,12 +2,11 @@ import type { RestAgentModules } from '../../cliAgent' import type { AgentInfo } from '../types' import { Agent } from '@credo-ts/core' +import { Controller, Delete, Get, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' -import { Controller, Delete, Get, Route, Tags, Security } from 'tsoa' - @Tags('Agent') @Route('/agent') @injectable() diff --git a/src/controllers/basic-messages/BasicMessageController.ts b/src/controllers/basic-messages/BasicMessageController.ts index c4b9cbd1..eb068ce4 100644 --- a/src/controllers/basic-messages/BasicMessageController.ts +++ b/src/controllers/basic-messages/BasicMessageController.ts @@ -2,13 +2,12 @@ import type { RestAgentModules } from '../../cliAgent' import type { BasicMessageRecord, BasicMessageStorageProps } from '@credo-ts/core' import { Agent } from '@credo-ts/core' +import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' import { BasicMessageRecordExample, RecordId } from '../examples' -import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security } from 'tsoa' - @Tags('Basic Messages') @Route('/basic-messages') @Security('apiKey') diff --git a/src/controllers/connections/ConnectionController.ts b/src/controllers/connections/ConnectionController.ts index eeae789b..6550fcd2 100644 --- a/src/controllers/connections/ConnectionController.ts +++ b/src/controllers/connections/ConnectionController.ts @@ -2,14 +2,13 @@ import type { RestAgentModules } from '../../cliAgent' import type { ConnectionRecordProps } from '@credo-ts/core' import { DidExchangeState, Agent } from '@credo-ts/core' +import { Controller, Delete, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' import { NotFoundError } from '../../errors' import { ConnectionRecordExample, RecordId } from '../examples' -import { Controller, Delete, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' - @Tags('Connections') @Route() @injectable() @@ -39,7 +38,7 @@ export class ConnectionController extends Controller { @Query('state') state?: DidExchangeState, @Query('myDid') myDid?: string, @Query('theirDid') theirDid?: string, - @Query('theirLabel') theirLabel?: string + @Query('theirLabel') theirLabel?: string, ) { try { const connections = await this.agent.connections.findAllByQuery({ diff --git a/src/controllers/credentials/CredentialController.ts b/src/controllers/credentials/CredentialController.ts index 41fb3c1d..12745b76 100644 --- a/src/controllers/credentials/CredentialController.ts +++ b/src/controllers/credentials/CredentialController.ts @@ -14,6 +14,7 @@ import { createPeerDidDocumentFromServices, PeerDidNumAlgo, } from '@credo-ts/core' +import { Body, Controller, Get, Path, Post, Route, Tags, Example, Query, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' @@ -30,8 +31,6 @@ import { ThreadId, } from '../types' -import { Body, Controller, Get, Path, Post, Route, Tags, Example, Query, Security } from 'tsoa' - @Tags('Credentials') @Security('apiKey') @Route('/credentials') @@ -58,7 +57,7 @@ export class CredentialController extends Controller { @Query('parentThreadId') parentThreadId?: ThreadId, @Query('connectionId') connectionId?: RecordId, @Query('state') state?: CredentialState, - @Query('role') role?: CredentialRole + @Query('role') role?: CredentialRole, ) { try { const credentials = await this.agent.credentials.findAllByQuery({ diff --git a/src/controllers/credentials/CredentialDefinitionController.ts b/src/controllers/credentials/CredentialDefinitionController.ts index 2f825481..14f04226 100644 --- a/src/controllers/credentials/CredentialDefinitionController.ts +++ b/src/controllers/credentials/CredentialDefinitionController.ts @@ -3,6 +3,7 @@ import type { SchemaId } from '../examples' import { getUnqualifiedCredentialDefinitionId, parseIndyCredentialDefinitionId } from '@credo-ts/anoncreds' import { Agent } from '@credo-ts/core' +import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security, Response } from 'tsoa' import { injectable } from 'tsyringe' import { CredentialEnum, EndorserMode } from '../../enums/enum' @@ -11,8 +12,6 @@ import { ENDORSER_DID_NOT_PRESENT } from '../../errorMessages' import { BadRequestError, InternalServerError, NotFoundError } from '../../errors/errors' import { CredentialDefinitionExample, CredentialDefinitionId } from '../examples' -import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security, Response } from 'tsoa' - @Tags('Credential Definitions') @Route('/credential-definitions') @Security('apiKey') @@ -34,12 +33,11 @@ export class CredentialDefinitionController extends Controller { @Example(CredentialDefinitionExample) @Get('/:credentialDefinitionId') public async getCredentialDefinitionById( - @Path('credentialDefinitionId') credentialDefinitionId: CredentialDefinitionId + @Path('credentialDefinitionId') credentialDefinitionId: CredentialDefinitionId, ) { try { - const credentialDefinitionResult = await this.agent.modules.anoncreds.getCredentialDefinition( - credentialDefinitionId - ) + const credentialDefinitionResult = + await this.agent.modules.anoncreds.getCredentialDefinition(credentialDefinitionId) if (credentialDefinitionResult.resolutionMetadata?.error === 'notFound') { throw new NotFoundError(credentialDefinitionResult.resolutionMetadata.message) @@ -78,7 +76,7 @@ export class CredentialDefinitionController extends Controller { tag: string endorse?: boolean endorserDid?: string - } + }, ) { try { const { issuerId, schemaId, tag, endorse, endorserDid } = credentialDefinitionRequest @@ -107,9 +105,8 @@ export class CredentialDefinitionController extends Controller { credentialDefinitionPayload.options.endorserDid = endorserDid ? endorserDid : '' } - const registerCredentialDefinitionResult = await this.agent.modules.anoncreds.registerCredentialDefinition( - credentialDefinitionPayload - ) + const registerCredentialDefinitionResult = + await this.agent.modules.anoncreds.registerCredentialDefinition(credentialDefinitionPayload) if (registerCredentialDefinitionResult.credentialDefinitionState.state === CredentialEnum.Failed) { throw new InternalServerError('Falied to register credef on ledger') @@ -128,12 +125,12 @@ export class CredentialDefinitionController extends Controller { // TODO: Return uniform response for both Internally and Externally endorsed Schemas if (!endorse) { const indyCredDefId = parseIndyCredentialDefinitionId( - registerCredentialDefinitionResult.credentialDefinitionState.credentialDefinitionId as string + registerCredentialDefinitionResult.credentialDefinitionState.credentialDefinitionId as string, ) const getCredentialDefinitionId = await getUnqualifiedCredentialDefinitionId( indyCredDefId.namespaceIdentifier, indyCredDefId.schemaSeqNo, - indyCredDefId.tag + indyCredDefId.tag, ) registerCredentialDefinitionResult.credentialDefinitionState.credentialDefinitionId = getCredentialDefinitionId return registerCredentialDefinitionResult.credentialDefinitionState diff --git a/src/controllers/credentials/SchemaController.ts b/src/controllers/credentials/SchemaController.ts index 65ba6f7a..7b955353 100644 --- a/src/controllers/credentials/SchemaController.ts +++ b/src/controllers/credentials/SchemaController.ts @@ -2,6 +2,7 @@ import type { RestAgentModules } from '../../cliAgent' import { getUnqualifiedSchemaId, parseIndySchemaId } from '@credo-ts/anoncreds' import { Agent } from '@credo-ts/core' +import { Example, Get, Post, Route, Tags, Security, Path, Body, Controller } from 'tsoa' import { injectable } from 'tsyringe' import { CredentialEnum, EndorserMode, SchemaError } from '../../enums/enum' @@ -11,7 +12,6 @@ import { BadRequestError, InternalServerError, NotFoundError } from '../../error import { CreateSchemaSuccessful, SchemaExample } from '../examples' import { CreateSchemaInput } from '../types' -import { Example, Get, Post, Route, Tags, Security, Path, Body, Controller } from 'tsoa' @Tags('Schemas') @Route('/schemas') @Security('apiKey') @@ -117,7 +117,7 @@ export class SchemaController extends Controller { const getSchemaUnqualifiedId = await getUnqualifiedSchemaId( indySchemaId.namespaceIdentifier, indySchemaId.schemaName, - indySchemaId.schemaVersion + indySchemaId.schemaVersion, ) createSchemaTxResult.schemaState.schemaId = getSchemaUnqualifiedId diff --git a/src/controllers/did/DidController.ts b/src/controllers/did/DidController.ts index fe373523..3f4de7b2 100644 --- a/src/controllers/did/DidController.ts +++ b/src/controllers/did/DidController.ts @@ -11,6 +11,7 @@ import { getBls12381G2Key2020, } from '@credo-ts/core' import axios from 'axios' +import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import { DidMethod, Network, Role } from '../../enums/enum' @@ -19,8 +20,6 @@ import { BadRequestError, InternalServerError } from '../../errors' import { CreateDidResponse, Did, DidRecordExample } from '../examples' import { DidCreate } from '../types' -import { Body, Controller, Example, Get, Path, Post, Route, Tags, Security } from 'tsoa' - @Tags('Dids') @Route('/dids') @Security('apiKey') @@ -126,7 +125,7 @@ export class DidController extends Controller { case Network.Bcovrin_Testnet: result = await this.handleBcovrin( createDidOptions, - `did:${createDidOptions.method}:${createDidOptions.network}` + `did:${createDidOptions.method}:${createDidOptions.network}`, ) break @@ -134,7 +133,7 @@ export class DidController extends Controller { case Network.Indicio_Testnet: result = await this.handleIndicio( createDidOptions, - `did:${createDidOptions.method}:${createDidOptions.network}` + `did:${createDidOptions.method}:${createDidOptions.network}`, ) break diff --git a/src/controllers/endorser-transaction/EndorserTransactionController.ts b/src/controllers/endorser-transaction/EndorserTransactionController.ts index 6bbdfade..3368df76 100644 --- a/src/controllers/endorser-transaction/EndorserTransactionController.ts +++ b/src/controllers/endorser-transaction/EndorserTransactionController.ts @@ -8,6 +8,7 @@ import { parseIndySchemaId, } from '@credo-ts/anoncreds' import { Agent } from '@credo-ts/core' +import { Body, Controller, Post, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import { CredentialEnum, EndorserMode } from '../../enums/enum' @@ -15,8 +16,6 @@ import ErrorHandlingService from '../../errorHandlingService' import { BadRequestError } from '../../errors' import { DidNymTransaction, EndorserTransaction, WriteTransaction } from '../types' -import { Body, Controller, Post, Route, Tags, Security } from 'tsoa' - @Tags('EndorserTransaction') @Route('/transactions') @Security('apiKey') @@ -40,7 +39,7 @@ export class EndorserTransactionController extends Controller { } const signedTransaction = await this.agent.modules.indyVdr.endorseTransaction( endorserTransaction.transaction, - endorserTransaction.endorserDid + endorserTransaction.endorserDid, ) return { signedTransaction } @@ -71,19 +70,19 @@ export class EndorserTransactionController extends Controller { @Post('/write') public async writeSchemaAndCredDefOnLedger( @Body() - writeTransaction: WriteTransaction + writeTransaction: WriteTransaction, ) { try { if (writeTransaction.schema) { const writeSchema = await this.submitSchemaOnLedger( writeTransaction.schema, - writeTransaction.endorsedTransaction + writeTransaction.endorsedTransaction, ) return writeSchema } else if (writeTransaction.credentialDefinition) { const writeCredDef = await this.submitCredDefOnLedger( writeTransaction.credentialDefinition, - writeTransaction.endorsedTransaction + writeTransaction.endorsedTransaction, ) return writeCredDef } else { @@ -101,7 +100,7 @@ export class EndorserTransactionController extends Controller { version: Version attributes: string[] }, - endorsedTransaction?: string + endorsedTransaction?: string, ) { if (!schema.issuerId) { throw new BadRequestError('IssuerId is required') @@ -133,7 +132,7 @@ export class EndorserTransactionController extends Controller { const getSchemaUnqualifiedId = await getUnqualifiedSchemaId( indySchemaId.namespaceIdentifier, indySchemaId.schemaName, - indySchemaId.schemaVersion + indySchemaId.schemaVersion, ) if (schemaState.state === CredentialEnum.Finished || schemaState.state === CredentialEnum.Action) { schemaState.schemaId = getSchemaUnqualifiedId @@ -149,7 +148,7 @@ export class EndorserTransactionController extends Controller { value: unknown type: string }, - endorsedTransaction?: string + endorsedTransaction?: string, ) { if (!credentialDefinition.schemaId) { throw new BadRequestError('SchemaId is required') @@ -178,7 +177,7 @@ export class EndorserTransactionController extends Controller { const getCredentialDefinitionId = await getUnqualifiedCredentialDefinitionId( indyCredDefId.namespaceIdentifier, indyCredDefId.schemaSeqNo, - indyCredDefId.tag + indyCredDefId.tag, ) if ( credentialDefinitionState.state === CredentialEnum.Finished || diff --git a/src/controllers/multi-tenancy/MultiTenancyController.ts b/src/controllers/multi-tenancy/MultiTenancyController.ts index 551d5258..55d69e03 100644 --- a/src/controllers/multi-tenancy/MultiTenancyController.ts +++ b/src/controllers/multi-tenancy/MultiTenancyController.ts @@ -1,7 +1,12 @@ /* eslint-disable prettier/prettier */ import type { RestAgentModules, RestMultiTenantAgentModules } from '../../cliAgent' import type { Version } from '../examples' -import type { CustomW3cJsonLdSignCredentialOptions, RecipientKeyOption, SafeW3cJsonLdVerifyCredentialOptions, SchemaMetadata } from '../types' +import type { + CustomW3cJsonLdSignCredentialOptions, + RecipientKeyOption, + SafeW3cJsonLdVerifyCredentialOptions, + SchemaMetadata, +} from '../types' import type { PolygonDidCreateOptions } from '@ayanworks/credo-polygon-w3c-module/build/dids' import type { AcceptProofRequestOptions, @@ -16,7 +21,8 @@ import type { ProofsProtocolVersionType, Routing, W3cJsonLdSignCredentialOptions, - W3cVerifiableCredential} from '@credo-ts/core' + W3cVerifiableCredential, +} from '@credo-ts/core' import type { IndyVdrDidCreateOptions, IndyVdrDidCreateResult } from '@credo-ts/indy-vdr' import type { QuestionAnswerRecord, ValidResponse } from '@credo-ts/question-answer' import type { TenantRecord } from '@credo-ts/tenants' @@ -49,20 +55,14 @@ import { PeerDidNumAlgo, W3cJsonLdVerifiableCredential, W3cCredential, - ClaimFormat} from '@credo-ts/core' + ClaimFormat, +} from '@credo-ts/core' import { QuestionAnswerRole, QuestionAnswerState } from '@credo-ts/question-answer' import axios from 'axios' import * as fs from 'fs' +import { Body, Controller, Delete, Get, Post, Query, Route, Tags, Path, Example, Security, Response } from 'tsoa' -import { - CredentialEnum, - DidMethod, - EndorserMode, - Network, - NetworkTypes, - Role, - SchemaError, -} from '../../enums/enum' +import { CredentialEnum, DidMethod, EndorserMode, Network, NetworkTypes, Role, SchemaError } from '../../enums/enum' import ErrorHandlingService from '../../errorHandlingService' import { ENDORSER_DID_NOT_PRESENT } from '../../errorMessages' import { @@ -93,9 +93,9 @@ import { CreateProofRequestOobOptions, CreateOfferOobOptions, CreateSchemaInput, - VerifyDataOptions , SignDataOptions } from '../types' - -import { Body, Controller, Delete, Get, Post, Query, Route, Tags, Path, Example, Security, Response } from 'tsoa' + VerifyDataOptions, + SignDataOptions, +} from '../types' @Tags('MultiTenancy') @Route('/multi-tenancy') @@ -208,7 +208,7 @@ export class MultiTenancyController extends Controller { private async handleBcovrin( createDidOptions: DidCreate, tenantAgent: TenantAgent, - didMethod: string + didMethod: string, ) { const { seed, did, network, method, role, endorserDid } = createDidOptions let didDocument @@ -280,7 +280,7 @@ export class MultiTenancyController extends Controller { private async handleIndicio( createDidOptions: DidCreate, tenantAgent: TenantAgent, - didMethod: string + didMethod: string, ) { const { seed, did, method, network, role } = createDidOptions let didDocument @@ -314,7 +314,7 @@ export class MultiTenancyController extends Controller { private async handleEndorserCreation( createDidOptions: DidCreate, tenantAgent: TenantAgent, - didMethod: string + didMethod: string, ) { const { seed, network } = createDidOptions let didDocument @@ -615,14 +615,14 @@ export class MultiTenancyController extends Controller { @Post('/transactions/endorse/:tenantId') public async endorserTransaction( @Path('tenantId') tenantId: string, - @Body() endorserTransaction: EndorserTransaction + @Body() endorserTransaction: EndorserTransaction, ) { let signedTransaction try { await this.agent.modules.tenants.withTenantAgent({ tenantId }, async (tenantAgent) => { signedTransaction = await tenantAgent.modules.indyVdr.endorseTransaction( endorserTransaction.transaction, - endorserTransaction.endorserDid + endorserTransaction.endorserDid, ) }) @@ -655,7 +655,7 @@ export class MultiTenancyController extends Controller { @Post('/create-invitation/:tenantId') public async createInvitation( @Path('tenantId') tenantId: string, - @Body() config?: Omit & RecipientKeyOption // Remove routing property from type + @Body() config?: Omit & RecipientKeyOption, // Remove routing property from type ) { let outOfBandRecord: OutOfBandRecord | undefined let invitationDid: string | undefined @@ -710,7 +710,7 @@ export class MultiTenancyController extends Controller { public async createLegacyInvitation( @Path('tenantId') tenantId: string, @Body() - config?: Omit & RecipientKeyOption // props removed because of issues with serialization + config?: Omit & RecipientKeyOption, // props removed because of issues with serialization ) { let getInvitation try { @@ -750,7 +750,7 @@ export class MultiTenancyController extends Controller { @Post('/receive-invitation/:tenantId') public async receiveInvitation( @Body() invitationRequest: ReceiveInvitationProps, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { let receiveInvitationRes try { @@ -774,7 +774,7 @@ export class MultiTenancyController extends Controller { @Post('/receive-invitation-url/:tenantId') public async receiveInvitationFromUrl( @Body() invitationRequest: ReceiveInvitationByUrlProps, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { let receiveInvitationUrl try { @@ -782,7 +782,7 @@ export class MultiTenancyController extends Controller { const { invitationUrl, ...config } = invitationRequest const { outOfBandRecord, connectionRecord } = await tenantAgent.oob.receiveInvitationFromUrl( invitationUrl, - config + config, ) receiveInvitationUrl = { outOfBandRecord: outOfBandRecord.toJSON(), @@ -824,7 +824,7 @@ export class MultiTenancyController extends Controller { @Query('state') state?: DidExchangeState, @Query('myDid') myDid?: string, @Query('theirDid') theirDid?: string, - @Query('theirLabel') theirLabel?: string + @Query('theirLabel') theirLabel?: string, ) { let connectionRecord try { @@ -872,7 +872,7 @@ export class MultiTenancyController extends Controller { public async createSchema( @Body() schema: CreateSchemaInput, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { try { let createSchemaTxResult: any @@ -927,7 +927,7 @@ export class MultiTenancyController extends Controller { const getSchemaUnqualifiedId = await getUnqualifiedSchemaId( indySchemaId.namespaceIdentifier, indySchemaId.schemaName, - indySchemaId.schemaVersion + indySchemaId.schemaVersion, ) createSchemaTxResult.schemaState.schemaId = getSchemaUnqualifiedId return createSchemaTxResult.schemaState @@ -948,7 +948,7 @@ export class MultiTenancyController extends Controller { schemaName: string schema: { [key: string]: any } }, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ): Promise { try { const { did, schemaName, schema } = createSchemaRequest @@ -967,7 +967,7 @@ export class MultiTenancyController extends Controller { const reason = schemaResponse.schemaState?.reason?.toLowerCase() if (reason && reason.includes('insufficient') && reason.includes('funds')) { throw new PaymentRequiredError( - 'Insufficient funds to the address, Please add funds to perform this operation' + 'Insufficient funds to the address, Please add funds to perform this operation', ) } else { throw new InternalServerError(schemaResponse.schemaState?.reason) @@ -1000,7 +1000,7 @@ export class MultiTenancyController extends Controller { public async getPolygonW3CSchemaById( @Path('tenantId') tenantId: string, @Path('did') did: string, - @Path('schemaId') schemaId: string + @Path('schemaId') schemaId: string, ) { try { let schemaDetails @@ -1022,21 +1022,21 @@ export class MultiTenancyController extends Controller { public async writeSchemaAndCredDefOnLedger( @Path('tenantId') tenantId: string, @Body() - writeTransaction: WriteTransaction + writeTransaction: WriteTransaction, ) { try { if (writeTransaction.schema) { const writeSchema = await this.submitSchemaOnLedger( writeTransaction.schema, writeTransaction.endorsedTransaction, - tenantId + tenantId, ) return writeSchema } else if (writeTransaction.credentialDefinition) { const writeCredDef = await this.submitCredDefOnLedger( writeTransaction.credentialDefinition, writeTransaction.endorsedTransaction, - tenantId + tenantId, ) return writeCredDef } else { @@ -1055,7 +1055,7 @@ export class MultiTenancyController extends Controller { attributes: string[] }, endorsedTransaction: string, - tenantId: string + tenantId: string, ) { let schemaRecord await this.agent.modules.tenants.withTenantAgent({ tenantId }, async (tenantAgent) => { @@ -1081,7 +1081,7 @@ export class MultiTenancyController extends Controller { const getSchemaUnqualifiedId = await getUnqualifiedSchemaId( indySchemaId.namespaceIdentifier, indySchemaId.schemaName, - indySchemaId.schemaVersion + indySchemaId.schemaVersion, ) if (schemaState.state === CredentialEnum.Finished || schemaState.state === CredentialEnum.Action) { schemaState.schemaId = getSchemaUnqualifiedId @@ -1100,7 +1100,7 @@ export class MultiTenancyController extends Controller { type: string }, endorsedTransaction: string, - tenantId: string + tenantId: string, ) { let credentialDefinitionRecord await this.agent.modules.tenants.withTenantAgent({ tenantId }, async (tenantAgent) => { @@ -1122,7 +1122,7 @@ export class MultiTenancyController extends Controller { const getCredentialDefinitionId = await getUnqualifiedCredentialDefinitionId( indyCredDefId.namespaceIdentifier, indyCredDefId.schemaSeqNo, - indyCredDefId.tag + indyCredDefId.tag, ) if ( credentialDefinitionState.state === CredentialEnum.Finished || @@ -1149,7 +1149,7 @@ export class MultiTenancyController extends Controller { schemBySchemaId?.resolutionMetadata?.error === SchemaError.UnSupportedAnonCredsMethod ) { throw new NotFoundError( - schemBySchemaId?.resolutionMetadata?.message || `schema details with schema id "${schemaId}" not found.` + schemBySchemaId?.resolutionMetadata?.message || `schema details with schema id "${schemaId}" not found.`, ) } }) @@ -1173,7 +1173,7 @@ export class MultiTenancyController extends Controller { endorse?: boolean endorserDid?: string }, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { try { let registerCredentialDefinitionResult: any @@ -1211,9 +1211,8 @@ export class MultiTenancyController extends Controller { credentialDefinitionPayload.options.endorserDid = endorserDid } - registerCredentialDefinitionResult = await tenantAgent.modules.anoncreds.registerCredentialDefinition( - credentialDefinitionPayload - ) + registerCredentialDefinitionResult = + await tenantAgent.modules.anoncreds.registerCredentialDefinition(credentialDefinitionPayload) }) if (registerCredentialDefinitionResult?.credentialDefinitionState.state === CredentialEnum.Failed) { @@ -1232,13 +1231,13 @@ export class MultiTenancyController extends Controller { // TODO: Return uniform response for both Internally and Externally endorsed Schemas if (!endorse) { const indyCredDefId = parseIndyCredentialDefinitionId( - registerCredentialDefinitionResult?.credentialDefinitionState.credentialDefinitionId as string + registerCredentialDefinitionResult?.credentialDefinitionState.credentialDefinitionId as string, ) const getCredentialDefinitionId = await getUnqualifiedCredentialDefinitionId( indyCredDefId.namespaceIdentifier, indyCredDefId.schemaSeqNo, - indyCredDefId.tag + indyCredDefId.tag, ) registerCredentialDefinitionResult.credentialDefinitionState.credentialDefinitionId = getCredentialDefinitionId @@ -1254,7 +1253,7 @@ export class MultiTenancyController extends Controller { @Get('/credential-definition/:credentialDefinitionId/:tenantId') public async getCredentialDefinitionById( @Path('credentialDefinitionId') credentialDefinitionId: CredentialDefinitionId, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { let credentialDefinitionResult: any try { @@ -1376,7 +1375,7 @@ export class MultiTenancyController extends Controller { @Post('/credentials/accept-offer/:tenantId') public async acceptOffer( @Path('tenantId') tenantId: string, - @Body() acceptCredentialOfferOptions: AcceptCredentialOfferOptions + @Body() acceptCredentialOfferOptions: AcceptCredentialOfferOptions, ) { let acceptOffer try { @@ -1403,7 +1402,7 @@ export class MultiTenancyController extends Controller { @Get('/credentials/:credentialRecordId/:tenantId') public async getCredentialById( @Path('credentialRecordId') credentialRecordId: RecordId, - @Path('tenantId') tenantId: string + @Path('tenantId') tenantId: string, ) { let credentialRecord try { @@ -1424,7 +1423,7 @@ export class MultiTenancyController extends Controller { @Path('tenantId') tenantId: string, @Query('threadId') threadId?: string, @Query('connectionId') connectionId?: string, - @Query('state') state?: CredentialState + @Query('state') state?: CredentialState, ) { let credentialRecord try { @@ -1446,7 +1445,7 @@ export class MultiTenancyController extends Controller { @Get('/credentials/form-data/:tenantId/:credentialRecordId') public async credentialFormData( @Path('tenantId') tenantId: string, - @Path('credentialRecordId') credentialRecordId: string + @Path('credentialRecordId') credentialRecordId: string, ) { let credentialDetails try { @@ -1520,7 +1519,7 @@ export class MultiTenancyController extends Controller { @Post('/proofs/create-request-oob/:tenantId') public async createRequest( @Path('tenantId') tenantId: string, - @Body() createRequestOptions: CreateProofRequestOobOptions + @Body() createRequestOptions: CreateProofRequestOobOptions, ) { let oobProofRecord try { @@ -1579,8 +1578,8 @@ export class MultiTenancyController extends Controller { proofMessageId: proof.message.thread?.threadId ? proof.message.thread?.threadId : proof.message.threadId - ? proof.message.thread - : proof.message.id, + ? proof.message.thread + : proof.message.id, invitationDid: createRequestOptions?.invitationDid ? '' : invitationDid, } }) @@ -1603,7 +1602,7 @@ export class MultiTenancyController extends Controller { filterByPresentationPreview?: boolean filterByNonRevocationRequirements?: boolean comment?: string - } + }, ) { let proofRecord try { @@ -1762,7 +1761,7 @@ export class MultiTenancyController extends Controller { @Query('connectionId') connectionId?: string, @Query('role') role?: QuestionAnswerRole, @Query('state') state?: QuestionAnswerState, - @Query('threadId') threadId?: string + @Query('threadId') threadId?: string, ) { try { let questionAnswerRecords: QuestionAnswerRecord[] = [] @@ -1798,7 +1797,7 @@ export class MultiTenancyController extends Controller { question: string validResponses: ValidResponse[] detail?: string - } + }, ) { try { const { question, validResponses, detail } = config @@ -1829,7 +1828,7 @@ export class MultiTenancyController extends Controller { public async sendAnswer( @Path('id') id: RecordId, @Path('tenantId') tenantId: string, - @Body() request: Record<'response', string> + @Body() request: Record<'response', string>, ) { try { let questionAnswerRecord @@ -1905,7 +1904,7 @@ export class MultiTenancyController extends Controller { public async sendMessage( @Path('connectionId') connectionId: RecordId, @Path('tenantId') tenantId: string, - @Body() request: Record<'content', string> + @Body() request: Record<'content', string>, ) { try { let basicMessageRecord @@ -1953,7 +1952,7 @@ export class MultiTenancyController extends Controller { @Path('tenantId') tenantId: string, @Query('storeCredential') storeCredential: boolean, @Query('dataTypeToSign') dataTypeToSign: 'rawData' | 'jsonLd', - @Body() data: CustomW3cJsonLdSignCredentialOptions | SignDataOptions | any + @Body() data: CustomW3cJsonLdSignCredentialOptions | SignDataOptions | any, ) { try { return await this.agent.modules.tenants.withTenantAgent({ tenantId }, async (tenantAgent) => { @@ -1962,7 +1961,9 @@ export class MultiTenancyController extends Controller { const credentialData = data as unknown as W3cJsonLdSignCredentialOptions credentialData.format = ClaimFormat.LdpVc - const signedCredential = await tenantAgent.w3cCredentials.signCredential(credentialData) as W3cJsonLdVerifiableCredential + const signedCredential = (await tenantAgent.w3cCredentials.signCredential( + credentialData, + )) as W3cJsonLdVerifiableCredential if (storeCredential) { return await tenantAgent.w3cCredentials.storeCredential({ credential: signedCredential }) @@ -2021,14 +2022,20 @@ export class MultiTenancyController extends Controller { @Post('/credential/verify/:tenantId') public async verifyCredential( @Path('tenantId') tenantId: string, - @Body() credentialToVerify: SafeW3cJsonLdVerifyCredentialOptions | any + @Body() credentialToVerify: SafeW3cJsonLdVerifyCredentialOptions | any, ) { let formattedCredential try { await this.agent.modules.tenants.withTenantAgent({ tenantId }, async (tenantAgent) => { - const {credential, ...credentialOptions}= credentialToVerify - const transformedCredential = JsonTransformer.fromJSON(credentialToVerify?.credential, W3cJsonLdVerifiableCredential) - const signedCred = await tenantAgent.w3cCredentials.verifyCredential({credential: transformedCredential, ...credentialOptions}) + const { credential, ...credentialOptions } = credentialToVerify + const transformedCredential = JsonTransformer.fromJSON( + credentialToVerify?.credential, + W3cJsonLdVerifiableCredential, + ) + const signedCred = await tenantAgent.w3cCredentials.verifyCredential({ + credential: transformedCredential, + ...credentialOptions, + }) formattedCredential = signedCred }) return formattedCredential @@ -2037,4 +2044,3 @@ export class MultiTenancyController extends Controller { } } } - diff --git a/src/controllers/openid4vc/holder/holder.Controller.ts b/src/controllers/openid4vc/holder/holder.Controller.ts new file mode 100644 index 00000000..e99315e8 --- /dev/null +++ b/src/controllers/openid4vc/holder/holder.Controller.ts @@ -0,0 +1,79 @@ +import { Agent } from '@credo-ts/core' +import { Body, Get, Post, Route, Tags } from 'tsoa' + +import { + AuthorizeRequestCredentialOffer, + RequestCredentialBody, + ResolveCredentialOfferBody, + ResolveProofRequest, +} from '../types/holder.types' + +import { HolderService } from './holder.service' + +@Tags('oid4vc holders') +@Route('openid4vc/holder') +export class HolderController { + private agent: Agent + private holderService: HolderService + + public constructor(agent: Agent) { + this.agent = agent + this.holderService = new HolderService() + } + + /** + * Get SdJwt type of credentials + */ + @Get('/sd-jwt-vcs') + public async getSdJwtCredentials() { + return await this.holderService.getSdJwtCredentials(this.agent) + } + + /** + * Fetch all mso mdoc credentials in wallet + */ + @Get('/mdoc-vcs') + public async getMdocCredentials() { + return await this.holderService.getMdocCredentials(this.agent) + } + + /** + * Resolve a credential offer + */ + @Post('resolve-credential-offer') + public async resolveCredOffer(@Body() body: ResolveCredentialOfferBody) { + return await this.holderService.resolveCredentialOffer(this.agent, body) + } + + /** + * Initiate an OID4VCI authorization request + */ + @Post('authorization-request') + public async requestAuthorizationForCredential(@Body() body: AuthorizeRequestCredentialOffer) { + return await this.holderService.requestAuthorizationForCredential(this.agent, body) + } + + /** + * Initiates a token request, then requests credentials from issuer + */ + @Post('request-credential') + public async requestCredential(@Body() body: RequestCredentialBody) { + return await this.holderService.requestCredential(this.agent, body) + } + + /** + * Resolve a proof request + */ + @Post('resolve-proof-request') + public async resolveProofRequest(@Body() body: ResolveProofRequest) { + return await this.holderService.resolveProofRequest(this.agent, body) + } + + /** + * Accept a proof request + */ + @Post('accept-proof-request') + public async acceptProofRequest(@Body() body: ResolveProofRequest) { + return await this.holderService.acceptPresentationRequest(this.agent, body) + } +} diff --git a/src/controllers/openid4vc/holder/holder.service.ts b/src/controllers/openid4vc/holder/holder.service.ts new file mode 100644 index 00000000..ff72c270 --- /dev/null +++ b/src/controllers/openid4vc/holder/holder.service.ts @@ -0,0 +1,225 @@ +import type { + AuthorizeRequestCredentialOffer, + RequestCredentialBody, + ResolveCredentialOfferBody, + ResolveProofRequest, +} from '../types/holder.types' +import type { Agent } from '@credo-ts/core' +import type { + OpenId4VcAuthorizationCodeTokenRequestOptions, + OpenId4VciPreAuthorizedTokenRequestOptions, + OpenId4VciResolvedCredentialOffer, + OpenId4VciTokenRequestOptions, +} from '@credo-ts/openid4vc' + +import { + DifPresentationExchangeService, + DidKey, + DidJwk, + getJwkFromKey, + Mdoc, + W3cJsonLdVerifiableCredential, + W3cJwtVerifiableCredential, +} from '@credo-ts/core' +import { + OpenId4VciAuthorizationFlow, + authorizationCodeGrantIdentifier, + preAuthorizedCodeGrantIdentifier, +} from '@credo-ts/openid4vc' + +type MappedAttributesReturnType = + | string + | number + | boolean + | { [key: string]: MappedAttributesReturnType } + | null + | undefined + | Array + +function recursivelyMapAttribues(value: unknown): MappedAttributesReturnType { + if (value === null || value === undefined || typeof value === 'number' || typeof value === 'boolean') return value + if (typeof value === 'string') return value + if (value instanceof Map) { + return Object.fromEntries(Array.from(value.entries()).map(([key, value]) => [key, recursivelyMapAttribues(value)])) + } + if (Array.isArray(value)) return value.map(recursivelyMapAttribues) + return Object.fromEntries(Object.entries(value).map(([key, value]) => [key, recursivelyMapAttribues(value)])) +} + +export class HolderService { + private HOLDER_REDIRECT = process.env.HOLDER_REDIRECT ?? 'http://localhost:4001/redirect' + private HOLDER_CLIENT_ID = process.env.HOLDER_CLIENT_ID ?? 'wallet' + + public async getSdJwtCredentials(agent: Agent) { + return await agent.sdJwtVc.getAll() + } + + public async getMdocCredentials(agent: Agent) { + return await agent.mdoc.getAll() + } + + public async resolveCredentialOffer(agent: Agent, body: ResolveCredentialOfferBody) { + return await agent.modules.openId4VcHolderModule.resolveCredentialOffer(body.credentialOfferUri) + } + + public async requestAuthorizationForCredential(agent: Agent, body: AuthorizeRequestCredentialOffer) { + const resolvedCredentialOffer = await agent.modules.openId4VcHolderModule.resolveCredentialOffer( + body.credentialOfferUri, + ) + const resolvedAuthorization = await this.initiateAuthorization( + agent, + resolvedCredentialOffer, + body.credentialsToRequest, + ) + + let actionToTake = '' + let authorizationRequestUrl: string | undefined = undefined + let codeVerifier: string | undefined = undefined + + switch (resolvedAuthorization.authorizationFlow) { + case 'Oauth2Redirect': + actionToTake = 'Open the authorizationRequestUrl in your browser.' + authorizationRequestUrl = resolvedAuthorization.authorizationRequestUrl + codeVerifier = resolvedAuthorization.codeVerifier + break + case 'PresentationDuringIssuance': + actionToTake = 'Presentation during issuance not supported yet' + break + case 'PreAuthorized': + if (resolvedCredentialOffer.credentialOfferPayload.grants?.[preAuthorizedCodeGrantIdentifier]?.tx_code) { + actionToTake = 'Ask for txcode from issuer and use it further' + } + break + } + + return { actionToTake, authorizationRequestUrl, codeVerifier } + } + + public async requestCredential(agent: Agent, body: RequestCredentialBody) { + const resolvedCredentialOffer = await agent.modules.openId4VcHolderModule.resolveCredentialOffer( + body.credentialOfferUri, + ) + + let options: OpenId4VciTokenRequestOptions + if (resolvedCredentialOffer.credentialOfferPayload.grants?.[preAuthorizedCodeGrantIdentifier]) { + options = { + resolvedCredentialOffer, + txCode: body.txCode, + code: body.authorizationCode, + } as OpenId4VciPreAuthorizedTokenRequestOptions + } else { + options = { + resolvedCredentialOffer, + code: body.authorizationCode, + clientId: this.HOLDER_CLIENT_ID, + codeVerifier: body.codeVerifier, + redirectUri: this.HOLDER_REDIRECT, + } as OpenId4VcAuthorizationCodeTokenRequestOptions + } + + return await this.requestAndStoreCredentials(agent, resolvedCredentialOffer, options) + } + + private async requestAndStoreCredentials( + agent: Agent, + resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer, + options: OpenId4VciTokenRequestOptions, + ) { + const tokenResponse = await agent.modules.openId4VcHolderModule.requestToken({ ...options }) + const credentialResponse = await agent.modules.openId4VcHolderModule.requestCredentials({ + ...options, + credentialConfigurationIds: resolvedCredentialOffer.credentialOfferPayload.credential_configuration_ids, + credentialBindingResolver: async ({ + keyTypes, + supportedDidMethods, + supportsAllDidMethods, + }: { + keyTypes: string[] + supportedDidMethods?: string[] + supportsAllDidMethods?: boolean + }) => { + const key = await agent.wallet.createKey({ keyType: keyTypes[0] as any }) + if (supportsAllDidMethods || supportedDidMethods?.includes('did:key')) { + const didKey = new DidKey(key) + return { method: 'did', didUrl: `${didKey.did}#${didKey.key.fingerprint}` } + } + if (supportedDidMethods?.includes('did:jwk')) { + const didJwk = DidJwk.fromJwk(getJwkFromKey(key)) + return { method: 'did', didUrl: `${didJwk.did}#0` } + } + return { method: 'jwk', jwk: getJwkFromKey(key) } + }, + ...tokenResponse, + }) + + const storedCredentials = await Promise.all( + credentialResponse.credentials.map(async (response: any) => { + const credential = response.credentials[0] + if (credential instanceof W3cJwtVerifiableCredential || credential instanceof W3cJsonLdVerifiableCredential) { + return await agent.w3cCredentials.storeCredential({ credential }) + } + if (credential instanceof Mdoc) { + return await agent.mdoc.store(credential) + } + return await agent.sdJwtVc.store(credential.compact) + }), + ) + + return storedCredentials + } + + private async initiateAuthorization( + agent: Agent, + resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer, + credentialsToRequest: string[], + ) { + const grants = resolvedCredentialOffer.credentialOfferPayload.grants + + if (grants?.[preAuthorizedCodeGrantIdentifier]) { + return { + authorizationFlow: 'PreAuthorized', + preAuthorizedCode: grants[preAuthorizedCodeGrantIdentifier]['pre-authorized_code'], + } as const + } + + if (grants?.[authorizationCodeGrantIdentifier]) { + const resolved = await agent.modules.openId4VcHolderModule.resolveOpenId4VciAuthorizationRequest( + resolvedCredentialOffer, + { + clientId: this.HOLDER_CLIENT_ID, + redirectUri: this.HOLDER_REDIRECT, + scope: Object.entries(resolvedCredentialOffer.offeredCredentialConfigurations) + .map(([id, val]) => (credentialsToRequest.includes(id) ? val.scope : undefined)) + .filter((v): v is string => Boolean(v)), + }, + ) + return { ...resolved, authorizationFlow: 'Oauth2Redirect' as const } + } + + throw new Error('Unsupported grant type') + } + + public async resolveProofRequest(agent: Agent, body: ResolveProofRequest) { + return await agent.modules.openId4VcHolderModule.resolveOpenId4VpAuthorizationRequest(body.proofRequestUri) + } + + public async acceptPresentationRequest(agent: Agent, body: ResolveProofRequest) { + const resolved = await agent.modules.openId4VcHolderModule.resolveOpenId4VpAuthorizationRequest( + body.proofRequestUri, + ) + const presentationExchangeService = agent.dependencyManager.resolve(DifPresentationExchangeService) + + if (!resolved.presentationExchange) throw new Error('Missing presentation exchange on request') + + const submissionResult = await agent.modules.openId4VcHolderModule.acceptOpenId4VpAuthorizationRequest({ + authorizationRequestPayload: resolved.authorizationRequestPayload, + presentationExchange: { + credentials: presentationExchangeService.selectCredentialsForRequest( + resolved.presentationExchange.credentialsForRequest, + ), + }, + }) + + return submissionResult.serverResponse + } +} diff --git a/src/controllers/openid4vc/issuance-sessions/issuance-sessions.Controller.ts b/src/controllers/openid4vc/issuance-sessions/issuance-sessions.Controller.ts new file mode 100644 index 00000000..b516ef99 --- /dev/null +++ b/src/controllers/openid4vc/issuance-sessions/issuance-sessions.Controller.ts @@ -0,0 +1,118 @@ +import { Agent } from '@credo-ts/core' +import { OpenId4VcIssuanceSessionState } from '@credo-ts/openid4vc' +import { Body, Controller, Delete, Get, Path, Post, Put, Query, Request, Route, Tags, Security } from 'tsoa' +import { injectable } from 'tsyringe' + +// eslint-disable-next-line import/order +import ErrorHandlingService from '../../../errorHandlingService' + +// import { AgentWithRootOrTenant } from '../../types/agent' +import { OpenId4VcIssuanceSessionsCreateOffer } from '../types/issuer.types' + +import { issuanceSessionService } from './issuance-sessions.service' + +@Tags('oid4vc issuance sessions') +@Route('/openid4vc/issuance-sessions') +@Security('apiKey') +@injectable() +export class IssuanceSessionsController extends Controller { + private agent: Agent + + public constructor(agent: Agent) { + super() + this.agent = agent + } + /** + * Creates a credential offer with the specified credential configurations and authorization type. + */ + @Post('/create-credential-offer') + public async createCredentialOffer( + // @Request() request: any, + @Body() options: OpenId4VcIssuanceSessionsCreateOffer, + ) { + try { + // const agent = 'rootAgent' in request ? request.rootAgent : request.tenantAgent + const agent = this.agent + return await issuanceSessionService.createCredentialOffer(options, agent) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Get issuance details by issuance SessionId + */ + @Get('/:issuanceSessionId') + public async getIssuanceSessionsById(@Request() request: any, @Path('issuanceSessionId') issuanceSessionId: string) { + try { + const agent = 'rootAgent' in request ? request.rootAgent : request.tenantAgent + return await issuanceSessionService.getIssuanceSessionsById(agent, issuanceSessionId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Fetch all issuance sessions by query + */ + @Get('/') + public async getIssuanceSessionsByQuery( + // @Request() request: AgentWithRootOrTenant, + @Query() cNonce?: string, + @Query() publicIssuerId?: string, + @Query() preAuthorizedCode?: string, + @Query() state?: OpenId4VcIssuanceSessionState, + @Query() credentialOfferUri?: string, + @Query() authorizationCode?: string, + ) { + try { + const agent = this.agent + return await issuanceSessionService.getIssuanceSessionsByQuery( + agent, + cNonce, + publicIssuerId, + preAuthorizedCode, + state, + credentialOfferUri, + authorizationCode, + ) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Update issuance session metadata by session ID + */ + @Put('/:issuanceSessionId') + public async updateSessionById( + // @Request() request: AgentWithRootOrTenant, + @Path('issuanceSessionId') issuanceSessionId: string, + @Body() metadata: Record, + ) { + try { + // const agent = 'rootAgent' in request ? request.rootAgent : request.tenantAgent + const agent = this.agent + return await issuanceSessionService.updateSessionIssuanceMetadataById(agent, issuanceSessionId, metadata) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Delete issuance session by session ID + */ + @Delete('/:issuanceSessionId') + public async deleteIssuanceSessionById( + // @Request() request: AgentWithRootOrTenant, + @Path('issuanceSessionId') issuanceSessionId: string, + ) { + try { + // const agent = 'rootAgent' in request ? request.rootAgent : request.tenantAgent + const agent = this.agent + await issuanceSessionService.deleteById(agent, issuanceSessionId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } +} diff --git a/src/controllers/openid4vc/issuance-sessions/issuance-sessions.service.ts b/src/controllers/openid4vc/issuance-sessions/issuance-sessions.service.ts new file mode 100644 index 00000000..360c738c --- /dev/null +++ b/src/controllers/openid4vc/issuance-sessions/issuance-sessions.service.ts @@ -0,0 +1,155 @@ +import type { RestAgentModules, RestMultiTenantAgentModules } from '../../../cliAgent' +import type { OpenId4VcIssuanceSessionsCreateOffer, X509GenericRecord } from '../types/issuer.types' +import type { Agent } from '@credo-ts/core' +import type { OpenId4VcIssuanceSessionState } from '@credo-ts/openid4vc' + +import { OpenId4VcIssuanceSessionRepository } from '@credo-ts/openid4vc/build/openid4vc-issuer/repository' + +import { SignerMethod } from '../../../enums/enum' +import { BadRequestError, NotFoundError } from '../../../errors/errors' +import { X509_CERTIFICATE_RECORD } from '../../../utils/constant' + +class IssuanceSessionsService { + public async createCredentialOffer( + options: OpenId4VcIssuanceSessionsCreateOffer, + issuerAgent: Agent | Agent, + ) { + const { credentials, signerOption, publicIssuerId } = options + + const issuer = await issuerAgent.modules.openId4VcIssuer.getIssuerByIssuerId(publicIssuerId) + + if (!signerOption || !signerOption.method) { + throw new BadRequestError(`signerOption must be provided with one of: ${Object.values(SignerMethod).join(', ')}`) + } + if (signerOption.method === SignerMethod.Did && !signerOption.did) { + throw new BadRequestError(`'did' must be provided when signer method is 'did'`) + } + + const mappedCredentials = credentials.map((c) => { + const supported = issuer.credentialConfigurationsSupported[c.credentialSupportedId] + if (!supported) { + throw new Error(`CredentialSupportedId '${c.credentialSupportedId}' is not supported by issuer`) + } + if (supported.format !== c.format) { + throw new Error( + `Format mismatch for '${c.credentialSupportedId}': expected '${supported.format}', got '${c.format}'`, + ) + } + return { + ...c, + payload: { + ...c.payload, + vct: c.payload?.vct ?? (typeof supported.vct === 'string' ? supported.vct : undefined), + }, + } + // format: c.format as OpenId4VciCredentialFormatProfile, TODO: fix this type + }) + + options.issuanceMetadata ||= {} + + if (signerOption.method === SignerMethod.Did) { + options.issuanceMetadata.issuerDid = signerOption.did + } else if (signerOption.method === SignerMethod.X5c) { + const record = (await issuerAgent.genericRecords.findById(X509_CERTIFICATE_RECORD)) as X509GenericRecord + if (!signerOption.x5c && !record) { + throw new Error('x5c certificate is required') + } + const cert = record?.content?.dcs + const certArray = Array.isArray(cert) ? cert : typeof cert === 'string' ? [cert] : [] + if (!certArray.length) { + throw new Error('x509 certificate must be non-empty') + } + options.issuanceMetadata.issuerx509certificate = signerOption.x5c ?? [...certArray] + } + + options.issuanceMetadata.credentials = mappedCredentials + + const { credentialOffer, issuanceSession } = await issuerAgent.modules.openId4VcIssuer.createCredentialOffer({ + issuerId: publicIssuerId, + issuanceMetadata: options.issuanceMetadata, + offeredCredentials: credentials.map((c) => c.credentialSupportedId), + preAuthorizedCodeFlowConfig: options.preAuthorizedCodeFlowConfig, + authorizationCodeFlowConfig: options.authorizationCodeFlowConfig, + }) + + return { credentialOffer, issuanceSession } + } + + public async getIssuanceSessionsById( + agent: Agent | Agent, + sessionId: string, + ) { + return agent.modules.openId4VcIssuer.getIssuanceSessionById(sessionId) + } + + public async getIssuanceSessionsByQuery( + issuerAgent: Agent | Agent, + cNonce?: string, + publicIssuerId?: string, + preAuthorizedCode?: string, + state?: OpenId4VcIssuanceSessionState, + credentialOfferUri?: string, + authorizationCode?: string, + ) { + const issuanceSessionRepository = issuerAgent.dependencyManager.resolve(OpenId4VcIssuanceSessionRepository) + const issuanceSessions = await issuanceSessionRepository.findByQuery(issuerAgent.context, { + cNonce, + issuerId: publicIssuerId, + preAuthorizedCode, + state, + credentialOfferUri, + authorizationCode, + }) + + return issuanceSessions + } + + /** + * update an existing issuance session metadata, useful for mobile edge + * agents that will scan QR codes to notify the system of their + * wallet user id + * + * @param issuerAgent + * @param sessionId + * @param metadata + * @returns the updated issuance session record + */ + public async updateSessionIssuanceMetadataById( + issuerAgent: Agent | Agent, + sessionId: string, + metadata: Record, + ) { + const issuanceSessionRepository = issuerAgent.dependencyManager.resolve(OpenId4VcIssuanceSessionRepository) + + const record = await issuanceSessionRepository.findById(issuerAgent.context, sessionId) + + if (!record) { + throw new NotFoundError(`Issuance session with id ${sessionId} not found`) + } + + record.issuanceMetadata = { + ...record.issuanceMetadata, + ...metadata, + } + + await issuanceSessionRepository.update(issuerAgent.context, record) + + return record + } + + /** + * deletes ann issuance session by id + * + * @param sessionId + * @param issuerAgent + */ + public async deleteById( + issuerAgent: Agent | Agent, + sessionId: string, + ): Promise { + const issuanceSessionRepository = issuerAgent.dependencyManager.resolve(OpenId4VcIssuanceSessionRepository) + await issuanceSessionRepository.deleteById(issuerAgent.context, sessionId) + } +} + +export const issuanceSessionService = new IssuanceSessionsService() diff --git a/src/controllers/openid4vc/issuers/issuer.Controller.ts b/src/controllers/openid4vc/issuers/issuer.Controller.ts new file mode 100644 index 00000000..6c50c43d --- /dev/null +++ b/src/controllers/openid4vc/issuers/issuer.Controller.ts @@ -0,0 +1,108 @@ +import { Agent } from '@credo-ts/core' +import { + Controller, + Delete, + Get, + Post, + Put, + Route, + Tags, + Path, + Query, + Body, + Security, + Request, + SuccessResponse, +} from 'tsoa' +import { injectable } from 'tsyringe' + +import ErrorHandlingService from '../../../errorHandlingService' +import { CreateIssuerOptions, UpdateIssuerRecordOptions } from '../types/issuer.types' + +import { issuerService } from './issuer.service' +@Route('/openid4vc/issuer') +@Tags('oid4vc issuers') +@Security('apiKey') +@injectable() +export class IssuerController extends Controller { + private agent: Agent + + public constructor(agent: Agent) { + super() + this.agent = agent + } + /** + * Creates an issuer with issuer metadata. + */ + @Post() + public async createIssuer(@Body() createIssuerOptions: any) { + try { + return await issuerService.createIssuerAgent(this.agent, createIssuerOptions) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Updates issuer metadata for a given publicIssuerId. + */ + @Put('{publicIssuerId}') + public async updateIssuerMetadata( + @Path() publicIssuerId: string, + @Body() updateIssuerRecordOptions: UpdateIssuerRecordOptions, + ) { + try { + return await issuerService.updateIssuerMetadata(this.agent, publicIssuerId, updateIssuerRecordOptions) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Returns metadata for a specific issuer. + */ + @Get('{issuerId}/metadata') + public async getIssuerAgentMetaData(@Path() issuerId: string) { + try { + return await issuerService.getIssuerAgentMetaData(this.agent, issuerId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Query issuers by optional publicIssuerId. + */ + @Get() + public async getIssuersByQuery(@Query() publicIssuerId?: string) { + try { + return await issuerService.getIssuersByQuery(this.agent, publicIssuerId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Returns a specific issuer by publicIssuerId. + */ + @Get('{publicIssuerId}') + public async getIssuer(@Path() publicIssuerId: string) { + try { + return await issuerService.getIssuer(this.agent, publicIssuerId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Deletes a specific issuer by record id. + */ + @Delete('{id}') + public async deleteIssuer(@Path() id: string): Promise { + try { + await issuerService.deleteIssuer(this.agent, id) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } +} diff --git a/src/controllers/openid4vc/issuers/issuer.service.ts b/src/controllers/openid4vc/issuers/issuer.service.ts new file mode 100644 index 00000000..e9e64389 --- /dev/null +++ b/src/controllers/openid4vc/issuers/issuer.service.ts @@ -0,0 +1,56 @@ +import type { RestAgentModules, RestMultiTenantAgentModules } from '../../../cliAgent' +import type { Agent } from '@credo-ts/core' + +import { OpenId4VcIssuerRepository } from '@credo-ts/openid4vc/build/openid4vc-issuer/repository' + +export class IssuerService { + public async createIssuerAgent( + agent: Agent | Agent, + createIssuerOptions: any, //TODO: Replace with OpenId4VciCreateIssuerOptions, + ) { + const issuerRecord = await agent.modules.openId4VcIssuer.createIssuer(createIssuerOptions) + const issuerMetadata = await agent.modules.openId4VcIssuer.getIssuerMetadata(issuerRecord.issuerId) + // eslint-disable-next-line no-console + console.log(`\nIssuer URL: ${issuerMetadata.credentialIssuer.credential_issuer}`) + return issuerRecord + } + + public async updateIssuerMetadata( + agent: Agent | Agent, + publicIssuerId: string, + updateIssuerRecordOptions: any, // TODO: Replace with OpenId4VcUpdateIssuerRecordOptions + ) { + await agent.modules.openId4VcIssuer.updateIssuerMetadata({ + issuerId: publicIssuerId, + ...updateIssuerRecordOptions, + }) + return await this.getIssuer(agent, publicIssuerId) + } + + public async getIssuersByQuery( + agent: Agent | Agent, + publicIssuerId?: string, + ) { + const repository = agent.dependencyManager.resolve(OpenId4VcIssuerRepository) + return await repository.findByQuery(agent.context, { issuerId: publicIssuerId }) + } + + public async getIssuer(agent: Agent | Agent, publicIssuerId: string) { + return await agent.modules.openId4VcIssuer.getIssuerByIssuerId(publicIssuerId) + } + + public async deleteIssuer(agent: Agent | Agent, issuerId: string) { + const repository = agent.dependencyManager.resolve(OpenId4VcIssuerRepository) + await repository.deleteById(agent.context, issuerId) + } + + public async getIssuerAgentMetaData( + agent: Agent | Agent, + issuerId: string, + ) { + // return await agent.modules.openId4VcIssuer.getIssuerMetadata(issuerId) + return 0 + } +} + +export const issuerService = new IssuerService() diff --git a/src/controllers/openid4vc/types/holder.types.ts b/src/controllers/openid4vc/types/holder.types.ts new file mode 100644 index 00000000..550e7572 --- /dev/null +++ b/src/controllers/openid4vc/types/holder.types.ts @@ -0,0 +1,25 @@ +export interface ResolveCredentialOfferBody { + credentialOfferUri: string +} + +export interface RequestCredentialBody { + credentialOfferUri: string + credentialsToRequest: string[] + authorizationCode?: string + codeVerifier?: string + txCode?: string +} + +export interface AuthorizeRequestCredentialOffer { + credentialOfferUri: string + credentialsToRequest: string[] +} + +export interface ResolveProofRequest { + proofRequestUri: string +} + +export interface AcceptProofRequest { + proofRequestUri: string + // selectedCredentials?: { [inputDescriptorId: string]: string } +} diff --git a/src/controllers/openid4vc/types/issuer.types.ts b/src/controllers/openid4vc/types/issuer.types.ts new file mode 100644 index 00000000..97977fc2 --- /dev/null +++ b/src/controllers/openid4vc/types/issuer.types.ts @@ -0,0 +1,122 @@ +export enum SignerMethod { + Did = 'did', + X5c = 'x5c', +} + +export interface OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions { + credentialSupportedId: string + format: string + payload: { + vct?: string + [key: string]: unknown + } + disclosureFrame?: Record> +} + +export interface OpenId4VcIssuanceSessionsCreateOffer { + publicIssuerId: string + signerOption: { + method: SignerMethod + did?: string + x5c?: string[] + } + credentials: Array + authorizationCodeFlowConfig?: { + authorizationServerUrl: string + requirePresentationDuringIssuance?: boolean + issuerState?: string + } + preAuthorizedCodeFlowConfig?: { + preAuthorizedCode?: string + txCode?: { + description?: string + length?: number + input_mode?: 'numeric' | 'text' + } + authorizationServerUrl: string + } + issuanceMetadata?: Record +} + +export interface X509GenericRecordContent { + dcs?: string | string[] + root?: string +} + +export interface X509GenericRecord { + id: string + content?: X509GenericRecordContent +} + +export interface Logo { + uri?: string + alt_text?: string + [key: string]: unknown +} + +export interface CredentialDisplay { + name?: string + locale?: string + logo?: Logo + [key: string]: unknown +} + +export interface AuthorizationServerClientAuth { + clientId: string + clientSecret: string +} + +export interface AuthorizationServerConfig { + issuer: string + clientAuthentication?: AuthorizationServerClientAuth +} + +export interface BatchCredentialIssuanceOptions { + batchSize: number +} + +export interface ProofTypeConfig { + proof_signing_alg_values_supported: string[] +} + +export interface CredentialConfigurationDisplay { + name: string + locale?: string + logo?: Logo + description?: string + background_color?: string + background_image?: Logo + text_color?: string +} + +export interface CredentialDefinition { + type: string[] + [key: string]: any +} + +export interface CredentialConfigurationSupportedWithFormats { + format: 'jwt_vc_json' + scope?: string + cryptographic_binding_methods_supported?: string[] + credential_signing_alg_values_supported?: string[] + proof_types_supported?: Record + credential_definition: CredentialDefinition + display?: CredentialConfigurationDisplay[] +} + +export interface CreateIssuerOptions { + issuerId?: string + accessTokenSignerKeyType?: string + display?: CredentialDisplay[] + authorizationServerConfigs?: AuthorizationServerConfig[] + dpopSigningAlgValuesSupported?: string[] + credentialConfigurationsSupported: Record + batchCredentialIssuance?: BatchCredentialIssuanceOptions +} + +export interface UpdateIssuerRecordOptions { + display?: CredentialDisplay[] + dpopSigningAlgValuesSupported?: string[] + credentialConfigurationsSupported: Record + batchCredentialIssuance?: BatchCredentialIssuanceOptions +} diff --git a/src/controllers/openid4vc/types/verifier.types.ts b/src/controllers/openid4vc/types/verifier.types.ts new file mode 100644 index 00000000..56a05eec --- /dev/null +++ b/src/controllers/openid4vc/types/verifier.types.ts @@ -0,0 +1,180 @@ +/* eslint-disable @typescript-eslint/explicit-member-accessibility */ +import type { DifPresentationExchangeDefinitionV2 } from '@credo-ts/core' +import type { SubmissionRequirement } from '@sphereon/pex-models' + +export enum ResponseModeEnum { + DIRECT_POST = 'direct_post', + DIRECT_POSJWT = 'direct_post.jwt', +} + +export interface OpenId4VcJwtIssuerDid { + method: 'did' + didUrl: string +} + +export interface OpenId4VcIssuerX5c { + method: 'x5c' + x5c: string[] +} + +export interface JwtObject { + alg: string[] +} + +export interface LdpObject { + proof_type: string[] +} + +export interface DiObject { + proof_type: string[] + cryptosuite: string[] +} + +export interface SdJwtObject { + 'sd-jwt_alg_values'?: string[] + 'kb-jwt_alg_values'?: string[] +} + +export interface MsoMdocObject { + alg: string[] +} + +export interface Format { + jwt?: JwtObject + jwt_vc?: JwtObject + jwt_vc_json?: JwtObject + jwt_vp?: JwtObject + jwt_vp_json?: JwtObject + ldp?: LdpObject + ldp_vc?: LdpObject + ldp_vp?: LdpObject + di?: DiObject + di_vc?: DiObject + di_vp?: DiObject + 'vc+sd-jwt'?: SdJwtObject + mso_mdoc?: MsoMdocObject +} + +export enum RulesEnum { + All = 'all', + Pick = 'pick', +} + +export interface SubmissionRequirementModel extends SubmissionRequirement { + from_nested?: SubmissionRequirementModel[] +} + +export enum Optionality { + Required = 'required', + Preferred = 'preferred', +} + +export enum Directives { + Required = 'required', + Allowed = 'allowed', + Disallowed = 'disallowed', +} + +export interface PdStatus { + directive?: Directives +} + +export interface Statuses { + active?: PdStatus + suspended?: PdStatus + revoked?: PdStatus +} + +export interface HolderSubject { + field_id: string[] + directive: Optionality +} + +export interface FilterV2 { + const?: boolean | number | string + enum?: Array + exclusiveMinimum?: number | string + exclusiveMaximum?: number | string + format?: string + formatMaximum?: string + formatMinimum?: string + formatExclusiveMaximum?: string + formatExclusiveMinimum?: string + minLength?: number + maxLength?: number + minimum?: number | string + maximum?: number | string + not?: Record + pattern?: string + type?: string + contains?: FilterV2 + items?: FilterV2 +} + +export interface FieldV2 { + id?: string + path: string[] + purpose?: string + filter?: FilterV2 + predicate?: Optionality + intent_to_retain?: boolean + name?: string + optional?: boolean +} + +export interface ConstraintsV2 { + limit_disclosure?: Optionality + statuses?: Statuses + fields?: FieldV2[] + subject_is_issuer?: Optionality + is_holder?: HolderSubject[] + same_subject?: HolderSubject[] +} + +export interface Issuance { + [key: string]: any + manifest?: string +} + +export interface InputDescriptorV2Model { + id: string + name?: string + purpose?: string + format?: Format + group?: string[] + issuance?: Issuance[] + constraints: ConstraintsV2 +} + +export interface DifPresentationExchangeDefinitionV2Model extends DifPresentationExchangeDefinitionV2 { + format?: Format + submission_requirements?: SubmissionRequirementModel[] + input_descriptors: InputDescriptorV2Model[] + frame?: object +} + +export interface PresentationDefinition { + definition: DifPresentationExchangeDefinitionV2Model +} + +export interface CreateAuthorizationRequest { + verifierId: string + verifierDid: string + presentationExchange: PresentationDefinition + responseMode?: ResponseModeEnum +} + +export class OpenId4VcSiopVerifierClientMetadata { + client_name?: string + logo_uri?: string +} + +export class OpenId4VcSiopCreateVerifierOptions { + verifierId?: string + clientMetadata?: OpenId4VcSiopVerifierClientMetadata +} + +export class OpenId4VcUpdateVerifierRecordOptions { + verifierId!: string + clientMetadata?: OpenId4VcSiopVerifierClientMetadata +} diff --git a/src/controllers/openid4vc/verifier-sessions/verification-sessions.Controller.ts b/src/controllers/openid4vc/verifier-sessions/verification-sessions.Controller.ts new file mode 100644 index 00000000..d7fab181 --- /dev/null +++ b/src/controllers/openid4vc/verifier-sessions/verification-sessions.Controller.ts @@ -0,0 +1,82 @@ +import { Agent } from '@credo-ts/core' +import { OpenId4VcVerificationSessionState } from '@credo-ts/openid4vc' +import { Body, Controller, Get, Path, Post, Query, Request, Route, Tags } from 'tsoa' +import { injectable } from 'tsyringe' + +import ErrorHandlingService from '../../../errorHandlingService' +import { CreateAuthorizationRequest } from '../types/verifier.types' + +import { verificationSessionService } from './verification-sessions.service' + +@Tags('oid4vc verification sessions') +@Route('/openid4vc/verification-sessions') +@injectable() +export class VerificationSessionsController extends Controller { + private agent: Agent + + public constructor(agent: Agent) { + super() + this.agent = agent + } + + /** + * Create an authorization request, acting as a Relying Party (RP) + */ + @Post('/create-presentation-request') + public async createProofRequest(@Body() createAuthorizationRequest: CreateAuthorizationRequest) { + try { + return await verificationSessionService.createProofRequest(this.agent, createAuthorizationRequest) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Retrieve all verification session records + */ + @Get('/') + public async getAllVerificationSessions( + @Query('publicVerifierId') publicVerifierId?: string, + @Query('payloadState') payloadState?: string, + @Query('state') state?: OpenId4VcVerificationSessionState, + @Query('authorizationRequestUri') authorizationRequestUri?: string, + @Query('nonce') nonce?: string, + ) { + try { + return await verificationSessionService.findVerificationSessionsByQuery( + this.agent, + publicVerifierId, + payloadState, + state, + authorizationRequestUri, + nonce, + ) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Get verification session by ID + */ + @Get('/:verificationSessionId') + public async getVerificationSessionsById(@Path('verificationSessionId') verificationSessionId: string) { + try { + return await verificationSessionService.getVerificationSessionsById(this.agent, verificationSessionId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } + + /** + * Get verification response by verification Session ID + */ + @Get('/response/:verificationSessionId') + public async getVerifiedAuthorizationResponse(@Path('verificationSessionId') verificationSessionId: string) { + try { + return await verificationSessionService.getVerifiedAuthorizationResponse(this.agent, verificationSessionId) + } catch (error) { + throw ErrorHandlingService.handle(error) + } + } +} diff --git a/src/controllers/openid4vc/verifier-sessions/verification-sessions.service.ts b/src/controllers/openid4vc/verifier-sessions/verification-sessions.service.ts new file mode 100644 index 00000000..4e0209c1 --- /dev/null +++ b/src/controllers/openid4vc/verifier-sessions/verification-sessions.service.ts @@ -0,0 +1,109 @@ +import type { RestAgentModules, RestMultiTenantAgentModules } from '../../../cliAgent' + +import { + Agent, + ClaimFormat, + DidKey, + Jwt, + W3cJsonLdVerifiablePresentation, + W3cJwtVerifiablePresentation, +} from '@credo-ts/core' +import { OpenId4VcVerificationSessionState } from '@credo-ts/openid4vc' +import { injectable } from 'tsyringe' + +import { CreateAuthorizationRequest } from '../types/verifier.types' + +@injectable() +class VerificationSessionsService { + public async createProofRequest( + verifierAgent: Agent | Agent, + dto: CreateAuthorizationRequest, + ) { + const didDocument = await verifierAgent.dids.resolveDidDocument(dto.verifierDid) + + let verifierDidUrl: string | undefined = undefined + if (!verifierDidUrl && didDocument.verificationMethod?.[0].id) { + verifierDidUrl = didDocument.verificationMethod?.[0].id + } + + if (!verifierDidUrl) throw new Error('No matching verification method found') + + return await verifierAgent.modules.openId4VcVerifier.createAuthorizationRequest({ + requestSigner: { + method: 'did', + didUrl: verifierDidUrl, + }, + verifierId: dto.verifierId, + presentationExchange: dto.presentationExchange, + responseMode: dto.responseMode, + }) + } + + public async findVerificationSessionsByQuery( + verifierAgent: Agent | Agent, + publicVerifierId?: string, + payloadState?: string, + state?: OpenId4VcVerificationSessionState, + authorizationRequestUri?: string, + nonce?: string, + ) { + return await verifierAgent.modules.openId4VcVerifier.findVerificationSessionsByQuery({ + verifierId: publicVerifierId, + payloadState, + state, + authorizationRequestUri, + nonce, + }) + } + + public async getVerificationSessionsById( + verifierAgent: Agent | Agent, + verificationSessionId: string, + ) { + return await verifierAgent.modules.openId4VcVerifier.getVerificationSessionById(verificationSessionId) + } + + public async getVerifiedAuthorizationResponse( + verifierAgent: Agent | Agent, + verificationSessionId: string, + ) { + const verifiedAuthorizationResponse = + await verifierAgent.modules.openId4VcVerifier.getVerifiedAuthorizationResponse(verificationSessionId) + + const presentations = verifiedAuthorizationResponse.presentationExchange?.presentations.map((presentation) => { + if (presentation instanceof W3cJsonLdVerifiablePresentation) { + return { + format: presentation.claimFormat, + encoded: presentation.toJSON(), + vcPayload: presentation.toJSON(), + } + } else if (presentation instanceof W3cJwtVerifiablePresentation) { + return { + format: presentation.claimFormat, + encoded: presentation.serializedJwt, + vcPayload: presentation.presentation.toJSON(), + signedPayload: presentation.jwt.payload.toJson(), + header: presentation.jwt.header, + } + } else { + const sdJwtPresentation: any = presentation + return { + format: ClaimFormat.SdJwtVc, + encoded: sdJwtPresentation.compact, + vcPayload: sdJwtPresentation.prettyClaims, + signedPayload: sdJwtPresentation.payload, + header: sdJwtPresentation.header as Jwt['header'], + } + } + }) + + return { + ...verifiedAuthorizationResponse, + presentationExchange: verifiedAuthorizationResponse.presentationExchange + ? { ...verifiedAuthorizationResponse.presentationExchange, presentations } + : undefined, + } + } +} + +export const verificationSessionService = new VerificationSessionsService() diff --git a/src/controllers/openid4vc/verifiers/verifier.Controller.ts b/src/controllers/openid4vc/verifiers/verifier.Controller.ts new file mode 100644 index 00000000..1d10ba2f --- /dev/null +++ b/src/controllers/openid4vc/verifiers/verifier.Controller.ts @@ -0,0 +1,63 @@ +import { Agent } from '@credo-ts/core' +import { Body, Delete, Get, Path, Post, Put, Query, Route, Tags } from 'tsoa' + +import { OpenId4VcSiopCreateVerifierOptions, OpenId4VcUpdateVerifierRecordOptions } from '../types/verifier.types' +import { VerifierService } from '../verifiers/verifier.service' + +@Tags('oid4vc verifiers') +@Route('openid4vc/verifier') +export class VerifierController { + private agent: Agent + private verifierService: VerifierService + + public constructor(agent: Agent) { + this.agent = agent + this.verifierService = new VerifierService() + } + + /** + * Create a new verifier and store the verifier record + */ + @Post('/') + public async createVerifier(@Body() options: OpenId4VcSiopCreateVerifierOptions) { + return await this.verifierService.createVerifier(this.agent, options) + } + + /** + * Update verifier metadata + */ + @Put('{publicVerifierId}') + public async updateVerifierMetadata( + @Path('publicVerifierId') publicVerifierId: string, + @Body() verifierRecordOptions: OpenId4VcUpdateVerifierRecordOptions, + ) { + return await this.verifierService.updateVerifierMetadata(this.agent, { + verifierId: publicVerifierId, + clientMetadata: verifierRecordOptions.clientMetadata, + }) + } + + /** + * Get verifiers by query + */ + @Get('/') + public async getVerifiersByQuery(@Query() publicVerifierId?: string) { + return await this.verifierService.getVerifiersByQuery(this.agent, publicVerifierId) + } + + /** + * Get single verifier by ID + */ + @Get('{publicVerifierId}') + public async getVerifier(@Path('publicVerifierId') publicVerifierId: string) { + return await this.verifierService.getVerifier(this.agent, publicVerifierId) + } + + /** + * Delete verifier by ID + */ + @Delete('{verifierId}') + public async deleteVerifier(@Path('verifierId') verifierId: string): Promise { + await this.verifierService.deleteVerifier(this.agent, verifierId) + } +} diff --git a/src/controllers/openid4vc/verifiers/verifier.service.ts b/src/controllers/openid4vc/verifiers/verifier.service.ts new file mode 100644 index 00000000..5b68a45a --- /dev/null +++ b/src/controllers/openid4vc/verifiers/verifier.service.ts @@ -0,0 +1,55 @@ +import type { RestAgentModules, RestMultiTenantAgentModules } from '../../../../src/cliAgent' +import type { Agent } from '@credo-ts/core' +import type { OpenId4VcSiopCreateVerifierOptions, OpenId4VcUpdateVerifierRecordOptions } from '@credo-ts/openid4vc' + +import { OpenId4VcVerifierRepository } from '@credo-ts/openid4vc' + +export class VerifierService { + public async createVerifier( + agent: Agent | Agent, + options: OpenId4VcSiopCreateVerifierOptions, + ) { + const verifierRecord = await agent.modules.openId4VcVerifier.createVerifier(options) + return verifierRecord + } + + public async updateVerifierMetadata( + agent: Agent | Agent, + options: OpenId4VcUpdateVerifierRecordOptions, + ) { + // console.log(`Updating verifier ${options.verifierId}`) + + await agent.modules.openId4VcVerifier.updateVerifierMetadata(options) + const verifierRecord = await this.getVerifier(agent, options.verifierId) + return verifierRecord + } + + public async getVerifiersByQuery( + agent: Agent | Agent, + publicVerifierId?: string, + ) { + const verifierRepository = agent.dependencyManager.resolve(OpenId4VcVerifierRepository) + const verifiers = await verifierRepository.findByQuery(agent.context, { + verifierId: publicVerifierId, + }) + + return verifiers + } + + public async getVerifier( + agent: Agent | Agent, + publicVerifierId: string, + ) { + return await agent.modules.openId4VcVerifier.getVerifierByVerifierId(publicVerifierId) + } + + public async deleteVerifier( + agent: Agent | Agent, + publicVerifierId: string, + ) { + const verifierRepository = agent.dependencyManager.resolve(OpenId4VcVerifierRepository) + await verifierRepository.deleteById(agent.context, publicVerifierId) + } +} + +export const issuerService = new VerifierService() diff --git a/src/controllers/outofband/OutOfBandController.ts b/src/controllers/outofband/OutOfBandController.ts index 4450bd92..96900428 100644 --- a/src/controllers/outofband/OutOfBandController.ts +++ b/src/controllers/outofband/OutOfBandController.ts @@ -18,6 +18,7 @@ import { createPeerDidDocumentFromServices, PeerDidNumAlgo, } from '@credo-ts/core' +import { Body, Controller, Delete, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' @@ -25,8 +26,6 @@ import { NotFoundError } from '../../errors' import { ConnectionRecordExample, outOfBandInvitationExample, outOfBandRecordExample, RecordId } from '../examples' import { AcceptInvitationConfig, ReceiveInvitationByUrlProps, ReceiveInvitationProps } from '../types' -import { Body, Controller, Delete, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' - @Tags('Out Of Band') @Security('apiKey') @Route('/oob') @@ -94,7 +93,7 @@ export class OutOfBandController extends Controller { }) @Post('/create-invitation') public async createInvitation( - @Body() config: CreateInvitationOptions & RecipientKeyOption // props removed because of issues with serialization + @Body() config: CreateInvitationOptions & RecipientKeyOption, // props removed because of issues with serialization ) { try { let invitationDid: string | undefined @@ -117,7 +116,7 @@ export class OutOfBandController extends Controller { numAlgo: PeerDidNumAlgo.MultipleInceptionKeyWithoutDoc, }, }) - // eslint-disable-next-line @typescript-eslint/no-unused-vars + invitationDid = did.didState.did } @@ -151,7 +150,7 @@ export class OutOfBandController extends Controller { }) @Post('/create-legacy-invitation') public async createLegacyInvitation( - @Body() config?: Omit & RecipientKeyOption + @Body() config?: Omit & RecipientKeyOption, ) { try { let routing: Routing @@ -205,7 +204,7 @@ export class OutOfBandController extends Controller { recordId: string message: AgentMessageType domain: string - } + }, ) { try { const agentMessage = JsonTransformer.fromJSON(config.message, AgentMessage) @@ -290,12 +289,12 @@ export class OutOfBandController extends Controller { @Post('/:outOfBandId/accept-invitation') public async acceptInvitation( @Path('outOfBandId') outOfBandId: RecordId, - @Body() acceptInvitationConfig: AcceptInvitationConfig + @Body() acceptInvitationConfig: AcceptInvitationConfig, ) { try { const { outOfBandRecord, connectionRecord } = await this.agent.oob.acceptInvitation( outOfBandId, - acceptInvitationConfig + acceptInvitationConfig, ) return { diff --git a/src/controllers/polygon/PolygonController.ts b/src/controllers/polygon/PolygonController.ts index c028ab4d..a14298e0 100644 --- a/src/controllers/polygon/PolygonController.ts +++ b/src/controllers/polygon/PolygonController.ts @@ -5,13 +5,12 @@ import { generateSecp256k1KeyPair } from '@ayanworks/credo-polygon-w3c-module' import { DidOperation } from '@ayanworks/credo-polygon-w3c-module/build/ledger' import { Agent } from '@credo-ts/core' import * as fs from 'fs' +import { Route, Tags, Security, Controller, Post, Body, Get, Path } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' import { BadRequestError, UnprocessableEntityError } from '../../errors' -import { Route, Tags, Security, Controller, Post, Body, Get, Path } from 'tsoa' - @Tags('Polygon') @Security('apiKey') @Route('/polygon') @@ -55,7 +54,7 @@ export class Polygon extends Controller { did: string schemaName: string schema: { [key: string]: any } - } + }, ): Promise { try { const { did, schemaName, schema } = createSchemaRequest @@ -72,7 +71,7 @@ export class Polygon extends Controller { const reason = schemaResponse.schemaState?.reason?.toLowerCase() if (reason && reason.includes('insufficient') && reason.includes('funds')) { throw new UnprocessableEntityError( - 'Insufficient funds to the address, Please add funds to perform this operation' + 'Insufficient funds to the address, Please add funds to perform this operation', ) } else { throw new Error(schemaResponse.schemaState?.reason) @@ -110,7 +109,7 @@ export class Polygon extends Controller { estimateTransactionRequest: { operation: any transaction: any - } + }, ): Promise { try { const { operation } = estimateTransactionRequest diff --git a/src/controllers/proofs/ProofController.ts b/src/controllers/proofs/ProofController.ts index 166a85a9..901b709c 100644 --- a/src/controllers/proofs/ProofController.ts +++ b/src/controllers/proofs/ProofController.ts @@ -7,6 +7,7 @@ import type { } from '@credo-ts/core' import { Agent, PeerDidNumAlgo, createPeerDidDocumentFromServices } from '@credo-ts/core' +import { Body, Controller, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' @@ -18,8 +19,6 @@ import { RequestProofProposalOptions, } from '../types' -import { Body, Controller, Example, Get, Path, Post, Query, Route, Tags, Security } from 'tsoa' - @Tags('Proofs') @Route('/proofs') @Security('apiKey') @@ -225,7 +224,7 @@ export class ProofController extends Controller { filterByPresentationPreview?: boolean filterByNonRevocationRequirements?: boolean comment?: string - } + }, ) { try { const requestedCredentials = await this.agent.proofs.selectCredentialsForRequest({ diff --git a/src/controllers/question-answer/QuestionAnswerController.ts b/src/controllers/question-answer/QuestionAnswerController.ts index e4ae9881..3cb0c04c 100644 --- a/src/controllers/question-answer/QuestionAnswerController.ts +++ b/src/controllers/question-answer/QuestionAnswerController.ts @@ -3,14 +3,13 @@ import type { ValidResponse } from '@credo-ts/question-answer' import { Agent } from '@credo-ts/core' import { QuestionAnswerRecord, QuestionAnswerRole, QuestionAnswerState } from '@credo-ts/question-answer' +import { Body, Controller, Get, Path, Post, Route, Tags, Query, Security, Example } from 'tsoa' import { injectable } from 'tsyringe' import ErrorHandlingService from '../../errorHandlingService' import { NotFoundError } from '../../errors' import { RecordId } from '../examples' -import { Body, Controller, Get, Path, Post, Route, Tags, Query, Security, Example } from 'tsoa' - @Tags('Question Answer') @Route('/question-answer') @Security('apiKey') @@ -37,7 +36,7 @@ export class QuestionAnswerController extends Controller { @Query('connectionId') connectionId?: string, @Query('role') role?: QuestionAnswerRole, @Query('state') state?: QuestionAnswerState, - @Query('threadId') threadId?: string + @Query('threadId') threadId?: string, ) { try { const questionAnswerRecords = await this.agent.modules.questionAnswer.findAllByQuery({ @@ -67,7 +66,7 @@ export class QuestionAnswerController extends Controller { question: string validResponses: ValidResponse[] detail?: string - } + }, ) { try { const { question, validResponses, detail } = config diff --git a/src/controllers/types.ts b/src/controllers/types.ts index 227d94a0..4a4be1db 100644 --- a/src/controllers/types.ts +++ b/src/controllers/types.ts @@ -32,9 +32,10 @@ import type { W3cCredential, W3cCredentialSubject, } from '@credo-ts/core' +import type { LinkedDataProofOptions } from '@credo-ts/core/build/modules/vc/data-integrity/models/LinkedDataProof' import type { SingleOrArray } from '@credo-ts/core/build/utils' +import type { TenantsModule } from '@credo-ts/tenants' import type { DIDDocument } from 'did-resolver' -import { LinkedDataProofOptions } from '@credo-ts/core/build/modules/vc/data-integrity/models/LinkedDataProof' export type TenantConfig = Pick & { walletConfig: Pick @@ -422,7 +423,7 @@ export interface credentialPayloadToSign { } export interface SafeW3cJsonLdVerifyCredentialOptions extends W3cJsonLdVerifyCredentialOptions { // Ommited due to issues with TSOA - proof: SingleOrArray | DataIntegrityProofOptions> + proof: SingleOrArray | DataIntegrityProofOptions> } export type ExtensibleW3cCredentialSubject = W3cCredentialSubject & { @@ -437,3 +438,55 @@ export type ExtensibleW3cCredential = W3cCredential & { export type CustomW3cJsonLdSignCredentialOptions = Omit & { [key: string]: unknown } + +/** + * Base record model for Credo + */ +export interface CredoBaseRecord { + id: RecordId + createdAt: Date + updatedAt?: Date + type: string +} + +/** + * The public issuer id, used for hosting OpenID4VCI metadata and endpoints + * + * @example 0ad85626-67a9-4677-8621-2906bfbf6b6d + */ +export type PublicIssuerId = string +/** + * JSON object that can contain any key-value pairs + */ +export interface AnyJsonObject { + [key: string]: unknown +} + +/** + * @example "821f9b26-ad04-4f56-89b6-e2ef9c72b36e" + */ +// export type RecordId = string + +/** + * @example "ea4e5e69-fc04-465a-90d2-9f8ff78aa71d" + */ +// export type ThreadId = string + +/** + * Base record model for Credo + */ +export interface CredoBaseRecord { + id: RecordId + createdAt: Date + updatedAt?: Date + type: string +} + +export type DisclosureFrame = { + [key: string]: boolean | DisclosureFrame +} + +/** + * @example did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK + */ +export type Did = string diff --git a/src/dto/vCredentialIssuerMetadataDraft14.ts b/src/dto/vCredentialIssuerMetadataDraft14.ts new file mode 100644 index 00000000..387e7c01 --- /dev/null +++ b/src/dto/vCredentialIssuerMetadataDraft14.ts @@ -0,0 +1,4 @@ +/* eslint-disable @typescript-eslint/explicit-member-accessibility */ +export class vCredentialIssuerMetadataDraft14 { + exampleField?: string +} diff --git a/src/enums/enum.ts b/src/enums/enum.ts index 6468e3af..bfa1d84f 100644 --- a/src/enums/enum.ts +++ b/src/enums/enum.ts @@ -71,3 +71,8 @@ export declare enum CustomHandshakeProtocol { DidExchange = 'https://didcomm.org/didexchange/1.1', Connections = 'https://didcomm.org/connections/1.0', } + +export enum SignerMethod { + Did = 'did', + X5c = 'x5c', +} diff --git a/src/events/CredentialEvents.ts b/src/events/CredentialEvents.ts index 7ee22e27..e764fe7a 100644 --- a/src/events/CredentialEvents.ts +++ b/src/events/CredentialEvents.ts @@ -28,7 +28,7 @@ export const credentialEvents = async (agent: Agent } const data = await tenantAgent.credentials.getFormatData(record.id) body.credentialData = data - } + }, ) } diff --git a/src/events/QuestionAnswerEvents.ts b/src/events/QuestionAnswerEvents.ts index 452d7598..1553342a 100644 --- a/src/events/QuestionAnswerEvents.ts +++ b/src/events/QuestionAnswerEvents.ts @@ -29,6 +29,6 @@ export const questionAnswerEvents = async (agent: Agent, config: ServerConfig) = }, }) } - } + }, ) } diff --git a/src/events/WebhookEvent.ts b/src/events/WebhookEvent.ts index d7b215fe..68f4cc51 100644 --- a/src/events/WebhookEvent.ts +++ b/src/events/WebhookEvent.ts @@ -1,9 +1,8 @@ import type { Logger } from '@credo-ts/core' -import fetch from 'node-fetch' - export const sendWebhookEvent = async (webhookUrl: string, body: Record, logger: Logger) => { try { + const fetch = (await import('node-fetch')).default await fetch(webhookUrl, { method: 'POST', body: JSON.stringify(body), diff --git a/src/index.ts b/src/index.ts index abb5b07f..bd27e821 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,6 @@ export const startServer = async (agent: Agent, config: ServerConfig) => { // to also host the websocket server if (!config.socketServer) { server.on('upgrade', (request, socket, head) => { - // eslint-disable-next-line @typescript-eslint/no-empty-function socketServer.handleUpgrade(request, socket as Socket, head, () => {}) }) } diff --git a/src/routes/routes.ts b/src/routes/routes.ts index a41ecc98..f24e1437 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -10,6 +10,8 @@ import { Polygon } from './../controllers/polygon/PolygonController'; // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa import { OutOfBandController } from './../controllers/outofband/OutOfBandController'; // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { IssuanceSessionsController } from './../controllers/openid4vc/issuance-sessions/issuance-sessions.Controller'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa import { MultiTenancyController } from './../controllers/multi-tenancy/MultiTenancyController'; // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa import { EndorserTransactionController } from './../controllers/endorser-transaction/EndorserTransactionController'; @@ -28,7 +30,13 @@ import { BasicMessageController } from './../controllers/basic-messages/BasicMes // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa import { AgentController } from './../controllers/agent/AgentController'; // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { IssuerController } from './../controllers/openid4vc/issuers/issuer.Controller'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { VerifierController } from './../controllers/openid4vc/verifiers/verifier.Controller'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa import { QuestionAnswerController } from './../controllers/question-answer/QuestionAnswerController'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { HolderController } from './../controllers/openid4vc/holder/holder.Controller'; import { expressAuthentication } from './../authentication'; // @ts-ignore - no great way to install types from subpackage import { iocContainer } from './../utils/tsyringeTsoaIocContainer'; @@ -299,6 +307,11 @@ const models: TsoaRoute.Models = { "enums": ["https://didcomm.org/didexchange/1.1","https://didcomm.org/connections/1.0"], }, // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SingleOrArray_string-or-Record_string.unknown__": { + "dataType": "refAlias", + "type": {"dataType":"union","subSchemas":[{"dataType":"union","subSchemas":[{"dataType":"string"},{"ref":"Record_string.unknown_"}]},{"dataType":"array","array":{"dataType":"union","subSchemas":[{"dataType":"string"},{"ref":"Record_string.unknown_"}]}}],"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa "OutOfBandDidCommService": { "dataType": "refObject", "properties": { @@ -383,6 +396,55 @@ const models: TsoaRoute.Models = { "additionalProperties": false, }, // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcIssuanceSessionRecord": { + "dataType": "refAlias", + "type": {"ref":"Record_string.unknown_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SignerMethod": { + "dataType": "refEnum", + "enums": ["did","x5c"], + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Record_string.boolean_": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Record_string.boolean-or-Record_string.boolean__": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{},"additionalProperties":{"dataType":"union","subSchemas":[{"dataType":"boolean"},{"ref":"Record_string.boolean_"}]},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions": { + "dataType": "refObject", + "properties": { + "credentialSupportedId": {"dataType":"string","required":true}, + "format": {"dataType":"string","required":true}, + "payload": {"dataType":"nestedObjectLiteral","nestedProperties":{"vct":{"dataType":"string"}},"additionalProperties":{"dataType":"any"},"required":true}, + "disclosureFrame": {"ref":"Record_string.boolean-or-Record_string.boolean__"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcIssuanceSessionsCreateOffer": { + "dataType": "refObject", + "properties": { + "publicIssuerId": {"dataType":"string","required":true}, + "signerOption": {"dataType":"nestedObjectLiteral","nestedProperties":{"x5c":{"dataType":"array","array":{"dataType":"string"}},"did":{"dataType":"string"},"method":{"ref":"SignerMethod","required":true}},"required":true}, + "credentials": {"dataType":"array","array":{"dataType":"refObject","ref":"OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions"},"required":true}, + "authorizationCodeFlowConfig": {"dataType":"nestedObjectLiteral","nestedProperties":{"issuerState":{"dataType":"string"},"requirePresentationDuringIssuance":{"dataType":"boolean"},"authorizationServerUrl":{"dataType":"string","required":true}}}, + "preAuthorizedCodeFlowConfig": {"dataType":"nestedObjectLiteral","nestedProperties":{"authorizationServerUrl":{"dataType":"string","required":true},"txCode":{"dataType":"nestedObjectLiteral","nestedProperties":{"input_mode":{"dataType":"union","subSchemas":[{"dataType":"enum","enums":["numeric"]},{"dataType":"enum","enums":["text"]}]},"length":{"dataType":"double"},"description":{"dataType":"string"}}},"preAuthorizedCode":{"dataType":"string"}}}, + "issuanceMetadata": {"ref":"Record_string.unknown_"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcIssuanceSessionState": { + "dataType": "refEnum", + "enums": ["OfferCreated","OfferUriRetrieved","AuthorizationInitiated","AuthorizationGranted","AccessTokenRequested","AccessTokenCreated","CredentialRequestReceived","CredentialsPartiallyIssued","Completed","Error"], + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa "TenantRecord": { "dataType": "refAlias", "type": {"ref":"Record_string.unknown_","validators":{}}, @@ -655,6 +717,8 @@ const models: TsoaRoute.Models = { "properties": { "autoAcceptCredential": {"ref":"AutoAcceptCredential"}, "comment": {"dataType":"string"}, + "goalCode": {"dataType":"string"}, + "goal": {"dataType":"string"}, "credentialRecordId": {"dataType":"string","required":true}, "credentialFormats": {"ref":"CredentialFormatPayload_CredentialFormatsFromProtocols_CredentialProtocol-Array_.acceptOffer_"}, }, @@ -953,6 +1017,7 @@ const models: TsoaRoute.Models = { "error": {"dataType":"union","subSchemas":[{"dataType":"enum","enums":["invalidDid"]},{"dataType":"enum","enums":["notFound"]},{"dataType":"enum","enums":["representationNotSupported"]},{"dataType":"enum","enums":["unsupportedDidMethod"]},{"dataType":"string"}]}, "message": {"dataType":"string"}, "servedFromCache": {"dataType":"boolean"}, + "servedFromDidRecord": {"dataType":"boolean"}, }, "additionalProperties": false, }, @@ -1362,6 +1427,182 @@ const models: TsoaRoute.Models = { "additionalProperties": false, }, // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcIssuerRecord": { + "dataType": "refAlias", + "type": {"ref":"Record_string.unknown_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Logo": { + "dataType": "refObject", + "properties": { + "uri": {"dataType":"string"}, + "alt_text": {"dataType":"string"}, + }, + "additionalProperties": {"dataType":"any"}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "CredentialDisplay": { + "dataType": "refObject", + "properties": { + "name": {"dataType":"string"}, + "locale": {"dataType":"string"}, + "logo": {"ref":"Logo"}, + }, + "additionalProperties": {"dataType":"any"}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "ProofTypeConfig": { + "dataType": "refObject", + "properties": { + "proof_signing_alg_values_supported": {"dataType":"array","array":{"dataType":"string"},"required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Record_string.ProofTypeConfig_": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{},"additionalProperties":{"ref":"ProofTypeConfig"},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "CredentialDefinition": { + "dataType": "refObject", + "properties": { + "type": {"dataType":"array","array":{"dataType":"string"},"required":true}, + }, + "additionalProperties": {"dataType":"any"}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "CredentialConfigurationDisplay": { + "dataType": "refObject", + "properties": { + "name": {"dataType":"string","required":true}, + "locale": {"dataType":"string"}, + "logo": {"ref":"Logo"}, + "description": {"dataType":"string"}, + "background_color": {"dataType":"string"}, + "background_image": {"ref":"Logo"}, + "text_color": {"dataType":"string"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "CredentialConfigurationSupportedWithFormats": { + "dataType": "refObject", + "properties": { + "format": {"dataType":"enum","enums":["jwt_vc_json"],"required":true}, + "scope": {"dataType":"string"}, + "cryptographic_binding_methods_supported": {"dataType":"array","array":{"dataType":"string"}}, + "credential_signing_alg_values_supported": {"dataType":"array","array":{"dataType":"string"}}, + "proof_types_supported": {"ref":"Record_string.ProofTypeConfig_"}, + "credential_definition": {"ref":"CredentialDefinition","required":true}, + "display": {"dataType":"array","array":{"dataType":"refObject","ref":"CredentialConfigurationDisplay"}}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Record_string.CredentialConfigurationSupportedWithFormats_": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{},"additionalProperties":{"ref":"CredentialConfigurationSupportedWithFormats"},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "BatchCredentialIssuanceOptions": { + "dataType": "refObject", + "properties": { + "batchSize": {"dataType":"double","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "UpdateIssuerRecordOptions": { + "dataType": "refObject", + "properties": { + "display": {"dataType":"array","array":{"dataType":"refObject","ref":"CredentialDisplay"}}, + "dpopSigningAlgValuesSupported": {"dataType":"array","array":{"dataType":"string"}}, + "credentialConfigurationsSupported": {"ref":"Record_string.CredentialConfigurationSupportedWithFormats_","required":true}, + "batchCredentialIssuance": {"ref":"BatchCredentialIssuanceOptions"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcVerifierRecord": { + "dataType": "refAlias", + "type": {"ref":"Record_string.unknown_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcSiopVerifierClientMetadata": { + "dataType": "refObject", + "properties": { + "client_name": {"dataType":"string"}, + "logo_uri": {"dataType":"string"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcSiopCreateVerifierOptions": { + "dataType": "refObject", + "properties": { + "verifierId": {"dataType":"string"}, + "clientMetadata": {"ref":"OpenId4VcSiopVerifierClientMetadata"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "OpenId4VcUpdateVerifierRecordOptions": { + "dataType": "refObject", + "properties": { + "verifierId": {"dataType":"string","required":true}, + "clientMetadata": {"ref":"OpenId4VcSiopVerifierClientMetadata"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SdJwtVcRecord": { + "dataType": "refAlias", + "type": {"ref":"Record_string.unknown_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "MdocRecord": { + "dataType": "refAlias", + "type": {"ref":"Record_string.unknown_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "ResolveCredentialOfferBody": { + "dataType": "refObject", + "properties": { + "credentialOfferUri": {"dataType":"string","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "AuthorizeRequestCredentialOffer": { + "dataType": "refObject", + "properties": { + "credentialOfferUri": {"dataType":"string","required":true}, + "credentialsToRequest": {"dataType":"array","array":{"dataType":"string"},"required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "RequestCredentialBody": { + "dataType": "refObject", + "properties": { + "credentialOfferUri": {"dataType":"string","required":true}, + "credentialsToRequest": {"dataType":"array","array":{"dataType":"string"},"required":true}, + "authorizationCode": {"dataType":"string"}, + "codeVerifier": {"dataType":"string"}, + "txCode": {"dataType":"string"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "ResolveProofRequest": { + "dataType": "refObject", + "properties": { + "proofRequestUri": {"dataType":"string","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa }; const templateService = new ExpressTemplateService(models, {"noImplicitAdditionalProperties":"throw-on-extras","bodyCoercion":true}); @@ -2173,31 +2414,31 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_createTenant: Record = { - createTenantOptions: {"in":"body","name":"createTenantOptions","required":true,"ref":"CreateTenantOptions"}, + const argsIssuanceSessionsController_createCredentialOffer: Record = { + options: {"in":"body","name":"options","required":true,"ref":"OpenId4VcIssuanceSessionsCreateOffer"}, }; - app.post('/multi-tenancy/create-tenant', + app.post('/openid4vc/issuance-sessions/create-credential-offer', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.createTenant)), + ...(fetchMiddlewares(IssuanceSessionsController)), + ...(fetchMiddlewares(IssuanceSessionsController.prototype.createCredentialOffer)), - async function MultiTenancyController_createTenant(request: ExRequest, response: ExResponse, next: any) { + async function IssuanceSessionsController_createCredentialOffer(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createTenant, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuanceSessionsController_createCredentialOffer, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(MultiTenancyController); + const controller: any = await container.get(IssuanceSessionsController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'createTenant', + methodName: 'createCredentialOffer', controller, response, next, @@ -2209,32 +2450,32 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_createDid: Record = { - createDidOptions: {"in":"body","name":"createDidOptions","required":true,"ref":"DidCreate"}, - tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + const argsIssuanceSessionsController_getIssuanceSessionsById: Record = { + request: {"in":"request","name":"request","required":true,"dataType":"object"}, + issuanceSessionId: {"in":"path","name":"issuanceSessionId","required":true,"dataType":"string"}, }; - app.post('/multi-tenancy/create-did/:tenantId', + app.get('/openid4vc/issuance-sessions/:issuanceSessionId', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.createDid)), + ...(fetchMiddlewares(IssuanceSessionsController)), + ...(fetchMiddlewares(IssuanceSessionsController.prototype.getIssuanceSessionsById)), - async function MultiTenancyController_createDid(request: ExRequest, response: ExResponse, next: any) { + async function IssuanceSessionsController_getIssuanceSessionsById(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createDid, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuanceSessionsController_getIssuanceSessionsById, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(MultiTenancyController); + const controller: any = await container.get(IssuanceSessionsController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'createDid', + methodName: 'getIssuanceSessionsById', controller, response, next, @@ -2246,31 +2487,36 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_getDids: Record = { - tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + const argsIssuanceSessionsController_getIssuanceSessionsByQuery: Record = { + cNonce: {"in":"query","name":"cNonce","dataType":"string"}, + publicIssuerId: {"in":"query","name":"publicIssuerId","dataType":"string"}, + preAuthorizedCode: {"in":"query","name":"preAuthorizedCode","dataType":"string"}, + state: {"in":"query","name":"state","ref":"OpenId4VcIssuanceSessionState"}, + credentialOfferUri: {"in":"query","name":"credentialOfferUri","dataType":"string"}, + authorizationCode: {"in":"query","name":"authorizationCode","dataType":"string"}, }; - app.get('/multi-tenancy/dids/:tenantId', + app.get('/openid4vc/issuance-sessions', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.getDids)), + ...(fetchMiddlewares(IssuanceSessionsController)), + ...(fetchMiddlewares(IssuanceSessionsController.prototype.getIssuanceSessionsByQuery)), - async function MultiTenancyController_getDids(request: ExRequest, response: ExResponse, next: any) { + async function IssuanceSessionsController_getIssuanceSessionsByQuery(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_getDids, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuanceSessionsController_getIssuanceSessionsByQuery, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(MultiTenancyController); + const controller: any = await container.get(IssuanceSessionsController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'getDids', + methodName: 'getIssuanceSessionsByQuery', controller, response, next, @@ -2282,32 +2528,32 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_didNymTransaction: Record = { - tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, - didNymTransaction: {"in":"body","name":"didNymTransaction","required":true,"ref":"DidNymTransaction"}, + const argsIssuanceSessionsController_updateSessionById: Record = { + issuanceSessionId: {"in":"path","name":"issuanceSessionId","required":true,"dataType":"string"}, + metadata: {"in":"body","name":"metadata","required":true,"ref":"Record_string.unknown_"}, }; - app.post('/multi-tenancy/transactions/set-endorser-role/:tenantId', + app.put('/openid4vc/issuance-sessions/:issuanceSessionId', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.didNymTransaction)), + ...(fetchMiddlewares(IssuanceSessionsController)), + ...(fetchMiddlewares(IssuanceSessionsController.prototype.updateSessionById)), - async function MultiTenancyController_didNymTransaction(request: ExRequest, response: ExResponse, next: any) { + async function IssuanceSessionsController_updateSessionById(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_didNymTransaction, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuanceSessionsController_updateSessionById, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(MultiTenancyController); + const controller: any = await container.get(IssuanceSessionsController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'didNymTransaction', + methodName: 'updateSessionById', controller, response, next, @@ -2319,32 +2565,31 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_endorserTransaction: Record = { - tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, - endorserTransaction: {"in":"body","name":"endorserTransaction","required":true,"ref":"EndorserTransaction"}, + const argsIssuanceSessionsController_deleteIssuanceSessionById: Record = { + issuanceSessionId: {"in":"path","name":"issuanceSessionId","required":true,"dataType":"string"}, }; - app.post('/multi-tenancy/transactions/endorse/:tenantId', + app.delete('/openid4vc/issuance-sessions/:issuanceSessionId', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.endorserTransaction)), + ...(fetchMiddlewares(IssuanceSessionsController)), + ...(fetchMiddlewares(IssuanceSessionsController.prototype.deleteIssuanceSessionById)), - async function MultiTenancyController_endorserTransaction(request: ExRequest, response: ExResponse, next: any) { + async function IssuanceSessionsController_deleteIssuanceSessionById(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_endorserTransaction, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuanceSessionsController_deleteIssuanceSessionById, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(MultiTenancyController); + const controller: any = await container.get(IssuanceSessionsController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'endorserTransaction', + methodName: 'deleteIssuanceSessionById', controller, response, next, @@ -2356,22 +2601,21 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_getConnectionById: Record = { - tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, - connectionId: {"in":"path","name":"connectionId","required":true,"ref":"RecordId"}, + const argsMultiTenancyController_createTenant: Record = { + createTenantOptions: {"in":"body","name":"createTenantOptions","required":true,"ref":"CreateTenantOptions"}, }; - app.get('/multi-tenancy/connections/:connectionId/:tenantId', + app.post('/multi-tenancy/create-tenant', authenticateMiddleware([{"apiKey":[]}]), ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.getConnectionById)), + ...(fetchMiddlewares(MultiTenancyController.prototype.createTenant)), - async function MultiTenancyController_getConnectionById(request: ExRequest, response: ExResponse, next: any) { + async function MultiTenancyController_createTenant(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_getConnectionById, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createTenant, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; @@ -2381,7 +2625,7 @@ export function RegisterRoutes(app: Router) { } await templateService.apiHandler({ - methodName: 'getConnectionById', + methodName: 'createTenant', controller, response, next, @@ -2393,22 +2637,22 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_createInvitation: Record = { + const argsMultiTenancyController_createDid: Record = { + createDidOptions: {"in":"body","name":"createDidOptions","required":true,"ref":"DidCreate"}, tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, - config: {"in":"body","name":"config","dataType":"intersection","subSchemas":[{"ref":"Omit_CreateOutOfBandInvitationConfig.routing_"},{"ref":"RecipientKeyOption"}]}, }; - app.post('/multi-tenancy/create-invitation/:tenantId', + app.post('/multi-tenancy/create-did/:tenantId', authenticateMiddleware([{"apiKey":[]}]), ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.createInvitation)), + ...(fetchMiddlewares(MultiTenancyController.prototype.createDid)), - async function MultiTenancyController_createInvitation(request: ExRequest, response: ExResponse, next: any) { + async function MultiTenancyController_createDid(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createInvitation, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createDid, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; @@ -2418,7 +2662,7 @@ export function RegisterRoutes(app: Router) { } await templateService.apiHandler({ - methodName: 'createInvitation', + methodName: 'createDid', controller, response, next, @@ -2430,22 +2674,21 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_createLegacyInvitation: Record = { + const argsMultiTenancyController_getDids: Record = { tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, - config: {"in":"body","name":"config","dataType":"intersection","subSchemas":[{"ref":"Omit_CreateOutOfBandInvitationConfig.routing-or-appendedAttachments-or-messages_"},{"ref":"RecipientKeyOption"}]}, }; - app.post('/multi-tenancy/create-legacy-invitation/:tenantId', + app.get('/multi-tenancy/dids/:tenantId', authenticateMiddleware([{"apiKey":[]}]), ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.createLegacyInvitation)), + ...(fetchMiddlewares(MultiTenancyController.prototype.getDids)), - async function MultiTenancyController_createLegacyInvitation(request: ExRequest, response: ExResponse, next: any) { + async function MultiTenancyController_getDids(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createLegacyInvitation, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_getDids, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; @@ -2455,7 +2698,7 @@ export function RegisterRoutes(app: Router) { } await templateService.apiHandler({ - methodName: 'createLegacyInvitation', + methodName: 'getDids', controller, response, next, @@ -2467,22 +2710,22 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsMultiTenancyController_receiveInvitation: Record = { - invitationRequest: {"in":"body","name":"invitationRequest","required":true,"ref":"ReceiveInvitationProps"}, + const argsMultiTenancyController_didNymTransaction: Record = { tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + didNymTransaction: {"in":"body","name":"didNymTransaction","required":true,"ref":"DidNymTransaction"}, }; - app.post('/multi-tenancy/receive-invitation/:tenantId', + app.post('/multi-tenancy/transactions/set-endorser-role/:tenantId', authenticateMiddleware([{"apiKey":[]}]), ...(fetchMiddlewares(MultiTenancyController)), - ...(fetchMiddlewares(MultiTenancyController.prototype.receiveInvitation)), + ...(fetchMiddlewares(MultiTenancyController.prototype.didNymTransaction)), - async function MultiTenancyController_receiveInvitation(request: ExRequest, response: ExResponse, next: any) { + async function MultiTenancyController_didNymTransaction(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_receiveInvitation, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_didNymTransaction, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; @@ -2492,7 +2735,192 @@ export function RegisterRoutes(app: Router) { } await templateService.apiHandler({ - methodName: 'receiveInvitation', + methodName: 'didNymTransaction', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsMultiTenancyController_endorserTransaction: Record = { + tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + endorserTransaction: {"in":"body","name":"endorserTransaction","required":true,"ref":"EndorserTransaction"}, + }; + app.post('/multi-tenancy/transactions/endorse/:tenantId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(MultiTenancyController)), + ...(fetchMiddlewares(MultiTenancyController.prototype.endorserTransaction)), + + async function MultiTenancyController_endorserTransaction(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_endorserTransaction, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(MultiTenancyController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'endorserTransaction', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsMultiTenancyController_getConnectionById: Record = { + tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + connectionId: {"in":"path","name":"connectionId","required":true,"ref":"RecordId"}, + }; + app.get('/multi-tenancy/connections/:connectionId/:tenantId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(MultiTenancyController)), + ...(fetchMiddlewares(MultiTenancyController.prototype.getConnectionById)), + + async function MultiTenancyController_getConnectionById(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_getConnectionById, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(MultiTenancyController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getConnectionById', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsMultiTenancyController_createInvitation: Record = { + tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + config: {"in":"body","name":"config","dataType":"intersection","subSchemas":[{"ref":"Omit_CreateOutOfBandInvitationConfig.routing_"},{"ref":"RecipientKeyOption"}]}, + }; + app.post('/multi-tenancy/create-invitation/:tenantId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(MultiTenancyController)), + ...(fetchMiddlewares(MultiTenancyController.prototype.createInvitation)), + + async function MultiTenancyController_createInvitation(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createInvitation, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(MultiTenancyController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'createInvitation', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsMultiTenancyController_createLegacyInvitation: Record = { + tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + config: {"in":"body","name":"config","dataType":"intersection","subSchemas":[{"ref":"Omit_CreateOutOfBandInvitationConfig.routing-or-appendedAttachments-or-messages_"},{"ref":"RecipientKeyOption"}]}, + }; + app.post('/multi-tenancy/create-legacy-invitation/:tenantId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(MultiTenancyController)), + ...(fetchMiddlewares(MultiTenancyController.prototype.createLegacyInvitation)), + + async function MultiTenancyController_createLegacyInvitation(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_createLegacyInvitation, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(MultiTenancyController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'createLegacyInvitation', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsMultiTenancyController_receiveInvitation: Record = { + invitationRequest: {"in":"body","name":"invitationRequest","required":true,"ref":"ReceiveInvitationProps"}, + tenantId: {"in":"path","name":"tenantId","required":true,"dataType":"string"}, + }; + app.post('/multi-tenancy/receive-invitation/:tenantId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(MultiTenancyController)), + ...(fetchMiddlewares(MultiTenancyController.prototype.receiveInvitation)), + + async function MultiTenancyController_receiveInvitation(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsMultiTenancyController_receiveInvitation, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(MultiTenancyController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'receiveInvitation', controller, response, next, @@ -5007,34 +5435,31 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsQuestionAnswerController_getQuestionAnswerRecords: Record = { - connectionId: {"in":"query","name":"connectionId","dataType":"string"}, - role: {"in":"query","name":"role","ref":"QuestionAnswerRole"}, - state: {"in":"query","name":"state","ref":"QuestionAnswerState"}, - threadId: {"in":"query","name":"threadId","dataType":"string"}, + const argsIssuerController_createIssuer: Record = { + createIssuerOptions: {"in":"body","name":"createIssuerOptions","required":true,"dataType":"any"}, }; - app.get('/question-answer', + app.post('/openid4vc/issuer', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(QuestionAnswerController)), - ...(fetchMiddlewares(QuestionAnswerController.prototype.getQuestionAnswerRecords)), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.createIssuer)), - async function QuestionAnswerController_getQuestionAnswerRecords(request: ExRequest, response: ExResponse, next: any) { + async function IssuerController_createIssuer(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_getQuestionAnswerRecords, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_createIssuer, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(QuestionAnswerController); + const controller: any = await container.get(IssuerController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'getQuestionAnswerRecords', + methodName: 'createIssuer', controller, response, next, @@ -5046,32 +5471,32 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsQuestionAnswerController_sendQuestion: Record = { - connectionId: {"in":"path","name":"connectionId","required":true,"ref":"RecordId"}, - config: {"in":"body","name":"config","required":true,"dataType":"nestedObjectLiteral","nestedProperties":{"detail":{"dataType":"string"},"validResponses":{"dataType":"array","array":{"dataType":"refObject","ref":"ValidResponse"},"required":true},"question":{"dataType":"string","required":true}}}, + const argsIssuerController_updateIssuerMetadata: Record = { + publicIssuerId: {"in":"path","name":"publicIssuerId","required":true,"dataType":"string"}, + updateIssuerRecordOptions: {"in":"body","name":"updateIssuerRecordOptions","required":true,"ref":"UpdateIssuerRecordOptions"}, }; - app.post('/question-answer/question/:connectionId', + app.put('/openid4vc/issuer/:publicIssuerId', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(QuestionAnswerController)), - ...(fetchMiddlewares(QuestionAnswerController.prototype.sendQuestion)), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.updateIssuerMetadata)), - async function QuestionAnswerController_sendQuestion(request: ExRequest, response: ExResponse, next: any) { + async function IssuerController_updateIssuerMetadata(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_sendQuestion, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_updateIssuerMetadata, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(QuestionAnswerController); + const controller: any = await container.get(IssuerController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'sendQuestion', + methodName: 'updateIssuerMetadata', controller, response, next, @@ -5083,32 +5508,31 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsQuestionAnswerController_sendAnswer: Record = { - id: {"in":"path","name":"id","required":true,"ref":"RecordId"}, - request: {"in":"body","name":"request","required":true,"ref":"Record_response.string_"}, + const argsIssuerController_getIssuerAgentMetaData: Record = { + issuerId: {"in":"path","name":"issuerId","required":true,"dataType":"string"}, }; - app.post('/question-answer/answer/:id', + app.get('/openid4vc/issuer/:issuerId/metadata', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(QuestionAnswerController)), - ...(fetchMiddlewares(QuestionAnswerController.prototype.sendAnswer)), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.getIssuerAgentMetaData)), - async function QuestionAnswerController_sendAnswer(request: ExRequest, response: ExResponse, next: any) { + async function IssuerController_getIssuerAgentMetaData(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_sendAnswer, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_getIssuerAgentMetaData, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(QuestionAnswerController); + const controller: any = await container.get(IssuerController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'sendAnswer', + methodName: 'getIssuerAgentMetaData', controller, response, next, @@ -5120,31 +5544,671 @@ export function RegisterRoutes(app: Router) { } }); // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - const argsQuestionAnswerController_getQuestionAnswerRecordById: Record = { - id: {"in":"path","name":"id","required":true,"ref":"RecordId"}, + const argsIssuerController_getIssuersByQuery: Record = { + publicIssuerId: {"in":"query","name":"publicIssuerId","dataType":"string"}, }; - app.get('/question-answer/:id', + app.get('/openid4vc/issuer', authenticateMiddleware([{"apiKey":[]}]), - ...(fetchMiddlewares(QuestionAnswerController)), - ...(fetchMiddlewares(QuestionAnswerController.prototype.getQuestionAnswerRecordById)), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.getIssuersByQuery)), - async function QuestionAnswerController_getQuestionAnswerRecordById(request: ExRequest, response: ExResponse, next: any) { + async function IssuerController_getIssuersByQuery(request: ExRequest, response: ExResponse, next: any) { // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa let validatedArgs: any[] = []; try { - validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_getQuestionAnswerRecordById, request, response }); + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_getIssuersByQuery, request, response }); const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; - const controller: any = await container.get(QuestionAnswerController); + const controller: any = await container.get(IssuerController); if (typeof controller['setStatus'] === 'function') { controller.setStatus(undefined); } await templateService.apiHandler({ - methodName: 'getQuestionAnswerRecordById', + methodName: 'getIssuersByQuery', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsIssuerController_getIssuer: Record = { + publicIssuerId: {"in":"path","name":"publicIssuerId","required":true,"dataType":"string"}, + }; + app.get('/openid4vc/issuer/:publicIssuerId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.getIssuer)), + + async function IssuerController_getIssuer(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_getIssuer, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(IssuerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getIssuer', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsIssuerController_deleteIssuer: Record = { + id: {"in":"path","name":"id","required":true,"dataType":"string"}, + }; + app.delete('/openid4vc/issuer/:id', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(IssuerController)), + ...(fetchMiddlewares(IssuerController.prototype.deleteIssuer)), + + async function IssuerController_deleteIssuer(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsIssuerController_deleteIssuer, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(IssuerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'deleteIssuer', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsVerifierController_createVerifier: Record = { + options: {"in":"body","name":"options","required":true,"ref":"OpenId4VcSiopCreateVerifierOptions"}, + }; + app.post('/openid4vc/verifier', + ...(fetchMiddlewares(VerifierController)), + ...(fetchMiddlewares(VerifierController.prototype.createVerifier)), + + async function VerifierController_createVerifier(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsVerifierController_createVerifier, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(VerifierController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'createVerifier', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsVerifierController_updateVerifierMetadata: Record = { + publicVerifierId: {"in":"path","name":"publicVerifierId","required":true,"dataType":"string"}, + verifierRecordOptions: {"in":"body","name":"verifierRecordOptions","required":true,"ref":"OpenId4VcUpdateVerifierRecordOptions"}, + }; + app.put('/openid4vc/verifier/:publicVerifierId', + ...(fetchMiddlewares(VerifierController)), + ...(fetchMiddlewares(VerifierController.prototype.updateVerifierMetadata)), + + async function VerifierController_updateVerifierMetadata(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsVerifierController_updateVerifierMetadata, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(VerifierController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'updateVerifierMetadata', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsVerifierController_getVerifiersByQuery: Record = { + publicVerifierId: {"in":"query","name":"publicVerifierId","dataType":"string"}, + }; + app.get('/openid4vc/verifier', + ...(fetchMiddlewares(VerifierController)), + ...(fetchMiddlewares(VerifierController.prototype.getVerifiersByQuery)), + + async function VerifierController_getVerifiersByQuery(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsVerifierController_getVerifiersByQuery, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(VerifierController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getVerifiersByQuery', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsVerifierController_getVerifier: Record = { + publicVerifierId: {"in":"path","name":"publicVerifierId","required":true,"dataType":"string"}, + }; + app.get('/openid4vc/verifier/:publicVerifierId', + ...(fetchMiddlewares(VerifierController)), + ...(fetchMiddlewares(VerifierController.prototype.getVerifier)), + + async function VerifierController_getVerifier(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsVerifierController_getVerifier, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(VerifierController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getVerifier', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsVerifierController_deleteVerifier: Record = { + verifierId: {"in":"path","name":"verifierId","required":true,"dataType":"string"}, + }; + app.delete('/openid4vc/verifier/:verifierId', + ...(fetchMiddlewares(VerifierController)), + ...(fetchMiddlewares(VerifierController.prototype.deleteVerifier)), + + async function VerifierController_deleteVerifier(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsVerifierController_deleteVerifier, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(VerifierController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'deleteVerifier', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsQuestionAnswerController_getQuestionAnswerRecords: Record = { + connectionId: {"in":"query","name":"connectionId","dataType":"string"}, + role: {"in":"query","name":"role","ref":"QuestionAnswerRole"}, + state: {"in":"query","name":"state","ref":"QuestionAnswerState"}, + threadId: {"in":"query","name":"threadId","dataType":"string"}, + }; + app.get('/question-answer', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(QuestionAnswerController)), + ...(fetchMiddlewares(QuestionAnswerController.prototype.getQuestionAnswerRecords)), + + async function QuestionAnswerController_getQuestionAnswerRecords(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_getQuestionAnswerRecords, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(QuestionAnswerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getQuestionAnswerRecords', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsQuestionAnswerController_sendQuestion: Record = { + connectionId: {"in":"path","name":"connectionId","required":true,"ref":"RecordId"}, + config: {"in":"body","name":"config","required":true,"dataType":"nestedObjectLiteral","nestedProperties":{"detail":{"dataType":"string"},"validResponses":{"dataType":"array","array":{"dataType":"refObject","ref":"ValidResponse"},"required":true},"question":{"dataType":"string","required":true}}}, + }; + app.post('/question-answer/question/:connectionId', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(QuestionAnswerController)), + ...(fetchMiddlewares(QuestionAnswerController.prototype.sendQuestion)), + + async function QuestionAnswerController_sendQuestion(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_sendQuestion, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(QuestionAnswerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'sendQuestion', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsQuestionAnswerController_sendAnswer: Record = { + id: {"in":"path","name":"id","required":true,"ref":"RecordId"}, + request: {"in":"body","name":"request","required":true,"ref":"Record_response.string_"}, + }; + app.post('/question-answer/answer/:id', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(QuestionAnswerController)), + ...(fetchMiddlewares(QuestionAnswerController.prototype.sendAnswer)), + + async function QuestionAnswerController_sendAnswer(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_sendAnswer, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(QuestionAnswerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'sendAnswer', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsQuestionAnswerController_getQuestionAnswerRecordById: Record = { + id: {"in":"path","name":"id","required":true,"ref":"RecordId"}, + }; + app.get('/question-answer/:id', + authenticateMiddleware([{"apiKey":[]}]), + ...(fetchMiddlewares(QuestionAnswerController)), + ...(fetchMiddlewares(QuestionAnswerController.prototype.getQuestionAnswerRecordById)), + + async function QuestionAnswerController_getQuestionAnswerRecordById(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsQuestionAnswerController_getQuestionAnswerRecordById, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(QuestionAnswerController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getQuestionAnswerRecordById', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_getSdJwtCredentials: Record = { + }; + app.get('/openid4vc/holder/sd-jwt-vcs', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.getSdJwtCredentials)), + + async function HolderController_getSdJwtCredentials(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_getSdJwtCredentials, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getSdJwtCredentials', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_getMdocCredentials: Record = { + }; + app.get('/openid4vc/holder/mdoc-vcs', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.getMdocCredentials)), + + async function HolderController_getMdocCredentials(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_getMdocCredentials, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'getMdocCredentials', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_resolveCredOffer: Record = { + body: {"in":"body","name":"body","required":true,"ref":"ResolveCredentialOfferBody"}, + }; + app.post('/openid4vc/holder/resolve-credential-offer', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.resolveCredOffer)), + + async function HolderController_resolveCredOffer(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_resolveCredOffer, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'resolveCredOffer', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_requestAuthorizationForCredential: Record = { + body: {"in":"body","name":"body","required":true,"ref":"AuthorizeRequestCredentialOffer"}, + }; + app.post('/openid4vc/holder/authorization-request', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.requestAuthorizationForCredential)), + + async function HolderController_requestAuthorizationForCredential(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_requestAuthorizationForCredential, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'requestAuthorizationForCredential', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_requestCredential: Record = { + body: {"in":"body","name":"body","required":true,"ref":"RequestCredentialBody"}, + }; + app.post('/openid4vc/holder/request-credential', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.requestCredential)), + + async function HolderController_requestCredential(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_requestCredential, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'requestCredential', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_resolveProofRequest: Record = { + body: {"in":"body","name":"body","required":true,"ref":"ResolveProofRequest"}, + }; + app.post('/openid4vc/holder/resolve-proof-request', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.resolveProofRequest)), + + async function HolderController_resolveProofRequest(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_resolveProofRequest, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'resolveProofRequest', + controller, + response, + next, + validatedArgs, + successStatus: undefined, + }); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + const argsHolderController_acceptProofRequest: Record = { + body: {"in":"body","name":"body","required":true,"ref":"ResolveProofRequest"}, + }; + app.post('/openid4vc/holder/accept-proof-request', + ...(fetchMiddlewares(HolderController)), + ...(fetchMiddlewares(HolderController.prototype.acceptProofRequest)), + + async function HolderController_acceptProofRequest(request: ExRequest, response: ExResponse, next: any) { + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = templateService.getValidatedArgs({ args: argsHolderController_acceptProofRequest, request, response }); + + const container: IocContainer = typeof iocContainer === 'function' ? (iocContainer as IocContainerFactory)(request) : iocContainer; + + const controller: any = await container.get(HolderController); + if (typeof controller['setStatus'] === 'function') { + controller.setStatus(undefined); + } + + await templateService.apiHandler({ + methodName: 'acceptProofRequest', controller, response, next, diff --git a/src/routes/swagger.json b/src/routes/swagger.json index d22382dd..d765a46e 100644 --- a/src/routes/swagger.json +++ b/src/routes/swagger.json @@ -635,6 +635,33 @@ ], "type": "string" }, + "SingleOrArray_string-or-Record_string.unknown__": { + "anyOf": [ + { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/Record_string.unknown_" + } + ] + }, + { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/Record_string.unknown_" + } + ] + }, + "type": "array" + } + ] + }, "OutOfBandDidCommService": { "properties": { "id": { @@ -861,6 +888,173 @@ "type": "object", "additionalProperties": false }, + "OpenId4VcIssuanceSessionRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "SignerMethod": { + "enum": [ + "did", + "x5c" + ], + "type": "string" + }, + "Record_string.boolean_": { + "properties": {}, + "type": "object", + "description": "Construct a type with a set of properties K of type T" + }, + "Record_string.boolean-or-Record_string.boolean__": { + "properties": {}, + "additionalProperties": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/components/schemas/Record_string.boolean_" + } + ] + }, + "type": "object", + "description": "Construct a type with a set of properties K of type T" + }, + "OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions": { + "properties": { + "credentialSupportedId": { + "type": "string" + }, + "format": { + "type": "string" + }, + "payload": { + "properties": { + "vct": { + "type": "string" + } + }, + "additionalProperties": {}, + "type": "object" + }, + "disclosureFrame": { + "$ref": "#/components/schemas/Record_string.boolean-or-Record_string.boolean__" + } + }, + "required": [ + "credentialSupportedId", + "format", + "payload" + ], + "type": "object", + "additionalProperties": false + }, + "OpenId4VcIssuanceSessionsCreateOffer": { + "properties": { + "publicIssuerId": { + "type": "string" + }, + "signerOption": { + "properties": { + "x5c": { + "items": { + "type": "string" + }, + "type": "array" + }, + "did": { + "type": "string" + }, + "method": { + "$ref": "#/components/schemas/SignerMethod" + } + }, + "required": [ + "method" + ], + "type": "object" + }, + "credentials": { + "items": { + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions" + }, + "type": "array" + }, + "authorizationCodeFlowConfig": { + "properties": { + "issuerState": { + "type": "string" + }, + "requirePresentationDuringIssuance": { + "type": "boolean" + }, + "authorizationServerUrl": { + "type": "string" + } + }, + "required": [ + "authorizationServerUrl" + ], + "type": "object" + }, + "preAuthorizedCodeFlowConfig": { + "properties": { + "authorizationServerUrl": { + "type": "string" + }, + "txCode": { + "properties": { + "input_mode": { + "type": "string", + "enum": [ + "numeric", + "text" + ] + }, + "length": { + "type": "number", + "format": "double" + }, + "description": { + "type": "string" + } + }, + "type": "object" + }, + "preAuthorizedCode": { + "type": "string" + } + }, + "required": [ + "authorizationServerUrl" + ], + "type": "object" + }, + "issuanceMetadata": { + "$ref": "#/components/schemas/Record_string.unknown_" + } + }, + "required": [ + "publicIssuerId", + "signerOption", + "credentials" + ], + "type": "object", + "additionalProperties": false + }, + "OpenId4VcIssuanceSessionState": { + "enum": [ + "OfferCreated", + "OfferUriRetrieved", + "AuthorizationInitiated", + "AuthorizationGranted", + "AccessTokenRequested", + "AccessTokenCreated", + "CredentialRequestReceived", + "CredentialsPartiallyIssued", + "Completed", + "Error" + ], + "type": "string" + }, "TenantRecord": { "$ref": "#/components/schemas/Record_string.unknown_" }, @@ -1542,6 +1736,14 @@ "comment": { "type": "string" }, + "goalCode": { + "type": "string", + "description": "Will be ignored for v1 protocol as it is not supported" + }, + "goal": { + "type": "string", + "description": "Will be ignored for v1 protocol as it is not supported" + }, "credentialRecordId": { "type": "string" }, @@ -2318,7 +2520,12 @@ "type": "string" }, "servedFromCache": { - "type": "boolean" + "type": "boolean", + "description": "Whether the did document was served from the cache" + }, + "servedFromDidRecord": { + "type": "boolean", + "description": "Whether the did document was served from a local did record" } }, "type": "object", @@ -3211,157 +3418,880 @@ ], "type": "object", "additionalProperties": false - } - }, - "securitySchemes": { - "apiKey": { - "type": "apiKey", - "name": "Authorization", - "in": "header" - } - } - }, - "info": { - "title": "credo-controller", - "version": "2.0.0", - "description": "Rest endpoint wrapper for using your agent over HTTP", - "license": { - "name": "Apache-2.0" - }, - "contact": {} - }, - "paths": { - "/proofs": { - "get": { - "operationId": "GetAllProofs", - "responses": { - "200": { - "description": "ProofRecord[]", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "type": "array" - }, - "examples": { - "Example 1": { - "value": [ - { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - ] - } - } - } - } + }, + "OpenId4VcIssuerRecord": { + "$ref": "#/components/schemas/Record_string.unknown_", + "description": "For OID4VC you need to expose metadata files. Each issuer needs to host this metadata. This is not the case for DIDComm where we can just have one /didcomm endpoint.\nSo we create a record per openid issuer/verifier that you want, and each tenant can create multiple issuers/verifiers which have different endpoints\nand metadata files" + }, + "Logo": { + "properties": { + "uri": { + "type": "string" + }, + "alt_text": { + "type": "string" } }, - "description": "Retrieve all proof records", - "tags": [ - "Proofs" - ], - "security": [ - { - "apiKey": [] + "type": "object", + "additionalProperties": {} + }, + "CredentialDisplay": { + "properties": { + "name": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "logo": { + "$ref": "#/components/schemas/Logo" } - ], - "parameters": [ - { - "in": "query", - "name": "threadId", - "required": false, - "schema": { + }, + "type": "object", + "additionalProperties": {} + }, + "ProofTypeConfig": { + "properties": { + "proof_signing_alg_values_supported": { + "items": { "type": "string" - } - } - ] - } - }, - "/proofs/{proofRecordId}": { - "get": { - "operationId": "GetProofById", - "responses": { - "200": { - "description": "ProofRecord", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } - } - } - } + }, + "type": "array" } }, - "description": "Retrieve proof record by proof record id", + "required": [ + "proof_signing_alg_values_supported" + ], + "type": "object", + "additionalProperties": false + }, + "Record_string.ProofTypeConfig_": { + "properties": {}, + "additionalProperties": { + "$ref": "#/components/schemas/ProofTypeConfig" + }, + "type": "object", + "description": "Construct a type with a set of properties K of type T" + }, + "CredentialDefinition": { + "properties": { + "type": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object", + "additionalProperties": {} + }, + "CredentialConfigurationDisplay": { + "properties": { + "name": { + "type": "string" + }, + "locale": { + "type": "string" + }, + "logo": { + "$ref": "#/components/schemas/Logo" + }, + "description": { + "type": "string" + }, + "background_color": { + "type": "string" + }, + "background_image": { + "$ref": "#/components/schemas/Logo" + }, + "text_color": { + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "CredentialConfigurationSupportedWithFormats": { + "properties": { + "format": { + "type": "string", + "enum": [ + "jwt_vc_json" + ], + "nullable": false + }, + "scope": { + "type": "string" + }, + "cryptographic_binding_methods_supported": { + "items": { + "type": "string" + }, + "type": "array" + }, + "credential_signing_alg_values_supported": { + "items": { + "type": "string" + }, + "type": "array" + }, + "proof_types_supported": { + "$ref": "#/components/schemas/Record_string.ProofTypeConfig_" + }, + "credential_definition": { + "$ref": "#/components/schemas/CredentialDefinition" + }, + "display": { + "items": { + "$ref": "#/components/schemas/CredentialConfigurationDisplay" + }, + "type": "array" + } + }, + "required": [ + "format", + "credential_definition" + ], + "type": "object", + "additionalProperties": false + }, + "Record_string.CredentialConfigurationSupportedWithFormats_": { + "properties": {}, + "additionalProperties": { + "$ref": "#/components/schemas/CredentialConfigurationSupportedWithFormats" + }, + "type": "object", + "description": "Construct a type with a set of properties K of type T" + }, + "BatchCredentialIssuanceOptions": { + "properties": { + "batchSize": { + "type": "number", + "format": "double" + } + }, + "required": [ + "batchSize" + ], + "type": "object", + "additionalProperties": false + }, + "UpdateIssuerRecordOptions": { + "properties": { + "display": { + "items": { + "$ref": "#/components/schemas/CredentialDisplay" + }, + "type": "array" + }, + "dpopSigningAlgValuesSupported": { + "items": { + "type": "string" + }, + "type": "array" + }, + "credentialConfigurationsSupported": { + "$ref": "#/components/schemas/Record_string.CredentialConfigurationSupportedWithFormats_" + }, + "batchCredentialIssuance": { + "$ref": "#/components/schemas/BatchCredentialIssuanceOptions" + } + }, + "required": [ + "credentialConfigurationsSupported" + ], + "type": "object", + "additionalProperties": false + }, + "OpenId4VcVerifierRecord": { + "$ref": "#/components/schemas/Record_string.unknown_", + "description": "For OID4VC you need to expos metadata files. Each issuer needs to host this metadata. This is not the case for DIDComm where we can just have one /didcomm endpoint.\nSo we create a record per openid issuer/verifier that you want, and each tenant can create multiple issuers/verifiers which have different endpoints\nand metadata files" + }, + "OpenId4VcSiopVerifierClientMetadata": { + "properties": { + "client_name": { + "type": "string" + }, + "logo_uri": { + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "OpenId4VcSiopCreateVerifierOptions": { + "properties": { + "verifierId": { + "type": "string" + }, + "clientMetadata": { + "$ref": "#/components/schemas/OpenId4VcSiopVerifierClientMetadata" + } + }, + "type": "object", + "additionalProperties": false + }, + "OpenId4VcUpdateVerifierRecordOptions": { + "properties": { + "verifierId": { + "type": "string" + }, + "clientMetadata": { + "$ref": "#/components/schemas/OpenId4VcSiopVerifierClientMetadata" + } + }, + "required": [ + "verifierId" + ], + "type": "object", + "additionalProperties": false + }, + "SdJwtVcRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "MdocRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "ResolveCredentialOfferBody": { + "properties": { + "credentialOfferUri": { + "type": "string" + } + }, + "required": [ + "credentialOfferUri" + ], + "type": "object", + "additionalProperties": false + }, + "AuthorizeRequestCredentialOffer": { + "properties": { + "credentialOfferUri": { + "type": "string" + }, + "credentialsToRequest": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "credentialOfferUri", + "credentialsToRequest" + ], + "type": "object", + "additionalProperties": false + }, + "RequestCredentialBody": { + "properties": { + "credentialOfferUri": { + "type": "string" + }, + "credentialsToRequest": { + "items": { + "type": "string" + }, + "type": "array" + }, + "authorizationCode": { + "type": "string" + }, + "codeVerifier": { + "type": "string" + }, + "txCode": { + "type": "string" + } + }, + "required": [ + "credentialOfferUri", + "credentialsToRequest" + ], + "type": "object", + "additionalProperties": false + }, + "ResolveProofRequest": { + "properties": { + "proofRequestUri": { + "type": "string" + } + }, + "required": [ + "proofRequestUri" + ], + "type": "object", + "additionalProperties": false + } + }, + "securitySchemes": { + "apiKey": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + } + }, + "info": { + "title": "credo-controller", + "version": "2.0.0", + "description": "Rest endpoint wrapper for using your agent over HTTP", + "license": { + "name": "Apache-2.0" + }, + "contact": {} + }, + "paths": { + "/proofs": { + "get": { + "operationId": "GetAllProofs", + "responses": { + "200": { + "description": "ProofRecord[]", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "type": "array" + }, + "examples": { + "Example 1": { + "value": [ + { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + ] + } + } + } + } + } + }, + "description": "Retrieve all proof records", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "query", + "name": "threadId", + "required": false, + "schema": { + "type": "string" + } + } + ] + } + }, + "/proofs/{proofRecordId}": { + "get": { + "operationId": "GetProofById", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Retrieve proof record by proof record id", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "proofRecordId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + } + ] + } + }, + "/proofs/propose-proof": { + "post": { + "operationId": "ProposeProof", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProofExchangeRecord" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Initiate a new presentation exchange as prover by sending a presentation proposal request\nto the connection with the specified connection id.", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestProofProposalOptions" + } + } + } + } + } + }, + "/proofs/{proofRecordId}/accept-proposal": { + "post": { + "operationId": "AcceptProposal", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProofExchangeRecord" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Accept a presentation proposal as verifier by sending an accept proposal message\nto the connection associated with the proof record.", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptProofProposal" + } + } + } + } + } + }, + "/proofs/request-proof": { + "post": { + "operationId": "RequestProof", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProofExchangeRecord" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Creates a presentation request bound to existing connection", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestProofOptions" + } + } + } + } + } + }, + "/proofs/create-request-oob": { + "post": { + "operationId": "CreateRequest", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "properties": { + "proofRecordThId": { + "type": "string" + }, + "invitationDid": { + "type": "string" + }, + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "invitation": { + "$ref": "#/components/schemas/PlaintextMessage" + }, + "invitationUrl": { + "type": "string" + } + }, + "required": [ + "proofRecordThId", + "invitationDid", + "outOfBandRecord", + "invitation", + "invitationUrl" + ], + "type": "object" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Creates a presentation request not bound to any proposal or existing connection", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProofRequestOobOptions" + } + } + } + } + } + }, + "/proofs/{proofRecordId}/accept-request": { + "post": { + "operationId": "AcceptRequest", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Accept a presentation request as prover by sending an accept request message\nto the connection associated with the proof record.", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "proofRecordId", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "comment": { + "type": "string" + }, + "filterByNonRevocationRequirements": { + "type": "boolean" + }, + "filterByPresentationPreview": { + "type": "boolean" + } + }, + "type": "object" + } + } + } + } + } + }, + "/proofs/{proofRecordId}/accept-presentation": { + "post": { + "operationId": "AcceptPresentation", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProofExchangeRecord" + }, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Accept a presentation as prover by sending an accept presentation message\nto the connection associated with the proof record.", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "proofRecordId", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/proofs/{proofRecordId}/form-data": { + "get": { + "operationId": "ProofFormData", + "responses": { + "200": { + "description": "ProofRecord", + "content": { + "application/json": { + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } + } + } + } + }, + "description": "Return proofRecord", + "tags": [ + "Proofs" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "proofRecordId", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/polygon/create-keys": { + "post": { + "operationId": "CreateKeyPair", + "responses": { + "200": { + "description": "Secp256k1KeyPair", + "content": { + "application/json": { + "schema": { + "properties": { + "address": { + "type": "string" + }, + "publicKeyBase58": { + "type": "string" + }, + "privateKey": { + "type": "string" + } + }, + "required": [ + "address", + "publicKeyBase58", + "privateKey" + ], + "type": "object" + } + } + } + } + }, + "description": "Create Secp256k1 key pair for polygon DID", "tags": [ - "Proofs" + "Polygon" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "proofRecordId", - "required": true, - "schema": { - "$ref": "#/components/schemas/RecordId" - } - } - ] + "parameters": [] } }, - "/proofs/propose-proof": { + "/polygon/create-schema": { "post": { - "operationId": "ProposeProof", + "operationId": "CreateSchema", "responses": { "200": { - "description": "ProofRecord", + "description": "Schema JSON", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/ProofExchangeRecord" - }, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } - } + "schema": {} } } } }, - "description": "Initiate a new presentation exchange as prover by sending a presentation proposal request\nto the connection with the specified connection id.", + "description": "Create polygon based W3C schema", "tags": [ - "Proofs" + "Polygon" ], "security": [ { @@ -3374,43 +4304,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RequestProofProposalOptions" + "properties": { + "schema": { + "properties": {}, + "additionalProperties": {}, + "type": "object" + }, + "schemaName": { + "type": "string" + }, + "did": { + "type": "string" + } + }, + "required": [ + "schema", + "schemaName", + "did" + ], + "type": "object" } } } } } }, - "/proofs/{proofRecordId}/accept-proposal": { + "/polygon/estimate-transaction": { "post": { - "operationId": "AcceptProposal", + "operationId": "EstimateTransaction", "responses": { "200": { - "description": "ProofRecord", + "description": "Transaction Object", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/ProofExchangeRecord" - }, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } - } + "schema": {} } } } }, - "description": "Accept a presentation proposal as verifier by sending an accept proposal message\nto the connection associated with the proof record.", + "description": "Estimate transaction", "tags": [ - "Proofs" + "Polygon" ], "security": [ { @@ -3423,33 +4357,197 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AcceptProofProposal" + "properties": { + "transaction": {}, + "operation": {} + }, + "required": [ + "transaction", + "operation" + ], + "type": "object" } } } } } }, - "/proofs/request-proof": { - "post": { - "operationId": "RequestProof", + "/polygon/{did}/{schemaId}": { + "get": { + "operationId": "GetSchemaById", "responses": { "200": { - "description": "Ok", + "description": "Schema Object", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "description": "Fetch schema details", + "tags": [ + "Polygon" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "did", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "schemaId", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/oob": { + "get": { + "operationId": "GetAllOutOfBandRecords", + "responses": { + "200": { + "description": "OutOfBandRecord[]", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProofExchangeRecord" + "items": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "type": "array" + }, + "examples": { + "Example 1": { + "value": [ + { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + } + ] + } + } + } + } + } + }, + "description": "Retrieve all out of band records", + "tags": [ + "Out Of Band" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "description": "invitation identifier", + "in": "query", + "name": "invitationId", + "required": false, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + } + ] + } + }, + "/oob/{outOfBandId}": { + "get": { + "operationId": "GetOutOfBandRecordById", + "responses": { + "200": { + "description": "OutOfBandRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Record_string.unknown_" }, "examples": { "Example 1": { "value": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "id": "42a95528-0e30-4f86-a462-0efb02178b53", "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" + "reusable": false } } } @@ -3457,41 +4555,65 @@ } } }, - "description": "Creates a presentation request bound to existing connection", + "description": "Retrieve an out of band record by id", "tags": [ - "Proofs" + "Out Of Band" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RequestProofOptions" - } + "parameters": [ + { + "in": "path", + "name": "outOfBandId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } + ] + }, + "delete": { + "operationId": "DeleteOutOfBandRecord", + "responses": { + "204": { + "description": "No content" + } + }, + "description": "Deletes an out of band record from the repository.", + "tags": [ + "Out Of Band" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "description": "Record identifier", + "in": "path", + "name": "outOfBandId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + } + ] } }, - "/proofs/create-request-oob": { + "/oob/create-invitation": { "post": { - "operationId": "CreateRequest", + "operationId": "CreateInvitation", "responses": { "200": { - "description": "Ok", + "description": "Out of band record", "content": { "application/json": { "schema": { "properties": { - "proofRecordThId": { - "type": "string" - }, "invitationDid": { "type": "string" }, @@ -3506,7 +4628,6 @@ } }, "required": [ - "proofRecordThId", "invitationDid", "outOfBandRecord", "invitation", @@ -3517,12 +4638,69 @@ "examples": { "Example 1": { "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" + "invitationUrl": "string", + "invitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "outOfBandRecord": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + } } } } @@ -3530,9 +4708,9 @@ } } }, - "description": "Creates a presentation request not bound to any proposal or existing connection", + "description": "Creates an outbound out-of-band record containing out-of-band invitation message defined in\nAries RFC 0434: Out-of-Band Protocol 1.1.", "tags": [ - "Proofs" + "Out Of Band" ], "security": [ { @@ -3541,37 +4719,121 @@ ], "parameters": [], "requestBody": { + "description": "configuration of how out-of-band invitation should be created", "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateProofRequestOobOptions" + "allOf": [ + { + "$ref": "#/components/schemas/CreateInvitationOptions" + }, + { + "$ref": "#/components/schemas/RecipientKeyOption" + } + ], + "description": "configuration of how out-of-band invitation should be created" } } } } } }, - "/proofs/{proofRecordId}/accept-request": { + "/oob/create-legacy-invitation": { "post": { - "operationId": "AcceptRequest", + "operationId": "CreateLegacyInvitation", "responses": { "200": { - "description": "ProofRecord", + "description": "out-of-band record and invitation", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" + "properties": { + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "invitation": { + "$ref": "#/components/schemas/PlaintextMessage" + }, + "invitationUrl": { + "type": "string" + }, + "recipientKey": { + "type": "string" + } + }, + "required": [ + "outOfBandRecord", + "invitation", + "invitationUrl" + ], + "type": "object" }, "examples": { "Example 1": { "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" + "invitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "outOfBandRecord": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + } } } } @@ -3579,68 +4841,72 @@ } } }, - "description": "Accept a presentation request as prover by sending an accept request message\nto the connection associated with the proof record.", + "description": "Creates an outbound out-of-band record in the same way how `createInvitation` method does it,\nbut it also converts out-of-band invitation message to an \"legacy\" invitation message defined\nin RFC 0160: Connection Protocol and returns it together with out-of-band record.", "tags": [ - "Proofs" + "Out Of Band" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "proofRecordId", - "required": true, - "schema": { - "type": "string" - } - } - ], + "parameters": [], "requestBody": { - "required": true, + "description": "configuration of how a invitation should be created", + "required": false, "content": { "application/json": { "schema": { - "properties": { - "comment": { - "type": "string" - }, - "filterByNonRevocationRequirements": { - "type": "boolean" + "allOf": [ + { + "$ref": "#/components/schemas/Omit_CreateLegacyInvitationConfig.routing_" }, - "filterByPresentationPreview": { - "type": "boolean" + { + "$ref": "#/components/schemas/RecipientKeyOption" } - }, - "type": "object" + ], + "description": "configuration of how a invitation should be created" } } } } } }, - "/proofs/{proofRecordId}/accept-presentation": { + "/oob/create-legacy-connectionless-invitation": { "post": { - "operationId": "AcceptPresentation", + "operationId": "CreateLegacyConnectionlessInvitation", "responses": { "200": { - "description": "ProofRecord", + "description": "a message and a invitationUrl", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProofExchangeRecord" + "properties": { + "outOfBandRecord": { + "$ref": "#/components/schemas/OutOfBandRecord" + }, + "invitationUrl": { + "type": "string" + }, + "message": { + "$ref": "#/components/schemas/AgentMessage" + } + }, + "required": [ + "outOfBandRecord", + "invitationUrl", + "message" + ], + "type": "object" }, "examples": { "Example 1": { "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" + "message": { + "@id": "eac4ff4e-b4fb-4c1d-aef3-b29c89d1cc00", + "@type": "https://didcomm.org/connections/1.0/invitation" + }, + "invitationUrl": "http://example.com/invitation_url" } } } @@ -3648,132 +4914,135 @@ } } }, - "description": "Accept a presentation as prover by sending an accept presentation message\nto the connection associated with the proof record.", + "description": "Creates a new connectionless legacy invitation.", "tags": [ - "Proofs" + "Out Of Band" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "proofRecordId", - "required": true, - "schema": { - "type": "string" - } - } - ] - } - }, - "/proofs/{proofRecordId}/form-data": { - "get": { - "operationId": "ProofFormData", - "responses": { - "200": { - "description": "ProofRecord", - "content": { - "application/json": { - "schema": {}, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } + "parameters": [], + "requestBody": { + "description": "configuration of how a connection invitation should be created", + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "domain": { + "type": "string" + }, + "message": { + "$ref": "#/components/schemas/AgentMessageType" + }, + "recordId": { + "type": "string" } - } + }, + "required": [ + "domain", + "message", + "recordId" + ], + "type": "object", + "description": "configuration of how a connection invitation should be created" } } } - }, - "description": "Return proofRecord", - "tags": [ - "Proofs" - ], - "security": [ - { - "apiKey": [] - } - ], - "parameters": [ - { - "in": "path", - "name": "proofRecordId", - "required": true, - "schema": { - "type": "string" - } - } - ] + } } }, - "/polygon/create-keys": { + "/oob/receive-invitation": { "post": { - "operationId": "CreateKeyPair", + "operationId": "ReceiveInvitation", "responses": { "200": { - "description": "Secp256k1KeyPair", + "description": "out-of-band record and connection record if one has been created.", "content": { "application/json": { "schema": { "properties": { - "address": { - "type": "string" - }, - "publicKeyBase58": { - "type": "string" + "connectionRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" }, - "privateKey": { - "type": "string" + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" } }, "required": [ - "address", - "publicKeyBase58", - "privateKey" + "connectionRecord", + "outOfBandRecord" ], "type": "object" - } - } - } - } - }, - "description": "Create Secp256k1 key pair for polygon DID", - "tags": [ - "Polygon" - ], - "security": [ - { - "apiKey": [] - } - ], - "parameters": [] - } - }, - "/polygon/create-schema": { - "post": { - "operationId": "CreateSchema", - "responses": { - "200": { - "description": "Schema JSON", - "content": { - "application/json": { - "schema": {} + }, + "examples": { + "Example 1": { + "value": { + "outOfBandRecord": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + }, + "connectionRecord": { + "_tags": { + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" + }, + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" + } + } + } + } } } } }, - "description": "Create polygon based W3C schema", + "description": "Creates inbound out-of-band record and assigns out-of-band invitation message to it if the\nmessage is valid.", "tags": [ - "Polygon" + "Out Of Band" ], "security": [ { @@ -3786,47 +5055,102 @@ "content": { "application/json": { "schema": { - "properties": { - "schema": { - "properties": {}, - "additionalProperties": {}, - "type": "object" - }, - "schemaName": { - "type": "string" - }, - "did": { - "type": "string" - } - }, - "required": [ - "schema", - "schemaName", - "did" - ], - "type": "object" + "$ref": "#/components/schemas/ReceiveInvitationProps" } } } } } }, - "/polygon/estimate-transaction": { + "/oob/receive-invitation-url": { "post": { - "operationId": "EstimateTransaction", + "operationId": "ReceiveInvitationFromUrl", "responses": { "200": { - "description": "Transaction Object", + "description": "out-of-band record and connection record if one has been created.", "content": { "application/json": { - "schema": {} + "schema": { + "properties": { + "connectionRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + } + }, + "required": [ + "connectionRecord", + "outOfBandRecord" + ], + "type": "object" + }, + "examples": { + "Example 1": { + "value": { + "outOfBandRecord": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + }, + "connectionRecord": { + "_tags": { + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" + }, + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" + } + } + } + } } } } }, - "description": "Estimate transaction", + "description": "Creates inbound out-of-band record and assigns out-of-band invitation message to it if the\nmessage is valid.", "tags": [ - "Polygon" + "Out Of Band" ], "security": [ { @@ -3839,37 +5163,102 @@ "content": { "application/json": { "schema": { - "properties": { - "transaction": {}, - "operation": {} - }, - "required": [ - "transaction", - "operation" - ], - "type": "object" + "$ref": "#/components/schemas/ReceiveInvitationByUrlProps" } } } } } }, - "/polygon/{did}/{schemaId}": { - "get": { - "operationId": "GetSchemaById", + "/oob/{outOfBandId}/accept-invitation": { + "post": { + "operationId": "AcceptInvitation", "responses": { "200": { - "description": "Schema Object", + "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "properties": { + "connectionRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + } + }, + "required": [ + "connectionRecord", + "outOfBandRecord" + ], + "type": "object" + }, + "examples": { + "Example 1": { + "value": { + "outOfBandRecord": { + "_tags": { + "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", + "state": "await-response", + "role": "sender", + "recipientKeyFingerprints": [ + "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" + ] + }, + "outOfBandInvitation": { + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", + "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", + "label": "Aries Test Agent", + "accept": [ + "didcomm/aip1", + "didcomm/aip2;env=rfc19" + ], + "handshake_protocols": [ + "https://didcomm.org/didexchange/1.0", + "https://didcomm.org/connections/1.0" + ], + "services": [ + { + "id": "#inline-0", + "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", + "type": "did-communication", + "recipientKeys": [ + "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" + ], + "routingKeys": [] + } + ] + }, + "metadata": {}, + "id": "42a95528-0e30-4f86-a462-0efb02178b53", + "createdAt": "2022-01-01T00:00:00.000Z", + "reusable": false + }, + "connectionRecord": { + "_tags": { + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" + }, + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" + } + } + } + } } } } }, - "description": "Fetch schema details", + "description": "Accept a connection invitation as invitee (by sending a connection request message) for the connection with the specified connection id.\nThis is not needed when auto accepting of connections is enabled.", "tags": [ - "Polygon" + "Out Of Band" ], "security": [ { @@ -3879,88 +5268,92 @@ "parameters": [ { "in": "path", - "name": "did", + "name": "outOfBandId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/RecordId" } - }, - { - "in": "path", - "name": "schemaId", - "required": true, - "schema": { - "type": "string" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptInvitationConfig" + } + } + } + } + } + }, + "/openid4vc/issuance-sessions/create-credential-offer": { + "post": { + "operationId": "CreateCredentialOffer", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "properties": { + "issuanceSession": { + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionRecord" + }, + "credentialOffer": { + "type": "string" + } + }, + "required": [ + "issuanceSession", + "credentialOffer" + ], + "type": "object" + } + } + } + } + }, + "description": "Creates a credential offer with the specified credential configurations and authorization type.", + "tags": [ + "oid4vc issuance sessions" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionsCreateOffer" + } } } - ] + } } }, - "/oob": { + "/openid4vc/issuance-sessions/{issuanceSessionId}": { "get": { - "operationId": "GetAllOutOfBandRecords", + "operationId": "GetIssuanceSessionsById", "responses": { "200": { - "description": "OutOfBandRecord[]", + "description": "Ok", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "type": "array" - }, - "examples": { - "Example 1": { - "value": [ - { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - } - ] - } + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionRecord" } } } } }, - "description": "Retrieve all out of band records", + "description": "Get issuance details by issuance SessionId", "tags": [ - "Out Of Band" + "oid4vc issuance sessions" ], "security": [ { @@ -3969,77 +5362,32 @@ ], "parameters": [ { - "description": "invitation identifier", - "in": "query", - "name": "invitationId", - "required": false, + "in": "path", + "name": "issuanceSessionId", + "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] - } - }, - "/oob/{outOfBandId}": { - "get": { - "operationId": "GetOutOfBandRecordById", + }, + "put": { + "operationId": "UpdateSessionById", "responses": { "200": { - "description": "OutOfBandRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - } - } + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionRecord" } } } } }, - "description": "Retrieve an out of band record by id", + "description": "Update issuance session metadata by session ID", "tags": [ - "Out Of Band" + "oid4vc issuance sessions" ], "security": [ { @@ -4049,24 +5397,34 @@ "parameters": [ { "in": "path", - "name": "outOfBandId", + "name": "issuanceSessionId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } - ] + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Record_string.unknown_" + } + } + } + } }, "delete": { - "operationId": "DeleteOutOfBandRecord", + "operationId": "DeleteIssuanceSessionById", "responses": { "204": { "description": "No content" } }, - "description": "Deletes an out of band record from the repository.", + "description": "Delete issuance session by session ID", "tags": [ - "Out Of Band" + "oid4vc issuance sessions" ], "security": [ { @@ -4075,124 +5433,112 @@ ], "parameters": [ { - "description": "Record identifier", "in": "path", - "name": "outOfBandId", + "name": "issuanceSessionId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] } }, - "/oob/create-invitation": { - "post": { - "operationId": "CreateInvitation", + "/openid4vc/issuance-sessions": { + "get": { + "operationId": "GetIssuanceSessionsByQuery", "responses": { "200": { - "description": "Out of band record", + "description": "Ok", "content": { "application/json": { "schema": { - "properties": { - "invitationDid": { - "type": "string" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "invitation": { - "$ref": "#/components/schemas/PlaintextMessage" - }, - "invitationUrl": { - "type": "string" - } + "items": { + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionRecord" }, - "required": [ - "invitationDid", - "outOfBandRecord", - "invitation", - "invitationUrl" - ], - "type": "object" - }, - "examples": { - "Example 1": { - "value": { - "invitationUrl": "string", - "invitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "outOfBandRecord": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - } - } - } + "type": "array" + } + } + } + } + }, + "description": "Fetch all issuance sessions by query", + "tags": [ + "oid4vc issuance sessions" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "query", + "name": "cNonce", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "publicIssuerId", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "preAuthorizedCode", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "state", + "required": false, + "schema": { + "$ref": "#/components/schemas/OpenId4VcIssuanceSessionState" + } + }, + { + "in": "query", + "name": "credentialOfferUri", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "authorizationCode", + "required": false, + "schema": { + "type": "string" + } + } + ] + } + }, + "/multi-tenancy/create-tenant": { + "post": { + "operationId": "CreateTenant", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantRecord" } } } } }, - "description": "Creates an outbound out-of-band record containing out-of-band invitation message defined in\nAries RFC 0434: Out-of-Band Protocol 1.1.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { @@ -4201,546 +5547,334 @@ ], "parameters": [], "requestBody": { - "description": "configuration of how out-of-band invitation should be created", "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CreateInvitationOptions" - }, - { - "$ref": "#/components/schemas/RecipientKeyOption" - } - ], - "description": "configuration of how out-of-band invitation should be created" + "$ref": "#/components/schemas/CreateTenantOptions" } } } } } }, - "/oob/create-legacy-invitation": { + "/multi-tenancy/create-did/{tenantId}": { "post": { - "operationId": "CreateLegacyInvitation", + "operationId": "CreateDid", "responses": { "200": { - "description": "out-of-band record and invitation", + "description": "Ok", "content": { "application/json": { - "schema": { - "properties": { - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "invitation": { - "$ref": "#/components/schemas/PlaintextMessage" - }, - "invitationUrl": { - "type": "string" - }, - "recipientKey": { - "type": "string" - } - }, - "required": [ - "outOfBandRecord", - "invitation", - "invitationUrl" - ], - "type": "object" - }, - "examples": { - "Example 1": { - "value": { - "invitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "outOfBandRecord": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - } - } - } - } + "schema": {} } } } }, - "description": "Creates an outbound out-of-band record in the same way how `createInvitation` method does it,\nbut it also converts out-of-band invitation message to an \"legacy\" invitation message defined\nin RFC 0160: Connection Protocol and returns it together with out-of-band record.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { - "description": "configuration of how a invitation should be created", - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Omit_CreateLegacyInvitationConfig.routing_" - }, - { - "$ref": "#/components/schemas/RecipientKeyOption" - } - ], - "description": "configuration of how a invitation should be created" + "$ref": "#/components/schemas/DidCreate" } } } } } }, - "/oob/create-legacy-connectionless-invitation": { - "post": { - "operationId": "CreateLegacyConnectionlessInvitation", + "/multi-tenancy/dids/{tenantId}": { + "get": { + "operationId": "GetDids", "responses": { "200": { - "description": "a message and a invitationUrl", + "description": "Ok", "content": { "application/json": { - "schema": { - "properties": { - "outOfBandRecord": { - "$ref": "#/components/schemas/OutOfBandRecord" - }, - "invitationUrl": { - "type": "string" - }, - "message": { - "$ref": "#/components/schemas/AgentMessage" - } - }, - "required": [ - "outOfBandRecord", - "invitationUrl", - "message" - ], - "type": "object" - }, - "examples": { - "Example 1": { - "value": { - "message": { - "@id": "eac4ff4e-b4fb-4c1d-aef3-b29c89d1cc00", - "@type": "https://didcomm.org/connections/1.0/invitation" - }, - "invitationUrl": "http://example.com/invitation_url" - } - } - } + "schema": {} + } + } + } + }, + "tags": [ + "MultiTenancy" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/multi-tenancy/transactions/set-endorser-role/{tenantId}": { + "post": { + "operationId": "DidNymTransaction", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} } } } }, - "description": "Creates a new connectionless legacy invitation.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { - "description": "configuration of how a connection invitation should be created", "required": true, "content": { "application/json": { "schema": { - "properties": { - "domain": { - "type": "string" - }, - "message": { - "$ref": "#/components/schemas/AgentMessageType" - }, - "recordId": { - "type": "string" - } - }, - "required": [ - "domain", - "message", - "recordId" - ], - "type": "object", - "description": "configuration of how a connection invitation should be created" + "$ref": "#/components/schemas/DidNymTransaction" } } } } } }, - "/oob/receive-invitation": { + "/multi-tenancy/transactions/endorse/{tenantId}": { "post": { - "operationId": "ReceiveInvitation", + "operationId": "EndorserTransaction", "responses": { "200": { - "description": "out-of-band record and connection record if one has been created.", + "description": "Ok", "content": { "application/json": { "schema": { "properties": { - "connectionRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - } + "signedTransaction": {} }, "required": [ - "connectionRecord", - "outOfBandRecord" + "signedTransaction" ], "type": "object" - }, - "examples": { - "Example 1": { - "value": { - "outOfBandRecord": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - }, - "connectionRecord": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } - } } } } } }, - "description": "Creates inbound out-of-band record and assigns out-of-band invitation message to it if the\nmessage is valid.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReceiveInvitationProps" + "$ref": "#/components/schemas/EndorserTransaction" } } } } } }, - "/oob/receive-invitation-url": { - "post": { - "operationId": "ReceiveInvitationFromUrl", + "/multi-tenancy/connections/{connectionId}/{tenantId}": { + "get": { + "operationId": "GetConnectionById", "responses": { "200": { - "description": "out-of-band record and connection record if one has been created.", + "description": "Ok", "content": { "application/json": { - "schema": { - "properties": { - "connectionRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - } - }, - "required": [ - "connectionRecord", - "outOfBandRecord" - ], - "type": "object" - }, + "schema": {}, "examples": { "Example 1": { "value": { - "outOfBandRecord": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - }, - "connectionRecord": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "_tags": { "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" + }, + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" + } + } + } + } + } + } + }, + "tags": [ + "MultiTenancy" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + } + ] + } + }, + "/multi-tenancy/create-invitation/{tenantId}": { + "post": { + "operationId": "CreateInvitation", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "properties": { + "invitationDid": { + "type": "string" + }, + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "invitation": { + "$ref": "#/components/schemas/PlaintextMessage" + }, + "invitationUrl": { + "type": "string" } - } + }, + "required": [ + "invitationDid", + "outOfBandRecord", + "invitation", + "invitationUrl" + ], + "type": "object" } } } } }, - "description": "Creates inbound out-of-band record and assigns out-of-band invitation message to it if the\nmessage is valid.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReceiveInvitationByUrlProps" + "allOf": [ + { + "$ref": "#/components/schemas/Omit_CreateOutOfBandInvitationConfig.routing_" + }, + { + "$ref": "#/components/schemas/RecipientKeyOption" + } + ] } } } } } }, - "/oob/{outOfBandId}/accept-invitation": { + "/multi-tenancy/create-legacy-invitation/{tenantId}": { "post": { - "operationId": "AcceptInvitation", + "operationId": "CreateLegacyInvitation", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": { - "properties": { - "connectionRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - } - }, - "required": [ - "connectionRecord", - "outOfBandRecord" - ], - "type": "object" - }, - "examples": { - "Example 1": { - "value": { - "outOfBandRecord": { - "_tags": { - "invitationId": "1cbd22e4-1906-41e9-8807-83d84437f978", - "state": "await-response", - "role": "sender", - "recipientKeyFingerprints": [ - "z6MktUCPZjfRJXD4GMcYuXiqX2qZ8vBw6UAYpDFiHEUfwuLj" - ] - }, - "outOfBandInvitation": { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/out-of-band/1.1/invitation", - "@id": "d6472943-e5d0-4d95-8b48-790ed5a41931", - "label": "Aries Test Agent", - "accept": [ - "didcomm/aip1", - "didcomm/aip2;env=rfc19" - ], - "handshake_protocols": [ - "https://didcomm.org/didexchange/1.0", - "https://didcomm.org/connections/1.0" - ], - "services": [ - { - "id": "#inline-0", - "serviceEndpoint": "https://6b77-89-20-162-146.ngrok.io", - "type": "did-communication", - "recipientKeys": [ - "did:key:z6MkmTBHTWrvLPN8pBmUj7Ye5ww9GiacXCYMNVvpScSpf1DM" - ], - "routingKeys": [] - } - ] - }, - "metadata": {}, - "id": "42a95528-0e30-4f86-a462-0efb02178b53", - "createdAt": "2022-01-01T00:00:00.000Z", - "reusable": false - }, - "connectionRecord": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } - } - } + "schema": {} } } } }, - "description": "Accept a connection invitation as invitee (by sending a connection request message) for the connection with the specified connection id.\nThis is not needed when auto accepting of connections is enabled.", "tags": [ - "Out Of Band" + "MultiTenancy" ], "security": [ { @@ -4750,36 +5884,41 @@ "parameters": [ { "in": "path", - "name": "outOfBandId", + "name": "tenantId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AcceptInvitationConfig" + "allOf": [ + { + "$ref": "#/components/schemas/Omit_CreateOutOfBandInvitationConfig.routing-or-appendedAttachments-or-messages_" + }, + { + "$ref": "#/components/schemas/RecipientKeyOption" + } + ] } } } } } }, - "/multi-tenancy/create-tenant": { + "/multi-tenancy/receive-invitation/{tenantId}": { "post": { - "operationId": "CreateTenant", + "operationId": "ReceiveInvitation", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/TenantRecord" - } + "schema": {} } } } @@ -4792,22 +5931,31 @@ "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "in": "path", + "name": "tenantId", + "required": true, + "schema": { + "type": "string" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateTenantOptions" + "$ref": "#/components/schemas/ReceiveInvitationProps" } } } } } }, - "/multi-tenancy/create-did/{tenantId}": { + "/multi-tenancy/receive-invitation-url/{tenantId}": { "post": { - "operationId": "CreateDid", + "operationId": "ReceiveInvitationFromUrl", "responses": { "200": { "description": "Ok", @@ -4841,16 +5989,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DidCreate" + "$ref": "#/components/schemas/ReceiveInvitationByUrlProps" } } } } } }, - "/multi-tenancy/dids/{tenantId}": { + "/multi-tenancy/oob/{invitationId}/{tenantId}": { "get": { - "operationId": "GetDids", + "operationId": "GetAllOutOfBandRecords", "responses": { "200": { "description": "Ok", @@ -4877,13 +6025,21 @@ "schema": { "type": "string" } + }, + { + "in": "path", + "name": "invitationId", + "required": true, + "schema": { + "type": "string" + } } ] } }, - "/multi-tenancy/transactions/set-endorser-role/{tenantId}": { - "post": { - "operationId": "DidNymTransaction", + "/multi-tenancy/connections/{tenantId}": { + "get": { + "operationId": "GetAllConnections", "responses": { "200": { "description": "Ok", @@ -4910,99 +6066,67 @@ "schema": { "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DidNymTransaction" - } + }, + { + "in": "query", + "name": "outOfBandId", + "required": false, + "schema": { + "type": "string" } - } - } - } - }, - "/multi-tenancy/transactions/endorse/{tenantId}": { - "post": { - "operationId": "EndorserTransaction", - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "properties": { - "signedTransaction": {} - }, - "required": [ - "signedTransaction" - ], - "type": "object" - } - } + }, + { + "in": "query", + "name": "alias", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "state", + "required": false, + "schema": { + "$ref": "#/components/schemas/DidExchangeState" } - } - }, - "tags": [ - "MultiTenancy" - ], - "security": [ + }, { - "apiKey": [] - } - ], - "parameters": [ + "in": "query", + "name": "myDid", + "required": false, + "schema": { + "type": "string" + } + }, { - "in": "path", - "name": "tenantId", - "required": true, + "in": "query", + "name": "theirDid", + "required": false, "schema": { "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EndorserTransaction" - } + }, + { + "in": "query", + "name": "theirLabel", + "required": false, + "schema": { + "type": "string" } } - } + ] } }, - "/multi-tenancy/connections/{connectionId}/{tenantId}": { + "/multi-tenancy/url/{tenantId}/{invitationId}": { "get": { - "operationId": "GetConnectionById", + "operationId": "GetInvitation", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {}, - "examples": { - "Example 1": { - "value": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } - } + "schema": {} } } } @@ -5010,15 +6134,11 @@ "tags": [ "MultiTenancy" ], - "security": [ - { - "apiKey": [] - } - ], + "security": [], "parameters": [ { "in": "path", - "name": "tenantId", + "name": "invitationId", "required": true, "schema": { "type": "string" @@ -5026,46 +6146,24 @@ }, { "in": "path", - "name": "connectionId", + "name": "tenantId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] } }, - "/multi-tenancy/create-invitation/{tenantId}": { + "/multi-tenancy/schema/{tenantId}": { "post": { - "operationId": "CreateInvitation", + "operationId": "CreateSchema", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": { - "properties": { - "invitationDid": { - "type": "string" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "invitation": { - "$ref": "#/components/schemas/PlaintextMessage" - }, - "invitationUrl": { - "type": "string" - } - }, - "required": [ - "invitationDid", - "outOfBandRecord", - "invitation", - "invitationUrl" - ], - "type": "object" - } + "schema": {} } } } @@ -5089,33 +6187,28 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Omit_CreateOutOfBandInvitationConfig.routing_" - }, - { - "$ref": "#/components/schemas/RecipientKeyOption" - } - ] + "$ref": "#/components/schemas/CreateSchemaInput" } } } } } }, - "/multi-tenancy/create-legacy-invitation/{tenantId}": { + "/multi-tenancy/polygon-w3c/schema/{tenantId}": { "post": { - "operationId": "CreateLegacyInvitation", + "operationId": "CreatePolygonW3CSchema", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/SchemaMetadata" + } } } } @@ -5139,27 +6232,38 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Omit_CreateOutOfBandInvitationConfig.routing-or-appendedAttachments-or-messages_" + "properties": { + "schema": { + "properties": {}, + "additionalProperties": {}, + "type": "object" }, - { - "$ref": "#/components/schemas/RecipientKeyOption" + "schemaName": { + "type": "string" + }, + "did": { + "type": "string" } - ] + }, + "required": [ + "schema", + "schemaName", + "did" + ], + "type": "object" } } } } } }, - "/multi-tenancy/receive-invitation/{tenantId}": { - "post": { - "operationId": "ReceiveInvitation", + "/multi-tenancy/polygon-w3c/schema/{did}/{schemaId}/{tenantId}": { + "get": { + "operationId": "GetPolygonW3CSchemaById", "responses": { "200": { "description": "Ok", @@ -5186,23 +6290,29 @@ "schema": { "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ReceiveInvitationProps" - } + }, + { + "in": "path", + "name": "did", + "required": true, + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "schemaId", + "required": true, + "schema": { + "type": "string" } } - } + ] } }, - "/multi-tenancy/receive-invitation-url/{tenantId}": { + "/multi-tenancy/transactions/write/{tenantId}": { "post": { - "operationId": "ReceiveInvitationFromUrl", + "operationId": "WriteSchemaAndCredDefOnLedger", "responses": { "200": { "description": "Ok", @@ -5236,16 +6346,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ReceiveInvitationByUrlProps" + "$ref": "#/components/schemas/WriteTransaction" } } } } } }, - "/multi-tenancy/oob/{invitationId}/{tenantId}": { + "/multi-tenancy/schema/{schemaId}/{tenantId}": { "get": { - "operationId": "GetAllOutOfBandRecords", + "operationId": "GetSchemaById", "responses": { "200": { "description": "Ok", @@ -5267,15 +6377,15 @@ "parameters": [ { "in": "path", - "name": "tenantId", + "name": "schemaId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/SchemaId" } }, { "in": "path", - "name": "invitationId", + "name": "tenantId", "required": true, "schema": { "type": "string" @@ -5284,9 +6394,9 @@ ] } }, - "/multi-tenancy/connections/{tenantId}": { - "get": { - "operationId": "GetAllConnections", + "/multi-tenancy/credential-definition/{tenantId}": { + "post": { + "operationId": "CreateCredentialDefinition", "responses": { "200": { "description": "Ok", @@ -5295,6 +6405,9 @@ "schema": {} } } + }, + "202": { + "description": "Wait for action to complete" } }, "tags": [ @@ -5313,61 +6426,45 @@ "schema": { "type": "string" } - }, - { - "in": "query", - "name": "outOfBandId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "alias", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "required": false, - "schema": { - "$ref": "#/components/schemas/DidExchangeState" - } - }, - { - "in": "query", - "name": "myDid", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "theirDid", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "theirLabel", - "required": false, - "schema": { - "type": "string" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "endorserDid": { + "type": "string" + }, + "endorse": { + "type": "boolean" + }, + "tag": { + "type": "string" + }, + "schemaId": { + "type": "string" + }, + "issuerId": { + "type": "string" + } + }, + "required": [ + "tag", + "schemaId", + "issuerId" + ], + "type": "object" + } } } - ] + } } }, - "/multi-tenancy/url/{tenantId}/{invitationId}": { + "/multi-tenancy/credential-definition/{credentialDefinitionId}/{tenantId}": { "get": { - "operationId": "GetInvitation", + "operationId": "GetCredentialDefinitionById", "responses": { "200": { "description": "Ok", @@ -5381,14 +6478,18 @@ "tags": [ "MultiTenancy" ], - "security": [], + "security": [ + { + "apiKey": [] + } + ], "parameters": [ { "in": "path", - "name": "invitationId", + "name": "credentialDefinitionId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/CredentialDefinitionId" } }, { @@ -5402,9 +6503,9 @@ ] } }, - "/multi-tenancy/schema/{tenantId}": { + "/multi-tenancy/credentials/create-offer/{tenantId}": { "post": { - "operationId": "CreateSchema", + "operationId": "CreateOffer", "responses": { "200": { "description": "Ok", @@ -5438,24 +6539,22 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSchemaInput" + "$ref": "#/components/schemas/CreateOfferOptions" } } } } } }, - "/multi-tenancy/polygon-w3c/schema/{tenantId}": { + "/multi-tenancy/credentials/create-offer-oob/{tenantId}": { "post": { - "operationId": "CreatePolygonW3CSchema", + "operationId": "CreateOfferOob", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/SchemaMetadata" - } + "schema": {} } } } @@ -5483,34 +6582,16 @@ "content": { "application/json": { "schema": { - "properties": { - "schema": { - "properties": {}, - "additionalProperties": {}, - "type": "object" - }, - "schemaName": { - "type": "string" - }, - "did": { - "type": "string" - } - }, - "required": [ - "schema", - "schemaName", - "did" - ], - "type": "object" + "$ref": "#/components/schemas/CreateOfferOobOptions" } } } } } }, - "/multi-tenancy/polygon-w3c/schema/{did}/{schemaId}/{tenantId}": { - "get": { - "operationId": "GetPolygonW3CSchemaById", + "/multi-tenancy/credentials/accept-offer/{tenantId}": { + "post": { + "operationId": "AcceptOffer", "responses": { "200": { "description": "Ok", @@ -5537,18 +6618,53 @@ "schema": { "type": "string" } - }, + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptCredentialOfferOptions" + } + } + } + } + } + }, + "/multi-tenancy/credentials/{credentialRecordId}/{tenantId}": { + "get": { + "operationId": "GetCredentialById", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "tags": [ + "MultiTenancy" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ { "in": "path", - "name": "did", + "name": "credentialRecordId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/RecordId" } }, { "in": "path", - "name": "schemaId", + "name": "tenantId", "required": true, "schema": { "type": "string" @@ -5557,9 +6673,9 @@ ] } }, - "/multi-tenancy/transactions/write/{tenantId}": { - "post": { - "operationId": "WriteSchemaAndCredDefOnLedger", + "/multi-tenancy/credentials/{tenantId}": { + "get": { + "operationId": "GetAllCredentials", "responses": { "200": { "description": "Ok", @@ -5586,23 +6702,37 @@ "schema": { "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WriteTransaction" - } + }, + { + "in": "query", + "name": "threadId", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "connectionId", + "required": false, + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "state", + "required": false, + "schema": { + "$ref": "#/components/schemas/CredentialState" } } - } + ] } }, - "/multi-tenancy/schema/{schemaId}/{tenantId}": { + "/multi-tenancy/credentials/form-data/{tenantId}/{credentialRecordId}": { "get": { - "operationId": "GetSchemaById", + "operationId": "CredentialFormData", "responses": { "200": { "description": "Ok", @@ -5624,15 +6754,15 @@ "parameters": [ { "in": "path", - "name": "schemaId", + "name": "tenantId", "required": true, "schema": { - "$ref": "#/components/schemas/SchemaId" + "type": "string" } }, { "in": "path", - "name": "tenantId", + "name": "credentialRecordId", "required": true, "schema": { "type": "string" @@ -5641,9 +6771,9 @@ ] } }, - "/multi-tenancy/credential-definition/{tenantId}": { - "post": { - "operationId": "CreateCredentialDefinition", + "/multi-tenancy/proofs/{tenantId}": { + "get": { + "operationId": "GetAllProofs", "responses": { "200": { "description": "Ok", @@ -5652,9 +6782,6 @@ "schema": {} } } - }, - "202": { - "description": "Wait for action to complete" } }, "tags": [ @@ -5673,51 +6800,39 @@ "schema": { "type": "string" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "endorserDid": { - "type": "string" - }, - "endorse": { - "type": "boolean" - }, - "tag": { - "type": "string" - }, - "schemaId": { - "type": "string" - }, - "issuerId": { - "type": "string" - } - }, - "required": [ - "tag", - "schemaId", - "issuerId" - ], - "type": "object" - } + }, + { + "in": "query", + "name": "threadId", + "required": false, + "schema": { + "type": "string" } } - } + ] } }, - "/multi-tenancy/credential-definition/{credentialDefinitionId}/{tenantId}": { + "/multi-tenancy/form-data/{tenantId}/{proofRecordId}": { "get": { - "operationId": "GetCredentialDefinitionById", + "operationId": "ProofFormData", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } } } } @@ -5733,10 +6848,10 @@ "parameters": [ { "in": "path", - "name": "credentialDefinitionId", + "name": "proofRecordId", "required": true, "schema": { - "$ref": "#/components/schemas/CredentialDefinitionId" + "type": "string" } }, { @@ -5750,15 +6865,27 @@ ] } }, - "/multi-tenancy/credentials/create-offer/{tenantId}": { + "/multi-tenancy/proofs/request-proof/{tenantId}": { "post": { - "operationId": "CreateOffer", + "operationId": "RequestProof", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } } } } @@ -5786,16 +6913,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateOfferOptions" + "$ref": "#/components/schemas/RequestProofOptions" } } } } } }, - "/multi-tenancy/credentials/create-offer-oob/{tenantId}": { + "/multi-tenancy/proofs/create-request-oob/{tenantId}": { "post": { - "operationId": "CreateOfferOob", + "operationId": "CreateRequest", "responses": { "200": { "description": "Ok", @@ -5829,22 +6956,34 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateOfferOobOptions" + "$ref": "#/components/schemas/CreateProofRequestOobOptions" } } } } } }, - "/multi-tenancy/credentials/accept-offer/{tenantId}": { + "/multi-tenancy/proofs/{proofRecordId}/accept-request/{tenantId}": { "post": { - "operationId": "AcceptOffer", + "operationId": "AcceptRequest", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } } } } @@ -5865,6 +7004,14 @@ "schema": { "type": "string" } + }, + { + "in": "path", + "name": "proofRecordId", + "required": true, + "schema": { + "type": "string" + } } ], "requestBody": { @@ -5872,22 +7019,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AcceptCredentialOfferOptions" + "properties": { + "comment": { + "type": "string" + }, + "filterByNonRevocationRequirements": { + "type": "boolean" + }, + "filterByPresentationPreview": { + "type": "boolean" + } + }, + "type": "object" } } } } } }, - "/multi-tenancy/credentials/{credentialRecordId}/{tenantId}": { - "get": { - "operationId": "GetCredentialById", + "/multi-tenancy/proofs/{proofRecordId}/accept-presentation/{tenantId}": { + "post": { + "operationId": "AcceptPresentation", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } } } } @@ -5903,15 +7073,15 @@ "parameters": [ { "in": "path", - "name": "credentialRecordId", + "name": "tenantId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } }, { "in": "path", - "name": "tenantId", + "name": "proofRecordId", "required": true, "schema": { "type": "string" @@ -5920,15 +7090,27 @@ ] } }, - "/multi-tenancy/credentials/{tenantId}": { + "/multi-tenancy/proofs/{proofRecordId}/{tenantId}": { "get": { - "operationId": "GetAllCredentials", + "operationId": "GetProofById", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": {}, + "examples": { + "Example 1": { + "value": { + "metadata": {}, + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", + "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", + "protocolVersion": "v1" + } + } + } } } } @@ -5951,41 +7133,27 @@ } }, { - "in": "query", - "name": "threadId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "connectionId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "state", - "required": false, + "in": "path", + "name": "proofRecordId", + "required": true, "schema": { - "$ref": "#/components/schemas/CredentialState" + "$ref": "#/components/schemas/RecordId" } } ] } }, - "/multi-tenancy/credentials/form-data/{tenantId}/{credentialRecordId}": { - "get": { - "operationId": "CredentialFormData", + "/multi-tenancy/{tenantId}": { + "delete": { + "operationId": "DeleteTenantById", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/Record_string.any_" + } } } } @@ -6006,21 +7174,56 @@ "schema": { "type": "string" } - }, + } + ] + } + }, + "/multi-tenancy/did/web/{tenantId}": { + "post": { + "operationId": "CreateDidWeb", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "tags": [ + "MultiTenancy" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ { "in": "path", - "name": "credentialRecordId", + "name": "tenantId", "required": true, "schema": { "type": "string" } } - ] + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DidCreate" + } + } + } + } } }, - "/multi-tenancy/proofs/{tenantId}": { - "get": { - "operationId": "GetAllProofs", + "/multi-tenancy/did/key{tenantId}": { + "post": { + "operationId": "CreateDidKey", "responses": { "200": { "description": "Ok", @@ -6047,43 +7250,39 @@ "schema": { "type": "string" } - }, - { - "in": "query", - "name": "threadId", - "required": false, - "schema": { - "type": "string" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DidCreate" + } } } - ] + } } }, - "/multi-tenancy/form-data/{tenantId}/{proofRecordId}": { + "/multi-tenancy/question-answer/{tenantId}": { "get": { - "operationId": "ProofFormData", + "operationId": "GetQuestionAnswerRecords", "responses": { "200": { - "description": "Ok", + "description": "QuestionAnswerRecord[]", "content": { "application/json": { - "schema": {}, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } + "schema": { + "items": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "type": "array" } } } } }, + "description": "Retrieve question and answer records by query", "tags": [ "MultiTenancy" ], @@ -6094,17 +7293,46 @@ ], "parameters": [ { + "description": "Tenant identifier", "in": "path", - "name": "proofRecordId", + "name": "tenantId", "required": true, "schema": { - "type": "string" + "type": "string" + } + }, + { + "description": "Connection identifier", + "in": "query", + "name": "connectionId", + "required": false, + "schema": { + "type": "string" + } + }, + { + "description": "Role of the question", + "in": "query", + "name": "role", + "required": false, + "schema": { + "$ref": "#/components/schemas/QuestionAnswerRole" + } + }, + { + "description": "State of the question", + "in": "query", + "name": "state", + "required": false, + "schema": { + "$ref": "#/components/schemas/QuestionAnswerState" } }, { - "in": "path", - "name": "tenantId", - "required": true, + "description": "Thread identifier", + "in": "query", + "name": "threadId", + "required": false, "schema": { "type": "string" } @@ -6112,31 +7340,20 @@ ] } }, - "/multi-tenancy/proofs/request-proof/{tenantId}": { + "/multi-tenancy/question-answer/question/{connectionId}/{tenantId}": { "post": { - "operationId": "RequestProof", + "operationId": "SendQuestion", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {}, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } - } + "schema": {} } } } }, + "description": "Send a question to a connection", "tags": [ "MultiTenancy" ], @@ -6147,6 +7364,16 @@ ], "parameters": [ { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + }, + { + "description": "Tenant identifier", "in": "path", "name": "tenantId", "required": true, @@ -6160,16 +7387,34 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RequestProofOptions" + "properties": { + "detail": { + "type": "string" + }, + "validResponses": { + "items": { + "$ref": "#/components/schemas/ValidResponse" + }, + "type": "array" + }, + "question": { + "type": "string" + } + }, + "required": [ + "validResponses", + "question" + ], + "type": "object" } } } } } }, - "/multi-tenancy/proofs/create-request-oob/{tenantId}": { + "/multi-tenancy/question-answer/answer/{id}/{tenantId}": { "post": { - "operationId": "CreateRequest", + "operationId": "SendAnswer", "responses": { "200": { "description": "Ok", @@ -6180,6 +7425,7 @@ } } }, + "description": "Send a answer to question", "tags": [ "MultiTenancy" ], @@ -6190,6 +7436,16 @@ ], "parameters": [ { + "description": "Question Answer Record identifier", + "in": "path", + "name": "id", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + }, + { + "description": "Tenant identifier", "in": "path", "name": "tenantId", "required": true, @@ -6203,38 +7459,27 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateProofRequestOobOptions" + "$ref": "#/components/schemas/Record_response.string_" } } } } } }, - "/multi-tenancy/proofs/{proofRecordId}/accept-request/{tenantId}": { - "post": { - "operationId": "AcceptRequest", + "/multi-tenancy/question-answer/{id}/{tenantId}": { + "get": { + "operationId": "GetQuestionAnswerRecordById", "responses": { "200": { - "description": "Ok", + "description": "ConnectionRecord", "content": { "application/json": { - "schema": {}, - "examples": { - "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } - } - } + "schema": {} } } } }, + "description": "Retrieve question answer record by id", "tags": [ "MultiTenancy" ], @@ -6245,70 +7490,58 @@ ], "parameters": [ { + "description": "Question Answer Record identifier", "in": "path", - "name": "tenantId", + "name": "id", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/RecordId" } }, { + "description": "Tenant identifier", "in": "path", - "name": "proofRecordId", + "name": "tenantId", "required": true, "schema": { "type": "string" } } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "comment": { - "type": "string" - }, - "filterByNonRevocationRequirements": { - "type": "boolean" - }, - "filterByPresentationPreview": { - "type": "boolean" - } - }, - "type": "object" - } - } - } - } + ] } }, - "/multi-tenancy/proofs/{proofRecordId}/accept-presentation/{tenantId}": { - "post": { - "operationId": "AcceptPresentation", + "/multi-tenancy/basic-messages/{connectionId}/{tenantId}": { + "get": { + "operationId": "GetBasicMessages", "responses": { "200": { - "description": "Ok", + "description": "BasicMessageRecord[]", "content": { "application/json": { "schema": {}, "examples": { "Example 1": { - "value": { - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" - } + "value": [ + { + "_tags": { + "role": "sender", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + }, + "metadata": {}, + "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", + "createdAt": "2022-08-18T08:38:40.216Z", + "content": "string", + "sentTime": "2022-08-18T08:38:40.216Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + } + ] } } } } } }, + "description": "Retrieve basic messages by connection id", "tags": [ "MultiTenancy" ], @@ -6319,27 +7552,26 @@ ], "parameters": [ { + "description": "Connection identifier", "in": "path", - "name": "tenantId", + "name": "connectionId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/RecordId" } }, { "in": "path", - "name": "proofRecordId", + "name": "tenantId", "required": true, "schema": { "type": "string" } } ] - } - }, - "/multi-tenancy/proofs/{proofRecordId}/{tenantId}": { - "get": { - "operationId": "GetProofById", + }, + "post": { + "operationId": "SendMessage", "responses": { "200": { "description": "Ok", @@ -6349,12 +7581,16 @@ "examples": { "Example 1": { "value": { + "_tags": { + "role": "sender", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + }, "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834", - "threadId": "0019d466-5eea-4269-8c40-031b4896c5b7", - "protocolVersion": "v1" + "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", + "createdAt": "2022-08-18T08:38:40.216Z", + "content": "string", + "sentTime": "2022-08-18T08:38:40.216Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" } } } @@ -6362,6 +7598,7 @@ } } }, + "description": "Send a basic message to a connection", "tags": [ "MultiTenancy" ], @@ -6372,39 +7609,51 @@ ], "parameters": [ { + "description": "Connection identifier", "in": "path", - "name": "tenantId", + "name": "connectionId", "required": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/RecordId" } }, { "in": "path", - "name": "proofRecordId", + "name": "tenantId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } - ] + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Record_content.string_" + } + } + } + } } }, - "/multi-tenancy/{tenantId}": { - "delete": { - "operationId": "DeleteTenantById", + "/multi-tenancy/verify/{tenantId}": { + "post": { + "operationId": "Verify", "responses": { "200": { - "description": "Ok", + "description": "isValidSignature - true if signature is valid, false otherwise", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_string.any_" + "type": "boolean" } } } } }, + "description": "Verify data using a key", "tags": [ "MultiTenancy" ], @@ -6415,6 +7664,7 @@ ], "parameters": [ { + "description": "Tenant identifier", "in": "path", "name": "tenantId", "required": true, @@ -6422,18 +7672,42 @@ "type": "string" } } - ] + ], + "requestBody": { + "description": "Verify options\ndata - Data has to be in base64 format\npublicKeyBase58 - Public key in base58 format\nsignature - Signature in base64 format", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VerifyDataOptions", + "description": "Verify options\ndata - Data has to be in base64 format\npublicKeyBase58 - Public key in base58 format\nsignature - Signature in base64 format" + } + } + } + } } }, - "/multi-tenancy/did/web/{tenantId}": { + "/multi-tenancy/credential/sign/{tenantId}": { "post": { - "operationId": "CreateDidWeb", + "operationId": "SignCredential", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/Record_string.any_" + }, + { + "$ref": "#/components/schemas/W3cCredentialRecord" + } + ] + } } } } @@ -6454,6 +7728,26 @@ "schema": { "type": "string" } + }, + { + "in": "query", + "name": "storeCredential", + "required": true, + "schema": { + "type": "boolean" + } + }, + { + "in": "query", + "name": "dataTypeToSign", + "required": true, + "schema": { + "type": "string", + "enum": [ + "rawData", + "jsonLd" + ] + } } ], "requestBody": { @@ -6461,16 +7755,24 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DidCreate" + "anyOf": [ + { + "$ref": "#/components/schemas/CustomW3cJsonLdSignCredentialOptions" + }, + { + "$ref": "#/components/schemas/SignDataOptions" + }, + {} + ] } } } } } }, - "/multi-tenancy/did/key{tenantId}": { + "/multi-tenancy/credential/verify/{tenantId}": { "post": { - "operationId": "CreateDidKey", + "operationId": "VerifyCredential", "responses": { "200": { "description": "Ok", @@ -6504,177 +7806,210 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DidCreate" + "anyOf": [ + { + "$ref": "#/components/schemas/SafeW3cJsonLdVerifyCredentialOptions" + }, + {} + ] } } } } } }, - "/multi-tenancy/question-answer/{tenantId}": { - "get": { - "operationId": "GetQuestionAnswerRecords", + "/transactions/endorse": { + "post": { + "operationId": "EndorserTransaction", "responses": { "200": { - "description": "QuestionAnswerRecord[]", + "description": "Ok", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/Record_string.unknown_" + "properties": { + "signedTransaction": {} }, - "type": "array" + "required": [ + "signedTransaction" + ], + "type": "object" } } } } }, - "description": "Retrieve question and answer records by query", "tags": [ - "MultiTenancy" + "EndorserTransaction" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "description": "Tenant identifier", - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" - } - }, - { - "description": "Connection identifier", - "in": "query", - "name": "connectionId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Role of the question", - "in": "query", - "name": "role", - "required": false, - "schema": { - "$ref": "#/components/schemas/QuestionAnswerRole" - } - }, - { - "description": "State of the question", - "in": "query", - "name": "state", - "required": false, - "schema": { - "$ref": "#/components/schemas/QuestionAnswerState" - } - }, - { - "description": "Thread identifier", - "in": "query", - "name": "threadId", - "required": false, - "schema": { - "type": "string" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EndorserTransaction" + } } } - ] + } } }, - "/multi-tenancy/question-answer/question/{connectionId}/{tenantId}": { + "/transactions/set-endorser-role": { "post": { - "operationId": "SendQuestion", + "operationId": "DidNymTransaction", "responses": { "200": { "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/DidCreateResult_DidOperationStateActionBase_" + } } } } }, - "description": "Send a question to a connection", "tags": [ - "MultiTenancy" + "EndorserTransaction" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "description": "Connection identifier", - "in": "path", - "name": "connectionId", - "required": true, - "schema": { - "$ref": "#/components/schemas/RecordId" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DidNymTransaction" + } } - }, - { - "description": "Tenant identifier", - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" + } + } + } + }, + "/transactions/write": { + "post": { + "operationId": "WriteSchemaAndCredDefOnLedger", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } } } + }, + "tags": [ + "EndorserTransaction" + ], + "security": [ + { + "apiKey": [] + } ], + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "properties": { - "detail": { - "type": "string" - }, - "validResponses": { - "items": { - "$ref": "#/components/schemas/ValidResponse" - }, - "type": "array" - }, - "question": { - "type": "string" - } - }, - "required": [ - "validResponses", - "question" - ], - "type": "object" + "$ref": "#/components/schemas/WriteTransaction" } } } } } }, - "/multi-tenancy/question-answer/answer/{id}/{tenantId}": { - "post": { - "operationId": "SendAnswer", + "/dids/{did}": { + "get": { + "operationId": "GetDidRecordByDid", "responses": { "200": { - "description": "Ok", + "description": "DidResolutionResult", "content": { "application/json": { - "schema": {} + "schema": { + "properties": { + "didDocumentMetadata": { + "$ref": "#/components/schemas/DIDDocumentMetadata" + }, + "didResolutionMetadata": { + "$ref": "#/components/schemas/DidResolutionMetadata" + }, + "didDocument": { + "$ref": "#/components/schemas/Record_string.any_" + } + }, + "required": [ + "didDocumentMetadata", + "didResolutionMetadata", + "didDocument" + ], + "type": "object" + }, + "examples": { + "Example 1": { + "value": { + "didDocument": { + "@context": [ + "https://w3id.org/did/v1", + "https://w3id.org/security/suites/ed25519-2018/v1", + "https://w3id.org/security/suites/x25519-2019/v1" + ], + "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", + "verificationMethod": [ + { + "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", + "type": "Ed25519VerificationKey2018", + "controller": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", + "publicKeyBase58": "6fioC1zcDPyPEL19pXRS2E4iJ46zH7xP6uSgAaPdwDrx" + } + ], + "authentication": [ + "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" + ], + "assertionMethod": [ + "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" + ], + "capabilityInvocation": [ + "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" + ], + "capabilityDelegation": [ + "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" + ], + "keyAgreement": [ + { + "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6LSrdqo4M24WRDJj1h2hXxgtDTyzjjKCiyapYVgrhwZAySn", + "type": "X25519KeyAgreementKey2019", + "controller": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", + "publicKeyBase58": "FxfdY3DCQxVZddKGAtSjZdFW9bCCW7oRwZn1NFJ2Tbg2" + } + ] + }, + "didDocumentMetadata": {}, + "didResolutionMetadata": { + "contentType": "application/did+ld+json" + } + } + } + } } } } }, - "description": "Send a answer to question", + "description": "Resolves did and returns did resolution result", "tags": [ - "MultiTenancy" + "Dids" ], "security": [ { @@ -6683,114 +8018,138 @@ ], "parameters": [ { - "description": "Question Answer Record identifier", + "description": "Decentralized Identifier", "in": "path", - "name": "id", + "name": "did", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "$ref": "#/components/schemas/Did" } - }, - { - "description": "Tenant identifier", - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" + } + ] + } + }, + "/dids/write": { + "post": { + "operationId": "WriteDid", + "responses": { + "200": { + "description": "DidResolutionResult", + "content": { + "application/json": { + "schema": {}, + "examples": { + "Example 1": { + "value": { + "did": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", + "didDocument": { + "@context": [ + "https://w3id.org/did/v1", + "https://w3id.org/security/suites/ed25519-2018/v1" + ], + "id": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", + "verificationMethod": [ + { + "id": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7#verkey", + "type": "Ed25519VerificationKey2018", + "controller": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", + "publicKeyBase58": "BapLDK4dEY88vWcQgNbpAPVVP4r3CHs4MvShmmhqkxXM" + } + ], + "authentication": [ + "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7#verkey" + ] + } + } + } + } + } } } + }, + "description": "Did nym registration", + "tags": [ + "Dids" + ], + "security": [ + { + "apiKey": [] + } ], + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_response.string_" + "$ref": "#/components/schemas/DidCreate" } } } } } }, - "/multi-tenancy/question-answer/{id}/{tenantId}": { + "/dids": { "get": { - "operationId": "GetQuestionAnswerRecordById", + "operationId": "GetDids", "responses": { "200": { - "description": "ConnectionRecord", + "description": "Ok", "content": { "application/json": { - "schema": {} + "schema": { + "items": { + "$ref": "#/components/schemas/DidRecord" + }, + "type": "array" + } } } } }, - "description": "Retrieve question answer record by id", "tags": [ - "MultiTenancy" + "Dids" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "description": "Question Answer Record identifier", - "in": "path", - "name": "id", - "required": true, - "schema": { - "$ref": "#/components/schemas/RecordId" - } - }, - { - "description": "Tenant identifier", - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" - } - } - ] + "parameters": [] } }, - "/multi-tenancy/basic-messages/{connectionId}/{tenantId}": { + "/schemas/{schemaId}": { "get": { - "operationId": "GetBasicMessages", + "operationId": "GetSchemaById", "responses": { "200": { - "description": "BasicMessageRecord[]", + "description": "get schema by Id", "content": { "application/json": { - "schema": {}, + "schema": { + "$ref": "#/components/schemas/GetSchemaReturn" + }, "examples": { "Example 1": { - "value": [ - { - "_tags": { - "role": "sender", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - }, - "metadata": {}, - "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", - "createdAt": "2022-08-18T08:38:40.216Z", - "content": "string", - "sentTime": "2022-08-18T08:38:40.216Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - } - ] + "value": { + "ver": "1.0", + "id": "WgWxqztrNooG92RXvxSTWv:2:schema_name:1.0", + "name": "schema", + "version": "1.0", + "attrNames": [ + "string" + ], + "seqNo": 351936 + } } } } } } }, - "description": "Retrieve basic messages by connection id", + "description": "Get schema by schemaId", "tags": [ - "MultiTenancy" + "Schemas" ], "security": [ { @@ -6798,46 +8157,49 @@ } ], "parameters": [ - { - "description": "Connection identifier", - "in": "path", - "name": "connectionId", - "required": true, - "schema": { - "$ref": "#/components/schemas/RecordId" - } - }, { "in": "path", - "name": "tenantId", + "name": "schemaId", "required": true, "schema": { "type": "string" } } ] - }, + } + }, + "/schemas": { "post": { - "operationId": "SendMessage", + "operationId": "CreateSchema", "responses": { "200": { - "description": "Ok", + "description": "get schema", "content": { "application/json": { - "schema": {}, + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/RegisterSchemaReturn" + }, + { + "$ref": "#/components/schemas/RegisterSchemaReturnStateFinished" + } + ] + }, "examples": { "Example 1": { "value": { - "_tags": { - "role": "sender", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + "state": "finished", + "schema": { + "issuerId": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", + "name": "Test Schema", + "version": "1.0.0", + "attrNames": [ + "Name", + "Age" + ] }, - "metadata": {}, - "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", - "createdAt": "2022-08-18T08:38:40.216Z", - "content": "string", - "sentTime": "2022-08-18T08:38:40.216Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + "schemaId": "LRCUFcizUL74AGgLqdJHK7:2:Test Schema:1.0.0" } } } @@ -6845,64 +8207,82 @@ } } }, - "description": "Send a basic message to a connection", + "description": "Create schema", "tags": [ - "MultiTenancy" + "Schemas" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "description": "Connection identifier", - "in": "path", - "name": "connectionId", - "required": true, - "schema": { - "$ref": "#/components/schemas/RecordId" - } - }, - { - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" - } - } - ], + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_content.string_" + "$ref": "#/components/schemas/CreateSchemaInput" } } } } } }, - "/multi-tenancy/verify/{tenantId}": { - "post": { - "operationId": "Verify", + "/credential-definitions/{credentialDefinitionId}": { + "get": { + "operationId": "GetCredentialDefinitionById", "responses": { "200": { - "description": "isValidSignature - true if signature is valid, false otherwise", + "description": "CredDef", "content": { "application/json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/GetCredentialDefinitionReturn" + }, + "examples": { + "Example 1": { + "value": { + "ver": "1.0", + "id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag", + "schemaId": "351936", + "type": "CL", + "tag": "definition", + "value": { + "primary": { + "n": "string", + "s": "string", + "r": { + "master_secret": "string", + "string": "string" + }, + "rctxt": "string", + "z": "string" + }, + "revocation": { + "g": "1 string", + "g_dash": "string", + "h": "string", + "h0": "string", + "h1": "string", + "h2": "string", + "htilde": "string", + "h_cap": "string", + "u": "string", + "pk": "string", + "y": "string" + } + } + } + } } } } } }, - "description": "Verify data using a key", + "description": "Retrieve credential definition by credential definition id", "tags": [ - "MultiTenancy" + "Credential Definitions" ], "security": [ { @@ -6911,127 +8291,168 @@ ], "parameters": [ { - "description": "Tenant identifier", "in": "path", - "name": "tenantId", + "name": "credentialDefinitionId", "required": true, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "Verify options\ndata - Data has to be in base64 format\npublicKeyBase58 - Public key in base58 format\nsignature - Signature in base64 format", - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyDataOptions", - "description": "Verify options\ndata - Data has to be in base64 format\npublicKeyBase58 - Public key in base58 format\nsignature - Signature in base64 format" - } + "$ref": "#/components/schemas/CredentialDefinitionId" } } - } + ] } }, - "/multi-tenancy/credential/sign/{tenantId}": { + "/credential-definitions": { "post": { - "operationId": "SignCredential", + "operationId": "CreateCredentialDefinition", "responses": { "200": { - "description": "Ok", + "description": "CredDef", "content": { "application/json": { "schema": { "anyOf": [ { - "type": "string" - }, - { - "$ref": "#/components/schemas/Record_string.any_" + "$ref": "#/components/schemas/RegisterCredentialDefinitionReturn" }, { - "$ref": "#/components/schemas/W3cCredentialRecord" + "$ref": "#/components/schemas/RegisterCredentialDefinitionReturnStateFinished" } ] + }, + "examples": { + "Example 1": { + "value": { + "ver": "1.0", + "id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag", + "schemaId": "351936", + "type": "CL", + "tag": "definition", + "value": { + "primary": { + "n": "string", + "s": "string", + "r": { + "master_secret": "string", + "string": "string" + }, + "rctxt": "string", + "z": "string" + }, + "revocation": { + "g": "1 string", + "g_dash": "string", + "h": "string", + "h0": "string", + "h1": "string", + "h2": "string", + "htilde": "string", + "h_cap": "string", + "u": "string", + "pk": "string", + "y": "string" + } + } + } + } } } } + }, + "202": { + "description": "Wait for action to complete" } }, + "description": "Creates a new credential definition.", "tags": [ - "MultiTenancy" + "Credential Definitions" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "tenantId", - "required": true, - "schema": { - "type": "string" - } - }, - { - "in": "query", - "name": "storeCredential", - "required": true, - "schema": { - "type": "boolean" - } - }, - { - "in": "query", - "name": "dataTypeToSign", - "required": true, - "schema": { - "type": "string", - "enum": [ - "rawData", - "jsonLd" - ] - } - } - ], + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/CustomW3cJsonLdSignCredentialOptions" + "properties": { + "endorserDid": { + "type": "string" }, - { - "$ref": "#/components/schemas/SignDataOptions" + "endorse": { + "type": "boolean" }, - {} - ] + "tag": { + "type": "string" + }, + "schemaId": { + "$ref": "#/components/schemas/SchemaId" + }, + "issuerId": { + "type": "string" + } + }, + "required": [ + "tag", + "schemaId", + "issuerId" + ], + "type": "object" } } } } } }, - "/multi-tenancy/credential/verify/{tenantId}": { - "post": { - "operationId": "VerifyCredential", + "/credentials": { + "get": { + "operationId": "GetAllCredentials", "responses": { "200": { - "description": "Ok", + "description": "CredentialExchangeRecord[]", "content": { "application/json": { - "schema": {} + "schema": { + "items": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "type": "array" + }, + "examples": { + "Example 1": { + "value": [ + { + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" + } + ] + } + } } } } }, + "description": "Retrieve all credential exchange records", "tags": [ - "MultiTenancy" + "Credentials" ], "security": [ { @@ -7040,213 +8461,204 @@ ], "parameters": [ { - "in": "path", - "name": "tenantId", - "required": true, + "in": "query", + "name": "threadId", + "required": false, "schema": { - "type": "string" + "$ref": "#/components/schemas/ThreadId" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/SafeW3cJsonLdVerifyCredentialOptions" - }, - {} - ] - } + }, + { + "in": "query", + "name": "parentThreadId", + "required": false, + "schema": { + "$ref": "#/components/schemas/ThreadId" + } + }, + { + "in": "query", + "name": "connectionId", + "required": false, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + }, + { + "in": "query", + "name": "state", + "required": false, + "schema": { + "$ref": "#/components/schemas/CredentialState" + } + }, + { + "in": "query", + "name": "role", + "required": false, + "schema": { + "$ref": "#/components/schemas/CredentialRole" } } - } + ] } }, - "/transactions/endorse": { - "post": { - "operationId": "EndorserTransaction", + "/credentials/w3c": { + "get": { + "operationId": "GetAllW3c", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "properties": { - "signedTransaction": {} + "items": { + "$ref": "#/components/schemas/W3cCredentialRecord" }, - "required": [ - "signedTransaction" - ], - "type": "object" + "type": "array" } } } } }, "tags": [ - "EndorserTransaction" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EndorserTransaction" - } - } - } - } + "parameters": [] } }, - "/transactions/set-endorser-role": { - "post": { - "operationId": "DidNymTransaction", + "/credentials/w3c/{id}": { + "get": { + "operationId": "GetW3cById", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DidCreateResult_DidOperationStateActionBase_" + "$ref": "#/components/schemas/W3cCredentialRecord" } } } } }, "tags": [ - "EndorserTransaction" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DidNymTransaction" - } + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { + "type": "string" } } - } + ] } }, - "/transactions/write": { - "post": { - "operationId": "WriteSchemaAndCredDefOnLedger", + "/credentials/{credentialRecordId}": { + "get": { + "operationId": "GetCredentialById", "responses": { "200": { - "description": "Ok", + "description": "CredentialExchangeRecord", "content": { "application/json": { - "schema": {} + "schema": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "examples": { + "Example 1": { + "value": { + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" + } + } + } } } } }, + "description": "Retrieve credential exchange record by credential record id", "tags": [ - "EndorserTransaction" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WriteTransaction" - } + "parameters": [ + { + "in": "path", + "name": "credentialRecordId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } + ] } }, - "/dids/{did}": { - "get": { - "operationId": "GetDidRecordByDid", + "/credentials/propose-credential": { + "post": { + "operationId": "ProposeCredential", "responses": { "200": { - "description": "DidResolutionResult", + "description": "CredentialExchangeRecord", "content": { "application/json": { "schema": { - "properties": { - "didDocumentMetadata": { - "$ref": "#/components/schemas/DIDDocumentMetadata" - }, - "didResolutionMetadata": { - "$ref": "#/components/schemas/DidResolutionMetadata" - }, - "didDocument": { - "$ref": "#/components/schemas/Record_string.any_" - } - }, - "required": [ - "didDocumentMetadata", - "didResolutionMetadata", - "didDocument" - ], - "type": "object" + "$ref": "#/components/schemas/CredentialExchangeRecord" }, "examples": { "Example 1": { "value": { - "didDocument": { - "@context": [ - "https://w3id.org/did/v1", - "https://w3id.org/security/suites/ed25519-2018/v1", - "https://w3id.org/security/suites/x25519-2019/v1" - ], - "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", - "verificationMethod": [ - { - "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", - "type": "Ed25519VerificationKey2018", - "controller": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", - "publicKeyBase58": "6fioC1zcDPyPEL19pXRS2E4iJ46zH7xP6uSgAaPdwDrx" - } - ], - "authentication": [ - "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" - ], - "assertionMethod": [ - "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" - ], - "capabilityInvocation": [ - "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" - ], - "capabilityDelegation": [ - "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL" - ], - "keyAgreement": [ - { - "id": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL#z6LSrdqo4M24WRDJj1h2hXxgtDTyzjjKCiyapYVgrhwZAySn", - "type": "X25519KeyAgreementKey2019", - "controller": "did:key:z6Mkk7yqnGF3YwTrLpqrW6PGsKci7dNqh1CjnvMbzrMerSeL", - "publicKeyBase58": "FxfdY3DCQxVZddKGAtSjZdFW9bCCW7oRwZn1NFJ2Tbg2" - } - ] + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" }, - "didDocumentMetadata": {}, - "didResolutionMetadata": { - "contentType": "application/did+ld+json" - } + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" } } } @@ -7254,59 +8666,60 @@ } } }, - "description": "Resolves did and returns did resolution result", + "description": "Initiate a new credential exchange as holder by sending a propose credential message\nto the connection with a specified connection id.", "tags": [ - "Dids" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "description": "Decentralized Identifier", - "in": "path", - "name": "did", - "required": true, - "schema": { - "$ref": "#/components/schemas/Did" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProposeCredentialOptions" + } } } - ] + } } }, - "/dids/write": { + "/credentials/accept-proposal": { "post": { - "operationId": "WriteDid", + "operationId": "AcceptProposal", "responses": { "200": { - "description": "DidResolutionResult", + "description": "CredentialExchangeRecord", "content": { "application/json": { - "schema": {}, + "schema": { + "$ref": "#/components/schemas/CredentialExchangeRecord" + }, "examples": { "Example 1": { "value": { - "did": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", - "didDocument": { - "@context": [ - "https://w3id.org/did/v1", - "https://w3id.org/security/suites/ed25519-2018/v1" - ], - "id": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", - "verificationMethod": [ - { - "id": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7#verkey", - "type": "Ed25519VerificationKey2018", - "controller": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", - "publicKeyBase58": "BapLDK4dEY88vWcQgNbpAPVVP4r3CHs4MvShmmhqkxXM" - } - ], - "authentication": [ - "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7#verkey" - ] - } + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" } } } @@ -7314,9 +8727,9 @@ } } }, - "description": "Did nym registration", + "description": "Accept a credential proposal as issuer by sending an accept proposal message\nto the connection associated with the credential exchange record.", "tags": [ - "Dids" + "Credentials" ], "security": [ { @@ -7329,124 +8742,170 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DidCreate" + "$ref": "#/components/schemas/AcceptCredentialProposalOptions" } } } } } }, - "/dids": { - "get": { - "operationId": "GetDids", + "/credentials/create-offer": { + "post": { + "operationId": "CreateOffer", "responses": { "200": { - "description": "Ok", + "description": "AgentMessage, CredentialExchangeRecord", "content": { "application/json": { "schema": { - "items": { - "$ref": "#/components/schemas/DidRecord" - }, - "type": "array" + "$ref": "#/components/schemas/CredentialExchangeRecord" + }, + "examples": { + "Example 1": { + "value": { + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" + } + } } } } } }, + "description": "Initiate a new credential exchange as issuer by creating a credential offer\nwithout specifying a connection id", "tags": [ - "Dids" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [] + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOfferOptions" + } + } + } + } } }, - "/schemas/{schemaId}": { - "get": { - "operationId": "GetSchemaById", + "/credentials/create-offer-oob": { + "post": { + "operationId": "CreateOfferOob", "responses": { "200": { - "description": "get schema by Id", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetSchemaReturn" - }, - "examples": { - "Example 1": { - "value": { - "ver": "1.0", - "id": "WgWxqztrNooG92RXvxSTWv:2:schema_name:1.0", - "name": "schema", - "version": "1.0", - "attrNames": [ - "string" - ], - "seqNo": 351936 + "properties": { + "invitationDid": { + "type": "string" + }, + "credentialRequestThId": { + "type": "string" + }, + "outOfBandRecordId": { + "type": "string" + }, + "outOfBandRecord": { + "$ref": "#/components/schemas/Record_string.unknown_" + }, + "invitation": { + "$ref": "#/components/schemas/PlaintextMessage" + }, + "invitationUrl": { + "type": "string" } - } + }, + "required": [ + "invitationDid", + "credentialRequestThId", + "outOfBandRecordId", + "outOfBandRecord", + "invitation", + "invitationUrl" + ], + "type": "object" } } } } }, - "description": "Get schema by schemaId", "tags": [ - "Schemas" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "schemaId", - "required": true, - "schema": { - "type": "string" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOfferOobOptions" + } } } - ] + } } }, - "/schemas": { + "/credentials/accept-offer": { "post": { - "operationId": "CreateSchema", + "operationId": "AcceptOffer", "responses": { "200": { - "description": "get schema", + "description": "CredentialExchangeRecord", "content": { "application/json": { "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/RegisterSchemaReturn" - }, - { - "$ref": "#/components/schemas/RegisterSchemaReturnStateFinished" - } - ] + "$ref": "#/components/schemas/CredentialExchangeRecord" }, "examples": { "Example 1": { "value": { - "state": "finished", - "schema": { - "issuerId": "did:indy:bcovrin:testnet:LRCUFcizUL74AGgLqdJHK7", - "name": "Test Schema", - "version": "1.0.0", - "attrNames": [ - "Name", - "Age" - ] + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" }, - "schemaId": "LRCUFcizUL74AGgLqdJHK7:2:Test Schema:1.0.0" + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" + } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" } } } @@ -7454,9 +8913,9 @@ } } }, - "description": "Create schema", + "description": "Accept a credential offer as holder by sending an accept offer message\nto the connection associated with the credential exchange record.", "tags": [ - "Schemas" + "Credentials" ], "security": [ { @@ -7469,57 +8928,45 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateSchemaInput" + "$ref": "#/components/schemas/CredentialOfferOptions" } } } } } }, - "/credential-definitions/{credentialDefinitionId}": { - "get": { - "operationId": "GetCredentialDefinitionById", + "/credentials/accept-request": { + "post": { + "operationId": "AcceptRequest", "responses": { "200": { - "description": "CredDef", + "description": "CredentialExchangeRecord", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetCredentialDefinitionReturn" + "$ref": "#/components/schemas/CredentialExchangeRecord" }, "examples": { "Example 1": { "value": { - "ver": "1.0", - "id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag", - "schemaId": "351936", - "type": "CL", - "tag": "definition", - "value": { - "primary": { - "n": "string", - "s": "string", - "r": { - "master_secret": "string", - "string": "string" - }, - "rctxt": "string", - "z": "string" - }, - "revocation": { - "g": "1 string", - "g_dash": "string", - "h": "string", - "h0": "string", - "h1": "string", - "h2": "string", - "htilde": "string", - "h_cap": "string", - "u": "string", - "pk": "string", - "y": "string" + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" } - } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" } } } @@ -7527,91 +8974,70 @@ } } }, - "description": "Retrieve credential definition by credential definition id", + "description": "Accept a credential request as issuer by sending an accept request message\nto the connection associated with the credential exchange record.", "tags": [ - "Credential Definitions" + "Credentials" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "credentialDefinitionId", - "required": true, - "schema": { - "$ref": "#/components/schemas/CredentialDefinitionId" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AcceptCredentialRequestOptions" + } } } - ] + } } }, - "/credential-definitions": { + "/credentials/accept-credential": { "post": { - "operationId": "CreateCredentialDefinition", + "operationId": "AcceptCredential", "responses": { "200": { - "description": "CredDef", + "description": "CredentialExchangeRecord", "content": { "application/json": { "schema": { - "anyOf": [ - { - "$ref": "#/components/schemas/RegisterCredentialDefinitionReturn" - }, - { - "$ref": "#/components/schemas/RegisterCredentialDefinitionReturnStateFinished" - } - ] + "$ref": "#/components/schemas/CredentialExchangeRecord" }, "examples": { "Example 1": { "value": { - "ver": "1.0", - "id": "WgWxqztrNooG92RXvxSTWv:3:CL:20:tag", - "schemaId": "351936", - "type": "CL", - "tag": "definition", - "value": { - "primary": { - "n": "string", - "s": "string", - "r": { - "master_secret": "string", - "string": "string" - }, - "rctxt": "string", - "z": "string" - }, - "revocation": { - "g": "1 string", - "g_dash": "string", - "h": "string", - "h0": "string", - "h1": "string", - "h2": "string", - "htilde": "string", - "h_cap": "string", - "u": "string", - "pk": "string", - "y": "string" + "_tags": { + "state": "offer-sent", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" + }, + "metadata": { + "_internal/indyCredential": { + "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", + "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" } - } + }, + "credentials": [], + "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", + "createdAt": "2022-01-01T00:00:00.000Z", + "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", + "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", + "credentialAttributes": [], + "protocolVersion": "v1" } } } } } - }, - "202": { - "description": "Wait for action to complete" } }, - "description": "Creates a new credential definition.", + "description": "Accept a credential as holder by sending an accept credential message\nto the connection associated with the credential exchange record.", "tags": [ - "Credential Definitions" + "Credentials" ], "security": [ { @@ -7624,41 +9050,55 @@ "content": { "application/json": { "schema": { - "properties": { - "endorserDid": { - "type": "string" - }, - "endorse": { - "type": "boolean" - }, - "tag": { - "type": "string" - }, - "schemaId": { - "$ref": "#/components/schemas/SchemaId" - }, - "issuerId": { - "type": "string" - } - }, - "required": [ - "tag", - "schemaId", - "issuerId" - ], - "type": "object" + "$ref": "#/components/schemas/AcceptCredential" } } } } } }, - "/credentials": { + "/credentials/{credentialRecordId}/form-data": { "get": { - "operationId": "GetAllCredentials", + "operationId": "CredentialFormData", "responses": { "200": { - "description": "CredentialExchangeRecord[]", + "description": "credentialRecord", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetCredentialFormatDataReturn__40_LegacyIndyCredentialFormat-or-JsonLdCredentialFormat-or-AnonCredsCredentialFormat_41_-Array_" + } + } + } + } + }, + "description": "Return credentialRecord", + "tags": [ + "Credentials" + ], + "security": [ + { + "apiKey": [] + } + ], + "parameters": [ + { + "in": "path", + "name": "credentialRecordId", + "required": true, + "schema": { + "type": "string" + } + } + ] + } + }, + "/connections": { + "get": { + "operationId": "GetAllConnections", + "responses": { + "200": { + "description": "ConnectionRecord[]", "content": { "application/json": { "schema": { @@ -7672,23 +9112,18 @@ "value": [ { "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" }, - "credentials": [], + "metadata": {}, "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" } ] } @@ -7697,9 +9132,9 @@ } } }, - "description": "Retrieve all credential exchange records", + "description": "Retrieve all connections records", "tags": [ - "Credentials" + "Connections" ], "security": [ { @@ -7709,104 +9144,53 @@ "parameters": [ { "in": "query", - "name": "threadId", + "name": "outOfBandId", "required": false, "schema": { - "$ref": "#/components/schemas/ThreadId" + "type": "string" } }, { + "description": "Alias", "in": "query", - "name": "parentThreadId", + "name": "alias", "required": false, "schema": { - "$ref": "#/components/schemas/ThreadId" + "type": "string" } }, { + "description": "Connection state", "in": "query", - "name": "connectionId", + "name": "state", "required": false, "schema": { - "$ref": "#/components/schemas/RecordId" + "$ref": "#/components/schemas/DidExchangeState" } }, { + "description": "My DID", "in": "query", - "name": "state", + "name": "myDid", "required": false, "schema": { - "$ref": "#/components/schemas/CredentialState" + "type": "string" } }, { + "description": "Their DID", "in": "query", - "name": "role", + "name": "theirDid", "required": false, "schema": { - "$ref": "#/components/schemas/CredentialRole" - } - } - ] - } - }, - "/credentials/w3c": { - "get": { - "operationId": "GetAllW3c", - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/W3cCredentialRecord" - }, - "type": "array" - } - } - } - } - }, - "tags": [ - "Credentials" - ], - "security": [ - { - "apiKey": [] - } - ], - "parameters": [] - } - }, - "/credentials/w3c/{id}": { - "get": { - "operationId": "GetW3cById", - "responses": { - "200": { - "description": "Ok", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/W3cCredentialRecord" - } - } + "type": "string" } - } - }, - "tags": [ - "Credentials" - ], - "security": [ - { - "apiKey": [] - } - ], - "parameters": [ + }, { - "in": "path", - "name": "id", - "required": true, + "description": "Their label", + "in": "query", + "name": "theirLabel", + "required": false, "schema": { "type": "string" } @@ -7814,12 +9198,12 @@ ] } }, - "/credentials/{credentialRecordId}": { + "/connections/{connectionId}": { "get": { - "operationId": "GetCredentialById", + "operationId": "GetConnectionById", "responses": { "200": { - "description": "CredentialExchangeRecord", + "description": "ConnectionRecord", "content": { "application/json": { "schema": { @@ -7829,23 +9213,18 @@ "Example 1": { "value": { "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" }, - "credentials": [], + "metadata": {}, "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" } } } @@ -7853,9 +9232,9 @@ } } }, - "description": "Retrieve credential exchange record by credential record id", + "description": "Retrieve connection record by connection id", "tags": [ - "Credentials" + "Connections" ], "security": [ { @@ -7864,109 +9243,72 @@ ], "parameters": [ { + "description": "Connection identifier", "in": "path", - "name": "credentialRecordId", + "name": "connectionId", "required": true, "schema": { "$ref": "#/components/schemas/RecordId" } } ] - } - }, - "/credentials/propose-credential": { - "post": { - "operationId": "ProposeCredential", + }, + "delete": { + "operationId": "DeleteConnection", "responses": { - "200": { - "description": "CredentialExchangeRecord", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } - }, - "credentials": [], - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" - } - } - } - } - } + "204": { + "description": "No content" } }, - "description": "Initiate a new credential exchange as holder by sending a propose credential message\nto the connection with a specified connection id.", + "description": "Deletes a connection record from the connection repository.", "tags": [ - "Credentials" + "Connections" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProposeCredentialOptions" - } + "parameters": [ + { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } + ] } }, - "/credentials/accept-proposal": { + "/connections/{connectionId}/accept-request": { "post": { - "operationId": "AcceptProposal", + "operationId": "AcceptRequest", "responses": { "200": { - "description": "CredentialExchangeRecord", + "description": "ConnectionRecord", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" + "$ref": "#/components/schemas/Record_string.unknown_" }, "examples": { "Example 1": { "value": { "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" }, - "credentials": [], + "metadata": {}, "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" } } } @@ -7974,60 +9316,55 @@ } } }, - "description": "Accept a credential proposal as issuer by sending an accept proposal message\nto the connection associated with the credential exchange record.", + "description": "Accept a connection request as inviter by sending a connection response message\nfor the connection with the specified connection id.\n\nThis is not needed when auto accepting of connection is enabled.", "tags": [ - "Credentials" + "Connections" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AcceptCredentialProposalOptions" - } + "parameters": [ + { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } + ] } }, - "/credentials/create-offer": { + "/connections/{connectionId}/accept-response": { "post": { - "operationId": "CreateOffer", + "operationId": "AcceptResponse", "responses": { "200": { - "description": "AgentMessage, CredentialExchangeRecord", + "description": "ConnectionRecord", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" + "$ref": "#/components/schemas/Record_string.unknown_" }, "examples": { "Example 1": { "value": { "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", + "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" }, - "credentials": [], + "metadata": {}, "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" + "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", + "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", + "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" } } } @@ -8035,185 +9372,139 @@ } } }, - "description": "Initiate a new credential exchange as issuer by creating a credential offer\nwithout specifying a connection id", + "description": "Accept a connection response as invitee by sending a trust ping message\nfor the connection with the specified connection id.\n\nThis is not needed when auto accepting of connection is enabled.", "tags": [ - "Credentials" + "Connections" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOfferOptions" - } + "parameters": [ + { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } + ] } }, - "/credentials/create-offer-oob": { - "post": { - "operationId": "CreateOfferOob", + "/url/{invitationId}": { + "get": { + "operationId": "GetInvitation", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "properties": { - "invitationDid": { - "type": "string" - }, - "credentialRequestThId": { - "type": "string" - }, - "outOfBandRecordId": { - "type": "string" - }, - "outOfBandRecord": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "invitation": { - "$ref": "#/components/schemas/PlaintextMessage" - }, - "invitationUrl": { - "type": "string" - } - }, - "required": [ - "invitationDid", - "credentialRequestThId", - "outOfBandRecordId", - "outOfBandRecord", - "invitation", - "invitationUrl" - ], - "type": "object" + "$ref": "#/components/schemas/PlaintextMessage" } } } } }, "tags": [ - "Credentials" - ], - "security": [ - { - "apiKey": [] - } + "Connections" ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOfferOobOptions" - } + "security": [], + "parameters": [ + { + "in": "path", + "name": "invitationId", + "required": true, + "schema": { + "type": "string" } } - } + ] } }, - "/credentials/accept-offer": { - "post": { - "operationId": "AcceptOffer", + "/basic-messages/{connectionId}": { + "get": { + "operationId": "GetBasicMessages", "responses": { "200": { - "description": "CredentialExchangeRecord", + "description": "BasicMessageRecord[]", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" + "items": { + "$ref": "#/components/schemas/BasicMessageRecord" + }, + "type": "array" }, "examples": { "Example 1": { - "value": { - "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } - }, - "credentials": [], - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" - } + "value": [ + { + "_tags": { + "role": "sender", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + }, + "metadata": {}, + "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", + "createdAt": "2022-08-18T08:38:40.216Z", + "content": "string", + "sentTime": "2022-08-18T08:38:40.216Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" + } + ] } } } } } }, - "description": "Accept a credential offer as holder by sending an accept offer message\nto the connection associated with the credential exchange record.", + "description": "Retrieve basic messages by connection id", "tags": [ - "Credentials" + "Basic Messages" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CredentialOfferOptions" - } + "parameters": [ + { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" } } - } - } - }, - "/credentials/accept-request": { + ] + }, "post": { - "operationId": "AcceptRequest", + "operationId": "SendMessage", "responses": { "200": { - "description": "CredentialExchangeRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" + "$ref": "#/components/schemas/BasicMessageRecord" }, "examples": { "Example 1": { "value": { "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } + "role": "sender", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" }, - "credentials": [], - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" + "metadata": {}, + "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", + "createdAt": "2022-08-18T08:38:40.216Z", + "content": "string", + "sentTime": "2022-08-18T08:38:40.216Z", + "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" } } } @@ -8221,167 +9512,135 @@ } } }, - "description": "Accept a credential request as issuer by sending an accept request message\nto the connection associated with the credential exchange record.", + "description": "Send a basic message to a connection", "tags": [ - "Credentials" + "Basic Messages" ], "security": [ { "apiKey": [] } ], - "parameters": [], + "parameters": [ + { + "description": "Connection identifier", + "in": "path", + "name": "connectionId", + "required": true, + "schema": { + "$ref": "#/components/schemas/RecordId" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AcceptCredentialRequestOptions" + "$ref": "#/components/schemas/Record_content.string_" } } } } } }, - "/credentials/accept-credential": { - "post": { - "operationId": "AcceptCredential", + "/agent": { + "get": { + "operationId": "GetAgentInfo", "responses": { "200": { - "description": "CredentialExchangeRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CredentialExchangeRecord" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "state": "offer-sent", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b" - }, - "metadata": { - "_internal/indyCredential": { - "credentialDefinitionId": "q7ATwTYbQDgiigVijUAej:3:CL:318187:latest", - "schemaId": "q7ATwTYbQDgiigVijUAej:2:Employee Badge:1.0" - } - }, - "credentials": [], - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "connectionId": "ac6d0fdd-0db8-4f52-8a3d-de7ff8ddc14b", - "threadId": "82701488-b43c-4d7b-9244-4bb204a7ae26", - "credentialAttributes": [], - "protocolVersion": "v1" - } - } + "$ref": "#/components/schemas/AgentInfo" } } } } }, - "description": "Accept a credential as holder by sending an accept credential message\nto the connection associated with the credential exchange record.", + "description": "Retrieve basic agent information", "tags": [ - "Credentials" + "Agent" + ], + "security": [], + "parameters": [] + } + }, + "/agent/wallet": { + "delete": { + "operationId": "DeleteWallet", + "responses": { + "204": { + "description": "No content" + } + }, + "description": "Delete wallet", + "tags": [ + "Agent" ], "security": [ { "apiKey": [] } ], - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AcceptCredential" - } - } - } - } + "parameters": [] } }, - "/credentials/{credentialRecordId}/form-data": { - "get": { - "operationId": "CredentialFormData", + "/openid4vc/issuer": { + "post": { + "operationId": "CreateIssuer", "responses": { "200": { - "description": "credentialRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetCredentialFormatDataReturn__40_LegacyIndyCredentialFormat-or-JsonLdCredentialFormat-or-AnonCredsCredentialFormat_41_-Array_" + "$ref": "#/components/schemas/OpenId4VcIssuerRecord" } } } } }, - "description": "Return credentialRecord", + "description": "Creates an issuer with issuer metadata.", "tags": [ - "Credentials" + "oid4vc issuers" ], "security": [ { "apiKey": [] } ], - "parameters": [ - { - "in": "path", - "name": "credentialRecordId", - "required": true, - "schema": { - "type": "string" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": {} } } - ] - } - }, - "/connections": { - "get": { - "operationId": "GetAllConnections", - "responses": { - "200": { - "description": "ConnectionRecord[]", - "content": { - "application/json": { - "schema": { - "items": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "type": "array" - }, - "examples": { - "Example 1": { - "value": [ - { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - ] - } + } + }, + "get": { + "operationId": "GetIssuersByQuery", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/OpenId4VcIssuerRecord" + }, + "type": "array" } } } } }, - "description": "Retrieve all connections records", + "description": "Query issuers by optional publicIssuerId.", "tags": [ - "Connections" + "oid4vc issuers" ], "security": [ { @@ -8391,52 +9650,7 @@ "parameters": [ { "in": "query", - "name": "outOfBandId", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Alias", - "in": "query", - "name": "alias", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Connection state", - "in": "query", - "name": "state", - "required": false, - "schema": { - "$ref": "#/components/schemas/DidExchangeState" - } - }, - { - "description": "My DID", - "in": "query", - "name": "myDid", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Their DID", - "in": "query", - "name": "theirDid", - "required": false, - "schema": { - "type": "string" - } - }, - { - "description": "Their label", - "in": "query", - "name": "theirLabel", + "name": "publicIssuerId", "required": false, "schema": { "type": "string" @@ -8445,43 +9659,24 @@ ] } }, - "/connections/{connectionId}": { - "get": { - "operationId": "GetConnectionById", + "/openid4vc/issuer/{publicIssuerId}": { + "put": { + "operationId": "UpdateIssuerMetadata", "responses": { "200": { - "description": "ConnectionRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } + "$ref": "#/components/schemas/OpenId4VcIssuerRecord" } } } } }, - "description": "Retrieve connection record by connection id", + "description": "Updates issuer metadata for a given publicIssuerId.", "tags": [ - "Connections" + "oid4vc issuers" ], "security": [ { @@ -8490,26 +9685,42 @@ ], "parameters": [ { - "description": "Connection identifier", "in": "path", - "name": "connectionId", + "name": "publicIssuerId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } - ] + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateIssuerRecordOptions" + } + } + } + } }, - "delete": { - "operationId": "DeleteConnection", + "get": { + "operationId": "GetIssuer", "responses": { - "204": { - "description": "No content" + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenId4VcIssuerRecord" + } + } + } } }, - "description": "Deletes a connection record from the connection repository.", + "description": "Returns a specific issuer by publicIssuerId.", "tags": [ - "Connections" + "oid4vc issuers" ], "security": [ { @@ -8518,54 +9729,35 @@ ], "parameters": [ { - "description": "Connection identifier", "in": "path", - "name": "connectionId", + "name": "publicIssuerId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] } }, - "/connections/{connectionId}/accept-request": { - "post": { - "operationId": "AcceptRequest", + "/openid4vc/issuer/{issuerId}/metadata": { + "get": { + "operationId": "GetIssuerAgentMetaData", "responses": { "200": { - "description": "ConnectionRecord", + "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } + "type": "number", + "format": "double" } } } } }, - "description": "Accept a connection request as inviter by sending a connection response message\nfor the connection with the specified connection id.\n\nThis is not needed when auto accepting of connection is enabled.", + "description": "Returns metadata for a specific issuer.", "tags": [ - "Connections" + "oid4vc issuers" ], "security": [ { @@ -8574,54 +9766,27 @@ ], "parameters": [ { - "description": "Connection identifier", "in": "path", - "name": "connectionId", + "name": "issuerId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] } }, - "/connections/{connectionId}/accept-response": { - "post": { - "operationId": "AcceptResponse", + "/openid4vc/issuer/{id}": { + "delete": { + "operationId": "DeleteIssuer", "responses": { - "200": { - "description": "ConnectionRecord", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Record_string.unknown_" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationKey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d", - "verkey": "9HG4rJFpLiWf56MWxHj9rgdpErFzim2zEpHuxy1dw7oz" - }, - "metadata": {}, - "id": "821f9b26-ad04-4f56-89b6-e2ef9c72b36e", - "createdAt": "2022-01-01T00:00:00.000Z", - "did": "did:peer:1zQmfQh1T3rSqarP2FZ37uKjdQHPKFdVyo2mGiAPHZ8Ep7hv", - "invitationDid": "did:peer:2.SeyJzIjoiaHR0cHM6Ly9kYTIzLTg5LTIwLTE2Mi0xNDYubmdyb2suaW8iLCJ0IjoiZGlkLWNvbW11bmljYXRpb24iLCJwcmlvcml0eSI6MCwicmVjaXBpZW50S2V5cyI6WyJkaWQ6a2V5Ono2TWtualg3U1lXRmdHMThCYkNEZHJnemhuQnA0UlhyOGVITHZxQ3FvRXllckxiTiN6Nk1rbmpYN1NZV0ZnRzE4QmJDRGRyZ3pobkJwNFJYcjhlSEx2cUNxb0V5ZXJMYk4iXSwiciI6W119", - "outOfBandId": "edbc89fe-785f-4774-a288-46012486881d" - } - } - } - } - } + "204": { + "description": "No content" } }, - "description": "Accept a connection response as invitee by sending a trust ping message\nfor the connection with the specified connection id.\n\nThis is not needed when auto accepting of connection is enabled.", + "description": "Deletes a specific issuer by record id.", "tags": [ - "Connections" + "oid4vc issuers" ], "security": [ { @@ -8630,152 +9795,109 @@ ], "parameters": [ { - "description": "Connection identifier", "in": "path", - "name": "connectionId", + "name": "id", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] } }, - "/url/{invitationId}": { - "get": { - "operationId": "GetInvitation", + "/openid4vc/verifier": { + "post": { + "operationId": "CreateVerifier", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PlaintextMessage" + "$ref": "#/components/schemas/OpenId4VcVerifierRecord" } } } } }, + "description": "Create a new verifier and store the verifier record", "tags": [ - "Connections" + "oid4vc verifiers" ], "security": [], - "parameters": [ - { - "in": "path", - "name": "invitationId", - "required": true, - "schema": { - "type": "string" + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenId4VcSiopCreateVerifierOptions" + } } } - ] - } - }, - "/basic-messages/{connectionId}": { + } + }, "get": { - "operationId": "GetBasicMessages", + "operationId": "GetVerifiersByQuery", "responses": { "200": { - "description": "BasicMessageRecord[]", + "description": "Ok", "content": { "application/json": { "schema": { "items": { - "$ref": "#/components/schemas/BasicMessageRecord" + "$ref": "#/components/schemas/OpenId4VcVerifierRecord" }, "type": "array" - }, - "examples": { - "Example 1": { - "value": [ - { - "_tags": { - "role": "sender", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - }, - "metadata": {}, - "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", - "createdAt": "2022-08-18T08:38:40.216Z", - "content": "string", - "sentTime": "2022-08-18T08:38:40.216Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - } - ] - } } } } } }, - "description": "Retrieve basic messages by connection id", + "description": "Get verifiers by query", "tags": [ - "Basic Messages" - ], - "security": [ - { - "apiKey": [] - } + "oid4vc verifiers" ], + "security": [], "parameters": [ { - "description": "Connection identifier", - "in": "path", - "name": "connectionId", - "required": true, + "in": "query", + "name": "publicVerifierId", + "required": false, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ] - }, - "post": { - "operationId": "SendMessage", + } + }, + "/openid4vc/verifier/{publicVerifierId}": { + "put": { + "operationId": "UpdateVerifierMetadata", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BasicMessageRecord" - }, - "examples": { - "Example 1": { - "value": { - "_tags": { - "role": "sender", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - }, - "metadata": {}, - "id": "74bcf865-1fdc-45b4-b517-9def02dfd25f", - "createdAt": "2022-08-18T08:38:40.216Z", - "content": "string", - "sentTime": "2022-08-18T08:38:40.216Z", - "connectionId": "2aecf74c-3073-4f98-9acb-92415d096834" - } - } + "$ref": "#/components/schemas/OpenId4VcVerifierRecord" } } } } }, - "description": "Send a basic message to a connection", + "description": "Update verifier metadata", "tags": [ - "Basic Messages" - ], - "security": [ - { - "apiKey": [] - } + "oid4vc verifiers" ], + "security": [], "parameters": [ { - "description": "Connection identifier", "in": "path", - "name": "connectionId", + "name": "publicVerifierId", "required": true, "schema": { - "$ref": "#/components/schemas/RecordId" + "type": "string" } } ], @@ -8784,54 +9906,66 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Record_content.string_" + "$ref": "#/components/schemas/OpenId4VcUpdateVerifierRecordOptions" } } } } - } - }, - "/agent": { + }, "get": { - "operationId": "GetAgentInfo", + "operationId": "GetVerifier", "responses": { "200": { "description": "Ok", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AgentInfo" + "$ref": "#/components/schemas/OpenId4VcVerifierRecord" } } } } }, - "description": "Retrieve basic agent information", + "description": "Get single verifier by ID", "tags": [ - "Agent" + "oid4vc verifiers" ], "security": [], - "parameters": [] + "parameters": [ + { + "in": "path", + "name": "publicVerifierId", + "required": true, + "schema": { + "type": "string" + } + } + ] } }, - "/agent/wallet": { + "/openid4vc/verifier/{verifierId}": { "delete": { - "operationId": "DeleteWallet", + "operationId": "DeleteVerifier", "responses": { "204": { "description": "No content" } }, - "description": "Delete wallet", + "description": "Delete verifier by ID", "tags": [ - "Agent" + "oid4vc verifiers" ], - "security": [ + "security": [], + "parameters": [ { - "apiKey": [] + "in": "path", + "name": "verifierId", + "required": true, + "schema": { + "type": "string" + } } - ], - "parameters": [] + ] } }, "/question-answer": { @@ -9051,6 +10185,234 @@ } ] } + }, + "/openid4vc/holder/sd-jwt-vcs": { + "get": { + "operationId": "GetSdJwtCredentials", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/SdJwtVcRecord" + }, + "type": "array" + } + } + } + } + }, + "description": "Get SdJwt type of credentials", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [] + } + }, + "/openid4vc/holder/mdoc-vcs": { + "get": { + "operationId": "GetMdocCredentials", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/MdocRecord" + }, + "type": "array" + } + } + } + } + }, + "description": "Fetch all mso mdoc credentials in wallet", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [] + } + }, + "/openid4vc/holder/resolve-credential-offer": { + "post": { + "operationId": "ResolveCredOffer", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "description": "Resolve a credential offer", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResolveCredentialOfferBody" + } + } + } + } + } + }, + "/openid4vc/holder/authorization-request": { + "post": { + "operationId": "RequestAuthorizationForCredential", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "properties": { + "codeVerifier": { + "type": "string" + }, + "authorizationRequestUrl": { + "type": "string" + }, + "actionToTake": { + "type": "string" + } + }, + "required": [ + "codeVerifier", + "authorizationRequestUrl", + "actionToTake" + ], + "type": "object" + } + } + } + } + }, + "description": "Initiate an OID4VCI authorization request", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AuthorizeRequestCredentialOffer" + } + } + } + } + } + }, + "/openid4vc/holder/request-credential": { + "post": { + "operationId": "RequestCredential", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": { + "items": {}, + "type": "array" + } + } + } + } + }, + "description": "Initiates a token request, then requests credentials from issuer", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RequestCredentialBody" + } + } + } + } + } + }, + "/openid4vc/holder/resolve-proof-request": { + "post": { + "operationId": "ResolveProofRequest", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "description": "Resolve a proof request", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResolveProofRequest" + } + } + } + } + } + }, + "/openid4vc/holder/accept-proof-request": { + "post": { + "operationId": "AcceptProofRequest", + "responses": { + "200": { + "description": "Ok", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "description": "Accept a proof request", + "tags": [ + "oid4vc holders" + ], + "security": [], + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResolveProofRequest" + } + } + } + } + } } }, "servers": [ diff --git a/src/securityMiddleware.ts b/src/securityMiddleware.ts index 75654c49..e412d381 100644 --- a/src/securityMiddleware.ts +++ b/src/securityMiddleware.ts @@ -24,7 +24,7 @@ export class SecurityMiddleware { // Check if authentication should be skipped for this route or controller const skipAuthentication = pathsToSkipAuthentication.some( - ({ path, method }) => routePath.includes(path) && requestMethod === method + ({ path, method }) => routePath.includes(path) && requestMethod === method, ) if (skipAuthentication) { diff --git a/src/utils/TsyringeAdapter.ts b/src/utils/TsyringeAdapter.ts index 4d79391f..61319b32 100644 --- a/src/utils/TsyringeAdapter.ts +++ b/src/utils/TsyringeAdapter.ts @@ -3,7 +3,7 @@ import type { IocContainer } from '@tsoa/runtime' import { container } from 'tsyringe' export const iocContainer: IocContainer = { - get: (controller: Parameters[0]): T | Promise => { - return container.resolve(controller as any) + get: (controller: any): T => { + return container.resolve(controller) }, } diff --git a/src/utils/constant.ts b/src/utils/constant.ts new file mode 100644 index 00000000..03741d0a --- /dev/null +++ b/src/utils/constant.ts @@ -0,0 +1 @@ +export const X509_CERTIFICATE_RECORD = 'X509_CERTIFICATE' diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 80e3a60e..0f978543 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ + import type { ILogObject } from 'tslog' import { LogLevel, BaseLogger } from '@credo-ts/core' @@ -14,6 +15,7 @@ function logToTransport(logObject: ILogObject) { export class TsLogger extends BaseLogger { private logger: Logger + // Map our log levels to tslog levels private tsLogLevelMap = { [LogLevel.test]: 'silly', [LogLevel.trace]: 'trace', @@ -24,12 +26,12 @@ export class TsLogger extends BaseLogger { [LogLevel.fatal]: 'fatal', } as const - public constructor(logLevel: LogLevel, private readonly serviceName = 'credo-controller-service' as string) { + public constructor(logLevel: LogLevel, name?: string) { super(logLevel) this.logger = new Logger({ - name: serviceName, - minLevel: logLevel === LogLevel.off ? undefined : this.tsLogLevelMap[logLevel], + name, + minLevel: this.logLevel == LogLevel.off ? undefined : this.tsLogLevelMap[this.logLevel], ignoreStackLevels: 5, attachedTransports: [ { @@ -42,6 +44,7 @@ export class TsLogger extends BaseLogger { error: logToTransport, fatal: logToTransport, }, + // always log to file minLevel: 'silly', }, ], @@ -51,7 +54,7 @@ export class TsLogger extends BaseLogger { private log( level: Exclude, message: string | { message: string }, - data?: Record + data?: Record, ): void { const tsLogLevel = this.tsLogLevelMap[level] @@ -90,7 +93,6 @@ export class TsLogger extends BaseLogger { body: logMessage, severityText: LogLevel[level].toUpperCase(), attributes: { - source: this.serviceName, ...(data || {}), ...(errorDetails ? { error: errorDetails } : {}), }, diff --git a/src/utils/oid4vc-agent.ts b/src/utils/oid4vc-agent.ts new file mode 100644 index 00000000..ff230cea --- /dev/null +++ b/src/utils/oid4vc-agent.ts @@ -0,0 +1,272 @@ +import type { Did, DisclosureFrame } from '../controllers/types' +import type { + OpenId4VcCredentialHolderBinding, + OpenId4VcCredentialHolderDidBinding, + OpenId4VciCredentialRequestToCredentialMapper, + OpenId4VciSignMdocCredentials, + OpenId4VciSignSdJwtCredentials, + OpenId4VciSignW3cCredentials, +} from '@credo-ts/openid4vc' + +import { DidsApi } from '@credo-ts/core' +import { + ClaimFormat, + CredoError, + JsonTransformer, + W3cCredential, + W3cCredentialSubject, + W3cIssuer, + X509ModuleConfig, + parseDid, + w3cDate, +} from '@credo-ts/core' +import { OpenId4VciCredentialFormatProfile } from '@credo-ts/openid4vc' + +export function getCredentialRequestToCredentialMapper(): OpenId4VciCredentialRequestToCredentialMapper { + return async ({ + holderBindings, + issuanceSession, + verification, + credentialConfigurationIds, + credentialConfigurationsSupported: supported, + agentContext, + authorization, + }) => { + const issuanceMetadata = issuanceSession.issuanceMetadata + const issuerDid = issuanceMetadata?.['issuerDid'] as string | undefined + const issuerx509certificate = issuanceMetadata?.['issuerx509certificate'] as string[] | undefined + + if (!issuerDid && !issuerx509certificate) { + throw new Error('Either issuerDid or issuerx509certificate must be provided') + } + + let issuerDidUrl: string | undefined = '' + if (issuerDid) { + const didsApi = await agentContext.dependencyManager.resolve(DidsApi) + const didDocument = await didsApi.resolveDidDocument(issuerDid) + + // Set the first verificationMethod as backup, in case we won't find a match + if (!issuerDidUrl && didDocument.verificationMethod?.[0].id) { + issuerDidUrl = didDocument.verificationMethod?.[0].id + } + } + + if (!issuerDidUrl && !issuerx509certificate) { + throw new Error('No matching verification method found') + } + + if (!issuanceMetadata?.['credentials']) throw new Error('credential payload is not provided') + + const allCredentialPayload = issuanceMetadata?.['credentials'] + + const credentialConfigurationId = credentialConfigurationIds[0] + + // Returns an array of all matching credentials + const credentialPayload = Array.isArray(allCredentialPayload) + ? allCredentialPayload.filter((c) => c.credentialSupportedId === credentialConfigurationId) + : [] + const credentialConfiguration = supported[credentialConfigurationId] + + if (credentialConfigurationId === 'PresentationAuthorization') { + const trustedCertificates = agentContext.dependencyManager.resolve(X509ModuleConfig).trustedCertificates + if (trustedCertificates?.length !== 1) { + throw new Error(`Expected exactly one trusted certificate. Received ${trustedCertificates?.length}.`) + } + + return { + credentialConfigurationId, + format: ClaimFormat.SdJwtVc, + credentials: holderBindings.map((holderBinding) => ({ + payload: { + vct: credentialConfiguration.vct, + authorized_user: authorization.accessToken.payload.sub, + }, + holder: holderBinding, + issuer: + holderBindings[0].method === 'did' + ? { + method: 'did', + didUrl: issuerDidUrl ?? '', + } + : { method: 'x5c', x5c: trustedCertificates, issuer: 'ISSUER_HOST ' }, + })), + } satisfies OpenId4VciSignSdJwtCredentials + } + + if (credentialConfiguration.format === OpenId4VciCredentialFormatProfile.JwtVcJson) { + for (const holderBinding of holderBindings) { + assertDidBasedHolderBinding(holderBinding) + } + + return { + credentialConfigurationId, + format: ClaimFormat.JwtVc, + credentials: holderBindings.map((holderBinding) => { + assertDidBasedHolderBinding(holderBinding) + + const finalVC = { + credential: new W3cCredential({ + type: credentialConfiguration.credential_definition.type, + issuer: new W3cIssuer({ + id: parseDid(issuerDidUrl).did, + }), + credentialSubject: JsonTransformer.fromJSON( + { + id: parseDid(holderBinding.didUrl).did, + claims: { + ...credentialPayload[0].payload, + }, + }, + W3cCredentialSubject, + ), + issuanceDate: w3cDate(Date.now()), + }), + verificationMethod: issuerDidUrl, + } + // console.log(`Final ClaimFormat.JwtVc ---> ${JSON.stringify(finalVC)}`) + return finalVC + }), + } satisfies OpenId4VciSignW3cCredentials + } + + if (credentialConfiguration.format === OpenId4VciCredentialFormatProfile.SdJwtVc) { + const disclosureFramePayload = { + _sd: credentialPayload[0].disclosureFrame + ? Array.isArray(credentialPayload[0].disclosureFrame._sd) + ? credentialPayload[0].disclosureFrame._sd + : [] + : [], + } + + return { + credentialConfigurationId, + format: ClaimFormat.SdJwtVc, + credentials: holderBindings.map((holderBinding) => ({ + // payload: { + // vct: credentialConfiguration.vct, + // university: 'innsbruck', + // degree: 'bachelor', + // authorized_user: authorization.accessToken.payload.sub, + // }, + payload: credentialPayload[0].payload, + holder: holderBinding, + issuer: issuerDidUrl + ? { + method: 'did', + didUrl: issuerDidUrl, + //didUrl: `${issuerDidKey.did}#${issuerDidKey.key.fingerprint}`, + } + : { + method: 'x5c', + x5c: issuerx509certificate ?? [], //[issuerx509certificate??""], + issuer: process.env.AGENT_HOST ?? 'http://localhost:4001', + }, + disclosureFrame: disclosureFramePayload, + //disclosureFrame: { _sd: ['university', 'degree', 'authorized_user'] }, + })), + } satisfies OpenId4VciSignSdJwtCredentials + } + + if (credentialConfiguration.format === OpenId4VciCredentialFormatProfile.MsoMdoc) { + if (!issuerx509certificate) + throw new Error( + `issuerx509certificate is mot provided for credential type ${OpenId4VciCredentialFormatProfile.MsoMdoc}`, + ) + + if (!credentialConfiguration.doctype) { + throw new Error( + `'doctype' not found in credential configuration, ${JSON.stringify(credentialConfiguration, null, 2)}`, + ) + } + + // national id and ICAO default + let namespace = credentialConfiguration.doctype + + return { + credentialConfigurationId, + format: ClaimFormat.MsoMdoc, + credentials: holderBindings.map((holderBinding) => ({ + issuerCertificate: issuerx509certificate[0], + holderKey: holderBinding.key, + namespaces: { + [namespace]: { + ...credentialPayload[0].payload, + }, + }, + docType: credentialConfiguration.doctype, + })), + } satisfies OpenId4VciSignMdocCredentials + } + + throw new Error('Invalid request') + } +} + +function assertDidBasedHolderBinding( + holderBinding: OpenId4VcCredentialHolderBinding, +): asserts holderBinding is OpenId4VcCredentialHolderDidBinding { + if (holderBinding.method !== 'did') { + throw new CredoError('Only did based holder bindings supported for this credential type') + } +} + +// async function fetchCredentialConfiguration(credentialConfigurationId: string, issuerDid: string) { +// // Fetch from database or API instead of static imports +// return database.findOne("credential_configurations", { id: credentialConfigurationId, issuerDid }); +// } + +export interface OpenId4VcIssuanceSessionCreateOfferSdJwtCredentialOptions { + /** + * The id of the `credential_supported` entry that is present in the issuer + * metadata. This id is used to identify the credential that is being offered. + * + * @example "ExampleCredentialSdJwtVc" + */ + credentialSupportedId: string + + /** + * The format of the credential that is being offered. + * MUST match the format of the `credential_supported` entry. + * + * @example {@link OpenId4VciCredentialFormatProfile.SdJwtVc} + */ + format: OpenId4VciCredentialFormatProfile + + /** + * The payload of the credential that will be issued. + * + * If `vct` claim is included, it MUST match the `vct` claim from the issuer metadata. + * If `vct` claim is not included, it will be added automatically. + * + * @example + * { + * "first_name": "John", + * "last_name": "Doe", + * "age": { + * "over_18": true, + * "over_21": true, + * "over_65": false + * } + * } + */ + payload: { + vct?: string + [key: string]: unknown + } + + /** + * Disclosure frame indicating which fields of the credential can be selectively disclosed. + * + * @example + * { + * "first_name": false, + * "last_name": false, + * "age": { + * "over_18": true, + * "over_21": true, + * "over_65": true + * } + * } + */ + disclosureFrame: DisclosureFrame +} diff --git a/src/utils/tsyringeTsoaIocContainer.ts b/src/utils/tsyringeTsoaIocContainer.ts index 4d79391f..78a9254e 100644 --- a/src/utils/tsyringeTsoaIocContainer.ts +++ b/src/utils/tsyringeTsoaIocContainer.ts @@ -3,7 +3,7 @@ import type { IocContainer } from '@tsoa/runtime' import { container } from 'tsyringe' export const iocContainer: IocContainer = { - get: (controller: Parameters[0]): T | Promise => { - return container.resolve(controller as any) + get: (controller: any): T | Promise => { + return container.resolve(controller) }, } diff --git a/tsconfig.build.json b/tsconfig.build.json index bef24e4b..eda5f4f5 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -26,4 +26,4 @@ "**/build/**", "scripts" ] -} \ No newline at end of file +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index c1c33460..107b5389 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -4,7 +4,7 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "afj-controller/*": ["src"] + "credo-controller/*": ["src"] } }, "include": ["./.eslintrc.js", "./jest.config.ts", "./jest.config.base.ts", "types", "tests", "samples", "src", "bin"], diff --git a/yarn.lock b/yarn.lock index 326f0d5d..2e5fa5dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,6 +37,38 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" +"@animo-id/mdoc@0.2.38": + version "0.2.38" + resolved "https://registry.yarnpkg.com/@animo-id/mdoc/-/mdoc-0.2.38.tgz#e708a0df5eba3491b4c8e858d53ba9504f6ae472" + integrity sha512-98KQ0jvwTYsFOffTGvvHXBDo23b5xmhYjPiMIX6e807I6iS4fZZ9ypfBySdA5IiGUvXELKqEv27AUaayQa/9bg== + dependencies: + compare-versions "^6.1.1" + +"@animo-id/oauth2-utils@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@animo-id/oauth2-utils/-/oauth2-utils-0.1.3.tgz#acdf889709b44655c8d807346c6c71dbf884a56d" + integrity sha512-PzAx57LbDmmhI1qnF6Y/soYHLyHXxheSzlle+8rHexZmnWHXwxJ5nyOn/EQhGOqk5UEXLHYsD+27oyrMH3iR4A== + dependencies: + buffer "^6.0.3" + valibot "^0.42.1" + +"@animo-id/oauth2@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@animo-id/oauth2/-/oauth2-0.1.3.tgz#515b03b2f8daac126ab5a23617a7e7c4009d79f2" + integrity sha512-e4i+9nn3hyaxJ5LFTRb8Ri43VCAN5xpOvD0o2DcL6U90Y5ih3L+GVU6pzYylwk0iX/VD/HCMayDvF9qusDBh4w== + dependencies: + "@animo-id/oauth2-utils" "0.1.3" + valibot "^0.42.1" + +"@animo-id/oid4vci@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@animo-id/oid4vci/-/oid4vci-0.1.3.tgz#c4ab0cb099f5efa62c57e589daa6a4bdda9b1a86" + integrity sha512-01ka6sIQUVXNcrw6/fcWCbFpso60bb9Ejv4WUunA/7pGiowdzmmf4aaMRd2em/v5riRpo2tsIqv23SAbyTl41A== + dependencies: + "@animo-id/oauth2" "0.1.3" + "@animo-id/oauth2-utils" "0.1.3" + valibot "^0.42.1" + "@astronautlabs/jsonpath@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@astronautlabs/jsonpath/-/jsonpath-1.1.2.tgz#af19bb4a7d13dcfbc60c3c998ee1e73d7c2ddc38" @@ -101,13 +133,6 @@ keccak256 "^1.0.6" uuid "^9.0.1" -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" @@ -118,40 +143,40 @@ picocolors "^1.1.1" "@babel/compat-data@^7.27.2": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" - integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" + integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6", "@babel/core@^7.23.9": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" - integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4" + integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" + "@babel/generator" "^7.28.0" "@babel/helper-compilation-targets" "^7.27.2" "@babel/helper-module-transforms" "^7.27.3" - "@babel/helpers" "^7.27.4" - "@babel/parser" "^7.27.4" + "@babel/helpers" "^7.27.6" + "@babel/parser" "^7.28.0" "@babel/template" "^7.27.2" - "@babel/traverse" "^7.27.4" - "@babel/types" "^7.27.3" + "@babel/traverse" "^7.28.0" + "@babel/types" "^7.28.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.27.3", "@babel/generator@^7.7.2": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" - integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== +"@babel/generator@^7.28.0", "@babel/generator@^7.7.2": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" + integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== dependencies: - "@babel/parser" "^7.27.5" - "@babel/types" "^7.27.3" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" + "@babel/parser" "^7.28.0" + "@babel/types" "^7.28.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" "@babel/helper-compilation-targets@^7.27.2": @@ -165,6 +190,11 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + "@babel/helper-module-imports@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" @@ -192,7 +222,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": +"@babel/helper-validator-identifier@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== @@ -202,7 +232,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helpers@^7.27.4": +"@babel/helpers@^7.27.6": version "7.27.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== @@ -210,22 +240,12 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.27.6" -"@babel/highlight@^7.10.4": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" - integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": - version "7.27.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" - integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== - dependencies: - "@babel/types" "^7.27.3" + "@babel/types" "^7.28.0" "@babel/plugin-proposal-export-namespace-from@^7.14.5": version "7.18.9" @@ -378,23 +398,23 @@ "@babel/parser" "^7.27.2" "@babel/types" "^7.27.1" -"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4": - version "7.27.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea" - integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA== +"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" + integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== dependencies: "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.3" - "@babel/parser" "^7.27.4" + "@babel/generator" "^7.28.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.0" "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" + "@babel/types" "^7.28.0" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.3.3": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" - integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.6", "@babel/types@^7.28.0", "@babel/types@^7.3.3": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950" + integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" @@ -404,49 +424,58 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@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== +"@credo-ts/anoncreds@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/anoncreds/-/anoncreds-0.6.1-pr-2091-20241119140918.tgz#db6767892adc1a55c846312dcbabfdb47f84f94d" + integrity sha512-8/W5p20voRSvYGp1ZXqZcwZyRK4xGir8BhTdWcbnHBmNhDzx+wgKe6Y1vOpWz0Mt1yqUV31vLhz2WTKeCza9Qw== dependencies: "@astronautlabs/jsonpath" "^1.1.2" - "@credo-ts/core" "0.5.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" + "@sphereon/pex-models" "^2.3.1" big-integer "^1.6.51" bn.js "^5.2.1" class-transformer "0.5.1" class-validator "0.14.1" reflect-metadata "^0.1.13" -"@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== +"@credo-ts/askar@0.5.3", "@credo-ts/askar@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/askar/-/askar-0.6.1-pr-2091-20241119140918.tgz#6261beaa1d11d59a5d0548d255a3b95ccb96ce15" + integrity sha512-6vOXCJcv5ibaTOkfztW1jpIlRM6Pp/Vbvt0vcynCNrbv+Y6wSR2W4CkEwVK/8jt0+vnOIMGlVnTKOjnpjxjueg== dependencies: - "@credo-ts/core" "0.5.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" bn.js "^5.2.1" class-transformer "0.5.1" class-validator "0.14.1" rxjs "^7.8.0" tsyringe "^4.8.0" -"@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== +"@credo-ts/core@0.5.3", "@credo-ts/core@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/core/-/core-0.6.1-pr-2091-20241119140918.tgz#fb37deb5022bdfc251bc140bc05fa15cc84600fb" + integrity sha512-P3c1cxGeEQ5JTx8TuP0Z2iq07u7KoAhm4HKBAOhcJKC392njEJ8cFtDsVq8Vi7GOPhqNPa6SUeJ89GbtH4GhxQ== dependencies: + "@animo-id/mdoc" "0.2.38" "@digitalcredentials/jsonld" "^6.0.0" "@digitalcredentials/jsonld-signatures" "^9.4.0" "@digitalcredentials/vc" "^6.0.1" "@multiformats/base-x" "^4.0.1" - "@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" + "@noble/curves" "^1.6.0" + "@noble/hashes" "^1.5.0" + "@peculiar/asn1-ecc" "^2.3.8" + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/asn1-x509" "^2.3.8" + "@peculiar/x509" "^1.11.0" + "@sd-jwt/core" "^0.7.0" + "@sd-jwt/decode" "^0.7.0" + "@sd-jwt/jwt-status-list" "^0.7.0" + "@sd-jwt/sd-jwt-vc" "^0.7.0" + "@sd-jwt/types" "^0.7.0" + "@sd-jwt/utils" "^0.7.0" + "@sphereon/pex" "5.0.0-unstable.25" + "@sphereon/pex-models" "^2.3.1" + "@sphereon/ssi-types" "0.30.2-next.135" "@stablelib/ed25519" "^1.0.2" - "@stablelib/sha256" "^1.0.1" "@types/ws" "^8.5.4" abort-controller "^3.0.0" big-integer "^1.6.51" @@ -457,7 +486,7 @@ did-resolver "^4.1.0" jsonpath "^1.1.1" lru_map "^0.4.1" - luxon "^3.3.0" + luxon "^3.5.0" make-error "^1.3.6" object-inspect "^1.10.3" query-string "^7.0.1" @@ -467,52 +496,60 @@ uuid "^9.0.0" varint "^6.0.0" web-did-resolver "^2.0.21" + webcrypto-core "^1.8.0" -"@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== +"@credo-ts/indy-vdr@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/indy-vdr/-/indy-vdr-0.6.1-pr-2091-20241119140918.tgz#be13e5cc7b1a07477a68296372a0f2b907396c21" + integrity sha512-dtuPSzZxTnarwG0BX88HBr5qjlmeVxiVPCp/Fq2h1uAxmb7NSn4u+6XnyGJZpeR1LyAjgieQRZ8TQsoqQ4mb/A== dependencies: - "@credo-ts/anoncreds" "0.5.3" - "@credo-ts/core" "0.5.3" + "@credo-ts/anoncreds" "0.6.1-pr-2091-20241119140918" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" -"@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== +"@credo-ts/node@^0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/node/-/node-0.6.1-pr-2091-20241119140918.tgz#1a55d81dbfe39eef1a93d32a54d60e24e767783c" + integrity sha512-3Sq+GszXQ7FQu1/aD2A4pOPDTuTjxBW0ggbt2rG1C4IoxQtC7DSGobZ7HoqPV4MQW1m+lnP27dH0l9PnkKPcaA== dependencies: "@2060.io/ffi-napi" "^4.0.9" "@2060.io/ref-napi" "^3.0.6" - "@credo-ts/core" "0.5.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" "@types/express" "^4.17.15" express "^4.17.1" + rxjs "^7.8.0" ws "^8.13.0" -"@credo-ts/push-notifications@^0.7.0": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@credo-ts/push-notifications/-/push-notifications-0.7.1.tgz#368c9c6f8a7b442a9ce2e6e31324d913f8a49350" - integrity sha512-HpaHT9MIeEF3Mlm2ETpgLS30gA6uA3UPxV5cRp5G48sCzHTSs1iIYzgTwcQl91M7Ccd6i85OTzKgw9W2S4xv8g== - dependencies: - class-transformer "0.5.1" - class-validator "0.14.1" - tsyringe "^4.6.0" +"@credo-ts/openid4vc@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/openid4vc/-/openid4vc-0.6.1-pr-2091-20241119140918.tgz#465b0bb457f2f66cf65bc1a09d427cf9c75e2ad8" + integrity sha512-z8o9OqYFGW6ABYGjs0fIRe4/iLzyHnAaI5WKgKT38QYwM6GhSOUbLMglrvUw5N7hkdz0zFBgXHtQCqzU8E9XUw== + dependencies: + "@animo-id/oauth2" "0.1.3" + "@animo-id/oid4vci" "0.1.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" + "@sphereon/did-auth-siop" "0.16.1-fix.173" + "@sphereon/oid4vc-common" "0.16.1-fix.173" + "@sphereon/ssi-types" "0.30.2-next.135" + class-transformer "^0.5.1" + rxjs "^7.8.0" + zod "^3.23.8" -"@credo-ts/question-answer@0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@credo-ts/question-answer/-/question-answer-0.5.3.tgz#dfe52999279df3016ad1ef8319bb9a14de3ca4ff" - integrity sha512-xdclXz08iDbQX5KnlBPbMNaVqYjdrnjJ8tq3KILnCbWzwSbxIF7Ab7T3E9g6DKYkb5zmVaMVTUQU41ocyYCsJQ== +"@credo-ts/question-answer@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/question-answer/-/question-answer-0.6.1-pr-2091-20241119140918.tgz#250cab98a09103fc2901979972c9ea514f6616d1" + integrity sha512-djGuEg5lgLUe8mTp75z0QQaOv0UVY5uuvwSUVYLJhXfPiCBMQqMY9hxtNMAYjimFi2Zj/bNwow/GYem2RC33YQ== dependencies: - "@credo-ts/core" "0.5.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" class-transformer "0.5.1" class-validator "0.14.1" rxjs "^7.8.0" -"@credo-ts/tenants@0.5.3": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@credo-ts/tenants/-/tenants-0.5.3.tgz#bcea2693dff06349c777454e6f6a67c7b0e8ecdb" - integrity sha512-4KwVCc0Nwdld8223w+d9PBa3Cj/NkuTFmit6/Bk/KIAZ1VasvMF4p/bYuGNB/MJaqy306fwRn12InClq36kJIw== +"@credo-ts/tenants@0.6.1-pr-2091-20241119140918": + version "0.6.1-pr-2091-20241119140918" + resolved "https://registry.yarnpkg.com/@credo-ts/tenants/-/tenants-0.6.1-pr-2091-20241119140918.tgz#f691a2e1fe2e0d31092df35565ccee5828cb0a35" + integrity sha512-+UGUXppSkw7EnPZTZ7xZbqbQFAOJoQvjAZXh+vQ/QTvogreeOzrXxnbz8izjSKlqPhc7v3xxPc4lrs/1k6FCTg== dependencies: - "@credo-ts/core" "0.5.3" + "@credo-ts/core" "0.6.1-pr-2091-20241119140918" async-mutex "^0.4.0" "@cspotcode/source-map-support@^0.8.0": @@ -695,54 +732,100 @@ fix-esm "^1.0.1" "@emnapi/core@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" - integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + version "1.4.4" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.4.tgz#76620673f3033626c6d79b1420d69f06a6bb153c" + integrity sha512-A9CnAbC6ARNMKcIcrQwq6HeHCjpcBZ5wSx4U01WXCqEKlrzB9F9315WDNHkrs2xbx7YjjSxbUYxuN6EQzpcY2g== dependencies: - "@emnapi/wasi-threads" "1.0.2" + "@emnapi/wasi-threads" "1.0.3" tslib "^2.4.0" "@emnapi/runtime@^1.4.3": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" - integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + version "1.4.4" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.4.tgz#19a8f00719c51124e2d0fbf4aaad3fa7b0c92524" + integrity sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" - integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== +"@emnapi/wasi-threads@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.3.tgz#83fa228bde0e71668aad6db1af4937473d1d3ab1" + integrity sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw== dependencies: tslib "^2.4.0" -"@eslint-community/eslint-utils@^4.4.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.5.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/config-array@^0.21.0": + version "0.21.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" + integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== + dependencies: + "@eslint/object-schema" "^2.1.6" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" + integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== + +"@eslint/core@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.14.0.tgz#326289380968eaf7e96f364e1e4cf8f3adf2d003" + integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/core@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" + integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" + integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@9.30.1": + version "9.30.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.30.1.tgz#ebe9dd52a38345784c486300175a28c6013c088d" + integrity sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg== + +"@eslint/object-schema@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" + integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + +"@eslint/plugin-kit@^0.3.1": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz#32926b59bd407d58d817941e48b2a7049359b1fd" + integrity sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag== + dependencies: + "@eslint/core" "^0.15.1" + levn "^0.4.1" + "@ethersproject/abi@5.8.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.8.0.tgz#e79bb51940ac35fe6f3262d7fe2cdb25ad5f07d9" @@ -817,7 +900,7 @@ "@ethersproject/logger" "^5.8.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.8.0": +"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== @@ -912,7 +995,7 @@ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== -"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.8.0": +"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.7.1", "@ethersproject/networks@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== @@ -960,7 +1043,7 @@ bech32 "1.1.4" ws "8.18.0" -"@ethersproject/random@5.8.0", "@ethersproject/random@^5.8.0": +"@ethersproject/random@5.8.0", "@ethersproject/random@^5.7.0", "@ethersproject/random@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== @@ -1009,7 +1092,7 @@ "@ethersproject/sha2" "^5.8.0" "@ethersproject/strings" "^5.8.0" -"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.8.0": +"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== @@ -1370,54 +1453,68 @@ "@hapi/bourne" "^3.0.0" "@hapi/hoek" "^11.0.2" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@hyperledger/anoncreds-nodejs@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-nodejs/-/anoncreds-nodejs-0.2.2.tgz#5344427c554fc7280efe22f2061e3a26023fdd84" - integrity sha512-qRMSSyERwjAVCPlHjCAY3OJno4DNIJ0uLi+g6ek7HrFVich3X6Kzr0ng/MSiDKmTBXyGiip1zDIBABA8y3yNGg== +"@humanwhocodes/retry@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + +"@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== + +"@hyperledger/anoncreds-nodejs@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-nodejs/-/anoncreds-nodejs-0.3.1.tgz#72777755c6debd6aacaeb41eaeb6e7a3f1570760" + integrity sha512-/oWmWgcOPqjAtd2+dKASPYL84Qd7sAFyCBfEKM7PAgVbObaZUZc0kqA7hkEz/qyiqUvcP/JwKTc1v4zVZi6BTg== dependencies: "@2060.io/ffi-napi" "^4.0.9" "@2060.io/ref-napi" "^3.0.6" - "@hyperledger/anoncreds-shared" "0.2.2" - "@mapbox/node-pre-gyp" "^1.0.11" + "@hyperledger/anoncreds-shared" "0.3.1" ref-array-di "1.2.2" ref-struct-di "1.1.1" -"@hyperledger/anoncreds-shared@0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-shared/-/anoncreds-shared-0.2.2.tgz#492995d076448d682a828312bbba58314e943c4a" - integrity sha512-dfYpqbAkqtHJkRkuGmWdJruHfLegLUIbu/dSAWnz5dMRKd8ad8rEnQkwRnockQZ/pc7QDr8kxfG6bT2YDGZeMw== +"@hyperledger/anoncreds-shared@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@hyperledger/anoncreds-shared/-/anoncreds-shared-0.3.1.tgz#b227bc068c965ce6a6ce821b0a49832dd27c1461" + integrity sha512-pJNIMvineGpNsyEqsMR+tkRNy5+PQAnMkNgnefJlscCjVsTMqJnOtoNl18pk0LzjVKdGtwJtpg5N+lRx81hfAQ== + dependencies: + tar "^7.4.3" -"@hyperledger/aries-askar-nodejs@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-nodejs/-/aries-askar-nodejs-0.2.1.tgz#3473786a4d758ebf39a6b855386a9fa3577033d5" - integrity sha512-RSBa+onshUSIJlVyGBzndZtcw2KPb8mgnYIio9z0RquKgGitufc0ymNiL2kLKWNjk2gET20jAUHijhlE4ssk5A== +"@hyperledger/aries-askar-nodejs@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-nodejs/-/aries-askar-nodejs-0.2.3.tgz#f939c19047c78b9903b422f992b4f5406ac3aae3" + integrity sha512-2BnGqK08Y96DEB8tDuXy2x+soetChyMGB0+L1yqdHx1Xv5FvRerYrTXdTjJXTW6ANb48k2Np8WlJ4YNePSo6ww== dependencies: "@2060.io/ffi-napi" "^4.0.9" "@2060.io/ref-napi" "^3.0.6" - "@hyperledger/aries-askar-shared" "0.2.1" - "@mapbox/node-pre-gyp" "^1.0.10" - node-cache "^5.1.2" + "@hyperledger/aries-askar-shared" "0.2.3" + "@mapbox/node-pre-gyp" "^1.0.11" ref-array-di "^1.2.2" ref-struct-di "^1.1.1" -"@hyperledger/aries-askar-shared@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-shared/-/aries-askar-shared-0.2.1.tgz#0c01abe47fd53dd1629ee41af51c9d9d42f7f86f" - integrity sha512-7d8tiqq27dxFl7+0Cf2I40IzzDoRU9aEolyPyvfdLGbco6NAtWB4CV8AzgY11EZ7/ou4RirJxfP9hBjgYBo1Ag== +"@hyperledger/aries-askar-shared@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@hyperledger/aries-askar-shared/-/aries-askar-shared-0.2.3.tgz#670fea675982e3b0a2f416131b04d0f1e058cd1b" + integrity sha512-g9lao8qa80kPCLqqp02ovNqEfQIrm6cAf4xZVzD5P224VmOhf4zM6AKplQTvQx7USNKoXroe93JrOOSVxPeqrA== dependencies: buffer "^6.0.3" @@ -1450,6 +1547,13 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" +"@isaacs/fs-minipass@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" + integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== + dependencies: + minipass "^7.0.4" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1658,13 +1762,12 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" + integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/sourcemap-codec" "^1.5.0" "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": @@ -1672,15 +1775,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" + integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -1690,14 +1788,24 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" + integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@js-joda/core@5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@js-joda/core/-/core-5.6.3.tgz#41ae1c07de1ebe0f6dde1abcbc9700a09b9c6056" + integrity sha512-T1rRxzdqkEXcou0ZprN1q9yDRlvzCPLqmlNt5IIsGBzoEVgLCCYrKEwc84+TvsXuAc95VAZwtWD2zVsKPY4bcA== + +"@js-joda/timezone@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@js-joda/timezone/-/timezone-2.3.0.tgz#72878f6dc8afef20c29906e5d8d946f91618a2c3" + integrity sha512-DHXdNs0SydSqC5f0oRJPpTcNfnpRojgBqMCFupQFv6WgeZAjU3DBx+A7JtaGPP3dHrP2Odi2N8Vf+uAm/8ynCQ== + "@js-sdsl/ordered-map@^4.4.2": version "4.4.2" resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" @@ -1732,6 +1840,11 @@ "@emnapi/runtime" "^1.4.3" "@tybys/wasm-util" "^0.9.0" +"@noble/ciphers@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.4.1.tgz#977fc35f563a4ca315ebbc4cbb1f9b670bd54456" + integrity sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg== + "@noble/curves@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -1739,12 +1852,19 @@ dependencies: "@noble/hashes" "1.3.2" +"@noble/curves@^1.0.0", "@noble/curves@^1.6.0": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" + integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== -"@noble/hashes@^1.1.5": +"@noble/hashes@1.8.0", "@noble/hashes@^1.1.5", "@noble/hashes@^1.3.0", "@noble/hashes@^1.4.0", "@noble/hashes@^1.5.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== @@ -1770,11 +1890,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nolyfill/is-core-module@1.0.39": - version "1.0.39" - resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" - integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== - "@nomicfoundation/hardhat-verify@^2.0.3": version "2.0.14" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.14.tgz#ba80918fac840f1165825f2a422a694486f82f6f" @@ -1942,9 +2057,9 @@ "@opentelemetry/semantic-conventions" "^1.29.0" "@opentelemetry/instrumentation-express@^0.51.0": - version "0.51.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.51.0.tgz#b63fdf82ff68dbbe685f790ce4c85c613ebea10c" - integrity sha512-v1mgfvyeQh7yfsZ8wZlr+jgFGk9FxzLfNH0EH0UYGO9das8fCIkixsEasZMWhjwAJKjlf+ElTZ2jE2pT7I3DyQ== + version "0.51.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.51.1.tgz#e9ea96ea67c7698c8e2939f518d94835fd036bfd" + integrity sha512-cKmzev7RolYGedQ82hVUoH+74BP4E0xmhUCEagOxmW3aKilXYx01KwsNN6wnx3IXR7u2nlYugQsEsLLA4d829A== dependencies: "@opentelemetry/core" "^2.0.0" "@opentelemetry/instrumentation" "^0.202.0" @@ -1961,9 +2076,9 @@ forwarded-parse "2.1.2" "@opentelemetry/instrumentation-nestjs-core@^0.48.0": - version "0.48.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.48.0.tgz#86f1d1af48a6654adc8497a8fccd31eb234a6357" - integrity sha512-ytK4ABSkWcD9vyMU8GpinvodAGaRxBFuxybP/m7sgLtEboXMJjdWnEHb7lH/CX1ICiVKRXWdYg9npdu6yBCW5Q== + version "0.48.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.48.1.tgz#117f416992570e643c83f02fc51eb54f869eb1b2" + integrity sha512-rH0IUQRf9wjxEkiPfltM17DVqgSe/rgeIlg1CKRDAhuxWkbXlcHwdOnBfngGKhJNGOlGUo6HzZesavPAlmm3Fw== dependencies: "@opentelemetry/instrumentation" "^0.202.0" "@opentelemetry/semantic-conventions" "^1.30.0" @@ -2098,6 +2213,25 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz#8b6a46681b38a4d5947214033ac48128328c1738" integrity sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA== +"@openwallet-foundation/askar-nodejs@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@openwallet-foundation/askar-nodejs/-/askar-nodejs-0.3.2.tgz#344de2a4cdba7c22a4fa632581013520cc858270" + integrity sha512-kHZaPl32azKzqT/+ksRqGXNs9lxTrhbuWVuILS1HNGXA+A5vSINRA8WwDHk2KGZ9WP7jhszbPx804cfRKrrBPA== + dependencies: + "@2060.io/ffi-napi" "^4.0.9" + "@2060.io/ref-napi" "^3.0.6" + "@openwallet-foundation/askar-shared" "0.3.2" + ref-array-di "^1.2.2" + ref-struct-di "^1.1.1" + +"@openwallet-foundation/askar-shared@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@openwallet-foundation/askar-shared/-/askar-shared-0.3.2.tgz#076e4c5bda41c075da722877a6846054c9738724" + integrity sha512-WQSHM5+5Vy1QMUpUTj0DpwFKYdciNcksWsft/iD6Ff+AdDERKo5Mjv/4JSIZIzXUEyq7kqqNbejl4a3TDGeU3A== + dependencies: + buffer "^6.0.3" + tar "^7.4.3" + "@paralleldrive/cuid2@^2.2.2": version "2.2.2" resolved "https://registry.yarnpkg.com/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz#7f91364d53b89e2c9cb9e02e8dd0f129e834455f" @@ -2105,7 +2239,84 @@ dependencies: "@noble/hashes" "^1.1.5" -"@peculiar/asn1-schema@^2.3.13", "@peculiar/asn1-schema@^2.3.8": +"@peculiar/asn1-cms@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-cms/-/asn1-cms-2.3.15.tgz#8baf1fcf51dae2e9122126e13acf6a2e1698d35c" + integrity sha512-B+DoudF+TCrxoJSTjjcY8Mmu+lbv8e7pXGWrhNp2/EGJp9EEcpzjBCar7puU57sGifyzaRVM03oD5L7t7PghQg== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + "@peculiar/asn1-x509-attr" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-csr@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-csr/-/asn1-csr-2.3.15.tgz#a99375f2ffde6e759c70f73ce5c6600101457a57" + integrity sha512-caxAOrvw2hUZpxzhz8Kp8iBYKsHbGXZPl2KYRMIPvAfFateRebS3136+orUpcVwHRmpXWX2kzpb6COlIrqCumA== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-ecc@^2.3.15", "@peculiar/asn1-ecc@^2.3.8": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.15.tgz#2301cff76a089bfa2ec93b4cfd9071a382aa677f" + integrity sha512-/HtR91dvgog7z/WhCVdxZJ/jitJuIu8iTqiyWVgRE9Ac5imt2sT/E4obqIVGKQw7PIy+X6i8lVBoT6wC73XUgA== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-pfx@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pfx/-/asn1-pfx-2.3.15.tgz#644b189e8ac88aa31ab96288fe79838106624c11" + integrity sha512-E3kzQe3J2xV9DP6SJS4X6/N1e4cYa2xOAK46VtvpaRk8jlheNri8v0rBezKFVPB1rz/jW8npO+u1xOvpATFMWg== + dependencies: + "@peculiar/asn1-cms" "^2.3.15" + "@peculiar/asn1-pkcs8" "^2.3.15" + "@peculiar/asn1-rsa" "^2.3.15" + "@peculiar/asn1-schema" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs8@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.3.15.tgz#ecfa5152ecdf24164887c6fa3170163476c40fd5" + integrity sha512-/PuQj2BIAw1/v76DV1LUOA6YOqh/UvptKLJHtec/DQwruXOCFlUo7k6llegn8N5BTeZTWMwz5EXruBw0Q10TMg== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-pkcs9@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.3.15.tgz#91c55fd0c0134983a6bd2bae7de026c59a7080de" + integrity sha512-yiZo/1EGvU1KiQUrbcnaPGWc0C7ElMMskWn7+kHsCFm+/9fU0+V1D/3a5oG0Jpy96iaXggQpA9tzdhnYDgjyFg== + dependencies: + "@peculiar/asn1-cms" "^2.3.15" + "@peculiar/asn1-pfx" "^2.3.15" + "@peculiar/asn1-pkcs8" "^2.3.15" + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + "@peculiar/asn1-x509-attr" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-rsa@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.15.tgz#0e24aadcc96b34f57b488c6c95e3eedbb1cb1c73" + integrity sha512-p6hsanvPhexRtYSOHihLvUUgrJ8y0FtOM97N5UEpC+VifFYyZa0iZ5cXjTkZoDwxJ/TTJ1IJo3HVTB2JJTpXvg== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-schema@^2.3.13", "@peculiar/asn1-schema@^2.3.15", "@peculiar/asn1-schema@^2.3.8": version "2.3.15" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.15.tgz#e926bfdeed51945a06f38be703499e7d8341a5d3" integrity sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w== @@ -2114,6 +2325,26 @@ pvtsutils "^1.3.6" tslib "^2.8.1" +"@peculiar/asn1-x509-attr@^2.3.15": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.3.15.tgz#036ea4ff68427fa9b51d6adb7051b7f1f91091b4" + integrity sha512-TWJVJhqc+IS4MTEML3l6W1b0sMowVqdsnI4dnojg96LvTuP8dga9f76fjP07MUuss60uSyT2ckoti/2qHXA10A== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + asn1js "^3.0.5" + tslib "^2.8.1" + +"@peculiar/asn1-x509@^2.3.15", "@peculiar/asn1-x509@^2.3.8": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.15.tgz#55adc616a075512ace64128eb34a9e071841ab14" + integrity sha512-0dK5xqTqSLaxv1FHXIcd4Q/BZNuopg+u1l23hT9rOmQ1g4dNtw0g/RnEi+TboB0gOwGtrWn269v27cMgchFIIg== + dependencies: + "@peculiar/asn1-schema" "^2.3.15" + asn1js "^3.0.5" + pvtsutils "^1.3.6" + tslib "^2.8.1" + "@peculiar/json-schema@^1.1.12": version "1.1.12" resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" @@ -2132,11 +2363,33 @@ tslib "^2.6.2" webcrypto-core "^1.8.0" +"@peculiar/x509@^1.11.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@peculiar/x509/-/x509-1.13.0.tgz#c404d075aac4dfa52320e0a1cb11268efacdb9dd" + integrity sha512-r9BOb1GZ3gx58Pog7u9x70spnHlCQPFm7u/ZNlFv+uBsU7kTDY9QkUD+l+X0awopDuCK1fkH3nEIZeMDSG/jlw== + dependencies: + "@peculiar/asn1-cms" "^2.3.15" + "@peculiar/asn1-csr" "^2.3.15" + "@peculiar/asn1-ecc" "^2.3.15" + "@peculiar/asn1-pkcs9" "^2.3.15" + "@peculiar/asn1-rsa" "^2.3.15" + "@peculiar/asn1-schema" "^2.3.15" + "@peculiar/asn1-x509" "^2.3.15" + pvtsutils "^1.3.6" + reflect-metadata "^0.2.2" + tslib "^2.8.1" + tsyringe "^4.10.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.2.4": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" + integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -2200,17 +2453,30 @@ resolved "https://registry.yarnpkg.com/@scarf/scarf/-/scarf-1.4.0.tgz#3bbb984085dbd6d982494538b523be1ce6562972" integrity sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ== -"@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== +"@scure/base@^1.1.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + +"@sd-jwt/core@0.7.2", "@sd-jwt/core@^0.7.0": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/core/-/core-0.7.2.tgz#cfbcd853d507e2c31bf66ea5b2c1748291924ec3" + integrity sha512-vix1GplUFc1A9H42r/yXkg7cKYthggyqZEwlFdsBbn4xdZNE+AHVF4N7kPa1pPxipwN3UIHd4XnQ5MJV15mhsQ== 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.7.2" + "@sd-jwt/present" "0.7.2" + "@sd-jwt/types" "0.7.2" + "@sd-jwt/utils" "0.7.2" -"@sd-jwt/decode@0.6.1", "@sd-jwt/decode@^0.6.1": +"@sd-jwt/decode@0.7.2", "@sd-jwt/decode@^0.7.0", "@sd-jwt/decode@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/decode/-/decode-0.7.2.tgz#a0dd90d82c0b8b5e68adb22257a3db4b72de8529" + integrity sha512-dan2LSvK63SKwb62031G4r7TE4TaiI0EK1KbPXqS+LCXNkNDUHqhtYp9uOpj+grXceCsMtMa2f8VnUfsjmwHHg== + dependencies: + "@sd-jwt/types" "0.7.2" + "@sd-jwt/utils" "0.7.2" + +"@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== @@ -2218,21 +2484,44 @@ "@sd-jwt/types" "0.6.1" "@sd-jwt/utils" "0.6.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== +"@sd-jwt/jwt-status-list@0.7.2", "@sd-jwt/jwt-status-list@^0.7.0": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/jwt-status-list/-/jwt-status-list-0.7.2.tgz#13cd1b4abbcb08217a44efb59f0fd2a134fe398a" + integrity sha512-o/Mg/Zg21poFsPXuxtPD9sdXq2b/0L+rb9gxU2k1rp1aT+DWmqD0k8v0Ttr2tlMc8l1xXQNA8FLXbL1AdLRmbQ== dependencies: - "@sd-jwt/decode" "0.6.1" - "@sd-jwt/types" "0.6.1" - "@sd-jwt/utils" "0.6.1" + "@sd-jwt/types" "0.7.2" + base64url "^3.0.1" + pako "^2.1.0" + +"@sd-jwt/present@0.7.2", "@sd-jwt/present@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/present/-/present-0.7.2.tgz#23e521cda6adf6ce9f73fcda64502ea7c45f61c3" + integrity sha512-mQV85u2+mLLy2VZ9Wx2zpaB6yTDnbhCfWkP7eeCrzJQHBKAAHko8GrylEFmLKewFIcajS/r4lT/zHOsCkp5pZw== + dependencies: + "@sd-jwt/decode" "0.7.2" + "@sd-jwt/types" "0.7.2" + "@sd-jwt/utils" "0.7.2" -"@sd-jwt/types@0.6.1", "@sd-jwt/types@^0.6.1": +"@sd-jwt/sd-jwt-vc@^0.7.0": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/sd-jwt-vc/-/sd-jwt-vc-0.7.2.tgz#565a4fcebfe97915a995fd26b0e3cb1fdd56ff6a" + integrity sha512-rryYmnoJHRSNqHcrs0Atta+bfJzU2yT7mYumR2D4lTfxJKWZd0OHHFq57uZSEm/wXPI6uytUJXYbEboCqLUAtw== + dependencies: + "@sd-jwt/core" "0.7.2" + "@sd-jwt/jwt-status-list" "0.7.2" + "@sd-jwt/utils" "0.7.2" + +"@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.6.1", "@sd-jwt/utils@^0.6.1": +"@sd-jwt/types@0.7.2", "@sd-jwt/types@^0.7.0", "@sd-jwt/types@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/types/-/types-0.7.2.tgz#29b5bf923eaed041b1375624afd7ce522f954f66" + integrity sha512-1NRKowiW0ZiB9SGLApLPBH4Xk8gDQJ+nA9NdZ+uy6MmJKLEwjuJxO7yTvRIv/jX/0/Ebh339S7Kq4RD2AiFuRg== + +"@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== @@ -2240,6 +2529,14 @@ "@sd-jwt/types" "0.6.1" js-base64 "^3.7.6" +"@sd-jwt/utils@0.7.2", "@sd-jwt/utils@^0.7.0": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sd-jwt/utils/-/utils-0.7.2.tgz#4309fa2f5ebe214947de4fb07a1e06a70c29710b" + integrity sha512-aMPY7uHRMgyI5PlDvEiIc+eBFGC1EM8OCQRiEjJ8HGN0pajWMYj0qwSw7pS90A49/DsYU1a5Zpvb7nyjgGH0Yg== + dependencies: + "@sd-jwt/types" "0.7.2" + js-base64 "^3.7.6" + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2286,45 +2583,277 @@ resolved "https://registry.yarnpkg.com/@sovpro/delimited-stream/-/delimited-stream-1.1.0.tgz#4334bba7ee241036e580fdd99c019377630d26b4" integrity sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw== -"@sphereon/pex-models@^2.2.4": +"@sphereon/did-auth-siop@0.16.1-fix.173": + version "0.16.1-fix.173" + resolved "https://registry.yarnpkg.com/@sphereon/did-auth-siop/-/did-auth-siop-0.16.1-fix.173.tgz#14de220099e39c8769d650dccaae73804c4a378e" + integrity sha512-BurhxcEfd91y2o2zy0VAZ9STHRuWRNx/FwhR0jRSG8D7gJPspqiR2cJtdvAvLrKNaznpQSANQHniCgCiDRtjfA== + dependencies: + "@astronautlabs/jsonpath" "^1.1.2" + "@sphereon/jarm" "0.16.1-fix.173+086f910" + "@sphereon/oid4vc-common" "0.16.1-fix.173+086f910" + "@sphereon/pex" "5.0.0-unstable.24" + "@sphereon/pex-models" "^2.3.1" + "@sphereon/ssi-types" "0.30.2-next.129" + cross-fetch "^4.0.0" + debug "^4.3.5" + events "^3.3.0" + jwt-decode "^4.0.0" + language-tags "^1.0.9" + multiformats "^12.1.3" + qs "^6.11.2" + uint8arrays "^3.1.1" + +"@sphereon/did-uni-client@^0.6.3": + 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/jarm@0.16.1-fix.173+086f910": + version "0.16.1-fix.173" + resolved "https://registry.yarnpkg.com/@sphereon/jarm/-/jarm-0.16.1-fix.173.tgz#5c70456d3d3daf0262e2a647abddc464eb45ff94" + integrity sha512-VYNuNLV+x7hKKcynC8yOJymkXPrtBRQA/Gqj50Wfhl6kx6IoRsx39s/i6xGGYPwyrNTaVGFssKzg0IDcQfxToA== + dependencies: + "@sphereon/oid4vc-common" "0.16.1-fix.173+086f910" + valibot "^0.42.1" + +"@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22": + version "0.2.0-SNAPSHOT.22" + resolved "https://registry.yarnpkg.com/@sphereon/kmp-mdl-mdoc/-/kmp-mdl-mdoc-0.2.0-SNAPSHOT.22.tgz#958ed3831fba25175f80333c7287842dca332fc0" + integrity sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A== + dependencies: + "@js-joda/core" "5.6.3" + "@js-joda/timezone" "2.3.0" + format-util "^1.0.5" + +"@sphereon/oid4vc-common@0.16.1-fix.173", "@sphereon/oid4vc-common@0.16.1-fix.173+086f910": + version "0.16.1-fix.173" + resolved "https://registry.yarnpkg.com/@sphereon/oid4vc-common/-/oid4vc-common-0.16.1-fix.173.tgz#da141385c0b91f7de02471358474cb5edd6d63fb" + integrity sha512-+AAUvEEFs0vzz1mrgjSgvDkcBtr18d2XEVgJex7QlAqxCKVGfjzZlqL2Q2vOLKYVaXsazhD5LnYiY6B5WMTC3Q== + dependencies: + "@sphereon/ssi-types" "0.30.1" + jwt-decode "^4.0.0" + sha.js "^2.4.11" + uint8arrays "3.1.1" + uuid "^9.0.0" + +"@sphereon/pex-models@^2.3.1": version "2.3.2" resolved "https://registry.yarnpkg.com/@sphereon/pex-models/-/pex-models-2.3.2.tgz#88bb330745ef8011e4b13fb0a586593095888c6e" integrity sha512-foFxfLkRwcn/MOp/eht46Q7wsvpQGlO7aowowIIb5Tz9u97kYZ2kz6K2h2ODxWuv5CRA7Q0MY8XUBGE2lfOhOQ== -"@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== +"@sphereon/pex@5.0.0-unstable.24": + version "5.0.0-unstable.24" + resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-5.0.0-unstable.24.tgz#55c8ffbad4cdc37e1cd09eec90797f26d509a9d2" + integrity sha512-CZc+kr8cJqPsFSpg4kHyamr5oB5xLVP2E5eJ0pbetOfOE2uSxqk0/A8zGazcPhU1zZILrO51hD4vW/hJRgtKJQ== dependencies: "@astronautlabs/jsonpath" "^1.1.2" - "@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" + "@sd-jwt/decode" "^0.7.2" + "@sd-jwt/present" "^0.7.2" + "@sd-jwt/types" "^0.7.2" + "@sphereon/pex-models" "^2.3.1" + "@sphereon/ssi-types" "0.30.2-next.129" ajv "^8.12.0" ajv-formats "^2.1.1" jwt-decode "^3.1.2" nanoid "^3.3.7" - string.prototype.matchall "^4.0.10" uint8arrays "^3.1.1" -"@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== +"@sphereon/pex@5.0.0-unstable.25": + version "5.0.0-unstable.25" + resolved "https://registry.yarnpkg.com/@sphereon/pex/-/pex-5.0.0-unstable.25.tgz#9ff0f05d14964710c0a8326c639fac93015c89ce" + integrity sha512-EUWfGa6t20PPkYf+zbfWXhc1sSWiFNywbRah8R6grJPU738pfwWpZPunSEY3x0CoxAVaSVXn91wZ/sxmgPCFkA== dependencies: - "@sd-jwt/decode" "^0.6.1" + "@astronautlabs/jsonpath" "^1.1.2" + "@sd-jwt/decode" "^0.7.2" + "@sd-jwt/present" "^0.7.2" + "@sd-jwt/types" "^0.7.2" + "@sphereon/pex-models" "^2.3.1" + "@sphereon/ssi-types" "0.30.2-next.135" + ajv "^8.12.0" + ajv-formats "^2.1.1" jwt-decode "^3.1.2" + nanoid "^3.3.7" + uint8arrays "^3.1.1" + +"@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130+bf9a4b6": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.did-utils/-/ssi-sdk-ext.did-utils-0.24.1-unstable.130.tgz#cc6e5f405c6272db5615ee26a4620be7b076c4c1" + integrity sha512-I+0VjitRjisABWm8RtTPQG57tFwfUS13Wud30OvBoADRxnaA0guUrkS82AYtV6YD0TBHdrd0D6a0RCJwK9SvDg== + dependencies: + "@ethersproject/networks" "^5.7.1" + "@ethersproject/transactions" "^5.7.0" + "@sphereon/did-uni-client" "^0.6.3" + "@sphereon/ssi-sdk-ext.key-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.x509-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk.agent-config" "0.29.1-unstable.161" + "@sphereon/ssi-sdk.core" "0.29.1-unstable.161" + "@sphereon/ssi-types" "0.29.1-unstable.161" + "@stablelib/ed25519" "^1.0.3" + "@veramo/core" "4.2.0" + "@veramo/utils" "4.2.0" + did-jwt "6.11.6" + did-resolver "^4.1.0" + elliptic "^6.5.4" + uint8arrays "^3.1.1" -"@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== +"@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130+bf9a4b6": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.identifier-resolution/-/ssi-sdk-ext.identifier-resolution-0.24.1-unstable.130.tgz#f1d06396f954c46c670abac728288e68a7f9e34f" + integrity sha512-9mY+qgXmbZCC8aic99R7B3vKBHBakDiC6Sktgd7Q9AknR8cCmvdrmTgnOETrLng9L43uNOJnNTMG/4T6LqmtsA== + dependencies: + "@sphereon/ssi-sdk-ext.did-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.key-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.x509-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk.agent-config" "0.29.1-unstable.161" + "@sphereon/ssi-types" "0.29.1-unstable.161" + "@veramo/core" "4.2.0" + "@veramo/utils" "4.2.0" + debug "^4.3.4" + pkijs "^3.2.4" + uint8arrays "^3.1.1" + +"@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.jwt-service/-/ssi-sdk-ext.jwt-service-0.24.1-unstable.130.tgz#7d2e2df20eb1fa41cb59ba68f2497a24392c0195" + integrity sha512-MHLGRmJODEYJyFoXKwlKMYzf48vS5JcUkGk0W4sqmrY1wwcw+ro3l8adIprG37mNuknXBs9Mv0x/tvibE9wwCQ== + dependencies: + "@sphereon/ssi-sdk-ext.did-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.identifier-resolution" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.key-manager" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.key-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk-ext.x509-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-sdk.agent-config" "0.29.1-unstable.161" + "@sphereon/ssi-types" "0.29.1-unstable.161" + "@veramo/core" "4.2.0" + "@veramo/utils" "4.2.0" + debug "^4.3.4" + jwt-decode "^4.0.0" + uint8arrays "^3.1.1" + +"@sphereon/ssi-sdk-ext.key-manager@0.24.1-unstable.130+bf9a4b6": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.key-manager/-/ssi-sdk-ext.key-manager-0.24.1-unstable.130.tgz#96bb9cdb1187b54585977cbf5bbd2a8b77a40474" + integrity sha512-O/6NlKmlYRnEyP/mAI2Diu0qptMSqZfVwqog8KAOG/G8JUmktfSQmclBW8RoJ6AD9uY65BGzNk1oAVuuMv4Dog== + dependencies: + "@veramo/core" "4.2.0" + "@veramo/key-manager" "4.2.0" + uint8arrays "^3.1.1" + +"@sphereon/ssi-sdk-ext.key-utils@0.24.1-unstable.130+bf9a4b6": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.key-utils/-/ssi-sdk-ext.key-utils-0.24.1-unstable.130.tgz#1f814dca08842589bb7ad1b8f721e790c17362d0" + integrity sha512-DCyXW18g1OAuZ+aFHzQGrbZSx793DX94LSFnrWlOTMnYeILmrizuFksUlWSb3lTqQGAqWBC48NoR3I1H6lSMEQ== + dependencies: + "@ethersproject/random" "^5.7.0" + "@sphereon/ssi-sdk-ext.x509-utils" "0.24.1-unstable.130+bf9a4b6" + "@sphereon/ssi-types" "0.29.1-unstable.161" + "@stablelib/ed25519" "^1.0.3" + "@stablelib/sha256" "^1.0.1" + "@stablelib/sha512" "^1.0.1" + "@trust/keyto" "^1.0.1" + "@veramo/core" "4.2.0" + base64url "^3.0.1" + debug "^4.3.4" + did-resolver "^4.1.0" + elliptic "^6.5.4" + lodash.isplainobject "^4.0.6" + multiformats "^9.9.0" + uint8arrays "^3.1.1" + varint "^6.0.0" + web-encoding "^1.1.5" + +"@sphereon/ssi-sdk-ext.x509-utils@0.24.1-unstable.130+bf9a4b6": + version "0.24.1-unstable.130" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk-ext.x509-utils/-/ssi-sdk-ext.x509-utils-0.24.1-unstable.130.tgz#a6c997771410bd5dcee974898f5af2a58dc20457" + integrity sha512-JDX8i0WrwONaOivZXB+OxJQGkln7vuSLS61tOYl7M1RyPGixdBYuEuACsdvWf6egYOpaWmhmXZzaAOj18eDddw== + dependencies: + "@trust/keyto" "^1.0.1" + debug "^4.3.4" + js-x509-utils "^1.0.7" + pkijs "^3.2.4" + uint8arrays "^3.1.1" + +"@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161": + version "0.29.1-unstable.161" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk.agent-config/-/ssi-sdk.agent-config-0.29.1-unstable.161.tgz#d0ed0588a4959ca02926df56c41bb3997d953bc4" + integrity sha512-ZP/TjapF/Gv/AwnNr9e1U3rjyRwdLtAj4un9j1csnKcgYe9ff2fhYbe06y9mU4tfQilH69mAW4Tz1t6N5U7XbA== + dependencies: + "@veramo/core" "4.2.0" + debug "^4.3.5" + jsonpointer "^5.0.1" + typeorm "^0.3.20" + url-parse "^1.5.10" + yaml "^2.4.5" + +"@sphereon/ssi-sdk.core@0.29.1-unstable.161": + version "0.29.1-unstable.161" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-sdk.core/-/ssi-sdk.core-0.29.1-unstable.161.tgz#b6b26088fd5dbdfd28b78d3a873429e7c4f858e6" + integrity sha512-3E/KsjTywT9BzP5bMi41JVTu9nTiu2ekwNSPobF9tAJnHJv+LkjCJ59xA8jtbq/Xe4iq3xRMU17yBvpZXN2W4A== + dependencies: + "@sphereon/ssi-types" "0.29.1-unstable.161+bc99d375" + "@veramo/core" "4.2.0" + cross-fetch "^3.1.8" + debug "^4.3.5" + image-size "2.0.0-beta.2" + uint8arrays "3.1.1" + +"@sphereon/ssi-types@0.29.1-unstable.161", "@sphereon/ssi-types@0.29.1-unstable.161+bc99d375": + version "0.29.1-unstable.161" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.29.1-unstable.161.tgz#d7e6a86f48610055bbc90ea2400c61043ee5cfbc" + integrity sha512-ifMADjk6k0f97/isK/4Qw/PX6n4k+qS5k6mmmH47MTD3KMDddVghoXycsvNw7wObJdLUalHBX630ghr+u21oMg== dependencies: "@sd-jwt/decode" "^0.6.1" + debug "^4.3.5" + events "^3.3.0" + jwt-decode "^3.1.2" + +"@sphereon/ssi-types@0.30.1": + version "0.30.1" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.30.1.tgz#ab78cf80dfa3abc01c7e31b202c56db10bc30e9f" + integrity sha512-vbYaxQXb71sOPwDj7TRDlUGfIHKVVs8PiHfImPBgSBshrD7VpEHOrB+EwwavMm5MAQvWK/yblGmzk7FHds7SHA== + dependencies: + "@sd-jwt/decode" "^0.7.2" + "@sphereon/kmp-mdl-mdoc" "0.2.0-SNAPSHOT.22" + "@sphereon/ssi-sdk-ext.jwt-service" "0.24.1-unstable.130" + debug "^4.3.5" + events "^3.3.0" + jwt-decode "^3.1.2" + +"@sphereon/ssi-types@0.30.2-next.129": + version "0.30.2-next.129" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.30.2-next.129.tgz#3b61dca2a59bd57e9fe24fdade2d0c7753a01da7" + integrity sha512-F1TDy9S5ajDJDp21cINXseGSux9kGA+x0KScAS+5+B/RdMGRp7bLOM+3YpQw1QGPqKxVc7JAd2gAn7AI0pAkZA== + dependencies: + "@sd-jwt/decode" "^0.7.2" + "@sphereon/kmp-mdl-mdoc" "0.2.0-SNAPSHOT.22" + debug "^4.3.5" + events "^3.3.0" jwt-decode "^3.1.2" +"@sphereon/ssi-types@0.30.2-next.135": + version "0.30.2-next.135" + resolved "https://registry.yarnpkg.com/@sphereon/ssi-types/-/ssi-types-0.30.2-next.135.tgz#bcdbfa6351ff88d1458f31a63f574671215da266" + integrity sha512-YLQfFMPUlOJUxHbOS9v01nG3cgLwTk3d95/rTnOmEQx9kXgXjoXdvt7D0uGcMRL3RHeQ9biT/jWY//mDvCirVQ== + dependencies: + "@sd-jwt/decode" "^0.7.2" + "@sphereon/kmp-mdl-mdoc" "0.2.0-SNAPSHOT.22" + debug "^4.3.5" + events "^3.3.0" + jwt-decode "^3.1.2" + +"@sqltools/formatter@^1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" + integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + "@stablelib/binary@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" @@ -2332,7 +2861,37 @@ dependencies: "@stablelib/int" "^1.0.1" -"@stablelib/ed25519@^1.0.1", "@stablelib/ed25519@^1.0.2": +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.1", "@stablelib/ed25519@^1.0.2", "@stablelib/ed25519@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== @@ -2351,7 +2910,22 @@ resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== -"@stablelib/random@^1.0.2": +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -2382,6 +2956,35 @@ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== +"@stablelib/x25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/xchacha20@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/xchacha20/-/xchacha20-1.0.1.tgz#e98808d1f7d8b20e3ff37c71a3062a2a955d9a8c" + integrity sha512-1YkiZnFF4veUwBVhDnDYwo6EHeKzQK4FnLiO7ezCl/zu64uG0bCCAUROJaBkaLH+5BEsO3W7BTXTguMbSLlWSw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/xchacha20poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/xchacha20poly1305/-/xchacha20poly1305-1.0.1.tgz#addcaf30b92dd956f76b3357888e2f91b92e7a61" + integrity sha512-B1Abj0sMJ8h3HNmGnJ7vHBrAvxuNka6cJJoZ1ILN7iuacXp7sUYcgOVEOTLWj+rtQMpspY9tXSCRLPmN1mQNWg== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/chacha20poly1305" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + "@stablelib/xchacha20" "^1.0.1" + "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -2389,6 +2992,15 @@ dependencies: defer-to-connect "^2.0.0" +"@trust/keyto@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@trust/keyto/-/keyto-1.0.1.tgz#60fdea0a6049c04161a2a011772d6294edd7cd53" + integrity sha512-OXTmKkrnkwktCX86XA7eWs1TQ6u64enm0syzAfNhjigbuGLy5aLhbhRYWtjt4zzdG/irWudluheRZ9Ic9pCwsA== + dependencies: + asn1.js "^5.2.0" + base64url "^3.0.1" + elliptic "^6.5.2" + "@tsconfig/node10@^1.0.7": version "1.0.11" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" @@ -2427,7 +3039,7 @@ yaml "^2.6.1" yargs "^17.7.1" -"@tsoa/runtime@^6.0.0", "@tsoa/runtime@^6.6.0": +"@tsoa/runtime@^6.6.0": version "6.6.0" resolved "https://registry.yarnpkg.com/@tsoa/runtime/-/runtime-6.6.0.tgz#8cbe2773fed7867979b6dee51d6c8abd5d264e14" integrity sha512-+rF2gdL8CX+jQ82/IBc+MRJFNAvWPoBBl77HHJv3ESVMqbKhlhlo97JHmKyFbLcX6XOJN8zl8gfQpAEJN4SOMQ== @@ -2487,7 +3099,7 @@ dependencies: "@babel/types" "^7.20.7" -"@types/body-parser@*", "@types/body-parser@^1.19.2": +"@types/body-parser@*", "@types/body-parser@^1.19.5": version "1.19.6" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== @@ -2532,22 +3144,22 @@ "@types/keygrip" "*" "@types/node" "*" -"@types/cors@^2.8.12": +"@types/cors@^2.8.18": version "2.8.19" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== dependencies: "@types/node" "*" -"@types/eslint@^8.40.2": - version "8.56.12" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" - integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g== +"@types/eslint@^9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^1.0.6": version "1.0.8" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -2562,10 +3174,10 @@ "@types/range-parser" "*" "@types/send" "*" -"@types/express-serve-static-core@^5.0.0": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" - integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== +"@types/express-serve-static-core@^5.0.0", "@types/express-serve-static-core@^5.0.6": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" + integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2632,15 +3244,15 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^27.0.3": - version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" - integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== +"@types/jest@^29.5.14": + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.12": +"@types/json-schema@*", "@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2650,7 +3262,7 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/jsonwebtoken@^9.0.5": +"@types/jsonwebtoken@^9.0.9": version "9.0.10" resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz#a7932a47177dcd4283b6146f3bd5c26d82647f09" integrity sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA== @@ -2706,7 +3318,7 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/multer@^1.4.12", "@types/multer@^1.4.7": +"@types/multer@^1.4.12": version "1.4.13" resolved "https://registry.yarnpkg.com/@types/multer/-/multer-1.4.13.tgz#be483f909a77f13e0624cac3d001859eb12ae68b" integrity sha512-bhhdtPw7JqCiEfC9Jimx5LqX9BDIPJEh2q/fQ4bqbBPtyEZYr3cvF22NwG0DmPZNYA0CAf2CnqDB4KIGGpJcaw== @@ -2722,9 +3334,9 @@ form-data "^4.0.0" "@types/node@*", "@types/node@>=13.7.0": - version "24.0.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.3.tgz#f935910f3eece3a3a2f8be86b96ba833dc286cab" - integrity sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg== + version "24.0.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.12.tgz#3cf8719572145cfecf4cf9d180d8e7f74a61af00" + integrity sha512-LtOrbvDf5ndC9Xi+4QZjVL0woFymF/xSTKZKPgrrl7H7XoeDvnD+E2IclKVDyaK9UM756W/3BXqSU+JEHopA9g== dependencies: undici-types "~7.8.0" @@ -2735,12 +3347,12 @@ dependencies: undici-types "~6.19.2" -"@types/node@^18.18.8": - version "18.19.112" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.112.tgz#cd2aee9c075402e0e1942a44101428881dbeb110" - integrity sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog== +"@types/node@^20.17.0": + version "20.19.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.6.tgz#cf0bb71776bb061e700b6de68e0e531b5570f6ae" + integrity sha512-uYssdp9z5zH5GQ0L4zEJ2ZuavYsJwkozjiUzCRfGtaaQcyjAMJ34aP8idv61QlqTozu6kudyr6JMq9Chf09dfA== dependencies: - undici-types "~5.26.4" + undici-types "~6.21.0" "@types/node@^8.10.50": version "8.10.66" @@ -2771,7 +3383,7 @@ dependencies: "@types/node" "*" -"@types/ref-struct-di@^1.1.9": +"@types/ref-struct-di@^1.1.12": version "1.1.12" resolved "https://registry.yarnpkg.com/@types/ref-struct-di/-/ref-struct-di-1.1.12.tgz#5d9167488692816754c6d2b9064d9b0313609d59" integrity sha512-R2RNkGIROGoJTbXYTXrsXybnsQD4iAy26ih/G6HCeCB9luWFQKkr537XGz0uGJ1kH8y8RMkdbQmD/wBulrOPHw== @@ -2785,11 +3397,6 @@ dependencies: "@types/node" "*" -"@types/semver@^7.5.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" - integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== - "@types/send@*": version "0.17.5" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" @@ -2822,7 +3429,7 @@ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== -"@types/superagent@*": +"@types/superagent@^8.1.0": version "8.1.9" resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.9.tgz#28bfe4658e469838ed0bf66d898354bcab21f49f" integrity sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== @@ -2832,12 +3439,13 @@ "@types/node" "*" form-data "^4.0.0" -"@types/supertest@^2.0.12": - version "2.0.16" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.16.tgz#7a1294edebecb960d957bbe9b26002a2b7f21cd7" - integrity sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg== +"@types/supertest@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-6.0.3.tgz#d736f0e994b195b63e1c93e80271a2faf927388c" + integrity sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w== dependencies: - "@types/superagent" "*" + "@types/methods" "^1.1.4" + "@types/superagent" "^8.1.0" "@types/swagger-ui-express@^4.1.8": version "4.1.8" @@ -2847,17 +3455,17 @@ "@types/express" "*" "@types/serve-static" "*" -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== "@types/validator@^13.11.8": version "13.15.2" resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.15.2.tgz#ee533a20ab977df36917a454754c7e0df4aa6f8f" integrity sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q== -"@types/ws@^8.5.4": +"@types/ws@^8.18.1", "@types/ws@^8.5.4": version "8.18.1" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== @@ -2883,91 +3491,102 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^6.19.1": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" +"@typescript-eslint/eslint-plugin@^8.32.1": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.36.0.tgz#880ce277f8a30ccf539ec027acac157088f131ae" + integrity sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.36.0" + "@typescript-eslint/type-utils" "8.36.0" + "@typescript-eslint/utils" "8.36.0" + "@typescript-eslint/visitor-keys" "8.36.0" graphemer "^1.4.0" - ignore "^5.2.4" + ignore "^7.0.0" natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" + ts-api-utils "^2.1.0" -"@typescript-eslint/parser@^6.19.1": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== +"@typescript-eslint/parser@^8.26.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.36.0.tgz#003007fe2030013936b6634b9cf52c457d36ed42" + integrity sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q== dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/scope-manager" "8.36.0" + "@typescript-eslint/types" "8.36.0" + "@typescript-eslint/typescript-estree" "8.36.0" + "@typescript-eslint/visitor-keys" "8.36.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== +"@typescript-eslint/project-service@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.36.0.tgz#0c4acdcbe56476a43cdabaac1f08819424a379fd" + integrity sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/tsconfig-utils" "^8.36.0" + "@typescript-eslint/types" "^8.36.0" + debug "^4.3.4" -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== +"@typescript-eslint/scope-manager@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz#23e4196ed07d7ea3737a584fbebc9a79c3835168" + integrity sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA== dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" + "@typescript-eslint/types" "8.36.0" + "@typescript-eslint/visitor-keys" "8.36.0" -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== +"@typescript-eslint/tsconfig-utils@8.36.0", "@typescript-eslint/tsconfig-utils@^8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz#63ef8a20ae9b5754c6ceacbe87b2fe1aab12ba13" + integrity sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA== -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== +"@typescript-eslint/type-utils@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.36.0.tgz#16b092c2cbbb5549f6a4df1382a481586850502f" + integrity sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg== dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" + "@typescript-eslint/typescript-estree" "8.36.0" + "@typescript-eslint/utils" "8.36.0" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@8.36.0", "@typescript-eslint/types@^8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.36.0.tgz#d3d184adc2899e2912c13b17c1590486ef37c7ac" + integrity sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ== + +"@typescript-eslint/typescript-estree@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz#344857fa79f71715369554a3cbb6b4ff8695a7bc" + integrity sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg== + dependencies: + "@typescript-eslint/project-service" "8.36.0" + "@typescript-eslint/tsconfig-utils" "8.36.0" + "@typescript-eslint/types" "8.36.0" + "@typescript-eslint/visitor-keys" "8.36.0" debug "^4.3.4" - globby "^11.1.0" + fast-glob "^3.3.2" is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" +"@typescript-eslint/utils@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.36.0.tgz#2c9af5292f14e0aa4b0e9c7ac0406afafb299acf" + integrity sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.36.0" + "@typescript-eslint/types" "8.36.0" + "@typescript-eslint/typescript-estree" "8.36.0" -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== +"@typescript-eslint/visitor-keys@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz#7dc6ba4dd037979eb3a3bdd2093aa3604bb73674" + integrity sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA== dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" + "@typescript-eslint/types" "8.36.0" + eslint-visitor-keys "^4.2.1" "@unimodules/core@*": version "7.1.2" @@ -2984,108 +3603,169 @@ expo-modules-autolinking "^0.0.3" invariant "^2.2.4" -"@unrs/resolver-binding-android-arm-eabi@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.1.tgz#6fc1ae6fc252963aa545245f17c67d47164446e6" - integrity sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ== +"@unrs/resolver-binding-android-arm-eabi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz#9f5b04503088e6a354295e8ea8fe3cb99e43af81" + integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw== -"@unrs/resolver-binding-android-arm64@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.1.tgz#9498dbfdab375726a2f8474e0d50f5940d0d2b4a" - integrity sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g== +"@unrs/resolver-binding-android-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz#7414885431bd7178b989aedc4d25cccb3865bc9f" + integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g== -"@unrs/resolver-binding-darwin-arm64@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.1.tgz#e13e7b2a134f88b5e445e4548ee53a7ef33c56fb" - integrity sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ== +"@unrs/resolver-binding-darwin-arm64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz#b4a8556f42171fb9c9f7bac8235045e82aa0cbdf" + integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g== -"@unrs/resolver-binding-darwin-x64@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.1.tgz#6d2d0c63400852075de84612e51a4d6ee5c01391" - integrity sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w== +"@unrs/resolver-binding-darwin-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz#fd4d81257b13f4d1a083890a6a17c00de571f0dc" + integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ== -"@unrs/resolver-binding-freebsd-x64@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.1.tgz#71dc0b1e28e6e7c19388b873fd8ca87724e468b0" - integrity sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA== +"@unrs/resolver-binding-freebsd-x64@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz#d2513084d0f37c407757e22f32bd924a78cfd99b" + integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw== -"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.1.tgz#8c0c888f388af853649807712ec181cfb93335e4" - integrity sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw== +"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz#844d2605d057488d77fab09705f2866b86164e0a" + integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw== -"@unrs/resolver-binding-linux-arm-musleabihf@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.1.tgz#a974b25348fe3d329d8ee22f09c6d4a258734ede" - integrity sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A== +"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz#204892995cefb6bd1d017d52d097193bc61ddad3" + integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw== -"@unrs/resolver-binding-linux-arm64-gnu@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.1.tgz#0a52f119510e03f53e39d782a3183a45d4b0332c" - integrity sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg== +"@unrs/resolver-binding-linux-arm64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz#023eb0c3aac46066a10be7a3f362e7b34f3bdf9d" + integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ== -"@unrs/resolver-binding-linux-arm64-musl@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.1.tgz#db614df450992b8bc0dc19d17db924e95ebae282" - integrity sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA== +"@unrs/resolver-binding-linux-arm64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz#9e6f9abb06424e3140a60ac996139786f5d99be0" + integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w== -"@unrs/resolver-binding-linux-ppc64-gnu@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.1.tgz#ea7a53069c612288b6adc96f1b907609bcb5941d" - integrity sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw== +"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz#b111417f17c9d1b02efbec8e08398f0c5527bb44" + integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA== -"@unrs/resolver-binding-linux-riscv64-gnu@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.1.tgz#e6366f3a3e4ef435ee1b87ebe7ca87155fa1d1c9" - integrity sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw== +"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz#92ffbf02748af3e99873945c9a8a5ead01d508a9" + integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ== -"@unrs/resolver-binding-linux-riscv64-musl@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.1.tgz#198c1e552e2963035e237b2f5dbdb5c81fcde4bd" - integrity sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ== +"@unrs/resolver-binding-linux-riscv64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz#0bec6f1258fc390e6b305e9ff44256cb207de165" + integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew== -"@unrs/resolver-binding-linux-s390x-gnu@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.1.tgz#982501b8865f0d36c82b933b9de4e71894a749f5" - integrity sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ== +"@unrs/resolver-binding-linux-s390x-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz#577843a084c5952f5906770633ccfb89dac9bc94" + integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg== -"@unrs/resolver-binding-linux-x64-gnu@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.1.tgz#f93271025f814506fad97fa749a8ed8a0536e813" - integrity sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g== +"@unrs/resolver-binding-linux-x64-gnu@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz#36fb318eebdd690f6da32ac5e0499a76fa881935" + integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w== -"@unrs/resolver-binding-linux-x64-musl@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.1.tgz#9c13e0f602527a4bc77852268fa493b1845c5ee2" - integrity sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA== +"@unrs/resolver-binding-linux-x64-musl@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz#bfb9af75f783f98f6a22c4244214efe4df1853d6" + integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA== -"@unrs/resolver-binding-wasm32-wasi@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.1.tgz#d3c088be1b510cd02822bf0258861a2dd8dac096" - integrity sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw== +"@unrs/resolver-binding-wasm32-wasi@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz#752c359dd875684b27429500d88226d7cc72f71d" + integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ== dependencies: "@napi-rs/wasm-runtime" "^0.2.11" -"@unrs/resolver-binding-win32-arm64-msvc@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.1.tgz#c2aa3e371d5c53b962b1a7a45503a68e96f710a0" - integrity sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA== +"@unrs/resolver-binding-win32-arm64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35" + integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw== -"@unrs/resolver-binding-win32-ia32-msvc@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.1.tgz#12f1be2ce8041fdadfef23bf69e104ab8176127a" - integrity sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ== +"@unrs/resolver-binding-win32-ia32-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz#72fc57bc7c64ec5c3de0d64ee0d1810317bc60a6" + integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ== -"@unrs/resolver-binding-win32-x64-msvc@1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.1.tgz#5f9e5b6ce30c355161527e17734320ddfb1a4561" - integrity sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw== +"@unrs/resolver-binding-win32-x64-msvc@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777" + integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g== + +"@veramo/core@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@veramo/core/-/core-4.2.0.tgz#68e9db2ccb25fd00695e61f3e7de728736127f7d" + integrity sha512-HIqbXfCbwOAJelR5Ohsm22vr63cy6ND8Ua/+9wfMDAiymUUS7NryaJ/v6NRtnmIrNZqUMDdR9/TWdp4cCq5eBg== + dependencies: + credential-status "^2.0.5" + debug "^4.3.3" + did-jwt-vc "^3.1.0" + did-resolver "^4.0.1" + events "^3.2.0" + z-schema "^5.0.2" + +"@veramo/core@^4.2.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@veramo/core/-/core-4.3.0.tgz#47f2ecf9ce6ae5a77bf7e18e0e0e738967925999" + integrity sha512-9M4WfW5GNrb+O3Xndm+9HDoAo2JRgKrNC29+d/QzgA5Aosu1w0cY0IYba6FWXPRwpQkCiRI8An4j7/9Tk11E1Q== + dependencies: + credential-status "^2.0.5" + debug "^4.3.3" + did-jwt-vc "^3.1.0" + did-resolver "^4.0.1" + events "^3.2.0" + z-schema "^5.0.2" + +"@veramo/key-manager@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@veramo/key-manager/-/key-manager-4.2.0.tgz#22115d622d942f377dab8dd6d39683fb2d68a4f5" + integrity sha512-v/swPrxxI155iFxWjcJDmeyfMLOnAu/VRxJJE+cv8Ld9mmPi5xljaoO9/ozt0j4Cz92n6lFKqfVOxs2ECV85UA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@stablelib/ed25519" "^1.0.2" + "@veramo/core" "^4.2.0" + did-jwt "^6.9.0" + uint8arrays "^3.0.0" + uuid "^9.0.0" + +"@veramo/utils@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@veramo/utils/-/utils-4.2.0.tgz#43f5b90306aef7a3bb9dcee58eb03a6f4d573d5c" + integrity sha512-jHkli0Qz9rFsWzPAdfJP3P2MFxvVMZPDXZvtVBm8x1fjAGrw/Htz/c5drhDAeBXnqPd9011/7cyvp6AOvdbc8Q== + dependencies: + "@ethersproject/transactions" "^5.7.0" + "@stablelib/ed25519" "^1.0.2" + "@veramo/core" "^4.2.0" + blakejs "^1.1.1" + cross-fetch "^3.1.4" + debug "^4.3.3" + did-jwt "^6.9.0" + did-jwt-vc "^3.1.0" + did-resolver "^4.0.1" + elliptic "^6.5.4" + multiformats "9.7.1" + uint8arrays "^3.0.0" "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +"@zxing/text-encoding@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -3119,7 +3799,7 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn-jsx@^5.3.1: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -3131,12 +3811,7 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1: +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.4.1: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -3165,7 +3840,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3185,11 +3860,6 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.12.0: json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -3207,13 +3877,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -3231,6 +3894,11 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +ansis@^3.17.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" + integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== + anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -3239,6 +3907,11 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +app-root-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + "aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" @@ -3264,6 +3937,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" @@ -3277,7 +3955,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.8: +array-includes@^3.1.9: version "3.1.9" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== @@ -3299,12 +3977,7 @@ array-index@^1.0.0: debug "^2.2.0" es6-symbol "^3.0.2" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.5: +array.prototype.findlastindex@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== @@ -3317,7 +3990,7 @@ array.prototype.findlastindex@^1.2.5: es-object-atoms "^1.1.1" es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== @@ -3327,7 +4000,7 @@ array.prototype.flat@^1.3.2: es-abstract "^1.23.5" es-shim-unscopables "^1.0.2" -array.prototype.flatmap@^1.3.2: +array.prototype.flatmap@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== @@ -3360,6 +4033,23 @@ asmcrypto.js@^0.22.0: resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-0.22.0.tgz#38fc1440884d802c7bd37d1d23c2b26a5cd5d2d2" integrity sha512-usgMoyXjMbx/ZPdzTSXExhMPur2FTdz/Vo5PVx2gIaBcdAAJNOFlsdgqveM8Cff7W0v+xrf9BwjOV26JSAF9qA== +asn1.js-rfc5280@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/asn1.js-rfc5280/-/asn1.js-rfc5280-3.0.0.tgz#94e60498d5d4984b842d1a825485837574ccc902" + integrity sha512-Y2LZPOWeZ6qehv698ZgOGGCZXBQShObWnGthTrIFlIQjuV1gg2B8QOhWFRExq/MR1VnPpIIe7P9vX2vElxv+Pg== + dependencies: + asn1.js "^5.0.0" + +asn1.js@^5.0.0, asn1.js@^5.2.0, asn1.js@~5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1js@^3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.6.tgz#53e002ebe00c5f7fd77c1c047c3557d7c04dce25" @@ -3408,7 +4098,7 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axios@^1.4.0, axios@^1.6.3: +axios@^1.6.3, axios@^1.9.0: version "1.10.0" resolved "https://registry.yarnpkg.com/axios/-/axios-1.10.0.tgz#af320aee8632eaf2a400b6a1979fa75856f38d54" integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw== @@ -3533,6 +4223,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bech32@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + big-integer@^1.6.51: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" @@ -3548,17 +4243,22 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bn.js@^4.11.9: +blakejs@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.0.0, bn.js@^4.11.9: version "4.12.2" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== -bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.2.0, bn.js@^5.2.1, bn.js@~5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== -body-parser@1.20.3, body-parser@^1.20.0: +body-parser@1.20.3: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== @@ -3632,12 +4332,12 @@ brorand@^1.1.0: integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browserslist@^4.24.0: - version "4.25.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" - integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== dependencies: - caniuse-lite "^1.0.30001718" - electron-to-chromium "^1.5.160" + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" node-releases "^2.0.19" update-browserslist-db "^1.1.3" @@ -3670,7 +4370,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.3: +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.0: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== @@ -3683,6 +4383,11 @@ bytes@3.1.2, bytes@^3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +bytestreamjs@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/bytestreamjs/-/bytestreamjs-2.0.1.tgz#a32947c7ce389a6fa11a09a9a563d0a45889535e" + integrity sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ== + cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" @@ -3742,16 +4447,21 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001718: - version "1.0.30001724" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz#312e163553dd70d2c0fb603d74810c85d8ed94a0" - integrity sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA== +caniuse-lite@^1.0.30001726: + version "1.0.30001727" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85" + integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q== canonicalize@^1.0.1: version "1.0.8" resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A== +canonicalize@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.1.0.tgz#92a20ecfb94e96591badf4977dc2fb1bfbc31dc5" + integrity sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ== + cbor@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" @@ -3759,15 +4469,6 @@ cbor@^8.1.0: dependencies: nofilter "^3.1.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -3781,6 +4482,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + chokidar@^3.5.1: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" @@ -3801,6 +4507,11 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chownr@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" + integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== + ci-info@^3.2.0, ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" @@ -3811,7 +4522,7 @@ cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.2: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== -class-transformer@0.5.1: +class-transformer@0.5.1, class-transformer@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/class-transformer/-/class-transformer-0.5.1.tgz#24147d5dffd2a6cea930a3250a677addf96ab336" integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== @@ -3841,11 +4552,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@2.x: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3856,13 +4562,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -3870,11 +4569,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -3892,6 +4586,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.15.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3907,6 +4606,11 @@ compare-versions@^3.4.0: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== +compare-versions@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9" + integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg== + component-emitter@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" @@ -3997,19 +4701,34 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +credential-status@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/credential-status/-/credential-status-2.0.6.tgz#59e1efe0c7d5180cc12edcc8ea28834c86a8e109" + integrity sha512-l5ZwSbX/UXFJ3DQ3dFt4rc2BtfUu/rhlkefR7BL9EZsKPyCe21okJA9mDy4h/nXvMEwpYjSQEa5vzR7KZqhI9g== + dependencies: + did-jwt "^6.3.0" + did-resolver "^4.0.0" + credentials-context@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/credentials-context/-/credentials-context-2.0.0.tgz#68a9a1a88850c398d3bba4976c8490530af093e8" integrity sha512-/mFKax6FK26KjgV2KW2D4YqKgoJ5DVJpNt87X2Jc9IxT2HBMy7nEIlc+n7pEi+YFFe721XqrvZPd+jbyyBjsvQ== -cross-fetch@^4.1.0: +cross-fetch@^3.1.4, cross-fetch@^3.1.8: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== + dependencies: + node-fetch "^2.7.0" + +cross-fetch@^4.0.0, cross-fetch@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.1.0.tgz#8f69355007ee182e47fa692ecbaa37a52e43c3d2" integrity sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw== dependencies: node-fetch "^2.7.0" -cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: +cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -4018,6 +4737,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + crypto-ld@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/crypto-ld/-/crypto-ld-6.0.0.tgz#cf8dcf566cb3020bdb27f0279e6cc9b46d031cd7" @@ -4068,6 +4792,11 @@ data-view-byte-offset@^1.0.1: es-errors "^1.3.0" is-data-view "^1.0.1" +dayjs@^1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -4075,7 +4804,7 @@ debug@2.6.9, debug@^2.2.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== @@ -4101,7 +4830,7 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -dedent@^1.0.0: +dedent@^1.0.0, dedent@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== @@ -4154,6 +4883,14 @@ depd@2.0.0, depd@^2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +des.js@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -4177,16 +4914,52 @@ dezalgo@^1.0.4: asap "^2.0.0" wrappy "1" -did-resolver@^4.1.0: +did-jwt-vc@^3.1.0: + version "3.2.15" + resolved "https://registry.yarnpkg.com/did-jwt-vc/-/did-jwt-vc-3.2.15.tgz#977ea77318d14c2bc70e3b7199f2cd80df44b105" + integrity sha512-M/WPiL34CQUiN4bvWnZ0OFHJ3usPtstfQfbNbHAWHvwjeCGi7nAdv62VXHgy2xIhJMc790hH7PsMN3i6SCGEyg== + dependencies: + did-jwt "^7.4.5" + did-resolver "^4.1.0" + +did-jwt@6.11.6, did-jwt@^6.3.0, did-jwt@^6.9.0: + version "6.11.6" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-6.11.6.tgz#3eeb30d6bd01f33bfa17089574915845802a7d44" + integrity sha512-OfbWknRxJuUqH6Lk0x+H1FsuelGugLbBDEwsoJnicFOntIG/A4y19fn0a8RLxaQbWQ5gXg0yDq5E2huSBiiXzw== + dependencies: + "@stablelib/ed25519" "^1.0.2" + "@stablelib/random" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + "@stablelib/x25519" "^1.0.2" + "@stablelib/xchacha20poly1305" "^1.0.1" + bech32 "^2.0.0" + canonicalize "^2.0.0" + did-resolver "^4.0.0" + elliptic "^6.5.4" + js-sha3 "^0.8.0" + multiformats "^9.6.5" + uint8arrays "^3.0.0" + +did-jwt@^7.4.5: + version "7.4.7" + resolved "https://registry.yarnpkg.com/did-jwt/-/did-jwt-7.4.7.tgz#44105fb0a0cdfd78c087de52087422075c674700" + integrity sha512-Apz7nIfIHSKWIMaEP5L/K8xkwByvjezjTG0xiqwKdnNj1x8M0+Yasury5Dm/KPltxi2PlGfRPf3IejRKZrT8mQ== + dependencies: + "@noble/ciphers" "^0.4.0" + "@noble/curves" "^1.0.0" + "@noble/hashes" "^1.3.0" + "@scure/base" "^1.1.3" + canonicalize "^2.0.0" + did-resolver "^4.1.0" + multibase "^4.0.6" + multiformats "^9.6.2" + uint8arrays "3.1.1" + +did-resolver@^4.0.0, did-resolver@^4.0.1, did-resolver@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" integrity sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA== -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -4197,13 +4970,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -4211,17 +4977,10 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv@^16.4.5: - version "16.5.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692" - integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg== +dotenv@^16.4.7, dotenv@^16.5.0: + version "16.6.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" @@ -4273,12 +5032,12 @@ ejs@^3.1.10: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.160: - version "1.5.171" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz#e552b4fd73d4dd941ee4c70ae288a8a39f818726" - integrity sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ== +electron-to-chromium@^1.5.173: + version "1.5.181" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.181.tgz#2f68dc900651858200a423acdf12c644f6b7f014" + integrity sha512-+ISMj8OIQ+0qEeDj14Rt8WwcTOiqHyAB+5bnK1K7xNNLjBJ4hRCQfUkw8RWtcLbfBzDwc15ZnKH0c7SNOfwiyA== -elliptic@6.6.1: +elliptic@6.6.1, elliptic@^6.5.2, elliptic@^6.5.4: version "6.6.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== @@ -4291,6 +5050,19 @@ elliptic@6.6.1: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@~6.5.0: + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -4323,14 +5095,6 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enquirer@^2.3.5: - version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" - integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== - dependencies: - ansi-colors "^4.1.1" - strip-ansi "^6.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -4338,7 +5102,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: +es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: version "1.24.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== @@ -4478,11 +5242,6 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" @@ -4505,10 +5264,18 @@ escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^8.8.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@^10.1.5: + version "10.1.5" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" + integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== + +eslint-import-context@^0.1.8: + version "0.1.9" + resolved "https://registry.yarnpkg.com/eslint-import-context/-/eslint-import-context-0.1.9.tgz#967b0b2f0a90ef4b689125e088f790f0b7756dbe" + integrity sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg== + dependencies: + get-tsconfig "^4.10.1" + stable-hash-x "^0.2.0" eslint-import-resolver-node@^0.3.9: version "0.3.9" @@ -4519,133 +5286,117 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-import-resolver-typescript@^3.5.5: - version "3.10.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz#23dac32efa86a88e2b8232eb244ac499ad636db2" - integrity sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ== +eslint-import-resolver-typescript@^4.4.1: + version "4.4.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz#3e83a9c25f4a053fe20e1b07b47e04e8519a8720" + integrity sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw== dependencies: - "@nolyfill/is-core-module" "1.0.39" - debug "^4.4.0" - get-tsconfig "^4.10.0" + debug "^4.4.1" + eslint-import-context "^0.1.8" + get-tsconfig "^4.10.1" is-bun-module "^2.0.0" - stable-hash "^0.0.5" - tinyglobby "^0.2.13" - unrs-resolver "^1.6.2" + stable-hash-x "^0.2.0" + tinyglobby "^0.2.14" + unrs-resolver "^1.7.11" -eslint-module-utils@^2.12.0: +eslint-module-utils@^2.12.1: version "2.12.1" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.27.5: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== +eslint-plugin-import@^2.31.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" - string.prototype.trimend "^1.0.8" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.4.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz#470820964de9aedb37e9ce62c3266d2d26d08d15" + integrity sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.11.7" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + estraverse "^5.2.0" -eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@^9.27.0: + version "9.30.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.30.1.tgz#d4107b39964412acd9b5c0744f1c6df514fa1211" + integrity sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.0" + "@eslint/config-helpers" "^0.3.0" + "@eslint/core" "^0.14.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.30.1" + "@eslint/plugin-kit" "^0.3.1" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" + ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" + cross-spawn "^7.0.6" + debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.0.4" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" + optionator "^0.9.3" esniff@^2.0.1: version "2.0.1" @@ -4657,14 +5408,14 @@ esniff@^2.0.1: event-emitter "^0.3.5" type "^2.7.2" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" esprima@1.2.2: version "1.2.2" @@ -4676,7 +5427,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -4690,7 +5441,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -4747,9 +5498,9 @@ ethers@^5.1.0: "@ethersproject/wordlists" "5.8.0" ethers@^6.9.0: - version "6.14.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.14.4.tgz#0f6fbc562a8425c7c888da307fa71ef796be0c04" - integrity sha512-Jm/dzRs2Z9iBrT6e9TvGxyb5YVKAPLlpna7hjxH7KH/++DSh2T/JVmQUv7iHI5E55hDbp/gEVvstWYXVxXFzsA== + version "6.15.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.15.0.tgz#2980f2a3baf0509749b7e21f8692fa8a8349c0e3" + integrity sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ== dependencies: "@adraffy/ens-normalize" "1.10.1" "@noble/curves" "1.2.0" @@ -4772,6 +5523,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -4792,7 +5548,7 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.7.0: +expect@^29.0.0, expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -4822,9 +5578,9 @@ expo-random@*: base64-js "^1.3.0" express-rate-limit@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.0.tgz#6a67990a724b4fbbc69119419feef50c51e8b28f" - integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== + version "7.5.1" + resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.1.tgz#8c3a42f69209a3a1c969890070ece9e20a879dec" + integrity sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw== express@^4.17.1, express@^4.21.2: version "4.21.2" @@ -4924,7 +5680,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.5, fast-glob@^3.2.9: +fast-glob@^3.2.5, fast-glob@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== @@ -4999,12 +5755,12 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: node-domexception "^1.0.0" web-streams-polyfill "^3.0.3" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" filelist@^1.0.4: version "1.0.4" @@ -5058,7 +5814,7 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@~5.0.0: +find-up@^5.0.0, find-up@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -5082,14 +5838,13 @@ fix-esm@^1.0.1: "@babel/plugin-proposal-export-namespace-from" "^7.14.5" "@babel/plugin-transform-modules-commonjs" "^7.14.5" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flatted@^3.2.9: version "3.3.3" @@ -5127,6 +5882,11 @@ form-data@^4.0.0: hasown "^2.0.2" mime-types "^2.1.12" +format-util@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" + integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== + formdata-polyfill@^4.0.10: version "4.0.10" resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" @@ -5134,15 +5894,14 @@ formdata-polyfill@^4.0.10: dependencies: fetch-blob "^3.1.2" -formidable@^2.1.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.5.tgz#dd7ef4d55c164afaf9b6eb472bfd04b02d66d2dd" - integrity sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q== +formidable@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-3.5.4.tgz#ac9a593b951e829b3298f21aa9a2243932f32ed9" + integrity sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug== dependencies: "@paralleldrive/cuid2" "^2.2.2" dezalgo "^1.0.4" once "^1.4.0" - qs "^6.11.0" forwarded-parse@2.1.2: version "2.1.2" @@ -5217,11 +5976,6 @@ function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: hasown "^2.0.2" is-callable "^1.2.7" -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" @@ -5307,7 +6061,7 @@ get-symbol-from-current-process-h@^1.0.1, get-symbol-from-current-process-h@^1.0 resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz#510af52eaef873f7028854c3377f47f7bb200265" integrity sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw== -get-tsconfig@^4.10.0: +get-tsconfig@^4.10.1: version "4.10.1" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== @@ -5328,7 +6082,14 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob@^10.3.10: +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10, glob@^10.4.5: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -5352,17 +6113,10 @@ glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== globalthis@^1.0.4: version "1.0.4" @@ -5372,18 +6126,6 @@ globalthis@^1.0.4: define-properties "^1.2.1" gopd "^1.0.1" -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" @@ -5433,11 +6175,6 @@ has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -5474,7 +6211,7 @@ has-unicode@^2.0.1: resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@~1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -5564,17 +6301,22 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -import-fresh@^3.0.0, import-fresh@^3.2.1: +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +image-size@2.0.0-beta.2: + version "2.0.0-beta.2" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.0-beta.2.tgz#d898c962ca5f3337aae715e9b359a3adb6180b4f" + integrity sha512-1nDNnVxJixMWBynFgQ1q8+aVqK60TiNHpMyFAXt9xpzGZV+2lHI1IXjgdcAjBxPc4nx2ed1NdYs2I+Zfq+Zn7w== + +import-fresh@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== @@ -5613,7 +6355,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5639,6 +6381,14 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" @@ -5686,6 +6436,11 @@ is-boolean-object@^1.2.1: call-bound "^1.0.3" has-tostringtag "^1.0.2" +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-bun-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-2.0.0.tgz#4d7859a87c0fcac950c95e666730e745eae8bddd" @@ -5698,7 +6453,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0: +is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -5749,7 +6504,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.10: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.1.0" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== @@ -5838,7 +6593,7 @@ is-symbol@^1.0.4, is-symbol@^1.1.1: has-symbols "^1.1.0" safe-regex-test "^1.1.0" -is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15, is-typed-array@^1.1.3: version "1.1.15" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== @@ -6062,16 +6817,6 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -6112,11 +6857,6 @@ jest-environment-node@^29.7.0: jest-mock "^29.7.0" jest-util "^29.7.0" -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" @@ -6149,16 +6889,6 @@ jest-leak-detector@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-matcher-utils@^27.0.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - jest-matcher-utils@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" @@ -6365,7 +7095,7 @@ jest@^29.7.0: import-local "^3.0.2" jest-cli "^29.7.0" -joi@^17.12.3: +joi@^17.13.3: version "17.13.3" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== @@ -6381,7 +7111,102 @@ js-base64@^3.7.6: 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: +js-crypto-aes@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/js-crypto-aes/-/js-crypto-aes-1.0.6.tgz#8445a4ebb8bb6670bb10f54b29c2f22991944b7d" + integrity sha512-E2hu9z5+YtpDg9Un/bDfmH+I5dv/8aN+ozxv9L0ybZldcQ9T5iYDbBKdlKGBUKI3IvzoWSBSdnZnhwZaRIN46w== + dependencies: + js-crypto-env "^1.0.5" + +js-crypto-ec@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-ec/-/js-crypto-ec-1.0.7.tgz#e79552db61a34e6d7c9780a10753fc51c327c10e" + integrity sha512-vou6cW3wGAQ75RzS++I/rthELPFp0nhHCmaAKQvdhwD480Q3FltLgyNkTMgcLTdN+Ghj8BRU1/+3oIEIOOK/MA== + dependencies: + asn1.js "~5.4.1" + buffer "~6.0.0" + elliptic "~6.5.0" + js-crypto-env "^1.0.5" + js-crypto-hash "^1.0.7" + js-crypto-key-utils "^1.0.7" + js-crypto-random "^1.0.5" + js-encoding-utils "0.7.3" + +js-crypto-env@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/js-crypto-env/-/js-crypto-env-1.0.5.tgz#aed3ba39ea6641b8052d47842bf8e48502c4eb63" + integrity sha512-8/UNN3sG8J+yMzqwSNVaobaWhIz4MqZFoOg5OB0DFXqS8eFjj2YvdmLJqIWXPl57Yw10SvYx0DQOtkfsWIV9Aw== + +js-crypto-hash@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-hash/-/js-crypto-hash-1.0.7.tgz#a8cae28366739244601a8af8c8b9621dd742a922" + integrity sha512-GdbcVKjplbXJdR9oF2ks8+sBCLD7BUZ144Bc+Ie8OJuBHSIiHyMzdg2eD+ZYf87awTsKckNn1xIv+31+V2ewcA== + dependencies: + buffer "~6.0.0" + hash.js "~1.1.7" + js-crypto-env "^1.0.5" + md5 "~2.3.0" + sha3 "~2.1.0" + +js-crypto-hmac@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-hmac/-/js-crypto-hmac-1.0.7.tgz#a32ea9762d1f001d4985743a8ac58639a60a8d1e" + integrity sha512-OVn2wjAuOV7ToQYvRKY2VoElCHoRW7BepycPPuH73xbLygDczkef41YsXMpKLnVAyS5kdwMJQy9qlMR9touHTg== + dependencies: + js-crypto-env "^1.0.5" + js-crypto-hash "^1.0.7" + +js-crypto-key-utils@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-key-utils/-/js-crypto-key-utils-1.0.7.tgz#f320a5efb3500dc01fad0fed13066551717baa67" + integrity sha512-8/y/hpKevnAgr5EXz2x4IXMfqjzYZAzzXXc9OnAyI5JNdUtAufJkGfwlmZ+o40lTHv3k1egCiP/6pG/dZiqiEA== + dependencies: + asn1.js "~5.4.1" + buffer "~6.0.0" + des.js "~1.1.0" + elliptic "~6.5.0" + js-crypto-aes "^1.0.6" + js-crypto-hash "^1.0.7" + js-crypto-pbkdf "^1.0.7" + js-crypto-random "^1.0.5" + js-encoding-utils "0.7.3" + lodash.clonedeep "~4.5.0" + +js-crypto-pbkdf@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-pbkdf/-/js-crypto-pbkdf-1.0.7.tgz#352c7b56df090d1e102da29b32c0e9e323b7302f" + integrity sha512-FGs1PZeqGWM8k8k5JlAhHbBhLYtls+iVmeJEC22DUJ98Q3qo9Ki4cu3i0oxhjA2VpZ8V4MmV1DJHDTFYY4iOwg== + dependencies: + js-crypto-hash "^1.0.7" + js-crypto-hmac "^1.0.7" + js-encoding-utils "0.7.3" + +js-crypto-random@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/js-crypto-random/-/js-crypto-random-1.0.5.tgz#a588cb6fa0413b2a9cbca5fa4eb5707045f9c184" + integrity sha512-WydEQ5rrWLzgSkX1QNsuGinkv7z57UkYnDGo5f5oGtBe9QeUWUehdmPNNG4a4Sf8xGkjZBOhKaZqT1ACnyYCBA== + dependencies: + js-crypto-env "^1.0.5" + +js-crypto-rsa@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-crypto-rsa/-/js-crypto-rsa-1.0.7.tgz#a12f558329582154cc87f48c6a5291c526f42393" + integrity sha512-HLBCWNGzuUZMNbZ3nndrVAqth1m1mvuCO4tW7PpBDn4nsdLSnPnPd+SA7NvjsufWry38DnZdpFrK2gqbsrksGw== + dependencies: + bn.js "~5.2.0" + buffer "~6.0.0" + js-crypto-env "^1.0.5" + js-crypto-hash "^1.0.7" + js-crypto-key-utils "^1.0.7" + js-crypto-random "^1.0.5" + js-encoding-utils "0.7.3" + +js-encoding-utils@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/js-encoding-utils/-/js-encoding-utils-0.7.3.tgz#e442fbfddf5ec7ae148f5ed83c6b76cc3242e01c" + integrity sha512-cfjcyPOzkZ2esMAi6eAjuto7GiT6YpPan5xIeQyN/CFqFHTt1sdqP0PJPgzi3HqAqXKN9j9hduynkgwk+AAJOw== + +js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== @@ -6391,6 +7216,21 @@ js-sha3@0.8.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-x509-utils@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/js-x509-utils/-/js-x509-utils-1.0.7.tgz#c407d9274437f5a8825b357dd41b147bfe266602" + integrity sha512-IDB3CtWyvkNJVbDPZvzM9o3Y6CyzDiMls6R23ZPwfmHHil7nRrpLxtA098SENhqjv1t/6WTeeCKQ5dhIMOGiUw== + dependencies: + asn1.js "~5.4.1" + asn1.js-rfc5280 "~3.0.0" + bn.js "~5.2.0" + buffer "~6.0.0" + js-crypto-ec "^1.0.7" + js-crypto-key-utils "^1.0.7" + js-crypto-random "^1.0.5" + js-crypto-rsa "^1.0.7" + js-encoding-utils "0.7.3" + js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -6399,6 +7239,13 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" @@ -6502,6 +7349,11 @@ jsonpath@^1.1.1: static-eval "2.0.2" underscore "1.12.1" +jsonpointer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + jsonwebtoken@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" @@ -6540,6 +7392,11 @@ jwt-decode@^3.1.2: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== + keccak256@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" @@ -6558,7 +7415,7 @@ keccak@^3.0.2: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^4.0.0, keyv@^4.5.3: +keyv@^4.0.0, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -6603,6 +7460,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.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +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" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6653,11 +7522,16 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash.clonedeep@^4.5.0: +lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" @@ -6668,6 +7542,11 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" @@ -6749,10 +7628,10 @@ lru_map@^0.4.1: resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.4.1.tgz#f7b4046283c79fb7370c36f8fca6aee4324b0a98" integrity sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg== -luxon@^3.3.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.6.1.tgz#d283ffc4c0076cb0db7885ec6da1c49ba97e47b0" - integrity sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ== +luxon@^3.5.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.7.1.tgz#9bd09aa84a56afb00c57ea78a8ec5bd16eb24ec0" + integrity sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg== make-dir@^3.1.0: version "3.1.0" @@ -6785,6 +7664,15 @@ math-intrinsics@^1.1.0: resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== +md5@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -6817,7 +7705,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -6894,13 +7782,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -6939,7 +7820,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== @@ -6952,11 +7833,23 @@ minizlib@^2.1.1: minipass "^3.0.0" yallist "^4.0.0" +minizlib@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.2.tgz#f33d638eb279f664439aa38dc5f91607468cb574" + integrity sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA== + dependencies: + minipass "^7.1.2" + mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + module-details-from-path@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.4.tgz#b662fdcd93f6c83d3f25289da0ce81c8d9685b94" @@ -6977,7 +7870,24 @@ msrcrypto@^1.5.6: resolved "https://registry.yarnpkg.com/msrcrypto/-/msrcrypto-1.5.8.tgz#be419be4945bf134d8af52e9d43be7fa261f4a1c" integrity sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q== -multiformats@^9.4.2: +multibase@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multiformats@9.7.1: + version "9.7.1" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.7.1.tgz#ab348e5fd6f8e7fb3fd56033211bda48854e2173" + integrity sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw== + +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.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" integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== @@ -6987,10 +7897,10 @@ nanoid@^3.3.7: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== -napi-postinstall@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.2.4.tgz#419697d0288cb524623e422f919624f22a5e4028" - integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg== +napi-postinstall@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.0.tgz#888e51d1fb500e86dcf6ace1baccdbb377e654ce" + integrity sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA== natural-compare@^1.4.0: version "1.4.0" @@ -7017,7 +7927,7 @@ next-tick@^1.1.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -ngrok@^4.3.1: +ngrok@^4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/ngrok/-/ngrok-4.3.3.tgz#c51a1c4af2271ac3c9092ede3b0975caf7833217" integrity sha512-a2KApnkiG5urRxBPdDf76nNBQTnNNWXU0nXw0SsqsPI+Kmt2lGf9TdVYpYrHMnC+T9KhcNSWjCpWqBgC6QcFvw== @@ -7041,13 +7951,6 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-cache@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" - integrity sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg== - dependencies: - clone "2.x" - node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -7068,7 +7971,7 @@ node-fetch@^2.6.7, node-fetch@^2.7.0: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.2.10: +node-fetch@^3.2.10, node-fetch@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== @@ -7177,7 +8080,7 @@ object.groupby@^1.0.3: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.2.0: +object.values@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== @@ -7228,7 +8131,7 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: +optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== @@ -7297,7 +8200,7 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -pako@^2.0.4: +pako@^2.0.4, pako@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== @@ -7383,17 +8286,12 @@ path-to-regexp@^8.0.0: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: +picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -7420,16 +8318,23 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkijs@^3.2.4: + version "3.2.5" + resolved "https://registry.yarnpkg.com/pkijs/-/pkijs-3.2.5.tgz#dd6ce1c3b92b0467defc4b5a601d30ac1c1120a8" + integrity sha512-WX0la7n7CbnguuaIQoT4Fc0IJckPDOUldzOwlZ0nwpOcySS+Six/tXBdc0RX17J5o1To0SAr3xDJjDLsOfDFQA== + dependencies: + "@noble/hashes" "^1.4.0" + asn1js "^3.0.5" + bytestreamjs "^2.0.0" + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.6.3" + possible-typed-array-names@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -7447,21 +8352,12 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.8.8: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" +prettier@^3.5.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" + integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== -pretty-format@^29.7.0: +pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -7470,11 +8366,6 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -7532,7 +8423,7 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -pvtsutils@^1.3.5, pvtsutils@^1.3.6: +pvtsutils@^1.3.2, pvtsutils@^1.3.5, pvtsutils@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.6.tgz#ec46e34db7422b9e4fdc5490578c1883657d6001" integrity sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg== @@ -7551,7 +8442,7 @@ qs@6.13.0: dependencies: side-channel "^1.0.6" -qs@^6.11.0, qs@^6.14.0: +qs@^6.11.0, qs@^6.11.2, qs@^6.14.0: version "6.14.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== @@ -7568,6 +8459,11 @@ query-string@^7.0.1: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -7617,11 +8513,6 @@ rdf-canonize@^4.0.1: dependencies: setimmediate "^1.0.5" -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -7689,7 +8580,7 @@ reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: get-proto "^1.0.1" which-builtin-type "^1.2.1" -regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: +regexp.prototype.flags@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== @@ -7701,11 +8592,6 @@ regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: gopd "^1.2.0" set-function-name "^2.0.2" -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -7725,6 +8611,11 @@ require-in-the-middle@^7.1.1: module-details-from-path "^1.0.3" resolve "^1.22.8" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + resolve-alpn@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -7828,7 +8719,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.2.1, 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== @@ -7850,7 +8741,7 @@ safe-regex-test@^1.1.0: es-errors "^1.3.0" is-regex "^1.2.1" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -7865,7 +8756,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.7.1, semver@^7.7.2: +semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1, semver@^7.7.2: version "7.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== @@ -7979,6 +8870,22 @@ 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.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" + +sha3@~2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8096,10 +9003,15 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -stable-hash@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269" - integrity sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA== +sql-highlight@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sql-highlight/-/sql-highlight-6.1.0.tgz#e34024b4c6eac2744648771edfe3c1f894153743" + integrity sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA== + +stable-hash-x@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stable-hash-x/-/stable-hash-x-0.2.0.tgz#dfd76bfa5d839a7470125c6a6b3c8b22061793e9" + integrity sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ== stack-utils@^2.0.3: version "2.0.6" @@ -8178,25 +9090,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.10: - version "4.0.12" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" - integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== - dependencies: - call-bind "^1.0.8" - call-bound "^1.0.3" - define-properties "^1.2.1" - es-abstract "^1.23.6" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.6" - gopd "^1.2.0" - has-symbols "^1.1.0" - internal-slot "^1.1.0" - regexp.prototype.flags "^1.5.3" - set-function-name "^2.0.2" - side-channel "^1.1.0" - string.prototype.trim@^1.2.10: version "1.2.10" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" @@ -8210,7 +9103,7 @@ string.prototype.trim@^1.2.10: es-object-atoms "^1.0.0" has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -8277,41 +9170,33 @@ strip-json-comments@^2.0.0: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -superagent@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" - integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== +superagent@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-10.2.2.tgz#7cb361250069962c2037154ae9d0f4051efa72ac" + integrity sha512-vWMq11OwWCC84pQaFPzF/VO3BrjkCeewuvJgt1jfV0499Z1QSAWN4EqfMM5WlFDDX9/oP8JjlDKpblrmEoyu4Q== dependencies: component-emitter "^1.3.0" cookiejar "^2.1.4" debug "^4.3.4" fast-safe-stringify "^2.1.1" form-data "^4.0.0" - formidable "^2.1.2" + formidable "^3.5.4" methods "^1.1.2" mime "2.6.0" qs "^6.11.0" - semver "^7.3.8" -supertest@^6.2.3: - version "6.3.4" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.4.tgz#2145c250570c2ea5d337db3552dbfb78a2286218" - integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw== +supertest@^7.1.1: + version "7.1.3" + resolved "https://registry.yarnpkg.com/supertest/-/supertest-7.1.3.tgz#3d57ef0edcfbb131929d8b2806129294abe90648" + integrity sha512-ORY0gPa6ojmg/C74P/bDoS21WL6FMXq5I8mawkEz30/zkwdu0gOeqstFy316vHG6OKxqQ+IbGneRemHI8WraEw== dependencies: methods "^1.1.2" - superagent "^8.1.2" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" + superagent "^10.2.2" supports-color@^7.1.0: version "7.2.0" @@ -8333,9 +9218,9 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== swagger-ui-dist@>=4.11.0: - version "5.25.2" - resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.25.2.tgz#2e07608b44031a6bbb6ceb790165ca05980bd423" - integrity sha512-V4JyoygUe5nCbn7bAD0fVKSC0yNcL3ROIQtGC7M0NATKuyosCSmMU6T0yDZIIuGpSxjsjZh/D2Ejb8lnF2jjxw== + version "5.26.2" + resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.26.2.tgz#85973e4b696f3e6a76dfdad55261458e3ac192d7" + integrity sha512-WmMS9iMlHQejNm/Uw5ZTo4e3M2QMmEavRz7WLWVsq7Mlx4PSHJbY+VCrLsAz9wLxyHVgrJdt7N8+SdQLa52Ykg== dependencies: "@scarf/scarf" "=1.4.0" @@ -8346,7 +9231,14 @@ swagger-ui-express@^4.4.0: dependencies: swagger-ui-dist ">=4.11.0" -table@^6.0.9, table@^6.8.0: +synckit@^0.11.7: + version "0.11.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" + integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== + dependencies: + "@pkgr/core" "^0.2.4" + +table@^6.8.0: version "6.9.0" resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== @@ -8369,6 +9261,18 @@ tar@^6.1.11: mkdirp "^1.0.3" yallist "^4.0.0" +tar@^7.4.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571" + integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw== + dependencies: + "@isaacs/fs-minipass" "^4.0.0" + chownr "^3.0.0" + minipass "^7.1.2" + minizlib "^3.0.1" + mkdirp "^3.0.1" + yallist "^5.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -8378,12 +9282,7 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tinyglobby@^0.2.13: +tinyglobby@^0.2.14: version "0.2.14" resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== @@ -8403,6 +9302,15 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== +to-buffer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.1.tgz#2ce650cdb262e9112a18e65dc29dcb513c8155e0" + integrity sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -8425,17 +9333,17 @@ tree-kill@^1.2.2: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -ts-api-utils@^1.0.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" - integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== ts-deepmerge@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/ts-deepmerge/-/ts-deepmerge-7.0.3.tgz#e7053ddb45be093b71d7f9a5a05935ae119f1d31" integrity sha512-Du/ZW2RfwV/D4cmA5rXafYjBQVuvu4qGiEEla4EmEHVHgRdx68Gftx7i66jn2bzHPwSVZY36Ae6OuDn9el4ZKA== -ts-jest@^29.1.2: +ts-jest@^29.3.4: version "29.4.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.0.tgz#bef0ee98d94c83670af7462a1617bf2367a83740" integrity sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q== @@ -8515,7 +9423,7 @@ tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2, tslib@^2.7.0, tslib@^2.8.1: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2, tslib@^2.6.3, tslib@^2.7.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -8535,7 +9443,7 @@ tsoa@^6.0.1: "@tsoa/cli" "^6.6.0" "@tsoa/runtime" "^6.6.0" -tsyringe@^4.6.0, tsyringe@^4.8.0: +tsyringe@^4.10.0, tsyringe@^4.8.0: version "4.10.0" resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.10.0.tgz#d0c95815d584464214060285eaaadd94aa03299c" integrity sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw== @@ -8643,7 +9551,27 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript@^5.3.3, typescript@^5.7.2: +typeorm@^0.3.20: + version "0.3.25" + resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.3.25.tgz#9a416f93cda0f612b20f8450e03d6b0e11b467fb" + integrity sha512-fTKDFzWXKwAaBdEMU4k661seZewbNYET4r1J/z3Jwf+eAvlzMVpTLKAVcAzg75WwQk7GDmtsmkZ5MfkmXCiFWg== + dependencies: + "@sqltools/formatter" "^1.2.5" + ansis "^3.17.0" + app-root-path "^3.1.0" + buffer "^6.0.3" + dayjs "^1.11.13" + debug "^4.4.0" + dedent "^1.6.0" + dotenv "^16.4.7" + glob "^10.4.5" + sha.js "^2.4.11" + sql-highlight "^6.0.0" + tslib "^2.8.1" + uuid "^11.1.0" + yargs "^17.7.2" + +typescript@^5.7.2, typescript@^5.8.3: version "5.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== @@ -8653,7 +9581,7 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== -uint8arrays@^3.1.1: +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== @@ -8675,16 +9603,16 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - undici-types@~6.19.2: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + undici-types@~7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" @@ -8707,32 +9635,32 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unrs-resolver@^1.6.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.9.1.tgz#c3579abf32e48dbb1b429f4812196611afb021cf" - integrity sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g== +unrs-resolver@^1.7.11: + version "1.11.1" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9" + integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg== dependencies: - napi-postinstall "^0.2.2" + napi-postinstall "^0.3.0" optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi" "1.9.1" - "@unrs/resolver-binding-android-arm64" "1.9.1" - "@unrs/resolver-binding-darwin-arm64" "1.9.1" - "@unrs/resolver-binding-darwin-x64" "1.9.1" - "@unrs/resolver-binding-freebsd-x64" "1.9.1" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.1" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.1" - "@unrs/resolver-binding-linux-arm64-gnu" "1.9.1" - "@unrs/resolver-binding-linux-arm64-musl" "1.9.1" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.1" - "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.1" - "@unrs/resolver-binding-linux-riscv64-musl" "1.9.1" - "@unrs/resolver-binding-linux-s390x-gnu" "1.9.1" - "@unrs/resolver-binding-linux-x64-gnu" "1.9.1" - "@unrs/resolver-binding-linux-x64-musl" "1.9.1" - "@unrs/resolver-binding-wasm32-wasi" "1.9.1" - "@unrs/resolver-binding-win32-arm64-msvc" "1.9.1" - "@unrs/resolver-binding-win32-ia32-msvc" "1.9.1" - "@unrs/resolver-binding-win32-x64-msvc" "1.9.1" + "@unrs/resolver-binding-android-arm-eabi" "1.11.1" + "@unrs/resolver-binding-android-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-arm64" "1.11.1" + "@unrs/resolver-binding-darwin-x64" "1.11.1" + "@unrs/resolver-binding-freebsd-x64" "1.11.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.11.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.11.1" + "@unrs/resolver-binding-linux-x64-musl" "1.11.1" + "@unrs/resolver-binding-wasm32-wasi" "1.11.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.11.1" update-browserslist-db@^1.1.3: version "1.1.3" @@ -8749,16 +9677,40 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url-parse@^1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +util@^0.12.3: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + "uuid@^7.0.0 || ^8.0.0": version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -8774,11 +9726,6 @@ v8-compile-cache-lib@^3.0.1: resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -v8-compile-cache@^2.0.3: - version "2.4.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" - integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== - v8-to-istanbul@^9.0.1: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" @@ -8788,7 +9735,12 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" -validator@^13.12.0, validator@^13.9.0: +valibot@^0.42.1: + version "0.42.1" + resolved "https://registry.yarnpkg.com/valibot/-/valibot-0.42.1.tgz#a31183d8e9d7552f98e22ca0977172cab8815188" + integrity sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw== + +validator@^13.12.0, validator@^13.7.0, validator@^13.9.0: version "13.15.15" resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.15.tgz#246594be5671dc09daa35caec5689fcd18c6e7e4" integrity sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A== @@ -8818,6 +9770,15 @@ web-did-resolver@^2.0.21: cross-fetch "^4.1.0" did-resolver "^4.1.0" +web-encoding@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" + integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== + dependencies: + util "^0.12.3" + optionalDependencies: + "@zxing/text-encoding" "0.9.0" + web-streams-polyfill@^3.0.3: version "3.3.3" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" @@ -8892,7 +9853,7 @@ which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.16, which-typed-array@^1.1.19: +which-typed-array@^1.1.16, which-typed-array@^1.1.19, which-typed-array@^1.1.2: version "1.1.19" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== @@ -8979,10 +9940,10 @@ ws@8.18.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== -ws@^8.13.0: - version "8.18.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== +ws@^8.13.0, ws@^8.18.2: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== xtend@^4.0.0: version "4.0.2" @@ -9004,12 +9965,17 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yallist@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" + integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== + yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.2.2, yaml@^2.6.1: +yaml@^2.2.2, yaml@^2.4.5, yaml@^2.6.1: version "2.8.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== @@ -9049,3 +10015,19 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +z-schema@^5.0.2: + version "5.0.6" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.6.tgz#46d6a687b15e4a4369e18d6cb1c7b8618fc256c5" + integrity sha512-+XR1GhnWklYdfr8YaZv/iu+vY+ux7V5DS5zH1DQf6bO5ufrt/5cgNhVO5qyhsjFXvsqQb/f08DWE9b6uPscyAg== + dependencies: + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" + optionalDependencies: + commander "^10.0.0" + +zod@^3.23.8: + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==