Skip to content

Commit

Permalink
Activated accounts only (#1355)
Browse files Browse the repository at this point in the history
* Basic site key restrictions and scoring checks

* site key registration in pow integration tests

* get integration tests working

* don't double negative

* Move error

* link to FAQ when an error shows

* Make score optional

* lint-fix

* Lint-fix

* Run admin api in cypress tests

* pass timestamps in auth middleware tests

* Release 2.1.0 (#1371)

* New git branches setup (#1296)

* add dev branch to auto merge

* make clippy run on new branch setup

* remove version checker workflow

* add dev and release branch triggers to consistent workflow name checker

* Delete create_diagram.yml

* add dev and release branch triggers to lint workflow

* add release and dev branch triggers to provider_image workflow

* remove release drafter

* add dev and release branches to rustfmt workflow

* add dev and release branches to protocol test workflow

* add dev and release branches triggers to tests workflow

* add dev and release branch triggers to webpack bundling workflow

* switch cache creation to be post pr to dev

* rename post_pr workflow to cache

* Update cache.yml

* publish workflow

* Update cache.yml

* fix contract js/rust version check workflow

* install concurrently and cypress as workspace deps

* fix cypress workflow trigger

* fix cypress workflow branch triggers

* fix rust file triggers

* move webpack bundling check to tests workflow

* remove typechain version check

* rename workflows

* make the github actions cache include the branch name

* publish on push to main

* add js bundle test step

* workflow for ensuring all versions move in lockstep

* blurb for each workflow

* dockerhub login check for before a release

* rename publish to release

* remove typedoc step

* standardise step ids in release workflow

* dummy version bump

* Delete dockerhub_login.yml

* release version check

* workflow to check for valid version bumps

* auto merge all prs

* check consistent workflow names on all prs

* branch system docs

* check contract version on prs to main,dev,release/*

* add workflow_dispatch to all relevant workflows

* make auto merge only run on non-draft prs

* check versions on all branches

* make release run on push to main

* tag pushes to main

* rename version check workflow

* remove fetch all history and branches from clone

* fix docker js server version issue

* fix bump workflow to bump all package.json files and Cargo.tomls

* fix package.json version writing in bump workflow

* rename step

* make auto merge cancellable

* make deploy ahve a single notification of pass/fail

* debug info

* fix cache workflow name

* don't use cache in bump version workflow, not needed

* move buildx to top of workflow

* move the cli building to before publishing images in deploy workflow

* tag warning

* remove filters for tests, test more often

* add workflow dispatch to deploy workflow

* add bash error catching

* Create consistent_engine_node.yml

* Create consistent_engine_npm.yml

* Create consistent_nvmrc.yml

* cache docs

* event workflows for main and dev

* change event setup

* don't run unless non-draft pr

* combine protocol clippy and rustfmt into single lint workflow

* missing engine

* missing version

* revert version debug

* fix version

* fix workflow name detection

* add missing engines

* fix nvmrc check

* fix path typo in contract version check

* allow auto merge to run always

* Update package-lock.json

* lint

* lint

* Cache cypress install (#1305)

* remove install cypress step from cache workflow

* add cypress as dev dep

* Add staging branch to workflow (#1311)

* New linting (#1309)

* lint dockerfiles

* lint caddyfiles

* lint github actions workflows

* lint shell scripts

* yaml lint

* lint python

* yamllint config

* lint js

* lint html

* lint markdown

* htmlhint ignore files

* simplify caddy lint

* replace eslint + prettier with biome, add run-s and run-p

* lint rust

* lint toml

* configure biome target files

* lint svg

* jsx and tsx lint

* adjust lint command in npm scripts

* fix license

* change lint changed script name

* adjust lint workflow

* Update package-lock.json

* fix npm script error handling (#1306)

* fix auto merge (#1302)

* fix auto merge

* add repo parameter to auto merge

* add repo parameter to auto merge workflow

* Remove contract calls (#1308)

* remove contract calls from procaptcha

* linted stuff

* Adding empty providers

* Adding hardcoded random providers

* Adding changes to load process

* Debugging

* debug

* nearly working state management

* fast captchas with no contract

* Removing debug

* Timestamp signature validation

* Working no rpc calls full captcha flow

* linting

* Unit tests potentially working

* dropping debug

* All passing cypress demo

* Bundle falling over when hashing

* dropping bundle pure replace

* Remove polkadot manual bundling hacks

* No provider pow

* Working pow without contract calls

* revert sitekey changes

* verified instead of context

* don't log config

* removing cypress capture images

* removing bad deps

* Removing debug

* fixing build

* fixing providers

* Correct docstring

* rebuilt package lock

* Removing stats file

* Skipping lint in protocol

* removing typechain change because protocol bump required

* removing unused deps

* temp bump while firefighting

* Dropping provider gui

* Working build without provider gui

* Removing batch commit tasks

* Dropping protocol

* Working build without protocol dir

* Dropping proxy and package lock pointing to proxy

* Working build with new pkg deps

* Removing common contract

* Dropping tests for rewrite

* Working no captcha product

* Dropping merkle tree

* Refactoring provider and adding temp tests

* Refactored provider into multiple single responsibility classes

* lint fix

* pkg lock bump

* Renaming tests to non test file to pass

* Tests passing

* Debug for datasetId getter

* Working provider set dataset

* Auth Middleware Test

* Captcha scheduler tests

* Error Handler tests

* Provider now boots without connection to rpc node

* Full suite of unit tests for provider

* Tests passing

* Fixed build

* Integration tests. Actions for this to be set up

* Working image captcha integration tests

* Unit tests paths correction

* Fixing version bump yml

* Removing debug

* Adding dummy get random provider script

* Removing dockerfile and vite env config

* Replacing signedTimestamp with timestampSignature

* Deduping config by making it its own package

* Defaulting message to provider online

* Fixing type issues and ws requirement issues

---------

Co-authored-by: Chris Taylor <forgetso86@gmail.com>
Co-authored-by: George Oastler <goastler@users.noreply.github.com>

* Removing unused deps, bumping package lock

* Working pow captcha with timeouts

* Add missing deps and bundling command for staging

* Remove version from docker compose files

* Use NODE_ENV var for pulling in env var file into docker compose file

* Add staging deploy process

* Add staging bundle command

* package lock

* Remove old deps.

* Update package-lock.json

* Update event name

* Add missing dep

* Use latest image to create container from

* Use staging tag for container

* Await crypto WASM blob

* Allow NODE_ENV to be passed into Vite config

* Add load-balancer refs to tsconfigs

* Allow PROSOPO_DEFAULT_ENVIRONMENT to inherit from NODE_ENV

* Add some logging and change some imports

* exporting hardcoded provider from types

* Cleanup linting process (#1312)

* lint dockerfiles

* lint caddyfiles

* lint github actions workflows

* lint shell scripts

* yaml lint

* lint python

* yamllint config

* lint js

* lint html

* lint markdown

* htmlhint ignore files

* simplify caddy lint

* replace eslint + prettier with biome, add run-s and run-p

* lint rust

* lint toml

* configure biome target files

* lint svg

* jsx and tsx lint

* adjust lint command in npm scripts

* fix license

* change lint changed script name

* adjust lint workflow

* Update package-lock.json

* remove old lint scripts

* remove prettier + eslint config

* remove eslint dep

* remove prettier dep

* Update package-lock.json

* Fix provider not erroring on database connection error. Add option to specify the number of proxies between the provider API and the user

* Add staging command back in

* deploy staging workflow to bundle branch

* addit commit details for bumps

* Add watchtower to provider docker compose

* Don't mount missing file

* watch provider container only

* Change container name

* Use createConnection instead of connection

* Fix build

* Staging deploy workflow (#1314)

* rename version step

* detect prod/staging in deploy

* remove contract building in deploy

* build js bundles based on env

* use docker tag based on env

* use prod env

* gh release on prod only

* npm release on prod only

* use docker latest and version specific tags

* use docker tags from env in img tags

* join version and env steps

* prod/dev -> production/development

* NODE_ENV variable setup in npm scripts

* missing NODE_ENV fixes

* fix tsc build / clean cmds

* NODE_ENV semis

* vite use NODE_ENV as --mode

* use NODE_ENV to control bundling of production/development/staging env

* use NODE_ENV to control build scripts

* remove needless NODE_ENV setting

* Delete deploy-staging.yml

* deploy on unsafe branch guard

* upload bundle to staging release as part of deploy workflow

* typo missing vite

* license

* remove contract linting

* remove docker compose linting from dockerfile lint cmd

* fix yamllint

* make caddy fmt output diff

* install htmlhint

* fix rustfmt lint script

* use cargofmt instead of rustfmt

* fix lint rs naming

* fix clippy linting

* fix toml linting

* simplify xargs serial command usage in rust linting

* lint rust check

* webpack bundle dev mode fix

* webpack plugin fix

* webpack fix

* improve npm scripts

* improve node_modules associated with npm scripts

* bundle npm script

* fix release asset target

* remove any current assets before uploading any further staging assets

* Pkg json

* bump version to v2.0.0

* no build specified

* remove deploy_X scripts

* remove deploy_X scripts

* remove deploy_protocol script call

* remove deploy_protocol workflow step

* remove github assets for contract

* remove deploy_protool

* Use 2.0.0 everywhere

* Provider tests passing

* Adding if present to cjs

* Dropping auto merge

* Dropping dapp example demo

* fix check version bump all history available

* Update check_version_bump.yml

* Update check_version_bump.yml

* Remove out of date readme

* Update check_version_bump.yml

* Re-add old babel plugins

* start provider

* Always add the token to the form

* Supply token to onHuman function

* Fix build

* Adding button next for cypress tests

* Fixing hanging test

* Fixing get dataset being broken

* Remove substrate from docker compose

* Cypress tests passing

* stop the provider workflow from falling over if the npm packages are unreleased

* Only load the provider mock container if we built it

* Try to upload screenshots

* Try to store screenshots on failure

* Try using withinSubject:null

* Wait for button to be visible

* Wait for the the API call

* Remove wait for solution request

* try to force the click

* Just force, don't expect the element

* try waiting after clicking

* Store videos of cypress runs

* Remove the then

* Remove duplicate click

* Fix function return type

* try within

* Adding setup step for setup env in test

* Add data-cy attributes if environment is not production

* wait for docker containers to setup env

* Adding setup step for setup env in test

* Start docker first

* Check if there are references

* remove within

* Try to kill processes with concurrently

* Size fixes for widget and logo

* Make signature stuff less confusing

* Fix license header positions

* Fix tests

* Get it all working

* Fix size

* Fix lint issues (#1318)

* rename version step

* detect prod/staging in deploy

* remove contract building in deploy

* build js bundles based on env

* use docker tag based on env

* use prod env

* gh release on prod only

* npm release on prod only

* use docker latest and version specific tags

* use docker tags from env in img tags

* join version and env steps

* prod/dev -> production/development

* NODE_ENV variable setup in npm scripts

* missing NODE_ENV fixes

* fix tsc build / clean cmds

* NODE_ENV semis

* vite use NODE_ENV as --mode

* use NODE_ENV to control bundling of production/development/staging env

* use NODE_ENV to control build scripts

* remove needless NODE_ENV setting

* Delete deploy-staging.yml

* deploy on unsafe branch guard

* upload bundle to staging release as part of deploy workflow

* typo missing vite

* license

* remove contract linting

* remove docker compose linting from dockerfile lint cmd

* fix yamllint

* make caddy fmt output diff

* install htmlhint

* fix rustfmt lint script

* use cargofmt instead of rustfmt

* fix lint rs naming

* fix clippy linting

* fix toml linting

* simplify xargs serial command usage in rust linting

* lint rust check

* webpack bundle dev mode fix

* webpack plugin fix

* webpack fix

* improve npm scripts

* improve node_modules associated with npm scripts

* bundle npm script

* fix release asset target

* remove any current assets before uploading any further staging assets

* add nuke script

* set shell in dockerfile

* use json form of CMD in dockerfile

* fix multiple RUN commands in dockerfile

* remove apt sources after install

* use apt get

* use apt-get in dockerfile instead of apt

* join multiple run commands together in dockerfile

* entrypoint json form

* no install recommends

* ignore install recommends lint

* fix multiple run commands and apt clear

* CMD to json form

* no install recommends

* remove root user, is default

* set nginx version

* multiple RUN commands fix

* set shell to use pipefail

* delete apt lists after install

* fix consecutive RUN commands

* no install recommends

* ignore usage of latest

* dockerfile lint

* Update substrate-contracts-node.build.dockerfile

* json form for CMD

* lint dockerfile

* lint caddyfile

* fix needless cat

* useless echo

* speech marks for safety

* make dockerfile and shell linting command simpler

* fix quotes and variable usage in cache workflow

* fix quotes

* fix quotes

* fix quotes

* fix quotes

* fix NODE_ENV speech marks in workflows

* useless cat

* unused vars

* lint

* missing speech marks

* speech marks

* lint eval and @ usage in shell

* lint shell script

* fix yamllint linting

* fix lint md and js fix cmd

* autofix js

* fix biome cmdline args

* biome lint fixes

* biome lint fix

* make biome use vcs

* no export from tests

* fix key in list

* missing useEffect dep

* explicit any todo

* lint fixes

* warn on parameter assign

* todo for any

* trailing comma

* ignore any type for options

* fix line count parameter reassigned

* fix not null assertion

* ignore any from axios response

* ignore any casts

* ignore any in async ctor

* no reuse of parameter

* ignore i18n translation any

* ignore anys in nodejs polars plugin

* ignore any for response json

* avoid parameter reuse

* fix any usage in vite watch plugin

* fix side effect in vite watch plugin

* fix reused variables in error classes

* disable rule for key event with onClick

* forEach to for of

* missing bracket

* allow any

* forEach to for of

* allow any

* forEach to for of

* allow any

* allow any

* forEach to for of

* use item hash as key

* fix useEffect deps

* todo for async exec

* allow any + async exec

* allow any

* forEach to for of

* ignore spread

* TODOs for sendFunds

* allow any

* ignore async exec

* allow any

* todo for memo deps

* ignore detector code, contains loads of biome errors

* fix anys, foreach and local params

* ignore foreach

* fix any

* allow any

* allow any

* allow any and foreach

* allow any

* allow any

* allow any

* allow enum

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* allow any

* foreach to for of

* allow any

* allow any

* allow any and foreach to for of

* img buffer type

* allow any

* allow any

* allow any

* foreach to for of

* allow any

* make biome do formatting too

* biome format

* ignore bundles

* lint

* lint md files

* lint md

* disable some markdown rules

* lint rs

* fix rs

* fix npm scripts

* lint

* ignore ruff.toml when linting tomls

* lint

* lint py npm scripts

* remove eslint directives

* make biome track the main branch and handle css

* fix caddy linting

* lint

* lint

* lint

* configure taplo

* Update ruff.toml

* fix scripts

* lint

* remove eslint

* lint

* fix speech mark issues

* typo

* fix lint fixes types

* more fixes for linting fixes

* fix for potentially undefined root node of merkle tree

* duplicate selector

* lint

* ignore bundle stats html file

* missing provider env for starting provider

* async factory fix

* remove debug

* lint

* revert detector index.js changes

* lint

* polyfill node: imports

* fix for node:url breaking bundle

* use package workspaces rather than cd'ing (#1321)

* Add push to js branch again to get live staging bundle

* Remove any existing procaptcha responses on human

* deploy staging on push to staging

* Use duplicate JS Server for now

* Silence GH warning about NoSQL injection in demo

* Silence GH warning about NoSQL injection in demo

* Set GH_TOKEN env

* Remove production step for JS Server

* Add back command to push to js-bundle branch. Remove quotes in asset deletion script

* Use correct docker tag

* Try moving to its own step

* don't fail if nothing to commit

* Update provider docker run CMD

* Always pull new version of tag for provider image

* Update provider CMD

* Alter the verify endpoint when in non-production environments in client-example demo

* Allow PoW captchas to be stored and counted

* Removing exportData from Manager

* Adding synamic config for load balancer

* Fix build

* fix server build

* fix server again

* fix provider build

* Removing dangerou

* Change scale-ts type to u64 to avoid losing data

* revert change to number for timestamp

* make sure procaptcha-response is deleted

* Fix scheduler database name and add env option for storage schedule

* Make the models available once the connection has been made

* Move headers

* Update js_server release step

* Try using secret directly

* Add some debug

* Modify debug

* Yet more debug

* I give up

* Working captcha results in mongo (#1322)

* Fixing db schema for pow captchas

* dropping new debug

* Use a var for mongo image

* more debug

* Removing lint fix from version bump

* User data mvp (#1327)

* Update captcha records for user portal data requirements

* pow types overhaul

* Harden tests against function parameter changes

* only run prosoponator on non-draft pr's (#1333)

* fix dir capitalisation (#1329)

* fix dir capitalisation

* fix path

* Introduce dotenv package for finding environment files (#1334)

* Introduce dotenv package for finding environment files

* Package-lock.json

* Update references to old loadEnv

* Update package references

* Add the config files

* Update loadEnv ref

* Update loadEnv refs in demos

* trigger tests

* Update dotenv reference

* Specify no tests

* Fix dataset IDs for staging providers

* Allow pow challenges to be submitted more than once for verification

* Fail if the challenge exists in the db

* Revert unlimited challenge checking

* Make demo re-render captcha component when form changes

* Allow navigating between the captcha types

* Fix license location

* remove debug

* Store something on each request. Update PoW types. Additional checks (#1336)

* removed network types

* remove substrate containers / env params

* remove CONTRACT env vars

* fix imports

* remove networks

* remove network from getPairAsync

* remove networks + contract

* remove default network from env

* remove default network

* remove network default + types from types pkg

* remove network types

* remove block number

* Update package-lock.json

* Update package-lock.json

* remove contract dep for demo

* Store something on each request. Update PoW types. Additional checks

* Additional checks

* Restrict captcha solution checking by dapp account

* fix build

* Fix cypress tests

* lots of updates to types

* Fix up tests. Add types for Get Image Captcha URL

* Remove some unuse types. Type an API URL

* Zod type translation keys. Use enum values when updating database. Add enum arrays to mongoose schemas. Use ApiParams everywhere

* Set the correct key and value for storedStatus

* Fix up unit tests

* Make sure we're setting updated timestamps everywhere. Don't send the same data to the captcha storage DB twice. Add details of cron jobs that have run to scheduled tasks collection

* Fix up tests

* remove file that does nothing

---------

Co-authored-by: George Oastler <goastler4@gmail.com>

* Bug fix for missing status in scheduled task record

* Fix captcha storage mechanism. Add tests (#1337)

* Fix captcha storage mechanism. Add tests

* Fix up tests. Move verifyRecency function to util

* Update test env template

* Fix build

* use correct branch name in bump version

* Fix captcha scheduling insert (#1341)

* Stop scheduler from trying to set ID on upsert

* package-lock.json

* change logging

* Add types to tests to filter by test type during testing (#1342)

* vite test type env parameter

* prepend test type to all test files

* always include tests with no type specified

* Fix last scheduled task getter (#1346)

Change the db method and add some unit tests around scheduled tasks

* Lint repo (#1349)

* JS in repo linted

* addince licences

* Removing unused linting

* run lint in ci container

* GHA fix

* js server shell script linting

* yaml lint fix

* pkg lock lint

---------

Co-authored-by: George Oastler <goastler4@gmail.com>

* Docker compose overhaul (#1350)

* fix NODE_ENV var in arm64 version of provider compose

* add restart policy to docker compose

* add watchtower to arm64

* add pull policy to arm64

* make watchtower cleanup old imgs

* watchtower remove anon vols

* watchtower log format

* only restart enabled containers

* ping slack when restarts happen

* only restart enabled containers

* ping slack when updates occur

* docs

* make env based db image

* combine arm64 and x86_64 provider compose files

* mongodb healthcheck

* healthcheck for caddy

* healthcheck for provider

* disable caddy fileserver

* metrics in caddyfile

* add env vars to caddyfile

* basicauth for /metrics

* add env vars for uname + pwd of basicauth

* docker compose profiles

* remove tty

* add env file to caddy

* provider-dev service

* make database-dev use env file

* remove watchtower env params

* add watchtower env file

* watchtower logging

* watchtower restart policy

* watchtower self restart

* add missing env params

* remove dev version of provider compose file

* usage doc for caddy

* move env vars

* sort env lines

* prepend caddy env parameters with CADDY_

* add provider image version env parameter

* add missing env params

* add missing template env vars

* drop rococo env

* move package version env var

* more old space size for testing

* remove name from watchtower

* configure watchtower via env

* remove watchtower healthcheck

* Delete Dockerfile

* Caddyfile defaults (#1352)

* add caddy provider name + port vars

* sane defaults for provider container name + port in caddyfile

* sane default for http port

* remove http port for prod

* sane default for https

* remove https var for prod

* missing https var

* caddy admin endpoint default

* remove admin endpoint var

* disable caddy metrics (not in use atm)

* disable metrics reverse proxy

* log to stdout as well

* fix provider endpoint vars

* fix defaults

* rimraf dep (#1331)

* rimraf dep

* Update package-lock.json

* security policy (#1343)

* Portal settings (#1351)

* wip for client settings retrieval. database overhaul

* types update

* Add basic domain validator

* big domain regex

* lint-fix

* Add test class

* install missing dep

* bump polyfill plugin

* package-lock.json

* limit domain length

* package locl

* lint fix

* drop logs

* Address PR comments

* TLS headers (#1353)

* Create tls.Caddyfile

* add headers to express / types / tests

* pass headers

* add headers to mongo

* lint

* move tls headers from debug caddyfile

* fix missing headers in types

* fix missing headers

* lint

* lint

* fix error of unknown type

* lint

* disable gh actions lint

* lint

* remove old demo/example pkgs (#1345)

* remove old demo/example pkgs

* pow in example

* remove legacy npm scripts

* Provider retry (#1348)

* pkg lock bump and manager logic for retry

* Dev cli with multiple providers and provider faliure fallover

* Biome fixes

* pkg json lint

* Provider retry in pow from common

* Non cached s3 provider getting

* working retryCount

* pgk lock bump

* removing linting junk

* Working build and cleaner dev cli

* Removing unused debug

* pkg lock bump for deps

* adding types glob

* Dropping load balancer hardcoded jsons

* Removing non env based dev provider start

* use node env for dev mode

* Properly logging final retry faliure

* pkg lock bump

* package lock is locked up 😂

* pkg lock lock lock

* Linting

* Lint

* marking lint actions as disabled

* Only 1 provider

* 🔒

* 🔒

* 🔒

* remove glob and lint

* 📦🔒

* pin vite to 5.4.2

* 📦🔒

* Glob stink

* globSync

* lint fix

* bump vitest and vite

* add vite and vitest to root pkg json

* remove vitest cov

* Update package-lock.json

* fix exclude for vite test config

* 📦🔒

* vitest/coverage-v8

* use fast-glob

* lint-fix

* remove lint:yaml command

* Lint-fix:js

---------

Co-authored-by: Chris Taylor <forgetso86@gmail.com>
Co-authored-by: George Oastler <goastler4@gmail.com>

* remove find-up (#1354)

* Stop npm from failing on extraneous packages

* Add package-lock-only flag

* drop depends

* Deps (#1356)

* drop unneeded workspace deps

* fix deps provider-mock

* fix deps cypress-shared

* fix deps client-example

* fix deps client-example-server

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* deps

* deps

* deps

* deps

* deps

* deps

* fix import

* fix import

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* npm-check

* pkg lock

* webpack cli

* Update package-lock.json

* lint

* webpack deps

* Update package-lock.json

* lint

* vitest coverage

* Update package-lock.json

* revert procaptcha-bundle + config pkg deps

* order

* Update package-lock.json

* add standard devdeps to all pkgs

* Update package-lock.json

* tsx

* Update package-lock.json

* lint

* Deploy bundle on push (#1362)

Deploying bundle to s3

* No hats (#1357)

* drop unneeded workspace deps

* fix deps provider-mock

* fix deps cypress-shared

* fix deps client-example

* fix deps client-example-server

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* deps

* deps

* deps

* deps

* deps

* deps

* fix import

* fix import

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* npm-check

* pkg lock

* remove hats

* purge hats

* Update package-lock.json

* bump pkg vers

* fix array access errors for new ts version

* bump i18n

* bump pkg vers

* fix array access for new ts ver

* fix dep vers

* Update package-lock.json

* lint

* remove hat

* add webpack and rollup plugins back in

* Update package-lock.json

* bump rollup and webpack plugin vers

* missing babel plugins

* bump babel deps

* Update package-lock.json

* move import

* add comments for biome ignores

* npmrc (#1361)

* Adding prosopo  to css selectors (#1363)

Adding prosopo- to all classnames

Co-authored-by: George Oastler <goastler@users.noreply.github.com>

* Deps (#1365)

* drop unneeded workspace deps

* fix deps provider-mock

* fix deps cypress-shared

* fix deps client-example

* fix deps client-example-server

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* deps

* deps

* deps

* deps

* deps

* deps

* fix import

* fix import

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* deps

* dep

* npm-check

* pkg lock

* remove hats

* purge hats

* Update package-lock.json

* bump pkg vers

* fix array access errors for new ts version

* bump i18n

* bump pkg vers

* fix array access for new ts ver

* fix dep vers

* Update package-lock.json

* lint

* remove hat

* add webpack and rollup plugins back in

* Update package-lock.json

* bump rollup and webpack plugin vers

* missing babel plugins

* bump babel deps

* Update package-lock.json

* move import

* add comments for biome ignores

* add devdeps

* more devdeps

* consolidate pkg vers

* drop hats

* drop hats

* drop npm check

* Update package-lock.json

* bump deps

* scripts

* remove emotion react

* ignore standard pkgs from depcheck

* typo

* Update package-lock.json

* lint

* npmrc fix (#1366)

Co-authored-by: Chris <forgetso86@gmail.com>

* bump vite to 5.4.6

* 📦🔒

* fix bump version workflow (#1368)

* Bump version to 2.1.0

* Bump to 2.0.1

* Lint-fix

* Bump env versions

* saving to js folder (#1373)

saving t o js folder

* Adding spanish and portuguese support (#1364)

* Working build for ES and PT language support

* Auto update lang in all captcha types

* Working i18n

* All translations

* Dropping empty file

* Linting and formatting

* Adding tests and refactoring bundle

* package lock bumps

* proper numbers ❇️

* 🔒

* lint fix

* Linting fixes

* more linting aa

* License formatting

* Add config for resolving .js extensions in ESM context in webpack build

* lint-fix

* Add check for build and build:cjs

* check that number of references in tsconfig.json equals the number in tsconfig.cjs.json

* Stop tsconfigs from having missing references

* Fix script for comparing package.jsons and tsconfig.json

* fix all missing packages

* 📦🔒

* lint-fix

* fix broken package version

* add missing ref

* Make sure file does not exist

* lint-fix

* Script to remove unused JSON keys

* Remove ununsed JSON keys

* lint-fix

* remove PROGUI section

---------

Co-authored-by: Chris Taylor <forgetso86@gmail.com>

* Package bumps

* recursive copy

* caddyfile defaults for variables

* Copy top level files only

* deploy fix (#1374)

* deploy fix

* remove demo changes

* dumbb lint

* english language

* Use inherited vite config from dev/config package (#1376)

* Use inherited vite config from dev/config package

* lint-fix

* Add watch workspace plugin back in

* i18n fixes (#1377)

* i18n fixes

* Removing unused lang, linting, etc

* lint

* Portugese Brazilian (#1379)

* Portugese Brazilian

* Add pt-BR to zod enum

---------

Co-authored-by: Hugh <hughglynparry@gmail.com>

* Commit so that i can pin

---------

Co-authored-by: George Oastler <goastler@users.noreply.github.com>
Co-authored-by: George Oastler <goastler4@gmail.com>
Co-authored-by: Chris <forgetso86@gmail.com>
Co-authored-by: Hugh <90424587+HughParry@users.noreply.github.com>
Co-authored-by: Hugh <hughglynparry@gmail.com>

* Apply code scanning fix for information exposure through a stack trace

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Sort out test config

* Don't send stacks via API

* lint-fix

* Remove argument level

* Add command to start provider with admin api

* Change command to work with concurrently

* Update correct workflow

* Move imports

* 📦🔒

* lint-fix

* Bundle docs URL

* Move translation strings

* Add test to catch translation keys missing

* Big locale overhaul

* Big locale overhaul

* 📦🔒

* 📦🔒

* 📦🔒

* tsconfig refs

* 📦🔒

* remove polkadot/util from common

* Use correct package name

* Use correct package name

* lint-fix

* package dir getters

* Lint-fix and fix import

* Address PR comments

* specify no tests for the locale-browser package

* More imports placed below license

* Lint-fix

* remove rogue npmignore

---------

Co-authored-by: prosoponator <156670514+prosoponator@users.noreply.github.com>
Co-authored-by: George Oastler <goastler@users.noreply.github.com>
Co-authored-by: George Oastler <goastler4@gmail.com>
Co-authored-by: Hugh <90424587+HughParry@users.noreply.github.com>
Co-authored-by: Hugh <hughglynparry@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
  • Loading branch information
7 people authored Sep 24, 2024
1 parent 7ffc5c5 commit dcf78d0
Show file tree
Hide file tree
Showing 59 changed files with 2,984 additions and 218 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/bump_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

env:
GITHUB_TOKEN: ${{ secrets.PROSOPONATOR_PAT }}

env:
GITHUB_TOKEN: ${{ secrets.PROSOPONATOR_PAT }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/cypress.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,15 +118,15 @@ jobs:

- name: Run the cypress tests on client-example
run: |
npx concurrently "npm run start:server" "npm run start:provider" "npm run start:demo" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-example" --success "first" --kill-others
npx concurrently "npm run start:server" "npm run start:provider:admin" "npm run start:demo" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-example" --success "first" --kill-others
- name: Run the cypress tests on client-bundle-example
run: |
npx concurrently "npm run start:server" "npm run start:provider" "npm run start:bundle" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-bundle-example" --success "first" --kill-others
npx concurrently "npm run start:server" "npm run start:provider:admin" "npm run start:bundle" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-bundle-example" --success "first" --kill-others
- name: Run the cypress tests on client-bundle-example explicit rendering
run: |
npx concurrently "npm run start:server" "npm run start:provider" "npm run start:bundle" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-bundle-example:explicit" --success "first" --kill-others
npx concurrently "npm run start:server" "npm run start:provider:admin" "npm run start:bundle" "sleep 10s && npm -w @prosopo/cypress-shared run cypress:run:client-bundle-example:explicit" --success "first" --kill-others
# after the test run completes store videos and any screenshots
- uses: actions/upload-artifact@v4
Expand Down
337 changes: 337 additions & 0 deletions .github/workflows/deploy.yml

Large diffs are not rendered by default.

56 changes: 56 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,62 @@ jobs:
cat missing_references.txt
fi
# check that each package.json contains a `build` and `build:cjs` script.
- name: Check for build and build:cjs scripts
run: |
for file in $(find ./packages -name package.json -not -path "**/node_modules/*" -not -path "./packages/detector/*"); do
if ! grep -q '"build":' $file; then
echo "Missing 'build' script in $file"
exit 1
fi
if ! grep -q '"build:cjs":' $file; then
echo "Missing 'build:cjs' script in $file"
exit 1
fi
done
# check that the number of references in each tsconfig.json is equal to the number of references in the tsconfig.cjs.json for each package
- name: Check for matching references in tsconfig.json and tsconfig.cjs.json
run: |
rm -f mismatched_references.txt
for file in $(find ./packages -name tsconfig.json -not -path "**/node_modules/*" -not -path "./packages/detector/*"); do
if [ $(jq '.references | length' $file) -ne $(jq '.references | length' $(dirname $file)/tsconfig.cjs.json) ]; then
echo "Mismatched number of references in $file and $(dirname $file)/tsconfig.cjs.json" >> mismatched_references.txt
fi
done
if [ -f mismatched_references.txt ]; then
cat mismatched_references.txt
exit 1
fi
# check that each @prosopo package referenced in package.json is in the tsconfig.json for each package
- name: Check for matching references in package.json and tsconfig.json
run: |
rm -f missing_references.txt
for file in $(find ./packages -name package.json -not -path "**/node_modules/*" -not -path "./packages/detector/*"); do
for package in $(jq -r '.dependencies | keys[]' $file); do
# if the package is not a @prosopo package, skip it
if ! echo $package | grep -q "^@prosopo"; then
continue
fi
# if the package is @prosopo/config, skip it
if [[ "$package" == "@prosopo/config" ]]; then
continue
fi
# split the package by '/' and get the last element
searchterm=$(echo $package | awk -F/ '{print $NF}')
if ! grep -oI "\"..\/$searchterm\"" $(dirname $file)/tsconfig.json; then
# store the results
echo "Missing reference to $searchterm in $(dirname $file)/tsconfig.json" >> missing_references.txt
fi
done
done
if [ -f missing_references.txt ]; then
cat missing_references.txt
fi
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
Expand Down
3 changes: 3 additions & 0 deletions demos/client-example/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ export default defineConfig(async ({ command, mode }) => {
"process.env.PROSOPO_LOG_LEVEL": JSON.stringify(
process.env.PROSOPO_LOG_LEVEL || "Info",
),
"process.env.PROSOPO_DOCS_URL": JSON.stringify(
process.env.PROSOPO_DOCS_URL,
),
},
build: {
outDir: path.resolve("./dist"),
Expand Down
7 changes: 7 additions & 0 deletions demos/cypress-shared/cypress.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,19 @@ import vitePreprocessor from "cypress-vite";
// 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 { loadEnv } from "@prosopo/dotenv";
import { defineConfig } from "cypress";
import vitePreprocessor from "cypress-vite";
import { nodePolyfills } from "vite-plugin-node-polyfills";

loadEnv();

export default defineConfig({
video: true,
headers: { "Accept-Encoding": "gzip, deflate" },
env: {
...process.env,
default_page: "/",
},
e2e: {
Expand Down
22 changes: 21 additions & 1 deletion demos/cypress-shared/cypress/e2e/captcha.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,33 @@
// limitations under the License.
/// <reference types="cypress" />
import "@cypress/xpath";
import { u8aToHex } from "@polkadot/util";
import { ProsopoDatasetError } from "@prosopo/common";
import { getPairAsync } from "@prosopo/contract";
import { datasetWithSolutionHashes } from "@prosopo/datasets";
import type { Captcha } from "@prosopo/types";
import { AdminApiPaths, type Captcha } from "@prosopo/types";
import { at } from "@prosopo/util";
import { checkboxClass } from "../support/commands.js";

describe("Captchas", () => {
before(async () => {
const timestamp = new Date().getTime();
const pair = await getPairAsync(Cypress.env("PROSOPO_PROVIDER_MNEMONIC"));
const signature = u8aToHex(pair.sign(timestamp.toString()));
const adminSiteKeyURL = `http://localhost:9229${AdminApiPaths.SiteKeyRegister}`;
await fetch(adminSiteKeyURL, {
method: "POST",
headers: {
"Content-Type": "application/json",
signature: signature,
timestamp: timestamp.toString(),
},
body: JSON.stringify({
siteKey: Cypress.env("PROSOPO_SITE_KEY"),
}),
});
});

beforeEach(() => {
const solutions = datasetWithSolutionHashes.captchas.map((captcha) => ({
captchaContentId: captcha.captchaContentId,
Expand Down
22 changes: 21 additions & 1 deletion demos/cypress-shared/cypress/e2e/correct.captcha.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,32 @@
// limitations under the License.
/// <reference types="cypress" />
import "@cypress/xpath";
import { u8aToHex } from "@polkadot/util";
import { ProsopoDatasetError } from "@prosopo/common";
import { getPairAsync } from "@prosopo/contract";
import { datasetWithSolutionHashes } from "@prosopo/datasets";
import type { Captcha } from "@prosopo/types";
import { AdminApiPaths, type Captcha } from "@prosopo/types";
import { checkboxClass } from "../support/commands.js";

describe("Captchas", () => {
before(async () => {
const timestamp = new Date().getTime();
const pair = await getPairAsync(Cypress.env("PROSOPO_PROVIDER_MNEMONIC"));
const signature = u8aToHex(pair.sign(timestamp.toString()));
const adminSiteKeyURL = `http://localhost:9229${AdminApiPaths.SiteKeyRegister}`;
await fetch(adminSiteKeyURL, {
method: "POST",
headers: {
"Content-Type": "application/json",
signature: signature,
timestamp: timestamp.toString(),
},
body: JSON.stringify({
siteKey: Cypress.env("PROSOPO_SITE_KEY"),
}),
});
});

beforeEach(() => {
const solutions = datasetWithSolutionHashes.captchas.map((captcha) => ({
captchaContentId: captcha.captchaContentId,
Expand Down
22 changes: 21 additions & 1 deletion demos/cypress-shared/cypress/e2e/correct.captcha.signup.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,32 @@
// limitations under the License.
/// <reference types="cypress" />
import "@cypress/xpath";
import { u8aToHex } from "@polkadot/util";
import { ProsopoDatasetError } from "@prosopo/common";
import { getPairAsync } from "@prosopo/contract";
import { datasetWithSolutionHashes } from "@prosopo/datasets";
import type { Captcha } from "@prosopo/types";
import { AdminApiPaths, type Captcha } from "@prosopo/types";
import { checkboxClass } from "../support/commands.js";

describe("Captchas", () => {
before(async () => {
const timestamp = new Date().getTime();
const pair = await getPairAsync(Cypress.env("PROSOPO_PROVIDER_MNEMONIC"));
const signature = u8aToHex(pair.sign(timestamp.toString()));
const adminSiteKeyURL = `http://localhost:9229${AdminApiPaths.SiteKeyRegister}`;
await fetch(adminSiteKeyURL, {
method: "POST",
headers: {
"Content-Type": "application/json",
signature: signature,
timestamp: timestamp.toString(),
},
body: JSON.stringify({
siteKey: Cypress.env("PROSOPO_SITE_KEY"),
}),
});
});

beforeEach(() => {
const solutions = datasetWithSolutionHashes.captchas.map((captcha) => ({
captchaContentId: captcha.captchaContentId,
Expand Down
3 changes: 3 additions & 0 deletions dev/config/src/vite/vite.frontend.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ export default async function (
"process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify(
process.env.PROSOPO_PACKAGE_VERSION,
),
"process.env.PROSOPO_DOCS_URL": JSON.stringify(
process.env.PROSOPO_DOCS_URL,
),
// only needed if bundling with a site key
"process.env.PROSOPO_SITE_KEY": JSON.stringify(
process.env.PROSOPO_SITE_KEY,
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
"setup": "npm -w @prosopo/scripts run setup",
"setup:all": "npm run setup",
"start:provider": "npm -w @prosopo/cli run start",
"start:provider:admin": "npm -w @prosopo/cli run start:admin",
"start:server": "npm -w @prosopo/client-example-server run start",
"start:demo": "npm -w @prosopo/client-example run start",
"start:bundle": "npm -w @prosopo/client-bundle-example run start",
Expand Down
6 changes: 5 additions & 1 deletion packages/api/src/api/ProviderApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
type PowCaptchaSolutionResponse,
type ProcaptchaToken,
type Provider,
type ProviderApiInterface,
type ProviderRegistered,
type RandomProvider,
type ServerPowCaptchaVerifyRequestBodyType,
Expand All @@ -36,7 +37,10 @@ import {
} from "@prosopo/types";
import HttpClientBase from "./HttpClientBase.js";

export default class ProviderApi extends HttpClientBase implements ProviderApi {
export default class ProviderApi
extends HttpClientBase
implements ProviderApiInterface
{
private account: string;

constructor(providerUrl: string, account: string) {
Expand Down
1 change: 1 addition & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
"test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts",
"cli": "node ./dist/cli.js",
"start": "node ./dist/cli.js --api",
"start:admin": "node ./dist/cli.js --api --adminApi",
"start:dev": "node ./dist/cli.js --api --dev"
},
"dependencies": {
Expand Down
8 changes: 4 additions & 4 deletions packages/cli/src/RateLimiter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ export const getRateLimitConfig = () => {
windowMs: process.env.PROSOPO_SUBMIT_USER_EVENTS_WINDOW,
limit: process.env.PROSOPO_SUBMIT_USER_EVENTS_LIMIT,
},
[AdminApiPaths.BatchCommit]: {
windowMs: process.env.PROSOPO_BATCH_COMMIT_WINDOW,
limit: process.env.PROSOPO_BATCH_COMMIT_LIMIT,
},
[AdminApiPaths.UpdateDataset]: {
windowMs: process.env.PROSOPO_UPDATE_DATASET_WINDOW,
limit: process.env.PROSOPO_UPDATE_DATASET_LIMIT,
},
[AdminApiPaths.SiteKeyRegister]: {
windowMs: process.env.PROSOPO_SITE_KEY_REGISTER_WINDOW,
limit: process.env.PROSOPO_SITE_KEY_REGISTER_LIMIT,
},
[AdminApiPaths.ProviderDeregister]: {
windowMs: process.env.PROSOPO_PROVIDER_DEREGISTER_WINDOW,
limit: process.env.PROSOPO_PROVIDER_DEREGISTER_LIMIT,
Expand Down
2 changes: 2 additions & 0 deletions packages/cli/src/argv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import yargs from "yargs";
import { hideBin } from "yargs/helpers";
import {
commandProviderSetDataset,
commandSiteKeyRegister,
commandStoreCaptchasExternally,
commandVersion,
} from "./commands/index.js";
Expand Down Expand Up @@ -45,6 +46,7 @@ export function processArgs(
} as const)
.command(commandProviderSetDataset(pair, config, { logger }))
.command(commandStoreCaptchasExternally(pair, config, { logger }))
.command(commandSiteKeyRegister(pair, config, { logger }))
.command(commandVersion(pair, config, { logger }))
.parse();
}
1 change: 1 addition & 0 deletions packages/cli/src/commands/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@
export { default as commandProviderSetDataset } from "./providerSetDataset.js";
export { default as commandStoreCaptchasExternally } from "./storeCaptchasExternally.js";
export { default as commandVersion } from "./version.js";
export { default as commandSiteKeyRegister } from "./siteKeyRegister.js";
53 changes: 53 additions & 0 deletions packages/cli/src/commands/siteKeyRegister.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Copyright 2021-2024 Prosopo (UK) Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// 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 type { KeyringPair } from "@polkadot/keyring/types";
import { LogLevel, type Logger, getLogger } from "@prosopo/common";
import { ProviderEnvironment } from "@prosopo/env";
import { Tasks } from "@prosopo/provider";
import type { ProsopoConfigOutput } from "@prosopo/types";
import type { ArgumentsCamelCase, Argv } from "yargs";
import { validateSiteKey } from "./validators.js";

export default (
pair: KeyringPair,
config: ProsopoConfigOutput,
cmdArgs?: { logger?: Logger },
) => {
const logger =
cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.dapp_register");

return {
command: "site_key_register <sitekey>",
describe: "Register a Site Key",
builder: (yargs: Argv) =>
yargs.positional("sitekey", {
type: "string" as const,
demandOption: true,
desc: "The AccountId of the application to register the Site Key with",
} as const),
handler: async (argv: ArgumentsCamelCase) => {
try {
const env = new ProviderEnvironment(config, pair);
await env.isReady();
const siteKey = argv.sitekey;
const tasks = new Tasks(env);
await tasks.clientTaskManager.registerSiteKey(siteKey as string);
logger.info(`Site Key ${argv.sitekey} registered`);
} catch (err) {
logger.error(err);
}
},
middlewares: [validateSiteKey],
};
};
8 changes: 8 additions & 0 deletions packages/cli/src/commands/validators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,14 @@ export const validateAddress = (
return { address };
};

export const validateSiteKey = (
argv: ArgumentsCamelCase,
): { sitekey: string } => {
const sitekey = encodeStringAddress(argv.sitekey as string);

return { sitekey };
};

export const validateValue = (argv: ArgumentsCamelCase) => {
if (typeof argv.value !== "number") {
throw new ProsopoEnvError("CLI.PARAMETER_ERROR", {
Expand Down
Loading

0 comments on commit dcf78d0

Please sign in to comment.