diff --git a/.github/workflows/provider_image.yml b/.github/workflows/provider_image.yml index c13ef0fe80..35c40cce3c 100644 --- a/.github/workflows/provider_image.yml +++ b/.github/workflows/provider_image.yml @@ -5,7 +5,7 @@ name: provider_image on: pull_request: branches: [main, dev, staging, release/*] - types: + types: - opened # when a PR is opened - synchronize # when a PR is pushed to - reopened # when a PR is reopened @@ -151,7 +151,7 @@ jobs: sleep 20s docker logs "$CONTAINER" >& provider.log cat provider.log - grep -oE "Version: \".*\"" provider.log || (cat provider.log && exit 1) + grep -oE "Version: \\\\\".*\\\\\"" provider.log || (cat provider.log && exit 1) - name: Build the provider-mock package id: build_provider_mock_package diff --git a/demos/client-bundle-example/package.json b/demos/client-bundle-example/package.json index 3b69df4fdf..9f60e84cf4 100644 --- a/demos/client-bundle-example/package.json +++ b/demos/client-bundle-example/package.json @@ -13,9 +13,9 @@ "start": "vite serve ./src --port 9232 --config vite.config.ts", "clean": "echo 'nothing to clean'" }, - "version": "2.1.11", + "version": "2.1.12", "devDependencies": { - "@prosopo/dotenv": "2.1.11", + "@prosopo/dotenv": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/demos/client-example-server/package.json b/demos/client-example-server/package.json index f77d56450f..2145172b9a 100644 --- a/demos/client-example-server/package.json +++ b/demos/client-example-server/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/client-example-server", - "version": "2.1.11", + "version": "2.1.12", "description": "Backend for client-example", "main": "dist/app.js", "type": "module", @@ -32,12 +32,12 @@ "@noble/hashes": "1.5.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/server": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/server": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "@typegoose/auto-increment": "4.6.0", "cors": "2.8.5", "express": "4.21.0", @@ -47,7 +47,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/jsonwebtoken": "9.0.6", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/demos/client-example/package.json b/demos/client-example/package.json index 39390fef3a..43d0544849 100644 --- a/demos/client-example/package.json +++ b/demos/client-example/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/client-example", - "version": "2.1.11", + "version": "2.1.12", "private": true, "type": "module", "engines": { @@ -13,14 +13,14 @@ "@mui/material": "5.9.1", "@polkadot/extension-dapp": "0.46.9", "@polkadot/extension-inject": "0.46.9", - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha-frictionless": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/server": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/vite-plugin-watch-workspace": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha-frictionless": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/server": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/vite-plugin-watch-workspace": "2.1.12", "@types/react-dom": "18.3.0", "@vitejs/plugin-react": "4.3.1", "react": "18.3.1", @@ -40,8 +40,8 @@ } }, "devDependencies": { - "@prosopo/config": "2.1.11", - "@prosopo/dotenv": "2.1.11", + "@prosopo/config": "2.1.12", + "@prosopo/dotenv": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/demos/cypress-shared/package.json b/demos/cypress-shared/package.json index 3b14ee953b..f7f30c809e 100644 --- a/demos/cypress-shared/package.json +++ b/demos/cypress-shared/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/cypress-shared", - "version": "2.1.11", + "version": "2.1.12", "private": true, "type": "module", "engines": { @@ -8,14 +8,14 @@ "npm": ">=9" }, "dependencies": { - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { "@cypress/xpath": "2.0.3", - "@prosopo/common": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/types-database": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/types-database": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/demos/provider-mock/package.json b/demos/provider-mock/package.json index a9be971fdf..9c0fe29960 100644 --- a/demos/provider-mock/package.json +++ b/demos/provider-mock/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/provider-mock", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -16,9 +16,9 @@ "build:cjs": "echo 'no cjs build'" }, "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", "cors": "2.8.5", "express": "4.21.0" }, diff --git a/dev/config/package.json b/dev/config/package.json index 97049f3f16..0401f9d6d3 100644 --- a/dev/config/package.json +++ b/dev/config/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/config", - "version": "2.1.11", + "version": "2.1.12", "description": "Prosopo config library", "main": "./dist/index.js", "type": "module", @@ -36,9 +36,9 @@ "@babel/plugin-transform-react-jsx": "7.25.2", "@babel/plugin-transform-runtime": "7.25.4", "@babel/preset-env": "7.25.4", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "@rollup/plugin-alias": "5.1.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-commonjs": "26.0.1", diff --git a/dev/flux/package.json b/dev/flux/package.json index 06f6a07a31..833766d389 100644 --- a/dev/flux/package.json +++ b/dev/flux/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/flux", - "version": "2.1.11", + "version": "2.1.12", "description": "Tools for managing Flux deployment", "main": "dist/index.js", "bin": { @@ -24,10 +24,10 @@ "@noble/curves": "1.6.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/util": "2.1.12", "openpgp": "5.11.2", "qs": "6.13.0", "socket.io-client": "4.7.5", diff --git a/dev/gh-actions/package.json b/dev/gh-actions/package.json index f28889214d..061a5e326b 100644 --- a/dev/gh-actions/package.json +++ b/dev/gh-actions/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/gh-actions", - "version": "2.1.11", + "version": "2.1.12", "description": "", "private": true, "scripts": { diff --git a/dev/lint/package.json b/dev/lint/package.json index 8fe25a613d..35a81fc41e 100644 --- a/dev/lint/package.json +++ b/dev/lint/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/lint", - "version": "2.1.11", + "version": "2.1.12", "description": "", "private": true, "scripts": { @@ -37,7 +37,7 @@ "npm": ">=9" }, "dependencies": { - "@prosopo/util": "2.1.11", + "@prosopo/util": "2.1.12", "fast-glob": "3.3.2", "zod": "3.23.8" } diff --git a/dev/prosoponator-bot/package.json b/dev/prosoponator-bot/package.json index 72be3135a4..051268bc61 100644 --- a/dev/prosoponator-bot/package.json +++ b/dev/prosoponator-bot/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/prosoponator-bot", - "version": "2.1.11", + "version": "2.1.12", "description": "", "private": true, "scripts": { diff --git a/dev/scripts/env.development b/dev/scripts/env.development index 62f0dfffae..6693a05702 100644 --- a/dev/scripts/env.development +++ b/dev/scripts/env.development @@ -18,7 +18,7 @@ PROSOPO_DEFAULT_ENVIRONMENT=development PROSOPO_LOG_LEVEL=debug PROSOPO_MONGO_CAPTCHA_URI= PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events -PROSOPO_PACKAGE_VERSION=2.1.11 +PROSOPO_PACKAGE_VERSION=2.1.12 PROSOPO_PROVIDER_ACCOUNT_PASSWORD= PROSOPO_PROVIDER_ADDRESS=5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV PROSOPO_PROVIDER_JSON= diff --git a/dev/scripts/env.production b/dev/scripts/env.production index 9081059c6b..cb328e5b00 100644 --- a/dev/scripts/env.production +++ b/dev/scripts/env.production @@ -16,7 +16,7 @@ PROSOPO_DEFAULT_ENVIRONMENT=production PROSOPO_LOG_LEVEL=info PROSOPO_MONGO_CAPTCHA_URI= PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events -PROSOPO_PACKAGE_VERSION=2.1.11 +PROSOPO_PACKAGE_VERSION=2.1.12 PROSOPO_PROVIDER_ACCOUNT_PASSWORD= PROSOPO_PROVIDER_ADDRESS= PROSOPO_PROVIDER_JSON= diff --git a/dev/scripts/env.staging b/dev/scripts/env.staging index 1b66df3201..750ac53573 100644 --- a/dev/scripts/env.staging +++ b/dev/scripts/env.staging @@ -21,7 +21,7 @@ PROSOPO_DEFAULT_ENVIRONMENT=staging PROSOPO_LOG_LEVEL=info PROSOPO_MONGO_CAPTCHA_URI= PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events -PROSOPO_PACKAGE_VERSION=2.1.11 +PROSOPO_PACKAGE_VERSION=2.1.12 PROSOPO_PROVIDER_ACCOUNT_PASSWORD= PROSOPO_PROVIDER_ADDRESS= PROSOPO_PROVIDER_JSON= diff --git a/dev/scripts/env.test b/dev/scripts/env.test index 65ab37c695..7f642c03c9 100644 --- a/dev/scripts/env.test +++ b/dev/scripts/env.test @@ -21,7 +21,7 @@ PROSOPO_DEFAULT_ENVIRONMENT=development PROSOPO_LOG_LEVEL=info PROSOPO_MONGO_CAPTCHA_URI=mongodb://root:root@localhost:27017/captchastorage?authSource=admin PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events -PROSOPO_PACKAGE_VERSION=2.1.11 +PROSOPO_PACKAGE_VERSION=2.1.12 PROSOPO_PROVIDER_ACCOUNT_PASSWORD= PROSOPO_PROVIDER_ADDRESS=5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV PROSOPO_PROVIDER_JSON= diff --git a/dev/scripts/package.json b/dev/scripts/package.json index 0f5ab09a7f..3880ff423f 100644 --- a/dev/scripts/package.json +++ b/dev/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/scripts", - "version": "2.1.11", + "version": "2.1.12", "description": "Dev scripts for working with prosopo packages", "main": "dist/index.js", "type": "module", @@ -26,18 +26,18 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/cli": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/cli": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12", "dotenv": "16.4.5", "fast-glob": "3.3.2", "fs-extra": "11.2.0", diff --git a/dev/ts-brand/package.json b/dev/ts-brand/package.json index d86f06eef9..51bf61bbdd 100644 --- a/dev/ts-brand/package.json +++ b/dev/ts-brand/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/ts-brand", - "version": "2.1.11", + "version": "2.1.12", "description": "Brand your TypeScript types", "main": "./dist/index.js", "type": "module", @@ -24,7 +24,7 @@ "author": "Prosopo Limited", "license": "Apache-2.0", "dependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5" }, "devDependencies": { diff --git a/dev/vite-plugin-watch-workspace/package.json b/dev/vite-plugin-watch-workspace/package.json index 91ac2911c0..887102238d 100644 --- a/dev/vite-plugin-watch-workspace/package.json +++ b/dev/vite-plugin-watch-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/vite-plugin-watch-workspace", - "version": "2.1.11", + "version": "2.1.12", "description": "Vite plugin for watching and rebuilding external files", "main": "./dist/index.js", "type": "module", @@ -23,7 +23,7 @@ "author": "Prosopo Limited", "license": "Apache-2.0", "dependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "debug": "4.3.7", "esbuild": "0.23.1", "fast-glob": "3.3.2" diff --git a/docker/images/provider/package.json b/docker/images/provider/package.json index 2f79a644c6..980d747b29 100644 --- a/docker/images/provider/package.json +++ b/docker/images/provider/package.json @@ -5,5 +5,5 @@ "node": "20", "npm": ">=9" }, - "version": "2.1.11" + "version": "2.1.12" } diff --git a/package-lock.json b/package-lock.json index 0d4163a2fe..f395e068ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@prosopo/captcha", - "version": "2.1.11", + "version": "2.1.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@prosopo/captcha", - "version": "2.1.11", + "version": "2.1.12", "hasInstallScript": true, "license": "Apache-2.0", "workspaces": [ @@ -40,9 +40,9 @@ }, "demos/client-bundle-example": { "name": "@prosopo/client-bundle-example", - "version": "2.1.11", + "version": "2.1.12", "devDependencies": { - "@prosopo/dotenv": "2.1.11", + "@prosopo/dotenv": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -61,21 +61,21 @@ }, "demos/client-example": { "name": "@prosopo/client-example", - "version": "2.1.11", + "version": "2.1.12", "dependencies": { "@emotion/react": "11.13.3", "@emotion/styled": "11.13.0", "@mui/material": "5.9.1", "@polkadot/extension-dapp": "0.46.9", "@polkadot/extension-inject": "0.46.9", - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha-frictionless": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/server": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/vite-plugin-watch-workspace": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha-frictionless": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/server": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/vite-plugin-watch-workspace": "2.1.12", "@types/react-dom": "18.3.0", "@vitejs/plugin-react": "4.3.1", "react": "18.3.1", @@ -83,8 +83,8 @@ "react-router-dom": "6.26.2" }, "devDependencies": { - "@prosopo/config": "2.1.11", - "@prosopo/dotenv": "2.1.11", + "@prosopo/config": "2.1.12", + "@prosopo/dotenv": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -103,18 +103,18 @@ }, "demos/client-example-server": { "name": "@prosopo/client-example-server", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@noble/hashes": "1.5.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/server": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/server": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "@typegoose/auto-increment": "4.6.0", "cors": "2.8.5", "express": "4.21.0", @@ -124,7 +124,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/jsonwebtoken": "9.0.6", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -143,16 +143,16 @@ }, "demos/cypress-shared": { "name": "@prosopo/cypress-shared", - "version": "2.1.11", + "version": "2.1.12", "dependencies": { - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { "@cypress/xpath": "2.0.3", - "@prosopo/common": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/types-database": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/types-database": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -174,12 +174,12 @@ }, "demos/provider-mock": { "name": "@prosopo/provider-mock", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", "cors": "2.8.5", "express": "4.21.0" }, @@ -201,7 +201,7 @@ }, "dev/config": { "name": "@prosopo/config", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@babel/core": "7.25.2", @@ -209,9 +209,9 @@ "@babel/plugin-transform-react-jsx": "7.25.2", "@babel/plugin-transform-runtime": "7.25.4", "@babel/preset-env": "7.25.4", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "@rollup/plugin-alias": "5.1.0", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-commonjs": "26.0.1", @@ -267,16 +267,16 @@ }, "dev/flux": { "name": "@prosopo/flux", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@noble/curves": "1.6.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/util": "2.1.12", "openpgp": "5.11.2", "qs": "6.13.0", "socket.io-client": "4.7.5", @@ -305,7 +305,7 @@ }, "dev/gh-actions": { "name": "@prosopo/gh-actions", - "version": "2.1.11", + "version": "2.1.12", "license": "ISC", "dependencies": { "@octokit/graphql": "8.1.1", @@ -381,10 +381,10 @@ }, "dev/lint": { "name": "@prosopo/lint", - "version": "2.1.11", + "version": "2.1.12", "license": "ISC", "dependencies": { - "@prosopo/util": "2.1.11", + "@prosopo/util": "2.1.12", "fast-glob": "3.3.2", "zod": "3.23.8" }, @@ -407,7 +407,7 @@ }, "dev/prosoponator-bot": { "name": "@prosopo/prosoponator-bot", - "version": "2.1.11", + "version": "2.1.12", "license": "ISC", "dependencies": { "@actions/core": "1.10.1", @@ -439,7 +439,7 @@ }, "dev/scripts": { "name": "@prosopo/scripts", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@iarna/toml": "2.2.5", @@ -448,18 +448,18 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/cli": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/cli": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12", "dotenv": "16.4.5", "fast-glob": "3.3.2", "fs-extra": "11.2.0", @@ -513,10 +513,10 @@ }, "dev/ts-brand": { "name": "@prosopo/ts-brand", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5" }, "devDependencies": { @@ -537,10 +537,10 @@ }, "dev/vite-plugin-watch-workspace": { "name": "@prosopo/vite-plugin-watch-workspace", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "debug": "4.3.7", "esbuild": "0.23.1", "fast-glob": "3.3.2" @@ -21025,7 +21025,7 @@ }, "packages/account": { "name": "@prosopo/account", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/extension-base": "0.46.9", @@ -21034,14 +21034,14 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/fingerprint": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/fingerprint": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21059,13 +21059,13 @@ }, "packages/api": { "name": "@prosopo/api", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/types": "2.1.11" + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21083,22 +21083,22 @@ }, "packages/cli": { "name": "@prosopo/cli", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/keyring": "12.6.2", "@polkadot/types-codec": "10.13.1", "@polkadot/util-crypto": "12.6.2", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/locale": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/locale": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "cors": "2.8.5", "cron-parser": "4.9.0", "dotenv": "16.4.5", @@ -21107,7 +21107,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/cors": "2.8.17", "@types/yargs": "17.0.33", "@vitest/coverage-v8": "2.1.1", @@ -21128,16 +21128,16 @@ }, "packages/common": { "name": "@prosopo/common", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/util-crypto": "12.6.2", - "@prosopo/locale": "2.1.11", + "@prosopo/locale": "2.1.12", "consola": "3.2.3", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21156,7 +21156,7 @@ }, "packages/contract": { "name": "@prosopo/contract", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/api": "10.13.1", @@ -21166,15 +21166,15 @@ "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/tx": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/tx": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "rxjs": "7.8.1" }, "devDependencies": { "@polkadot/api-augment": "10.13.1", - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21220,13 +21220,13 @@ }, "packages/database": { "name": "@prosopo/database", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", "mongodb": "6.9.0", "mongodb-memory-server": "10.0.0", "mongoose": "8.6.2" @@ -21249,16 +21249,16 @@ }, "packages/datasets": { "name": "@prosopo/datasets", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21277,15 +21277,15 @@ }, "packages/datasets-fs": { "name": "@prosopo/datasets-fs", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@noble/hashes": "1.5.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "bcrypt": "5.1.1", "cli-progress": "3.12.0", "sharp": "0.33.5", @@ -21293,7 +21293,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/bcrypt": "5.0.2", "@types/cli-progress": "3.11.6", "@vitest/coverage-v8": "2.1.1", @@ -21314,7 +21314,7 @@ }, "packages/detector": { "name": "@prosopo/detector", - "version": "2.1.11", + "version": "2.1.12", "devDependencies": { "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -21333,11 +21333,11 @@ }, "packages/dotenv": { "name": "@prosopo/dotenv", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5" }, "devDependencies": { @@ -21358,21 +21358,21 @@ }, "packages/env": { "name": "@prosopo/env", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/database": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/database": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21390,17 +21390,17 @@ }, "packages/file-server": { "name": "@prosopo/file-server", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/util": "2.1.11", + "@prosopo/util": "2.1.12", "dotenv": "16.4.5", "express": "4.21.0", "node-fetch": "3.3.2", "sharp": "0.33.5" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/express": "4.17.21", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", @@ -21438,7 +21438,7 @@ }, "packages/fingerprint": { "name": "@prosopo/fingerprint", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@fingerprintjs/fingerprintjs": "3.4.2" @@ -21519,12 +21519,12 @@ }, "packages/load-balancer": { "name": "@prosopo/load-balancer", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { "@vitest/coverage-v8": "2.1.1", @@ -21544,7 +21544,7 @@ }, "packages/locale": { "name": "@prosopo/locale", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "i18next": "21.9.2", @@ -21553,7 +21553,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "del-cli": "6.0.0", "dotenv": "16.4.5", @@ -21571,16 +21571,16 @@ }, "packages/locale-browser": { "name": "@prosopo/locale-browser", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/locale": "2.1.11", + "@prosopo/locale": "2.1.12", "i18next-browser-languagedetector": "7.2.1", "react-i18next": "11.18.6", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "del-cli": "6.0.0", "dotenv": "16.4.5", @@ -21598,25 +21598,25 @@ }, "packages/procaptcha": { "name": "@prosopo/procaptcha", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/api": "10.13.1", "@polkadot/api-contract": "10.13.1", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/account": "2.1.11", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/load-balancer": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/account": "2.1.12", + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/load-balancer": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "jsdom": "25.0.0" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21635,21 +21635,21 @@ }, "packages/procaptcha-bundle": { "name": "@prosopo/procaptcha-bundle", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/dotenv": "2.1.11", - "@prosopo/locale": "2.1.11", - "@prosopo/procaptcha-frictionless": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/dotenv": "2.1.12", + "@prosopo/locale": "2.1.12", + "@prosopo/procaptcha-frictionless": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "react": "18.3.1", "react-dom": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/jsdom": "21.1.7", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -21668,16 +21668,16 @@ }, "packages/procaptcha-common": { "name": "@prosopo/procaptcha-common", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/load-balancer": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/load-balancer": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21695,19 +21695,19 @@ }, "packages/procaptcha-frictionless": { "name": "@prosopo/procaptcha-frictionless", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/detector": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/detector": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/web-components": "2.1.12", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21725,23 +21725,23 @@ }, "packages/procaptcha-pow": { "name": "@prosopo/procaptcha-pow", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/util": "12.6.2", - "@prosopo/account": "2.1.11", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/account": "2.1.12", + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", + "@prosopo/web-components": "2.1.12", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21759,21 +21759,21 @@ }, "packages/procaptcha-react": { "name": "@prosopo/procaptcha-react", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", + "@prosopo/web-components": "2.1.12", "csstype": "3.1.3", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21819,23 +21819,23 @@ }, "packages/provider": { "name": "@prosopo/provider", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@noble/hashes": "1.5.0", "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/database": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/database": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12", "cron": "3.1.7", "express": "4.21.0", "ip-address": "10.0.1", @@ -21893,18 +21893,18 @@ }, "packages/server": { "name": "@prosopo/server", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21922,7 +21922,7 @@ }, "packages/tx": { "name": "@prosopo/tx", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/api": "10.13.1", @@ -21932,11 +21932,11 @@ "@polkadot/types": "10.13.1", "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -21982,7 +21982,7 @@ }, "packages/types": { "name": "@prosopo/types", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/api": "10.13.1", @@ -21992,14 +21992,14 @@ "@polkadot/types": "10.13.1", "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/locale": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale": "2.1.12", "ip-address": "10.0.1", "scale-ts": "1.6.0", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", @@ -22018,17 +22018,17 @@ }, "packages/types-database": { "name": "@prosopo/types-database", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", "mongodb": "6.9.0", "mongoose": "8.6.2", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -22046,16 +22046,16 @@ }, "packages/types-env": { "name": "@prosopo/types-env", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@polkadot/keyring": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", @@ -22101,11 +22101,11 @@ }, "packages/util": { "name": "@prosopo/util", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@noble/hashes": "1.5.0", - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5", "lodash": "4.17.21", "seedrandom": "3.0.5" @@ -22135,7 +22135,7 @@ }, "packages/web-components": { "name": "@prosopo/web-components", - "version": "2.1.11", + "version": "2.1.12", "license": "Apache-2.0", "dependencies": { "@emotion/react": "11.13.3", @@ -22143,7 +22143,7 @@ "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "del-cli": "6.0.0", diff --git a/package.json b/package.json index b7cc7364e5..94a70809f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/captcha", - "version": "2.1.11", + "version": "2.1.12", "author": "Prosopo", "type": "module", "repository": { diff --git a/packages/account/package.json b/packages/account/package.json index eccf22fee2..48b244a119 100644 --- a/packages/account/package.json +++ b/packages/account/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/account", - "version": "2.1.11", + "version": "2.1.12", "description": "Services and Utils for Prosopo account gen and management", "main": "dist/index.js", "type": "module", @@ -37,14 +37,14 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/fingerprint": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/fingerprint": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/api/package.json b/packages/api/package.json index 0ceaac4f95..d57f83c0b6 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/api", - "version": "2.1.11", + "version": "2.1.12", "description": "Wrapper for the provider API", "main": "dist/index.js", "type": "module", @@ -31,10 +31,10 @@ }, "homepage": "https://github.com/prosopo/captcha#readme", "dependencies": { - "@prosopo/types": "2.1.11" + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/cli/package.json b/packages/cli/package.json index a226d05816..6f2d25c6fa 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/cli", - "version": "2.1.11", + "version": "2.1.12", "description": "CLI for Prosopo Provider", "main": "dist/index.js", "type": "module", @@ -29,16 +29,16 @@ "@polkadot/keyring": "12.6.2", "@polkadot/types-codec": "10.13.1", "@polkadot/util-crypto": "12.6.2", - "@prosopo/api": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/dotenv": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/locale": "2.1.11", - "@prosopo/provider": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/api": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/dotenv": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/locale": "2.1.12", + "@prosopo/provider": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "cors": "2.8.5", "cron-parser": "4.9.0", "dotenv": "16.4.5", @@ -47,7 +47,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/cors": "2.8.17", "@types/yargs": "17.0.33", "@vitest/coverage-v8": "2.1.1", diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 31f4ae9cc8..0f83fcb2e9 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -32,8 +32,6 @@ async function main() { unsolved: { count: 0 }, }); - log.info(config); - if (config.devOnlyWatchEvents) { log.warn( ` diff --git a/packages/cli/src/tests/bundle/bundle.unit.test.ts b/packages/cli/src/tests/bundle/bundle.unit.test.ts index 34a967adb1..79693fca48 100644 --- a/packages/cli/src/tests/bundle/bundle.unit.test.ts +++ b/packages/cli/src/tests/bundle/bundle.unit.test.ts @@ -29,6 +29,6 @@ describe("provider bundle", () => { const { stdout: runOut, stderr: runErr } = await execPromise( `cd ${rootDir} && node dist/bundle/provider.cli.bundle.js version`, ); - assert(runOut.includes("Version:")); + assert(runErr.includes("Version:")); }, 120000); }); diff --git a/packages/common/package.json b/packages/common/package.json index 4caeaeace4..f758097fd6 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/common", - "version": "2.1.11", + "version": "2.1.12", "description": "Prosopo common library", "main": "./dist/index.js", "type": "module", @@ -25,12 +25,12 @@ "license": "Apache-2.0", "dependencies": { "@polkadot/util-crypto": "12.6.2", - "@prosopo/locale": "2.1.11", + "@prosopo/locale": "2.1.12", "consola": "3.2.3", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "dotenv": "16.4.5", diff --git a/packages/common/src/logger.ts b/packages/common/src/logger.ts index 43acdcdace..d8dbcccf0e 100644 --- a/packages/common/src/logger.ts +++ b/packages/common/src/logger.ts @@ -11,7 +11,10 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -import { LogLevels as ConsolaLogLevels, createConsola } from "consola/browser"; +import consola, { + LogLevels as ConsolaLogLevels, + createConsola, +} from "consola/browser"; import { enum as zEnum, type infer as zInfer } from "zod"; import { ProsopoEnvError } from "./error.js"; @@ -47,8 +50,18 @@ export function getLoggerDefault(): Logger { return defaultLogger; } +// biome-ignore lint/suspicious/noExplicitAny: we should be able to log anything we want, plus we can't control what external libraries log +const JSONReporter = (message: any) => { + process.stderr.write(`${JSON.stringify(message)}\n`); +}; + const getLoggerAdapterConsola = (logLevel: LogLevel, scope: string): Logger => { const logger = createConsola({ + reporters: [ + { + log: JSONReporter, + }, + ], formatOptions: { colors: true, date: true }, }).withTag(scope); let currentLevel = logLevel; diff --git a/packages/contract/package.json b/packages/contract/package.json index 266c9ae400..d3d23fe678 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/contract", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "scripts": { @@ -43,15 +43,15 @@ "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/tx": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/tx": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "rxjs": "7.8.1" }, "devDependencies": { "@polkadot/api-augment": "10.13.1", - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/database/package.json b/packages/database/package.json index 7e8367596f..8999c7cecf 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/database", - "version": "2.1.11", + "version": "2.1.12", "description": "Prosopo database plugins for provider", "main": "dist/index.js", "type": "module", @@ -31,10 +31,10 @@ }, "homepage": "https://github.com/prosopo/captcha#readme", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", "mongodb": "6.9.0", "mongodb-memory-server": "10.0.0", "mongoose": "8.6.2" diff --git a/packages/database/src/databases/provider.ts b/packages/database/src/databases/provider.ts index bd8db4ce48..60c6246778 100644 --- a/packages/database/src/databases/provider.ts +++ b/packages/database/src/databases/provider.ts @@ -39,6 +39,8 @@ import { type ClientRecord, ClientRecordSchema, DatasetRecordSchema, + type FrictionlessToken, + FrictionlessTokenRecordSchema, type IPBlockRuleRecord, IPBlockRuleRecordSchema, type IProviderDatabase, @@ -69,7 +71,10 @@ import { type UserSolutionRecord, UserSolutionRecordSchema, } from "@prosopo/types-database"; -import type { IPBlockRuleMongo } from "@prosopo/types-database"; +import type { + FrictionlessTokenRecord, + IPBlockRuleMongo, +} from "@prosopo/types-database"; import type { DeleteResult } from "mongodb"; import type { ObjectId } from "mongoose"; import { MongoDatabase } from "../base/mongo.js"; @@ -84,6 +89,7 @@ enum TableNames { scheduler = "scheduler", powcaptcha = "powcaptcha", client = "client", + frictionlessToken = "frictionlessToken", session = "session", ipblockrules = "ipblockrules", userblockrules = "userblockrules", @@ -135,6 +141,11 @@ const PROVIDER_TABLES = [ modelName: "Client", schema: ClientRecordSchema, }, + { + collectionName: TableNames.frictionlessToken, + modelName: "FrictionlessToken", + schema: FrictionlessTokenRecordSchema, + }, { collectionName: TableNames.session, modelName: "Session", @@ -825,6 +836,28 @@ export class ProviderDatabase ); } + /** + * Store a new frictionless token record + */ + async storeFrictionlessTokenRecord( + tokenRecord: FrictionlessToken, + ): Promise { + const doc = + await this.tables.frictionlessToken.create( + tokenRecord, + ); + return doc._id; + } + + /** + * Check if a frictionless token record exists. + * Used to ensure that a token is not used more than once. + */ + async checkFrictionlessTokenRecord(token: string): Promise { + const record = await this.tables.frictionlessToken.findOne({ token }); + return !!record; + } + /** * Store a new session record */ diff --git a/packages/datasets-fs/package.json b/packages/datasets-fs/package.json index 33528a3935..c67d64b0ef 100644 --- a/packages/datasets-fs/package.json +++ b/packages/datasets-fs/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/datasets-fs", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "private": false, @@ -28,9 +28,9 @@ "@noble/hashes": "1.5.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "bcrypt": "5.1.1", "cli-progress": "3.12.0", "sharp": "0.33.5", @@ -38,7 +38,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/bcrypt": "5.0.2", "@types/cli-progress": "3.11.6", "@vitest/coverage-v8": "2.1.1", diff --git a/packages/datasets/package.json b/packages/datasets/package.json index 00395a64e4..0828b1d1c6 100644 --- a/packages/datasets/package.json +++ b/packages/datasets/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/datasets", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "private": false, @@ -38,12 +38,12 @@ }, "dependencies": { "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "dotenv": "16.4.5", diff --git a/packages/detector/package.json b/packages/detector/package.json index c6eef8d6bd..33ce286373 100644 --- a/packages/detector/package.json +++ b/packages/detector/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/detector", - "version": "2.1.11", + "version": "2.1.12", "main": "src/index.js", "engines": { "node": "20", diff --git a/packages/dotenv/package.json b/packages/dotenv/package.json index 8c6a5ecb4c..62a862186c 100644 --- a/packages/dotenv/package.json +++ b/packages/dotenv/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/dotenv", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "private": false, @@ -25,8 +25,8 @@ }, "types": "./dist/index.d.ts", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5" }, "devDependencies": { diff --git a/packages/env/package.json b/packages/env/package.json index a70e8d784b..10e63d7a2f 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/env", - "version": "2.1.11", + "version": "2.1.12", "description": "Path env prosopo environment", "main": "dist/index.js", "type": "module", @@ -24,18 +24,18 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/database": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/database": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12" }, "overrides": { "@polkadot/keyring": "12.6.2" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/file-server/package.json b/packages/file-server/package.json index 217306a742..6eb168eaf9 100644 --- a/packages/file-server/package.json +++ b/packages/file-server/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/file-server", - "version": "2.1.11", + "version": "2.1.12", "description": "Simple static file server", "main": "dist/index.js", "type": "module", @@ -22,14 +22,14 @@ "start": "node ./dist/index.js" }, "dependencies": { - "@prosopo/util": "2.1.11", + "@prosopo/util": "2.1.12", "dotenv": "16.4.5", "express": "4.21.0", "node-fetch": "3.3.2", "sharp": "0.33.5" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/express": "4.17.21", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", diff --git a/packages/fingerprint/package.json b/packages/fingerprint/package.json index 9928428ffc..b95f1906f9 100644 --- a/packages/fingerprint/package.json +++ b/packages/fingerprint/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/fingerprint", - "version": "2.1.11", + "version": "2.1.12", "description": "Provider fingerprint", "main": "dist/index.js", "type": "module", diff --git a/packages/load-balancer/package.json b/packages/load-balancer/package.json index 71e759e717..92e051985d 100644 --- a/packages/load-balancer/package.json +++ b/packages/load-balancer/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/load-balancer", - "version": "2.1.11", + "version": "2.1.12", "description": "Provider load balancer", "main": "dist/index.js", "type": "module", @@ -31,9 +31,9 @@ }, "homepage": "https://github.com/prosopo/captcha#readme", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { "@vitest/coverage-v8": "2.1.1", diff --git a/packages/locale-browser/package.json b/packages/locale-browser/package.json index 359ebb2705..be7c5310df 100644 --- a/packages/locale-browser/package.json +++ b/packages/locale-browser/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/locale-browser", - "version": "2.1.11", + "version": "2.1.12", "description": "Prosopo browser locale", "main": "./dist/index.js", "type": "module", @@ -24,13 +24,13 @@ "author": "Prosopo Limited", "license": "Apache-2.0", "dependencies": { - "@prosopo/locale": "2.1.11", + "@prosopo/locale": "2.1.12", "i18next-browser-languagedetector": "7.2.1", "react-i18next": "11.18.6", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "dotenv": "16.4.5", "npm-run-all": "4.1.5", diff --git a/packages/locale/package.json b/packages/locale/package.json index 44306e9f0a..b6d89a9254 100644 --- a/packages/locale/package.json +++ b/packages/locale/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/locale", - "version": "2.1.11", + "version": "2.1.12", "description": "Prosopo locale library", "main": "./dist/index.js", "type": "module", @@ -30,7 +30,7 @@ "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "dotenv": "16.4.5", "npm-run-all": "4.1.5", diff --git a/packages/procaptcha-bundle/package.json b/packages/procaptcha-bundle/package.json index 6ed7b0d660..c2903e0105 100644 --- a/packages/procaptcha-bundle/package.json +++ b/packages/procaptcha-bundle/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha-bundle", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -29,13 +29,13 @@ }, "browserslist": ["> 0.5%, last 2 versions, not dead"], "dependencies": { - "@prosopo/dotenv": "2.1.11", - "@prosopo/locale": "2.1.11", - "@prosopo/procaptcha-frictionless": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/dotenv": "2.1.12", + "@prosopo/locale": "2.1.12", + "@prosopo/procaptcha-frictionless": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "react": "18.3.1", "react-dom": "18.3.1" }, @@ -52,7 +52,7 @@ "registry": "https://registry.npmjs.org" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/jsdom": "21.1.7", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/packages/procaptcha-common/package.json b/packages/procaptcha-common/package.json index 15793c08b8..0064797b07 100644 --- a/packages/procaptcha-common/package.json +++ b/packages/procaptcha-common/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha-common", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -26,13 +26,13 @@ }, "browserslist": ["> 0.5%, last 2 versions, not dead"], "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/load-balancer": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/load-balancer": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/procaptcha-frictionless/package.json b/packages/procaptcha-frictionless/package.json index 9fc0c68528..e774f6f6b8 100644 --- a/packages/procaptcha-frictionless/package.json +++ b/packages/procaptcha-frictionless/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha-frictionless", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -26,16 +26,16 @@ }, "browserslist": ["> 0.5%, last 2 versions, not dead"], "dependencies": { - "@prosopo/detector": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha-pow": "2.1.11", - "@prosopo/procaptcha-react": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/detector": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha-pow": "2.1.12", + "@prosopo/procaptcha-react": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/web-components": "2.1.12", "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/procaptcha-pow/package.json b/packages/procaptcha-pow/package.json index 70d6fb1960..1c5c3c7965 100644 --- a/packages/procaptcha-pow/package.json +++ b/packages/procaptcha-pow/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha-pow", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -27,15 +27,15 @@ "browserslist": ["> 0.5%, last 2 versions, not dead"], "dependencies": { "@polkadot/util": "12.6.2", - "@prosopo/account": "2.1.11", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/account": "2.1.12", + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", + "@prosopo/web-components": "2.1.12", "react": "18.3.1" }, "overrides": { @@ -46,7 +46,7 @@ } }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/procaptcha-react/package.json b/packages/procaptcha-react/package.json index f9b438577e..840b4f093a 100644 --- a/packages/procaptcha-react/package.json +++ b/packages/procaptcha-react/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha-react", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -26,13 +26,13 @@ }, "browserslist": ["> 0.5%, last 2 versions, not dead"], "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/locale-browser": "2.1.11", - "@prosopo/procaptcha": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", - "@prosopo/web-components": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale-browser": "2.1.12", + "@prosopo/procaptcha": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", + "@prosopo/web-components": "2.1.12", "csstype": "3.1.3", "react": "18.3.1" }, @@ -49,7 +49,7 @@ } }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/procaptcha/package.json b/packages/procaptcha/package.json index 39e3196303..72ca847b4f 100644 --- a/packages/procaptcha/package.json +++ b/packages/procaptcha/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/procaptcha", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -33,14 +33,14 @@ "@polkadot/api-contract": "10.13.1", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/account": "2.1.11", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/load-balancer": "2.1.11", - "@prosopo/procaptcha-common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/account": "2.1.12", + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/load-balancer": "2.1.12", + "@prosopo/procaptcha-common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/util": "2.1.12", "jsdom": "25.0.0" }, "overrides": { @@ -56,7 +56,7 @@ } }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "dotenv": "16.4.5", diff --git a/packages/provider/package.json b/packages/provider/package.json index 766eec0ff7..55aac271c6 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/provider", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "main": "./dist/index.js", @@ -27,16 +27,16 @@ "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/config": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/database": "2.1.11", - "@prosopo/datasets": "2.1.11", - "@prosopo/env": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11", - "@prosopo/types-env": "2.1.11", - "@prosopo/util": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/config": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/database": "2.1.12", + "@prosopo/datasets": "2.1.12", + "@prosopo/env": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12", + "@prosopo/types-env": "2.1.12", + "@prosopo/util": "2.1.12", "cron": "3.1.7", "express": "4.21.0", "ip-address": "10.0.1", diff --git a/packages/provider/src/api/captcha.ts b/packages/provider/src/api/captcha.ts index d3b12a8c8e..2f6c43fc39 100644 --- a/packages/provider/src/api/captcha.ts +++ b/packages/provider/src/api/captcha.ts @@ -35,6 +35,10 @@ import { type SubmitPowCaptchaSolutionBodyTypeOutput, type TGetImageCaptchaChallengePathAndParams, } from "@prosopo/types"; +import { + FrictionlessToken, + FrictionlessTokenRecord, +} from "@prosopo/types-database"; import type { ProviderEnvironment } from "@prosopo/types-env"; import { flatten, version } from "@prosopo/util"; import express, { type Router } from "express"; @@ -424,6 +428,15 @@ export function prosopoRouter(env: ProviderEnvironment): Router { const { token, dapp, user } = GetFrictionlessCaptchaChallengeRequestBody.parse(req.body); + // Check if the token has already been used + const isTokenUsed = await tasks.db.checkFrictionlessTokenRecord(token); + if (isTokenUsed) { + return res.json(tasks.frictionlessManager.sendImageCaptcha()); + } + + // Store the token + const tokenId = await tasks.db.storeFrictionlessTokenRecord({ token }); + const lScore = tasks.frictionlessManager.checkLangRules( req.headers["accept-language"] || "", ); @@ -455,7 +468,8 @@ export function prosopoRouter(env: ProviderEnvironment): Router { if (Number(botScore) > botThreshold) return res.json(tasks.frictionlessManager.sendImageCaptcha()); - const response = await tasks.frictionlessManager.sendPowCaptcha(); + const response = + await tasks.frictionlessManager.sendPowCaptcha(tokenId); return res.json(response); } catch (err) { console.error("Error in frictionless captcha challenge:", err); diff --git a/packages/provider/src/tasks/frictionless/frictionlessTasks.ts b/packages/provider/src/tasks/frictionless/frictionlessTasks.ts index 09b0b9351e..7e9e2e19c3 100644 --- a/packages/provider/src/tasks/frictionless/frictionlessTasks.ts +++ b/packages/provider/src/tasks/frictionless/frictionlessTasks.ts @@ -28,6 +28,7 @@ import { import type { IProviderDatabase, Session } from "@prosopo/types-database"; import { at, verifyRecency } from "@prosopo/util"; import type { Address4, Address6 } from "ip-address"; +import type { ObjectId } from "mongoose"; import { v4 as uuidv4 } from "uuid"; const logger = getLoggerDefault(); @@ -112,10 +113,13 @@ export class FrictionlessManager { }; } - async sendPowCaptcha(): Promise { + async sendPowCaptcha( + tokenId: ObjectId, + ): Promise { const sessionRecord: Session = { sessionId: uuidv4(), createdAt: new Date(), + tokenId: tokenId, }; await this.db.storeSessionRecord(sessionRecord); diff --git a/packages/server/package.json b/packages/server/package.json index 7955d41dae..7821034fdc 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/server", - "version": "2.1.11", + "version": "2.1.12", "description": "NodeJS package for server side communication with the prosopo captcha client", "main": "./dist/index.js", "type": "module", @@ -34,13 +34,13 @@ "dependencies": { "@polkadot/keyring": "12.6.2", "@polkadot/util": "12.6.2", - "@prosopo/api": "2.1.11", - "@prosopo/common": "2.1.11", - "@prosopo/contract": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/api": "2.1.12", + "@prosopo/common": "2.1.12", + "@prosopo/contract": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/tx/package.json b/packages/tx/package.json index 747501ce0e..587569672f 100644 --- a/packages/tx/package.json +++ b/packages/tx/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/tx", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "scripts": { @@ -37,11 +37,11 @@ "@polkadot/types": "10.13.1", "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/types-database/package.json b/packages/types-database/package.json index 973a4c44a1..707d8761c5 100644 --- a/packages/types-database/package.json +++ b/packages/types-database/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/types-database", - "version": "2.1.11", + "version": "2.1.12", "description": "Types for prosopo database", "main": "dist/index.js", "type": "module", @@ -31,14 +31,14 @@ }, "homepage": "https://github.com/prosopo/captcha#readme", "dependencies": { - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", "mongodb": "6.9.0", "mongoose": "8.6.2", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/types-database/src/types/provider.ts b/packages/types-database/src/types/provider.ts index 4404ded186..bd9714817f 100644 --- a/packages/types-database/src/types/provider.ts +++ b/packages/types-database/src/types/provider.ts @@ -39,7 +39,7 @@ import { TimestampSchema, } from "@prosopo/types"; import type { DeleteResult } from "mongodb"; -import type mongoose from "mongoose"; +import mongoose from "mongoose"; import { type Document, type Model, type ObjectId, Schema } from "mongoose"; import { type ZodType, @@ -327,9 +327,26 @@ export const ScheduledTaskRecordSchema = new Schema( { expireAfterSeconds: ONE_WEEK }, ); +export type FrictionlessToken = { + token: string; +}; + +export type FrictionlessTokenRecord = mongoose.Document & FrictionlessToken; + +export const FrictionlessTokenRecordSchema = + new Schema( + { + token: { type: String, required: true, unique: true }, + }, + { expireAfterSeconds: ONE_DAY }, + ); + +FrictionlessTokenRecordSchema.index({ token: 1 }, { unique: true }); + export type Session = { sessionId: string; createdAt: Date; + tokenId: ObjectId; }; export type SessionRecord = mongoose.Document & Session; @@ -338,6 +355,9 @@ export const SessionRecordSchema = new Schema( { sessionId: { type: String, required: true, unique: true }, createdAt: { type: Date, required: true }, + tokenId: { + type: mongoose.Schema.Types.ObjectId, + }, }, { expireAfterSeconds: ONE_DAY }, ); @@ -566,6 +586,12 @@ export interface IProviderDatabase extends IDatabase { getClientRecord(account: string): Promise; + storeFrictionlessTokenRecord( + tokenRecord: FrictionlessToken, + ): Promise; + + checkFrictionlessTokenRecord(token: string): Promise; + storeSessionRecord(sessionRecord: Session): Promise; checkAndRemoveSession(sessionId: string): Promise; diff --git a/packages/types-env/package.json b/packages/types-env/package.json index 1adf341e17..fe905484c1 100644 --- a/packages/types-env/package.json +++ b/packages/types-env/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/types-env", - "version": "2.1.11", + "version": "2.1.12", "description": "Types for prosopo environment", "main": "dist/index.js", "type": "module", @@ -32,12 +32,12 @@ "homepage": "https://github.com/prosopo/captcha#readme", "dependencies": { "@polkadot/keyring": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/types": "2.1.11", - "@prosopo/types-database": "2.1.11" + "@prosopo/common": "2.1.12", + "@prosopo/types": "2.1.12", + "@prosopo/types-database": "2.1.12" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5", diff --git a/packages/types/package.json b/packages/types/package.json index 4da5d1126d..05138acb59 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/types", - "version": "2.1.11", + "version": "2.1.12", "description": "Types for prosopo TypeScript packages", "main": "dist/index.js", "type": "module", @@ -38,14 +38,14 @@ "@polkadot/types": "10.13.1", "@polkadot/types-codec": "10.13.1", "@polkadot/util": "12.6.2", - "@prosopo/common": "2.1.11", - "@prosopo/locale": "2.1.11", + "@prosopo/common": "2.1.12", + "@prosopo/locale": "2.1.12", "ip-address": "10.0.1", "scale-ts": "1.6.0", "zod": "3.23.8" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@types/node": "22.5.5", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", diff --git a/packages/util/package.json b/packages/util/package.json index 655b700ef0..ee20f5b16c 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/util", - "version": "2.1.11", + "version": "2.1.12", "author": "PROSOPO LIMITED ", "license": "Apache-2.0", "private": false, @@ -32,7 +32,7 @@ "types": "./dist/index.d.ts", "dependencies": { "@noble/hashes": "1.5.0", - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "dotenv": "16.4.5", "lodash": "4.17.21", "seedrandom": "3.0.5" diff --git a/packages/web-components/package.json b/packages/web-components/package.json index be0d576d72..cf1cd9c3b7 100644 --- a/packages/web-components/package.json +++ b/packages/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@prosopo/web-components", - "version": "2.1.11", + "version": "2.1.12", "description": "Non business logic utilities for web applications", "main": "dist/index.js", "type": "module", @@ -36,7 +36,7 @@ "react": "18.3.1" }, "devDependencies": { - "@prosopo/config": "2.1.11", + "@prosopo/config": "2.1.12", "@vitest/coverage-v8": "2.1.1", "concurrently": "9.0.1", "npm-run-all": "4.1.5",