From a65c154f4d108c795e5929369375b915d8652fc6 Mon Sep 17 00:00:00 2001 From: DPP VCPKG Bot Date: Sat, 30 Sep 2023 19:46:28 +0000 Subject: [PATCH 01/11] [bot] VCPKG info update [skip ci] --- vcpkg/ports/dpp/portfile.cmake | 2 +- vcpkg/ports/dpp/vcpkg.json | 2 +- vcpkg/versions/baseline.json | 1424 +++++++++++++++++--------------- vcpkg/versions/d-/dpp.json | 7 +- 4 files changed, 754 insertions(+), 681 deletions(-) diff --git a/vcpkg/ports/dpp/portfile.cmake b/vcpkg/ports/dpp/portfile.cmake index ac8c47a8e3..a97ecb58d7 100644 --- a/vcpkg/ports/dpp/portfile.cmake +++ b/vcpkg/ports/dpp/portfile.cmake @@ -2,7 +2,7 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO brainboxdotcc/DPP REF "v${VERSION}" - SHA512 49cb6fedcb75d3dd146243f46f9e34cfe79e1c9a6ae76fc69c8c6935d9a10ccf562452311085791674ff659913befe1dc6f8a191b518d45151cb23d779396572 + SHA512 5fa1e807eaeb8ecf53d55e537a804ae1135018008d7b6f4e42225ee21ca975b7f3662f60777527395f8f0672a66077f2a3e95c9a3074f819187921e114ac03f5 ) vcpkg_cmake_configure( diff --git a/vcpkg/ports/dpp/vcpkg.json b/vcpkg/ports/dpp/vcpkg.json index 04d0677cb6..89c5068980 100644 --- a/vcpkg/ports/dpp/vcpkg.json +++ b/vcpkg/ports/dpp/vcpkg.json @@ -1,6 +1,6 @@ { "name": "dpp", - "version": "10.0.25", + "version": "10.0.26", "description": "D++ Extremely Lightweight C++ Discord Library.", "homepage": "https://dpp.dev/", "license": "Apache-2.0", diff --git a/vcpkg/versions/baseline.json b/vcpkg/versions/baseline.json index c75313e2a7..a778299253 100644 --- a/vcpkg/versions/baseline.json +++ b/vcpkg/versions/baseline.json @@ -5,8 +5,8 @@ "port-version": 4 }, "7zip": { - "baseline": "22.01", - "port-version": 1 + "baseline": "23.01", + "port-version": 0 }, "ableton": { "baseline": "3.0.6", @@ -14,10 +14,10 @@ }, "ableton-link": { "baseline": "3.0.6", - "port-version": 0 + "port-version": 1 }, "abseil": { - "baseline": "20230802.0", + "baseline": "20230802.1", "port-version": 0 }, "absent": { @@ -26,7 +26,7 @@ }, "ace": { "baseline": "7.1.1", - "port-version": 1 + "port-version": 2 }, "acl": { "baseline": "2.3.1", @@ -37,11 +37,11 @@ "port-version": 15 }, "ada-url": { - "baseline": "2.6.0", + "baseline": "2.6.8", "port-version": 0 }, "ade": { - "baseline": "0.1.2", + "baseline": "0.1.2c", "port-version": 0 }, "adios2": { @@ -73,7 +73,7 @@ "port-version": 7 }, "alembic": { - "baseline": "1.8.5", + "baseline": "1.8.6", "port-version": 0 }, "aliyun-oss-c-sdk": { @@ -118,7 +118,7 @@ }, "anari": { "baseline": "0.7.0", - "port-version": 0 + "port-version": 1 }, "anax": { "baseline": "2.1.0", @@ -137,7 +137,7 @@ "port-version": 0 }, "antlr4": { - "baseline": "4.13.0", + "baseline": "4.13.1", "port-version": 0 }, "any-lite": { @@ -161,16 +161,16 @@ "port-version": 0 }, "apr": { - "baseline": "1.7.2", - "port-version": 1 + "baseline": "1.7.4", + "port-version": 0 }, "apr-util": { - "baseline": "1.6.1", - "port-version": 10 + "baseline": "1.6.3", + "port-version": 0 }, "apsi": { "baseline": "0.9.0", - "port-version": 1 + "port-version": 2 }, "arb": { "baseline": "2.21.1", @@ -185,8 +185,8 @@ "port-version": 0 }, "argagg": { - "baseline": "0.4.6", - "port-version": 3 + "baseline": "0.4.7", + "port-version": 0 }, "argh": { "baseline": "1.3.2", @@ -209,8 +209,8 @@ "port-version": 10 }, "argtable3": { - "baseline": "3.2.1", - "port-version": 3 + "baseline": "3.2.2.f25c624", + "port-version": 0 }, "argumentum": { "baseline": "0.3.2", @@ -234,7 +234,7 @@ }, "arrow": { "baseline": "13.0.0", - "port-version": 0 + "port-version": 1 }, "arsenalgear": { "baseline": "2.1.0", @@ -245,8 +245,8 @@ "port-version": 0 }, "asio": { - "baseline": "1.28.0", - "port-version": 1 + "baseline": "1.28.1", + "port-version": 0 }, "asio-grpc": { "baseline": "2.6.0", @@ -265,11 +265,11 @@ "port-version": 1 }, "assimp": { - "baseline": "5.2.5", + "baseline": "5.3.1", "port-version": 0 }, "async-mqtt": { - "baseline": "1.0.9", + "baseline": "2.0.0", "port-version": 0 }, "asynch": { @@ -290,7 +290,7 @@ }, "atk": { "baseline": "2.38.0", - "port-version": 7 + "port-version": 8 }, "atkmm": { "baseline": "2.36.1", @@ -326,7 +326,7 @@ }, "autodock-vina": { "baseline": "1.2.5", - "port-version": 0 + "port-version": 1 }, "avcpp": { "baseline": "2.1.0", @@ -341,19 +341,19 @@ "port-version": 3 }, "avro-cpp": { - "baseline": "2022-11-07", - "port-version": 1 + "baseline": "1.11.3", + "port-version": 0 }, "aws-c-auth": { - "baseline": "0.7.0", + "baseline": "0.7.4", "port-version": 0 }, "aws-c-cal": { - "baseline": "0.6.0", - "port-version": 0 + "baseline": "0.6.2", + "port-version": 1 }, "aws-c-common": { - "baseline": "0.8.23", + "baseline": "0.9.4", "port-version": 0 }, "aws-c-compression": { @@ -361,35 +361,35 @@ "port-version": 0 }, "aws-c-event-stream": { - "baseline": "0.3.1", + "baseline": "0.3.2", "port-version": 0 }, "aws-c-http": { - "baseline": "0.7.10", + "baseline": "0.7.13", "port-version": 0 }, "aws-c-io": { - "baseline": "0.13.27", + "baseline": "0.13.32", "port-version": 0 }, "aws-c-mqtt": { - "baseline": "0.8.14", + "baseline": "0.9.6", "port-version": 0 }, "aws-c-s3": { - "baseline": "0.3.12", + "baseline": "0.3.17", "port-version": 0 }, "aws-c-sdkutils": { - "baseline": "0.1.11", + "baseline": "0.1.12", "port-version": 0 }, "aws-checksums": { - "baseline": "0.1.16", + "baseline": "0.1.17", "port-version": 0 }, "aws-crt-cpp": { - "baseline": "0.20.3", + "baseline": "0.23.1", "port-version": 0 }, "aws-lambda-cpp": { @@ -397,7 +397,7 @@ "port-version": 1 }, "aws-sdk-cpp": { - "baseline": "1.11.149", + "baseline": "1.11.169", "port-version": 0 }, "azmq": { @@ -409,20 +409,20 @@ "port-version": 0 }, "azure-core-amqp-cpp": { - "baseline": "1.0.0-beta.2", + "baseline": "1.0.0-beta.3", "port-version": 1 }, "azure-core-cpp": { "baseline": "1.10.2", - "port-version": 3 + "port-version": 5 }, "azure-core-tracing-opentelemetry-cpp": { "baseline": "1.0.0-beta.4", - "port-version": 0 + "port-version": 1 }, "azure-identity-cpp": { "baseline": "1.5.1", - "port-version": 0 + "port-version": 1 }, "azure-iot-sdk-c": { "baseline": "2023-08-07", @@ -437,52 +437,52 @@ "port-version": 1 }, "azure-messaging-eventhubs-cpp": { - "baseline": "1.0.0-beta.1", - "port-version": 0 + "baseline": "1.0.0-beta.2", + "port-version": 1 }, "azure-security-attestation-cpp": { "baseline": "1.1.0", - "port-version": 0 + "port-version": 1 }, "azure-security-keyvault-administration-cpp": { "baseline": "4.0.0-beta.3", - "port-version": 0 + "port-version": 1 }, "azure-security-keyvault-certificates-cpp": { "baseline": "4.2.0", - "port-version": 0 + "port-version": 1 }, "azure-security-keyvault-keys-cpp": { "baseline": "4.4.0", - "port-version": 0 + "port-version": 1 }, "azure-security-keyvault-secrets-cpp": { "baseline": "4.2.0", - "port-version": 0 + "port-version": 1 }, "azure-storage-blobs-cpp": { - "baseline": "12.8.0", - "port-version": 0 + "baseline": "12.9.0", + "port-version": 1 }, "azure-storage-common-cpp": { - "baseline": "12.3.3", - "port-version": 0 + "baseline": "12.4.0", + "port-version": 1 }, "azure-storage-cpp": { "baseline": "7.5.0", "port-version": 6 }, "azure-storage-files-datalake-cpp": { - "baseline": "12.7.0", - "port-version": 0 + "baseline": "12.8.0", + "port-version": 1 }, "azure-storage-files-shares-cpp": { - "baseline": "12.6.1", - "port-version": 0 + "baseline": "12.7.0", + "port-version": 1 }, "azure-storage-queues-cpp": { - "baseline": "12.0.0", - "port-version": 0 + "baseline": "12.1.0", + "port-version": 1 }, "azure-uamqp-c": { "baseline": "2023-08-07", @@ -521,7 +521,7 @@ "port-version": 0 }, "bde": { - "baseline": "3.117.0.0", + "baseline": "3.123.0.0", "port-version": 0 }, "bdwgc": { @@ -533,11 +533,11 @@ "port-version": 2 }, "behaviortree-cpp": { - "baseline": "4.1.1", + "baseline": "4.3.7", "port-version": 0 }, "benchmark": { - "baseline": "1.8.2", + "baseline": "1.8.3", "port-version": 0 }, "bento4": { @@ -556,6 +556,10 @@ "baseline": "1.1.5", "port-version": 0 }, + "bext-sml2": { + "baseline": "2023-09-20", + "port-version": 0 + }, "bext-ut": { "baseline": "1.1.9", "port-version": 2 @@ -585,11 +589,11 @@ "port-version": 3 }, "bitmagic": { - "baseline": "7.12.3", + "baseline": "7.13.4", "port-version": 0 }, "bitserializer": { - "baseline": "0.50", + "baseline": "0.65", "port-version": 0 }, "bitserializer-cpprestjson": { @@ -613,7 +617,7 @@ "port-version": 0 }, "blake3": { - "baseline": "1.4.0", + "baseline": "1.5.0", "port-version": 0 }, "blas": { @@ -626,7 +630,7 @@ }, "blend2d": { "baseline": "2023-06-16", - "port-version": 0 + "port-version": 1 }, "blingfire": { "baseline": "0.1.8.1", @@ -637,7 +641,7 @@ "port-version": 5 }, "blosc": { - "baseline": "1.21.3", + "baseline": "1.21.5", "port-version": 0 }, "blpapi": { @@ -657,620 +661,620 @@ "port-version": 0 }, "boost": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 1 }, "boost-accumulators": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-algorithm": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-align": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-any": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-array": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-asio": { - "baseline": "1.82.0", - "port-version": 3 + "baseline": "1.83.0", + "port-version": 0 }, "boost-assert": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-assign": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-atomic": { - "baseline": "1.82.0", - "port-version": 3 + "baseline": "1.83.0", + "port-version": 0 }, "boost-beast": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-bimap": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-bind": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-build": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-callable-traits": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-chrono": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-circular-buffer": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 + }, + "boost-compat": { + "baseline": "1.83.0", + "port-version": 0 }, "boost-compatibility": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-compute": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-concept-check": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-config": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-container": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-container-hash": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-context": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-contract": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-conversion": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-convert": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-core": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-coroutine": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-coroutine2": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-crc": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-date-time": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-describe": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-detail": { - "baseline": "1.82.0", - "port-version": 2 - }, - "boost-di": { - "baseline": "1.2.0", + "baseline": "1.83.0", "port-version": 0 }, "boost-dll": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-dynamic-bitset": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-endian": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-exception": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-fiber": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 1 }, "boost-filesystem": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-flyweight": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-foreach": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-format": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-function": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-function-types": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-functional": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-fusion": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-geometry": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-gil": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-graph": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-graph-parallel": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-hana": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-heap": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-histogram": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-hof": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-icl": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-integer": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-interprocess": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-interval": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-intrusive": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-io": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-iostreams": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-iterator": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-json": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-lambda": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-lambda2": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-leaf": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-lexical-cast": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-local-function": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-locale": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-lockfree": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-log": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-logic": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-math": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-metaparse": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-modular-build-helper": { - "baseline": "1.82.0", - "port-version": 4 + "baseline": "1.83.0", + "port-version": 1 }, "boost-move": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-mp11": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-mpi": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-mpl": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-msm": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-multi-array": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-multi-index": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-multiprecision": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-mysql": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-nowide": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-numeric-conversion": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-odeint": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-optional": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-outcome": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-parameter": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-parameter-python": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-pfr": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-phoenix": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-poly-collection": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-polygon": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-pool": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-predef": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-preprocessor": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-process": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-program-options": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-property-map": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-property-map-parallel": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-property-tree": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-proto": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-ptr-container": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-python": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-qvm": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-random": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-range": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-ratio": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-rational": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-regex": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-safe-numerics": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-scope-exit": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-serialization": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-signals2": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-smart-ptr": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-sort": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-spirit": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-stacktrace": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-statechart": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-static-assert": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-static-string": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-stl-interfaces": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-system": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-test": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-thread": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-throw-exception": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-timer": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-tokenizer": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-tti": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-tuple": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-type-erasure": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-type-index": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-type-traits": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-typeof": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-ublas": { - "baseline": "1.82.0", - "port-version": 3 + "baseline": "1.83.0", + "port-version": 0 }, "boost-uninstall": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-units": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-unordered": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-url": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-utility": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-uuid": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-variant": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-variant2": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-vcpkg-helpers": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-vmd": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-wave": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-winapi": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-xpressive": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boost-yap": { - "baseline": "1.82.0", - "port-version": 2 + "baseline": "1.83.0", + "port-version": 0 }, "boringssl": { - "baseline": "2021-06-23", - "port-version": 4 + "baseline": "2023-09-25", + "port-version": 0 }, "botan": { "baseline": "2.19.3", @@ -1293,11 +1297,11 @@ "port-version": 3 }, "brotli": { - "baseline": "1.0.9", - "port-version": 5 + "baseline": "1.1.0", + "port-version": 0 }, "brpc": { - "baseline": "1.5.0", + "baseline": "1.6.0", "port-version": 0 }, "brunocodutra-metal": { @@ -1386,7 +1390,7 @@ }, "cairo": { "baseline": "1.17.8", - "port-version": 3 + "port-version": 4 }, "cairomm": { "baseline": "1.17.1", @@ -1401,12 +1405,12 @@ "port-version": 0 }, "capnproto": { - "baseline": "0.10.3", + "baseline": "1.0.1", "port-version": 0 }, "capstone": { - "baseline": "5.0.0-rc2", - "port-version": 2 + "baseline": "5.0.1", + "port-version": 0 }, "cargs": { "baseline": "1.0.3", @@ -1446,18 +1450,18 @@ }, "cctag": { "baseline": "1.0.2", - "port-version": 4 + "port-version": 5 }, "cctz": { "baseline": "2.3", - "port-version": 5 + "port-version": 6 }, "cdt": { "baseline": "1.3.0", "port-version": 0 }, "celero": { - "baseline": "2.8.5", + "baseline": "2.9.0", "port-version": 0 }, "cello": { @@ -1474,7 +1478,7 @@ }, "cfitsio": { "baseline": "3.49", - "port-version": 3 + "port-version": 4 }, "cgal": { "baseline": "5.6", @@ -1484,12 +1488,8 @@ "baseline": "3.2.19", "port-version": 7 }, - "cgl": { - "baseline": "0.60.3", - "port-version": 0 - }, "cglm": { - "baseline": "0.8.8", + "baseline": "0.9.1", "port-version": 0 }, "cgltf": { @@ -1497,8 +1497,8 @@ "port-version": 0 }, "cgns": { - "baseline": "4.3.0", - "port-version": 5 + "baseline": "4.4.0", + "port-version": 0 }, "chaiscript": { "baseline": "6.1.0", @@ -1529,8 +1529,8 @@ "port-version": 7 }, "chromaprint": { - "baseline": "1.5.0", - "port-version": 3 + "baseline": "1.5.1", + "port-version": 0 }, "chromium-base": { "baseline": "86.0.4199.1", @@ -1558,11 +1558,11 @@ }, "civetweb": { "baseline": "1.15", - "port-version": 2 + "port-version": 4 }, "cjson": { - "baseline": "1.7.15", - "port-version": 2 + "baseline": "1.7.16", + "port-version": 0 }, "clamav": { "baseline": "0.103.0", @@ -1581,8 +1581,8 @@ "port-version": 7 }, "clblast": { - "baseline": "1.5.2", - "port-version": 3 + "baseline": "1.6.1", + "port-version": 0 }, "clfft": { "baseline": "2.12.2", @@ -1610,16 +1610,12 @@ }, "clipper2": { "baseline": "1.2.2", - "port-version": 0 + "port-version": 1 }, "clockutils": { "baseline": "1.1.1", "port-version": 1 }, - "clp": { - "baseline": "1.17.6", - "port-version": 1 - }, "clrng": { "baseline": "2020-12-01", "port-version": 3 @@ -1777,7 +1773,7 @@ "port-version": 0 }, "cpp-httplib": { - "baseline": "0.13.3", + "baseline": "0.14.0", "port-version": 0 }, "cpp-ipc": { @@ -1790,7 +1786,7 @@ }, "cpp-netlib": { "baseline": "0.13.0", - "port-version": 8 + "port-version": 9 }, "cpp-peglib": { "baseline": "1.3.10", @@ -1841,12 +1837,12 @@ "port-version": 0 }, "cppmicroservices": { - "baseline": "3.6.0", - "port-version": 1 + "baseline": "3.7.6", + "port-version": 0 }, "cpprestsdk": { "baseline": "2.10.18", - "port-version": 3 + "port-version": 4 }, "cppslippi": { "baseline": "1.1.3.14", @@ -1873,15 +1869,15 @@ "port-version": 1 }, "cppzmq": { - "baseline": "4.9.0", - "port-version": 1 + "baseline": "4.10.0", + "port-version": 0 }, "cpr": { "baseline": "1.10.2+3", "port-version": 0 }, "cpu-features": { - "baseline": "0.8.0", + "baseline": "0.9.0", "port-version": 0 }, "cpuid": { @@ -1957,7 +1953,7 @@ "port-version": 2 }, "ctre": { - "baseline": "3.7.2", + "baseline": "3.8", "port-version": 0 }, "cub": { @@ -1981,7 +1977,7 @@ "port-version": 8 }, "curl": { - "baseline": "8.2.1", + "baseline": "8.3.0", "port-version": 0 }, "curlpp": { @@ -2018,11 +2014,11 @@ }, "czmq": { "baseline": "4.2.1", - "port-version": 2 + "port-version": 3 }, "d3d12-memory-allocator": { "baseline": "2021-05-05", - "port-version": 0 + "port-version": 1 }, "d3dx12": { "baseline": "may2021", @@ -2046,18 +2042,18 @@ }, "date": { "baseline": "3.0.1", - "port-version": 4 + "port-version": 5 }, "dav1d": { "baseline": "1.2.1", "port-version": 0 }, "daw-header-libraries": { - "baseline": "2.93.1", + "baseline": "2.96.1", "port-version": 0 }, "daw-json-link": { - "baseline": "3.19.0", + "baseline": "3.20.1", "port-version": 0 }, "daw-utf-range": { @@ -2065,7 +2061,7 @@ "port-version": 0 }, "daxa": { - "baseline": "1.0.0", + "baseline": "2.0.0", "port-version": 0 }, "dbg-macro": { @@ -2110,15 +2106,15 @@ }, "devil": { "baseline": "1.8.0", - "port-version": 10 + "port-version": 11 }, "dimcli": { "baseline": "7.1.0", "port-version": 0 }, "directx-dxc": { - "baseline": "2023-03-01", - "port-version": 2 + "baseline": "2023-08-14", + "port-version": 0 }, "directx-headers": { "baseline": "1.610.2", @@ -2137,16 +2133,16 @@ "port-version": 7 }, "directxtex": { - "baseline": "2023-06-13", - "port-version": 1 + "baseline": "2023-09-01", + "port-version": 0 }, "directxtk": { - "baseline": "2023-06-13", - "port-version": 0 + "baseline": "2023-09-01", + "port-version": 1 }, "directxtk12": { - "baseline": "2023-06-13", - "port-version": 0 + "baseline": "2023-09-01", + "port-version": 1 }, "dirent": { "baseline": "1.23.2", @@ -2161,7 +2157,7 @@ "port-version": 3 }, "discordcoreapi": { - "baseline": "1.80", + "baseline": "2.0", "port-version": 0 }, "discount": { @@ -2197,8 +2193,8 @@ "port-version": 0 }, "double-conversion": { - "baseline": "3.2.1", - "port-version": 1 + "baseline": "3.3.0", + "port-version": 0 }, "dp-thread-pool": { "baseline": "0.6.2", @@ -2209,7 +2205,7 @@ "port-version": 1 }, "dpp": { - "baseline": "10.0.25", + "baseline": "10.0.26", "port-version": 0 }, "draco": { @@ -2240,17 +2236,21 @@ "baseline": "2019-04-28", "port-version": 5 }, + "dukglue": { + "baseline": "2022-11-08", + "port-version": 0 + }, "duktape": { - "baseline": "2.5.0", - "port-version": 4 + "baseline": "2.7.0", + "port-version": 0 }, "dumb": { "baseline": "2.0.3", "port-version": 0 }, "dv-processing": { - "baseline": "1.7.8", - "port-version": 1 + "baseline": "1.7.9", + "port-version": 0 }, "dx": { "baseline": "1.0.1", @@ -2290,7 +2290,7 @@ }, "easyloggingpp": { "baseline": "9.97.0", - "port-version": 3 + "port-version": 4 }, "eathread": { "baseline": "1.32.09", @@ -2300,13 +2300,17 @@ "baseline": "1.4.4", "port-version": 1 }, + "ecal": { + "baseline": "5.12.0", + "port-version": 0 + }, "ecm": { "baseline": "5.98.0", "port-version": 0 }, "ecos": { - "baseline": "2.0.8", - "port-version": 3 + "baseline": "2.0.10", + "port-version": 0 }, "ecsutil": { "baseline": "1.0.7.15", @@ -2325,7 +2329,7 @@ "port-version": 3 }, "effolkronium-random": { - "baseline": "1.4.1", + "baseline": "1.5.0", "port-version": 0 }, "efsw": { @@ -2349,7 +2353,7 @@ "port-version": 0 }, "elfio": { - "baseline": "3.11", + "baseline": "3.12", "port-version": 0 }, "elfutils": { @@ -2365,7 +2369,7 @@ "port-version": 2 }, "ensmallen": { - "baseline": "2.19.0", + "baseline": "2.19.1", "port-version": 0 }, "entityx": { @@ -2393,7 +2397,7 @@ "port-version": 0 }, "etl": { - "baseline": "20.35.4", + "baseline": "20.38.0", "port-version": 0 }, "eve": { @@ -2401,7 +2405,7 @@ "port-version": 0 }, "eventpp": { - "baseline": "0.1.2", + "baseline": "0.1.3", "port-version": 0 }, "evpp": { @@ -2410,7 +2414,7 @@ }, "exiv2": { "baseline": "0.28.0", - "port-version": 0 + "port-version": 1 }, "expat": { "baseline": "2.5.0", @@ -2445,7 +2449,11 @@ "port-version": 0 }, "fakeit": { - "baseline": "2.3.0", + "baseline": "2.4.0", + "port-version": 0 + }, + "fameta-counter": { + "baseline": "2021-02-13", "port-version": 0 }, "fann": { @@ -2465,7 +2473,7 @@ "port-version": 0 }, "fastcdr": { - "baseline": "1.0.26", + "baseline": "1.1.0", "port-version": 0 }, "fastcgi": { @@ -2494,7 +2502,7 @@ }, "fastrtps": { "baseline": "2.7.0", - "port-version": 2 + "port-version": 3 }, "fawdlstty-libfv": { "baseline": "0.0.8", @@ -2521,12 +2529,12 @@ "port-version": 7 }, "ffmpeg": { - "baseline": "5.1.2", - "port-version": 7 + "baseline": "6.0", + "port-version": 0 }, "ffnvcodec": { - "baseline": "11.1.5.0", - "port-version": 1 + "baseline": "11.1.5.2", + "port-version": 0 }, "fftw3": { "baseline": "3.3.10", @@ -2608,6 +2616,10 @@ "baseline": "2.3.3", "port-version": 0 }, + "flux": { + "baseline": "2023-08-25", + "port-version": 0 + }, "fmem": { "baseline": "c-libs-2ccee3d2fb", "port-version": 3 @@ -2621,7 +2633,7 @@ "port-version": 2 }, "fmt": { - "baseline": "10.1.0", + "baseline": "10.1.1", "port-version": 0 }, "folly": { @@ -2633,8 +2645,8 @@ "port-version": 0 }, "font-util": { - "baseline": "1.3.2", - "port-version": 1 + "baseline": "1.4.1", + "port-version": 0 }, "fontconfig": { "baseline": "2.14.2", @@ -2648,10 +2660,6 @@ "baseline": "0.7.3", "port-version": 0 }, - "forest": { - "baseline": "12.1.0", - "port-version": 0 - }, "forge": { "baseline": "1.0.8", "port-version": 3 @@ -2665,7 +2673,7 @@ "port-version": 2 }, "fplus": { - "baseline": "0.2.18-p0", + "baseline": "0.2.20-p0", "port-version": 0 }, "freealut": { @@ -2685,7 +2693,7 @@ "port-version": 7 }, "freerdp": { - "baseline": "2.10.0", + "baseline": "2.11.1", "port-version": 0 }, "freetds": { @@ -2694,7 +2702,7 @@ }, "freetype": { "baseline": "2.12.1", - "port-version": 3 + "port-version": 4 }, "freetype-gl": { "baseline": "2022-01-17", @@ -2717,7 +2725,7 @@ "port-version": 0 }, "fruit": { - "baseline": "3.7.0", + "baseline": "3.7.1", "port-version": 0 }, "ftgl": { @@ -2729,7 +2737,7 @@ "port-version": 0 }, "function2": { - "baseline": "4.2.2", + "baseline": "4.2.3", "port-version": 0 }, "functions-framework-cpp": { @@ -2789,8 +2797,8 @@ "port-version": 0 }, "gdal": { - "baseline": "3.7.1", - "port-version": 3 + "baseline": "3.7.2", + "port-version": 0 }, "gdcm": { "baseline": "3.0.22", @@ -2802,7 +2810,7 @@ }, "gdk-pixbuf": { "baseline": "2.42.10", - "port-version": 1 + "port-version": 2 }, "gemmlowp": { "baseline": "2021-09-28", @@ -2837,8 +2845,8 @@ "port-version": 3 }, "getopt-win32": { - "baseline": "0.1", - "port-version": 7 + "baseline": "1.1.0.20220925", + "port-version": 0 }, "gettext": { "baseline": "0.21.1", @@ -2889,7 +2897,7 @@ "port-version": 0 }, "glaze": { - "baseline": "1.3.5", + "baseline": "1.4.3", "port-version": 0 }, "glbinding": { @@ -2909,8 +2917,8 @@ "port-version": 2 }, "glib": { - "baseline": "2.76.3", - "port-version": 3 + "baseline": "2.76.5", + "port-version": 0 }, "glibmm": { "baseline": "2.76.0", @@ -2965,8 +2973,8 @@ "port-version": 5 }, "google-cloud-cpp": { - "baseline": "2.14.0", - "port-version": 1 + "baseline": "2.15.1", + "port-version": 0 }, "google-cloud-cpp-common": { "baseline": "alias", @@ -3021,8 +3029,8 @@ "port-version": 4 }, "graphviz": { - "baseline": "7.0.0", - "port-version": 2 + "baseline": "9.0.0", + "port-version": 1 }, "greatest": { "baseline": "1.5.0", @@ -3030,7 +3038,7 @@ }, "grpc": { "baseline": "1.51.1", - "port-version": 0 + "port-version": 1 }, "grppi": { "baseline": "0.4.0", @@ -3053,20 +3061,20 @@ "port-version": 2 }, "gstreamer": { - "baseline": "1.20.5", - "port-version": 11 + "baseline": "1.22.5", + "port-version": 0 }, "gtest": { - "baseline": "1.13.0", + "baseline": "1.14.0", "port-version": 0 }, "gtk": { - "baseline": "4.10.4", - "port-version": 2 + "baseline": "4.10.5", + "port-version": 1 }, "gtk3": { "baseline": "3.24.38", - "port-version": 0 + "port-version": 1 }, "gtkmm": { "baseline": "4.10.0", @@ -3108,14 +3116,34 @@ "baseline": "3.0.1", "port-version": 0 }, + "gz-common5": { + "baseline": "5.4.1", + "port-version": 0 + }, + "gz-fuel-tools8": { + "baseline": "8.1.0", + "port-version": 0 + }, "gz-math7": { "baseline": "7.0.2", "port-version": 1 }, + "gz-msgs9": { + "baseline": "9.5.0", + "port-version": 0 + }, + "gz-plugin2": { + "baseline": "2.0.1", + "port-version": 0 + }, "gz-tools2": { "baseline": "2.0.0", "port-version": 1 }, + "gz-transport12": { + "baseline": "12.2.0", + "port-version": 0 + }, "gz-utils2": { "baseline": "2.0.0", "port-version": 0 @@ -3145,7 +3173,7 @@ "port-version": 1 }, "harfbuzz": { - "baseline": "8.1.1", + "baseline": "8.2.1", "port-version": 0 }, "hash-library": { @@ -3201,11 +3229,11 @@ "port-version": 0 }, "highway": { - "baseline": "1.0.6", + "baseline": "1.0.7", "port-version": 0 }, "hikogui": { - "baseline": "0.7.0", + "baseline": "0.8.1", "port-version": 0 }, "hiredis": { @@ -3261,12 +3289,12 @@ "port-version": 0 }, "ideviceinstaller": { - "baseline": "1.1.2.23", - "port-version": 7 + "baseline": "2023-07-21", + "port-version": 0 }, "idevicerestore": { - "baseline": "1.0.12", - "port-version": 8 + "baseline": "2023-05-23", + "port-version": 0 }, "idyntree": { "baseline": "9.0.0", @@ -3293,7 +3321,7 @@ "port-version": 3 }, "ignition-common3": { - "baseline": "3.14.1", + "baseline": "3.16.0", "port-version": 0 }, "ignition-fuel-tools1": { @@ -3353,7 +3381,7 @@ "port-version": 0 }, "igraph": { - "baseline": "0.10.6", + "baseline": "0.10.7", "port-version": 0 }, "iir1": { @@ -3381,12 +3409,16 @@ "port-version": 1 }, "imgui": { - "baseline": "1.89.7", - "port-version": 1 + "baseline": "1.89.9", + "port-version": 0 + }, + "imgui-node-editor": { + "baseline": "0.9.2", + "port-version": 0 }, "imgui-sfml": { - "baseline": "2.5", - "port-version": 4 + "baseline": "2.6", + "port-version": 0 }, "imguizmo": { "baseline": "1.83", @@ -3410,7 +3442,7 @@ }, "influxdb-cxx": { "baseline": "0.7.1", - "port-version": 0 + "port-version": 1 }, "infoware": { "baseline": "2023-04-12", @@ -3438,7 +3470,7 @@ }, "intel-mkl": { "baseline": "2023.0.0", - "port-version": 2 + "port-version": 3 }, "intelrdfpmathlib": { "baseline": "20U2", @@ -3474,7 +3506,7 @@ }, "ixwebsocket": { "baseline": "11.4.4", - "port-version": 1 + "port-version": 2 }, "jack2": { "baseline": "1.9.21", @@ -3510,7 +3542,7 @@ }, "joltphysics": { "baseline": "3.0.1", - "port-version": 0 + "port-version": 1 }, "josuttis-jthread": { "baseline": "2020-07-21", @@ -3528,6 +3560,10 @@ "baseline": "0.3.1", "port-version": 0 }, + "json-rpc-cxx": { + "baseline": "0.3.1", + "port-version": 0 + }, "json-schema-validator": { "baseline": "2.2.0", "port-version": 0 @@ -3553,12 +3589,12 @@ "port-version": 0 }, "jsonifier": { - "baseline": "0.9.6", + "baseline": "0.9.8", "port-version": 0 }, "jsonnet": { - "baseline": "0.18.0", - "port-version": 1 + "baseline": "0.20.0", + "port-version": 0 }, "jwt-cpp": { "baseline": "0.6.0", @@ -3726,7 +3762,7 @@ }, "kf5solid": { "baseline": "5.98.0", - "port-version": 1 + "port-version": 2 }, "kf5sonnet": { "baseline": "5.98.0", @@ -3762,11 +3798,11 @@ }, "kinectsdk1": { "baseline": "1.8", - "port-version": 7 + "port-version": 8 }, "kinectsdk2": { "baseline": "2.0", - "port-version": 6 + "port-version": 7 }, "kissfft": { "baseline": "131.1.0", @@ -3834,7 +3870,7 @@ }, "launch-darkly-server": { "baseline": "2.8.6", - "port-version": 0 + "port-version": 1 }, "lazy-importer": { "baseline": "2023-08-03", @@ -3874,7 +3910,7 @@ }, "leveldb": { "baseline": "1.22", - "port-version": 6 + "port-version": 7 }, "levmar": { "baseline": "2.6", @@ -3952,6 +3988,10 @@ "baseline": "0.30", "port-version": 4 }, + "libcap": { + "baseline": "2.69", + "port-version": 1 + }, "libcbor": { "baseline": "0.10.2", "port-version": 0 @@ -3990,7 +4030,7 @@ }, "libcroco": { "baseline": "0.6.13", - "port-version": 5 + "port-version": 6 }, "libcsv": { "baseline": "3.0.3", @@ -4005,7 +4045,7 @@ "port-version": 0 }, "libdatachannel": { - "baseline": "0.18.2", + "baseline": "0.18.6", "port-version": 2 }, "libdatrie": { @@ -4021,7 +4061,7 @@ "port-version": 2 }, "libdeflate": { - "baseline": "1.18", + "baseline": "1.19", "port-version": 0 }, "libdisasm": { @@ -4033,7 +4073,7 @@ "port-version": 1 }, "libdjinterop": { - "baseline": "0.19.2", + "baseline": "0.20.1", "port-version": 0 }, "libdmx": { @@ -4094,7 +4134,7 @@ }, "libffi": { "baseline": "3.4.4", - "port-version": 3 + "port-version": 5 }, "libfido2": { "baseline": "1.13.0", @@ -4225,8 +4265,8 @@ "port-version": 0 }, "libideviceactivation": { - "baseline": "1.3.17", - "port-version": 0 + "baseline": "2023-05-01", + "port-version": 1 }, "libidn2": { "baseline": "2.3.4", @@ -4241,16 +4281,20 @@ "port-version": 0 }, "libimobiledevice": { - "baseline": "1.3.17", - "port-version": 4 + "baseline": "2023-07-05", + "port-version": 1 + }, + "libimobiledevice-glue": { + "baseline": "2023-05-13", + "port-version": 0 }, "libirecovery": { - "baseline": "1.0.25", - "port-version": 8 + "baseline": "2023-05-13", + "port-version": 1 }, "libjpeg-turbo": { "baseline": "3.0.0", - "port-version": 0 + "port-version": 2 }, "libjuice": { "baseline": "1.0.6", @@ -4258,7 +4302,7 @@ }, "libjxl": { "baseline": "0.8.2", - "port-version": 0 + "port-version": 1 }, "libkeyfinder": { "baseline": "2.2.6", @@ -4310,7 +4354,7 @@ }, "libmad": { "baseline": "0.15.1", - "port-version": 12 + "port-version": 13 }, "libmagic": { "baseline": "5.40", @@ -4330,7 +4374,7 @@ }, "libmesh": { "baseline": "1.5.0", - "port-version": 5 + "port-version": 6 }, "libmicrodns": { "baseline": "0.2.0", @@ -4477,8 +4521,8 @@ "port-version": 0 }, "libplist": { - "baseline": "1.3.6", - "port-version": 2 + "baseline": "2023-06-15", + "port-version": 1 }, "libpmemobj-cpp": { "baseline": "1.13.0", @@ -4494,7 +4538,7 @@ }, "libpq": { "baseline": "15.3", - "port-version": 1 + "port-version": 2 }, "libpqxx": { "baseline": "7.7.4", @@ -4540,13 +4584,17 @@ "baseline": "0.12.5.5178", "port-version": 1 }, + "libremidi": { + "baseline": "4.1.0", + "port-version": 0 + }, "libressl": { "baseline": "3.6.2", "port-version": 1 }, "librsvg": { "baseline": "2.40.20", - "port-version": 9 + "port-version": 10 }, "librsync": { "baseline": "2.3.2", @@ -4670,6 +4718,10 @@ }, "libsvm": { "baseline": "3.25", + "port-version": 1 + }, + "libsystemd": { + "baseline": "254", "port-version": 0 }, "libtar": { @@ -4769,8 +4821,8 @@ "port-version": 10 }, "libusbmuxd": { - "baseline": "1.2.219", - "port-version": 3 + "baseline": "2023-06-21", + "port-version": 1 }, "libuuid": { "baseline": "1.0.3", @@ -4789,8 +4841,8 @@ "port-version": 0 }, "libvmdk": { - "baseline": "20200926", - "port-version": 4 + "baseline": "20221124", + "port-version": 0 }, "libvorbis": { "baseline": "1.3.7", @@ -4809,8 +4861,8 @@ "port-version": 1 }, "libwebp": { - "baseline": "1.3.1", - "port-version": 2 + "baseline": "1.3.2", + "port-version": 0 }, "libwebsockets": { "baseline": "4.3.2", @@ -4832,6 +4884,10 @@ "baseline": "0.4.5", "port-version": 0 }, + "libxcrypt": { + "baseline": "4.4.36", + "port-version": 0 + }, "libxcvt": { "baseline": "0.1.2", "port-version": 0 @@ -4889,7 +4945,7 @@ "port-version": 2 }, "libxml2": { - "baseline": "2.10.3", + "baseline": "2.11.5", "port-version": 1 }, "libxmlmm": { @@ -4973,7 +5029,7 @@ "port-version": 2 }, "libzippp": { - "baseline": "6.1-1.9.2", + "baseline": "7.0-1.10.1", "port-version": 0 }, "licensepp": { @@ -5021,16 +5077,16 @@ "port-version": 0 }, "llhttp": { - "baseline": "8.1.0", - "port-version": 2 + "baseline": "9.1.2", + "port-version": 0 }, "llvm": { "baseline": "15.0.7", - "port-version": 4 + "port-version": 6 }, "lmdb": { - "baseline": "0.9.29", - "port-version": 2 + "baseline": "0.9.31", + "port-version": 0 }, "lockpp": { "baseline": "1.0.2", @@ -5053,7 +5109,7 @@ "port-version": 0 }, "log4cxx": { - "baseline": "1.0.0", + "baseline": "1.1.0", "port-version": 0 }, "loguru": { @@ -5110,7 +5166,7 @@ }, "luajit": { "baseline": "2023-01-04", - "port-version": 2 + "port-version": 4 }, "luasec": { "baseline": "1.3.1", @@ -5166,7 +5222,7 @@ }, "magnum": { "baseline": "2020.06", - "port-version": 13 + "port-version": 14 }, "magnum-extras": { "baseline": "2020.06", @@ -5178,7 +5234,7 @@ }, "magnum-plugins": { "baseline": "2020.06", - "port-version": 10 + "port-version": 11 }, "mailio": { "baseline": "0.21.0", @@ -5218,7 +5274,7 @@ }, "mapnik": { "baseline": "2023-06-12", - "port-version": 1 + "port-version": 2 }, "marble": { "baseline": "22.04.0", @@ -5262,7 +5318,7 @@ }, "matroska": { "baseline": "1.7.1", - "port-version": 1 + "port-version": 2 }, "mbedtls": { "baseline": "2.28.1", @@ -5278,7 +5334,7 @@ }, "mdl-sdk": { "baseline": "2021.1.2", - "port-version": 2 + "port-version": 3 }, "mdns": { "baseline": "1.4.2", @@ -5302,14 +5358,14 @@ }, "mesa": { "baseline": "23.0.1", - "port-version": 1 + "port-version": 2 }, "meschach": { "baseline": "1.2b", "port-version": 6 }, "meshoptimizer": { - "baseline": "0.18", + "baseline": "0.19", "port-version": 1 }, "metis": { @@ -5326,7 +5382,7 @@ }, "mfx-dispatch": { "baseline": "1.35.1", - "port-version": 1 + "port-version": 2 }, "mgnlibs": { "baseline": "2019-09-29", @@ -5338,7 +5394,7 @@ }, "microsoft-signalr": { "baseline": "0.1.0-alpha4", - "port-version": 7 + "port-version": 8 }, "mikktspace": { "baseline": "2020-10-06", @@ -5389,8 +5445,8 @@ "port-version": 0 }, "miniupnpc": { - "baseline": "2.1", - "port-version": 5 + "baseline": "2.2.5", + "port-version": 0 }, "miniz": { "baseline": "3.0.2", @@ -5398,11 +5454,11 @@ }, "minizip": { "baseline": "1.3", - "port-version": 0 + "port-version": 1 }, "minizip-ng": { "baseline": "4.0.0", - "port-version": 3 + "port-version": 4 }, "mio": { "baseline": "2023-03-03", @@ -5506,7 +5562,7 @@ }, "mpir": { "baseline": "2022-03-02", - "port-version": 2 + "port-version": 3 }, "mpmcqueue": { "baseline": "2021-12-01", @@ -5538,7 +5594,7 @@ }, "msdfgen": { "baseline": "1.10.0", - "port-version": 0 + "port-version": 1 }, "msgpack": { "baseline": "6.0.0", @@ -5593,8 +5649,8 @@ "port-version": 0 }, "mygui": { - "baseline": "3.4.1", - "port-version": 5 + "baseline": "3.4.2", + "port-version": 0 }, "mysql-connector-cpp": { "baseline": "8.0.32", @@ -5676,6 +5732,10 @@ "baseline": "6.4", "port-version": 1 }, + "ndis-driver-library": { + "baseline": "1.2.0", + "port-version": 0 + }, "neargye-semver": { "baseline": "0.3.0", "port-version": 1 @@ -5709,7 +5769,7 @@ "port-version": 4 }, "nghttp2": { - "baseline": "1.55.1", + "baseline": "1.56.0", "port-version": 0 }, "nghttp2-asio": { @@ -5717,15 +5777,15 @@ "port-version": 1 }, "nghttp3": { - "baseline": "0.14.0", + "baseline": "0.15.0", "port-version": 0 }, "ngspice": { - "baseline": "39", - "port-version": 1 + "baseline": "41", + "port-version": 0 }, "ngtcp2": { - "baseline": "0.18.0", + "baseline": "0.19.1", "port-version": 0 }, "nifly": { @@ -5808,6 +5868,10 @@ "baseline": "2019-08-10", "port-version": 3 }, + "ntf-core": { + "baseline": "2.1.0", + "port-version": 1 + }, "nu-book-zxing-cpp": { "baseline": "2.1.0", "port-version": 0 @@ -5821,7 +5885,7 @@ "port-version": 1 }, "numcpp": { - "baseline": "2.10.1", + "baseline": "2.11.0", "port-version": 0 }, "nuspell": { @@ -5832,9 +5896,13 @@ "baseline": "2.1.2", "port-version": 8 }, + "nyan-lang": { + "baseline": "0.3", + "port-version": 0 + }, "oatpp": { "baseline": "1.3.0", - "port-version": 1 + "port-version": 2 }, "oatpp-consul": { "baseline": "1.3.0", @@ -5882,19 +5950,19 @@ }, "oatpp-zlib": { "baseline": "1.3.0", - "port-version": 1 + "port-version": 2 }, "observer-ptr-lite": { "baseline": "0.4.0", "port-version": 3 }, "ocilib": { - "baseline": "4.7.5", - "port-version": 3 + "baseline": "4.7.6", + "port-version": 0 }, "octomap": { "baseline": "1.9.6", - "port-version": 0 + "port-version": 1 }, "ode": { "baseline": "0.16.3", @@ -5910,11 +5978,11 @@ }, "ogre": { "baseline": "14.0.1", - "port-version": 0 + "port-version": 1 }, "ogre-next": { "baseline": "2.3.1", - "port-version": 0 + "port-version": 2 }, "ois": { "baseline": "1.5.1", @@ -5949,8 +6017,8 @@ "port-version": 0 }, "onnxruntime-gpu": { - "baseline": "1.14.1", - "port-version": 1 + "baseline": "1.15.1", + "port-version": 0 }, "oof": { "baseline": "2021-11-23", @@ -5969,12 +6037,12 @@ "port-version": 0 }, "openblas": { - "baseline": "0.3.23", - "port-version": 1 + "baseline": "0.3.24", + "port-version": 0 }, "opencascade": { - "baseline": "7.6.2", - "port-version": 7 + "baseline": "7.7.2", + "port-version": 1 }, "opencc": { "baseline": "1.1.6", @@ -5992,10 +6060,6 @@ "baseline": "2.2.1", "port-version": 1 }, - "opencolorio-tools": { - "baseline": "1.1.1", - "port-version": 0 - }, "opencsg": { "baseline": "1.4.2", "port-version": 4 @@ -6010,7 +6074,7 @@ }, "opencv2": { "baseline": "2.4.13.7", - "port-version": 18 + "port-version": 19 }, "opencv3": { "baseline": "3.4.18", @@ -6018,7 +6082,7 @@ }, "opencv4": { "baseline": "4.8.0", - "port-version": 5 + "port-version": 7 }, "opendnp3": { "baseline": "3.1.1", @@ -6050,11 +6114,11 @@ }, "openimageio": { "baseline": "2.4.14.0", - "port-version": 0 + "port-version": 1 }, "openjpeg": { "baseline": "2.5.0", - "port-version": 0 + "port-version": 1 }, "openldap": { "baseline": "2.5.13", @@ -6093,8 +6157,8 @@ "port-version": 3 }, "openssl": { - "baseline": "3.1.2", - "port-version": 1 + "baseline": "3.1.3", + "port-version": 0 }, "openssl-unix": { "baseline": "deprecated", @@ -6114,7 +6178,7 @@ }, "opentelemetry-cpp": { "baseline": "1.9.1", - "port-version": 0 + "port-version": 1 }, "opentelemetry-fluentd": { "baseline": "2.0.0", @@ -6130,11 +6194,11 @@ }, "openvdb": { "baseline": "10.0.0", - "port-version": 3 + "port-version": 5 }, "openvino": { - "baseline": "2023-06-11", - "port-version": 6 + "baseline": "2023.1.0", + "port-version": 2 }, "openvpn3": { "baseline": "3.7.0", @@ -6169,7 +6233,7 @@ "port-version": 1 }, "orc": { - "baseline": "1.9.0", + "baseline": "1.9.1", "port-version": 0 }, "orocos-kdl": { @@ -6178,7 +6242,7 @@ }, "osg": { "baseline": "3.6.5", - "port-version": 20 + "port-version": 22 }, "osg-qt": { "baseline": "Qt5", @@ -6188,10 +6252,6 @@ "baseline": "3.4", "port-version": 1 }, - "osi": { - "baseline": "0.108.6", - "port-version": 1 - }, "osmanip": { "baseline": "4.6.1", "port-version": 0 @@ -6230,7 +6290,7 @@ }, "pango": { "baseline": "1.50.14", - "port-version": 3 + "port-version": 4 }, "pangolin": { "baseline": "0.8", @@ -6250,7 +6310,7 @@ }, "paraview": { "baseline": "5.11.0", - "port-version": 3 + "port-version": 4 }, "parmetis": { "baseline": "2022-07-27", @@ -6266,7 +6326,7 @@ }, "pbc": { "baseline": "0.5.14", - "port-version": 8 + "port-version": 9 }, "pcapplusplus": { "baseline": "22.11", @@ -6282,7 +6342,7 @@ }, "pcl": { "baseline": "1.13.1", - "port-version": 0 + "port-version": 1 }, "pcre": { "baseline": "8.45", @@ -6290,11 +6350,11 @@ }, "pcre2": { "baseline": "10.42", - "port-version": 0 + "port-version": 1 }, "pdal": { "baseline": "2.5.3", - "port-version": 2 + "port-version": 3 }, "pdal-c": { "baseline": "2.2.0", @@ -6430,7 +6490,7 @@ }, "pmdk": { "baseline": "1.12.0", - "port-version": 1 + "port-version": 2 }, "pngpp": { "baseline": "0.2.10", @@ -6521,7 +6581,7 @@ "port-version": 2 }, "proj": { - "baseline": "9.2.1", + "baseline": "9.3.0", "port-version": 1 }, "proj4": { @@ -6613,8 +6673,8 @@ "port-version": 7 }, "python3": { - "baseline": "3.11.4", - "port-version": 4 + "baseline": "3.11.5", + "port-version": 0 }, "qca": { "baseline": "2.3.5", @@ -6670,7 +6730,7 @@ }, "qt5-3d": { "baseline": "5.15.10", - "port-version": 0 + "port-version": 1 }, "qt5-activeqt": { "baseline": "5.15.10", @@ -6840,10 +6900,6 @@ "baseline": "6.5.2", "port-version": 0 }, - "qt6betablock": { - "baseline": "6.2.0-beta", - "port-version": 0 - }, "qtactiveqt": { "baseline": "6.5.2", "port-version": 0 @@ -6901,12 +6957,12 @@ "port-version": 0 }, "qtkeychain": { - "baseline": "0.13.2", - "port-version": 4 + "baseline": "0.14.1", + "port-version": 0 }, "qtkeychain-qt6": { - "baseline": "0.13.2", - "port-version": 1 + "baseline": "0.14.1", + "port-version": 0 }, "qtlanguageserver": { "baseline": "6.5.2", @@ -7002,7 +7058,7 @@ }, "qtvirtualkeyboard": { "baseline": "6.5.2", - "port-version": 0 + "port-version": 1 }, "qtwayland": { "baseline": "6.5.2", @@ -7049,7 +7105,7 @@ "port-version": 9 }, "quill": { - "baseline": "3.3.0", + "baseline": "3.3.1", "port-version": 0 }, "quirc": { @@ -7121,12 +7177,12 @@ "port-version": 4 }, "raygui": { - "baseline": "3.6", + "baseline": "4.0", "port-version": 0 }, "raylib": { "baseline": "4.5.0", - "port-version": 1 + "port-version": 2 }, "rbdl": { "baseline": "3.2.0", @@ -7158,11 +7214,11 @@ }, "readline-unix": { "baseline": "8.2", - "port-version": 0 + "port-version": 1 }, "readline-win32": { "baseline": "5.0", - "port-version": 6 + "port-version": 7 }, "readosm": { "baseline": "1.1.0a", @@ -7273,7 +7329,7 @@ "port-version": 0 }, "rocksdb": { - "baseline": "8.3.2", + "baseline": "8.5.3", "port-version": 0 }, "rpclib": { @@ -7297,7 +7353,7 @@ "port-version": 0 }, "rsm-bsa": { - "baseline": "4.0.3", + "baseline": "4.1.0", "port-version": 0 }, "rsm-mmio": { @@ -7326,7 +7382,7 @@ }, "rtmidi": { "baseline": "5.0.0", - "port-version": 2 + "port-version": 3 }, "rttr": { "baseline": "0.9.6+20210811", @@ -7446,7 +7502,7 @@ }, "sdformat13": { "baseline": "13.5.0", - "port-version": 0 + "port-version": 1 }, "sdformat6": { "baseline": "6.2.0", @@ -7469,8 +7525,8 @@ "port-version": 6 }, "sdl2": { - "baseline": "2.28.2", - "port-version": 0 + "baseline": "2.28.3", + "port-version": 1 }, "sdl2-gfx": { "baseline": "1.0.4", @@ -7508,6 +7564,10 @@ "baseline": "4.1.1", "port-version": 0 }, + "seasocks": { + "baseline": "1.4.6", + "port-version": 0 + }, "secp256k1": { "baseline": "2022-07-11", "port-version": 1 @@ -7604,6 +7664,10 @@ "baseline": "2.5.1", "port-version": 0 }, + "sigmatch": { + "baseline": "0.2.0", + "port-version": 0 + }, "signalrclient": { "baseline": "1.0.0-beta1-9", "port-version": 5 @@ -7648,6 +7712,10 @@ "baseline": "4.19", "port-version": 0 }, + "simsimd": { + "baseline": "1.4.0", + "port-version": 0 + }, "sjpeg": { "baseline": "2021-10-31", "port-version": 0 @@ -7658,7 +7726,7 @@ }, "skia": { "baseline": "0.36.0", - "port-version": 8 + "port-version": 10 }, "skyr-url": { "baseline": "1.13.0", @@ -7714,7 +7782,7 @@ }, "soci": { "baseline": "4.0.3", - "port-version": 0 + "port-version": 1 }, "socket-io-client": { "baseline": "2023-02-14", @@ -7734,7 +7802,7 @@ }, "soil2": { "baseline": "1.3.0", - "port-version": 0 + "port-version": 1 }, "sokol": { "baseline": "2019-09-09", @@ -7844,10 +7912,6 @@ "baseline": "2022.4", "port-version": 1 }, - "spix": { - "baseline": "0.5", - "port-version": 0 - }, "spout2": { "baseline": "2.007.010", "port-version": 0 @@ -7873,11 +7937,11 @@ "port-version": 0 }, "sqlite3": { - "baseline": "3.42.0", - "port-version": 1 + "baseline": "3.43.0", + "port-version": 0 }, "sqlitecpp": { - "baseline": "3.3.0", + "baseline": "3.3.1", "port-version": 0 }, "sqlpp11": { @@ -7969,7 +8033,7 @@ "port-version": 1 }, "strong-type": { - "baseline": "8", + "baseline": "12", "port-version": 0 }, "stronk": { @@ -8025,8 +8089,8 @@ "port-version": 5 }, "taglib": { - "baseline": "1.13.0", - "port-version": 2 + "baseline": "1.13.1", + "port-version": 1 }, "taocpp-json": { "baseline": "2020-09-14", @@ -8046,7 +8110,7 @@ }, "tbb": { "baseline": "2021.10.0", - "port-version": 1 + "port-version": 2 }, "tcb-span": { "baseline": "2022-06-15", @@ -8089,8 +8153,8 @@ "port-version": 0 }, "tesseract": { - "baseline": "5.3.1", - "port-version": 1 + "baseline": "5.3.2", + "port-version": 0 }, "tfhe": { "baseline": "1.0.1", @@ -8129,8 +8193,8 @@ "port-version": 3 }, "thrift": { - "baseline": "0.16.0", - "port-version": 1 + "baseline": "0.19.0", + "port-version": 0 }, "tidy-html5": { "baseline": "5.8.0", @@ -8277,7 +8341,7 @@ "port-version": 0 }, "tomlplusplus": { - "baseline": "3.1.0", + "baseline": "3.3.0", "port-version": 0 }, "torch-th": { @@ -8325,7 +8389,7 @@ "port-version": 5 }, "trompeloeil": { - "baseline": "43", + "baseline": "45", "port-version": 0 }, "tsl-hopscotch-map": { @@ -8385,8 +8449,8 @@ "port-version": 0 }, "unicorn": { - "baseline": "1.0.3", - "port-version": 1 + "baseline": "2.0.1", + "port-version": 0 }, "unicorn-lib": { "baseline": "2022-01-24", @@ -8405,7 +8469,7 @@ "port-version": 2 }, "unordered-dense": { - "baseline": "4.1.1", + "baseline": "4.1.2", "port-version": 0 }, "unqlite": { @@ -8418,7 +8482,7 @@ }, "upb": { "baseline": "2022-06-21", - "port-version": 0 + "port-version": 1 }, "urdfdom": { "baseline": "3.1.1", @@ -8430,20 +8494,24 @@ }, "urho3d": { "baseline": "2021-03-01", - "port-version": 4 + "port-version": 5 }, "uriparser": { "baseline": "0.9.7", "port-version": 0 }, "usbmuxd": { - "baseline": "1.2.235", - "port-version": 5 + "baseline": "2023-07-21", + "port-version": 0 }, "usd": { "baseline": "23.5", "port-version": 3 }, + "usearch": { + "baseline": "2.3.2", + "port-version": 0 + }, "usockets": { "baseline": "0.8.6", "port-version": 1 @@ -8461,7 +8529,7 @@ "port-version": 1 }, "utfcpp": { - "baseline": "3.2.3", + "baseline": "3.2.4", "port-version": 0 }, "utfz": { @@ -8549,7 +8617,7 @@ "port-version": 0 }, "vcpkg-pkgconfig-get-modules": { - "baseline": "2023-02-25", + "baseline": "2023-09-06", "port-version": 0 }, "vcpkg-qmake": { @@ -8626,7 +8694,7 @@ }, "vlpp": { "baseline": "1.1.0.0", - "port-version": 0 + "port-version": 1 }, "volk": { "baseline": "1.3.250", @@ -8641,11 +8709,11 @@ "port-version": 2 }, "vsg": { - "baseline": "1.0.8", + "baseline": "1.0.9", "port-version": 0 }, "vsgxchange": { - "baseline": "1.0.4", + "baseline": "1.0.5", "port-version": 0 }, "vtk": { @@ -8786,7 +8854,7 @@ }, "woff2": { "baseline": "1.0.2", - "port-version": 3 + "port-version": 4 }, "wolfmqtt": { "baseline": "1.16.0", @@ -8794,7 +8862,7 @@ }, "wolfssl": { "baseline": "5.6.3", - "port-version": 0 + "port-version": 1 }, "wolftpm": { "baseline": "2.7.0", @@ -8809,8 +8877,8 @@ "port-version": 1 }, "wpilib": { - "baseline": "2020-03-02", - "port-version": 4 + "baseline": "2023-08-24", + "port-version": 0 }, "wren": { "baseline": "0.4.0", @@ -8850,7 +8918,7 @@ }, "x265": { "baseline": "3.4", - "port-version": 9 + "port-version": 10 }, "x86-simd-sort": { "baseline": "2023-03-04", @@ -8930,7 +8998,7 @@ }, "xmlsec": { "baseline": "1.3.1", - "port-version": 0 + "port-version": 1 }, "xnnpack": { "baseline": "2022-02-17", @@ -9029,11 +9097,11 @@ "port-version": 0 }, "yomm2": { - "baseline": "1.3.1", - "port-version": 0 + "baseline": "1.4.0", + "port-version": 1 }, "yyjson": { - "baseline": "0.6.0", + "baseline": "0.8.0", "port-version": 0 }, "z3": { @@ -9050,7 +9118,7 @@ }, "zeroc-ice": { "baseline": "3.7.9", - "port-version": 2 + "port-version": 4 }, "zeromq": { "baseline": "2023-06-20", @@ -9098,7 +9166,7 @@ }, "zstd": { "baseline": "1.5.5", - "port-version": 0 + "port-version": 1 }, "zstr": { "baseline": "1.0.7", diff --git a/vcpkg/versions/d-/dpp.json b/vcpkg/versions/d-/dpp.json index 14120c628d..a534b6981f 100644 --- a/vcpkg/versions/d-/dpp.json +++ b/vcpkg/versions/d-/dpp.json @@ -1,7 +1,12 @@ { "versions": [ { - "git-tree": "a67af61c99920e9325f6709a58f6752c7b7b6b90", + "git-tree": "4af5cf78d8e943575224a6ad11ef936d31d95415", + "version": "10.0.26", + "port-version": 0 + }, + { + "git-tree": "20fb1fc7a015ebb43e9d01ddbdcb10e351feeeb7", "version": "10.0.25", "port-version": 0 }, From 3eb549dd2cb4de10a1df5dfb1b51850ada5b308f Mon Sep 17 00:00:00 2001 From: Archie Jaskowicz Date: Wed, 25 Oct 2023 02:12:11 +0100 Subject: [PATCH 02/11] feat: added support for Premium App Subscriptions (#969) --- .cspell.json | 4 +- include/dpp/appcommand.h | 165 +++++++++++++++++++++----- include/dpp/cluster.h | 81 +++++++++++++ include/dpp/cluster_coro_calls.h | 55 +++++++++ include/dpp/cluster_sync_calls.h | 67 +++++++++++ include/dpp/dispatcher.h | 34 ++++++ include/dpp/entitlement.h | 160 +++++++++++++++++++++++++ include/dpp/event.h | 5 + include/dpp/restresults.h | 8 +- include/dpp/sku.h | 159 +++++++++++++++++++++++++ src/dpp/cluster/entitlement.cpp | 80 +++++++++++++ src/dpp/cluster/sku.cpp | 30 +++++ src/dpp/cluster_coro_calls.cpp | 16 +++ src/dpp/cluster_sync_calls.cpp | 16 +++ src/dpp/discordevents.cpp | 3 + src/dpp/entitlement.cpp | 78 ++++++++++++ src/dpp/events/entitlement_create.cpp | 47 ++++++++ src/dpp/events/entitlement_delete.cpp | 47 ++++++++ src/dpp/events/entitlement_update.cpp | 47 ++++++++ src/dpp/sku.cpp | 89 ++++++++++++++ src/dpp/slashcommand.cpp | 10 +- 21 files changed, 1170 insertions(+), 31 deletions(-) create mode 100644 include/dpp/entitlement.h create mode 100644 include/dpp/sku.h create mode 100644 src/dpp/cluster/entitlement.cpp create mode 100644 src/dpp/cluster/sku.cpp create mode 100644 src/dpp/entitlement.cpp create mode 100644 src/dpp/events/entitlement_create.cpp create mode 100644 src/dpp/events/entitlement_delete.cpp create mode 100644 src/dpp/events/entitlement_update.cpp create mode 100644 src/dpp/sku.cpp diff --git a/.cspell.json b/.cspell.json index 459a14315c..8b263fcb2a 100644 --- a/.cspell.json +++ b/.cspell.json @@ -133,7 +133,9 @@ "cvtps", "neww", "STDCORO", - "NOMINMAX" + "NOMINMAX", + "sku", + "skus" ], "flagWords": [ "hte" diff --git a/include/dpp/appcommand.h b/include/dpp/appcommand.h index 10d49456dc..5ffc850525 100644 --- a/include/dpp/appcommand.h +++ b/include/dpp/appcommand.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -297,13 +298,51 @@ void to_json(nlohmann::json& j, const command_option& opt); * @brief Response types when responding to an interaction within on_interaction_create. */ enum interaction_response_type { - ir_pong = 1, //!< Acknowledge a Ping - ir_channel_message_with_source = 4, //!< respond to an interaction with a message - ir_deferred_channel_message_with_source = 5, //!< Acknowledge an interaction and edit a response later, the user sees a loading state - ir_deferred_update_message = 6, //!< for components, acknowledge an interaction and edit the original message later; the user does not see a loading state - ir_update_message = 7, //!< for components, edit the message the component was attached to - ir_autocomplete_reply = 8, //!< Reply to autocomplete interaction. Be sure to do this within 500ms of the interaction! - ir_modal_dialog = 9, //!< A modal dialog box + /** + * @brief Acknowledge a Ping + */ + ir_pong = 1, + /** + * @brief Respond to an interaction with a message. + */ + ir_channel_message_with_source = 4, + /** + * @brief Acknowledge an interaction and edit a response later, the user sees a loading state + */ + ir_deferred_channel_message_with_source = 5, + + /** + * @brief For components, acknowledge an interaction and edit the original message later; the user does not see a loading state. + */ + ir_deferred_update_message = 6, + + /** + * @brief For components, edit the message the component was attached to. + */ + ir_update_message = 7, + + /** + * @brief Reply to autocomplete interaction. + * + * @note Be sure to do this within 500ms of the interaction! + */ + ir_autocomplete_reply = 8, + + /** + * @brief A modal dialog box + * + * @note Not available for modal submit and ping interactions. + */ + ir_modal_dialog = 9, + + /** + * @brief Acknowledge a interaction with an upgrade button, only available for apps with monetization enabled. + * + * @see https://discord.com/developers/docs/monetization/entitlements#premiumrequired-interaction-response + * @note Not available for autocomplete and ping interactions. + * @warning This response does not support using `content`, `embeds`, or `attachments`, so reply with no data when using this! + */ + ir_premium_required = 10, }; /** @@ -732,26 +771,98 @@ class DPP_EXPORT interaction : public managed, public json_interface data; //!< Optional: the command data payload - snowflake guild_id; //!< Optional: the guild it was sent from - snowflake channel_id; //!< Optional: the channel it was sent from - dpp::channel channel; //!< Optional: The partial channel object where it was sent from - snowflake message_id; //!< Originating message id for context menu actions - permission app_permissions; //!< Permissions of the bot in the channel/guild where this command was issued - message msg; //!< Originating message for context menu actions - guild_member member; //!< Optional: guild member data for the invoking user, including permissions. Filled when the interaction is invoked in a guild - user usr; //!< User object for the invoking user - std::string token; //!< a continuation token for responding to the interaction - uint8_t version; //!< read-only property, always 1 - command_resolved resolved; //!< Resolved data e.g. users, members, roles, channels, permissions, etc. - std::string locale; //!< User's [locale](https://discord.com/developers/docs/reference#locales) (language) - std::string guild_locale; //!< Guild's locale (language) - for guild interactions only - cache_policy_t cache_policy; //!< Cache policy from cluster - - /** - * @brief Construct a new interaction object + /** + * @brief ID of the application this interaction is for. + */ + snowflake application_id; + + /** + * @brief The type of interaction from dpp::interaction_type. + */ + uint8_t type; + + /** + * @brief Optional: the command data payload. + */ + std::variant data; + + /** + * @brief Optional: the guild it was sent from. + */ + snowflake guild_id; + + /** + * @brief Optional: the channel it was sent from + */ + snowflake channel_id; + + /** + * @brief Optional: The partial channel object where it was sent from. + */ + dpp::channel channel; + + /** + * @brief Originating message id for context menu actions. + */ + snowflake message_id; + + /** + * @brief Permissions of the bot in the channel/guild where this command was issued. + */ + permission app_permissions; + + /** + * @brief Originating message for context menu actions. + */ + message msg; + + /** + * @brief Optional: guild member data for the invoking user, including permissions. Filled when the interaction is invoked in a guild + */ + guild_member member; + + /** + * @brief User object for the invoking user. + */ + user usr; + + /** + * @brief A continuation token for responding to the interaction. + */ + std::string token; + + /** + * @brief Read-only property, always 1. + */ + uint8_t version; + + /** + * @brief Resolved data e.g. users, members, roles, channels, permissions, etc. + */ + command_resolved resolved; + + /** + * @brief User's [locale](https://discord.com/developers/docs/reference#locales) (language). + */ + std::string locale; + + /** + * @brief Guild's locale (language) - for guild interactions only. + */ + std::string guild_locale; + + /** + * @brief Cache policy from cluster. + */ + cache_policy_t cache_policy; + + /** + * @brief For monetized apps, any entitlements for the invoking user, representing access to premium SKUs. + */ + std::vector entitlements; + + /** + * @brief Construct a new interaction object. */ interaction(); diff --git a/include/dpp/cluster.h b/include/dpp/cluster.h index 219e60800b..d74a69472a 100644 --- a/include/dpp/cluster.h +++ b/include/dpp/cluster.h @@ -1312,6 +1312,36 @@ class DPP_EXPORT cluster { */ event_router_t on_stage_instance_delete; + /** + * @brief Called when a user subscribes to an SKU. + * + * @see https://discord.com/developers/docs/monetization/entitlements#new-entitlement + * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. + * The function signature for this event takes a single `const` reference of type channel_delete_t&, and returns void. + */ + event_router_t on_entitlement_create; + + + /** + * @brief Called when a user's subscription renews for the next billing period. + * The `ends_at` field will have an updated value with the new expiration date. + * + * @see https://discord.com/developers/docs/monetization/entitlements#updated-entitlement + * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. + * The function signature for this event takes a single `const` reference of type channel_update_t&, and returns void. + */ + event_router_t on_entitlement_update; + + /** + * @brief Called when a user's entitlement is deleted. + * These events are infrequent and only occur if Discord issues a refund, or Discord removes an entitlement via "internal tooling". + * Entitlements **are not deleted** when they expire. + * + * @see https://discord.com/developers/docs/monetization/entitlements#deleted-entitlement + * @note Use operator() to attach a lambda to this event, and the detach method to detach the listener using the returned ID. + * The function signature for this event takes a single `const` reference of type channel_update_t&, and returns void. + */ + event_router_t on_entitlement_delete; /** * @brief Post a REST request. Where possible use a helper method instead like message_create @@ -3624,6 +3654,57 @@ class DPP_EXPORT cluster { */ void automod_rule_delete(snowflake guild_id, snowflake rule_id, command_completion_event_t callback = utility::log_error()); + /** + * @brief Returns all entitlements for a given app, active and expired. + * + * @see https://discord.com/developers/docs/monetization/entitlements#list-entitlements + * @param user_id User ID to look up entitlements for. + * @param sku_ids List of SKU IDs to check entitlements for. + * @param before_id Retrieve entitlements before this entitlement ID. + * @param after_id Retrieve entitlements after this entitlement ID. + * @param limit Number of entitlements to return, 1-100 (default 100). + * @param guild_id Guild ID to look up entitlements for. + * @param exclude_ended Whether ended entitlements should be excluded from the search. + * @param callback Function to call when the API call completes. + * On success the callback will contain a dpp::emoji_map object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). + */ + void entitlements_get(snowflake user_id = 0, const std::vector& sku_ids = {}, snowflake before_id = 0, snowflake after_id = 0, uint8_t limit = 100, snowflake guild_id = 0, bool exclude_ended = false, command_completion_event_t callback = utility::log_error()); + + /** + * @brief Creates a test entitlement to a given SKU for a given guild or user. + * Discord will act as though that user or guild has entitlement to your premium offering. + * + * @see https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement + * @param new_entitlement The entitlement to create. + * Make sure your dpp::entitlement_type (inside your dpp::entitlement object) matches the type of the owner_id + * (if type is guild, owner_id is a guild id), otherwise it won't work! + * @param callback Function to call when the API call completes. + * On success the callback will contain a dpp::entitlement object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). + */ + void entitlement_test_create(const class entitlement& new_entitlement, command_completion_event_t callback = utility::log_error()); + + /** + * @brief Deletes a currently-active test entitlement. + * Discord will act as though that user or guild no longer has entitlement to your premium offering. + * + * @see https://discord.com/developers/docs/monetization/entitlements#delete-test-entitlement + * @param entitlement_id The test entitlement to delete. + * @param callback Function to call when the API call completes. + * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). + */ + void entitlement_test_delete(snowflake entitlement_id, command_completion_event_t callback = utility::log_error()); + + /** + * @brief Returns all SKUs for a given application. + * @note Because of how Discord's SKU and subscription systems work, you will see two SKUs for your premium offering. + * For integration and testing entitlements, you should use the SKU with type: 5. + * + * @see https://discord.com/developers/docs/monetization/skus#list-skus + * @param callback Function to call when the API call completes. + * On success the callback will contain a dpp::confirmation object in confirmation_callback_t::value. On failure, the value is undefined and confirmation_callback_t::is_error() method will return true. You can obtain full error details with confirmation_callback_t::get_error(). + */ + void skus_get(command_completion_event_t callback = utility::log_error()); + #include #ifdef DPP_CORO #include diff --git a/include/dpp/cluster_coro_calls.h b/include/dpp/cluster_coro_calls.h index ddbb9a2395..22cdcef0c4 100644 --- a/include/dpp/cluster_coro_calls.h +++ b/include/dpp/cluster_coro_calls.h @@ -696,6 +696,49 @@ */ [[nodiscard]] async co_guild_emojis_get(snowflake guild_id); +/** + * @brief Returns all entitlements for a given app, active and expired. + * + * @see dpp::cluster::entitlements_get + * @see https://discord.com/developers/docs/monetization/entitlements#list-entitlements + * @param user_id User ID to look up entitlements for. + * @param sku_ids List of SKU IDs to check entitlements for. + * @param before_id Retrieve entitlements before this entitlement ID. + * @param after_id Retrieve entitlements after this entitlement ID. + * @param limit Number of entitlements to return, 1-100 (default 100). + * @param guild_id Guild ID to look up entitlements for. + * @param exclude_ended Whether ended entitlements should be excluded from the search. + * @return entitlement_map returned object on completion + * \memberof dpp::cluster + */ +[[nodiscard]] async co_entitlements_get(snowflake user_id = 0, const std::vector& sku_ids = {}, snowflake before_id = 0, snowflake after_id = 0, uint8_t limit = 100, snowflake guild_id = 0, bool exclude_ended = false); + +/** + * @brief Creates a test entitlement to a given SKU for a given guild or user. + * Discord will act as though that user or guild has entitlement to your premium offering. + * + * @see dpp::cluster::entitlement_test_create + * @see https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement + * @param new_entitlement The entitlement to create. + * Make sure your dpp::entitlement_type (inside your dpp::entitlement object) matches the type of the owner_id + * (if type is guild, owner_id is a guild id), otherwise it won't work! + * @return entitlement returned object on completion + * \memberof dpp::cluster + */ +[[nodiscard]] async co_entitlement_test_create(const class entitlement& new_entitlement); + +/** + * @brief Deletes a currently-active test entitlement. + * Discord will act as though that user or guild no longer has entitlement to your premium offering. + * + * @see dpp::cluster::entitlement_test_delete + * @see https://discord.com/developers/docs/monetization/entitlements#delete-test-entitlement + * @param entitlement_id The test entitlement to delete. + * @return confirmation returned object on completion + * \memberof dpp::cluster + */ +[[nodiscard]] async co_entitlement_test_delete(snowflake entitlement_id); + /** * @brief Get the gateway information for the bot using the token * @see dpp::cluster::get_gateway_bot @@ -1727,6 +1770,18 @@ */ [[nodiscard]] async co_guild_event_get(snowflake guild_id, snowflake event_id); +/** + * @brief Returns all SKUs for a given application. + * @note Because of how Discord's SKU and subscription systems work, you will see two SKUs for your premium offering. + * For integration and testing entitlements, you should use the SKU with type: 5. + * + * @see dpp::cluster::skus_get + * @see https://discord.com/developers/docs/monetization/skus#list-skus + * @return sku_map returned object on completion + * \memberof dpp::cluster + */ +[[nodiscard]] async co_skus_get(); + [[nodiscard]] async co_stage_instance_create(const stage_instance& si); diff --git a/include/dpp/cluster_sync_calls.h b/include/dpp/cluster_sync_calls.h index 1594d8e0a4..26e81f111a 100644 --- a/include/dpp/cluster_sync_calls.h +++ b/include/dpp/cluster_sync_calls.h @@ -864,6 +864,58 @@ emoji guild_emoji_get_sync(snowflake guild_id, snowflake emoji_id); */ emoji_map guild_emojis_get_sync(snowflake guild_id); +/** + * @brief Returns all entitlements for a given app, active and expired. + * + * @see dpp::cluster::entitlements_get + * @see https://discord.com/developers/docs/monetization/entitlements#list-entitlements + * @param user_id User ID to look up entitlements for. + * @param sku_ids List of SKU IDs to check entitlements for. + * @param before_id Retrieve entitlements before this entitlement ID. + * @param after_id Retrieve entitlements after this entitlement ID. + * @param limit Number of entitlements to return, 1-100 (default 100). + * @param guild_id Guild ID to look up entitlements for. + * @param exclude_ended Whether ended entitlements should be excluded from the search. + * @return entitlement_map returned object on completion + * \memberof dpp::cluster + * @throw dpp::rest_exception upon failure to execute REST function + * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. + * Avoid direct use of this function inside an event handler. + */ +entitlement_map entitlements_get_sync(snowflake user_id = 0, const std::vector& sku_ids = {}, snowflake before_id = 0, snowflake after_id = 0, uint8_t limit = 100, snowflake guild_id = 0, bool exclude_ended = false); + +/** + * @brief Creates a test entitlement to a given SKU for a given guild or user. + * Discord will act as though that user or guild has entitlement to your premium offering. + * + * @see dpp::cluster::entitlement_test_create + * @see https://discord.com/developers/docs/monetization/entitlements#create-test-entitlement + * @param new_entitlement The entitlement to create. + * Make sure your dpp::entitlement_type (inside your dpp::entitlement object) matches the type of the owner_id + * (if type is guild, owner_id is a guild id), otherwise it won't work! + * @return entitlement returned object on completion + * \memberof dpp::cluster + * @throw dpp::rest_exception upon failure to execute REST function + * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. + * Avoid direct use of this function inside an event handler. + */ +entitlement entitlement_test_create_sync(const class entitlement& new_entitlement); + +/** + * @brief Deletes a currently-active test entitlement. + * Discord will act as though that user or guild no longer has entitlement to your premium offering. + * + * @see dpp::cluster::entitlement_test_delete + * @see https://discord.com/developers/docs/monetization/entitlements#delete-test-entitlement + * @param entitlement_id The test entitlement to delete. + * @return confirmation returned object on completion + * \memberof dpp::cluster + * @throw dpp::rest_exception upon failure to execute REST function + * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. + * Avoid direct use of this function inside an event handler. + */ +confirmation entitlement_test_delete_sync(snowflake entitlement_id); + /** * @brief Get the gateway information for the bot using the token * @see dpp::cluster::get_gateway_bot @@ -2117,6 +2169,21 @@ scheduled_event guild_event_edit_sync(const scheduled_event& event); */ scheduled_event guild_event_get_sync(snowflake guild_id, snowflake event_id); +/** + * @brief Returns all SKUs for a given application. + * @note Because of how Discord's SKU and subscription systems work, you will see two SKUs for your premium offering. + * For integration and testing entitlements, you should use the SKU with type: 5. + * + * @see dpp::cluster::skus_get + * @see https://discord.com/developers/docs/monetization/skus#list-skus + * @return sku_map returned object on completion + * \memberof dpp::cluster + * @throw dpp::rest_exception upon failure to execute REST function + * @warning This function is a blocking (synchronous) call and should only be used from within a separate thread. + * Avoid direct use of this function inside an event handler. + */ +sku_map skus_get_sync(); + stage_instance stage_instance_create_sync(const stage_instance& si); diff --git a/include/dpp/dispatcher.h b/include/dpp/dispatcher.h index 5fc92ef4fd..0df6996f42 100644 --- a/include/dpp/dispatcher.h +++ b/include/dpp/dispatcher.h @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -1918,5 +1919,38 @@ struct DPP_EXPORT voice_client_disconnect_t : public event_dispatch_t { snowflake user_id = {}; }; +/** @brief Delete stage instance */ +struct DPP_EXPORT entitlement_create_t : public event_dispatch_t { + using event_dispatch_t::event_dispatch_t; + using event_dispatch_t::operator=; + + /** + * @brief The created entitlement. + */ + entitlement created = {}; +}; + +/** @brief Delete stage instance */ +struct DPP_EXPORT entitlement_update_t : public event_dispatch_t { + using event_dispatch_t::event_dispatch_t; + using event_dispatch_t::operator=; + + /** + * @brief The entitlement that was updated. + */ + entitlement updating_entitlement = {}; +}; + +/** @brief Delete stage instance */ +struct DPP_EXPORT entitlement_delete_t : public event_dispatch_t { + using event_dispatch_t::event_dispatch_t; + using event_dispatch_t::operator=; + + /** + * @brief The deleted entitlement. + */ + entitlement deleted = {}; +}; + } // namespace dpp diff --git a/include/dpp/entitlement.h b/include/dpp/entitlement.h new file mode 100644 index 0000000000..e1cfab8818 --- /dev/null +++ b/include/dpp/entitlement.h @@ -0,0 +1,160 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ + +#pragma once +#include +#include +#include +#include +#include +#include + +namespace dpp { + +/** + * @brief The type of entitlement. + * */ +enum entitlement_type : uint8_t { + /** + * @brief A subscription for a guild. + * @warning This can only be used when creating a test entitlement. + */ + GUILD_SUBSCRIPTION = 1, + /** + * @brief A subscription for a user. + * @warning This can only be used when creating a test entitlement. + */ + USER_SUBSCRIPTION = 2, + /** + * @brief Entitlement was purchased as an app subscription. + */ + APPLICATION_SUBSCRIPTION = 8 +}; + +/** + * @brief Entitlement flags. + */ +enum entitlement_flags : uint16_t { + /** + * @brief Entitlement was deleted + */ + ent_deleted = 0b000000000000001, +}; + +/** + * @brief A definition of a discord entitlement. + */ +class DPP_EXPORT entitlement : public managed, public json_interface { +protected: + friend struct json_interface; + + /** Read class values from json object + * @param j A json object to read from + * @return A reference to self + */ + entitlement& fill_from_json_impl(nlohmann::json* j); + + /** + * @brief Build json for this entitlement object + * + * @param with_id include the ID in the json + * @return json JSON object + */ + json to_json_impl(bool with_id = false) const; + +public: + /** + * @brief ID of the SKU + */ + snowflake sku_id{0}; + + /** + * @brief ID of the parent application + */ + snowflake application_id{0}; + + /** + * @brief Optional: ID of the user/guild that is granted access to the entitlement's SKU + */ + snowflake owner_id{0}; + + /** + * @brief The type of entitlement. + */ + entitlement_type type = entitlement_type::APPLICATION_SUBSCRIPTION; + + /** + * @brief Optional: Start date at which the entitlement is valid. + * + * @note Not present when using test entitlements. + */ + time_t starts_at{0}; + + /** + * @brief Optional: Date at which the entitlement is no longer valid. + * + * @note Not present when using test entitlements. + */ + time_t ends_at{0}; + + /** + * @brief Flags bitmap from dpp::entitlement_flags + */ + uint16_t flags{0}; + + /** + * @brief Construct a new entitlement object + */ + entitlement() = default; + + /** + * @brief Construct a new entitlement object with sku_id, ID, application_id, type, and flags. + * + * @param sku_id The ID of the SKU. + * @param id The ID of the entitlement. + * @param application_id The ID of the parent application. + * @param type The type of entitlement (Should only ever be APPLICATION_SUBSCRIPTION unless you going to use this object as a parameter for dpp::cluster::entitlement_test_create). + * @param flags The flags for the SKU from dpp::entitlement_flags. + */ + entitlement(const snowflake sku_id, const snowflake id = 0, const snowflake application_id = 0, const entitlement_type type = dpp::entitlement_type::APPLICATION_SUBSCRIPTION, const uint8_t flags = 0); + + /** + * @brief Get the type of entitlement. + * + * @return entitlement_type Entitlement type + */ + entitlement_type get_type() const; + + /** + * @brief Was the entitlement deleted? + * + * @return true if the entitlement was deleted. + */ + bool is_deleted() const; +}; + +/** + * @brief Group of entitlements. + */ +typedef std::unordered_map entitlement_map; + +} // namespace dpp diff --git a/include/dpp/event.h b/include/dpp/event.h index b0cb96ea08..b9b3f003f7 100644 --- a/include/dpp/event.h +++ b/include/dpp/event.h @@ -148,4 +148,9 @@ event_decl(automod_rule_execute, AUTO_MODERATION_ACTION_EXECUTION); /* Audit log */ event_decl(guild_audit_log_entry_create, GUILD_AUDIT_LOG_ENTRY_CREATE); +/* Entitlements */ +event_decl(entitlement_create, ENTITLEMENT_CREATE); +event_decl(entitlement_update, ENTITLEMENT_UPDATE); +event_decl(entitlement_delete, ENTITLEMENT_DELETE); + } // namespace dpp::events diff --git a/include/dpp/restresults.h b/include/dpp/restresults.h index 9033241c5d..a340b50ebc 100644 --- a/include/dpp/restresults.h +++ b/include/dpp/restresults.h @@ -43,6 +43,8 @@ #include #include #include +#include +#include namespace dpp { @@ -202,7 +204,11 @@ typedef std::variant< automod_rule, automod_rule_map, onboarding, - welcome_screen + welcome_screen, + entitlement, + entitlement_map, + sku, + sku_map > confirmable_t; /** diff --git a/include/dpp/sku.h b/include/dpp/sku.h new file mode 100644 index 0000000000..88b07d0728 --- /dev/null +++ b/include/dpp/sku.h @@ -0,0 +1,159 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ + +#pragma once +#include +#include +#include +#include +#include +#include + +namespace dpp { + +/** + * @brief The type of SKU. + * */ +enum sku_type : uint8_t { + /** + * @brief Represents a recurring subscription + */ + SUBSCRIPTION = 5, + /** + * @brief System-generated group for each SUBSCRIPTION SKU created + * @warning These are automatically created for each subscription SKU and are not used at this time. Please refrain from using these. + */ + SUBSCRIPTION_GROUP = 6, +}; + +/** + * @brief SKU flags. + */ +enum sku_flags : uint16_t { + /** + * @brief SKU is available for purchase + */ + sku_available = 0b000000000000100, + /** + * @brief Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server. + */ + sku_guild_subscription = 0b000000010000000, + /** + * @brief Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server. + */ + sku_user_subscription = 0b000000100000000, +}; + +/** + * @brief A definition of a discord SKU. + */ +class DPP_EXPORT sku : public managed, public json_interface { +protected: + friend struct json_interface; + + /** Read class values from json object + * @param j A json object to read from + * @return A reference to self + */ + sku& fill_from_json_impl(nlohmann::json* j); + + /** + * @brief Build json for this SKU object + * + * @param with_id include the ID in the json + * @return json JSON object + */ + json to_json_impl(bool with_id = false) const; + +public: + /** + * @brief The type of SKU. + */ + sku_type type = sku_type::SUBSCRIPTION; + + /** + * @brief ID of the parent application + */ + snowflake application_id{0}; + + /** + * @brief Customer-facing name of your premium offering + */ + std::string name{}; + + /** + * @brief System-generated URL slug based on the SKU's name + */ + std::string slug{}; + + /** + * @brief Flags bitmap from dpp::sku_flags + */ + uint16_t flags{0}; + + /** + * @brief Construct a new SKU object + */ + sku() = default; + + /** + * @brief Construct a new SKU object with all data required. + * + * @param id SKU id. + */ + sku(const snowflake id, const sku_type type, const snowflake application_id, const std::string name, const std::string slug, const uint16_t flags); + + /** + * @brief Get the type of SKU. + * + * @return sku_type SKU type + */ + sku_type get_type() const; + + /** + * @brief Is the SKU available for purchase? + * + * @return true if the SKU can be purchased. + */ + bool is_available() const; + + /** + * @brief Is the SKU a guild subscription? + * + * @return true if the SKU is a guild subscription. + */ + bool is_guild_subscription() const; + + /** + * @brief Is the SKU a user subscription? + * + * @return true if the SKU is a user subscription + */ + bool is_user_subscription() const; +}; + +/** + * @brief Group of SKUs. + */ +typedef std::unordered_map sku_map; + +} // namespace dpp diff --git a/src/dpp/cluster/entitlement.cpp b/src/dpp/cluster/entitlement.cpp new file mode 100644 index 0000000000..1783e79296 --- /dev/null +++ b/src/dpp/cluster/entitlement.cpp @@ -0,0 +1,80 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include + +namespace dpp { + +void cluster::entitlements_get(snowflake user_id, const std::vector& sku_ids, snowflake before_id, snowflake after_id, uint8_t limit, snowflake guild_id, bool exclude_ended, command_completion_event_t callback) { + json j; + + if(user_id) { + j["user_id"] = user_id.str(); + } + + if(!sku_ids.empty()) { + /* Why can't Discord just be consistent and accept an array of ids???? + * Why just out of nowhere introduce a "comma-delimited set of snowflakes", like what. + * Just allow an array like you normally do!!!!!!!!!!!! + */ + std::string ids = ""; + for(size_t i = 0; i(this, API_PATH "/applications", me.id.str(), "entitlements", m_get, j, callback); +} + +void cluster::entitlement_test_create(const class entitlement& new_entitlement, command_completion_event_t callback) { + json j; + j["sku_id"] = new_entitlement.sku_id.str(); + j["owner_id"] = new_entitlement.owner_id.str(); + j["owner_type"] = new_entitlement.type; + rest_request(this, API_PATH "/applications", me.id.str(), "entitlements", m_post, j, callback); +} + +void cluster::entitlement_test_delete(const class snowflake entitlement_id, command_completion_event_t callback) { + rest_request(this, API_PATH "/applications", me.id.str(), "entitlements/" + entitlement_id.str(), m_delete, "", callback); +} + +} // namespace dpp diff --git a/src/dpp/cluster/sku.cpp b/src/dpp/cluster/sku.cpp new file mode 100644 index 0000000000..20f23f3e77 --- /dev/null +++ b/src/dpp/cluster/sku.cpp @@ -0,0 +1,30 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include + +namespace dpp { + +void cluster::skus_get(command_completion_event_t callback) { + rest_request_list(this, API_PATH "/applications", me.id.str(), "entitlements", m_get, "", callback); +} + +} // namespace dpp diff --git a/src/dpp/cluster_coro_calls.cpp b/src/dpp/cluster_coro_calls.cpp index 528df234ab..d03183cdeb 100644 --- a/src/dpp/cluster_coro_calls.cpp +++ b/src/dpp/cluster_coro_calls.cpp @@ -259,6 +259,18 @@ async cluster::co_guild_emojis_get(snowflake guild_id) return async{ this, static_cast(&cluster::guild_emojis_get), guild_id }; } +async cluster::co_entitlements_get(snowflake user_id, const std::vector& sku_ids, snowflake before_id, snowflake after_id, uint8_t limit, snowflake guild_id, bool exclude_ended) { + return async{ this, static_cast&, snowflake, snowflake, uint8_t, snowflake, bool, command_completion_event_t)>(&cluster::entitlements_get), user_id, sku_ids, before_id, after_id, limit, guild_id, exclude_ended }; +} + +async cluster::co_entitlement_test_create(const class entitlement& new_entitlement) { + return async{ this, static_cast(&cluster::entitlement_test_create), new_entitlement }; +} + +async cluster::co_entitlement_test_delete(const class snowflake entitlement_id) { + return async{ this, static_cast(&cluster::entitlement_test_delete), entitlement_id }; +} + async cluster::co_get_gateway_bot() { return async{ this, static_cast(&cluster::get_gateway_bot) }; } @@ -567,6 +579,10 @@ async cluster::co_guild_event_get(snowflake guild_id, s return async{ this, static_cast(&cluster::guild_event_get), guild_id, event_id }; } +async cluster::co_skus_get() { + return async{ this, static_cast(&cluster::skus_get) }; +} + async cluster::co_stage_instance_create(const stage_instance& si) { return async{ this, static_cast(&cluster::stage_instance_create), si }; } diff --git a/src/dpp/cluster_sync_calls.cpp b/src/dpp/cluster_sync_calls.cpp index 0167edddb2..66e057c1ee 100644 --- a/src/dpp/cluster_sync_calls.cpp +++ b/src/dpp/cluster_sync_calls.cpp @@ -257,6 +257,18 @@ emoji_map cluster::guild_emojis_get_sync(snowflake guild_id) { return dpp::sync(this, static_cast(&cluster::guild_emojis_get), guild_id); } +entitlement_map cluster::entitlements_get_sync(snowflake user_id, const std::vector& sku_ids, snowflake before_id, snowflake after_id, uint8_t limit, snowflake guild_id, bool exclude_ended) { + return dpp::sync(this, static_cast&, snowflake, snowflake, uint8_t, snowflake, bool, command_completion_event_t)>(&cluster::entitlements_get), user_id, sku_ids, before_id, after_id, limit, guild_id, exclude_ended); +} + +entitlement cluster::entitlement_test_create_sync(const class entitlement& new_entitlement) { + return dpp::sync(this, static_cast(&cluster::entitlement_test_create), new_entitlement); +} + +confirmation cluster::entitlement_test_delete_sync(const class snowflake entitlement_id) { + return dpp::sync(this, static_cast(&cluster::entitlement_test_delete), entitlement_id); +} + gateway cluster::get_gateway_bot_sync() { return dpp::sync(this, static_cast(&cluster::get_gateway_bot)); } @@ -565,6 +577,10 @@ scheduled_event cluster::guild_event_get_sync(snowflake guild_id, snowflake even return dpp::sync(this, static_cast(&cluster::guild_event_get), guild_id, event_id); } +sku_map cluster::skus_get_sync() { + return dpp::sync(this, static_cast(&cluster::skus_get)); +} + stage_instance cluster::stage_instance_create_sync(const stage_instance& si) { return dpp::sync(this, static_cast(&cluster::stage_instance_create), si); } diff --git a/src/dpp/discordevents.cpp b/src/dpp/discordevents.cpp index 7ca54a0d04..18396ed225 100644 --- a/src/dpp/discordevents.cpp +++ b/src/dpp/discordevents.cpp @@ -390,6 +390,9 @@ const std::map eventmap = { { "AUTO_MODERATION_RULE_DELETE", new dpp::events::automod_rule_delete() }, { "AUTO_MODERATION_ACTION_EXECUTION", new dpp::events::automod_rule_execute() }, { "GUILD_AUDIT_LOG_ENTRY_CREATE", new dpp::events::guild_audit_log_entry_create() }, + { "ENTITLEMENT_CREATE", new dpp::events::entitlement_create() }, + { "ENTITLEMENT_UPDATE", new dpp::events::entitlement_update() }, + { "ENTITLEMENT_DELETE", new dpp::events::entitlement_delete() }, }; void discord_client::handle_event(const std::string &event, json &j, const std::string &raw) diff --git a/src/dpp/entitlement.cpp b/src/dpp/entitlement.cpp new file mode 100644 index 0000000000..245eb3b383 --- /dev/null +++ b/src/dpp/entitlement.cpp @@ -0,0 +1,78 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include +#include + +namespace dpp { + +using json = nlohmann::json; + +entitlement::entitlement(const snowflake _sku_id, const snowflake _id, const snowflake _application_id, const entitlement_type _type, const uint8_t _flags) + : managed(_id), sku_id(_sku_id), application_id(_application_id), type(_type), flags(_flags) {} + +entitlement& entitlement::fill_from_json_impl(nlohmann::json* j) { + set_snowflake_not_null(j, "id", id); + set_snowflake_not_null(j, "sku_id", sku_id); + set_snowflake_not_null(j, "application_id", application_id); + + /* Discord does separate these values, but asks for them as "owner_id" in the create event, just makes sense to make them as one as only one is ever set. */ + if(snowflake_not_null(j, "user_id")) { + set_snowflake_not_null(j, "user_id", owner_id); + } else if(snowflake_not_null(j, "guild_id")) { + set_snowflake_not_null(j, "guild_id", owner_id); + } + + type = static_cast(int8_not_null(j, "type")); + + if (bool_not_null(j, "deleted")) { + flags |= ent_deleted; + } + + set_ts_not_null(j, "starts_at", starts_at); + set_ts_not_null(j, "ends_at", ends_at); + + /* + * TODO: Look at the entitlement example on docs and see what we're missing, add it here after. Discord seems to be missing information in their structure as their example shows more data. + */ + + return *this; +} + +json entitlement::to_json_impl(bool with_id) const { + json j; + if (with_id) { + j["id"] = id.str(); + } + j["sku_id"] = sku_id.str(); + return j; +} + +entitlement_type entitlement::get_type() const { + return type; +} + +bool entitlement::is_deleted() const { + return flags & entitlement_flags::ent_deleted; +} + +} // namespace dpp diff --git a/src/dpp/events/entitlement_create.cpp b/src/dpp/events/entitlement_create.cpp new file mode 100644 index 0000000000..5356f88b98 --- /dev/null +++ b/src/dpp/events/entitlement_create.cpp @@ -0,0 +1,47 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include +#include + +namespace dpp::events { + +/** + * @brief Handle event + * + * @param client Websocket client (current shard) + * @param j JSON data for the event + * @param raw Raw JSON string + */ +void entitlement_create::handle(discord_client* client, json &j, const std::string &raw) { + if (!client->creator->on_entitlement_create.empty()) { + dpp::entitlement ent; + ent.fill_from_json(&j); + + dpp::entitlement_create_t entitlement_event(client, raw); + entitlement_event.created = ent; + + client->creator->on_entitlement_create.call(entitlement_event); + } +} + +}; diff --git a/src/dpp/events/entitlement_delete.cpp b/src/dpp/events/entitlement_delete.cpp new file mode 100644 index 0000000000..d1c645faee --- /dev/null +++ b/src/dpp/events/entitlement_delete.cpp @@ -0,0 +1,47 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include +#include + +namespace dpp::events { + +/** + * @brief Handle event + * + * @param client Websocket client (current shard) + * @param j JSON data for the event + * @param raw Raw JSON string + */ +void entitlement_delete::handle(discord_client* client, json &j, const std::string &raw) { + if (!client->creator->on_entitlement_delete.empty()) { + dpp::entitlement ent; + ent.fill_from_json(&j); + + dpp::entitlement_delete_t entitlement_event(client, raw); + entitlement_event.deleted = ent; + + client->creator->on_entitlement_delete.call(entitlement_event); + } +} + +}; diff --git a/src/dpp/events/entitlement_update.cpp b/src/dpp/events/entitlement_update.cpp new file mode 100644 index 0000000000..b4921eb4dc --- /dev/null +++ b/src/dpp/events/entitlement_update.cpp @@ -0,0 +1,47 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include +#include + +namespace dpp::events { + +/** + * @brief Handle event + * + * @param client Websocket client (current shard) + * @param j JSON data for the event + * @param raw Raw JSON string + */ +void entitlement_update::handle(discord_client* client, json &j, const std::string &raw) { + if (!client->creator->on_entitlement_update.empty()) { + dpp::entitlement ent; + ent.fill_from_json(&j); + + dpp::entitlement_update_t entitlement_event(client, raw); + entitlement_event.updating_entitlement = ent; + + client->creator->on_entitlement_update.call(entitlement_event); + } +} + +}; diff --git a/src/dpp/sku.cpp b/src/dpp/sku.cpp new file mode 100644 index 0000000000..170a158159 --- /dev/null +++ b/src/dpp/sku.cpp @@ -0,0 +1,89 @@ +/************************************************************************************ + * + * D++, A Lightweight C++ library for Discord + * + * SPDX-License-Identifier: Apache-2.0 + * Copyright 2021 Craig Edwards and D++ contributors + * (https://github.com/brainboxdotcc/DPP/graphs/contributors) + * + * 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. + * + ************************************************************************************/ +#include +#include +#include + +namespace dpp { + +using json = nlohmann::json; + +sku::sku(const snowflake _id, const sku_type _type, const snowflake _application_id, const std::string _name, const std::string _slug, const uint16_t _flags) + : managed(_id), type(_type), application_id(_application_id), name(_name), slug(_slug), flags(_flags) {} + +sku& sku::fill_from_json_impl(nlohmann::json* j) { + set_snowflake_not_null(j, "id", id); + + type = static_cast(int8_not_null(j, "type")); + + set_snowflake_not_null(j, "application_id", application_id); + + set_string_not_null(j, "name", name); + set_string_not_null(j, "slug", slug); + + uint8_t sku_flags = int8_not_null(j, "flags"); + if (sku_flags & (1 << 2)) { + flags |= sku_flags::sku_available; + } + if (sku_flags & (1 << 7)) { + flags |= sku_flags::sku_guild_subscription; + } + if (sku_flags & (1 << 8)) { + flags |= sku_flags::sku_user_subscription; + } + + /* + * TODO: Look at the SKU example on docs and see what we're missing, add it here after. Discord seems to be missing information in their structure as their example shows more data. + * yes this is copied from dpp/entitlement.cpp, Discord's fault for their docs being inconsistent. + */ + + return *this; +} + +json sku::to_json_impl(bool with_id) const { + json j; + if (with_id) { + j["id"] = id.str(); + } + + /* There's no reason to ever use this as you can only get SKUs, so no point putting any data here */ + + return j; +} + +sku_type sku::get_type() const { + return type; +} + +bool sku::is_available() const { + return flags & sku_flags::sku_available; +} + +bool sku::is_guild_subscription() const { + return flags & sku_flags::sku_guild_subscription; +} + +bool sku::is_user_subscription() const { + return flags & sku_flags::sku_user_subscription; +} + +} // namespace dpp diff --git a/src/dpp/slashcommand.cpp b/src/dpp/slashcommand.cpp index 77dde316fb..f3a8118145 100644 --- a/src/dpp/slashcommand.cpp +++ b/src/dpp/slashcommand.cpp @@ -593,12 +593,12 @@ void from_json(const nlohmann::json& j, interaction& i) { if (j.contains("channel") && !j.at("channel").is_null()) { const json& c = j["channel"]; - i.channel = channel().fill_from_json((json*)&c); + i.channel = channel().fill_from_json(const_cast(&c)); } if (j.contains("message") && !j.at("message").is_null()) { const json& m = j["message"]; - i.msg = message().fill_from_json((json*)&m, i.cache_policy); + i.msg = message().fill_from_json(const_cast(&m), i.cache_policy); set_snowflake_not_null(&m, "id", i.message_id); } @@ -719,6 +719,12 @@ void from_json(const nlohmann::json& j, interaction& i) { i.data = ai; } } + + if(j.contains("entitlements")) { + for (auto& entitle : j["entitlements"]) { + i.entitlements.emplace_back(entitlement().fill_from_json(const_cast(&entitle))); + } + } } interaction_response& interaction_response::add_autocomplete_choice(const command_option_choice& achoice) { From c90d17afb13597ef1f0752771de15c26fea4fabf Mon Sep 17 00:00:00 2001 From: Miuna <809711+Mishura4@users.noreply.github.com> Date: Wed, 25 Oct 2023 06:22:44 -0400 Subject: [PATCH 03/11] fix(#957): support iconhash/image data variant fields (#965) --- include/dpp/emoji.h | 14 +- include/dpp/guild.h | 118 +++++++++++++- include/dpp/role.h | 73 ++++++--- include/dpp/scheduled_event.h | 27 +++- include/dpp/user.h | 2 +- include/dpp/utility.h | 280 +++++++++++++++++++++++++++++++--- src/dpp/emoji.cpp | 12 +- src/dpp/guild.cpp | 135 ++++++++++++---- src/dpp/role.cpp | 59 +++---- src/dpp/scheduled_event.cpp | 17 ++- src/dpp/utility.cpp | 128 +++++++++++++++- src/unittest/test.cpp | 38 ++++- src/unittest/test.h | 7 +- src/unittest/unittest.cpp | 8 +- 14 files changed, 770 insertions(+), 148 deletions(-) diff --git a/include/dpp/emoji.h b/include/dpp/emoji.h index b8eba59cf5..fff307d0f4 100644 --- a/include/dpp/emoji.h +++ b/include/dpp/emoji.h @@ -89,7 +89,7 @@ class DPP_EXPORT emoji : public managed, public json_interface { /** * @brief Image data for the emoji, if uploading. */ - std::string image_data; + utility::image_data image_data; /** * @brief Flags for the emoji from dpp::emoji_flags. @@ -185,7 +185,7 @@ class DPP_EXPORT emoji : public managed, public json_interface { bool is_available() const; /** - * @brief Load an image into the object as base64 + * @brief Load an image into the object * * @param image_blob Image binary data * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. @@ -194,6 +194,16 @@ class DPP_EXPORT emoji : public managed, public json_interface { */ emoji& load_image(std::string_view image_blob, const image_type type); + /** + * @brief Load an image into the object + * + * @param image_blob Image binary data + * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. + * @return emoji& Reference to self + * @throw dpp::length_exception Image content exceeds discord maximum of 256 kilobytes + */ + emoji& load_image(const std::byte* data, uint32_t size, const image_type type); + /** * @brief Format to name if unicode, name:id if has id or a:name:id if animated * diff --git a/include/dpp/guild.h b/include/dpp/guild.h index b68d1181dc..fd6a3d8a98 100644 --- a/include/dpp/guild.h +++ b/include/dpp/guild.h @@ -713,17 +713,17 @@ class DPP_EXPORT guild : public managed, public json_interface { */ dpp::welcome_screen welcome_screen; - /** Guild icon hash */ - utility::iconhash icon; + /** Guild icon */ + utility::icon icon; - /** Guild splash hash */ - utility::iconhash splash; + /** Guild splash */ + utility::icon splash; - /** Guild discovery splash hash */ - utility::iconhash discovery_splash; + /** Guild discovery splash */ + utility::icon discovery_splash; - /** Server banner hash */ - utility::iconhash banner; + /** Server banner */ + utility::icon banner; /** Snowflake id of guild owner */ snowflake owner_id; @@ -945,6 +945,108 @@ class DPP_EXPORT guild : public managed, public json_interface { */ guild& set_name(const std::string& n); + /** + * @brief Remove the guild banner. + * @return guild& Reference to self for chaining + */ + guild& remove_banner(); + + /** + * @brief Set the guild banner image. Server needs banner feature. + * Must be 16:9, and depending on nitro level, must be png or jpeg. + * Animated gif needs the animated banner server feature. + * @param format Image format. + * @param data Image data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_banner(image_type format, std::string_view data); + + /** + * @brief Set the guild banner image. Server needs banner feature. + * Must be 16:9, and depending on nitro level, must be png or jpeg. + * Animated gif needs the animated banner server feature. + * @param format Image format. + * @param data Image data in bytes + * @param size Size of the data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_banner(image_type format, const std::byte* data, uint32_t size); + + /** + * @brief Remove the guild discovery splash. + * @return guild& Reference to self for chaining + */ + guild& remove_discovery_splash(); + + /** + * @brief Set the guild discovery splash image. Server needs discoverable feature. + * Must be 16:9 and png or jpeg. + * @param format Image format. + * @param data Image data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_discovery_splash(image_type format, std::string_view data); + + /** + * @brief Set the guild discovery splash image. Server needs discoverable feature. + * Must be 16:9 and png or jpeg. + * @param format Image format. + * @param data Image data in bytes + * @param size Size of the data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_discovery_splash(image_type format, const std::byte* data, uint32_t size); + + /** + * @brief Remove the guild invite splash. + * @return guild& Reference to self for chaining + */ + guild& remove_splash(); + + /** + * @brief Set the guild invite splash image. Server needs invite splash feature. + * Must be 16:9 and png or jpeg. + * @param format Image format. + * @param data Image data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_splash(image_type format, std::string_view data); + + /** + * @brief Set the guild invite splash image. Server needs invite splash feature. + * Must be 16:9 and png or jpeg. + * @param format Image format. + * @param data Image data in bytes + * @param size Size of the data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_splash(image_type format, const std::byte* data, uint32_t size); + + /** + * @brief Remove the guild icon. + * @return guild& Reference to self for chaining + */ + guild& remove_icon(); + + /** + * @brief Set the guild icon image. + * Must be 1024x1024 and png or jpeg. Gif allowed only if the server has animated icon. + * @param format Image format. + * @param data Image data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_icon(image_type format, std::string_view data); + + /** + * @brief Set the 1024x1024 guild icon image. + * Must be png or jpeg. Gif allowed only if the server has animated icon. + * @param format Image format. + * @param data Image data in bytes + * @param size Size of the data in bytes + * @return guild& Reference to self for chaining + */ + guild& set_icon(image_type format, const std::byte* data, uint32_t size); + /** * @brief Is a large server (>250 users) * @return bool is a large guild diff --git a/include/dpp/role.h b/include/dpp/role.h index 6a9b7d093e..069ab2f446 100644 --- a/include/dpp/role.h +++ b/include/dpp/role.h @@ -74,45 +74,71 @@ class DPP_EXPORT role : public managed, public json_interface { * @brief Role name * Between 1 and 100 characters. */ - std::string name; + std::string name{}; /** * @brief Guild ID */ - snowflake guild_id; + snowflake guild_id{0}; /** * @brief Role colour. * A colour of 0 means no colour. If you want a black role, * you must use the value 0x000001. */ - uint32_t colour; + uint32_t colour{0}; /** Role position */ - uint8_t position; + uint8_t position{0}; /** Role permissions bitmask values from dpp::permissions */ - permission permissions; + permission permissions{}; /** Role flags from dpp::role_flags */ - uint8_t flags; + uint8_t flags{0}; /** Integration id if any (e.g. role is a bot's role created when it was invited) */ - snowflake integration_id; + snowflake integration_id{}; /** Bot id if any (e.g. role is a bot's role created when it was invited) */ - snowflake bot_id; + snowflake bot_id{}; /** The id of the role's subscription sku and listing */ - snowflake subscription_listing_id; + snowflake subscription_listing_id{}; /** The unicode emoji used for the role's icon, can be an empty string */ - std::string unicode_emoji; - /** The role icon hash, can be an empty string */ - utility::iconhash icon; - /** Image data for the role icon (if any) */ - std::string* image_data; + std::string unicode_emoji{}; + /** The role icon */ + utility::icon icon{}; /** * @brief Construct a new role object */ - role(); + role() = default; + + /** + * @brief Construct a new role object. + * + * @param rhs Role object to copy + */ + role(const role& rhs) = default; + + /** + * @brief Construct a new role object. + * + * @param rhs Role object to move + */ + role(role&& rhs) = default; + + /** + * @brief Copy another role object + * + * @param rhs Role object to copy + */ + role &operator=(const role& rhs) = default; + + /** + * @brief Move from another role object + * + * @param rhs Role object to copy + */ + role &operator=(role&& rhs) = default; /** * @brief Destroy the role object */ - virtual ~role(); + virtual ~role() = default; /** * @brief Create a mentionable role. @@ -210,13 +236,22 @@ class DPP_EXPORT role : public managed, public json_interface { std::string get_icon_url(uint16_t size = 0, const image_type format = i_png) const; /** - * @brief Load an image into the object as base64 - * + * @brief Load a role icon + * + * @param image_blob Image binary data + * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. + * @return emoji& Reference to self + */ + role& load_image(std::string_view image_blob, const image_type type); + + /** + * @brief Load a role icon + * * @param image_blob Image binary data * @param type Type of image. It can be one of `i_gif`, `i_jpg` or `i_png`. * @return emoji& Reference to self */ - role& load_image(const std::string &image_blob, const image_type type); + role& load_image(const std::byte* data, uint32_t size, const image_type type); /** * @brief Operator less than, used for checking if a role is below another. diff --git a/include/dpp/scheduled_event.h b/include/dpp/scheduled_event.h index 56dc7b039a..c8e8565cbd 100644 --- a/include/dpp/scheduled_event.h +++ b/include/dpp/scheduled_event.h @@ -112,7 +112,7 @@ struct DPP_EXPORT scheduled_event : public managed, public json_interface { uint32_t flags; /** Discriminator (aka tag), 4 digits usually displayed with leading zeroes. * - * @note To print the discriminator with leading zeroes, use format_username(). + * @note To print the discriminator with leading zeroes, use format_username(). * 0 for users that have migrated to the new username format. */ uint16_t discriminator; diff --git a/include/dpp/utility.h b/include/dpp/utility.h index 1410b8599e..aec94a32e3 100644 --- a/include/dpp/utility.h +++ b/include/dpp/utility.h @@ -29,6 +29,9 @@ #include #include #include +#include +#include +#include /** * @brief The main namespace for D++ functions, classes and types @@ -215,33 +218,24 @@ std::string DPP_EXPORT loglevel(dpp::loglevel in); * the value back in string form. */ struct DPP_EXPORT iconhash { - - uint64_t first; //!< High 64 bits - uint64_t second; //!< Low 64 bits + /** @brief High 64 bits */ + uint64_t first; + /** @brief Low 64 bits */ + uint64_t second; /** * @brief Construct a new iconhash object * @param _first Leftmost portion of the hash value * @param _second Rightmost portion of the hash value */ - iconhash(uint64_t _first = 0, uint64_t _second = 0); - - /** - * @brief Construct a new iconhash object - */ - iconhash(const iconhash&); - - /** - * @brief Destroy the iconhash object - */ - ~iconhash(); + iconhash(uint64_t _first = 0, uint64_t _second = 0) noexcept; /** * @brief Construct a new iconhash object - * + * * @param hash String hash to construct from. * Must contain a 32 character hex string. - * + * * @throws std::length_error if the provided * string is not exactly 32 characters long. */ @@ -249,9 +243,9 @@ struct DPP_EXPORT iconhash { /** * @brief Assign from std::string - * + * * @param assignment string to assign from. - * + * * @throws std::length_error if the provided * string is not exactly 32 characters long. */ @@ -259,18 +253,18 @@ struct DPP_EXPORT iconhash { /** * @brief Check if one iconhash is equal to another - * + * * @param other other iconhash to compare * @return True if the iconhash objects match */ - bool operator==(const iconhash& other) const; + bool operator==(const iconhash& other) const noexcept; /** * @brief Change value of iconhash object - * + * * @param hash String hash to change to. * Must contain a 32 character hex string. - * + * * @throws std::length_error if the provided * string is not exactly 32 characters long. */ @@ -279,12 +273,250 @@ struct DPP_EXPORT iconhash { /** * @brief Convert iconhash back to 32 character * string value. - * - * @return std::string Hash value + * + * @return std::string Hash value */ std::string to_string() const; }; +/** + * @brief Image to be received or sent to API calls. + * + * This class is carefully crafted to be 16 bytes, + * this is why we use a ptr + 4 byte size instead of a vector. + * We want this class to be substitutable with iconhash in data structures. + */ +struct DPP_EXPORT image_data { + /** + * @brief Data in bytes of the image. + */ + std::unique_ptr data = nullptr; + + /** + * @brief Size of the data in bytes. + */ + uint32_t size = 0; + + /** + * @brief Type of the image. + * + * @see image_type + */ + image_type type = {}; + + /** + * @brief Construct an empty image. + */ + image_data() = default; + + /** + * @brief Copy an image. + * + * @param rhs Image to copy + */ + image_data(const image_data& rhs); + + /** + * @brief Move an image. + * + * @param rhs Image to copy + */ + image_data(image_data&&) noexcept = default; + + /** + * @brief Construct from string buffer + * + * @param format Image format + * @param str Data in a string + * @see image_type + */ + image_data(image_type format, std::string_view bytes); + + /** + * @brief Construct from byte buffer + * + * @param format Image format + * @param buf Byte buffer + * @param size_t Image size in bytes + * @see image_type + */ + image_data(image_type format, const std::byte* bytes, uint32_t byte_size); + + /** + * @brief Copy an image data. + * + * @param rhs Image to copy + * @return self for chaining + */ + image_data& operator=(const image_data& rhs); + + /** + * @brief Move an image data. + * + * @param rhs Image to move from + * @return self for chaining + */ + image_data& operator=(image_data&& rhs) noexcept = default; + + /** + * @brief Set image data. + * + * @param format Format of the image + * @param data Data of the image + */ + void set(image_type format, std::string_view bytes); + + /** + * @brief Set image data. + * + * @param format Format of the image + * @param data Data of the image + */ + void set(image_type format, const std::byte* bytes, uint32_t byte_size); + + /** + * @brief Encode to base64. + * + * @return std::string New string with the image data encoded in base64 + */ + std::string base64_encode() const; + + /** + * @brief Get the file extension. + * + * Alias for \ref file_extension + * @return std::string File extension e.g. `.png` + */ + std::string get_file_extension() const; + + /** + * @brief Get the mime type. + * + * Alias for \ref mime_type + * @return std::string File mime type e.g. "image/png" + */ + std::string get_mime_type() const; + + /** + * @brief Check if this is an empty image. + * + * @return bool Whether the image is empty or not + */ + bool empty() const noexcept; + + /** + * @brief Build a data URI scheme suitable for sending to Discord + * + * @see https://discord.com/developers/docs/reference#image-data + * @return The data URI scheme as a json or null if empty + */ + json to_nullable_json() const; +}; + +/** + * @brief Wrapper class around a variant for either iconhash or image, + * for API objects that have one or the other (generally iconhash when receiving, + * image when uploading an image) + */ +struct icon { + /** + * @brief Iconhash received or image data for upload. + */ + std::variant hash_or_data; + + /** + * @brief Assign to iconhash. + * + * @param hash Iconhash + */ + icon& operator=(const iconhash& hash); + + /** + * @brief Assign to iconhash. + * + * @param hash Iconhash + */ + icon& operator=(iconhash&& hash) noexcept; + + /** + * @brief Assign to image. + * + * @param img Image + */ + icon& operator=(const image_data& img); + + /** + * @brief Assign to image. + * + * @param img Image + */ + icon& operator=(image_data&& img) noexcept; + + /** + * @brief Check whether this icon is stored as an iconhash + * + * @see iconhash + * @return bool Whether this icon is stored as an iconhash + */ + bool is_iconhash() const; + + /** + * @brief Get as icon hash. + * + * @warn The behavior is undefined if `is_iconhash() == false` + * @return iconhash& This iconhash + */ + iconhash& as_iconhash() &; + + /** + * @brief Get as icon hash. + * + * @warn The behavior is undefined if `is_iconhash() == false` + * @return iconhash& This iconhash + */ + const iconhash& as_iconhash() const&; + + /** + * @brief Get as icon hash. + * + * @warn The behavior is undefined if `is_iconhash() == false` + * @return iconhash& This iconhash + */ + iconhash&& as_iconhash() &&; + + /** + * @brief Check whether this icon is stored as an image + * + * @see image_data + * @return bool Whether this icon is stored as an image + */ + bool is_image_data() const; + + /** + * @brief Get as image data. + * + * @warn The behavior is undefined if `is_image_data() == false` + * @return image_data& This image + */ + image_data& as_image_data() &; + + /** + * @brief Get as image. + * + * @warn The behavior is undefined if `is_image_data() == false` + * @return image_data& This image + */ + const image_data& as_image_data() const&; + + /** + * @brief Get as image. + * + * @warn The behavior is undefined if `is_image_data() == false` + * @return image_data& This image + */ + image_data&& as_image_data() &&; +}; + /** * @brief Return the current time with fractions of seconds. * This is a unix epoch time with the fractional seconds part diff --git a/src/dpp/emoji.cpp b/src/dpp/emoji.cpp index 7793c34c85..3d6280e08e 100644 --- a/src/dpp/emoji.cpp +++ b/src/dpp/emoji.cpp @@ -70,7 +70,7 @@ json emoji::to_json_impl(bool with_id) const { } j["name"] = name; if (!image_data.empty()) { - j["image"] = image_data; + j["image"] = image_data.to_nullable_json(); } j["roles"] = json::array(); for (const auto& role : roles) { @@ -99,9 +99,15 @@ emoji& emoji::load_image(std::string_view image_blob, const image_type type) { if (image_blob.size() > MAX_EMOJI_SIZE) { throw dpp::length_exception("Emoji file exceeds discord limit of 256 kilobytes"); } + image_data = utility::image_data{type, image_blob}; + return *this; +} - image_data = "data:" + utility::mime_type(type) + ";base64," + base64_encode(reinterpret_cast(image_blob.data()), static_cast(image_blob.length())); - +emoji& emoji::load_image(const std::byte *data, uint32_t size, const image_type type) { + if (size > MAX_EMOJI_SIZE) { + throw dpp::length_exception("Emoji file exceeds discord limit of 256 kilobytes"); + } + image_data = utility::image_data{type, data, size}; return *this; } diff --git a/src/dpp/guild.cpp b/src/dpp/guild.cpp index d919618fe3..a670c4f5a0 100644 --- a/src/dpp/guild.cpp +++ b/src/dpp/guild.cpp @@ -164,7 +164,7 @@ guild_member& guild_member::set_communication_disabled_until(const time_t disabl this->communication_disabled_until = disabled_timestamp; return *this; } - + bool guild_member::operator == (guild_member const& other_member) const { if ((this->user_id == other_member.user_id && this->user_id.empty()) || (this->guild_id == other_member.guild_id && this->guild_id.empty())) return false; @@ -267,6 +267,66 @@ guild& guild::set_name(const std::string& n) { return *this; } +guild &guild::remove_banner() { + this->banner = utility::image_data{}; + return *this; +} + +guild& guild::set_banner(image_type format, std::string_view data) { + this->banner = utility::image_data{format, data}; + return *this; +} + +guild& guild::set_banner(image_type format, const std::byte* data, uint32_t size) { + this->banner = utility::image_data{format, data, size}; + return *this; +} + +guild &guild::remove_discovery_splash() { + this->discovery_splash = utility::image_data{}; + return *this; +} + +guild& guild::set_discovery_splash(image_type format, std::string_view data) { + this->discovery_splash = utility::image_data{format, data}; + return *this; +} + +guild& guild::set_discovery_splash(image_type format, const std::byte* data, uint32_t size) { + this->discovery_splash = utility::image_data{format, data, size}; + return *this; +} + +guild &guild::remove_splash() { + this->splash = utility::image_data{}; + return *this; +} + +guild& guild::set_splash(image_type format, std::string_view data) { + this->splash = utility::image_data{format, data}; + return *this; +} + +guild& guild::set_splash(image_type format, const std::byte* data, uint32_t size) { + this->splash = utility::image_data{format, data, size}; + return *this; +} + +guild &guild::remove_icon() { + this->icon = utility::image_data{}; + return *this; +} + +guild& guild::set_icon(image_type format, std::string_view data) { + this->icon = utility::image_data{format, data}; + return *this; +} + +guild& guild::set_icon(image_type format, const std::byte* data, uint32_t size) { + this->icon = utility::image_data{format, data, size}; + return *this; +} + user* guild_member::get_user() const { return find_user(user_id); } @@ -549,6 +609,18 @@ json guild::to_json_impl(bool with_id) const { if (!safety_alerts_channel_id.empty()) { j["safety_alerts_channel_id"] = safety_alerts_channel_id; } + if (banner.is_image_data()) { + j["banner"] = banner.as_image_data().to_nullable_json(); + } + if (discovery_splash.is_image_data()) { + j["discovery_splash"] = discovery_splash.as_image_data().to_nullable_json(); + } + if (splash.is_image_data()) { + j["splash"] = splash.as_image_data().to_nullable_json(); + } + if (icon.is_image_data()) { + j["icon"] = icon.as_image_data().to_nullable_json(); + } return j; } @@ -890,43 +962,55 @@ bool guild::connect_member_voice(snowflake user_id, bool self_mute, bool self_de } std::string guild::get_banner_url(uint16_t size, const image_type format, bool prefer_animated) const { - if (!this->banner.to_string().empty() && this->id) { - return utility::cdn_endpoint_url_hash({ i_jpg, i_png, i_webp, i_gif }, - "banners/" + std::to_string(this->id), this->banner.to_string(), - format, size, prefer_animated, has_animated_banner_hash()); - } else { - return std::string(); + if (this->banner.is_iconhash() && this->id) { + std::string as_str = this->banner.as_iconhash().to_string(); + + if (!as_str.empty()) { + return utility::cdn_endpoint_url_hash({ i_jpg, i_png, i_webp, i_gif }, + "banners/" + std::to_string(this->id), as_str, + format, size, prefer_animated, has_animated_banner_hash()); + } } + return std::string{}; } std::string guild::get_discovery_splash_url(uint16_t size, const image_type format) const { - if (!this->discovery_splash.to_string().empty() && this->id) { - return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp }, - "discovery-splashes/" + std::to_string(this->id) + "/" + this->discovery_splash.to_string(), - format, size); - } else { - return std::string(); + if (this->discovery_splash.is_iconhash() && this->id) { + std::string as_str = this->discovery_splash.as_iconhash().to_string(); + + if (!as_str.empty()) { + return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp }, + "discovery-splashes/" + std::to_string(this->id) + "/" + as_str, + format, size); + } } + return std::string{}; } std::string guild::get_icon_url(uint16_t size, const image_type format, bool prefer_animated) const { - if (!this->icon.to_string().empty() && this->id) { - return utility::cdn_endpoint_url_hash({ i_jpg, i_png, i_webp, i_gif }, - "icons/" + std::to_string(this->id), this->icon.to_string(), - format, size, prefer_animated, has_animated_icon_hash()); - } else { - return std::string(); + if (this->icon.is_iconhash() && this->id) { + std::string as_str = this->icon.as_iconhash().to_string(); + + if (!as_str.empty()) { + return utility::cdn_endpoint_url_hash({ i_jpg, i_png, i_webp, i_gif }, + "icons/" + std::to_string(this->id), as_str, + format, size, prefer_animated, has_animated_icon_hash()); + } } + return std::string{}; } std::string guild::get_splash_url(uint16_t size, const image_type format) const { - if (!this->splash.to_string().empty() && this->id) { - return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp, i_gif }, - "splashes/" + std::to_string(this->id) + "/" + this->splash.to_string(), - format, size); - } else { - return std::string(); + if (this->splash.is_iconhash() && this->id) { + std::string as_str = this->splash.as_iconhash().to_string(); + + if (!as_str.empty()) { + return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp, i_gif }, + "splashes/" + std::to_string(this->id) + "/" + as_str, + format, size); + } } + return std::string{}; } guild_member find_guild_member(const snowflake guild_id, const snowflake user_id) { @@ -939,7 +1023,6 @@ guild_member find_guild_member(const snowflake guild_id, const snowflake user_id throw dpp::cache_exception("Requested member not found in the guild cache!"); } - throw dpp::cache_exception("Requested guild cache not found!"); } diff --git a/src/dpp/role.cpp b/src/dpp/role.cpp index 501288675b..99e87ffec1 100644 --- a/src/dpp/role.cpp +++ b/src/dpp/role.cpp @@ -38,25 +38,6 @@ std::map rolemap = { { 1 << 0, dpp::r_in_prompt }, }; -role::role() : - managed(), - guild_id(0), - colour(0), - position(0), - permissions(0), - flags(0), - integration_id(0), - bot_id(0), - subscription_listing_id(0), - image_data(nullptr) -{ -} - -role::~role() -{ - delete image_data; -} - std::string role::get_mention(const snowflake& id){ return utility::role_mention(id); } @@ -70,7 +51,8 @@ role& role::fill_from_json(snowflake _guild_id, nlohmann::json* j) { this->guild_id = _guild_id; this->name = string_not_null(j, "name"); - this->icon = string_not_null(j, "icon"); + if (auto it = j->find("icon"); it != j->end() && !it->is_null()) + this->icon = utility::iconhash{it->get()}; this->unicode_emoji = string_not_null(j, "unicode_emoji"); this->id = snowflake_not_null(j, "id"); this->colour = int32_not_null(j, "color"); @@ -126,8 +108,8 @@ json role::to_json_impl(bool with_id) const { j["permissions"] = permissions; j["hoist"] = is_hoisted(); j["mentionable"] = is_mentionable(); - if (image_data) { - j["icon"] = *image_data; + if (icon.is_image_data()) { + j["icon"] = icon.as_image_data().to_nullable_json(); } if (!unicode_emoji.empty()) { j["unicode_emoji"] = unicode_emoji; @@ -140,19 +122,13 @@ std::string role::get_mention() const { return utility::role_mention(id); } -role& role::load_image(const std::string &image_blob, const image_type type) { - static const std::map mimetypes = { - { i_gif, "image/gif" }, - { i_jpg, "image/jpeg" }, - { i_png, "image/png" }, - { i_webp, "image/webp" }, - }; - - /* If there's already image data defined, free the old data, to prevent a memory leak */ - delete image_data; - - image_data = new std::string("data:" + mimetypes.find(type)->second + ";base64," + base64_encode((unsigned char const*)image_blob.data(), (unsigned int)image_blob.length())); +role& role::load_image(std::string_view image_blob, const image_type type) { + icon = utility::image_data{type, image_blob}; + return *this; +} +role& role::load_image(const std::byte* data, uint32_t size, const image_type type) { + icon = utility::image_data{type, data, size}; return *this; } @@ -424,13 +400,16 @@ members_container role::get_members() const { } std::string role::get_icon_url(uint16_t size, const image_type format) const { - if (!this->icon.to_string().empty() && this->id) { - return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp }, - "role-icons/" + std::to_string(this->id) + "/" + this->icon.to_string(), - format, size); - } else { - return std::string(); + if (this->icon.is_iconhash() && this->id) { + std::string as_str = this->icon.as_iconhash().to_string(); + + if (!as_str.empty()) { + return utility::cdn_endpoint_url({ i_jpg, i_png, i_webp }, + "role-icons/" + std::to_string(this->id) + "/" + as_str, + format, size); + } } + return std::string{}; } application_role_connection_metadata::application_role_connection_metadata() : key(""), name(""), description("") { diff --git a/src/dpp/scheduled_event.cpp b/src/dpp/scheduled_event.cpp index 6793d3547c..2bd8e03309 100644 --- a/src/dpp/scheduled_event.cpp +++ b/src/dpp/scheduled_event.cpp @@ -109,6 +109,16 @@ scheduled_event& scheduled_event::set_end_time(time_t t) { return *this; } +scheduled_event& scheduled_event::load_image(std::string_view image_blob, const image_type type) { + image = utility::image_data{type, image_blob}; + return *this; +} + +scheduled_event& scheduled_event::load_image(const std::byte* data, uint32_t size, const image_type type) { + image = utility::image_data{type, data, size}; + return *this; +} + scheduled_event& scheduled_event::fill_from_json_impl(const json* j) { set_snowflake_not_null(j, "id", this->id); set_snowflake_not_null(j, "guild_id", this->guild_id); @@ -117,7 +127,8 @@ scheduled_event& scheduled_event::fill_from_json_impl(const json* j) { set_snowflake_not_null(j, "creator_id", this->creator_id); set_string_not_null(j, "name", this->name); set_string_not_null(j, "description", this->description); - set_string_not_null(j, "image", this->image); + if (auto it = j->find("image"); it != j->end() && !it->is_null()) + this->image = utility::iconhash{it->get()}; set_ts_not_null(j, "scheduled_start_time", this->scheduled_start_time); set_ts_not_null(j, "scheduled_end_time", this->scheduled_end_time); this->privacy_level = static_cast(int8_not_null(j, "privacy_level")); @@ -144,8 +155,8 @@ json scheduled_event::to_json_impl(bool with_id) const { if (!this->description.empty()) { j["description"] = this->description; } - if (!this->image.empty()) { - j["image"] = this->image; + if (image.is_image_data()) { + j["image"] = image.as_image_data().to_nullable_json(); } j["privacy_level"] = this->privacy_level; j["status"] = this->status; diff --git a/src/dpp/utility.cpp b/src/dpp/utility.cpp index cb1ed83899..947f665962 100644 --- a/src/dpp/utility.cpp +++ b/src/dpp/utility.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef _WIN32 #include @@ -192,13 +193,9 @@ uint64_t uptime::to_msecs() const { return to_secs() * 1000; } -iconhash::iconhash(uint64_t _first, uint64_t _second) : first(_first), second(_second) { +iconhash::iconhash(uint64_t _first, uint64_t _second) noexcept : first(_first), second(_second) { } -iconhash::iconhash(const iconhash&) = default; - -iconhash::~iconhash() = default; - void iconhash::set(const std::string &hash) { std::string clean_hash(hash); if (hash.empty()) { // Clear values if empty hash @@ -227,7 +224,7 @@ iconhash& iconhash::operator=(const std::string &assignment) { return *this; } -bool iconhash::operator==(const iconhash& other) const { +bool iconhash::operator==(const iconhash& other) const noexcept { return other.first == first && other.second == second; } @@ -239,6 +236,125 @@ std::string iconhash::to_string() const { } } +namespace { + std::unique_ptr copy_data(const std::byte* data, size_t size) { + if (!data) + return nullptr; + std::unique_ptr ret = std::make_unique(size); + + std::copy_n(data, size, ret.get()); + return ret; + } + + template + std::unique_ptr copy_data(Range&& range) { + return copy_data(reinterpret_cast(std::data(range)), std::size(range)); + } +} + +image_data::image_data(const image_data& rhs) : data{copy_data(rhs.data.get(), rhs.size)}, size{rhs.size}, type{rhs.type} { +} + +image_data::image_data(image_type format, std::string_view str) : data{copy_data(str)}, size{static_cast(str.size())}, type{format} { +} + +image_data::image_data(image_type format, const std::byte* data, uint32_t byte_size) : data{copy_data(data, byte_size)}, size{byte_size}, type{format} { +} + +image_data& image_data::operator=(const image_data& rhs) { + data = copy_data(rhs.data.get(), rhs.size); + size = rhs.size; + type = rhs.type; + return *this; +} + +void image_data::set(image_type format, std::string_view bytes) { + data = copy_data(bytes); + size = static_cast(bytes.size()); +} + +void image_data::set(image_type format, const std::byte* bytes, uint32_t byte_size) { + data = copy_data(bytes, size); + size = static_cast(byte_size); +} + +std::string image_data::base64_encode() const { + return dpp::base64_encode(reinterpret_cast(data.get()), size); +} + +std::string image_data::get_file_extension() const { + return utility::file_extension(type); +} + +std::string image_data::get_mime_type() const { + return utility::mime_type(type); +} + +bool image_data::empty() const noexcept { + return (size == 0); +} + +json image_data::to_nullable_json() const { + if (empty()) { + return nullptr; + } + else { + return "data:" + get_mime_type() + ";base64," + base64_encode(); + } +} + +bool icon::is_iconhash() const { + return std::holds_alternative(hash_or_data); +} + +iconhash& icon::as_iconhash() & { + return std::get(hash_or_data); +} + +const iconhash& icon::as_iconhash() const& { + return std::get(hash_or_data); +} + +iconhash&& icon::as_iconhash() && { + return std::move(std::get(hash_or_data)); +} + +icon& icon::operator=(const iconhash& hash) { + hash_or_data = hash; + return *this; +} + +icon& icon::operator=(iconhash&& hash) noexcept { + hash_or_data = std::move(hash); + return *this; +} + +icon& icon::operator=(const image_data& img) { + hash_or_data = img; + return *this; +} + +icon& icon::operator=(image_data&& img) noexcept { + hash_or_data = std::move(img); + return *this; +} + +bool icon::is_image_data() const { + return std::holds_alternative(hash_or_data); +} + +image_data& icon::as_image_data() & { + return std::get(hash_or_data); +} + +const image_data& icon::as_image_data() const& { + return std::get(hash_or_data); +} + +image_data&& icon::as_image_data() && { + return std::move(std::get(hash_or_data)); +} + std::string debug_dump(uint8_t* data, size_t length) { std::ostringstream out; size_t addr = (size_t)data; diff --git a/src/unittest/test.cpp b/src/unittest/test.cpp index 6775452153..fb599462a1 100644 --- a/src/unittest/test.cpp +++ b/src/unittest/test.cpp @@ -912,7 +912,7 @@ Markdown lol \\|\\|spoiler\\|\\| \\~\\~strikethrough\\~\\~ \\`small \\*code\\* b coro_offline_tests(); } - std::vector test_image = load_test_image(); + std::vector dpp_logo = load_data("DPP-Logo.png"); set_test(PRESENCE, false); set_test(CLUSTER, false); @@ -959,6 +959,40 @@ Markdown lol \\|\\|spoiler\\|\\| \\~\\~strikethrough\\~\\~ \\`small \\*code\\* b bot.on_voice_receive_combined([&](const auto& event) { }); + bot.on_guild_create([&](const dpp::guild_create_t& event) { + dpp::guild *g = event.created; + + if (g->id == TEST_GUILD_ID) { + start_test(GUILD_EDIT); + g->set_icon(dpp::i_png, dpp_logo.data(), static_cast(dpp_logo.size())); + bot.guild_edit(*g, [&bot](const dpp::confirmation_callback_t &result) { + if (result.is_error()) { + set_status(GUILD_EDIT, ts_failed, "guild_edit 1 errored:\n" + result.get_error().human_readable); + return; + } + dpp::guild g = result.get(); + + if (g.get_icon_url().empty()) { + set_status(GUILD_EDIT, ts_failed, "icon not set or not retrieved"); + return; + } + g.remove_icon(); + bot.guild_edit(g, [&bot](const dpp::confirmation_callback_t &result) { + if (result.is_error()) { + set_status(GUILD_EDIT, ts_failed, "guild_edit 2 errored:\n" + result.get_error().human_readable); + return; + } + const dpp::guild &g = result.get(); + if (!g.get_icon_url().empty()) { + set_status(GUILD_EDIT, ts_failed, "icon not removed"); + return; + } + set_status(GUILD_EDIT, ts_success); + }); + }); + } + }); + std::promise ready_promise; std::future ready_future = ready_promise.get_future(); bot.on_ready([&](const dpp::ready_t & event) { @@ -989,7 +1023,7 @@ Markdown lol \\|\\|spoiler\\|\\| \\~\\~strikethrough\\~\\~ \\`small \\*code\\* b set_test(MESSAGERECEIVE, false); test_message.add_file("no-mime", "test"); test_message.add_file("test.txt", "test", "text/plain"); - test_message.add_file("test.png", std::string{test_image.begin(), test_image.end()}, "image/png"); + test_message.add_file("test.png", std::string{reinterpret_cast(dpp_logo.data()), dpp_logo.size()}, "image/png"); bot.message_create(test_message, [&bot](const dpp::confirmation_callback_t &callback) { if (!callback.is_error()) { set_test(MESSAGECREATE, true); diff --git a/src/unittest/test.h b/src/unittest/test.h index 7b2ee53e8b..9058632fd8 100644 --- a/src/unittest/test.h +++ b/src/unittest/test.h @@ -148,6 +148,7 @@ DPP_TEST(FORUM_CHANNEL_GET, "retrieve the created forum channel", tf_online); DPP_TEST(FORUM_CHANNEL_DELETE, "delete the created forum channel", tf_online); DPP_TEST(ERRORS, "Human readable error translation", tf_offline); +DPP_TEST(GUILD_EDIT, "cluster::guild_edit", tf_online); DPP_TEST(GUILD_BAN_CREATE, "cluster::guild_ban_add ban three deleted discord accounts", tf_online); DPP_TEST(GUILD_BAN_GET, "cluster::guild_get_ban getting one of the banned accounts", tf_online); DPP_TEST(GUILD_BANS_GET, "cluster::guild_get_bans get bans using the after-parameter", tf_online); @@ -471,11 +472,11 @@ int test_summary(); std::vector load_test_audio(); /** - * @brief Load test image for the attachment tests + * @brief Load bytes from file * - * @return std::vector data and size for test image + * @return std::vector File data */ -std::vector load_test_image(); +std::vector load_data(const std::string& file); /** * @brief Get the token from the environment variable DPP_UNIT_TEST_TOKEN diff --git a/src/unittest/unittest.cpp b/src/unittest/unittest.cpp index bd7c682f49..65059ad3fc 100644 --- a/src/unittest/unittest.cpp +++ b/src/unittest/unittest.cpp @@ -147,10 +147,10 @@ std::vector load_test_audio() { return testaudio; } -std::vector load_test_image() { - std::vector testimage; +std::vector load_data(const std::string& file) { + std::vector testimage; std::string dir = get_testdata_dir(); - std::ifstream input (dir + "DPP-Logo.png", std::ios::in|std::ios::binary|std::ios::ate); + std::ifstream input (dir + file, std::ios::in|std::ios::binary|std::ios::ate); if (input.is_open()) { size_t testimage_size = input.tellg(); testimage.resize(testimage_size); @@ -159,7 +159,7 @@ std::vector load_test_image() { input.close(); } else { - std::cout << "ERROR: Can't load " + dir + "DPP-Logo.png\n"; + std::cout << "ERROR: Can't load " + dir + file + "\n"; exit(1); } return testimage; From b2fff129a2184abbefe65936bf2c3f1b6d1ded34 Mon Sep 17 00:00:00 2001 From: Miuna <809711+Mishura4@users.noreply.github.com> Date: Fri, 27 Oct 2023 09:16:15 -0400 Subject: [PATCH 04/11] ci: fix vcpkg surely (#973) --- library-vcpkg/CMakeLists.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/library-vcpkg/CMakeLists.txt b/library-vcpkg/CMakeLists.txt index 06bd7e6076..dded1b52a5 100644 --- a/library-vcpkg/CMakeLists.txt +++ b/library-vcpkg/CMakeLists.txt @@ -34,13 +34,15 @@ if(WIN32) endif() target_compile_options( - "${LIB_NAME}" PUBLIC - "$<$:/bigobj>" - "$<$:$<$:/sdl;/std:c++17;/Od;/DEBUG;/MP;/DFD_SETSIZE=1024;/Zc:preprocessor>>" - "$<$:$<$:/std:c++17;/O2;/Oi;/Oy;/GL;/Gy;/sdl;/MP;/DFD_SETSIZE=1024;/Zc:preprocessor>>" - "$<$:$<$:-std=c++17;-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-g;-Og;-fPIC>>" - "$<$:$<$:-std=c++17;-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-O3;-fPIC>>" - "${AVX_FLAG}" + "${LIB_NAME}" + PUBLIC + "$<$:/bigobj;/Zc:preprocessor>" + PRIVATE + "$<$:$<$:/sdl;/Od;/DEBUG;/MP;/DFD_SETSIZE=1024>>" + "$<$:$<$:/O2;/Oi;/Oy;/GL;/Gy;/sdl;/MP;/DFD_SETSIZE=1024>>" + "$<$:$<$:-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-g;-Og;-fPIC>>" + "$<$:$<$:-Wall;-Wempty-body;-Wno-psabi;-Wunknown-pragmas;-Wignored-qualifiers;-Wimplicit-fallthrough;-Wmissing-field-initializers;-Wsign-compare;-Wtype-limits;-Wuninitialized;-Wshift-negative-value;-pthread;-O3;-fPIC>>" + "${AVX_FLAG}" ) target_compile_features( From 3b82bced5aa5cacae72c758c1e95f5f43d8ae37e Mon Sep 17 00:00:00 2001 From: DPP VCPKG Bot Date: Fri, 27 Oct 2023 17:10:54 +0000 Subject: [PATCH 05/11] [bot] VCPKG info update [skip ci] --- vcpkg/ports/dpp/portfile.cmake | 2 +- vcpkg/ports/dpp/vcpkg.json | 2 +- vcpkg/versions/baseline.json | 940 ++++++++++++++++++--------------- vcpkg/versions/d-/dpp.json | 2 +- 4 files changed, 517 insertions(+), 429 deletions(-) diff --git a/vcpkg/ports/dpp/portfile.cmake b/vcpkg/ports/dpp/portfile.cmake index a97ecb58d7..a3730c8325 100644 --- a/vcpkg/ports/dpp/portfile.cmake +++ b/vcpkg/ports/dpp/portfile.cmake @@ -2,7 +2,7 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO brainboxdotcc/DPP REF "v${VERSION}" - SHA512 5fa1e807eaeb8ecf53d55e537a804ae1135018008d7b6f4e42225ee21ca975b7f3662f60777527395f8f0672a66077f2a3e95c9a3074f819187921e114ac03f5 + SHA512 b26ac0aeff359737498394f832c1b5ac918e662b5a290ccc9a5e6131c743d85fa6f6cf3984c709381c97430195015399d530f29ce733b93a02e3c0ea36b8350b ) vcpkg_cmake_configure( diff --git a/vcpkg/ports/dpp/vcpkg.json b/vcpkg/ports/dpp/vcpkg.json index 89c5068980..31ca7f8bd5 100644 --- a/vcpkg/ports/dpp/vcpkg.json +++ b/vcpkg/ports/dpp/vcpkg.json @@ -1,6 +1,6 @@ { "name": "dpp", - "version": "10.0.26", + "version": "10.0.27", "description": "D++ Extremely Lightweight C++ Discord Library.", "homepage": "https://dpp.dev/", "license": "Apache-2.0", diff --git a/vcpkg/versions/baseline.json b/vcpkg/versions/baseline.json index a778299253..c0edb41853 100644 --- a/vcpkg/versions/baseline.json +++ b/vcpkg/versions/baseline.json @@ -41,7 +41,7 @@ "port-version": 0 }, "ade": { - "baseline": "0.1.2c", + "baseline": "0.1.2d", "port-version": 0 }, "adios2": { @@ -93,8 +93,8 @@ "port-version": 1 }, "alsa": { - "baseline": "1.2.8", - "port-version": 1 + "baseline": "1.2.10", + "port-version": 0 }, "amd-adl-sdk": { "baseline": "17.1", @@ -132,6 +132,10 @@ "baseline": "chromium_5414", "port-version": 7 }, + "ankurvdev-embedresource": { + "baseline": "0.0.10", + "port-version": 0 + }, "annoy": { "baseline": "1.17.2", "port-version": 0 @@ -254,7 +258,7 @@ }, "asiosdk": { "baseline": "2.3.3", - "port-version": 6 + "port-version": 7 }, "asmjit": { "baseline": "2023-03-25", @@ -266,7 +270,7 @@ }, "assimp": { "baseline": "5.3.1", - "port-version": 0 + "port-version": 2 }, "async-mqtt": { "baseline": "2.0.0", @@ -296,9 +300,13 @@ "baseline": "2.36.1", "port-version": 2 }, + "atl": { + "baseline": "0", + "port-version": 0 + }, "atlmfc": { "baseline": "0", - "port-version": 2 + "port-version": 3 }, "atomic-queue": { "baseline": "2021-05-03", @@ -398,10 +406,10 @@ }, "aws-sdk-cpp": { "baseline": "1.11.169", - "port-version": 0 + "port-version": 2 }, "azmq": { - "baseline": "1.0.3", + "baseline": "2023-03-23", "port-version": 0 }, "azure-c-shared-utility": { @@ -409,12 +417,12 @@ "port-version": 0 }, "azure-core-amqp-cpp": { - "baseline": "1.0.0-beta.3", - "port-version": 1 + "baseline": "1.0.0-beta.4", + "port-version": 0 }, "azure-core-cpp": { - "baseline": "1.10.2", - "port-version": 5 + "baseline": "1.10.3", + "port-version": 1 }, "azure-core-tracing-opentelemetry-cpp": { "baseline": "1.0.0-beta.4", @@ -436,9 +444,13 @@ "baseline": "2022-01-21", "port-version": 1 }, + "azure-messaging-eventhubs-checkpointstore-blob-cpp": { + "baseline": "1.0.0-beta.1", + "port-version": 0 + }, "azure-messaging-eventhubs-cpp": { - "baseline": "1.0.0-beta.2", - "port-version": 1 + "baseline": "1.0.0-beta.3", + "port-version": 0 }, "azure-security-attestation-cpp": { "baseline": "1.1.0", @@ -505,12 +517,12 @@ "port-version": 1 }, "baresip-libre": { - "baseline": "3.2.0", - "port-version": 2 + "baseline": "3.4.0", + "port-version": 0 }, "basisu": { - "baseline": "1.11", - "port-version": 7 + "baseline": "1.16.4", + "port-version": 0 }, "bcg729": { "baseline": "1.1.1", @@ -548,10 +560,18 @@ "baseline": "4.8.30", "port-version": 9 }, + "better-enums": { + "baseline": "0.11.3", + "port-version": 0 + }, "bext-di": { "baseline": "1.2.0", "port-version": 1 }, + "bext-mp": { + "baseline": "2023-03-02", + "port-version": 0 + }, "bext-sml": { "baseline": "1.1.5", "port-version": 0 @@ -565,11 +585,11 @@ "port-version": 2 }, "bext-wintls": { - "baseline": "0.9.5", + "baseline": "0.9.7", "port-version": 0 }, "bfgroup-lyra": { - "baseline": "1.6", + "baseline": "1.6.1", "port-version": 0 }, "bgfx": { @@ -910,7 +930,7 @@ }, "boost-iostreams": { "baseline": "1.83.0", - "port-version": 0 + "port-version": 1 }, "boost-iterator": { "baseline": "1.83.0", @@ -1273,12 +1293,12 @@ "port-version": 0 }, "boringssl": { - "baseline": "2023-09-25", + "baseline": "2023-10-13", "port-version": 0 }, "botan": { - "baseline": "2.19.3", - "port-version": 2 + "baseline": "3.1.1", + "port-version": 0 }, "box2d": { "baseline": "2.4.1", @@ -1290,7 +1310,7 @@ }, "breakpad": { "baseline": "2022-07-12", - "port-version": 5 + "port-version": 6 }, "brigand": { "baseline": "1.3.0", @@ -1298,7 +1318,7 @@ }, "brotli": { "baseline": "1.1.0", - "port-version": 0 + "port-version": 1 }, "brpc": { "baseline": "1.6.0", @@ -1381,7 +1401,7 @@ "port-version": 0 }, "caf": { - "baseline": "0.19.1", + "baseline": "0.19.3", "port-version": 0 }, "caffe2": { @@ -1404,6 +1424,10 @@ "baseline": "1.6.2", "port-version": 0 }, + "canvas-ity": { + "baseline": "1.0", + "port-version": 0 + }, "capnproto": { "baseline": "1.0.1", "port-version": 0 @@ -1506,7 +1530,7 @@ }, "chakracore": { "baseline": "2022-11-09", - "port-version": 4 + "port-version": 5 }, "charls": { "baseline": "2.4.2", @@ -1518,7 +1542,7 @@ }, "check": { "baseline": "0.15.2", - "port-version": 4 + "port-version": 5 }, "chipmunk": { "baseline": "7.0.3", @@ -1557,8 +1581,8 @@ "port-version": 3 }, "civetweb": { - "baseline": "1.15", - "port-version": 4 + "baseline": "1.16", + "port-version": 1 }, "cjson": { "baseline": "1.7.16", @@ -1597,7 +1621,7 @@ "port-version": 0 }, "clickhouse-cpp": { - "baseline": "2.2.1", + "baseline": "2.4.0", "port-version": 0 }, "clipboardxx": { @@ -1629,8 +1653,8 @@ "port-version": 0 }, "cmark": { - "baseline": "0.30.1", - "port-version": 1 + "baseline": "0.30.3", + "port-version": 0 }, "cmcstl2": { "baseline": "2019-07-20", @@ -1697,8 +1721,8 @@ "port-version": 10 }, "colmap": { - "baseline": "2023-03-12", - "port-version": 1 + "baseline": "2023-10-01", + "port-version": 0 }, "color-console": { "baseline": "2022-03-20", @@ -1745,7 +1769,7 @@ "port-version": 3 }, "continuable": { - "baseline": "4.2.0", + "baseline": "4.2.2", "port-version": 0 }, "convectionkernels": { @@ -1762,10 +1786,10 @@ }, "corrade": { "baseline": "2020.06", - "port-version": 6 + "port-version": 7 }, "cpp-async": { - "baseline": "1.0.1", + "baseline": "1.1.0", "port-version": 0 }, "cpp-base64": { @@ -1773,7 +1797,7 @@ "port-version": 0 }, "cpp-httplib": { - "baseline": "0.14.0", + "baseline": "0.14.1", "port-version": 0 }, "cpp-ipc": { @@ -1789,13 +1813,17 @@ "port-version": 9 }, "cpp-peglib": { - "baseline": "1.3.10", + "baseline": "1.8.5", "port-version": 0 }, "cpp-redis": { "baseline": "4.3.1", "port-version": 5 }, + "cpp-sort": { + "baseline": "1.15.0", + "port-version": 0 + }, "cpp-taskflow": { "baseline": "2.6.0", "port-version": 2 @@ -1820,6 +1848,10 @@ "baseline": "2022-10-25", "port-version": 0 }, + "cppdap": { + "baseline": "1.58.0-a", + "port-version": 0 + }, "cppfs": { "baseline": "1.3.0", "port-version": 3 @@ -1838,7 +1870,7 @@ }, "cppmicroservices": { "baseline": "3.7.6", - "port-version": 0 + "port-version": 1 }, "cpprestsdk": { "baseline": "2.10.18", @@ -1850,7 +1882,7 @@ }, "cpptoml": { "baseline": "0.1.1", - "port-version": 3 + "port-version": 4 }, "cppunit": { "baseline": "1.15.1", @@ -1873,8 +1905,8 @@ "port-version": 0 }, "cpr": { - "baseline": "1.10.2+3", - "port-version": 0 + "baseline": "1.10.5", + "port-version": 1 }, "cpu-features": { "baseline": "0.9.0", @@ -1921,7 +1953,7 @@ "port-version": 0 }, "cryptopp": { - "baseline": "8.8.0", + "baseline": "8.9.0", "port-version": 0 }, "cserialport": { @@ -1957,12 +1989,12 @@ "port-version": 0 }, "cub": { - "baseline": "1.16.0", + "baseline": "2.1.0", "port-version": 0 }, "cubeb": { - "baseline": "2022-07-22", - "port-version": 0 + "baseline": "2023-09-26", + "port-version": 1 }, "cuda": { "baseline": "10.1", @@ -1977,7 +2009,7 @@ "port-version": 8 }, "curl": { - "baseline": "8.3.0", + "baseline": "8.4.0", "port-version": 0 }, "curlpp": { @@ -1993,7 +2025,7 @@ "port-version": 2 }, "cwalk": { - "baseline": "1.2.6", + "baseline": "1.2.7", "port-version": 0 }, "cxxgraph": { @@ -2045,8 +2077,8 @@ "port-version": 5 }, "dav1d": { - "baseline": "1.2.1", - "port-version": 0 + "baseline": "1.3.0", + "port-version": 1 }, "daw-header-libraries": { "baseline": "2.96.1", @@ -2065,7 +2097,7 @@ "port-version": 0 }, "dbg-macro": { - "baseline": "0.5.0", + "baseline": "0.5.1", "port-version": 0 }, "dbghelp": { @@ -2081,8 +2113,8 @@ "port-version": 3 }, "dbus": { - "baseline": "1.15.2", - "port-version": 0 + "baseline": "1.15.8", + "port-version": 1 }, "dcmtk": { "baseline": "3.6.7", @@ -2145,8 +2177,8 @@ "port-version": 1 }, "dirent": { - "baseline": "1.23.2", - "port-version": 3 + "baseline": "1.24", + "port-version": 0 }, "discord-game-sdk": { "baseline": "3.2.1", @@ -2157,12 +2189,12 @@ "port-version": 3 }, "discordcoreapi": { - "baseline": "2.0", + "baseline": "2.0.1", "port-version": 0 }, "discount": { - "baseline": "2.2.6", - "port-version": 3 + "baseline": "3.0.0a", + "port-version": 0 }, "discreture": { "baseline": "2020-01-29", @@ -2173,8 +2205,8 @@ "port-version": 0 }, "dlfcn-win32": { - "baseline": "1.3.1", - "port-version": 1 + "baseline": "1.4.1", + "port-version": 0 }, "dlib": { "baseline": "19.24", @@ -2217,8 +2249,8 @@ "port-version": 0 }, "drogon": { - "baseline": "1.8.4", - "port-version": 4 + "baseline": "1.8.7", + "port-version": 1 }, "dstorage": { "baseline": "1.2.0", @@ -2273,8 +2305,8 @@ "port-version": 0 }, "eastl": { - "baseline": "3.18.00", - "port-version": 3 + "baseline": "3.21.12", + "port-version": 0 }, "easycl": { "baseline": "0.3", @@ -2289,8 +2321,8 @@ "port-version": 7 }, "easyloggingpp": { - "baseline": "9.97.0", - "port-version": 4 + "baseline": "9.97.1", + "port-version": 0 }, "eathread": { "baseline": "1.32.09", @@ -2368,6 +2400,10 @@ "baseline": "1.3.17", "port-version": 2 }, + "enkits": { + "baseline": "1.11", + "port-version": 0 + }, "ensmallen": { "baseline": "2.19.1", "port-version": 0 @@ -2429,7 +2465,7 @@ "port-version": 2 }, "ezc3d": { - "baseline": "1.4.7", + "baseline": "1.5.0", "port-version": 0 }, "ezfoundation": { @@ -2457,8 +2493,8 @@ "port-version": 0 }, "fann": { - "baseline": "2.2.0", - "port-version": 3 + "baseline": "2023-01-26", + "port-version": 0 }, "farmhash": { "baseline": "1.1", @@ -2502,7 +2538,7 @@ }, "fastrtps": { "baseline": "2.7.0", - "port-version": 3 + "port-version": 4 }, "fawdlstty-libfv": { "baseline": "0.0.8", @@ -2513,7 +2549,7 @@ "port-version": 0 }, "fbthrift": { - "baseline": "2023.07.03.00", + "baseline": "2023.10.02.00", "port-version": 0 }, "fcl": { @@ -2530,7 +2566,7 @@ }, "ffmpeg": { "baseline": "6.0", - "port-version": 0 + "port-version": 2 }, "ffnvcodec": { "baseline": "11.1.5.2", @@ -2557,7 +2593,7 @@ "port-version": 0 }, "fizz": { - "baseline": "2023.07.03.00", + "baseline": "2023.10.02.00", "port-version": 0 }, "flann": { @@ -2597,12 +2633,12 @@ "port-version": 0 }, "flecs": { - "baseline": "3.2.4", + "baseline": "3.2.8", "port-version": 0 }, "flint": { - "baseline": "2.8.0", - "port-version": 2 + "baseline": "2.9.0", + "port-version": 0 }, "fltk": { "baseline": "1.3.8", @@ -2613,7 +2649,7 @@ "port-version": 0 }, "fluidsynth": { - "baseline": "2.3.3", + "baseline": "2.3.4", "port-version": 0 }, "flux": { @@ -2637,7 +2673,7 @@ "port-version": 0 }, "folly": { - "baseline": "2023.07.03.00", + "baseline": "2023.10.02.00", "port-version": 0 }, "font-chef": { @@ -2650,7 +2686,7 @@ }, "fontconfig": { "baseline": "2.14.2", - "port-version": 0 + "port-version": 1 }, "foonathan-lexy": { "baseline": "2022.12.1", @@ -2658,7 +2694,7 @@ }, "foonathan-memory": { "baseline": "0.7.3", - "port-version": 0 + "port-version": 1 }, "forge": { "baseline": "1.0.8", @@ -2693,7 +2729,7 @@ "port-version": 7 }, "freerdp": { - "baseline": "2.11.1", + "baseline": "2.11.2", "port-version": 0 }, "freetds": { @@ -2721,7 +2757,7 @@ "port-version": 0 }, "frugally-deep": { - "baseline": "0.15.19-p0", + "baseline": "0.15.24", "port-version": 0 }, "fruit": { @@ -2741,8 +2777,8 @@ "port-version": 0 }, "functions-framework-cpp": { - "baseline": "1.1.0", - "port-version": 4 + "baseline": "1.2.0", + "port-version": 0 }, "fuzzylite": { "baseline": "6.0", @@ -2785,20 +2821,20 @@ "port-version": 4 }, "gaussianlib": { - "baseline": "2019-08-04", - "port-version": 2 + "baseline": "2023-02-17", + "port-version": 0 }, "gazebo": { "baseline": "2022-01-20", "port-version": 5 }, "gcem": { - "baseline": "1.16.0", + "baseline": "1.17.0", "port-version": 0 }, "gdal": { "baseline": "3.7.2", - "port-version": 0 + "port-version": 1 }, "gdcm": { "baseline": "3.0.22", @@ -2877,8 +2913,8 @@ "port-version": 3 }, "ginkgo": { - "baseline": "1.4.0", - "port-version": 2 + "baseline": "1.6.0", + "port-version": 0 }, "gklib": { "baseline": "2022-07-27", @@ -2897,7 +2933,7 @@ "port-version": 0 }, "glaze": { - "baseline": "1.4.3", + "baseline": "1.5.4", "port-version": 0 }, "glbinding": { @@ -2917,7 +2953,7 @@ "port-version": 2 }, "glib": { - "baseline": "2.76.5", + "baseline": "2.78.0", "port-version": 0 }, "glibmm": { @@ -2925,8 +2961,8 @@ "port-version": 1 }, "glm": { - "baseline": "2023-06-08", - "port-version": 0 + "baseline": "0.9.9.8", + "port-version": 2 }, "globjects": { "baseline": "1.1.0", @@ -2945,7 +2981,7 @@ "port-version": 2 }, "glslang": { - "baseline": "12.2.0", + "baseline": "13.0.0", "port-version": 1 }, "glui": { @@ -2957,8 +2993,8 @@ "port-version": 6 }, "gmmlib": { - "baseline": "21.3.2", - "port-version": 1 + "baseline": "22.3.12", + "port-version": 0 }, "gmp": { "baseline": "6.2.1", @@ -2973,8 +3009,8 @@ "port-version": 5 }, "google-cloud-cpp": { - "baseline": "2.15.1", - "port-version": 0 + "baseline": "2.17.0", + "port-version": 1 }, "google-cloud-cpp-common": { "baseline": "alias", @@ -2997,7 +3033,7 @@ "port-version": 1 }, "gpgme": { - "baseline": "1.18.0", + "baseline": "1.22.0", "port-version": 0 }, "gpgmm": { @@ -3030,7 +3066,7 @@ }, "graphviz": { "baseline": "9.0.0", - "port-version": 1 + "port-version": 2 }, "greatest": { "baseline": "1.5.0", @@ -3062,7 +3098,7 @@ }, "gstreamer": { "baseline": "1.22.5", - "port-version": 0 + "port-version": 4 }, "gtest": { "baseline": "1.14.0", @@ -3086,7 +3122,7 @@ }, "gts": { "baseline": "0.7.6", - "port-version": 7 + "port-version": 8 }, "gtsam": { "baseline": "4.2a9", @@ -3113,8 +3149,8 @@ "port-version": 6 }, "gz-cmake3": { - "baseline": "3.0.1", - "port-version": 0 + "baseline": "3.4.1", + "port-version": 1 }, "gz-common5": { "baseline": "5.4.1", @@ -3125,8 +3161,8 @@ "port-version": 0 }, "gz-math7": { - "baseline": "7.0.2", - "port-version": 1 + "baseline": "7.3.0", + "port-version": 0 }, "gz-msgs9": { "baseline": "9.5.0", @@ -3162,7 +3198,7 @@ }, "halide": { "baseline": "16.0.0", - "port-version": 0 + "port-version": 1 }, "happly": { "baseline": "2021-03-19", @@ -3174,7 +3210,7 @@ }, "harfbuzz": { "baseline": "8.2.1", - "port-version": 0 + "port-version": 3 }, "hash-library": { "baseline": "8", @@ -3193,8 +3229,8 @@ "port-version": 0 }, "hdf5": { - "baseline": "1.14.0", - "port-version": 1 + "baseline": "1.14.2", + "port-version": 0 }, "healpix": { "baseline": "1.12.10", @@ -3209,7 +3245,7 @@ "port-version": 0 }, "hffix": { - "baseline": "1.2.1", + "baseline": "1.3.0", "port-version": 0 }, "hfsm2": { @@ -3221,12 +3257,12 @@ "port-version": 0 }, "highfive": { - "baseline": "2.6.2", - "port-version": 2 + "baseline": "2.7.1", + "port-version": 1 }, "highs": { - "baseline": "1.5.1", - "port-version": 0 + "baseline": "1.6.0", + "port-version": 1 }, "highway": { "baseline": "1.0.7", @@ -3261,11 +3297,11 @@ "port-version": 3 }, "hunspell": { - "baseline": "1.7.1", - "port-version": 4 + "baseline": "1.7.2", + "port-version": 0 }, "hwloc": { - "baseline": "2.9.0", + "baseline": "2.9.3", "port-version": 0 }, "hyperscan": { @@ -3277,8 +3313,8 @@ "port-version": 0 }, "hypre": { - "baseline": "2.23.0", - "port-version": 0 + "baseline": "2.29.0", + "port-version": 1 }, "iceoryx": { "baseline": "2.0.3", @@ -3297,8 +3333,8 @@ "port-version": 0 }, "idyntree": { - "baseline": "9.0.0", - "port-version": 1 + "baseline": "10.0.0", + "port-version": 0 }, "if97": { "baseline": "2.1.3", @@ -3413,7 +3449,7 @@ "port-version": 0 }, "imgui-node-editor": { - "baseline": "0.9.2", + "baseline": "0.9.3", "port-version": 0 }, "imgui-sfml": { @@ -3425,8 +3461,8 @@ "port-version": 1 }, "immer": { - "baseline": "0.8.0", - "port-version": 1 + "baseline": "0.8.1", + "port-version": 0 }, "implot": { "baseline": "0.16", @@ -3493,12 +3529,12 @@ "port-version": 0 }, "ismrmrd": { - "baseline": "1.13.2", + "baseline": "1.13.7", "port-version": 0 }, "itk": { - "baseline": "5.2.1", - "port-version": 5 + "baseline": "5.3rc02", + "port-version": 0 }, "itpp": { "baseline": "4.3.1", @@ -3509,8 +3545,8 @@ "port-version": 2 }, "jack2": { - "baseline": "1.9.21", - "port-version": 1 + "baseline": "1.9.22", + "port-version": 0 }, "jaeger-client-cpp": { "baseline": "0.7.0", @@ -3525,8 +3561,8 @@ "port-version": 2 }, "jbig2dec": { - "baseline": "0.19", - "port-version": 3 + "baseline": "0.20", + "port-version": 0 }, "jbigkit": { "baseline": "2.1", @@ -3581,15 +3617,15 @@ "port-version": 5 }, "jsoncons": { - "baseline": "0.170.2", + "baseline": "0.171.0", "port-version": 0 }, "jsoncpp": { "baseline": "1.9.5", - "port-version": 0 + "port-version": 1 }, "jsonifier": { - "baseline": "0.9.8", + "baseline": "0.9.9", "port-version": 0 }, "jsonnet": { @@ -3625,7 +3661,7 @@ "port-version": 0 }, "kdbindings": { - "baseline": "1.0.0", + "baseline": "1.0.3", "port-version": 0 }, "kddockwidgets": { @@ -3633,8 +3669,12 @@ "port-version": 0 }, "kealib": { - "baseline": "1.4.14", - "port-version": 1 + "baseline": "1.5.2", + "port-version": 0 + }, + "keccak-tiny": { + "baseline": "2014-09-08", + "port-version": 0 }, "kenlm": { "baseline": "20230531", @@ -3642,7 +3682,7 @@ }, "keystone": { "baseline": "0.9.2", - "port-version": 2 + "port-version": 3 }, "kf5archive": { "baseline": "5.98.0", @@ -3762,7 +3802,7 @@ }, "kf5solid": { "baseline": "5.98.0", - "port-version": 2 + "port-version": 3 }, "kf5sonnet": { "baseline": "5.98.0", @@ -3821,11 +3861,11 @@ "port-version": 1 }, "krabsetw": { - "baseline": "4.1.18", - "port-version": 1 + "baseline": "4.3.1", + "port-version": 0 }, "ktx": { - "baseline": "4.1.0", + "baseline": "4.3.0-alpha3", "port-version": 0 }, "kubazip": { @@ -3909,15 +3949,15 @@ "port-version": 3 }, "leveldb": { - "baseline": "1.22", - "port-version": 7 + "baseline": "1.23", + "port-version": 0 }, "levmar": { "baseline": "2.6", "port-version": 3 }, "lexbor": { - "baseline": "2.2.0", + "baseline": "2.3.0", "port-version": 0 }, "libaaplus": { @@ -3953,7 +3993,7 @@ "port-version": 0 }, "libassuan": { - "baseline": "2.5.5", + "baseline": "2.5.6", "port-version": 0 }, "libatomic-ops": { @@ -3961,8 +4001,8 @@ "port-version": 0 }, "libavif": { - "baseline": "0.11.1", - "port-version": 2 + "baseline": "1.0.1", + "port-version": 0 }, "libb2": { "baseline": "0.98.1", @@ -3990,7 +4030,7 @@ }, "libcap": { "baseline": "2.69", - "port-version": 1 + "port-version": 2 }, "libcbor": { "baseline": "0.10.2", @@ -4006,7 +4046,7 @@ }, "libconfig": { "baseline": "1.7.3", - "port-version": 3 + "port-version": 4 }, "libconfuse": { "baseline": "2019-07-14", @@ -4016,6 +4056,10 @@ "baseline": "2.2.0", "port-version": 0 }, + "libcoro": { + "baseline": "0.9", + "port-version": 0 + }, "libcorrect": { "baseline": "2018-10-11", "port-version": 0 @@ -4097,7 +4141,7 @@ "port-version": 2 }, "libenvpp": { - "baseline": "1.0.0", + "baseline": "1.3.0", "port-version": 0 }, "libepoxy": { @@ -4113,11 +4157,11 @@ "port-version": 0 }, "libeventheader-decode": { - "baseline": "1.1.0", + "baseline": "1.2.1", "port-version": 0 }, "libeventheader-tracepoint": { - "baseline": "1.1.0", + "baseline": "1.2.1", "port-version": 0 }, "libevhtp": { @@ -4134,14 +4178,14 @@ }, "libffi": { "baseline": "3.4.4", - "port-version": 5 + "port-version": 6 }, "libfido2": { "baseline": "1.13.0", "port-version": 0 }, "libflac": { - "baseline": "1.4.2", + "baseline": "1.4.3", "port-version": 0 }, "libfontenc": { @@ -4153,8 +4197,8 @@ "port-version": 1 }, "libfreenect2": { - "baseline": "0.2.0", - "port-version": 10 + "baseline": "0.2.1", + "port-version": 0 }, "libfs": { "baseline": "1.0.8", @@ -4169,8 +4213,8 @@ "port-version": 4 }, "libgcrypt": { - "baseline": "1.10.1", - "port-version": 1 + "baseline": "1.10.2", + "port-version": 0 }, "libgd": { "baseline": "2.3.3", @@ -4180,6 +4224,10 @@ "baseline": "1.7.1", "port-version": 3 }, + "libgig": { + "baseline": "4.3.0", + "port-version": 0 + }, "libgit2": { "baseline": "1.6.4", "port-version": 1 @@ -4189,20 +4237,20 @@ "port-version": 0 }, "libgnutls": { - "baseline": "3.7.8", - "port-version": 0 + "baseline": "3.8.1", + "port-version": 1 }, "libgo": { "baseline": "3.1", "port-version": 5 }, "libgpg-error": { - "baseline": "1.46", + "baseline": "1.47", "port-version": 0 }, "libgpiod": { - "baseline": "2.0.1", - "port-version": 0 + "baseline": "2.0.2", + "port-version": 1 }, "libgpod": { "baseline": "2019-08-29", @@ -4218,14 +4266,14 @@ }, "libgwenhywfar": { "baseline": "5.6.0", - "port-version": 3 + "port-version": 4 }, "libgxps": { "baseline": "0.3.2", "port-version": 2 }, "libharu": { - "baseline": "2.4.3", + "baseline": "2.4.4", "port-version": 0 }, "libhdfs3": { @@ -4233,7 +4281,7 @@ "port-version": 5 }, "libheif": { - "baseline": "1.16.2", + "baseline": "1.17.1", "port-version": 0 }, "libhsplasma": { @@ -4249,8 +4297,8 @@ "port-version": 0 }, "libical": { - "baseline": "3.0.16", - "port-version": 1 + "baseline": "3.0.17", + "port-version": 0 }, "libice": { "baseline": "1.0.10", @@ -4261,7 +4309,7 @@ "port-version": 1 }, "libics": { - "baseline": "1.6.5", + "baseline": "1.6.6", "port-version": 0 }, "libideviceactivation": { @@ -4270,7 +4318,7 @@ }, "libidn2": { "baseline": "2.3.4", - "port-version": 2 + "port-version": 3 }, "libigl": { "baseline": "2.4.0", @@ -4293,11 +4341,11 @@ "port-version": 1 }, "libjpeg-turbo": { - "baseline": "3.0.0", - "port-version": 2 + "baseline": "3.0.1", + "port-version": 0 }, "libjuice": { - "baseline": "1.0.6", + "baseline": "1.3.1", "port-version": 0 }, "libjxl": { @@ -4326,7 +4374,7 @@ }, "liblemon": { "baseline": "2019-06-13", - "port-version": 7 + "port-version": 8 }, "liblinear": { "baseline": "243", @@ -4345,12 +4393,12 @@ "port-version": 0 }, "liblsquic": { - "baseline": "3.1.1", - "port-version": 2 + "baseline": "3.3.2", + "port-version": 0 }, "liblzma": { - "baseline": "5.4.3", - "port-version": 1 + "baseline": "5.4.4", + "port-version": 0 }, "libmad": { "baseline": "0.15.1", @@ -4358,18 +4406,18 @@ }, "libmagic": { "baseline": "5.40", - "port-version": 2 + "port-version": 3 }, "libmariadb": { "baseline": "3.3.1", "port-version": 3 }, "libmaxminddb": { - "baseline": "1.4.3", - "port-version": 3 + "baseline": "1.7.1", + "port-version": 0 }, "libmediainfo": { - "baseline": "23.4", + "baseline": "23.10", "port-version": 0 }, "libmesh": { @@ -4401,7 +4449,7 @@ "port-version": 10 }, "libmorton": { - "baseline": "0.2.11", + "baseline": "0.2.12", "port-version": 0 }, "libmount": { @@ -4413,8 +4461,8 @@ "port-version": 3 }, "libmspack": { - "baseline": "0.10.1", - "port-version": 6 + "baseline": "0.11", + "port-version": 0 }, "libmt32emu": { "baseline": "2.7.0", @@ -4441,7 +4489,7 @@ "port-version": 3 }, "libnop": { - "baseline": "2021-03-01", + "baseline": "2021-11-03", "port-version": 0 }, "libodb": { @@ -4473,7 +4521,7 @@ "port-version": 1 }, "libopenmpt": { - "baseline": "0.6.7", + "baseline": "0.6.12", "port-version": 0 }, "libopensp": { @@ -4490,10 +4538,10 @@ }, "libosip2": { "baseline": "5.2.0", - "port-version": 4 + "port-version": 5 }, "libosmium": { - "baseline": "2.19.0", + "baseline": "2.20.0", "port-version": 0 }, "libosmscout": { @@ -4509,15 +4557,15 @@ "port-version": 4 }, "libpcap": { - "baseline": "1.10.1", - "port-version": 3 + "baseline": "1.10.4", + "port-version": 1 }, "libpff": { "baseline": "2021-11-14", "port-version": 2 }, "libphonenumber": { - "baseline": "8.13.17", + "baseline": "8.13.23", "port-version": 0 }, "libplist": { @@ -4537,11 +4585,11 @@ "port-version": 16 }, "libpq": { - "baseline": "15.3", - "port-version": 2 + "baseline": "16.0", + "port-version": 0 }, "libpqxx": { - "baseline": "7.7.4", + "baseline": "7.8.1", "port-version": 0 }, "libprotobuf-mutator": { @@ -4564,13 +4612,17 @@ "baseline": "4.1.1", "port-version": 2 }, + "libqtrest": { + "baseline": "0.4.0", + "port-version": 0 + }, "librabbitmq": { "baseline": "0.11.0", "port-version": 2 }, "libraqm": { - "baseline": "0.9.0", - "port-version": 1 + "baseline": "0.10.1", + "port-version": 0 }, "libraw": { "baseline": "0.21.1", @@ -4585,8 +4637,8 @@ "port-version": 1 }, "libremidi": { - "baseline": "4.1.0", - "port-version": 0 + "baseline": "4.2.3", + "port-version": 2 }, "libressl": { "baseline": "3.6.2", @@ -4617,8 +4669,8 @@ "port-version": 1 }, "libsbml": { - "baseline": "5.20.0", - "port-version": 1 + "baseline": "5.20.2", + "port-version": 0 }, "libsbsms": { "baseline": "2.3.0", @@ -4653,12 +4705,12 @@ "port-version": 0 }, "libsmb2": { - "baseline": "2021-04-29", - "port-version": 2 + "baseline": "2023-08-11", + "port-version": 0 }, "libsndfile": { - "baseline": "1.2.0", - "port-version": 2 + "baseline": "1.2.2", + "port-version": 0 }, "libsnoretoast": { "baseline": "0.8.0", @@ -4717,8 +4769,8 @@ "port-version": 3 }, "libsvm": { - "baseline": "3.25", - "port-version": 1 + "baseline": "3.32", + "port-version": 0 }, "libsystemd": { "baseline": "254", @@ -4745,8 +4797,8 @@ "port-version": 6 }, "libtins": { - "baseline": "4.3", - "port-version": 6 + "baseline": "4.5", + "port-version": 0 }, "libtomcrypt": { "baseline": "1.18.2", @@ -4765,15 +4817,15 @@ "port-version": 0 }, "libtracepoint": { - "baseline": "1.1.0", + "baseline": "1.2.1", "port-version": 0 }, "libtracepoint-control": { - "baseline": "1.1.0", + "baseline": "1.2.1", "port-version": 0 }, "libtracepoint-decode": { - "baseline": "1.1.0", + "baseline": "1.2.1", "port-version": 0 }, "libu2f-server": { @@ -4809,8 +4861,8 @@ "port-version": 0 }, "liburing": { - "baseline": "2.3", - "port-version": 1 + "baseline": "2.4", + "port-version": 0 }, "libusb": { "baseline": "1.0.26.11791", @@ -4965,7 +5017,7 @@ "port-version": 1 }, "libxpm": { - "baseline": "3.5.14", + "baseline": "3.5.16", "port-version": 0 }, "libxpresent": { @@ -5045,8 +5097,8 @@ "port-version": 2 }, "linalg": { - "baseline": "2.1", - "port-version": 2 + "baseline": "2.2", + "port-version": 0 }, "linenoise-ng": { "baseline": "4754bee2d8eb3", @@ -5081,8 +5133,8 @@ "port-version": 0 }, "llvm": { - "baseline": "15.0.7", - "port-version": 6 + "baseline": "17.0.2", + "port-version": 0 }, "lmdb": { "baseline": "0.9.31", @@ -5101,8 +5153,8 @@ "port-version": 0 }, "log4cplus": { - "baseline": "2.0.7", - "port-version": 1 + "baseline": "2.1.0", + "port-version": 0 }, "log4cpp-log4cpp": { "baseline": "1.1.4", @@ -5125,7 +5177,7 @@ "port-version": 0 }, "ltla-cppirlba": { - "baseline": "2023-04-07", + "baseline": "2023-09-20", "port-version": 0 }, "ltla-cppkmeans": { @@ -5241,7 +5293,7 @@ "port-version": 2 }, "makeid": { - "baseline": "1.0.2", + "baseline": "1.0.3", "port-version": 0 }, "manif": { @@ -5306,7 +5358,7 @@ }, "matio": { "baseline": "1.5.23", - "port-version": 2 + "port-version": 3 }, "matplotlib-cpp": { "baseline": "2020-08-27", @@ -5337,7 +5389,7 @@ "port-version": 3 }, "mdns": { - "baseline": "1.4.2", + "baseline": "1.4.3", "port-version": 0 }, "mdnsresponder": { @@ -5357,8 +5409,8 @@ "port-version": 3 }, "mesa": { - "baseline": "23.0.1", - "port-version": 2 + "baseline": "23.2.1", + "port-version": 0 }, "meschach": { "baseline": "1.2b", @@ -5382,7 +5434,7 @@ }, "mfx-dispatch": { "baseline": "1.35.1", - "port-version": 2 + "port-version": 3 }, "mgnlibs": { "baseline": "2019-09-29", @@ -5457,8 +5509,8 @@ "port-version": 1 }, "minizip-ng": { - "baseline": "4.0.0", - "port-version": 4 + "baseline": "4.0.1", + "port-version": 0 }, "mio": { "baseline": "2023-03-03", @@ -5501,7 +5553,7 @@ "port-version": 0 }, "mongoose": { - "baseline": "7.11", + "baseline": "7.12", "port-version": 0 }, "monkeys-audio": { @@ -5525,7 +5577,7 @@ "port-version": 3 }, "mosquitto": { - "baseline": "2.0.14", + "baseline": "2.0.18", "port-version": 0 }, "mozjpeg": { @@ -5533,28 +5585,32 @@ "port-version": 0 }, "mp-units": { - "baseline": "0.8.0", + "baseline": "2.0.0", "port-version": 0 }, "mp3lame": { "baseline": "3.100", "port-version": 11 }, + "mpark-patterns": { + "baseline": "2019-10-03", + "port-version": 0 + }, "mpark-variant": { "baseline": "1.4.0", "port-version": 3 }, "mpc": { - "baseline": "1.2.0", - "port-version": 3 + "baseline": "1.3.1", + "port-version": 0 }, "mpfr": { - "baseline": "4.2.0", - "port-version": 1 + "baseline": "4.2.1", + "port-version": 0 }, "mpg123": { "baseline": "1.31.3", - "port-version": 1 + "port-version": 3 }, "mpi": { "baseline": "1", @@ -5640,12 +5696,16 @@ "baseline": "2.3.4", "port-version": 0 }, + "murmur3": { + "baseline": "2015-05-02", + "port-version": 0 + }, "murmurhash": { "baseline": "2016-01-09", - "port-version": 6 + "port-version": 7 }, "mvfst": { - "baseline": "2023-05-18", + "baseline": "2023.10.02.00", "port-version": 0 }, "mygui": { @@ -5674,7 +5734,7 @@ }, "nanodbc": { "baseline": "2.13.0", - "port-version": 6 + "port-version": 7 }, "nanoflann": { "baseline": "1.5.0", @@ -5750,7 +5810,7 @@ }, "netcdf-c": { "baseline": "4.8.1", - "port-version": 3 + "port-version": 4 }, "netcdf-cxx4": { "baseline": "4.3.1", @@ -5769,7 +5829,7 @@ "port-version": 4 }, "nghttp2": { - "baseline": "1.56.0", + "baseline": "1.57.0", "port-version": 0 }, "nghttp2-asio": { @@ -5777,7 +5837,7 @@ "port-version": 1 }, "nghttp3": { - "baseline": "0.15.0", + "baseline": "1.0.0", "port-version": 0 }, "ngspice": { @@ -5785,7 +5845,7 @@ "port-version": 0 }, "ngtcp2": { - "baseline": "0.19.1", + "baseline": "1.0.1", "port-version": 0 }, "nifly": { @@ -5793,8 +5853,8 @@ "port-version": 1 }, "nifticlib": { - "baseline": "2020-04-30", - "port-version": 4 + "baseline": "2022-07-04", + "port-version": 0 }, "nlohmann-fifo-map": { "baseline": "2018.05.07", @@ -5810,7 +5870,7 @@ }, "nmap": { "baseline": "7.70", - "port-version": 10 + "port-version": 11 }, "nmslib": { "baseline": "2.1.1", @@ -5952,6 +6012,10 @@ "baseline": "1.3.0", "port-version": 2 }, + "oboe": { + "baseline": "1.8.0", + "port-version": 0 + }, "observer-ptr-lite": { "baseline": "0.4.0", "port-version": 3 @@ -5978,11 +6042,11 @@ }, "ogre": { "baseline": "14.0.1", - "port-version": 1 + "port-version": 2 }, "ogre-next": { "baseline": "2.3.1", - "port-version": 2 + "port-version": 3 }, "ois": { "baseline": "1.5.1", @@ -6029,8 +6093,8 @@ "port-version": 0 }, "open62541": { - "baseline": "1.3.5", - "port-version": 1 + "baseline": "1.3.8", + "port-version": 0 }, "openal-soft": { "baseline": "1.23.1", @@ -6114,7 +6178,7 @@ }, "openimageio": { "baseline": "2.4.14.0", - "port-version": 1 + "port-version": 2 }, "openjpeg": { "baseline": "2.5.0", @@ -6133,8 +6197,8 @@ "port-version": 1 }, "openmpi": { - "baseline": "4.1.3", - "port-version": 2 + "baseline": "4.1.6", + "port-version": 0 }, "openmvg": { "baseline": "2.0", @@ -6194,11 +6258,11 @@ }, "openvdb": { "baseline": "10.0.0", - "port-version": 5 + "port-version": 6 }, "openvino": { "baseline": "2023.1.0", - "port-version": 2 + "port-version": 4 }, "openvpn3": { "baseline": "3.7.0", @@ -6405,7 +6469,7 @@ "port-version": 1 }, "physx": { - "baseline": "5.2.1", + "baseline": "5.3.0", "port-version": 0 }, "picojson": { @@ -6421,7 +6485,7 @@ "port-version": 2 }, "pipewire": { - "baseline": "0.3.62", + "baseline": "0.3.83", "port-version": 0 }, "pistache": { @@ -6449,7 +6513,7 @@ "port-version": 1 }, "plf-colony": { - "baseline": "6.33", + "baseline": "7.3.1", "port-version": 0 }, "plf-hive": { @@ -6482,7 +6546,7 @@ }, "plplot": { "baseline": "5.15.0", - "port-version": 1 + "port-version": 2 }, "plustache": { "baseline": "0.4.0", @@ -6505,8 +6569,8 @@ "port-version": 4 }, "podofo": { - "baseline": "0.10.0", - "port-version": 2 + "baseline": "0.10.1", + "port-version": 0 }, "poissonrecon": { "baseline": "2021-09-26", @@ -6576,6 +6640,14 @@ "baseline": "1.3", "port-version": 7 }, + "pravila00-enum-string": { + "baseline": "2023-10-16", + "port-version": 0 + }, + "pravila00-make-vector": { + "baseline": "2023-04-10", + "port-version": 0 + }, "presentmon": { "baseline": "1.7.0", "port-version": 2 @@ -6601,8 +6673,8 @@ "port-version": 0 }, "protobuf-c": { - "baseline": "1.4.0", - "port-version": 2 + "baseline": "1.4.1", + "port-version": 0 }, "protopuf": { "baseline": "2.2.1", @@ -6612,12 +6684,16 @@ "baseline": "1.7.1", "port-version": 0 }, + "proxsuite": { + "baseline": "0.5.0", + "port-version": 0 + }, "proxy": { "baseline": "1.1.1", "port-version": 0 }, "proxygen": { - "baseline": "2023.07.03.00", + "baseline": "2023.10.02.00", "port-version": 0 }, "psimd": { @@ -6625,7 +6701,7 @@ "port-version": 2 }, "ptc-print": { - "baseline": "1.4.0", + "baseline": "1.4.1", "port-version": 1 }, "ptex": { @@ -6653,7 +6729,7 @@ "port-version": 0 }, "pugixml": { - "baseline": "1.13.0", + "baseline": "1.14", "port-version": 0 }, "pulzed-mini": { @@ -6677,8 +6753,12 @@ "port-version": 0 }, "qca": { - "baseline": "2.3.5", - "port-version": 2 + "baseline": "2.3.7", + "port-version": 0 + }, + "qcoro": { + "baseline": "0.9.0", + "port-version": 0 }, "qcustomplot": { "baseline": "2.1.1", @@ -6713,7 +6793,7 @@ "port-version": 2 }, "qt": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qt-advanced-docking-system": { @@ -6721,71 +6801,71 @@ "port-version": 1 }, "qt3d": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qt5": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-3d": { - "baseline": "5.15.10", - "port-version": 1 + "baseline": "5.15.11", + "port-version": 0 }, "qt5-activeqt": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-androidextras": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-base": { - "baseline": "5.15.10", - "port-version": 5 + "baseline": "5.15.11", + "port-version": 1 }, "qt5-canvas3d": { "baseline": "0", "port-version": 2 }, "qt5-charts": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-connectivity": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-datavis3d": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-declarative": { - "baseline": "5.15.10", - "port-version": 1 + "baseline": "5.15.11", + "port-version": 0 }, "qt5-doc": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-gamepad": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-graphicaleffects": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-imageformats": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-location": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-macextras": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-modularscripts": { @@ -6793,167 +6873,167 @@ "port-version": 1 }, "qt5-mqtt": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-multimedia": { - "baseline": "5.15.10", - "port-version": 0 + "baseline": "5.15.11", + "port-version": 1 }, "qt5-networkauth": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-purchasing": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-quickcontrols": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-quickcontrols2": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-remoteobjects": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-script": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-scxml": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-sensors": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-serialbus": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-serialport": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-speech": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-svg": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-tools": { - "baseline": "5.15.10", - "port-version": 1 + "baseline": "5.15.11", + "port-version": 0 }, "qt5-translations": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-virtualkeyboard": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-wayland": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-webchannel": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-webengine": { - "baseline": "5.15.10", - "port-version": 1 + "baseline": "5.15.11", + "port-version": 0 }, "qt5-webglplugin": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-websockets": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-webview": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-winextras": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-x11extras": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5-xmlpatterns": { - "baseline": "5.15.10", + "baseline": "5.15.11", "port-version": 0 }, "qt5compat": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtactiveqt": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtapplicationmanager": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtbase": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 1 }, "qtcharts": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtcoap": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtconnectivity": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtdatavis3d": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtdeclarative": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtdeviceutilities": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtdoc": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtgrpc": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qthttpserver": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtimageformats": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtinterfaceframework": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtkeychain": { @@ -6965,43 +7045,43 @@ "port-version": 0 }, "qtlanguageserver": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtlocation": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtlottie": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtmqtt": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtmultimedia": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtnetworkauth": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtopcua": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtpositioning": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtquick3d": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtquick3dphysics": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtquickcontrols2": { @@ -7009,75 +7089,75 @@ "port-version": 0 }, "qtquickeffectmaker": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtquicktimeline": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtremoteobjects": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtscxml": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtsensors": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtserialbus": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtserialport": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtshadertools": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtspeech": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtsvg": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qttools": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qttranslations": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtvirtualkeyboard": { - "baseline": "6.5.2", - "port-version": 1 + "baseline": "6.5.3", + "port-version": 0 }, "qtwayland": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtwebchannel": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtwebengine": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtwebsockets": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "qtwebview": { - "baseline": "6.5.2", + "baseline": "6.5.3", "port-version": 0 }, "quadtree": { @@ -7085,7 +7165,7 @@ "port-version": 0 }, "quantlib": { - "baseline": "1.31.1", + "baseline": "1.32", "port-version": 0 }, "quaternions": { @@ -7161,7 +7241,7 @@ "port-version": 0 }, "rapidjson": { - "baseline": "2023-04-27", + "baseline": "2023-07-17", "port-version": 0 }, "rapidxml": { @@ -7185,8 +7265,8 @@ "port-version": 2 }, "rbdl": { - "baseline": "3.2.0", - "port-version": 4 + "baseline": "3.3.0", + "port-version": 5 }, "rbdl-orb": { "baseline": "3.2.0", @@ -7197,7 +7277,7 @@ "port-version": 0 }, "reactiveplusplus": { - "baseline": "0.2.2", + "baseline": "0.2.3", "port-version": 0 }, "readerwriterqueue": { @@ -7218,15 +7298,15 @@ }, "readline-win32": { "baseline": "5.0", - "port-version": 7 + "port-version": 8 }, "readosm": { "baseline": "1.1.0a", "port-version": 4 }, "realsense2": { - "baseline": "2.54.1", - "port-version": 1 + "baseline": "2.54.2", + "port-version": 0 }, "recast": { "baseline": "deprecated", @@ -7245,8 +7325,8 @@ "port-version": 0 }, "refl-cpp": { - "baseline": "0.12.3", - "port-version": 1 + "baseline": "0.12.4", + "port-version": 0 }, "refprop-headers": { "baseline": "2022-12-07", @@ -7289,8 +7369,8 @@ "port-version": 0 }, "rhash": { - "baseline": "1.4.2", - "port-version": 1 + "baseline": "1.4.4", + "port-version": 0 }, "rhasheq": { "baseline": "2023-06-17", @@ -7477,8 +7557,8 @@ "port-version": 0 }, "scnlib": { - "baseline": "1.0", - "port-version": 1 + "baseline": "1.1.2", + "port-version": 0 }, "scope-guard": { "baseline": "1.1.0", @@ -7496,6 +7576,10 @@ "baseline": "2018-08-26-16e6f435", "port-version": 3 }, + "sdbus-cpp": { + "baseline": "1.3.0", + "port-version": 0 + }, "sdformat10": { "baseline": "10.0.0", "port-version": 3 @@ -7525,7 +7609,7 @@ "port-version": 6 }, "sdl2": { - "baseline": "2.28.3", + "baseline": "2.28.4", "port-version": 1 }, "sdl2-gfx": { @@ -7542,11 +7626,11 @@ }, "sdl2-mixer-ext": { "baseline": "2023-05-04", - "port-version": 0 + "port-version": 1 }, "sdl2-net": { "baseline": "2.2.0", - "port-version": 1 + "port-version": 2 }, "sdl2-ttf": { "baseline": "2.20.2", @@ -7581,7 +7665,7 @@ "port-version": 2 }, "sentry-native": { - "baseline": "0.6.5", + "baseline": "0.6.6", "port-version": 0 }, "septag-dmon": { @@ -7614,7 +7698,7 @@ }, "sfml": { "baseline": "2.6.0", - "port-version": 18 + "port-version": 19 }, "sfsexp": { "baseline": "1.3.1", @@ -7652,10 +7736,6 @@ "baseline": "1.0", "port-version": 7 }, - "shiva-sfml": { - "baseline": "1.0", - "port-version": 4 - }, "shogun": { "baseline": "6.1.4", "port-version": 9 @@ -7773,16 +7853,16 @@ "port-version": 2 }, "so5extra": { - "baseline": "1.6.0", + "baseline": "1.6.1", "port-version": 0 }, "sobjectizer": { - "baseline": "5.8.0.1", + "baseline": "5.8.1", "port-version": 0 }, "soci": { "baseline": "4.0.3", - "port-version": 1 + "port-version": 3 }, "socket-io-client": { "baseline": "2023-02-14", @@ -7794,7 +7874,7 @@ }, "soem": { "baseline": "2023-06-09", - "port-version": 0 + "port-version": 1 }, "soil": { "baseline": "2021-04-22", @@ -7805,8 +7885,8 @@ "port-version": 1 }, "sokol": { - "baseline": "2019-09-09", - "port-version": 2 + "baseline": "2023-10-07", + "port-version": 0 }, "sol2": { "baseline": "3.3.0", @@ -7829,8 +7909,8 @@ "port-version": 2 }, "soundtouch": { - "baseline": "2.3.1", - "port-version": 2 + "baseline": "2.3.2", + "port-version": 0 }, "soxr": { "baseline": "0.1.3", @@ -7937,7 +8017,7 @@ "port-version": 0 }, "sqlite3": { - "baseline": "3.43.0", + "baseline": "3.43.1", "port-version": 0 }, "sqlitecpp": { @@ -8069,8 +8149,8 @@ "port-version": 0 }, "symengine": { - "baseline": "0.10.1", - "port-version": 1 + "baseline": "0.11.1", + "port-version": 0 }, "systemc": { "baseline": "2.3.3", @@ -8092,6 +8172,10 @@ "baseline": "1.13.1", "port-version": 1 }, + "talib": { + "baseline": "0.4.0", + "port-version": 1 + }, "taocpp-json": { "baseline": "2020-09-14", "port-version": 3 @@ -8110,7 +8194,7 @@ }, "tbb": { "baseline": "2021.10.0", - "port-version": 2 + "port-version": 3 }, "tcb-span": { "baseline": "2022-06-15", @@ -8180,13 +8264,17 @@ "baseline": "2023.1", "port-version": 0 }, + "thomasmonkman-filewatch": { + "baseline": "2023-01-16", + "port-version": 0 + }, "thor": { "baseline": "2022-04-16", "port-version": 0 }, "thorvg": { - "baseline": "0.10.1", - "port-version": 1 + "baseline": "0.11.1", + "port-version": 0 }, "threadpool": { "baseline": "0.2.5", @@ -8201,8 +8289,8 @@ "port-version": 0 }, "tiff": { - "baseline": "4.5.1", - "port-version": 2 + "baseline": "4.6.0", + "port-version": 1 }, "tinkerforge": { "baseline": "2.1.25", @@ -8261,7 +8349,7 @@ "port-version": 0 }, "tinygltf": { - "baseline": "2.8.4", + "baseline": "2.8.17", "port-version": 0 }, "tinynpy": { @@ -8349,16 +8437,16 @@ "port-version": 4 }, "tracy": { - "baseline": "0.9.1", - "port-version": 3 + "baseline": "0.10.0", + "port-version": 0 }, "transwarp": { "baseline": "2.2.2", "port-version": 0 }, "trantor": { - "baseline": "1.5.11", - "port-version": 1 + "baseline": "1.5.14", + "port-version": 0 }, "tre": { "baseline": "0.8.0", @@ -8529,7 +8617,7 @@ "port-version": 1 }, "utfcpp": { - "baseline": "3.2.4", + "baseline": "3.2.5", "port-version": 0 }, "utfz": { @@ -8553,7 +8641,7 @@ "port-version": 0 }, "uwebsockets": { - "baseline": "20.45.0", + "baseline": "20.47.0", "port-version": 0 }, "v-hacd": { @@ -8581,7 +8669,7 @@ "port-version": 0 }, "vc": { - "baseline": "1.4.3", + "baseline": "1.4.4", "port-version": 0 }, "vcglib": { @@ -8761,7 +8849,7 @@ "port-version": 5 }, "wangle": { - "baseline": "2023.07.03.00", + "baseline": "2023.10.02.00", "port-version": 0 }, "wasmedge": { @@ -8793,15 +8881,15 @@ "port-version": 2 }, "webview2": { - "baseline": "1.0.1210.39", - "port-version": 1 + "baseline": "1.0.2088.41", + "port-version": 0 }, "wepoll": { "baseline": "1.5.8", "port-version": 3 }, "wg21-linear-algebra": { - "baseline": "0.7.2", + "baseline": "0.7.3", "port-version": 0 }, "wg21-sg14": { @@ -8810,7 +8898,7 @@ }, "wil": { "baseline": "2023-08-24", - "port-version": 0 + "port-version": 1 }, "wildmidi": { "baseline": "0.4.5", @@ -8826,7 +8914,7 @@ }, "winpcap": { "baseline": "4.1.3", - "port-version": 11 + "port-version": 12 }, "winpty": { "baseline": "0.4.3", @@ -8901,8 +8989,8 @@ "port-version": 0 }, "wxwidgets": { - "baseline": "3.2.2.1", - "port-version": 3 + "baseline": "3.2.3", + "port-version": 0 }, "wyhash": { "baseline": "2023-01-25", @@ -8921,7 +9009,7 @@ "port-version": 10 }, "x86-simd-sort": { - "baseline": "2023-03-04", + "baseline": "3.0", "port-version": 0 }, "xapian": { @@ -8937,7 +9025,7 @@ "port-version": 0 }, "xbyak": { - "baseline": "6.69", + "baseline": "6.73", "port-version": 0 }, "xcb": { diff --git a/vcpkg/versions/d-/dpp.json b/vcpkg/versions/d-/dpp.json index a534b6981f..67dd88adaa 100644 --- a/vcpkg/versions/d-/dpp.json +++ b/vcpkg/versions/d-/dpp.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "4af5cf78d8e943575224a6ad11ef936d31d95415", + "git-tree": "bb85393fcea63ff5e643c3bb0cf15bbdad6d8a2e", "version": "10.0.26", "port-version": 0 }, From 98e4301c2dc37538b9987597cca193552765e7d2 Mon Sep 17 00:00:00 2001 From: Craig Edwards Date: Fri, 27 Oct 2023 17:12:13 +0000 Subject: [PATCH 06/11] version bump [skip ci] --- include/dpp/version.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/dpp/version.h b/include/dpp/version.h index 82b1d81178..c835ab3518 100644 --- a/include/dpp/version.h +++ b/include/dpp/version.h @@ -22,9 +22,9 @@ #pragma once #if !defined(DPP_VERSION_LONG) -#define DPP_VERSION_LONG 0x00100027 -#define DPP_VERSION_SHORT 100027 -#define DPP_VERSION_TEXT "D++ 10.0.27 (30-Sep-2023)" +#define DPP_VERSION_LONG 0x00100028 +#define DPP_VERSION_SHORT 100028 +#define DPP_VERSION_TEXT "D++ 10.0.28 (27-Oct-2023)" #define DPP_VERSION_MAJOR ((DPP_VERSION_LONG & 0x00ff0000) >> 16) #define DPP_VERSION_MINOR ((DPP_VERSION_LONG & 0x0000ff00) >> 8) From 7c234f6b539ed3dd1913ec11a3550d4b261cae85 Mon Sep 17 00:00:00 2001 From: Craig Edwards Date: Fri, 27 Oct 2023 19:02:30 +0000 Subject: [PATCH 07/11] ci: vcpkg fix --- buildtools/classes/Packager/Vcpkg.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/buildtools/classes/Packager/Vcpkg.php b/buildtools/classes/Packager/Vcpkg.php index 3b3bee9d12..c1a4943419 100644 --- a/buildtools/classes/Packager/Vcpkg.php +++ b/buildtools/classes/Packager/Vcpkg.php @@ -250,6 +250,8 @@ function secondBuild(string $portFileContent): bool chdir('/usr/local/share/vcpkg'); $this->sudo('./vcpkg format-manifest ./ports/dpp/vcpkg.json'); /* Note: We commit this in /usr/local, but we never push it (we can't) */ + $this->git('config --global user.email "noreply@dpp.dev"'); + $this->git('config --global user.name "DPP VCPKG Bot"'); $this->git('add .', true); $this->git('commit -m "[bot] VCPKG info update"', true); $this->sudo('/usr/local/share/vcpkg/vcpkg x-add-version dpp'); @@ -261,6 +263,8 @@ function secondBuild(string $portFileContent): bool system('cp -v -R /usr/local/share/vcpkg/versions/d-/dpp.json ./vcpkg/versions/d-/dpp.json'); echo GREEN . "Commit and push changes to master branch\n" . WHITE; + $this->git('config --global user.email "noreply@dpp.dev"'); + $this->git('config --global user.name "DPP VCPKG Bot"'); $this->git('add .'); $this->git('commit -m "[bot] VCPKG info update [skip ci]"'); $this->git('config pull.rebase false'); From 42c1fa4fa93636708028f916d17304a178c407d8 Mon Sep 17 00:00:00 2001 From: Archie Jaskowicz Date: Mon, 30 Oct 2023 09:23:04 +0000 Subject: [PATCH 08/11] style: refactored comments in several files to follow standard (#975) --- include/dpp/appcommand.h | 319 ++++++++++++++++++++++----- include/dpp/application.h | 404 +++++++++++++++++++++++++++++------ include/dpp/automod.h | 118 +++++----- include/dpp/ban.h | 11 +- include/dpp/cache.h | 5 +- include/dpp/coro/async.h | 54 +++-- include/dpp/coro/coro.h | 16 +- include/dpp/coro/coroutine.h | 7 +- include/dpp/coro/job.h | 23 +- include/dpp/coro/task.h | 29 ++- include/dpp/coro/when_any.h | 105 ++++++--- include/dpp/sku.h | 3 + include/dpp/wsclient.h | 36 +++- 13 files changed, 862 insertions(+), 268 deletions(-) diff --git a/include/dpp/appcommand.h b/include/dpp/appcommand.h index 5ffc850525..8f75001c23 100644 --- a/include/dpp/appcommand.h +++ b/include/dpp/appcommand.h @@ -48,27 +48,59 @@ namespace dpp { * These are the possible parameter value types. */ enum command_option_type : uint8_t { - /** A sub-command */ + /** + * @brief A sub-command. + */ co_sub_command = 1, - /** A sub-command group */ + + /** + * @brief A sub-command group. + */ co_sub_command_group = 2, - /** A string value */ + + /** + * @brief A string value. + */ co_string = 3, - /** An integer value */ + + /** + * @brief An integer value. + */ co_integer = 4, - /** A boolean value */ + + /** + * @brief A boolean value. + */ co_boolean = 5, - /** A user snowflake id */ + + /** + * @brief A user snowflake id. + */ co_user = 6, - /** A channel snowflake id. Includes all channel types and categories */ + + /** + * @brief A channel snowflake id. Includes all channel types and categories. + */ co_channel = 7, - /** A role snowflake id */ + + /** + * @brief A role id (snowflake). + */ co_role = 8, - /** A mentionable. Includes users and roles */ + + /** + * @brief A mentionable (users and roles). + */ co_mentionable = 9, - /** Any double between -2^53 and 2^53 */ + + /** + * @brief Any double between -2^53 and 2^53. + */ co_number = 10, - /** File attachment type */ + + /** + * @brief File attachment type. + */ co_attachment = 11, }; @@ -104,9 +136,20 @@ struct DPP_EXPORT command_option_choice : public json_interface name_localizations; //!< Localisations of command option name + /** + * @brief Option name (1-32 chars). + */ + std::string name; + + /** + * @brief Option value. + */ + command_value value; + + /** + * @brief Localisations of command option name. + */ + std::map name_localizations; /** * @brief Construct a new command option choice object @@ -170,22 +213,79 @@ struct DPP_EXPORT command_option : public json_interface { command_option& fill_from_json_impl(nlohmann::json* j); public: - command_option_type type; //!< Option type (what type of value is accepted) - std::string name; //!< Option name (1-32 chars) - std::string description; //!< Option description (1-100 chars) - bool required; //!< True if this is a mandatory parameter - bool focused; //!< True if the user is typing in this field, when sent via autocomplete - command_value value; //!< Set only by autocomplete went sent as part of an interaction - std::vector choices; //!< List of choices for multiple choice command - bool autocomplete; //!< True if this option supports auto completion - std::vector options; //!< Sub-commands - std::vector channel_types; //!< Allowed channel types for channel snowflake id options + /** + * @brief Option type (what type of value is accepted). + */ + command_option_type type; + + /** + * @brief Option name (1-32 chars). + */ + std::string name; + + /** + * @brief Option description (1-100 chars). + */ + std::string description; + + /** + * @brief Is this a mandatory parameter? + */ + bool required; + + /** + * @brief Is the user is typing in this field? + * + * @note This is sent via autocomplete. + */ + bool focused; + + /** + * @brief Set only by autocomplete when sent as part of an interaction. + */ + command_value value; + + /** + * @brief List of choices for multiple choice command. + */ + std::vector choices; + + /** + * @brief Does this option supports auto completion? + */ + bool autocomplete; + + /** + * @brief An array of sub-commands (options). + */ + std::vector options; + + /** + * @brief Allowed channel types for channel snowflake id options. + */ + std::vector channel_types; + // Combines the `min_length` and `max_length` field by storing its value in the int64_t of the command_option_range - command_option_range min_value; //!< Minimum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only - command_option_range max_value; //!< Maximum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only - std::map name_localizations; //!< Localisations of command name - std::map description_localizations; //!< Localisations of command description + /** + * @brief Minimum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only. + */ + command_option_range min_value; + + /** + * @brief Maximum value/length that can be entered, for dpp::co_number, dpp::co_integer and dpp::co_string types only. + */ + command_option_range max_value; + + /** + * @brief Localisations of command name. + */ + std::map name_localizations; + + /** + * @brief Localisations of command description. + */ + std::map description_localizations; /** * @brief Construct a new command option object @@ -302,10 +402,12 @@ enum interaction_response_type { * @brief Acknowledge a Ping */ ir_pong = 1, + /** * @brief Respond to an interaction with a message. */ ir_channel_message_with_source = 4, + /** * @brief Acknowledge an interaction and edit a response later, the user sees a loading state */ @@ -584,18 +686,37 @@ struct DPP_EXPORT command_resolved { * the command on a channel or in DM. */ struct DPP_EXPORT command_data_option { - std::string name; //!< the name of the parameter - command_option_type type; //!< value of ApplicationCommandOptionType - command_value value; //!< Optional: the value of the pair - std::vector options; //!< Optional: present if this option is a group or subcommand - bool focused; //!< Optional: true if this option is the currently focused option for autocomplete + /** + * @brief The name of the parameter. + */ + std::string name; + + /** + * @brief The type of option (value of ApplicationCommandOptionType). + */ + command_option_type type; + + /** + * @brief Optional: the value of the pair + */ + command_value value; + + /** + * @brief Optional: present if this option is a group or subcommand + */ + std::vector options; + + /** + * @brief Optional: true if this option is the currently focused option for autocomplete + */ + bool focused; /** * @brief Check if the value variant holds std::monostate and options vector is empty (i.e. the option wasn't supplied) * @return bool true, if value variant holds std::monostate and options vector is empty */ bool empty() { - return std::holds_alternative(value) && options.empty(); + return std::holds_alternative(value) && options.empty(); } /** @@ -623,21 +744,55 @@ void from_json(const nlohmann::json& j, command_data_option& cdo); /** Types of interaction in the dpp::interaction class */ enum interaction_type { - it_ping = 1, //!< ping - it_application_command = 2, //!< application command (slash command) - it_component_button = 3, //!< button click or select menu chosen (component interaction) - it_autocomplete = 4, //!< Autocomplete interaction - it_modal_submit = 5, //!< Modal form submission + /** + * @brief A ping interaction. + */ + it_ping = 1, + + /** + * @brief Application command (slash command) interaction. + */ + it_application_command = 2, + + /** + * @brief Button click or select menu chosen (component interaction) + */ + it_component_button = 3, + + /** + * @brief Autocomplete interaction. + */ + it_autocomplete = 4, + + /** + * @brief Modal form submission. + */ + it_modal_submit = 5, }; /** * @brief Right-click context menu types */ enum slashcommand_contextmenu_type { - ctxm_none = 0, //!< Undefined context menu type - ctxm_chat_input = 1, //!< DEFAULT, these are the slash commands you're used to - ctxm_user = 2, //!< Add command to user context menu - ctxm_message = 3 //!< Add command to message context menu + /** + * @brief Undefined context menu type + */ + ctxm_none = 0, + + /** + * @brief DEFAULT: these are the generic slash commands (e.g. /ping, /pong, etc) + */ + ctxm_chat_input = 1, + + /** + * @brief A slashcommand that goes in the user context menu. + */ + ctxm_user = 2, + + /** + * @brief A slashcommand that goes in the message context menu. + */ + ctxm_message = 3 }; /** @@ -646,11 +801,32 @@ enum slashcommand_contextmenu_type { * with the interaction. */ struct DPP_EXPORT command_interaction { - snowflake id; //!< the ID of the invoked command - std::string name; //!< the name of the invoked command - std::vector options; //!< Optional: the params + values from the user - slashcommand_contextmenu_type type; //!< type of the command interaction - dpp::snowflake target_id; //!< Non-zero target ID for context menu actions. e.g. user id or message id whom clicked or tapped with the context menu https://discord.com/developers/docs/interactions/application-commands#user-commands + /** + * @brief The ID of the invoked command. + */ + snowflake id; + + /** + * @brief The name of the invoked command. + */ + std::string name; + + /** + * @brief Optional: the params + values from the user. + */ + std::vector options; + + /** + * @brief The type of command interaction. + */ + slashcommand_contextmenu_type type; + + /** + * @brief Non-zero target ID for context menu actions (e.g. user id or message id whom clicked or tapped with the context menu). + * + * @see https://discord.com/developers/docs/interactions/application-commands#user-commands + */ + dpp::snowflake target_id; /** * @brief Get an option value by index @@ -690,10 +866,12 @@ struct DPP_EXPORT component_interaction { * @brief Component type (dpp::component_type) */ uint8_t component_type; + /** * @brief Custom ID set when created */ std::string custom_id; + /** * @brief Possible values for a drop down list */ @@ -1031,12 +1209,11 @@ void from_json(const nlohmann::json& j, interaction& i); enum command_permission_type { /** * @brief Role permission - * */ cpt_role = 1, + /** * @brief User permission - * */ cpt_user = 2, }; @@ -1058,12 +1235,23 @@ class DPP_EXPORT command_permission : public json_interface command_permission &fill_from_json_impl(nlohmann::json *j); public: - snowflake id; //!< the ID of the role or user - command_permission_type type; //!< the type of permission - bool permission; //!< true to allow, false, to disallow + /** + * @brief The ID of the role/user. + */ + snowflake id; /** - * @brief Construct a new command permission object + * @brief The type of permission. + */ + command_permission_type type; + + /** + * @brief True to allow, false to disallow. + */ + bool permission; + + /** + * @brief Construct a new command permission object. */ command_permission() = default; @@ -1105,10 +1293,25 @@ class DPP_EXPORT guild_command_permissions : public json_interface permissions; //!< the permissions for the command in the guild + /** + * @brief The id of the command. + */ + snowflake id; + + /** + * @brief The id of the application the command belongs to. + */ + snowflake application_id; + + /** + * @brief The id of the guild. + */ + snowflake guild_id; + + /** + * @brief The permissions for the command, in the guild. + */ + std::vector permissions; /** * @brief Construct a new guild command permissions object diff --git a/include/dpp/application.h b/include/dpp/application.h index 33e0ff27f1..eb7e8b32df 100644 --- a/include/dpp/application.h +++ b/include/dpp/application.h @@ -37,9 +37,13 @@ namespace dpp { * @brief status of a member of a team who maintain a bot/application */ enum team_member_status : uint8_t { - /// User was invited to the team + /** + * @brief User was invited to the team. + */ tms_invited = 1, - /// User has accepted membership onto the team + /** + * @brief User has accepted membership onto the team. + */ tms_accepted = 2 }; @@ -47,25 +51,54 @@ enum team_member_status : uint8_t { * @brief Flags for a bot or application */ enum application_flags : uint32_t { - /// Indicates if an app uses the Auto Moderation API + /** + * @brief Indicates if an app uses the Auto Moderation API + */ apf_application_automod_rule_create_badge = (1 << 6), - /// Has gateway presence intent + + /** + * @brief Has gateway presence intent + */ apf_gateway_presence = (1 << 12), - /// Has gateway presence intent for <100 guilds + + /** + * @brief Has gateway presence intent for <100 guilds + */ apf_gateway_presence_limited = (1 << 13), - /// Has guild members intent + + /** + * @brief Has guild members intent + */ apf_gateway_guild_members = (1 << 14), - /// Has guild members intent for <100 guilds + + /** + * @brief Has guild members intent for <100 guilds + */ apf_gateway_guild_members_limited = (1 << 15), - /// Verification is pending + + /** + * @brief Verification is pending + */ apf_verification_pending_guild_limit = (1 << 16), - /// Embedded + + /** + * @brief Embedded + */ apf_embedded = (1 << 17), - /// Has approval for message content + + /** + * @brief Has approval for message content + */ apf_gateway_message_content = (1 << 18), - /// Has message content, but <100 guilds + + /** + * @brief Has message content, but <100 guilds + */ apf_gateway_message_content_limited = (1 << 19), - /// Indicates if the app has registered global application commands + + /** + * @brief Indicates if the app has registered global application commands + */ apf_application_command_badge = (1 << 23) }; @@ -73,8 +106,17 @@ enum application_flags : uint32_t { * @brief Represents the settings for the bot/application's in-app authorization link */ struct DPP_EXPORT application_install_params { - permission permissions; //!< A bitmask of dpp::permissions to request for the bot role - std::vector scopes; //!< The [scopes](https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes) as strings to add the application to the server with + /** + * @brief A bitmask of dpp::permissions to request for the bot role. + */ + permission permissions; + + /** + * @brief The scopes as strings to add the application to the server with. + * + * @see https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes + */ + std::vector scopes; }; /** @@ -84,10 +126,25 @@ struct DPP_EXPORT application_install_params { * this enum will be extended to support them. */ enum team_member_role_t : uint8_t { - tmr_owner, //!< Team owner - tmr_admin, //!< Team admin - tmr_developer, //!< Developer - tmr_readonly, //!< Read-Only + /** + * @brief Team owner. + */ + tmr_owner, + + /** + * @brief Team admin. + */ + tmr_admin, + + /** + * @brief Developer + */ + tmr_developer, + + /** + * @brief Read-Only + */ + tmr_readonly, }; /** @@ -95,11 +152,30 @@ enum team_member_role_t : uint8_t { */ class DPP_EXPORT team_member { public: - team_member_status membership_state; //!< the user's membership state on the team - std::string permissions; //!< will always be [""] - snowflake team_id; //!< the id of the parent team of which they are a member - user member_user; //!< the avatar, discriminator, id, and username of the user - team_member_role_t member_role; //!< the role of the user + /** + * @brief The user's membership state on the team. + */ + team_member_status membership_state; + + /** + * @brief Will always be "". + */ + std::string permissions; + + /** + * @brief The id of the parent team of which they are a member. + */ + snowflake team_id; + + /** + * @brief The avatar, discriminator, id, and username, of the user. + */ + user member_user; + + /** + * @brief The role of the user in the team. + */ + team_member_role_t member_role; }; /** @@ -107,11 +183,30 @@ class DPP_EXPORT team_member { */ class DPP_EXPORT app_team { public: - utility::iconhash icon; //!< a hash of the image of the team's icon (may be empty) - snowflake id; //!< the unique id of the team - std::vector members; //!< the members of the team - std::string name; //!< the name of the team - snowflake owner_user_id; //!< the user id of the current team owner + /** + * @brief A hash of the image of the team's icon (may be empty). + */ + utility::iconhash icon; + + /** + * @brief The id of the team. + */ + snowflake id; + + /** + * @brief The members of the team. + */ + std::vector members; + + /** + * @brief The name of the team. + */ + std::string name; + + /** + * @brief The user id of the current team owner. + */ + snowflake owner_user_id; }; /** @@ -128,48 +223,213 @@ class DPP_EXPORT application : public managed, public json_interface rpc_origins; //!< Optional: an array of rpc origin urls, if rpc is enabled - bool bot_public; //!< when false only app owner can join the app's bot to guilds - bool bot_require_code_grant; //!< when true the app's bot will only join upon completion of the full oauth2 code grant flow - user bot; //!< Optional: Partial user object for the bot user associated with the app. - std::string terms_of_service_url; //!< Optional: the url of the app's terms of service - std::string privacy_policy_url; //!< Optional: the url of the app's privacy policy - user owner; //!< Optional: partial user object containing info on the owner of the application - std::string summary; //!< if this application is a game sold on Discord, this field will be the summary field for the store page of its primary sku @deprecated Will be removed in v11 - std::string verify_key; //!< the hex encoded key for verification in interactions and the GameSDK's GetTicket - app_team team; //!< if the application belongs to a team, this will be a list of the members of that team (may be empty) - snowflake guild_id; //!< Optional: if this application is a game sold on Discord, this field will be the guild to which it has been linked - guild guild_obj; //!< Optional: Partial object of the associated guild - snowflake primary_sku_id; //!< Optional: if this application is a game sold on Discord, this field will be the id of the "Game SKU" that is created, if exists - std::string slug; //!< Optional: if this application is a game sold on Discord, this field will be the URL slug that links to the store page - utility::iconhash cover_image; //!< Optional: the application's default rich presence invite cover image hash - uint32_t flags; //!< Optional: the application's public flags - uint64_t approximate_guild_count; //!< Optional: Approximate count of guilds the app has been added to - std::vector redirect_uris; //!< Optional: Array of redirect URIs for the app - std::string interactions_endpoint_url; //!< Optional: Interactions endpoint URL for the app - std::string role_connections_verification_url; //!< The application's role connection verification entry point, which when configured will render the app as a verification method in the guild role verification configuration - std::vector tags; //!< Up to 5 tags describing the content and functionality of the application - application_install_params install_params; //!< Settings for the application's default in-app authorization link, if enabled - std::string custom_install_url; //!< The application's default custom authorization link, if enabled - - uint8_t discoverability_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint32_t discovery_eligibility_flags; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t explicit_content_filter; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t creator_monetization_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - bool integration_public; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - bool integration_require_code_grant; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - std::vector interactions_event_types; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t interactions_version; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - bool is_monetized; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint32_t monetization_eligibility_flags; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t monetization_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - bool hook; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t rpc_application_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t store_application_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. - uint8_t verification_state; //!< @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + /** + * @brief The name of the app. + */ + std::string name; + + /** + * @brief The icon hash of the app (may be empty). + */ + utility::iconhash icon; + + /** + * @brief The description of the app. + */ + std::string description; + + /** + * @brief Optional: an array of rpc origin urls, if rpc is enabled. + */ + std::vector rpc_origins; + + /** + * @brief When false, only app owner add the bot to guilds. + */ + bool bot_public; + + /** + * @brief When true, the app's bot will only join upon completion of the full oauth2 code grant flow + */ + bool bot_require_code_grant; + + /** + * @brief Optional: Partial user object for the bot user associated with the app. + */ + user bot; + + /** + * @brief Optional: the url of the app's terms of service. + */ + std::string terms_of_service_url; + + /** + * @brief Optional: the url of the app's privacy policy. + */ + std::string privacy_policy_url; + + /** + * @brief Optional: partial user object containing info on the owner of the application. + */ + user owner; + + /** + * @brief If this application is a game sold on Discord, this field will be the summary field for the store page of its primary SKU. + * + * @deprecated Will be removed in v11 + */ + std::string summary; + + /** + * @brief The hex encoded key for verification in interactions and the GameSDK's GetTicket. + */ + std::string verify_key; + + /** + * @brief If the application belongs to a team, this will be a list of the members of that team (may be empty). + */ + app_team team; + + /** + * @brief Optional: if this application is a game sold on Discord, this field will be the guild to which it has been linked. + */ + snowflake guild_id; + + /** + * @brief Partial object of the associated guild. + */ + guild guild_obj; + + /** + * @brief Optional: if this application is a game sold on Discord, this field will be the id of the "Game SKU" that is created, if exists. + */ + snowflake primary_sku_id; + + /** + * @brief Optional: if this application is a game sold on Discord, this field will be the URL slug that links to the store page. + */ + std::string slug; + + /** + * @brief Optional: the application's default rich presence invite cover image hash + */ + utility::iconhash cover_image; + + /** + * @brief Optional: the application's public flags. + */ + uint32_t flags; + + /** + * @brief Optional: Approximate count of guilds the app has been added to. + */ + uint64_t approximate_guild_count; + + /** + * @brief Optional: Array of redirect URIs for the app. + */ + std::vector redirect_uris; + + /** + * @brief Optional: Interactions endpoint URL for the app. + */ + std::string interactions_endpoint_url; + + /** + * @brief The application's role connection verification entry point + * which, when configured, will render the app as a verification method + * in the guild role verification configuration. + */ + std::string role_connections_verification_url; + + /** + * @brief Up to 5 tags describing the content and functionality of the application. + */ + std::vector tags; + + /** + * @brief Settings for the application's default in-app authorization link, if enabled. + */ + application_install_params install_params; + + /** + * @brief The application's default custom authorization link, if enabled. + */ + std::string custom_install_url; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t discoverability_state; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint32_t discovery_eligibility_flags; + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t explicit_content_filter; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t creator_monetization_state; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + bool integration_public; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + bool integration_require_code_grant; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + std::vector interactions_event_types; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t interactions_version; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + bool is_monetized; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint32_t monetization_eligibility_flags; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t monetization_state; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + bool hook; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t rpc_application_state; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t store_application_state; + + /** + * @warning This variable is not documented by discord, we have no idea what it means and how it works. Use at your own risk. + */ + uint8_t verification_state; /** Constructor */ application(); @@ -198,7 +458,9 @@ class DPP_EXPORT application : public managed, public json_interface { * Prefix - word must start with the keyword * * | keyword | matches | - * |----------|-------------------------------------| - * | cat* | catch, Catapult, CAttLE | - * | the mat* | the matrix | - * - * Suffix - word must end with the keyword - * - * | keyword | matches | - * |----------|--------------------------| - * | *cat | wildcat, copyCat | - * | *the mat | breathe mat | - * - * Anywhere - keyword can appear anywhere in the content - * - * | keyword | matches | - * |-----------|-----------------------------| - * | \*cat* | location, eduCation | - * | \*the mat* | breathe matter | - * - * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end - * - * | keyword | matches | - * |---------|-------------| - * | cat | Cat | - * | the mat | the mat | - * + * |----------|-------------------------------------| + * | cat* | catch, Catapult, CAttLE | + * | the mat* | the matrix | + * + * Suffix - word must end with the keyword + * + * | keyword | matches | + * |----------|--------------------------| + * | *cat | wildcat, copyCat | + * | *the mat | breathe mat | + * + * Anywhere - keyword can appear anywhere in the content + * + * | keyword | matches | + * |-----------|-----------------------------| + * | \*cat* | location, eduCation | + * | \*the mat* | breathe matter | + * + * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end + * + * | keyword | matches | + * |---------|-------------| + * | cat | Cat | + * | the mat | the mat | + * */ std::vector keywords; @@ -196,31 +204,31 @@ struct DPP_EXPORT automod_metadata : public json_interface { * Prefix - word must start with the keyword * * | keyword | matches | - * |----------|-------------------------------------| - * | cat* | catch, Catapult, CAttLE | - * | the mat* | the matrix | - * - * Suffix - word must end with the keyword - * - * | keyword | matches | - * |----------|--------------------------| - * | *cat | wildcat, copyCat | - * | *the mat | breathe mat | - * - * Anywhere - keyword can appear anywhere in the content - * - * | keyword | matches | - * |-----------|-----------------------------| - * | \*cat* | location, eduCation | - * | \*the mat* | breathe matter | - * - * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end - * - * | keyword | matches | - * |---------|-------------| - * | cat | Cat | - * | the mat | the mat | - * + * |----------|-------------------------------------| + * | cat* | catch, Catapult, CAttLE | + * | the mat* | the matrix | + * + * Suffix - word must end with the keyword + * + * | keyword | matches | + * |----------|--------------------------| + * | *cat | wildcat, copyCat | + * | *the mat | breathe mat | + * + * Anywhere - keyword can appear anywhere in the content + * + * | keyword | matches | + * |-----------|-----------------------------| + * | \*cat* | location, eduCation | + * | \*the mat* | breathe matter | + * + * Whole Word - keyword is a full word or phrase and must be surrounded by whitespace at the beginning and end + * + * | keyword | matches | + * |---------|-------------| + * | cat | Cat | + * | the mat | the mat | + * */ std::vector allow_list; @@ -326,42 +334,52 @@ class DPP_EXPORT automod_rule : public managed, public json_interface actions; + /** * @brief Whether the rule is enabled */ bool enabled; + /** * @brief the role ids that should not be affected by the rule (Maximum of 20) */ std::vector exempt_roles; + /** * @brief the channel ids that should not be affected by the rule (Maximum of 50) */ diff --git a/include/dpp/ban.h b/include/dpp/ban.h index 2a68696660..6a02352ed1 100644 --- a/include/dpp/ban.h +++ b/include/dpp/ban.h @@ -44,9 +44,14 @@ class DPP_EXPORT ban : public json_interface { ban& fill_from_json_impl(nlohmann::json* j); public: - /** The ban reason */ + /** + * @brief The ban reason. + */ std::string reason; - /** User ID the ban applies to */ + + /** + * @brief User ID the ban applies to. + */ snowflake user_id; /** Constructor */ @@ -57,7 +62,7 @@ class DPP_EXPORT ban : public json_interface { }; /** - * A group of bans. The key is the user ID + * @brief A group of bans. The key is the user ID. */ typedef std::unordered_map ban_map; diff --git a/include/dpp/cache.h b/include/dpp/cache.h index 5895af576d..c43242b444 100644 --- a/include/dpp/cache.h +++ b/include/dpp/cache.h @@ -65,7 +65,7 @@ template class cache { /** * @brief Construct a new cache object. * - * Caches must contain classes derived from dpp::managed. + * @note Caches must contain classes derived from dpp::managed. */ cache() { cache_map = new std::unordered_map; @@ -255,7 +255,8 @@ template class cache { }; -/** Run garbage collection across all caches removing deleted items +/** + * Run garbage collection across all caches removing deleted items * that have been deleted over 60 seconds ago. */ void DPP_EXPORT garbage_collection(); diff --git a/include/dpp/coro/async.h b/include/dpp/coro/async.h index bd78369dd9..2c7c9f13e3 100644 --- a/include/dpp/coro/async.h +++ b/include/dpp/coro/async.h @@ -56,39 +56,54 @@ namespace async { * @brief Represents the step an std::async is at. */ enum class state_t { - sent, /* Request was sent but not co_await-ed. handle is nullptr, result_storage is not constructed */ - waiting, /* Request was co_await-ed. handle is valid, result_storage is not constructed */ - done, /* Request was completed. handle is unknown, result_storage is valid */ - dangling /* Request was never co_await-ed. */ + /** + * @brief Request was sent but not co_await-ed. handle is nullptr, result_storage is not constructed. + */ + sent, + + /** + * @brief Request was co_await-ed. handle is valid, result_storage is not constructed. + */ + waiting, + + /** + * @brief Request was completed. handle is unknown, result_storage is valid. + */ + done, + + /** + * @brief Request was never co_await-ed. + */ + dangling }; /** - * @brief State of the async and its callback. - * - * Defined outside of dpp::async because this seems to work better with Intellisense. - */ + * @brief State of the async and its callback. + * + * Defined outside of dpp::async because this seems to work better with Intellisense. + */ template struct async_callback_data { /** - * @brief Number of references to this callback state. - */ + * @brief Number of references to this callback state. + */ std::atomic ref_count{1}; /** - * @brief State of the awaitable and the API callback - */ + * @brief State of the awaitable and the API callback + */ std::atomic state = state_t::sent; /** - * @brief The stored result of the API call, stored as an array of bytes to directly construct in place - */ + * @brief The stored result of the API call, stored as an array of bytes to directly construct in place + */ alignas(R) std::array result_storage; /** - * @brief Handle to the coroutine co_await-ing on this API call - * - * @see std::coroutine_handle - */ + * @brief Handle to the coroutine co_await-ing on this API call + * + * @see std::coroutine_handle + */ std_coroutine::coroutine_handle<> coro_handle = nullptr; /** @@ -374,7 +389,8 @@ class async_base { struct confirmation_callback_t; -/** @class async async.h coro/async.h +/** + * @class async async.h coro/async.h * @brief A co_await-able object handling an API call in parallel with the caller. * * This class is the return type of the dpp::cluster::co_* methods, but it can also be created manually to wrap any async call. diff --git a/include/dpp/coro/coro.h b/include/dpp/coro/coro.h index 2dd0836b94..76f3256ed8 100644 --- a/include/dpp/coro/coro.h +++ b/include/dpp/coro/coro.h @@ -45,17 +45,17 @@ namespace std { namespace dpp { /** - * @brief Implementation details for internal use only. - * - * @attention This is only meant to be used by D++ internally. Support will not be given regarding the facilities in this namespace. - */ + * @brief Implementation details for internal use only. + * + * @attention This is only meant to be used by D++ internally. Support will not be given regarding the facilities in this namespace. + */ namespace detail { #ifdef _DOXYGEN_ /** - * @brief Alias for either std or std::experimental depending on compiler and library. Used by coroutine implementation. - * - * @todo Remove and use std when all supported libraries have coroutines in it - */ + * @brief Alias for either std or std::experimental depending on compiler and library. Used by coroutine implementation. + * + * @todo Remove and use std when all supported libraries have coroutines in it + */ namespace std_coroutine {} #else # ifdef STDCORO_EXPERIMENTAL_NAMESPACE diff --git a/include/dpp/coro/coroutine.h b/include/dpp/coro/coroutine.h index ea656f578e..a03d670b41 100644 --- a/include/dpp/coro/coroutine.h +++ b/include/dpp/coro/coroutine.h @@ -51,8 +51,8 @@ struct promise_t; template /** - * @brief Alias for the handle_t of a coroutine. - */ + * @brief Alias for the handle_t of a coroutine. + */ using handle_t = std_coroutine::coroutine_handle>; /** @@ -188,7 +188,8 @@ class coroutine_base { } // namespace detail -/** @class coroutine coroutine.h coro/coroutine.h +/** + * @class coroutine coroutine.h coro/coroutine.h * @brief Base type for a coroutine, starts on co_await. * * @warning - This feature is EXPERIMENTAL. The API may change at any time and there may be bugs. diff --git a/include/dpp/coro/job.h b/include/dpp/coro/job.h index f7371977d2..ed6ab2518c 100644 --- a/include/dpp/coro/job.h +++ b/include/dpp/coro/job.h @@ -38,7 +38,8 @@ struct job_dummy { namespace dpp { -/** @class job job.h coro/job.h +/** + * @class job job.h coro/job.h * @brief Extremely light coroutine object designed to send off a coroutine to execute on its own. * Can be used in conjunction with coroutine events via @ref dpp::event_router_t::operator()(F&&) "event routers", or on its own. * @@ -78,20 +79,20 @@ struct promise { } #endif - /* - * @brief Function called when the job is done. - * - * @return std::suspend_never Do not suspend at the end, destroying the handle immediately - */ + /** + * @brief Function called when the job is done. + * + * @return std::suspend_never Do not suspend at the end, destroying the handle immediately + */ std_coroutine::suspend_never final_suspend() const noexcept { return {}; } - /* - * @brief Function called when the job is started. - * - * @return std::suspend_never Do not suspend at the start, starting the job immediately - */ + /** + * @brief Function called when the job is started. + * + * @return std::suspend_never Do not suspend at the start, starting the job immediately + */ std_coroutine::suspend_never initial_suspend() const noexcept { return {}; } diff --git a/include/dpp/coro/task.h b/include/dpp/coro/task.h index c208440de5..5cdf4577d1 100644 --- a/include/dpp/coro/task.h +++ b/include/dpp/coro/task.h @@ -51,15 +51,25 @@ namespace detail { /* Internal cogwheels for dpp::task */ namespace task { -/** @brief State of a task */ +/** + * @brief State of a task + */ enum class state_t { - /** @brief Task was started but never co_await-ed */ + /** + * @brief Task was started but never co_await-ed + */ started, - /** @brief Task was co_await-ed and is pending completion */ + /** + * @brief Task was co_await-ed and is pending completion + */ awaited, - /** @brief Task is completed */ + /** + * @brief Task is completed + */ done, - /** @brief Task is still running but the actual dpp::task object is destroyed */ + /** + * @brief Task is still running but the actual dpp::task object is destroyed + */ dangling }; @@ -261,7 +271,8 @@ class task_base { } // namespace detail -/** @class task task.h coro/task.h +/** + * @class task task.h coro/task.h * @brief A coroutine task. It starts immediately on construction and can be co_await-ed, making it perfect for parallel coroutines returning a value. * * @warning - This feature is EXPERIMENTAL. The API may change at any time and there may be bugs. @@ -487,7 +498,7 @@ class task : private detail::task::task_base { #endif /* _DOXYGEN_ */ namespace detail::task { - /** +/** * @brief Awaitable returned from task::promise_t's final_suspend. Resumes the parent and cleans up its handle if needed */ template @@ -499,7 +510,7 @@ struct final_awaiter { return (false); } - /* + /** * @brief The suspension logic of the coroutine when it finishes. Always suspend the caller, meaning cleaning up the handle is on us * * @param handle The handle of this coroutine @@ -507,7 +518,7 @@ struct final_awaiter { */ [[nodiscard]] std_coroutine::coroutine_handle<> await_suspend(handle_t handle) const noexcept; - /* + /** * @brief Function called when this object is co_awaited by the standard library at the end of final_suspend. Do nothing, return nothing */ void await_resume() const noexcept {} diff --git a/include/dpp/coro/when_any.h b/include/dpp/coro/when_any.h index 96952c17e7..1e3fd5a359 100644 --- a/include/dpp/coro/when_any.h +++ b/include/dpp/coro/when_any.h @@ -45,18 +45,30 @@ class awaitable; } -/** @brief Internal cogwheels for dpp::when_any */ +/** + * @brief Internal cogwheels for dpp::when_any + */ namespace when_any { -/** @brief Current state of a when_any object */ +/** + * @brief Current state of a when_any object + */ enum class await_state { - /** @brief Object was started but not awaited */ + /** + * @brief Object was started but not awaited + */ started, - /** @brief Object is being awaited */ + /** + * @brief Object is being awaited + */ waiting, - /** @brief Object was resumed*/ + /** + * @brief Object was resumed + */ done, - /** @brief Object was destroyed */ + /** + * @brief Object was destroyed + */ dangling }; @@ -102,14 +114,20 @@ using awaitable_type = typename arg_helper_s::type; template using arg_helper = arg_helper_s>; -/** @brief Empty result from void-returning awaitable */ +/** + * @brief Empty result from void-returning awaitable + */ struct empty{}; -/** @brief Actual type a result will be stores as in when_any */ +/** + * @brief Actual type a result will be stores as in when_any + */ template using storage_type = std::conditional_t, empty, T>; -/** @brief Concept satisfied if a stored result is void */ +/** + * @brief Concept satisfied if a stored result is void + */ template concept void_result = std::same_as; @@ -117,7 +135,8 @@ concept void_result = std::same_as; } // namespace detail -/** @class when_any when_any.h coro/when_any.h +/** + * @class when_any when_any.h coro/when_any.h * @brief Experimental class to co_await on a bunch of awaitable objects, resuming when the first one completes. * On completion, returns a @ref result object that contains the index of the awaitable that finished first. * A user can call @ref result::index() and @ref result::get() on the result object to get the result, similar to std::variant. @@ -130,7 +149,9 @@ template requires (sizeof...(Args) >= 1) #endif class when_any { - /** @brief Alias for the type of the result variant */ + /** + * @brief Alias for the type of the result variant + */ using variant_type = std::variant>>...>; /** @@ -193,9 +214,9 @@ class when_any { template static dpp::job make_job(std::shared_ptr shared_state) { /** - * Any exceptions from the awaitable's await_suspend should be thrown to the caller (the coroutine creating the when_any object) - * If the co_await passes, and it is the first one to complete, try construct the result, catch any exceptions to rethrow at resumption, and resume. - */ + * Any exceptions from the awaitable's await_suspend should be thrown to the caller (the coroutine creating the when_any object) + * If the co_await passes, and it is the first one to complete, try construct the result, catch any exceptions to rethrow at resumption, and resume. + */ if constexpr (!std::same_as, detail::when_any::empty>) { decltype(auto) result = co_await std::get(shared_state->awaitables); @@ -236,7 +257,8 @@ class when_any { } /** - * @brief Spawn a dpp::job to handle each awaitable. Each of them will co_await the awaitable and set the result if they are the first to finish + * @brief Spawn a dpp::job to handle each awaitable. + * Each of them will co_await the awaitable and set the result if they are the first to finish */ void make_jobs() { [](when_any *self, std::index_sequence) { @@ -251,26 +273,40 @@ class when_any { class result { friend class when_any; - /** @brief Reference to the shared state to pull the data from */ + /** + * @brief Reference to the shared state to pull the data from + */ std::shared_ptr shared_state; - /** @brief Default construction is deleted */ + /** + * @brief Default construction is deleted + */ result() = delete; - /** @brief Internal constructor taking the shared state */ + /** + * @brief Internal constructor taking the shared state + */ result(std::shared_ptr state) : shared_state{state} {} public: - /** @brief Move constructor */ + /** + * @brief Move constructor + */ result(result&&) = default; - /** @brief This object is not copyable. */ + /** + * @brief This object is not copyable. + */ result(const result &) = delete; - /** @brief Move assignment operator */ + /** + * @brief Move assignment operator + */ result &operator=(result&&) = default; - /** @brief This object is not copyable. */ + /** + * @brief This object is not copyable. + */ result &operator=(const result&) = delete; /** @@ -361,7 +397,9 @@ class when_any { * @see result */ struct awaiter { - /** @brief Pointer to the when_any object */ + /** + * @brief Pointer to the when_any object + */ when_any *self; /** @@ -394,7 +432,10 @@ class when_any { } }; - /** @brief Default constructor. A when_any object created this way holds no state */ + /** + * @brief Default constructor. + * A when_any object created this way holds no state + */ when_any() = default; /** @@ -411,10 +452,14 @@ class when_any { make_jobs(); } - /** @brief This object is not copyable. */ + /** + * @brief This object is not copyable. + */ when_any(const when_any &) = delete; - /** @brief Move constructor. */ + /** + * @brief Move constructor. + */ when_any(when_any &&) noexcept = default; /** @@ -444,10 +489,14 @@ class when_any { }(this, std::index_sequence_for()); } - /** @brief This object is not copyable. */ + /** + * @brief This object is not copyable. + */ when_any &operator=(const when_any &) = delete; - /** @brief Move assignment operator. */ + /** + * @brief Move assignment operator. + */ when_any &operator=(when_any &&) noexcept = default; /** diff --git a/include/dpp/sku.h b/include/dpp/sku.h index 88b07d0728..80db89ff2e 100644 --- a/include/dpp/sku.h +++ b/include/dpp/sku.h @@ -38,6 +38,7 @@ enum sku_type : uint8_t { * @brief Represents a recurring subscription */ SUBSCRIPTION = 5, + /** * @brief System-generated group for each SUBSCRIPTION SKU created * @warning These are automatically created for each subscription SKU and are not used at this time. Please refrain from using these. @@ -53,10 +54,12 @@ enum sku_flags : uint16_t { * @brief SKU is available for purchase */ sku_available = 0b000000000000100, + /** * @brief Recurring SKU that can be purchased by a user and applied to a single server. Grants access to every user in that server. */ sku_guild_subscription = 0b000000010000000, + /** * @brief Recurring SKU purchased by a user for themselves. Grants access to the purchasing user in every server. */ diff --git a/include/dpp/wsclient.h b/include/dpp/wsclient.h index c7cb3b143e..7f047fd6c6 100644 --- a/include/dpp/wsclient.h +++ b/include/dpp/wsclient.h @@ -37,6 +37,7 @@ enum websocket_protocol_t : uint8_t { * @brief JSON data, text, UTF-8 character set */ ws_json = 0, + /** * @brief Erlang Term Format (ETF) binary protocol */ @@ -65,12 +66,35 @@ enum ws_state : uint8_t { */ enum ws_opcode : uint8_t { - OP_CONTINUATION = 0x00, //!< Continuation - OP_TEXT = 0x01, //!< Text frame - OP_BINARY = 0x02, //!< Binary frame - OP_CLOSE = 0x08, //!< Close notification with close code - OP_PING = 0x09, //!< Low level ping - OP_PONG = 0x0a //!< Low level pong + /** + * @brief Continuation. + */ + OP_CONTINUATION = 0x00, + + /** + * @brief Text frame. + */ + OP_TEXT = 0x01, + + /** + * @brief Binary frame. + */ + OP_BINARY = 0x02, + + /** + * @brief Close notification with close code. + */ + OP_CLOSE = 0x08, + + /** + * @brief Low level ping. + */ + OP_PING = 0x09, + + /** + * @brief Low level pong. + */ + OP_PONG = 0x0a }; /** From 596e76ea2b0e8511f61a1ec4196bae497d1a6dc7 Mon Sep 17 00:00:00 2001 From: Archie Jaskowicz Date: Mon, 30 Oct 2023 12:59:13 +0000 Subject: [PATCH 09/11] refactor: renamed inner_emoji to component_emoji, changed select_menu and component to use it. (#974) --- include/dpp/message.h | 94 ++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 51 deletions(-) diff --git a/include/dpp/message.h b/include/dpp/message.h index f877bb2db6..bd1864f4f4 100644 --- a/include/dpp/message.h +++ b/include/dpp/message.h @@ -54,6 +54,43 @@ enum component_type : uint8_t { cot_channel_selectmenu = 8, }; +/** + * @brief An emoji for a component (select menus included). + * + * To set an emoji on your button, you must set one of either the name or id fields. + * The easiest way is to use the dpp::component::set_emoji method. + * + * @note This is a **very** scaled down version of dpp::emoji, we advise that you refrain from using this. + */ +struct component_emoji { + /** + * @brief The name of the emoji. + * + * For built in unicode emojis, set this to the + * actual unicode value of the emoji e.g. "😄" + * and not for example ":smile:" + */ + std::string name{""}; + + /** + * @brief The emoji ID value for emojis that are custom + * ones belonging to a guild. + * + * The same rules apply as with other emojis, + * that the bot must be on the guild where the emoji resides + * and it must be available for use + * (e.g. not disabled due to lack of boosts, etc) + */ + dpp::snowflake id{0}; + + /** + * @brief Is the emoji animated? + * + * @note Only applies to custom emojis. + */ + bool animated{false}; +}; + /** * @brief Types of text input */ @@ -135,35 +172,11 @@ struct DPP_EXPORT select_option : public json_interface { * @brief True if option is the default option */ bool is_default; + /** - * @brief Emoji definition. To set an emoji on your button - * you must set one of either the name or id fields. - * The easiest way is to use the component::set_emoji - * method. + * @brief The emoji for the select option. */ - struct inner_select_emoji { - /** - * @brief Set the name field to the name of the emoji. - * For built in unicode emojis, set this to the - * actual unicode value of the emoji e.g. "😄" - * and not for example ":smile:" - */ - std::string name; - /** - * @brief The emoji ID value for emojis that are custom - * ones belonging to a guild. The same rules apply - * as with other emojis, that the bot must be on - * the guild where the emoji resides and it must - * be available for use (e.g. not disabled due to - * lack of boosts etc) - */ - dpp::snowflake id = 0; - /** - * @brief True if the emoji is animated. Only applies to - * custom emojis. - */ - bool animated = false; - } emoji; + component_emoji emoji; /** * @brief Construct a new select option object @@ -340,31 +353,10 @@ class DPP_EXPORT component : public json_interface { */ std::variant value; - /** Emoji definition. To set an emoji on your button - * you must set one of either the name or id fields. - * The easiest way is to use the component::set_emoji - * method. + /** + * @brief The emoji for this component. */ - struct inner_emoji { - /** Set the name field to the name of the emoji. - * For built in unicode emojis, set this to the - * actual unicode value of the emoji e.g. "😄" - * and not for example ":smile:" - */ - std::string name; - /** The emoji ID value for emojis that are custom - * ones belonging to a guild. The same rules apply - * as with other emojis, that the bot must be on - * the guild where the emoji resides and it must - * be available for use (e.g. not disabled due to - * lack of boosts etc) - */ - dpp::snowflake id; - /** True if the emoji is animated. Only applies to - * custom emojis. - */ - bool animated; - } emoji; + component_emoji emoji; /** Constructor */ From 6622b25613fd3b380a07817b5c06b7f880c99da5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 09:00:08 -0400 Subject: [PATCH 10/11] build(deps): bump doxygen-awesome-css from `00a52f6` to `8cea9a0` (#976) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- doxygen-awesome-css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen-awesome-css b/doxygen-awesome-css index 00a52f6c74..8cea9a073e 160000 --- a/doxygen-awesome-css +++ b/doxygen-awesome-css @@ -1 +1 @@ -Subproject commit 00a52f6c74065ffbd836cbd791ddfe8edf2836b8 +Subproject commit 8cea9a073ecd50a5b2c0958a3df100292d6c7374 From 3eaf6682712ad34b0089cfb501ad50746cb577a2 Mon Sep 17 00:00:00 2001 From: Archie Jaskowicz Date: Mon, 30 Oct 2023 13:00:41 +0000 Subject: [PATCH 11/11] style: refactored comments part 2 (#977) --- include/dpp/auditlog.h | 515 ++++++++--- include/dpp/channel.h | 346 ++++++-- include/dpp/collector.h | 54 +- include/dpp/colors.h | 1433 +++++++++++++++--------------- include/dpp/commandhandler.h | 54 +- include/dpp/discordevents.h | 66 +- include/dpp/discordvoiceclient.h | 11 + include/dpp/dispatcher.h | 305 +++++-- include/dpp/dtemplate.h | 13 +- include/dpp/emoji.h | 19 +- include/dpp/entitlement.h | 2 + include/dpp/etf.h | 196 ++-- include/dpp/event.h | 3 +- include/dpp/event_router.h | 17 +- 14 files changed, 1920 insertions(+), 1114 deletions(-) diff --git a/include/dpp/auditlog.h b/include/dpp/auditlog.h index f5cc599baa..90339ec331 100644 --- a/include/dpp/auditlog.h +++ b/include/dpp/auditlog.h @@ -33,117 +33,284 @@ namespace dpp { * @brief Defines types of audit log entry */ enum audit_type { - /// Guild update - aut_guild_update = 1, - /// Channel create - aut_channel_create = 10, - /// Channel update - aut_channel_update = 11, - /// Channel delete - aut_channel_delete = 12, - /// Channel overwrite create - aut_channel_overwrite_create = 13, - /// Channel overwrite update - aut_channel_overwrite_update = 14, - /// Channel overwrite delete - aut_channel_overwrite_delete = 15, - /// Channel member kick - aut_member_kick = 20, - /// Channel member prune - aut_member_prune = 21, - /// Channel member ban add - aut_member_ban_add = 22, - /// Channel member ban remove - aut_member_ban_remove = 23, - /// Guild member update - aut_member_update = 24, - /// Guild member role update - aut_member_role_update = 25, - /// Guild member move - aut_member_move = 26, - /// Guild member voice disconnect - aut_member_disconnect = 27, - /// Guild bot add - aut_bot_add = 28, - /// Guild role create - aut_role_create = 30, - /// Guild role update - aut_role_update = 31, - /// Guild role delete - aut_role_delete = 32, - /// Guild invite create - aut_invite_create = 40, - /// Guild invite update - aut_invite_update = 41, - /// Guild invite delete - aut_invite_delete = 42, - /// Guild webhook create - aut_webhook_create = 50, - /// Guild webhook update - aut_webhook_update = 51, - /// Guild webhook delete - aut_webhook_delete = 52, - /// Guild emoji create - aut_emoji_create = 60, - /// Guild emoji update - aut_emoji_update = 61, - /// Guild emoji delete - aut_emoji_delete = 62, - /// Guild message delete - aut_message_delete = 72, - /// Guild message bulk delete - aut_message_bulk_delete = 73, - /// Guild message pin - aut_message_pin = 74, - /// Guild message unpin - aut_message_unpin = 75, - /// Guild integration create - aut_integration_create = 80, - /// Guild integration update - aut_integration_update = 81, - /// Guild integration delete - aut_integration_delete = 82, - /// Stage instance create - aut_stage_instance_create = 83, - /// Stage instance update - aut_stage_instance_update = 84, - /// stage instance delete - aut_stage_instance_delete = 85, - /// Sticker create - aut_sticker_create = 90, - /// Sticker update - aut_sticker_update = 91, - /// Sticker delete - aut_sticker_delete = 92, - /// Scheduled event creation - aut_guild_scheduled_event_create = 100, - /// Scheduled event update - aut_guild_scheduled_event_update = 101, - /// Scheduled event deletion - aut_guild_scheduled_event_delete = 102, - /// Thread create - aut_thread_create = 110, - /// Thread update - aut_thread_update = 111, - /// Thread delete - aut_thread_delete = 112, - /// Application command permissions update - aut_appcommand_permission_update = 121, - /// Auto moderation rule creation - aut_automod_rule_create = 140, - /// Auto moderation rule update - aut_automod_rule_update = 141, - /// Auto moderation rule deletion - aut_automod_rule_delete = 142, - /// Message was blocked by Auto Moderation - aut_automod_block_message = 143, - /// Message was flagged by Auto Moderation - aut_automod_flag_to_channel = 144, - /// Member was timed out by Auto Moderation - aut_automod_user_communication_disabled = 145, - /// Creator monetization request was created + /** + * @brief Guild update + */ + aut_guild_update = 1, + + /** + * @brief Channel create + */ + aut_channel_create = 10, + + /** + * @brief Channel update + */ + aut_channel_update = 11, + + /** + * @brief Channel delete + */ + aut_channel_delete = 12, + + /** + * @brief Channel overwrite create + */ + aut_channel_overwrite_create = 13, + + /** + * @brief Channel overwrite update + */ + aut_channel_overwrite_update = 14, + + /** + * @brief Channel overwrite delete + */ + aut_channel_overwrite_delete = 15, + + /** + * @brief Channel member kick + */ + aut_member_kick = 20, + + /** + * @brief Channel member prune + */ + aut_member_prune = 21, + + /** + * @brief Channel member ban add + */ + aut_member_ban_add = 22, + + /** + * @brief Channel member ban remove + */ + aut_member_ban_remove = 23, + + /** + * @brief Guild member update + */ + aut_member_update = 24, + + /** + * @brief Guild member role update + */ + aut_member_role_update = 25, + + /** + * @brief Guild member move + */ + aut_member_move = 26, + + /** + * @brief Guild member voice disconnect + */ + aut_member_disconnect = 27, + + /** + * @brief Guild bot add + */ + aut_bot_add = 28, + + /** + * @brief Guild role create + */ + aut_role_create = 30, + + /** + * @brief Guild role update + */ + aut_role_update = 31, + + /** + * @brief Guild role delete + */ + aut_role_delete = 32, + + /** + * @brief Guild invite create + */ + aut_invite_create = 40, + + /** + * @brief Guild invite update + */ + aut_invite_update = 41, + + /** + * @brief Guild invite delete + */ + aut_invite_delete = 42, + + /** + * @brief Guild webhook create + */ + aut_webhook_create = 50, + + /** + * @brief Guild webhook update + */ + aut_webhook_update = 51, + + /** + * @brief Guild webhook delete + */ + aut_webhook_delete = 52, + + /** + * @brief Guild emoji create + */ + aut_emoji_create = 60, + + /** + * @brief Guild emoji update + */ + aut_emoji_update = 61, + + /** + * @brief Guild emoji delete + */ + aut_emoji_delete = 62, + + /** + * @brief Guild message delete + */ + aut_message_delete = 72, + + /** + * @brief Guild message bulk delete + */ + aut_message_bulk_delete = 73, + + /** + * @brief Guild message pin + */ + aut_message_pin = 74, + + /** + * @brief Guild message unpin + */ + aut_message_unpin = 75, + + /** + * @brief Guild integration create + */ + aut_integration_create = 80, + + /** + * @brief Guild integration update + */ + aut_integration_update = 81, + + /** + * @brief Guild integration delete + */ + aut_integration_delete = 82, + + /** + * @brief Stage instance create + */ + aut_stage_instance_create = 83, + + /** + * @brief Stage instance update + */ + aut_stage_instance_update = 84, + + /** + * @brief stage instance delete + */ + aut_stage_instance_delete = 85, + + /** + * @brief Sticker create + */ + aut_sticker_create = 90, + + /** + * @brief Sticker update + */ + aut_sticker_update = 91, + + /** + * @brief Sticker delete + */ + aut_sticker_delete = 92, + + /** + * @brief Scheduled event creation + */ + aut_guild_scheduled_event_create = 100, + + /** + * @brief Scheduled event update + */ + aut_guild_scheduled_event_update = 101, + + /** + * @brief Scheduled event deletion + */ + aut_guild_scheduled_event_delete = 102, + + /** + * @brief Thread create + */ + aut_thread_create = 110, + + /** + * @brief Thread update + */ + aut_thread_update = 111, + + /** + * @brief Thread delete + */ + aut_thread_delete = 112, + + /** + * @brief Application command permissions update + */ + aut_appcommand_permission_update = 121, + + /** + * @brief Auto moderation rule creation + */ + aut_automod_rule_create = 140, + + /** + * @brief Auto moderation rule update + */ + aut_automod_rule_update = 141, + + /** + * @brief Auto moderation rule deletion + */ + aut_automod_rule_delete = 142, + + /** + * @brief Message was blocked by Auto Moderation + */ + aut_automod_block_message = 143, + + /** + * @brief Message was flagged by Auto Moderation + */ + aut_automod_flag_to_channel = 144, + + /** + * @brief Member was timed out by Auto Moderation + */ + aut_automod_user_communication_disabled = 145, + + /** + * @brief Creator monetization request was created + */ aut_creator_monetization_request_created = 150, - /// Creator monetization terms were accepted + + /** + * @brief Creator monetization terms were accepted + */ aut_creator_monetization_terms_accepted = 151, }; @@ -151,32 +318,81 @@ enum audit_type { * @brief Defines audit log changes */ struct DPP_EXPORT audit_change { - /// Optional: Serialised new value of the change, e.g. for nicknames, the new nickname - std::string new_value; - /// Optional: Serialised old value of the change, e.g. for nicknames, the old nickname - std::string old_value; /** - * The property name that was changed, e.g. `nick` for nickname changes - * @note For dpp::aut_appcommand_permission_update updates the key is the id of the user, channel, role, or a permission constant that was updated instead of an actual property name + * @brief Optional: Serialised new value of the change, e.g. for nicknames, the new nickname. + */ + std::string new_value; + + /** + * @brief Optional: Serialised old value of the change, e.g. for nicknames, the old nickname. + */ + std::string old_value; + + /** + * @brief The property name that was changed (e.g. `nick` for nickname changes). + * @note For dpp::aut_appcommand_permission_update updates the key is the id of the user, channel, role, or a permission constant that was updated instead of an actual property name. */ - std::string key; + std::string key; }; /** * @brief Extra information for an audit log entry */ struct DPP_EXPORT audit_extra { - std::string automod_rule_name; //!< Name of the Auto Moderation rule that was triggered - std::string automod_rule_trigger_type; //!< Trigger type of the Auto Moderation rule that was triggered - std::string delete_member_days; //!< number of days after which inactive members were kicked - std::string members_removed; //!< number of members removed by the prune - snowflake channel_id; //!< channel in which the entities were targeted - snowflake message_id; //!< id of the message that was targeted - std::string count; //!< number of entities that were targeted - snowflake id; //!< id of the overwritten entity - std::string type; //!< type of overwritten entity - "0" for "role" or "1" for "member" - std::string role_name; //!< name of the role if type is "0" (not present if type is "1") - snowflake application_id; //!< ID of the app whose permissions were targeted + /** + * @brief Name of the Auto Moderation rule that was triggered. + */ + std::string automod_rule_name; + + /** + * @brief Trigger type of the Auto Moderation rule that was triggered. + */ + std::string automod_rule_trigger_type; + + /** + * @brief Number of days after which inactive members were kicked. + */ + std::string delete_member_days; + + /** + * @brief Number of members removed by the prune. + */ + std::string members_removed; + + /** + * @brief Channel in which the entities were targeted. + */ + snowflake channel_id; + + /** + * @brief ID of the message that was targeted. + */ + snowflake message_id; + + /** + * @brief Number of entities that were targeted. + */ + std::string count; + + /** + * @brief ID of the overwritten entity. + */ + snowflake id; + + /** + * @brief Type of overwritten entity - "0" for "role" or "1" for "member" + */ + std::string type; + + /** + * @brief Name of the role if type is "0" (not present if type is "1"). + */ + std::string role_name; + + /** + * @brief ID of the app whose permissions were targeted + */ + snowflake application_id; }; /** @@ -193,17 +409,41 @@ struct DPP_EXPORT audit_entry : public json_interface { audit_entry& fill_from_json_impl(nlohmann::json* j); public: - snowflake id; //!< id of the entry + /** + * @brief ID of the entry. + */ + snowflake id; + /** * ID of the affected entity (webhook, user, role, etc.) (may be empty) * @note For dpp::audit_type::aut_appcommand_permission_update updates, it's the command ID or the app ID */ - snowflake target_id; - std::vector changes; //!< Optional: changes made to the target_id - snowflake user_id; //!< the user or app that made the changes (may be empty) - audit_type type; //!< type of action that occurred - std::optional extra; //!< Optional: additional info for certain action types - std::string reason; //!< Optional: the reason for the change (1-512 characters) + snowflake target_id; + + /** + * @brief Optional: changes made to the target_id. + */ + std::vector changes; + + /** + * @brief The user or app that made the changes (may be empty). + */ + snowflake user_id; + + /** + * @brief Type of action that occurred. + */ + audit_type type; + + /** + * @brief Optional: additional info for certain action types. + */ + std::optional extra; + + /** + * @brief Optional: the reason for the change (1-512 characters). + */ + std::string reason; /** Constructor */ audit_entry(); @@ -226,7 +466,10 @@ class DPP_EXPORT auditlog : public json_interface { auditlog& fill_from_json_impl(nlohmann::json* j); public: - std::vector entries; //!< Audit log entries + /** + * @brief Audit log entries. + */ + std::vector entries; /** Constructor */ auditlog() = default; diff --git a/include/dpp/channel.h b/include/dpp/channel.h index 14c1d92396..59080ee0df 100644 --- a/include/dpp/channel.h +++ b/include/dpp/channel.h @@ -37,28 +37,81 @@ namespace dpp { /** @brief Flag integers as received from and sent to discord */ enum channel_type : uint8_t { - CHANNEL_TEXT = 0, //!< a text channel within a server - DM = 1, //!< a direct message between users - CHANNEL_VOICE = 2, //!< a voice channel within a server + /** + * @brief A text channel within a server. + */ + CHANNEL_TEXT = 0, + + /** + * @brief A direct message between users. + */ + DM = 1, + + /** + * @brief A voice channel within a server. + */ + CHANNEL_VOICE = 2, + /** * @brief a direct message between multiple users - * @deprecated this channel type was intended to be used with the now deprecated GameBridge SDK. Existing group dms with bots will continue to function, but newly created channels will be unusable + * @deprecated this channel type was intended to be used with the now deprecated GameBridge SDK. + * Existing group dms with bots will continue to function, but newly created channels will be unusable. */ - GROUP_DM = 3, - CHANNEL_CATEGORY = 4, //!< an organizational category that contains up to 50 channels - CHANNEL_ANNOUNCEMENT = 5, //!< a channel that users can follow and crosspost into their own server + GROUP_DM = 3, + /** - * @brief a channel in which game developers can sell their game on Discord - * @deprecated store channels are deprecated by Discord + * @brief An organizational category that contains up to 50 channels. */ - CHANNEL_STORE = 6, - CHANNEL_ANNOUNCEMENT_THREAD = 10, //!< a temporary sub-channel within a GUILD_ANNOUNCEMENT channel - CHANNEL_PUBLIC_THREAD = 11, //!< a temporary sub-channel within a GUILD_TEXT or GUILD_FORUM channel - CHANNEL_PRIVATE_THREAD = 12, //!< a temporary sub-channel within a GUILD_TEXT channel that is only viewable by those invited and those with the MANAGE_THREADS permission - CHANNEL_STAGE = 13, //!< a "stage" channel, like a voice channel with one authorised speaker - CHANNEL_DIRECTORY = 14, //!< the channel in a [hub](https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ) containing the listed servers - CHANNEL_FORUM = 15, //!< forum channel that can only contain threads - CHANNEL_MEDIA = 16, //!< Media channel that can only contain threads, similar to forum channels + CHANNEL_CATEGORY = 4, + + /** + * @brief A channel that users can follow and cross-post into their own server. + */ + CHANNEL_ANNOUNCEMENT = 5, + + /** + * @brief A channel in which game developers can sell their game on Discord. + * @deprecated Store channels are deprecated by Discord. + */ + CHANNEL_STORE = 6, + + /** + * @brief A temporary sub-channel within a `GUILD_ANNOUNCEMENT` channel. + */ + CHANNEL_ANNOUNCEMENT_THREAD = 10, + + /** + * @brief A temporary sub-channel within a `GUILD_TEXT` or `GUILD_FORUM` channel. + */ + CHANNEL_PUBLIC_THREAD = 11, + + /** + * @brief A temporary sub-channel within a `GUILD_TEXT` channel + * that is only viewable by those invited and those with the `MANAGE_THREADS` permission. + */ + CHANNEL_PRIVATE_THREAD = 12, + + /** + * @brief A "stage" channel, like a voice channel with one authorised speaker. + */ + CHANNEL_STAGE = 13, + + /** + * @brief The channel in a hub containing the listed servers. + * + * @see https://support.discord.com/hc/en-us/articles/4406046651927-Discord-Student-Hubs-FAQ + */ + CHANNEL_DIRECTORY = 14, + + /** + * @brief Forum channel that can only contain threads. + */ + CHANNEL_FORUM = 15, + + /** + * @brief Media channel that can only contain threads, similar to forum channels. + */ + CHANNEL_MEDIA = 16, }; /** @brief Our flags as stored in the object @@ -68,18 +121,36 @@ enum channel_type : uint8_t { */ enum channel_flags : uint16_t { /* Note that bits 1 to 4 are used for the channel type mask */ - /// NSFW Gated Channel + /** + * @brief NSFW Gated Channel + */ c_nsfw = 0b0000000000010000, - /// Video quality forced to 720p + + /** + * @brief Video quality forced to 720p + */ c_video_quality_720p = 0b0000000000100000, - /// Lock permissions (only used when updating channel positions) + + /** + * @brief Lock permissions (only used when updating channel positions) + */ c_lock_permissions = 0b0000000001000000, - /// Thread is pinned to the top of its parent forum or media channel + + /** + * @brief Thread is pinned to the top of its parent forum or media channel + */ c_pinned_thread = 0b0000000010000000, - /// Whether a tag is required to be specified when creating a thread in a forum or a media channel. Tags are specified in the thread::applied_tags field. + + /** + * @brief Whether a tag is required to be specified when creating a thread in a forum or media channel. + * Tags are specified in the thread::applied_tags field. + */ c_require_tag = 0b0000000100000000, - /* Note that the 9th and 10th bit are used for the forum layout type */ - /// When set hides the embedded media download options. Available only for media channels + + /* Note that the 9th and 10th bit are used for the forum layout type. */ + /** + * @brief When set hides the embedded media download options. Available only for media channels + */ c_hide_media_download_options = 0b0001000000000000, }; @@ -87,9 +158,14 @@ enum channel_flags : uint16_t { * @brief Types for sort posts in a forum channel */ enum default_forum_sort_order_t : uint8_t { - /// Sort forum posts by activity (default) + /** + * @brief Sort forum posts by activity (default) + */ so_latest_activity = 0, - /// Sort forum posts by creation time (from most recent to oldest) + + /** + * @brief Sort forum posts by creation time (from most recent to oldest) + */ so_creation_date = 1, }; @@ -97,18 +173,34 @@ enum default_forum_sort_order_t : uint8_t { * @brief Types of forum layout views that indicates how the threads in a forum channel will be displayed for users by default */ enum forum_layout_type : uint8_t { - fl_not_set = 0, //!< No default has been set for the forum channel - fl_list_view = 1, //!< Display posts as a list - fl_gallery_view = 2, //!< Display posts as a collection of tiles + /** + * @brief No default has been set for the forum channel + */ + fl_not_set = 0, + + /** + * @brief Display posts as a list + */ + fl_list_view = 1, + + /** + * @brief Display posts as a collection of tiles + */ + fl_gallery_view = 2, }; /** * @brief channel permission overwrite types */ enum overwrite_type : uint8_t { - /// Role + /** + * @brief Role + */ ot_role = 0, - /// Member + + /** + * @brief Member + */ ot_member = 1 }; @@ -116,13 +208,24 @@ enum overwrite_type : uint8_t { * @brief Channel permission overwrites */ struct DPP_EXPORT permission_overwrite { - /// ID of the role or the member + /** + * @brief ID of the role or the member + */ snowflake id; - /// Bitmask of allowed permissions + + /** + * @brief Bitmask of allowed permissions + */ permission allow; - /// Bitmask of denied permissions + + /** + * @brief Bitmask of denied permissions + */ permission deny; - /// Type of overwrite. See dpp::overwrite_type + + /** + * @brief Type of overwrite. See dpp::overwrite_type + */ uint8_t type; /** @@ -145,15 +248,30 @@ struct DPP_EXPORT permission_overwrite { * @brief metadata for threads */ struct DPP_EXPORT thread_metadata { - /// Timestamp when the thread's archive status was last changed, used for calculating recent activity + /** + * @brief Timestamp when the thread's archive status was last changed, used for calculating recent activity. + */ time_t archive_timestamp; - /// The duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 + + /** + * @brief The duration in minutes to automatically archive the thread after recent activity (60, 1440, 4320, 10080). + */ uint16_t auto_archive_duration; - /// Whether a thread is archived + + /** + * @brief Whether a thread is archived + */ bool archived; - /// Whether a thread is locked. When a thread is locked, only users with `MANAGE_THREADS` can unarchive it + + /** + * @brief Whether a thread is locked. When a thread is locked, + * only users with `MANAGE_THREADS` can un-archive it. + */ bool locked; - /// Whether non-moderators can add other non-moderators. Only for private threads + + /** + * @brief Whether non-moderators can add other non-moderators. Only for private threads. + */ bool invitable; }; @@ -162,13 +280,24 @@ struct DPP_EXPORT thread_metadata { * Defined as an enum to fit into 1 byte. Internally it'll be translated to minutes to match the API */ enum auto_archive_duration_t : uint8_t { - /// Auto archive duration of 1 hour. (60 minutes) + /** + * @brief Auto archive duration of 1 hour (60 minutes). + */ arc_1_hour = 1, - /// Auto archive duration of 1 day. (1440 minutes) + + /** + * @brief Auto archive duration of 1 day (1440 minutes). + */ arc_1_day = 2, - /// Auto archive duration of 3 days. (4320 minutes) + + /** + * @brief Auto archive duration of 3 days (4320 minutes). + */ arc_3_days = 3, - /// Auto archive duration of 1 week. (10080 minutes) + + /** + * @brief Auto archive duration of 1 week (10080 minutes). + */ arc_1_week = 4, }; @@ -187,13 +316,24 @@ struct DPP_EXPORT thread_member : public json_interface { thread_member& fill_from_json_impl(nlohmann::json* j); public: - /// ID of the thread member is part of + /** + * @brief ID of the thread member is part of. + */ snowflake thread_id; - /// ID of the member + + /** + * @brief ID of the member. + */ snowflake user_id; - /// The time when user last joined the thread + + /** + * @brief The time when user last joined the thread. + */ time_t joined; - /// Any user-thread settings, currently only used for notifications + + /** + * @brief Any user-thread settings, currently only used for notifications. + */ uint32_t flags; }; @@ -220,11 +360,21 @@ struct DPP_EXPORT forum_tag : public managed, public json_interface { json to_json_impl(bool with_id = false) const; public: - /** The name of the tag (0-20 characters) */ + /** + * @brief The name of the tag (0-20 characters). + */ std::string name; - /** The emoji of the tag. Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji */ + + /** + * @brief The emoji of the tag. + * Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji. + */ std::variant emoji; - /** Whether this tag can only be added to or removed from threads by a member with the `MANAGE_THREADS` permission */ + + /** + * @brief Whether this tag can only be added to or removed from threads + * by a member with the `MANAGE_THREADS` permission. + */ bool moderated; /** Constructor */ @@ -280,50 +430,72 @@ class DPP_EXPORT channel : public managed, public json_interface { virtual json to_json_impl(bool with_id = false) const; public: - /** Channel name (1-100 characters) */ + /** + * @brief Channel name (1-100 characters). + */ std::string name; - /** Channel topic (0-4096 characters for forum and media channels, 0-1024 characters for all others) */ + /** + * @brief Channel topic (0-4096 characters for forum and media channels, 0-1024 characters for all others). + */ std::string topic; /** - * @brief Voice region if set for voice channel, otherwise empty string + * @brief Voice region if set for voice channel, otherwise empty string. */ std::string rtc_region; - /** DM recipients */ + /** + * @brief DM recipients. + */ std::vector recipients; - /** Permission overwrites to apply to base permissions */ + /** + * @brief Permission overwrites to apply to base permissions. + */ std::vector permission_overwrites; - /** A set of tags that can be used in a forum or media channel */ + /** + * @brief A set of tags that can be used in a forum or media channel. + */ std::vector available_tags; /** * @brief The emoji to show as the default reaction button on a thread in a forum or media channel. - * Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji + * Contains either nothing, the id of a guild's custom emoji or the unicode character of the emoji. */ std::variant default_reaction; /** - * @brief Channel icon (for group DMs) + * @brief Channel icon (for group DMs). */ utility::iconhash icon; - /** User ID of the creator for group DMs or threads */ + /** + * @brief User ID of the creator for group DMs or threads. + */ snowflake owner_id; - /** Parent ID (for guild channels: id of the parent category, for threads: id of the text channel this thread was created) */ + /** + * @brief Parent ID (for guild channels: id of the parent category, for threads: id of the text channel this thread was created). + */ snowflake parent_id; - /** Guild id of the guild that owns the channel */ + /** + * @brief Guild id of the guild that owns the channel. + */ snowflake guild_id; - /** ID of last message to be sent to the channel (may not point to an existing or valid message or thread) */ + /** + * @brief ID of last message to be sent to the channel. + * + * @warning may not point to an existing or valid message/thread. + */ snowflake last_message_id; - /** Timestamp of last pinned message */ + /** + * @brief Timestamp of last pinned message. + */ time_t last_pin_timestamp; /** @@ -334,31 +506,47 @@ class DPP_EXPORT channel : public managed, public json_interface { */ permission permissions; - /** Sorting position, lower number means higher up the list */ + /** + * @brief Sorting position, lower number means higher up the list + */ uint16_t position; - /** the bitrate (in kilobits) of the voice channel */ + /** + * @brief The bitrate (in kilobits) of the voice channel. + */ uint16_t bitrate; - /** amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected*/ + /** + * @brief Amount of seconds a user has to wait before sending another message (0-21600). + * Bots, as well as users with the permission manage_messages or manage_channel, are unaffected + */ uint16_t rate_limit_per_user; - /** The initial `rate_limit_per_user` to set on newly created threads in a channel. This field is copied to the thread at creation time and does not live update */ + /** + * @brief The initial `rate_limit_per_user` to set on newly created threads in a channel. + * This field is copied to the thread at creation time and does not live update. + */ uint16_t default_thread_rate_limit_per_user; /** * @brief Default duration, copied onto newly created threads. Used by the clients, not the API. - * Threads will stop showing in the channel list after the specified period of inactivity. Defaults to dpp::arc_1_day + * Threads will stop showing in the channel list after the specified period of inactivity. Defaults to dpp::arc_1_day. */ auto_archive_duration_t default_auto_archive_duration; - /** the default sort order type used to order posts in forum and media channels */ + /** + * @brief The default sort order type used to order posts in forum and media channels. + */ default_forum_sort_order_t default_sort_order; - /** Flags bitmap (dpp::channel_flags) */ + /** + * @brief Flags bitmap (dpp::channel_flags) + */ uint16_t flags; - /** Maximum user limit for voice channels (0-99) */ + /** + * @brief Maximum user limit for voice channels (0-99) + */ uint8_t user_limit; /** Constructor */ @@ -781,14 +969,18 @@ class DPP_EXPORT thread : public channel, public json_interface { */ thread_member member; - /** Thread metadata (threads) */ + /** + * @brief Thread metadata (threads) + */ thread_metadata metadata; - /** Created message. Only filled within the cluster::thread_create_in_forum() method */ + /** + * @brief Created message. Only filled within the cluster::thread_create_in_forum() method + */ message msg; /** - * A list of dpp::forum_tag IDs that have been applied to a thread in a forum or media channel + * @brief A list of dpp::forum_tag IDs that have been applied to a thread in a forum or media channel. */ std::vector applied_tags; @@ -804,7 +996,9 @@ class DPP_EXPORT thread : public channel, public json_interface { */ uint8_t message_count; - /** Approximate count of members in a thread (stops counting at 50) */ + /** + * @brief Approximate count of members in a thread (stops counting at 50) + */ uint8_t member_count; /** diff --git a/include/dpp/collector.h b/include/dpp/collector.h index 4e388971c4..ac09bf95a6 100644 --- a/include/dpp/collector.h +++ b/include/dpp/collector.h @@ -55,14 +55,24 @@ namespace dpp { template class collector { protected: - /// Owning cluster + /** + * @brief Owning cluster. + */ class cluster* owner; private: - /// Timed listener + /** + * @brief Timed listener. + */ timed_listener, std::function>* tl; - /// stored list + + /** + * @brief Stored list. + */ std::vector stored; - /// Trigger flag + + /** + * @brief Trigger flag. + */ bool triggered; public: /** @@ -153,17 +163,34 @@ template class collector */ class collected_reaction : public managed { public: - /// Reacting user + /** + * @brief Reacting user. + */ user react_user; - /// Reacting guild + + /** + * @brief Reacting guild. + */ guild* react_guild{}; - /// Reacting guild member + + /** + * @brief Reacting guild member. + */ guild_member react_member; - /// Reacting channel + + /** + * @brief Reacting channel. + */ channel* react_channel{}; - /// Reacted emoji + + /** + * @brief Reacted emoji. + */ emoji react_emoji; - /// ID of the user who authored the message which was reacted to (Optional) + + /** + * @brief Optional: ID of the user who authored the message which was reacted to. + */ snowflake message_author_id{}; }; @@ -239,7 +266,14 @@ class message_collector : public message_collector_t { * Collects message reactions during a set timeframe and returns them in a list via the completed() method. */ class reaction_collector : public reaction_collector_t { + /** + * @brief The ID of the message. + */ snowflake message_id; + + /** + * @brief The reaction. + */ collected_reaction react; public: /** diff --git a/include/dpp/colors.h b/include/dpp/colors.h index d5f642402a..7a2c90b957 100644 --- a/include/dpp/colors.h +++ b/include/dpp/colors.h @@ -22,723 +22,724 @@ #include - /** - * @brief The main namespace for D++ functions. classes and types +/** + * @brief The main namespace for D++ functions. classes and types */ namespace dpp { - /** - * @brief predefined color constants - */ - namespace colors { - const uint32_t - white = 0xFFFFFF, - discord_white = 0xFFFFFE, - light_gray = 0xC0C0C0, - gray = 0x808080, - dark_gray = 0x404040, - black = 0x000000, - discord_black = 0x000001, - red = 0xFF0000, - pink = 0xFFAFAF, - orange = 0xFFC800, - yellow = 0xFFFF00, - green = 0x00FF00, - magenta = 0xFF00FF, - cyan = 0x00FFFF, - blue = 0x0000FF, - light_sea_green = 0x1ABC9C, - medium_sea_green = 0x2ECC71, - summer_sky = 0x3498DB, - deep_lilac = 0x9B59B6, - ruby = 0xE91E63, - moon_yellow = 0xF1C40F, - tahiti_gold = 0xE67E22, - cinnabar = 0xE74C3C, - submarine = 0x95A5A6, - blue_aquamarine = 0x607D8B, - deep_sea = 0x11806A, - sea_green = 0x1F8B4C, - endeavour = 0x206694, - vivid_violet = 0x71368A, - jazzberry_jam = 0xAD1457, - dark_goldenrod = 0xC27C0E, - rust = 0xA84300, - brown = 0x992D22, - gray_chateau = 0x979C9F, - bismark = 0x546E7A, - sti_blue = 0x0E4BEF, - wrx_blue = 0x00247D, - rallyart_crimson = 0xE60012, - lime = 0x00FF00, - forest_green = 0x228B22, - cadmium_green = 0x097969, - aquamarine = 0x7FFFD4, - blue_green = 0x088F8F, - raspberry = 0xE30B5C, - scarlet_red = 0xFF2400, - night = 0x0C090A, - charcoal = 0x34282C, - oil = 0x3B3131, - light_black = 0x454545, - black_cat = 0x413839, - iridium = 0x3D3C3A, - black_eel = 0x463E3F, - black_cow = 0x4C4646, - gray_wolf = 0x504A4B, - grey_wolf = 0x504A4B, - vampire_gray = 0x565051, - vampire_grey = 0x565051, - iron_gray = 0x52595D, - iron_grey = 0x52595D, - gray_dolphin = 0x5C5858, - grey_dolphin = 0x5C5858, - carbon_gray = 0x625D5D, - carbon_grey = 0x625D5D, - ash_gray = 0x666362, - ash_grey = 0x666362, - dim_gray = 0x696969, - dim_grey = 0x696969, - nardo_gray = 0x686A6C, - nardo_grey = 0x686A6C, - cloudy_gray = 0x6D6968, - cloudy_grey = 0x6D6968, - smokey_gray = 0x726E6D, - smokey_grey = 0x726E6D, - alien_gray = 0x736F6E, - alien_grey = 0x736F6E, - sonic_silver = 0x757575, - platinum_gray = 0x797979, - platinum_grey = 0x797979, - granite = 0x837E7C, - battleship_gray = 0x848482, - battleship_grey = 0x848482, - gunmetal_gray = 0x8D918D, - gunmetal_grey = 0x8D918D, - gray_cloud = 0xB6B6B4, - grey_cloud = 0xB6B6B4, - silver = 0xC0C0C0, - pale_silver = 0xC9C0BB, - gray_goose = 0xD1D0CE, - grey_goose = 0xD1D0CE, - platinum_silver = 0xCECECE, - silver_white = 0xDADBDD, - gainsboro = 0xDCDCDC, - platinum = 0xE5E4E2, - metallic_silver = 0xBCC6CC, - blue_gray = 0x98AFC7, - blue_grey = 0x98AFC7, - roman_silver = 0x838996, - light_slate_gray = 0x778899, - light_slate_grey = 0x778899, - slate_gray = 0x708090, - slate_grey = 0x708090, - rat_gray = 0x6D7B8D, - slate_granite_gray = 0x657383, - slate_granite_grey = 0x657383, - jet_gray = 0x616D7E, - jet_grey = 0x616D7E, - mist_blue = 0x646D7E, - marble_blue = 0x566D7E, - slate_blue_grey = 0x737CA1, - slate_blue_gray = 0x737CA1, - light_purple_blue = 0x728FCE, - azure_blue = 0x4863A0, - blue_jay = 0x2B547E, - charcoal_blue = 0x36454F, - dark_blue_grey = 0x29465B, - dark_slate = 0x2B3856, - deep_sea_blue = 0x123456, - night_blue = 0x151B54, - midnight_blue = 0x191970, - navy = 0x000080, - denim_dark_blue = 0x151B8D, - dark_blue = 0x00008B, - lapis_blue = 0x15317E, - new_midnight_blue = 0x0000A0, - earth_blue = 0x0000A5, - cobalt_blue = 0x0020C2, - medium_blue = 0x0000CD, - blueberry_blue = 0x0041C2, - canary_blue = 0x2916F5, - samco_blue = 0x0002FF, - bright_blue = 0x0909FF, - blue_orchid = 0x1F45FC, - sapphire_blue = 0x2554C7, - blue_eyes = 0x1569C7, - bright_navy_blue = 0x1974D2, - balloon_blue = 0x2B60DE, - royal_blue = 0x4169E1, - ocean_blue = 0x2B65EC, - blue_ribbon = 0x306EFF, - blue_dress = 0x157DEC, - neon_blue = 0x1589FF, - dodger_blue = 0x1E90FF, - glacial_blue_ice = 0x368BC1, - steel_blue = 0x4682B4, - silk_blue = 0x488AC7, - windows_blue = 0x357EC7, - blue_ivy = 0x3090C7, - blue_koi = 0x659EC7, - columbia_blue = 0x87AFC7, - baby_blue = 0x95B9C7, - cornflower_blue = 0x6495ED, - sky_blue_dress = 0x6698FF, - iceberg = 0x56A5EC, - butterfly_blue = 0x38ACEC, - deep_sky_blue = 0x00BFFF, - midday_blue = 0x3BB9FF, - crystal_blue = 0x5CB3FF, - denim_blue = 0x79BAEC, - day_sky_blue = 0x82CAFF, - light_sky_blue = 0x87CEFA, - sky_blue = 0x87CEEB, - jeans_blue = 0xA0CFEC, - blue_angel = 0xB7CEEC, - pastel_blue = 0xB4CFEC, - light_day_blue = 0xADDFFF, - sea_blue = 0xC2DFFF, - heavenly_blue = 0xC6DEFF, - robin_egg_blue = 0xBDEDFF, - powder_blue = 0xB0E0E6, - coral_blue = 0xAFDCEC, - light_blue = 0xADD8E6, - light_steel_blue = 0xB0CFDE, - gulf_blue = 0xC9DFEC, - pastel_light_blue = 0xD5D6EA, - lavender_blue = 0xE3E4FA, - white_blue = 0xDBE9FA, - lavender = 0xE6E6FA, - water = 0xEBF4FA, - alice_blue = 0xF0F8FF, - ghost_white = 0xF8F8FF, - azure = 0xF0FFFF, - light_cyan = 0xE0FFFF, - light_slate = 0xCCFFFF, - electric_blue = 0x9AFEFF, - tron_blue = 0x7DFDFE, - blue_zircon = 0x57FEFF, - aqua = 0x00FFFF, - bright_cyan = 0x0AFFFF, - celeste = 0x50EBEC, - blue_diamond = 0x4EE2EC, - bright_turquoise = 0x16E2F5, - blue_lagoon = 0x8EEBEC, - pale_turquoise = 0xAFEEEE, - pale_blue_lily = 0xCFECEC, - light_teal = 0xB3D9D9, - tiffany_blue = 0x81D8D0, - blue_hosta = 0x77BFC7, - cyan_opaque = 0x92C7C7, - northern_lights_blue = 0x78C7C7, - medium_aquamarine = 0x66CDAA, - magic_mint = 0xAAF0D1, - light_aquamarine = 0x93FFE8, - bright_teal = 0x01F9C6, - turquoise = 0x40E0D0, - medium_turquoise = 0x48D1CC, - deep_turquoise = 0x48CCCD, - jellyfish = 0x46C7C7, - blue_turquoise = 0x43C6DB, - dark_turquoise = 0x00CED1, - macaw_blue_green = 0x43BFC7, - seafoam_green = 0x3EA99F, - cadet_blue = 0x5F9EA0, - blue_chill = 0x3B9C9C, - dark_cyan = 0x008B8B, - teal_green = 0x00827F, - teal = 0x008080, - teal_blue = 0x007C80, - medium_teal = 0x045F5F, - dark_teal = 0x045D5D, - deep_teal = 0x033E3E, - dark_slate_gray = 0x25383C, - dark_slate_grey = 0x25383C, - gunmetal = 0x2C3539, - blue_moss_green = 0x3C565B, - beetle_green = 0x4C787E, - grayish_turquoise = 0x5E7D7E, - greenish_blue = 0x307D7E, - aquamarine_stone = 0x348781, - sea_turtle_green = 0x438D80, - dull_sea_green = 0x4E8975, - dark_green_blue = 0x1F6357, - deep_sea_green = 0x306754, - bottle_green = 0x006A4E, - elf_green = 0x1B8A6B, - dark_mint = 0x31906E, - jade = 0x00A36C, - earth_green = 0x34A56F, - chrome_green = 0x1AA260, - emerald = 0x50C878, - mint = 0x3EB489, - metallic_green = 0x7C9D8E, - camouflage_green = 0x78866B, - sage_green = 0x848B79, - hazel_green = 0x617C58, - venom_green = 0x728C00, - olive_drab = 0x6B8E23, - olive = 0x808000, - dark_olive_green = 0x556B2F, - military_green = 0x4E5B31, - green_leaves = 0x3A5F0B, - army_green = 0x4B5320, - fern_green = 0x667C26, - fall_forest_green = 0x4E9258, - irish_green = 0x08A04B, - pine_green = 0x387C44, - medium_forest_green = 0x347235, - jungle_green = 0x347C2C, - cactus_green = 0x227442, - dark_green = 0x006400, - deep_green = 0x056608, - deep_emerald_green = 0x046307, - hunter_green = 0x355E3B, - dark_forest_green = 0x254117, - lotus_green = 0x004225, - seaweed_green = 0x437C17, - shamrock_green = 0x347C17, - green_onion = 0x6AA121, - moss_green = 0x8A9A5B, - grass_green = 0x3F9B0B, - green_pepper = 0x4AA02C, - dark_lime_green = 0x41A317, - parrot_green = 0x12AD2B, - clover_green = 0x3EA055, - dinosaur_green = 0x73A16C, - green_snake = 0x6CBB3C, - alien_green = 0x6CC417, - green_apple = 0x4CC417, - lime_green = 0x32CD32, - pea_green = 0x52D017, - kelly_green = 0x4CC552, - zombie_green = 0x54C571, - green_peas = 0x89C35C, - dollar_bill_green = 0x85BB65, - frog_green = 0x99C68E, - turquoise_green = 0xA0D6B4, - dark_sea_green = 0x8FBC8F, - basil_green = 0x829F82, - gray_green = 0xA2AD9C, - iguana_green = 0x9CB071, - citron_green = 0x8FB31D, - acid_green = 0xB0BF1A, - avocado_green = 0xB2C248, - pistachio_green = 0x9DC209, - salad_green = 0xA1C935, - yellow_green = 0x9ACD32, - pastel_green = 0x77DD77, - hummingbird_green = 0x7FE817, - nebula_green = 0x59E817, - stoplight_go_green = 0x57E964, - neon_green = 0x16F529, - jade_green = 0x5EFB6E, - lime_mint_green = 0x36F57F, - spring_green = 0x00FF7F, - medium_spring_green = 0x00FA9A, - emerald_green = 0x5FFB17, - lawn_green = 0x7CFC00, - bright_green = 0x66FF00, - chartreuse = 0x7FFF00, - yellow_lawn_green = 0x87F717, - aloe_vera_green = 0x98F516, - dull_green_yellow = 0xB1FB17, - lemon_green = 0xADF802, - green_yellow = 0xADFF2F, - chameleon_green = 0xBDF516, - neon_yellow_green = 0xDAEE01, - yellow_green_grosbeak = 0xE2F516, - tea_green = 0xCCFB5D, - slime_green = 0xBCE954, - algae_green = 0x64E986, - light_green = 0x90EE90, - dragon_green = 0x6AFB92, - pale_green = 0x98FB98, - mint_green = 0x98FF98, - green_thumb = 0xB5EAAA, - organic_brown = 0xE3F9A6, - light_jade = 0xC3FDB8, - light_mint_green = 0xC2E5D3, - light_rose_green = 0xDBF9DB, - chrome_white = 0xE8F1D4, - honeydew = 0xF0FFF0, - mint_cream = 0xF5FFFA, - lemon_chiffon = 0xFFFACD, - parchment = 0xFFFFC2, - cream = 0xFFFFCC, - cream_white = 0xFFFDD0, - light_goldenrod_yellow = 0xFAFAD2, - light_yellow = 0xFFFFE0, - beige = 0xF5F5DC, - cornsilk = 0xFFF8DC, - blonde = 0xFBF6D9, - champagne = 0xF7E7CE, - antique_white = 0xFAEBD7, - papaya_whip = 0xFFEFD5, - blanched_almond = 0xFFEBCD, - bisque = 0xFFE4C4, - wheat = 0xF5DEB3, - moccasin = 0xFFE4B5, - peach = 0xFFE5B4, - light_orange = 0xFED8B1, - peach_puff = 0xFFDAB9, - coral_peach = 0xFBD5AB, - navajo_white = 0xFFDEAD, - golden_blonde = 0xFBE7A1, - golden_silk = 0xF3E3C3, - dark_blonde = 0xF0E2B6, - light_gold = 0xF1E5AC, - vanilla = 0xF3E5AB, - tan_brown = 0xECE5B6, - dirty_white = 0xE8E4C9, - pale_goldenrod = 0xEEE8AA, - khaki = 0xF0E68C, - cardboard_brown = 0xEDDA74, - harvest_gold = 0xEDE275, - sun_yellow = 0xFFE87C, - corn_yellow = 0xFFF380, - pastel_yellow = 0xFAF884, - neon_yellow = 0xFFFF33, - canary_yellow = 0xFFEF00, - banana_yellow = 0xF5E216, - mustard_yellow = 0xFFDB58, - golden_yellow = 0xFFDF00, - bold_yellow = 0xF9DB24, - rubber_ducky_yellow = 0xFFD801, - gold = 0xFFD700, - bright_gold = 0xFDD017, - chrome_gold = 0xFFCE44, - golden_brown = 0xEAC117, - deep_yellow = 0xF6BE00, - macaroni_and_cheese = 0xF2BB66, - saffron = 0xFBB917, - neon_gold = 0xFDBD01, - beer = 0xFBB117, - yellow_orange = 0xFFAE42, - orange_yellow = 0xFFAE42, - cantaloupe = 0xFFA62F, - cheese_orange = 0xFFA600, - brown_sand = 0xEE9A4D, - sandy_brown = 0xF4A460, - brown_sugar = 0xE2A76F, - camel_brown = 0xC19A6B, - deer_brown = 0xE6BF83, - burly_wood = 0xDEB887, - tan = 0xD2B48C, - light_french_beige = 0xC8AD7F, - sand = 0xC2B280, - sage = 0xBCB88A, - fall_leaf_brown = 0xC8B560, - ginger_brown = 0xC9BE62, - bronze_gold = 0xC9AE5D, - dark_khaki = 0xBDB76B, - olive_green = 0xBAB86C, - brass = 0xB5A642, - cookie_brown = 0xC7A317, - metallic_gold = 0xD4AF37, - bee_yellow = 0xE9AB17, - school_bus_yellow = 0xE8A317, - goldenrod = 0xDAA520, - orange_gold = 0xD4A017, - caramel = 0xC68E17, - cinnamon = 0xC58917, - peru = 0xCD853F, - bronze = 0xCD7F32, - tiger_orange = 0xC88141, - copper = 0xB87333, - dark_gold = 0xAA6C39, - metallic_bronze = 0xA97142, - dark_almond = 0xAB784E, - wood = 0x966F33, - oak_brown = 0x806517, - antique_bronze = 0x665D1E, - hazel = 0x8E7618, - dark_yellow = 0x8B8000, - dark_moccasin = 0x827839, - khaki_green = 0x8A865D, - millennium_jade = 0x93917C, - dark_beige = 0x9F8C76, - bullet_shell = 0xAF9B60, - army_brown = 0x827B60, - sandstone = 0x786D5F, - taupe = 0x483C32, - mocha = 0x493D26, - milk_chocolate = 0x513B1C, - gray_brown = 0x3D3635, - dark_coffee = 0x3B2F2F, - old_burgundy = 0x43302E, - western_charcoal = 0x49413F, - bakers_brown = 0x5C3317, - dark_brown = 0x654321, - sepia_brown = 0x704214, - dark_bronze = 0x804A00, - coffee = 0x6F4E37, - brown_bear = 0x835C3B, - red_dirt = 0x7F5217, - sepia = 0x7F462C, - sienna = 0xA0522D, - saddle_brown = 0x8B4513, - dark_sienna = 0x8A4117, - sangria = 0x7E3817, - blood_red = 0x7E3517, - chestnut = 0x954535, - coral_brown = 0x9E4638, - chestnut_red = 0xC34A2C, - mahogany = 0xC04000, - red_gold = 0xEB5406, - red_fox = 0xC35817, - dark_bisque = 0xB86500, - light_brown = 0xB5651D, - petra_gold = 0xB76734, - copper_red = 0xCB6D51, - orange_salmon = 0xC47451, - chocolate = 0xD2691E, - sedona = 0xCC6600, - papaya_orange = 0xE56717, - halloween_orange = 0xE66C2C, - neon_orange = 0xFF6700, - bright_orange = 0xFF5F1F, - pumpkin_orange = 0xF87217, - carrot_orange = 0xF88017, - dark_orange = 0xFF8C00, - construction_cone_orange = 0xF87431, - indian_saffron = 0xFF7722, - sunrise_orange = 0xE67451, - mango_orange = 0xFF8040, - coral = 0xFF7F50, - basket_ball_orange = 0xF88158, - light_salmon_rose = 0xF9966B, - light_salmon = 0xFFA07A, - dark_salmon = 0xE9967A, - tangerine = 0xE78A61, - light_copper = 0xDA8A67, - salmon_pink = 0xFF8674, - salmon = 0xFA8072, - peach_pink = 0xF98B88, - light_coral = 0xF08080, - pastel_red = 0xF67280, - pink_coral = 0xE77471, - bean_red = 0xF75D59, - valentine_red = 0xE55451, - indian_red = 0xCD5C5C, - tomato = 0xFF6347, - shocking_orange = 0xE55B3C, - orange_red = 0xFF4500, - neon_red = 0xFD1C03, - ruby_red = 0xF62217, - ferrari_red = 0xF70D1A, - fire_engine_red = 0xF62817, - lava_red = 0xE42217, - love_red = 0xE41B17, - grapefruit = 0xDC381F, - cherry_red = 0xC24641, - chilli_pepper = 0xC11B17, - fire_brick = 0xB22222, - tomato_sauce_red = 0xB21807, - carbon_red = 0xA70D2A, - cranberry = 0x9F000F, - saffron_red = 0x931314, - crimson_red = 0x990000, - red_wine = 0x990012, - wine_red = 0x990012, - dark_red = 0x8B0000, - maroon = 0x800000, - burgundy = 0x8C001A, - vermilion = 0x7E191B, - deep_red = 0x800517, - red_blood = 0x660000, - blood_night = 0x551606, - dark_scarlet = 0x560319, - black_bean = 0x3D0C02, - chocolate_brown = 0x3F000F, - midnight = 0x2B1B17, - purple_lily = 0x550A35, - purple_maroon = 0x810541, - plum_pie = 0x7D0541, - plum_velvet = 0x7D0552, - dark_raspberry = 0x872657, - velvet_maroon = 0x7E354D, - rosy_finch = 0x7F4E52, - dull_purple = 0x7F525D, - puce = 0x7F5A58, - rose_dust = 0x997070, - pastel_brown = 0xB1907F, - rosy_pink = 0xB38481, - rosy_brown = 0xBC8F8F, - khaki_rose = 0xC5908E, - lipstick_pink = 0xC48793, - pink_brown = 0xC48189, - old_rose = 0xC08081, - dusty_pink = 0xD58A94, - pink_daisy = 0xE799A3, - rose = 0xE8ADAA, - dusty_rose = 0xC9A9A6, - silver_pink = 0xC4AEAD, - gold_pink = 0xE6C7C2, - rose_gold = 0xECC5C0, - deep_peach = 0xFFCBA4, - pastel_orange = 0xF8B88B, - desert_sand = 0xEDC9AF, - unbleached_silk = 0xFFDDCA, - pig_pink = 0xFDD7E4, - pale_pink = 0xF2D4D7, - blush = 0xFFE6E8, - misty_rose = 0xFFE4E1, - pink_bubble_gum = 0xFFDFDD, - light_rose = 0xFBCFCD, - light_red = 0xFFCCCB, - warm_pink = 0xF6C6BD, - deep_rose = 0xFBBBB9, - light_pink = 0xFFB6C1, - soft_pink = 0xFFB8BF, - donut_pink = 0xFAAFBE, - baby_pink = 0xFAAFBA, - flamingo_pink = 0xF9A7B0, - pastel_pink = 0xFEA3AA, - rose_pink = 0xE7A1B0, - pink_rose = 0xE7A1B0, - cadillac_pink = 0xE38AAE, - carnation_pink = 0xF778A1, - pastel_rose = 0xE5788F, - blush_red = 0xE56E94, - pale_violet_red = 0xDB7093, - purple_pink = 0xD16587, - tulip_pink = 0xC25A7C, - bashful_pink = 0xC25283, - dark_pink = 0xE75480, - dark_hot_pink = 0xF660AB, - hot_pink = 0xFF69B4, - watermelon_pink = 0xFC6C85, - violet_red = 0xF6358A, - hot_deep_pink = 0xF52887, - bright_pink = 0xFF007F, - deep_pink = 0xFF1493, - neon_pink = 0xF535AA, - chrome_pink = 0xFF33AA, - neon_hot_pink = 0xFD349C, - pink_cupcake = 0xE45E9D, - royal_pink = 0xE759AC, - dimorphotheca_magenta = 0xE3319D, - pink_lemonade = 0xE4287C, - red_pink = 0xFA2A55, - crimson = 0xDC143C, - bright_maroon = 0xC32148, - rose_red = 0xC21E56, - rogue_pink = 0xC12869, - burnt_pink = 0xC12267, - pink_violet = 0xCA226B, - magenta_pink = 0xCC338B, - medium_violet_red = 0xC71585, - dark_carnation_pink = 0xC12283, - raspberry_purple = 0xB3446C, - pink_plum = 0xB93B8F, - orchid = 0xDA70D6, - deep_mauve = 0xDF73D4, - violet = 0xEE82EE, - fuchsia_pink = 0xFF77FF, - bright_neon_pink = 0xF433FF, - fuchsia = 0xFF00FF, - crimson_purple = 0xE238EC, - heliotrope_purple = 0xD462FF, - tyrian_purple = 0xC45AEC, - medium_orchid = 0xBA55D3, - purple_flower = 0xA74AC7, - orchid_purple = 0xB048B5, - rich_lilac = 0xB666D2, - pastel_violet = 0xD291BC, - mauve_taupe = 0x915F6D, - viola_purple = 0x7E587E, - eggplant = 0x614051, - plum_purple = 0x583759, - grape = 0x5E5A80, - purple_navy = 0x4E5180, - slate_blue = 0x6A5ACD, - blue_lotus = 0x6960EC, - blurple = 0x5865F2, - light_slate_blue = 0x736AFF, - medium_slate_blue = 0x7B68EE, - periwinkle_purple = 0x7575CF, - very_peri = 0x6667AB, - bright_grape = 0x6F2DA8, - purple_amethyst = 0x6C2DC7, - bright_purple = 0x6A0DAD, - deep_periwinkle = 0x5453A6, - dark_slate_blue = 0x483D8B, - purple_haze = 0x4E387E, - purple_iris = 0x571B7E, - dark_purple = 0x4B0150, - deep_purple = 0x36013F, - midnight_purple = 0x2E1A47, - purple_monster = 0x461B7E, - indigo = 0x4B0082, - blue_whale = 0x342D7E, - rebecca_purple = 0x663399, - purple_jam = 0x6A287E, - dark_magenta = 0x8B008B, - purple = 0x800080, - french_lilac = 0x86608E, - dark_orchid = 0x9932CC, - dark_violet = 0x9400D3, - purple_violet = 0x8D38C9, - jasmine_purple = 0xA23BEC, - purple_daffodil = 0xB041FF, - clematis_violet = 0x842DCE, - blue_violet = 0x8A2BE2, - purple_sage_bush = 0x7A5DC7, - lovely_purple = 0x7F38EC, - neon_purple = 0x9D00FF, - purple_plum = 0x8E35EF, - aztech_purple = 0x893BFF, - medium_purple = 0x9370DB, - light_purple = 0x8467D7, - crocus_purple = 0x9172EC, - purple_mimosa = 0x9E7BFF, - periwinkle = 0xCCCCFF, - pale_lilac = 0xDCD0FF, - lavender_purple = 0x967BB6, - rose_purple = 0xB09FCA, - lilac = 0xC8A2C8, - mauve = 0xE0B0FF, - bright_lilac = 0xD891EF, - purple_dragon = 0xC38EC7, - plum = 0xDDA0DD, - blush_pink = 0xE6A9EC, - pastel_purple = 0xF2A2E8, - blossom_pink = 0xF9B7FF, - wisteria_purple = 0xC6AEC7, - purple_thistle = 0xD2B9D3, - thistle = 0xD8BFD8, - purple_white = 0xDFD3E3, - periwinkle_pink = 0xE9CFEC, - cotton_candy = 0xFCDFFF, - lavender_pinocchio = 0xEBDDE2, - dark_white = 0xE1D9D1, - ash_white = 0xE9E4D4, - white_chocolate = 0xEDE6D6, - soft_ivory = 0xFAF0DD, - off_white = 0xF8F0E3, - pearl_white = 0xF8F6F0, - red_white = 0xF3E8EA, - lavender_blush = 0xFFF0F5, - pearl = 0xFDEEF4, - egg_shell = 0xFFF9E3, - old_lace = 0xFEF0E3, - linen = 0xFAF0E6, - sea_shell = 0xFFF5EE, - bone_white = 0xF9F6EE, - rice = 0xFAF5EF, - floral_white = 0xFFFAF0, - ivory = 0xFFFFF0, - white_gold = 0xFFFFF4, - light_white = 0xFFFFF7, - white_smoke = 0xF5F5F5, - cotton = 0xFBFBF9, - snow = 0xFFFAFA, - milk_white = 0xFEFCFF, - half_white = 0xFFFEFA; - } // namespace colors - /** - * @brief predefined color constants, same as colors - */ - namespace colours = colors; +/** + * @brief predefined color constants. + */ +namespace colors { + const uint32_t + white = 0xFFFFFF, + discord_white = 0xFFFFFE, + light_gray = 0xC0C0C0, + gray = 0x808080, + dark_gray = 0x404040, + black = 0x000000, + discord_black = 0x000001, + red = 0xFF0000, + pink = 0xFFAFAF, + orange = 0xFFC800, + yellow = 0xFFFF00, + green = 0x00FF00, + magenta = 0xFF00FF, + cyan = 0x00FFFF, + blue = 0x0000FF, + light_sea_green = 0x1ABC9C, + medium_sea_green = 0x2ECC71, + summer_sky = 0x3498DB, + deep_lilac = 0x9B59B6, + ruby = 0xE91E63, + moon_yellow = 0xF1C40F, + tahiti_gold = 0xE67E22, + cinnabar = 0xE74C3C, + submarine = 0x95A5A6, + blue_aquamarine = 0x607D8B, + deep_sea = 0x11806A, + sea_green = 0x1F8B4C, + endeavour = 0x206694, + vivid_violet = 0x71368A, + jazzberry_jam = 0xAD1457, + dark_goldenrod = 0xC27C0E, + rust = 0xA84300, + brown = 0x992D22, + gray_chateau = 0x979C9F, + bismark = 0x546E7A, + sti_blue = 0x0E4BEF, + wrx_blue = 0x00247D, + rallyart_crimson = 0xE60012, + lime = 0x00FF00, + forest_green = 0x228B22, + cadmium_green = 0x097969, + aquamarine = 0x7FFFD4, + blue_green = 0x088F8F, + raspberry = 0xE30B5C, + scarlet_red = 0xFF2400, + night = 0x0C090A, + charcoal = 0x34282C, + oil = 0x3B3131, + light_black = 0x454545, + black_cat = 0x413839, + iridium = 0x3D3C3A, + black_eel = 0x463E3F, + black_cow = 0x4C4646, + gray_wolf = 0x504A4B, + grey_wolf = 0x504A4B, + vampire_gray = 0x565051, + vampire_grey = 0x565051, + iron_gray = 0x52595D, + iron_grey = 0x52595D, + gray_dolphin = 0x5C5858, + grey_dolphin = 0x5C5858, + carbon_gray = 0x625D5D, + carbon_grey = 0x625D5D, + ash_gray = 0x666362, + ash_grey = 0x666362, + dim_gray = 0x696969, + dim_grey = 0x696969, + nardo_gray = 0x686A6C, + nardo_grey = 0x686A6C, + cloudy_gray = 0x6D6968, + cloudy_grey = 0x6D6968, + smokey_gray = 0x726E6D, + smokey_grey = 0x726E6D, + alien_gray = 0x736F6E, + alien_grey = 0x736F6E, + sonic_silver = 0x757575, + platinum_gray = 0x797979, + platinum_grey = 0x797979, + granite = 0x837E7C, + battleship_gray = 0x848482, + battleship_grey = 0x848482, + gunmetal_gray = 0x8D918D, + gunmetal_grey = 0x8D918D, + gray_cloud = 0xB6B6B4, + grey_cloud = 0xB6B6B4, + silver = 0xC0C0C0, + pale_silver = 0xC9C0BB, + gray_goose = 0xD1D0CE, + grey_goose = 0xD1D0CE, + platinum_silver = 0xCECECE, + silver_white = 0xDADBDD, + gainsboro = 0xDCDCDC, + platinum = 0xE5E4E2, + metallic_silver = 0xBCC6CC, + blue_gray = 0x98AFC7, + blue_grey = 0x98AFC7, + roman_silver = 0x838996, + light_slate_gray = 0x778899, + light_slate_grey = 0x778899, + slate_gray = 0x708090, + slate_grey = 0x708090, + rat_gray = 0x6D7B8D, + slate_granite_gray = 0x657383, + slate_granite_grey = 0x657383, + jet_gray = 0x616D7E, + jet_grey = 0x616D7E, + mist_blue = 0x646D7E, + marble_blue = 0x566D7E, + slate_blue_grey = 0x737CA1, + slate_blue_gray = 0x737CA1, + light_purple_blue = 0x728FCE, + azure_blue = 0x4863A0, + blue_jay = 0x2B547E, + charcoal_blue = 0x36454F, + dark_blue_grey = 0x29465B, + dark_slate = 0x2B3856, + deep_sea_blue = 0x123456, + night_blue = 0x151B54, + midnight_blue = 0x191970, + navy = 0x000080, + denim_dark_blue = 0x151B8D, + dark_blue = 0x00008B, + lapis_blue = 0x15317E, + new_midnight_blue = 0x0000A0, + earth_blue = 0x0000A5, + cobalt_blue = 0x0020C2, + medium_blue = 0x0000CD, + blueberry_blue = 0x0041C2, + canary_blue = 0x2916F5, + samco_blue = 0x0002FF, + bright_blue = 0x0909FF, + blue_orchid = 0x1F45FC, + sapphire_blue = 0x2554C7, + blue_eyes = 0x1569C7, + bright_navy_blue = 0x1974D2, + balloon_blue = 0x2B60DE, + royal_blue = 0x4169E1, + ocean_blue = 0x2B65EC, + blue_ribbon = 0x306EFF, + blue_dress = 0x157DEC, + neon_blue = 0x1589FF, + dodger_blue = 0x1E90FF, + glacial_blue_ice = 0x368BC1, + steel_blue = 0x4682B4, + silk_blue = 0x488AC7, + windows_blue = 0x357EC7, + blue_ivy = 0x3090C7, + blue_koi = 0x659EC7, + columbia_blue = 0x87AFC7, + baby_blue = 0x95B9C7, + cornflower_blue = 0x6495ED, + sky_blue_dress = 0x6698FF, + iceberg = 0x56A5EC, + butterfly_blue = 0x38ACEC, + deep_sky_blue = 0x00BFFF, + midday_blue = 0x3BB9FF, + crystal_blue = 0x5CB3FF, + denim_blue = 0x79BAEC, + day_sky_blue = 0x82CAFF, + light_sky_blue = 0x87CEFA, + sky_blue = 0x87CEEB, + jeans_blue = 0xA0CFEC, + blue_angel = 0xB7CEEC, + pastel_blue = 0xB4CFEC, + light_day_blue = 0xADDFFF, + sea_blue = 0xC2DFFF, + heavenly_blue = 0xC6DEFF, + robin_egg_blue = 0xBDEDFF, + powder_blue = 0xB0E0E6, + coral_blue = 0xAFDCEC, + light_blue = 0xADD8E6, + light_steel_blue = 0xB0CFDE, + gulf_blue = 0xC9DFEC, + pastel_light_blue = 0xD5D6EA, + lavender_blue = 0xE3E4FA, + white_blue = 0xDBE9FA, + lavender = 0xE6E6FA, + water = 0xEBF4FA, + alice_blue = 0xF0F8FF, + ghost_white = 0xF8F8FF, + azure = 0xF0FFFF, + light_cyan = 0xE0FFFF, + light_slate = 0xCCFFFF, + electric_blue = 0x9AFEFF, + tron_blue = 0x7DFDFE, + blue_zircon = 0x57FEFF, + aqua = 0x00FFFF, + bright_cyan = 0x0AFFFF, + celeste = 0x50EBEC, + blue_diamond = 0x4EE2EC, + bright_turquoise = 0x16E2F5, + blue_lagoon = 0x8EEBEC, + pale_turquoise = 0xAFEEEE, + pale_blue_lily = 0xCFECEC, + light_teal = 0xB3D9D9, + tiffany_blue = 0x81D8D0, + blue_hosta = 0x77BFC7, + cyan_opaque = 0x92C7C7, + northern_lights_blue = 0x78C7C7, + medium_aquamarine = 0x66CDAA, + magic_mint = 0xAAF0D1, + light_aquamarine = 0x93FFE8, + bright_teal = 0x01F9C6, + turquoise = 0x40E0D0, + medium_turquoise = 0x48D1CC, + deep_turquoise = 0x48CCCD, + jellyfish = 0x46C7C7, + blue_turquoise = 0x43C6DB, + dark_turquoise = 0x00CED1, + macaw_blue_green = 0x43BFC7, + seafoam_green = 0x3EA99F, + cadet_blue = 0x5F9EA0, + blue_chill = 0x3B9C9C, + dark_cyan = 0x008B8B, + teal_green = 0x00827F, + teal = 0x008080, + teal_blue = 0x007C80, + medium_teal = 0x045F5F, + dark_teal = 0x045D5D, + deep_teal = 0x033E3E, + dark_slate_gray = 0x25383C, + dark_slate_grey = 0x25383C, + gunmetal = 0x2C3539, + blue_moss_green = 0x3C565B, + beetle_green = 0x4C787E, + grayish_turquoise = 0x5E7D7E, + greenish_blue = 0x307D7E, + aquamarine_stone = 0x348781, + sea_turtle_green = 0x438D80, + dull_sea_green = 0x4E8975, + dark_green_blue = 0x1F6357, + deep_sea_green = 0x306754, + bottle_green = 0x006A4E, + elf_green = 0x1B8A6B, + dark_mint = 0x31906E, + jade = 0x00A36C, + earth_green = 0x34A56F, + chrome_green = 0x1AA260, + emerald = 0x50C878, + mint = 0x3EB489, + metallic_green = 0x7C9D8E, + camouflage_green = 0x78866B, + sage_green = 0x848B79, + hazel_green = 0x617C58, + venom_green = 0x728C00, + olive_drab = 0x6B8E23, + olive = 0x808000, + dark_olive_green = 0x556B2F, + military_green = 0x4E5B31, + green_leaves = 0x3A5F0B, + army_green = 0x4B5320, + fern_green = 0x667C26, + fall_forest_green = 0x4E9258, + irish_green = 0x08A04B, + pine_green = 0x387C44, + medium_forest_green = 0x347235, + jungle_green = 0x347C2C, + cactus_green = 0x227442, + dark_green = 0x006400, + deep_green = 0x056608, + deep_emerald_green = 0x046307, + hunter_green = 0x355E3B, + dark_forest_green = 0x254117, + lotus_green = 0x004225, + seaweed_green = 0x437C17, + shamrock_green = 0x347C17, + green_onion = 0x6AA121, + moss_green = 0x8A9A5B, + grass_green = 0x3F9B0B, + green_pepper = 0x4AA02C, + dark_lime_green = 0x41A317, + parrot_green = 0x12AD2B, + clover_green = 0x3EA055, + dinosaur_green = 0x73A16C, + green_snake = 0x6CBB3C, + alien_green = 0x6CC417, + green_apple = 0x4CC417, + lime_green = 0x32CD32, + pea_green = 0x52D017, + kelly_green = 0x4CC552, + zombie_green = 0x54C571, + green_peas = 0x89C35C, + dollar_bill_green = 0x85BB65, + frog_green = 0x99C68E, + turquoise_green = 0xA0D6B4, + dark_sea_green = 0x8FBC8F, + basil_green = 0x829F82, + gray_green = 0xA2AD9C, + iguana_green = 0x9CB071, + citron_green = 0x8FB31D, + acid_green = 0xB0BF1A, + avocado_green = 0xB2C248, + pistachio_green = 0x9DC209, + salad_green = 0xA1C935, + yellow_green = 0x9ACD32, + pastel_green = 0x77DD77, + hummingbird_green = 0x7FE817, + nebula_green = 0x59E817, + stoplight_go_green = 0x57E964, + neon_green = 0x16F529, + jade_green = 0x5EFB6E, + lime_mint_green = 0x36F57F, + spring_green = 0x00FF7F, + medium_spring_green = 0x00FA9A, + emerald_green = 0x5FFB17, + lawn_green = 0x7CFC00, + bright_green = 0x66FF00, + chartreuse = 0x7FFF00, + yellow_lawn_green = 0x87F717, + aloe_vera_green = 0x98F516, + dull_green_yellow = 0xB1FB17, + lemon_green = 0xADF802, + green_yellow = 0xADFF2F, + chameleon_green = 0xBDF516, + neon_yellow_green = 0xDAEE01, + yellow_green_grosbeak = 0xE2F516, + tea_green = 0xCCFB5D, + slime_green = 0xBCE954, + algae_green = 0x64E986, + light_green = 0x90EE90, + dragon_green = 0x6AFB92, + pale_green = 0x98FB98, + mint_green = 0x98FF98, + green_thumb = 0xB5EAAA, + organic_brown = 0xE3F9A6, + light_jade = 0xC3FDB8, + light_mint_green = 0xC2E5D3, + light_rose_green = 0xDBF9DB, + chrome_white = 0xE8F1D4, + honeydew = 0xF0FFF0, + mint_cream = 0xF5FFFA, + lemon_chiffon = 0xFFFACD, + parchment = 0xFFFFC2, + cream = 0xFFFFCC, + cream_white = 0xFFFDD0, + light_goldenrod_yellow = 0xFAFAD2, + light_yellow = 0xFFFFE0, + beige = 0xF5F5DC, + cornsilk = 0xFFF8DC, + blonde = 0xFBF6D9, + champagne = 0xF7E7CE, + antique_white = 0xFAEBD7, + papaya_whip = 0xFFEFD5, + blanched_almond = 0xFFEBCD, + bisque = 0xFFE4C4, + wheat = 0xF5DEB3, + moccasin = 0xFFE4B5, + peach = 0xFFE5B4, + light_orange = 0xFED8B1, + peach_puff = 0xFFDAB9, + coral_peach = 0xFBD5AB, + navajo_white = 0xFFDEAD, + golden_blonde = 0xFBE7A1, + golden_silk = 0xF3E3C3, + dark_blonde = 0xF0E2B6, + light_gold = 0xF1E5AC, + vanilla = 0xF3E5AB, + tan_brown = 0xECE5B6, + dirty_white = 0xE8E4C9, + pale_goldenrod = 0xEEE8AA, + khaki = 0xF0E68C, + cardboard_brown = 0xEDDA74, + harvest_gold = 0xEDE275, + sun_yellow = 0xFFE87C, + corn_yellow = 0xFFF380, + pastel_yellow = 0xFAF884, + neon_yellow = 0xFFFF33, + canary_yellow = 0xFFEF00, + banana_yellow = 0xF5E216, + mustard_yellow = 0xFFDB58, + golden_yellow = 0xFFDF00, + bold_yellow = 0xF9DB24, + rubber_ducky_yellow = 0xFFD801, + gold = 0xFFD700, + bright_gold = 0xFDD017, + chrome_gold = 0xFFCE44, + golden_brown = 0xEAC117, + deep_yellow = 0xF6BE00, + macaroni_and_cheese = 0xF2BB66, + saffron = 0xFBB917, + neon_gold = 0xFDBD01, + beer = 0xFBB117, + yellow_orange = 0xFFAE42, + orange_yellow = 0xFFAE42, + cantaloupe = 0xFFA62F, + cheese_orange = 0xFFA600, + brown_sand = 0xEE9A4D, + sandy_brown = 0xF4A460, + brown_sugar = 0xE2A76F, + camel_brown = 0xC19A6B, + deer_brown = 0xE6BF83, + burly_wood = 0xDEB887, + tan = 0xD2B48C, + light_french_beige = 0xC8AD7F, + sand = 0xC2B280, + sage = 0xBCB88A, + fall_leaf_brown = 0xC8B560, + ginger_brown = 0xC9BE62, + bronze_gold = 0xC9AE5D, + dark_khaki = 0xBDB76B, + olive_green = 0xBAB86C, + brass = 0xB5A642, + cookie_brown = 0xC7A317, + metallic_gold = 0xD4AF37, + bee_yellow = 0xE9AB17, + school_bus_yellow = 0xE8A317, + goldenrod = 0xDAA520, + orange_gold = 0xD4A017, + caramel = 0xC68E17, + cinnamon = 0xC58917, + peru = 0xCD853F, + bronze = 0xCD7F32, + tiger_orange = 0xC88141, + copper = 0xB87333, + dark_gold = 0xAA6C39, + metallic_bronze = 0xA97142, + dark_almond = 0xAB784E, + wood = 0x966F33, + oak_brown = 0x806517, + antique_bronze = 0x665D1E, + hazel = 0x8E7618, + dark_yellow = 0x8B8000, + dark_moccasin = 0x827839, + khaki_green = 0x8A865D, + millennium_jade = 0x93917C, + dark_beige = 0x9F8C76, + bullet_shell = 0xAF9B60, + army_brown = 0x827B60, + sandstone = 0x786D5F, + taupe = 0x483C32, + mocha = 0x493D26, + milk_chocolate = 0x513B1C, + gray_brown = 0x3D3635, + dark_coffee = 0x3B2F2F, + old_burgundy = 0x43302E, + western_charcoal = 0x49413F, + bakers_brown = 0x5C3317, + dark_brown = 0x654321, + sepia_brown = 0x704214, + dark_bronze = 0x804A00, + coffee = 0x6F4E37, + brown_bear = 0x835C3B, + red_dirt = 0x7F5217, + sepia = 0x7F462C, + sienna = 0xA0522D, + saddle_brown = 0x8B4513, + dark_sienna = 0x8A4117, + sangria = 0x7E3817, + blood_red = 0x7E3517, + chestnut = 0x954535, + coral_brown = 0x9E4638, + chestnut_red = 0xC34A2C, + mahogany = 0xC04000, + red_gold = 0xEB5406, + red_fox = 0xC35817, + dark_bisque = 0xB86500, + light_brown = 0xB5651D, + petra_gold = 0xB76734, + copper_red = 0xCB6D51, + orange_salmon = 0xC47451, + chocolate = 0xD2691E, + sedona = 0xCC6600, + papaya_orange = 0xE56717, + halloween_orange = 0xE66C2C, + neon_orange = 0xFF6700, + bright_orange = 0xFF5F1F, + pumpkin_orange = 0xF87217, + carrot_orange = 0xF88017, + dark_orange = 0xFF8C00, + construction_cone_orange = 0xF87431, + indian_saffron = 0xFF7722, + sunrise_orange = 0xE67451, + mango_orange = 0xFF8040, + coral = 0xFF7F50, + basket_ball_orange = 0xF88158, + light_salmon_rose = 0xF9966B, + light_salmon = 0xFFA07A, + dark_salmon = 0xE9967A, + tangerine = 0xE78A61, + light_copper = 0xDA8A67, + salmon_pink = 0xFF8674, + salmon = 0xFA8072, + peach_pink = 0xF98B88, + light_coral = 0xF08080, + pastel_red = 0xF67280, + pink_coral = 0xE77471, + bean_red = 0xF75D59, + valentine_red = 0xE55451, + indian_red = 0xCD5C5C, + tomato = 0xFF6347, + shocking_orange = 0xE55B3C, + orange_red = 0xFF4500, + neon_red = 0xFD1C03, + ruby_red = 0xF62217, + ferrari_red = 0xF70D1A, + fire_engine_red = 0xF62817, + lava_red = 0xE42217, + love_red = 0xE41B17, + grapefruit = 0xDC381F, + cherry_red = 0xC24641, + chilli_pepper = 0xC11B17, + fire_brick = 0xB22222, + tomato_sauce_red = 0xB21807, + carbon_red = 0xA70D2A, + cranberry = 0x9F000F, + saffron_red = 0x931314, + crimson_red = 0x990000, + red_wine = 0x990012, + wine_red = 0x990012, + dark_red = 0x8B0000, + maroon = 0x800000, + burgundy = 0x8C001A, + vermilion = 0x7E191B, + deep_red = 0x800517, + red_blood = 0x660000, + blood_night = 0x551606, + dark_scarlet = 0x560319, + black_bean = 0x3D0C02, + chocolate_brown = 0x3F000F, + midnight = 0x2B1B17, + purple_lily = 0x550A35, + purple_maroon = 0x810541, + plum_pie = 0x7D0541, + plum_velvet = 0x7D0552, + dark_raspberry = 0x872657, + velvet_maroon = 0x7E354D, + rosy_finch = 0x7F4E52, + dull_purple = 0x7F525D, + puce = 0x7F5A58, + rose_dust = 0x997070, + pastel_brown = 0xB1907F, + rosy_pink = 0xB38481, + rosy_brown = 0xBC8F8F, + khaki_rose = 0xC5908E, + lipstick_pink = 0xC48793, + pink_brown = 0xC48189, + old_rose = 0xC08081, + dusty_pink = 0xD58A94, + pink_daisy = 0xE799A3, + rose = 0xE8ADAA, + dusty_rose = 0xC9A9A6, + silver_pink = 0xC4AEAD, + gold_pink = 0xE6C7C2, + rose_gold = 0xECC5C0, + deep_peach = 0xFFCBA4, + pastel_orange = 0xF8B88B, + desert_sand = 0xEDC9AF, + unbleached_silk = 0xFFDDCA, + pig_pink = 0xFDD7E4, + pale_pink = 0xF2D4D7, + blush = 0xFFE6E8, + misty_rose = 0xFFE4E1, + pink_bubble_gum = 0xFFDFDD, + light_rose = 0xFBCFCD, + light_red = 0xFFCCCB, + warm_pink = 0xF6C6BD, + deep_rose = 0xFBBBB9, + light_pink = 0xFFB6C1, + soft_pink = 0xFFB8BF, + donut_pink = 0xFAAFBE, + baby_pink = 0xFAAFBA, + flamingo_pink = 0xF9A7B0, + pastel_pink = 0xFEA3AA, + rose_pink = 0xE7A1B0, + pink_rose = 0xE7A1B0, + cadillac_pink = 0xE38AAE, + carnation_pink = 0xF778A1, + pastel_rose = 0xE5788F, + blush_red = 0xE56E94, + pale_violet_red = 0xDB7093, + purple_pink = 0xD16587, + tulip_pink = 0xC25A7C, + bashful_pink = 0xC25283, + dark_pink = 0xE75480, + dark_hot_pink = 0xF660AB, + hot_pink = 0xFF69B4, + watermelon_pink = 0xFC6C85, + violet_red = 0xF6358A, + hot_deep_pink = 0xF52887, + bright_pink = 0xFF007F, + deep_pink = 0xFF1493, + neon_pink = 0xF535AA, + chrome_pink = 0xFF33AA, + neon_hot_pink = 0xFD349C, + pink_cupcake = 0xE45E9D, + royal_pink = 0xE759AC, + dimorphotheca_magenta = 0xE3319D, + pink_lemonade = 0xE4287C, + red_pink = 0xFA2A55, + crimson = 0xDC143C, + bright_maroon = 0xC32148, + rose_red = 0xC21E56, + rogue_pink = 0xC12869, + burnt_pink = 0xC12267, + pink_violet = 0xCA226B, + magenta_pink = 0xCC338B, + medium_violet_red = 0xC71585, + dark_carnation_pink = 0xC12283, + raspberry_purple = 0xB3446C, + pink_plum = 0xB93B8F, + orchid = 0xDA70D6, + deep_mauve = 0xDF73D4, + violet = 0xEE82EE, + fuchsia_pink = 0xFF77FF, + bright_neon_pink = 0xF433FF, + fuchsia = 0xFF00FF, + crimson_purple = 0xE238EC, + heliotrope_purple = 0xD462FF, + tyrian_purple = 0xC45AEC, + medium_orchid = 0xBA55D3, + purple_flower = 0xA74AC7, + orchid_purple = 0xB048B5, + rich_lilac = 0xB666D2, + pastel_violet = 0xD291BC, + mauve_taupe = 0x915F6D, + viola_purple = 0x7E587E, + eggplant = 0x614051, + plum_purple = 0x583759, + grape = 0x5E5A80, + purple_navy = 0x4E5180, + slate_blue = 0x6A5ACD, + blue_lotus = 0x6960EC, + blurple = 0x5865F2, + light_slate_blue = 0x736AFF, + medium_slate_blue = 0x7B68EE, + periwinkle_purple = 0x7575CF, + very_peri = 0x6667AB, + bright_grape = 0x6F2DA8, + purple_amethyst = 0x6C2DC7, + bright_purple = 0x6A0DAD, + deep_periwinkle = 0x5453A6, + dark_slate_blue = 0x483D8B, + purple_haze = 0x4E387E, + purple_iris = 0x571B7E, + dark_purple = 0x4B0150, + deep_purple = 0x36013F, + midnight_purple = 0x2E1A47, + purple_monster = 0x461B7E, + indigo = 0x4B0082, + blue_whale = 0x342D7E, + rebecca_purple = 0x663399, + purple_jam = 0x6A287E, + dark_magenta = 0x8B008B, + purple = 0x800080, + french_lilac = 0x86608E, + dark_orchid = 0x9932CC, + dark_violet = 0x9400D3, + purple_violet = 0x8D38C9, + jasmine_purple = 0xA23BEC, + purple_daffodil = 0xB041FF, + clematis_violet = 0x842DCE, + blue_violet = 0x8A2BE2, + purple_sage_bush = 0x7A5DC7, + lovely_purple = 0x7F38EC, + neon_purple = 0x9D00FF, + purple_plum = 0x8E35EF, + aztech_purple = 0x893BFF, + medium_purple = 0x9370DB, + light_purple = 0x8467D7, + crocus_purple = 0x9172EC, + purple_mimosa = 0x9E7BFF, + periwinkle = 0xCCCCFF, + pale_lilac = 0xDCD0FF, + lavender_purple = 0x967BB6, + rose_purple = 0xB09FCA, + lilac = 0xC8A2C8, + mauve = 0xE0B0FF, + bright_lilac = 0xD891EF, + purple_dragon = 0xC38EC7, + plum = 0xDDA0DD, + blush_pink = 0xE6A9EC, + pastel_purple = 0xF2A2E8, + blossom_pink = 0xF9B7FF, + wisteria_purple = 0xC6AEC7, + purple_thistle = 0xD2B9D3, + thistle = 0xD8BFD8, + purple_white = 0xDFD3E3, + periwinkle_pink = 0xE9CFEC, + cotton_candy = 0xFCDFFF, + lavender_pinocchio = 0xEBDDE2, + dark_white = 0xE1D9D1, + ash_white = 0xE9E4D4, + white_chocolate = 0xEDE6D6, + soft_ivory = 0xFAF0DD, + off_white = 0xF8F0E3, + pearl_white = 0xF8F6F0, + red_white = 0xF3E8EA, + lavender_blush = 0xFFF0F5, + pearl = 0xFDEEF4, + egg_shell = 0xFFF9E3, + old_lace = 0xFEF0E3, + linen = 0xFAF0E6, + sea_shell = 0xFFF5EE, + bone_white = 0xF9F6EE, + rice = 0xFAF5EF, + floral_white = 0xFFFAF0, + ivory = 0xFFFFF0, + white_gold = 0xFFFFF4, + light_white = 0xFFFFF7, + white_smoke = 0xF5F5F5, + cotton = 0xFBFBF9, + snow = 0xFFFAFA, + milk_white = 0xFEFCFF, + half_white = 0xFFFEFA; +} // namespace colors + +/** + * @brief Predefined colour constants, same as colors but for the british. + */ +namespace colours = colors; } // namespace dpp diff --git a/include/dpp/commandhandler.h b/include/dpp/commandhandler.h index 304ba9318e..724f38f577 100644 --- a/include/dpp/commandhandler.h +++ b/include/dpp/commandhandler.h @@ -50,6 +50,7 @@ struct DPP_EXPORT resolved_user { * @brief Holds user information */ dpp::user user; + /** * @brief Holds member information */ @@ -69,13 +70,40 @@ typedef std::variant> bulk_registration_list_guild; + /** * @brief List of global commands to bulk register */ @@ -384,7 +418,9 @@ class DPP_EXPORT commandhandler { */ void thinking(command_source source, command_completion_event_t callback = utility::log_error()); - /* Easter egg */ + /** + * @brief Easter egg (redefinition of dpp::commandhandler::thinking). + */ void thonk(command_source source, command_completion_event_t callback = utility::log_error()); }; diff --git a/include/dpp/discordevents.h b/include/dpp/discordevents.h index 0154d4a44b..c29d686bfc 100644 --- a/include/dpp/discordevents.h +++ b/include/dpp/discordevents.h @@ -29,21 +29,24 @@ namespace dpp { -/** @brief Returns a snowflake id from a json field value, if defined, else returns 0 +/** + * @brief Returns a snowflake id from a json field value, if defined, else returns 0 * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ uint64_t DPP_EXPORT snowflake_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets a snowflake id from a json field value, if defined, else does nothing +/** + * @brief Sets a snowflake id from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_snowflake_not_null(const nlohmann::json* j, const char *keyname, uint64_t &v); -/** @brief Sets an array of snowflakes from a json field value, if defined, else does nothing +/** + * @brief Sets an array of snowflakes from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for the values * @param v Value to change @@ -58,7 +61,8 @@ void DPP_EXPORT set_snowflake_array_not_null(const nlohmann::json* j, const char */ void DPP_EXPORT for_each_json(nlohmann::json* parent, std::string_view key, const std::function &fn); -/** @brief Sets an array of objects from a json field value, if defined, else does nothing +/** + * @brief Sets an array of objects from a json field value, if defined, else does nothing * @tparam T The class of which the array consists of. Must be derived from dpp::json_interface * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for the values @@ -71,42 +75,48 @@ template void set_object_array_not_null(nlohmann::json* j, std::string_ }); } -/** @brief Returns a string from a json field value, if defined, else returns an empty string. +/** + * @brief Returns a string from a json field value, if defined, else returns an empty string. * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ std::string DPP_EXPORT string_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets a string from a json field value, if defined, else does nothing +/** + * @brief Sets a string from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_string_not_null(const nlohmann::json* j, const char *keyname, std::string &v); -/** @brief This is a repeat of set_string_not_null, but takes in a iconhash. +/** + * @brief This is a repeat of set_string_not_null, but takes in a iconhash. * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_iconhash_not_null(const nlohmann::json* j, const char *keyname, utility::iconhash &v); -/** @brief Returns a double from a json field value, if defined, else returns 0. +/** + * @brief Returns a double from a json field value, if defined, else returns 0. * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ double DPP_EXPORT double_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets a double from a json field value, if defined, else does nothing +/** + * @brief Sets a double from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_double_not_null(const nlohmann::json* j, const char *keyname, double &v); -/** @brief Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. +/** + * @brief Returns a 64 bit unsigned integer from a json field value, if defined, else returns 0. * DO NOT use this for snowflakes, as usually snowflakes are wrapped in a string! * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value @@ -114,70 +124,80 @@ void DPP_EXPORT set_double_not_null(const nlohmann::json* j, const char *keyname */ uint64_t DPP_EXPORT int64_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets an unsigned 64 bit integer from a json field value, if defined, else does nothing +/** + * @brief Sets an unsigned 64 bit integer from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_int64_not_null(const nlohmann::json* j, const char *keyname, uint64_t &v); -/** @brief Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0 +/** + * @brief Returns a 32 bit unsigned integer from a json field value, if defined, else returns 0 * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ uint32_t DPP_EXPORT int32_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets an unsigned 32 bit integer from a json field value, if defined, else does nothing +/** + * @brief Sets an unsigned 32 bit integer from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_int32_not_null(const nlohmann::json* j, const char *keyname, uint32_t &v); -/** @brief Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0 +/** + * @brief Returns a 16 bit unsigned integer from a json field value, if defined, else returns 0 * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ uint16_t DPP_EXPORT int16_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets an unsigned 16 bit integer from a json field value, if defined, else does nothing +/** + * @brief Sets an unsigned 16 bit integer from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_int16_not_null(const nlohmann::json* j, const char *keyname, uint16_t &v); -/** @brief Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0 +/** + * @brief Returns an 8 bit unsigned integer from a json field value, if defined, else returns 0 * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ uint8_t DPP_EXPORT int8_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets an unsigned 8 bit integer from a json field value, if defined, else does nothing +/** + * @brief Sets an unsigned 8 bit integer from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_int8_not_null(const nlohmann::json* j, const char *keyname, uint8_t &v); -/** @brief Returns a boolean value from a json field value, if defined, else returns false +/** + * @brief Returns a boolean value from a json field value, if defined, else returns false * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @return found value */ bool DPP_EXPORT bool_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets a boolean from a json field value, if defined, else does nothing +/** + * @brief Sets a boolean from a json field value, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_bool_not_null(const nlohmann::json* j, const char *keyname, bool &v); -/** @brief Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns +/** + * @brief Returns a time_t from an ISO8601 timestamp field in a json value, if defined, else returns * epoch value of 0. * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value @@ -185,14 +205,16 @@ void DPP_EXPORT set_bool_not_null(const nlohmann::json* j, const char *keyname, */ time_t DPP_EXPORT ts_not_null(const nlohmann::json* j, const char *keyname); -/** @brief Sets an timestamp from a json field value containing an ISO8601 string, if defined, else does nothing +/** + * @brief Sets an timestamp from a json field value containing an ISO8601 string, if defined, else does nothing * @param j nlohmann::json instance to retrieve value from * @param keyname key name to check for a value * @param v Value to change */ void DPP_EXPORT set_ts_not_null(const nlohmann::json* j, const char *keyname, time_t &v); -/** @brief Base64 encode data into a string. +/** + * @brief Base64 encode data into a string. * @param buf Raw binary buffer * @param buffer_length Buffer length to encode * @return The base64 encoded string diff --git a/include/dpp/discordvoiceclient.h b/include/dpp/discordvoiceclient.h index cc88ec04b8..4a13ab6725 100644 --- a/include/dpp/discordvoiceclient.h +++ b/include/dpp/discordvoiceclient.h @@ -93,6 +93,7 @@ struct DPP_EXPORT voice_out_packet { * Generally these will be RTP. */ std::string packet; + /** * @brief Duration of packet */ @@ -189,6 +190,7 @@ class DPP_EXPORT discord_voice_client : public websocket_client * voice payload. */ rtp_seq_t seq; + /** * @brief The timestamp of the RTP packet that generated this voice * payload. @@ -197,6 +199,7 @@ class DPP_EXPORT discord_voice_client : public websocket_client * number wraps around. */ rtp_timestamp_t timestamp; + /** * @brief The event payload that voice handlers receive. */ @@ -226,6 +229,7 @@ class DPP_EXPORT discord_voice_client : public websocket_client rtp_seq_t min_seq, max_seq; rtp_timestamp_t min_timestamp, max_timestamp; } range; + /** * @brief The queue of parked voice payloads. * @@ -234,10 +238,12 @@ class DPP_EXPORT discord_voice_client : public websocket_client * are parked and sorted in this queue. */ std::priority_queue parked_payloads; + /** * @brief The decoder ctls to be set on the decoder. */ std::vector> pending_decoder_ctls; + /** * @brief libopus decoder * @@ -251,6 +257,7 @@ class DPP_EXPORT discord_voice_client : public websocket_client * @brief Thread used to deliver incoming voice data to handlers. */ std::thread voice_courier; + /** * @brief Shared state between this voice client and the courier thread. */ @@ -259,16 +266,19 @@ class DPP_EXPORT discord_voice_client : public websocket_client * @brief Protects all following members. */ std::mutex mtx; + /** * @brief Signaled when there is a new payload to deliver or terminating state has changed. */ std::condition_variable signal_iteration; + /** * @brief Voice buffers to be reported to handler, grouped by speaker. * * Buffers are parked here and flushed every 500ms. */ std::map parked_voice_payloads; + /** * @brief Used to signal termination. * @@ -276,6 +286,7 @@ class DPP_EXPORT discord_voice_client : public websocket_client */ bool terminating = false; } voice_courier_shared_state; + /** * @brief The run loop of the voice courier thread. */ diff --git a/include/dpp/dispatcher.h b/include/dpp/dispatcher.h index 0df6996f42..4c41ab69ae 100644 --- a/include/dpp/dispatcher.h +++ b/include/dpp/dispatcher.h @@ -176,15 +176,21 @@ struct DPP_EXPORT event_dispatch_t { bool is_cancelled() const; }; -/** @brief Log messages */ +/** + * @brief Log messages + */ struct DPP_EXPORT log_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** Severity */ + /** + * @brief Severity. + */ loglevel severity = ll_info; - /** Log Message */ + /** + * @brief Log Message + */ std::string message = {}; }; @@ -209,7 +215,9 @@ namespace utility { command_completion_event_t DPP_EXPORT log_error(); } // namespace utility -/** @brief Add user to scheduled event */ +/** + * @brief Add user to scheduled event + */ struct DPP_EXPORT guild_scheduled_event_user_add_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -230,7 +238,9 @@ struct DPP_EXPORT guild_scheduled_event_user_add_t : public event_dispatch_t { snowflake guild_id = {}; }; -/** @brief Delete user from scheduled event */ +/** + * @brief Delete user from scheduled event + */ struct DPP_EXPORT guild_scheduled_event_user_remove_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -251,7 +261,9 @@ struct DPP_EXPORT guild_scheduled_event_user_remove_t : public event_dispatch_t snowflake guild_id = {}; }; -/** @brief Create scheduled event */ +/** + * @brief Create scheduled event + */ struct DPP_EXPORT guild_scheduled_event_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -262,7 +274,9 @@ struct DPP_EXPORT guild_scheduled_event_create_t : public event_dispatch_t { scheduled_event created = {}; }; -/** @brief Create scheduled event */ +/** + * @brief Create scheduled event + */ struct DPP_EXPORT guild_scheduled_event_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -273,7 +287,9 @@ struct DPP_EXPORT guild_scheduled_event_update_t : public event_dispatch_t { scheduled_event updated = {}; }; -/** @brief Delete scheduled event */ +/** + * @brief Delete scheduled event + */ struct DPP_EXPORT guild_scheduled_event_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -284,7 +300,9 @@ struct DPP_EXPORT guild_scheduled_event_delete_t : public event_dispatch_t { scheduled_event deleted = {}; }; -/** @brief Create automod rule */ +/** + * @brief Create automod rule + */ struct DPP_EXPORT automod_rule_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -295,7 +313,9 @@ struct DPP_EXPORT automod_rule_create_t : public event_dispatch_t { automod_rule created = {}; }; -/** @brief Update automod rule */ +/** + * @brief Update automod rule + */ struct DPP_EXPORT automod_rule_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -306,7 +326,9 @@ struct DPP_EXPORT automod_rule_update_t : public event_dispatch_t { automod_rule updated = {}; }; -/** @brief Delete automod rule */ +/** + * @brief Delete automod rule + */ struct DPP_EXPORT automod_rule_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -317,7 +339,9 @@ struct DPP_EXPORT automod_rule_delete_t : public event_dispatch_t { automod_rule deleted = {}; }; -/** @brief Execute/trigger automod rule */ +/** + * @brief Execute/trigger automod rule + */ struct DPP_EXPORT automod_rule_execute_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -378,7 +402,9 @@ struct DPP_EXPORT automod_rule_execute_t : public event_dispatch_t { std::string matched_content = {}; }; -/** @brief Create stage instance */ +/** + * @brief Create stage instance + */ struct DPP_EXPORT stage_instance_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -389,7 +415,9 @@ struct DPP_EXPORT stage_instance_create_t : public event_dispatch_t { stage_instance created = {}; }; -/** @brief Update stage instance */ +/** + * @brief Update stage instance + */ struct DPP_EXPORT stage_instance_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -400,7 +428,9 @@ struct DPP_EXPORT stage_instance_update_t : public event_dispatch_t { stage_instance updated = {}; }; -/** @brief Delete stage instance */ +/** + * @brief Delete stage instance + */ struct DPP_EXPORT stage_instance_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -411,12 +441,16 @@ struct DPP_EXPORT stage_instance_delete_t : public event_dispatch_t { stage_instance deleted = {}; }; -/** @brief Voice state update */ +/** + * @brief Voice state update + */ struct DPP_EXPORT voice_state_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** Voice state */ + /** + * @brief Voice state + */ voicestate state = {}; }; @@ -427,7 +461,6 @@ struct DPP_EXPORT interaction_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** * @brief Acknowledge interaction without displaying a message to the user, * for use with button and select menu components. @@ -684,6 +717,9 @@ struct DPP_EXPORT button_click_t : public interaction_create_t { uint8_t component_type = {}; }; +/** + * @brief On form submitted. + */ struct DPP_EXPORT form_submit_t : public interaction_create_t { private: using interaction_create_t::get_parameter; @@ -826,7 +862,9 @@ struct DPP_EXPORT select_click_t : public interaction_create_t { }; -/** @brief Delete guild */ +/** + * @brief Delete guild + */ struct DPP_EXPORT guild_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -844,12 +882,16 @@ struct DPP_EXPORT guild_delete_t : public event_dispatch_t { snowflake guild_id{0}; }; -/** @brief Update guild stickers */ +/** + * @brief Update guild stickers + */ struct DPP_EXPORT guild_stickers_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** Updating guild */ + /** + * @brief Updating guild + */ guild* updating_guild = nullptr; /** @@ -858,12 +900,16 @@ struct DPP_EXPORT guild_stickers_update_t : public event_dispatch_t { std::vector stickers = {}; }; -/** @brief Guild join request delete (user declined membership screening) */ +/** + * @brief Guild join request delete (user declined membership screening) + */ struct DPP_EXPORT guild_join_request_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** Deleted guild */ + /** + * @brief Deleted guild + */ snowflake guild_id = {}; /** @@ -872,7 +918,9 @@ struct DPP_EXPORT guild_join_request_delete_t : public event_dispatch_t { snowflake user_id = {}; }; -/** @brief Delete channel */ +/** + * @brief Delete channel + */ struct DPP_EXPORT channel_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -888,7 +936,9 @@ struct DPP_EXPORT channel_delete_t : public event_dispatch_t { channel deleted; }; -/** @brief Update channel */ +/** + * @brief Update channel + */ struct DPP_EXPORT channel_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -904,7 +954,9 @@ struct DPP_EXPORT channel_update_t : public event_dispatch_t { channel* updated = nullptr; }; -/** @brief Session ready */ +/** + * @brief Session ready + */ struct DPP_EXPORT ready_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -920,7 +972,9 @@ struct DPP_EXPORT ready_t : public event_dispatch_t { uint32_t shard_id = {}; }; -/** @brief Message Deleted */ +/** + * @brief Message Deleted + */ struct DPP_EXPORT message_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -943,7 +997,9 @@ struct DPP_EXPORT message_delete_t : public event_dispatch_t { }; -/** @brief Guild member remove */ +/** + * @brief Guild member remove + */ struct DPP_EXPORT guild_member_remove_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -964,7 +1020,9 @@ struct DPP_EXPORT guild_member_remove_t : public event_dispatch_t { user removed; }; -/** @brief Session resumed */ +/** + * @brief Session resumed + */ struct DPP_EXPORT resumed_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -980,7 +1038,9 @@ struct DPP_EXPORT resumed_t : public event_dispatch_t { uint32_t shard_id = 0; }; -/** @brief Guild role create */ +/** + * @brief Guild role create + */ struct DPP_EXPORT guild_role_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -996,7 +1056,9 @@ struct DPP_EXPORT guild_role_create_t : public event_dispatch_t { role* created = nullptr; }; -/** @brief Typing start */ +/** + * @brief Typing start + */ struct DPP_EXPORT typing_start_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1029,20 +1091,28 @@ struct DPP_EXPORT typing_start_t : public event_dispatch_t { time_t timestamp = 0; }; -/** @brief Voice state update */ +/** + * @brief Voice state update + */ struct DPP_EXPORT voice_track_marker_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; - /** Voice client */ + /** + * @brief Voice client + */ discord_voice_client* voice_client = nullptr; - /** Track metadata */ + /** + * @brief Track metadata + */ std::string track_meta = {}; }; -/** @brief Message reaction add */ +/** + * @brief Message reaction add + */ struct DPP_EXPORT message_reaction_add_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1089,7 +1159,9 @@ struct DPP_EXPORT message_reaction_add_t : public event_dispatch_t { snowflake message_author_id = {}; }; -/** @brief Guild members chunk */ +/** + * @brief Guild members chunk + */ struct DPP_EXPORT guild_members_chunk_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1105,7 +1177,9 @@ struct DPP_EXPORT guild_members_chunk_t : public event_dispatch_t { guild_member_map* members = nullptr; }; -/** @brief Message reaction remove */ +/** + * @brief Message reaction remove + */ struct DPP_EXPORT message_reaction_remove_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1142,7 +1216,9 @@ struct DPP_EXPORT message_reaction_remove_t : public event_dispatch_t { snowflake message_id = {}; }; -/** @brief Create guild */ +/** + * @brief Create guild + */ struct DPP_EXPORT guild_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1181,7 +1257,9 @@ struct DPP_EXPORT guild_create_t : public event_dispatch_t { sticker_map stickers = {}; }; -/** @brief Create channel */ +/** + * @brief Create channel + */ struct DPP_EXPORT channel_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1197,7 +1275,9 @@ struct DPP_EXPORT channel_create_t : public event_dispatch_t { channel* created = nullptr; }; -/** @brief Message remove emoji */ +/** + * @brief Message remove emoji + */ struct DPP_EXPORT message_reaction_remove_emoji_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1229,7 +1309,9 @@ struct DPP_EXPORT message_reaction_remove_emoji_t : public event_dispatch_t { snowflake message_id = {}; }; -/** @brief Message delete bulk */ +/** + * @brief Message delete bulk + */ struct DPP_EXPORT message_delete_bulk_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1255,7 +1337,9 @@ struct DPP_EXPORT message_delete_bulk_t : public event_dispatch_t { std::vector deleted = {}; }; -/** @brief Guild role update */ +/** + * @brief Guild role update + */ struct DPP_EXPORT guild_role_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1271,7 +1355,9 @@ struct DPP_EXPORT guild_role_update_t : public event_dispatch_t { role* updated = nullptr; }; -/** @brief Guild role delete */ +/** + * @brief Guild role delete + */ struct DPP_EXPORT guild_role_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1292,7 +1378,9 @@ struct DPP_EXPORT guild_role_delete_t : public event_dispatch_t { snowflake role_id = {}; }; -/** @brief Channel pins update */ +/** + * @brief Channel pins update + */ struct DPP_EXPORT channel_pins_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1313,7 +1401,9 @@ struct DPP_EXPORT channel_pins_update_t : public event_dispatch_t { time_t timestamp = 0; }; -/** @brief Message remove all reactions */ +/** + * @brief Message remove all reactions + */ struct DPP_EXPORT message_reaction_remove_all_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1341,7 +1431,9 @@ struct DPP_EXPORT message_reaction_remove_all_t : public event_dispatch_t { }; -/** @brief Voice server update */ +/** + * @brief Voice server update + */ struct DPP_EXPORT voice_server_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1362,7 +1454,9 @@ struct DPP_EXPORT voice_server_update_t : public event_dispatch_t { std::string endpoint = {}; }; -/** @brief Guild emojis update */ +/** + * @brief Guild emojis update + */ struct DPP_EXPORT guild_emojis_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1392,7 +1486,9 @@ struct DPP_EXPORT presence_update_t : public event_dispatch_t { presence rich_presence = {}; }; -/** @brief Webhooks update */ +/** + * @brief Webhooks update + */ struct DPP_EXPORT webhooks_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1408,7 +1504,9 @@ struct DPP_EXPORT webhooks_update_t : public event_dispatch_t { channel* webhook_channel = nullptr; }; -/** @brief Guild member add */ +/** + * @brief Guild member add + */ struct DPP_EXPORT guild_member_add_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1424,7 +1522,9 @@ struct DPP_EXPORT guild_member_add_t : public event_dispatch_t { guild_member added = {}; }; -/** @brief Invite delete */ +/** + * @brief Invite delete + */ struct DPP_EXPORT invite_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1435,7 +1535,9 @@ struct DPP_EXPORT invite_delete_t : public event_dispatch_t { invite deleted_invite = {}; }; -/** @brief Guild update */ +/** + * @brief Guild update + */ struct DPP_EXPORT guild_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1446,7 +1548,9 @@ struct DPP_EXPORT guild_update_t : public event_dispatch_t { guild* updated = nullptr; }; -/** @brief Guild integrations update */ +/** + * @brief Guild integrations update + */ struct DPP_EXPORT guild_integrations_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1457,7 +1561,9 @@ struct DPP_EXPORT guild_integrations_update_t : public event_dispatch_t { guild* updating_guild = nullptr; }; -/** @brief Guild member update */ +/** + * @brief Guild member update + */ struct DPP_EXPORT guild_member_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1473,7 +1579,9 @@ struct DPP_EXPORT guild_member_update_t : public event_dispatch_t { guild_member updated = {}; }; -/** @brief Invite create */ +/** + * @brief Invite create + */ struct DPP_EXPORT invite_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1484,7 +1592,9 @@ struct DPP_EXPORT invite_create_t : public event_dispatch_t { invite created_invite = {}; }; -/** @brief Message update */ +/** + * @brief Message update + */ struct DPP_EXPORT message_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1495,7 +1605,9 @@ struct DPP_EXPORT message_update_t : public event_dispatch_t { message msg = {}; }; -/** @brief User update */ +/** + * @brief User update + */ struct DPP_EXPORT user_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1506,7 +1618,9 @@ struct DPP_EXPORT user_update_t : public event_dispatch_t { user updated = {}; }; -/** @brief Create message */ +/** + * @brief Create message + */ struct DPP_EXPORT message_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1562,7 +1676,9 @@ struct DPP_EXPORT message_create_t : public event_dispatch_t { void reply(message&& msg, bool mention_replied_user = false, command_completion_event_t callback = utility::log_error()) const; }; -/** @brief Guild audit log entry create */ +/** + * @brief Guild audit log entry create + */ struct DPP_EXPORT guild_audit_log_entry_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1573,7 +1689,9 @@ struct DPP_EXPORT guild_audit_log_entry_create_t : public event_dispatch_t { audit_entry entry = {}; }; -/** @brief Guild ban add */ +/** + * @brief Guild ban add + */ struct DPP_EXPORT guild_ban_add_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1589,7 +1707,9 @@ struct DPP_EXPORT guild_ban_add_t : public event_dispatch_t { user banned = {}; }; -/** @brief Guild ban remove */ +/** + * @brief Guild ban remove + */ struct DPP_EXPORT guild_ban_remove_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1605,7 +1725,9 @@ struct DPP_EXPORT guild_ban_remove_t : public event_dispatch_t { user unbanned = {}; }; -/** @brief Integration create */ +/** + * @brief Integration create + */ struct DPP_EXPORT integration_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1616,7 +1738,9 @@ struct DPP_EXPORT integration_create_t : public event_dispatch_t { integration created_integration = {}; }; -/** @brief Integration update */ +/** + * @brief Integration update + */ struct DPP_EXPORT integration_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1627,7 +1751,9 @@ struct DPP_EXPORT integration_update_t : public event_dispatch_t { integration updated_integration = {}; }; -/** @brief Integration delete */ +/** + * @brief Integration delete + */ struct DPP_EXPORT integration_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1638,7 +1764,9 @@ struct DPP_EXPORT integration_delete_t : public event_dispatch_t { integration deleted_integration = {}; }; -/** @brief Thread Create*/ +/** + * @brief Thread Create + */ struct DPP_EXPORT thread_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1654,8 +1782,9 @@ struct DPP_EXPORT thread_create_t : public event_dispatch_t { thread created = {}; }; -/** @brief Thread Update -*/ +/** + * @brief Thread Update + */ struct DPP_EXPORT thread_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1671,7 +1800,8 @@ struct DPP_EXPORT thread_update_t : public event_dispatch_t { thread updated = {}; }; -/** @brief Thread Delete +/** + * @brief Thread Delete */ struct DPP_EXPORT thread_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; @@ -1688,7 +1818,8 @@ struct DPP_EXPORT thread_delete_t : public event_dispatch_t { thread deleted = {}; }; -/** @brief Thread List Sync +/** + * @brief Thread List Sync */ struct DPP_EXPORT thread_list_sync_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; @@ -1710,7 +1841,8 @@ struct DPP_EXPORT thread_list_sync_t : public event_dispatch_t { std::vector members = {}; }; -/** @brief Thread Member Update +/** + * @brief Thread Member Update */ struct DPP_EXPORT thread_member_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; @@ -1722,7 +1854,8 @@ struct DPP_EXPORT thread_member_update_t : public event_dispatch_t { thread_member updated = {}; }; -/** @brief Thread Members Update +/** + * @brief Thread Members Update */ struct DPP_EXPORT thread_members_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; @@ -1773,7 +1906,9 @@ struct DPP_EXPORT voice_buffer_send_t : public event_dispatch_t { int buffer_size = 0; }; -/** @brief voice user talking */ +/** + * @brief voice user talking + */ struct DPP_EXPORT voice_user_talking_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1794,7 +1929,9 @@ struct DPP_EXPORT voice_user_talking_t : public event_dispatch_t { uint8_t talking_flags = 0; }; -/** @brief voice user talking */ +/** + * @brief voice user talking + */ struct DPP_EXPORT voice_ready_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1810,7 +1947,9 @@ struct DPP_EXPORT voice_ready_t : public event_dispatch_t { snowflake voice_channel_id = {}; }; -/** @brief voice receive packet */ +/** + * @brief voice receive packet + */ struct DPP_EXPORT voice_receive_t : public event_dispatch_t { friend class discord_voice_client; @@ -1882,7 +2021,9 @@ struct DPP_EXPORT voice_receive_t : public event_dispatch_t { void reassign(discord_voice_client* vc, snowflake _user_id, const uint8_t* pcm, size_t length); }; -/** @brief voice client speaking event */ +/** + * @brief voice client speaking event + */ struct DPP_EXPORT voice_client_speaking_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1903,7 +2044,9 @@ struct DPP_EXPORT voice_client_speaking_t : public event_dispatch_t { uint32_t ssrc = 0; }; -/** @brief voice client disconnect event */ +/** + * @brief voice client disconnect event + */ struct DPP_EXPORT voice_client_disconnect_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1919,7 +2062,9 @@ struct DPP_EXPORT voice_client_disconnect_t : public event_dispatch_t { snowflake user_id = {}; }; -/** @brief Delete stage instance */ +/** + * @brief Delete stage instance + */ struct DPP_EXPORT entitlement_create_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1930,7 +2075,9 @@ struct DPP_EXPORT entitlement_create_t : public event_dispatch_t { entitlement created = {}; }; -/** @brief Delete stage instance */ +/** + * @brief Delete stage instance + */ struct DPP_EXPORT entitlement_update_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; @@ -1941,7 +2088,9 @@ struct DPP_EXPORT entitlement_update_t : public event_dispatch_t { entitlement updating_entitlement = {}; }; -/** @brief Delete stage instance */ +/** + * @brief Delete stage instance + */ struct DPP_EXPORT entitlement_delete_t : public event_dispatch_t { using event_dispatch_t::event_dispatch_t; using event_dispatch_t::operator=; diff --git a/include/dpp/dtemplate.h b/include/dpp/dtemplate.h index 3c1bbb724a..098824e458 100644 --- a/include/dpp/dtemplate.h +++ b/include/dpp/dtemplate.h @@ -54,35 +54,43 @@ class DPP_EXPORT dtemplate : public json_interface { * @brief Template code */ std::string code; + /** * @brief Template name */ std::string name; + /** * @brief Template description */ std::string description; + /** * @brief Usage counter */ uint32_t usage_count; + /** * @brief User ID of creator */ snowflake creator_id; + /** * @brief Creation date/time * */ time_t created_at; + /** * @brief Last update date/time */ time_t updated_at; + /** * @brief Guild id the template is created from */ snowflake source_guild_id; + /** * @brief True if needs synchronising */ @@ -99,8 +107,9 @@ class DPP_EXPORT dtemplate : public json_interface { virtual ~dtemplate() = default; }; -/** A container of invites */ +/** + * @brief A container of invites + */ typedef std::unordered_map dtemplate_map; - } // namespace dpp diff --git a/include/dpp/emoji.h b/include/dpp/emoji.h index fff307d0f4..40b38b1571 100644 --- a/include/dpp/emoji.h +++ b/include/dpp/emoji.h @@ -37,13 +37,24 @@ namespace dpp { * @brief Flags for dpp::emoji */ enum emoji_flags : uint8_t { - /// Emoji requires colons + /** + * @brief Emoji requires colons. + */ e_require_colons = 0b00000001, - /// Managed (introduced by application) + + /** + * @brief Managed (introduced by application) + */ e_managed = 0b00000010, - /// Animated + + /** + * @brief Animated emoji. + */ e_animated = 0b00000100, - /// Available (false if the guild doesn't meet boosting criteria, etc) + + /** + * @brief Available (false if the guild doesn't meet boosting criteria, etc) + */ e_available = 0b00001000, }; diff --git a/include/dpp/entitlement.h b/include/dpp/entitlement.h index e1cfab8818..dd7d1ae0d5 100644 --- a/include/dpp/entitlement.h +++ b/include/dpp/entitlement.h @@ -39,11 +39,13 @@ enum entitlement_type : uint8_t { * @warning This can only be used when creating a test entitlement. */ GUILD_SUBSCRIPTION = 1, + /** * @brief A subscription for a user. * @warning This can only be used when creating a test entitlement. */ USER_SUBSCRIPTION = 2, + /** * @brief Entitlement was purchased as an app subscription. */ diff --git a/include/dpp/etf.h b/include/dpp/etf.h index 28e3806a3d..8e17ca3a96 100644 --- a/include/dpp/etf.h +++ b/include/dpp/etf.h @@ -39,7 +39,9 @@ namespace dpp { -/** Current ETF format version in use */ +/** + * @brief Current ETF format version in use + */ const uint8_t FORMAT_VERSION = 131; /** @@ -47,60 +49,142 @@ const uint8_t FORMAT_VERSION = 131; * in the ETF binary structure. */ enum etf_token_type : uint8_t { - /// 68 [Distribution header] - ett_distribution = 'D', - /// 70 [Float64:IEEE float] - ett_new_float = 'F', - /// 77 [UInt32:Len, UInt8:Bits, Len:Data] - ett_bit_binary = 'M', - /// 80 [UInt4:UncompressedSize, N:ZlibCompressedData] - ett_compressed = 'P', - /// 97 [UInt8:Int] - ett_smallint = 'a', - /// 98 [Int32:Int] - ett_integer = 'b', - /// 99 [31:Float String] Float in string format (formatted "%.20e", sscanf "%lf"). Superseded by ett_new_float - ett_float = 'c', - /// 100 [UInt16:Len, Len:AtomName] max Len is 255 - ett_atom = 'd', - /// 101 [atom:Node, UInt32:ID, UInt8:Creation] - ett_reference = 'e', - /// 102 [atom:Node, UInt32:ID, UInt8:Creation] - ett_port = 'f', - /// 103 [atom:Node, UInt32:ID, UInt32:Serial, UInt8:Creation] - ett_pid = 'g', - /// 104 [UInt8:Arity, N:Elements] - ett_small_tuple = 'h', - /// 105 [UInt32:Arity, N:Elements] - ett_large_tuple = 'i', - /// 106 empty list - ett_nil = 'j', - /// 107 [UInt16:Len, Len:Characters] - ett_string = 'k', - /// 108 [UInt32:Len, Elements, Tail] - ett_list = 'l', - /// 109 [UInt32:Len, Len:Data] - ett_binary = 'm', - /// 110 [UInt8:n, UInt8:Sign, n:nums] - ett_bigint_small = 'n', - /// 111 [UInt32:n, UInt8:Sign, n:nums] - ett_bigint_large = 'o', - /// 112 [UInt32:Size, UInt8:Arity, 16*Uint6-MD5:Uniq, UInt32:Index, UInt32:NumFree, atom:Module, int:OldIndex, int:OldUniq, pid:Pid, NunFree*ext:FreeVars] - ett_new_function = 'p', - /// 113 [atom:Module, atom:Function, smallint:Arity] - ett_export = 'q', - /// 114 [UInt16:Len, atom:Node, UInt8:Creation, Len*UInt32:ID] - ett_new_reference = 'r', - /// 115 [UInt8:Len, Len:AtomName] - ett_atom_small = 's', - /// 116 [UInt32:Airty, N:Pairs] - ett_map = 't', - /// 117 [UInt4:NumFree, pid:Pid, atom:Module, int:Index, int:Uniq, NumFree*ext:FreeVars] - ett_function = 'u', - /// 118 [UInt16:Len, Len:AtomName] max Len is 255 characters (up to 4 bytes per) - ett_atom_utf8 = 'v', - /// 119 [UInt8:Len, Len:AtomName] - ett_atom_utf8_small = 'w' + /** + * @brief 68 [Distribution header] + */ + ett_distribution = 'D', + + /** + * @brief 70 [Float64:IEEE float] + */ + ett_new_float = 'F', + + /** + * @brief 77 [UInt32:Len, UInt8:Bits, Len:Data] + */ + ett_bit_binary = 'M', + + /** + * @brief 80 [UInt4:UncompressedSize, N:ZlibCompressedData] + */ + ett_compressed = 'P', + + /** + * @brief 97 [UInt8:Int] + */ + ett_smallint = 'a', + + /** + * @brief 98 [Int32:Int] + */ + ett_integer = 'b', + + /** + * @brief 99 [31:Float String] Float in string format (formatted "%.20e", sscanf "%lf"). + * + * @note Superseded by ett_new_float. + */ + ett_float = 'c', + + /** + * @brief 100 [UInt16:Len, Len:AtomName] max Len is 255 + */ + ett_atom = 'd', + + /** + * @brief 101 [atom:Node, UInt32:ID, UInt8:Creation] + */ + ett_reference = 'e', + + /** + * @brief 102 [atom:Node, UInt32:ID, UInt8:Creation] + */ + ett_port = 'f', + + /** + * @brief 103 [atom:Node, UInt32:ID, UInt32:Serial, UInt8:Creation] + */ + ett_pid = 'g', + + /** + * @brief 104 [UInt8:Arity, N:Elements] + */ + ett_small_tuple = 'h', + + /** + * @brief 105 [UInt32:Arity, N:Elements] + */ + ett_large_tuple = 'i', + + /** + * @brief 106 empty list + */ + ett_nil = 'j', + + /** + * @brief 107 [UInt16:Len, Len:Characters] + */ + ett_string = 'k', + + /** + * @brief 108 [UInt32:Len, Elements, Tail] + */ + ett_list = 'l', + + /** + * @brief 109 [UInt32:Len, Len:Data] + */ + ett_binary = 'm', + + /** + * @brief 110 [UInt8:n, UInt8:Sign, n:nums] + */ + ett_bigint_small = 'n', + + /** + * @brief 111 [UInt32:n, UInt8:Sign, n:nums] + */ + ett_bigint_large = 'o', + + /** + * @brief 112 [UInt32:Size, UInt8:Arity, 16*Uint6-MD5:Uniq, UInt32:Index, UInt32:NumFree, atom:Module, int:OldIndex, int:OldUniq, pid:Pid, NunFree*ext:FreeVars] + */ + ett_new_function = 'p', + + /** + * @brief 113 [atom:Module, atom:Function, smallint:Arity] + */ + ett_export = 'q', + + /** + * @brief 114 [UInt16:Len, atom:Node, UInt8:Creation, Len*UInt32:ID] + */ + ett_new_reference = 'r', + + /** + * @brief 115 [UInt8:Len, Len:AtomName] + */ + ett_atom_small = 's', + + /** + * @brief 116 [UInt32:Airty, N:Pairs] + */ + ett_map = 't', + + /** + * @brief 117 [UInt4:NumFree, pid:Pid, atom:Module, int:Index, int:Uniq, NumFree*ext:FreeVars] + */ + ett_function = 'u', + + /** + * @brief 118 [UInt16:Len, Len:AtomName] max Len is 255 characters (up to 4 bytes per) + */ + ett_atom_utf8 = 'v', + + /** + * @brief 119 [UInt8:Len, Len:AtomName] + */ + ett_atom_utf8_small = 'w' }; /** @@ -111,6 +195,7 @@ struct DPP_EXPORT etf_buffer { * @brief Raw buffer */ std::vector buf; + /** * @brief Current used length of buffer * (this is different from buf.size() as it is pre-allocated @@ -137,7 +222,6 @@ struct DPP_EXPORT etf_buffer { * have to be any different for handling ETF. */ class DPP_EXPORT etf_parser { - /** * @brief Current size of binary data */ diff --git a/include/dpp/event.h b/include/dpp/event.h index b9b3f003f7..fe6df9bb45 100644 --- a/include/dpp/event.h +++ b/include/dpp/event.h @@ -38,7 +38,8 @@ namespace dpp::events { */ class DPP_EXPORT event { public: - /** Pure virtual method for event handler code + /** + * @brief Pure virtual method for event handler code * @param client The creating shard * @param j The json data of the event * @param raw The raw event json diff --git a/include/dpp/event_router.h b/include/dpp/event_router.h index 027f25a0fc..5a16aaa74b 100644 --- a/include/dpp/event_router.h +++ b/include/dpp/event_router.h @@ -201,10 +201,15 @@ template class event_router_t { private: friend class cluster; - /** @brief Non-coro event handler type */ + /** + * @brief Non-coro event handler type + */ using regular_handler_t = std::function; - /** @brief Type that event handlers will be stored as with DPP_CORO off. This is the ABI DPP_CORO has to match */ + /** + * @brief Type that event handlers will be stored as with DPP_CORO off. + * This is the ABI DPP_CORO has to match. + */ using event_handler_abi_t = std::variant>; #ifdef DPP_CORO @@ -218,11 +223,15 @@ template class event_router_t { DPP_CHECK_ABI_COMPAT(event_handler_t, event_handler_abi_t) #else - /** @brief Type that event handlers are stored as */ + /** + * @brief Type that event handlers are stored as + */ using event_handler_t = event_handler_abi_t; #endif - /** @brief Identifier for the next event handler, will be given to the user on attaching a handler */ + /** + * @brief Identifier for the next event handler, will be given to the user on attaching a handler + */ event_handle next_handle = 1; /**