diff --git a/app/config/sdks.php b/app/config/sdks.php index 0d18f45569..bada949903 100644 --- a/app/config/sdks.php +++ b/app/config/sdks.php @@ -227,7 +227,7 @@ return [ [ 'key' => 'cli', 'name' => 'Command Line', - 'version' => '13.0.1', + 'version' => '13.1.0', 'url' => 'https://github.com/appwrite/sdk-for-cli', 'package' => 'https://www.npmjs.com/package/appwrite-cli', 'enabled' => true, @@ -250,6 +250,26 @@ return [ ], ], ], + [ + 'key' => 'markdown', + 'name' => 'Markdown', + 'version' => '0.1.0', + 'url' => 'https://github.com/appwrite/sdk-for-md.git', + 'package' => 'https://www.npmjs.com/package/@appwrite.io/docs', + 'enabled' => true, + 'beta' => false, + 'dev' => false, + 'hidden' => false, + 'family' => APP_SDK_PLATFORM_CONSOLE, + 'prism' => 'markdown', + 'source' => \realpath(__DIR__ . '/../sdks/console-md'), + 'gitUrl' => 'git@github.com:appwrite/sdk-for-md.git', + 'gitRepoName' => 'sdk-for-md', + 'gitUserName' => 'appwrite', + 'gitBranch' => 'dev', + 'repoBranch' => 'main', + 'changelog' => \realpath(__DIR__ . '/../../docs/sdks/md/CHANGELOG.md'), + ], ], ], diff --git a/composer.lock b/composer.lock index d44dd0fe8a..bd56277819 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4d1dd1ade183b74bf68a522c451476b7", + "content-hash": "33da844fdf5648d1d1a027dfb6ae42bc", "packages": [ { "name": "adhocore/jwt", @@ -798,6 +798,68 @@ }, "time": "2026-01-12T17:58:43+00:00" }, + { + "name": "halaxa/json-machine", + "version": "1.2.6", + "source": { + "type": "git", + "url": "https://github.com/halaxa/json-machine.git", + "reference": "8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/halaxa/json-machine/zipball/8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4", + "reference": "8bf0b0ff6ff60ab480778eaa5ad7d505b442c2d4", + "shasum": "" + }, + "require": { + "php": "7.2 - 8.5" + }, + "require-dev": { + "ext-json": "*", + "friendsofphp/php-cs-fixer": "^3.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-json": "To run JSON Machine out of the box without custom decoders.", + "guzzlehttp/guzzle": "To run example with GuzzleHttp" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "JsonMachine\\": "src/" + }, + "exclude-from-classmap": [ + "src/autoloader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Filip Halaxa", + "email": "filip@halaxa.cz" + } + ], + "description": "Efficient, easy-to-use and fast JSON pull parser", + "support": { + "issues": "https://github.com/halaxa/json-machine/issues", + "source": "https://github.com/halaxa/json-machine/tree/1.2.6" + }, + "funding": [ + { + "url": "https://ko-fi.com/G2G57KTE4", + "type": "other" + } + ], + "time": "2025-12-05T14:53:09+00:00" + }, { "name": "league/csv", "version": "9.24.1", @@ -3899,16 +3961,16 @@ }, { "name": "utopia-php/database", - "version": "dev-joins8", + "version": "4.6.2", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "de44f6a679c375ec34226f7539b6a566b28b53e7" + "reference": "53394759c44067e9db4660635765e2056f83788c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/de44f6a679c375ec34226f7539b6a566b28b53e7", - "reference": "de44f6a679c375ec34226f7539b6a566b28b53e7", + "url": "https://api.github.com/repos/utopia-php/database/zipball/53394759c44067e9db4660635765e2056f83788c", + "reference": "53394759c44067e9db4660635765e2056f83788c", "shasum": "" }, "require": { @@ -3951,9 +4013,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/joins8" + "source": "https://github.com/utopia-php/database/tree/4.6.2" }, - "time": "2026-01-21T11:13:21+00:00" + "time": "2026-01-22T07:14:12+00:00" }, { "name": "utopia-php/detector", @@ -4516,25 +4578,26 @@ }, { "name": "utopia-php/migration", - "version": "dev-joins", + "version": "1.4.6", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "805bdb87e3ea8c85c58fc16dc7b56a497da161cf" + "reference": "f358db6fb6a01d855bbed39e283387069e4f277d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/805bdb87e3ea8c85c58fc16dc7b56a497da161cf", - "reference": "805bdb87e3ea8c85c58fc16dc7b56a497da161cf", + "url": "https://api.github.com/repos/utopia-php/migration/zipball/f358db6fb6a01d855bbed39e283387069e4f277d", + "reference": "f358db6fb6a01d855bbed39e283387069e4f277d", "shasum": "" }, "require": { "appwrite/appwrite": "19.*", "ext-curl": "*", "ext-openssl": "*", + "halaxa/json-machine": "^1.2", "php": ">=8.1", "utopia-php/console": "0.0.*", - "utopia-php/database": "dev-joins8 as 4.5.2", + "utopia-php/database": "4.*", "utopia-php/dsn": "0.2.*", "utopia-php/storage": "0.18.*" }, @@ -4565,9 +4628,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/joins" + "source": "https://github.com/utopia-php/migration/tree/1.4.6" }, - "time": "2026-01-18T13:47:36+00:00" + "time": "2026-01-20T11:07:17+00:00" }, { "name": "utopia-php/mongo", @@ -5482,16 +5545,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "1.8.20", + "version": "1.8.21", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "b2bb03a83244df933c4d6333215e0d480d9a1b6a" + "reference": "1b47b2c794811c565f8b5e7eeaa19f749bcbeb6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/b2bb03a83244df933c4d6333215e0d480d9a1b6a", - "reference": "b2bb03a83244df933c4d6333215e0d480d9a1b6a", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/1b47b2c794811c565f8b5e7eeaa19f749bcbeb6b", + "reference": "1b47b2c794811c565f8b5e7eeaa19f749bcbeb6b", "shasum": "" }, "require": { @@ -5527,9 +5590,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/1.8.20" + "source": "https://github.com/appwrite/sdk-generator/tree/1.8.21" }, - "time": "2026-01-23T08:11:20+00:00" + "time": "2026-01-26T04:42:33+00:00" }, { "name": "doctrine/annotations", @@ -7976,16 +8039,16 @@ }, { "name": "symfony/console", - "version": "v8.0.3", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6145b304a5c1ea0bdbd0b04d297a5864f9a7d587" + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6145b304a5c1ea0bdbd0b04d297a5864f9a7d587", - "reference": "6145b304a5c1ea0bdbd0b04d297a5864f9a7d587", + "url": "https://api.github.com/repos/symfony/console/zipball/ace03c4cf9805080ff40cbeec69fca180c339a3b", + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b", "shasum": "" }, "require": { @@ -8042,7 +8105,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v8.0.3" + "source": "https://github.com/symfony/console/tree/v8.0.4" }, "funding": [ { @@ -8062,7 +8125,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:52:06+00:00" + "time": "2026-01-13T13:06:50+00:00" }, { "name": "symfony/filesystem", @@ -8136,16 +8199,16 @@ }, { "name": "symfony/finder", - "version": "v8.0.3", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12" + "reference": "42e48eb02e07d5f3771d194d67da117eb824c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/dd3a2953570a283a2ba4e17063bb98c734cf5b12", - "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12", + "url": "https://api.github.com/repos/symfony/finder/zipball/42e48eb02e07d5f3771d194d67da117eb824c8c1", + "reference": "42e48eb02e07d5f3771d194d67da117eb824c8c1", "shasum": "" }, "require": { @@ -8180,7 +8243,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v8.0.3" + "source": "https://github.com/symfony/finder/tree/v8.0.4" }, "funding": [ { @@ -8200,7 +8263,7 @@ "type": "tidelift" } ], - "time": "2025-12-23T14:52:06+00:00" + "time": "2026-01-12T12:37:40+00:00" }, { "name": "symfony/options-resolver", @@ -8605,16 +8668,16 @@ }, { "name": "symfony/process", - "version": "v8.0.3", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0cbbd88ec836f8757641c651bb995335846abb78" + "reference": "10df72602d88c0a3fa685b822976a052611dd607" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0cbbd88ec836f8757641c651bb995335846abb78", - "reference": "0cbbd88ec836f8757641c651bb995335846abb78", + "url": "https://api.github.com/repos/symfony/process/zipball/10df72602d88c0a3fa685b822976a052611dd607", + "reference": "10df72602d88c0a3fa685b822976a052611dd607", "shasum": "" }, "require": { @@ -8646,7 +8709,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v8.0.3" + "source": "https://github.com/symfony/process/tree/v8.0.4" }, "funding": [ { @@ -8666,20 +8729,20 @@ "type": "tidelift" } ], - "time": "2025-12-19T10:01:18+00:00" + "time": "2026-01-23T11:07:10+00:00" }, { "name": "symfony/string", - "version": "v8.0.1", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc" + "reference": "758b372d6882506821ed666032e43020c4f57194" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc", - "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc", + "url": "https://api.github.com/repos/symfony/string/zipball/758b372d6882506821ed666032e43020c4f57194", + "reference": "758b372d6882506821ed666032e43020c4f57194", "shasum": "" }, "require": { @@ -8736,7 +8799,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v8.0.1" + "source": "https://github.com/symfony/string/tree/v8.0.4" }, "funding": [ { @@ -8756,7 +8819,7 @@ "type": "tidelift" } ], - "time": "2025-12-01T09:13:36+00:00" + "time": "2026-01-12T12:37:40+00:00" }, { "name": "textalk/websocket", @@ -8986,25 +9049,9 @@ "time": "2024-03-07T20:33:40+00:00" } ], - "aliases": [ - { - "package": "utopia-php/database", - "version": "dev-joins8", - "alias": "4.5.2", - "alias_normalized": "4.5.2.0" - }, - { - "package": "utopia-php/migration", - "version": "dev-joins", - "alias": "1.4.4", - "alias_normalized": "1.4.4.0" - } - ], + "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "utopia-php/database": 20, - "utopia-php/migration": 20 - }, + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/docs/examples/1.8.x/console-cli/examples/health/get-queue-audits.md b/docs/examples/1.8.x/console-cli/examples/health/get-queue-audits.md new file mode 100644 index 0000000000..f228f092a5 --- /dev/null +++ b/docs/examples/1.8.x/console-cli/examples/health/get-queue-audits.md @@ -0,0 +1 @@ +appwrite health get-queue-audits diff --git a/docs/sdks/cli/CHANGELOG.md b/docs/sdks/cli/CHANGELOG.md index 1de6ffa88d..342761e070 100644 --- a/docs/sdks/cli/CHANGELOG.md +++ b/docs/sdks/cli/CHANGELOG.md @@ -1,5 +1,29 @@ # Change Log +## 13.1.0 + +- Mark `appwrite generate` command as stable +- Improve permissions param to be a typesafe callback +- Fix relationship handling in generated code +- Fix `appwrite client` properly hanlding `--key` parameter +- Fix `init site` not working on Windows + +## 13.1.0-rc.3 + +- Allow generation of server side CRUD operations on databases and tables +- Fix npm distribution failing due to missing template files in bundle + +## 13.1.0-rc.2 + +- Update generated `databases` services to automatically initialize a client instance +- Update generator to use handlebars templates + +## 13.1.0-rc.1 + +- Feat: `appwrite generate` command to create a fully typesafe SDK for your Appwrite project +- Chore: improve creation of columns during table creation by passing them directly instead of creating them one by one +- Improved config validation by adding extra rules in zod schema + ## 13.0.1 - Fix `project init` command leading to Cannot convert to BigInt error diff --git a/docs/sdks/markdown/CHANGELOG.md b/docs/sdks/markdown/CHANGELOG.md new file mode 100644 index 0000000000..bbfc68354e --- /dev/null +++ b/docs/sdks/markdown/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log + +## 0.1.0 + +* Initial release diff --git a/src/Appwrite/Platform/Tasks/SDKs.php b/src/Appwrite/Platform/Tasks/SDKs.php index 8a3eef2d34..013fae1193 100644 --- a/src/Appwrite/Platform/Tasks/SDKs.php +++ b/src/Appwrite/Platform/Tasks/SDKs.php @@ -12,6 +12,7 @@ use Appwrite\SDK\Language\Flutter; use Appwrite\SDK\Language\Go; use Appwrite\SDK\Language\GraphQL; use Appwrite\SDK\Language\Kotlin; +use Appwrite\SDK\Language\Markdown; use Appwrite\SDK\Language\Node; use Appwrite\SDK\Language\PHP; use Appwrite\SDK\Language\Python; @@ -31,6 +32,27 @@ use Utopia\Validator\WhiteList; class SDKs extends Action { + protected array $supportedSDKS = [ + 'web', + 'cli', + 'php', + 'nodejs', + 'deno', + 'python', + 'ruby', + 'flutter', + 'react-native', + 'dart', + 'go', + 'swift', + 'apple', + 'dotnet', + 'android', + 'graphql', + 'rest', + 'markdown', + ]; + public static function getName(): string { return 'sdks'; @@ -61,6 +83,9 @@ class SDKs extends Action if (!$sdks) { $selectedPlatform ??= Console::confirm('Choose Platform ("' . implode('", "', static::getPlatforms()) . '" or "*" for all):'); $selectedSDK ??= \strtolower(Console::confirm('Choose SDK ("*" for all):')); + if ($selectedSDK !== '*' && !\in_array($selectedSDK, $this->supportedSDKS)) { + throw new \Exception('Unknown SDK "' . $selectedSDK . '" given. Options are: ' . implode(', ', $this->supportedSDKS)); + } } else { $sdks = explode(',', $sdks); } @@ -252,6 +277,10 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND case 'rest': $config = new REST(); break; + case 'markdown': + $config = new Markdown(); + $config->setNPMPackage('@appwrite.io/docs'); + break; default: throw new \Exception('Language "' . $language['key'] . '" not supported'); }