From 001d38caf51795a09cdf0c0efce97c9b64e3d454 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Mon, 5 Jan 2026 12:53:35 +0530 Subject: [PATCH 1/3] feat: sdk for md --- app/config/sdks.php | 20 +++++++++++++++++++ composer.json | 2 +- composer.lock | 29 ++++++++++++++-------------- docs/sdks/markdown/CHANGELOG.md | 5 +++++ src/Appwrite/Platform/Tasks/SDKs.php | 28 +++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 docs/sdks/markdown/CHANGELOG.md diff --git a/app/config/sdks.php b/app/config/sdks.php index 9b5d17176f..4f626d9093 100644 --- a/app/config/sdks.php +++ b/app/config/sdks.php @@ -250,6 +250,26 @@ return [ ], ], ], + [ + 'key' => 'md', + '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.json b/composer.json index 844a10d7e8..8b04dd247f 100644 --- a/composer.json +++ b/composer.json @@ -89,7 +89,7 @@ }, "require-dev": { "ext-fileinfo": "*", - "appwrite/sdk-generator": "*", + "appwrite/sdk-generator": "docs-sdk-dev", "phpunit/phpunit": "9.*", "swoole/ide-helper": "5.1.2", "phpstan/phpstan": "1.8.*", diff --git a/composer.lock b/composer.lock index c678d1c01e..5fcb2387d4 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": "b873febd2b03c32ec61a57b690cc44a2", + "content-hash": "6b901a04bee0c8fca7a48f222c52aea8", "packages": [ { "name": "adhocore/jwt", @@ -5438,16 +5438,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "1.8.6", + "version": "dev-docs-sdk", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "b6cc29d3bd247e193f3c06b4168dc69d884645f0" + "reference": "621cfc47d3edfc0ce0e45fa27b0a683be9cc4cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/b6cc29d3bd247e193f3c06b4168dc69d884645f0", - "reference": "b6cc29d3bd247e193f3c06b4168dc69d884645f0", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/621cfc47d3edfc0ce0e45fa27b0a683be9cc4cc5", + "reference": "621cfc47d3edfc0ce0e45fa27b0a683be9cc4cc5", "shasum": "" }, "require": { @@ -5483,9 +5483,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.6" + "source": "https://github.com/appwrite/sdk-generator/tree/docs-sdk" }, - "time": "2025-12-31T10:22:17+00:00" + "time": "2026-01-05T06:12:51+00:00" }, { "name": "doctrine/annotations", @@ -8562,16 +8562,16 @@ }, { "name": "symfony/process", - "version": "v8.0.0", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149" + "reference": "0cbbd88ec836f8757641c651bb995335846abb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a0a750500c4ce900d69ba4e9faf16f82c10ee149", - "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149", + "url": "https://api.github.com/repos/symfony/process/zipball/0cbbd88ec836f8757641c651bb995335846abb78", + "reference": "0cbbd88ec836f8757641c651bb995335846abb78", "shasum": "" }, "require": { @@ -8603,7 +8603,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v8.0.0" + "source": "https://github.com/symfony/process/tree/v8.0.3" }, "funding": [ { @@ -8623,7 +8623,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T16:25:44+00:00" + "time": "2025-12-19T10:01:18+00:00" }, { "name": "symfony/string", @@ -8946,6 +8946,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { + "appwrite/sdk-generator": 20, "utopia-php/audit": 5 }, "prefer-stable": false, @@ -8971,5 +8972,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } 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 c3a67d7fbb..6b44515fe4 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', + 'md', + ]; + 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 (!\in_array($selectedSDK, $this->supportedSDKS)) { + throw new \Exception('Unknown SDK "' . $selectedSDK . '" given. Options are: ' . implode(', ', $this->supportedSDKS)); + } } else { $sdks = explode(',', $sdks); } @@ -252,6 +277,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND case 'rest': $config = new REST(); break; + case 'md': + $config = new Markdown(); + break; default: throw new \Exception('Language "' . $language['key'] . '" not supported'); } From a66551863aec9294061d098983f4a05b11046f0d Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Wed, 21 Jan 2026 13:46:46 +0530 Subject: [PATCH 2/3] update composer --- composer.lock | 107 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 86 insertions(+), 21 deletions(-) diff --git a/composer.lock b/composer.lock index 10c5862285..e4b00c728d 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": "33da844fdf5648d1d1a027dfb6ae42bc", + "content-hash": "d899525d82512d6f8a8b5358b2555200", "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", @@ -1589,16 +1651,16 @@ }, { "name": "open-telemetry/sem-conv", - "version": "1.37.0", + "version": "1.38.0", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/sem-conv.git", - "reference": "8da7ec497c881e39afa6657d72586e27efbd29a1" + "reference": "e613bc640a407def4991b8a936a9b27edd9a3240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/8da7ec497c881e39afa6657d72586e27efbd29a1", - "reference": "8da7ec497c881e39afa6657d72586e27efbd29a1", + "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/e613bc640a407def4991b8a936a9b27edd9a3240", + "reference": "e613bc640a407def4991b8a936a9b27edd9a3240", "shasum": "" }, "require": { @@ -1638,11 +1700,11 @@ ], "support": { "chat": "https://app.slack.com/client/T08PSQ7BQ/C01NFPCV44V", - "docs": "https://opentelemetry.io/docs/php", + "docs": "https://opentelemetry.io/docs/languages/php", "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2025-09-03T12:08:10+00:00" + "time": "2026-01-21T04:14:03+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -4516,22 +4578,23 @@ }, { "name": "utopia-php/migration", - "version": "1.4.4", + "version": "1.4.6", "source": { "type": "git", "url": "https://github.com/utopia-php/migration.git", - "reference": "3fe751902012d09d323420cd3523be1ed855e868" + "reference": "f358db6fb6a01d855bbed39e283387069e4f277d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/migration/zipball/3fe751902012d09d323420cd3523be1ed855e868", - "reference": "3fe751902012d09d323420cd3523be1ed855e868", + "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": "4.*", @@ -4565,9 +4628,9 @@ ], "support": { "issues": "https://github.com/utopia-php/migration/issues", - "source": "https://github.com/utopia-php/migration/tree/1.4.4" + "source": "https://github.com/utopia-php/migration/tree/1.4.6" }, - "time": "2026-01-16T10:00:07+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.17", + "version": "dev-docs-sdk", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "1bc5a39bf87d3c2064f2f8d45fa712340338bc41" + "reference": "27e1240728266c2a3f88651395b126f0b199e1c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/1bc5a39bf87d3c2064f2f8d45fa712340338bc41", - "reference": "1bc5a39bf87d3c2064f2f8d45fa712340338bc41", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/27e1240728266c2a3f88651395b126f0b199e1c0", + "reference": "27e1240728266c2a3f88651395b126f0b199e1c0", "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.17" + "source": "https://github.com/appwrite/sdk-generator/tree/docs-sdk" }, - "time": "2026-01-19T12:13:41+00:00" + "time": "2026-01-21T08:15:45+00:00" }, { "name": "doctrine/annotations", @@ -8988,7 +9051,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "appwrite/sdk-generator": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -9012,5 +9077,5 @@ "platform-overrides": { "php": "8.3" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } From bfd34b3b15c7ce45880a5f062829b55a0c829ec5 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Wed, 21 Jan 2026 14:01:16 +0530 Subject: [PATCH 3/3] fix validation --- app/config/sdks.php | 2 +- composer.lock | 8 ++++---- src/Appwrite/Platform/Tasks/SDKs.php | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/config/sdks.php b/app/config/sdks.php index 52df61c0f0..5fa935b946 100644 --- a/app/config/sdks.php +++ b/app/config/sdks.php @@ -251,7 +251,7 @@ return [ ], ], [ - 'key' => 'md', + 'key' => 'markdown', 'name' => 'Markdown', 'version' => '0.1.0', 'url' => 'https://github.com/appwrite/sdk-for-md.git', diff --git a/composer.lock b/composer.lock index e4b00c728d..f8dbd51e08 100644 --- a/composer.lock +++ b/composer.lock @@ -5549,12 +5549,12 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "27e1240728266c2a3f88651395b126f0b199e1c0" + "reference": "e6c700bac81d1f250a97edeeb2007f69e17f29ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/27e1240728266c2a3f88651395b126f0b199e1c0", - "reference": "27e1240728266c2a3f88651395b126f0b199e1c0", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/e6c700bac81d1f250a97edeeb2007f69e17f29ba", + "reference": "e6c700bac81d1f250a97edeeb2007f69e17f29ba", "shasum": "" }, "require": { @@ -5592,7 +5592,7 @@ "issues": "https://github.com/appwrite/sdk-generator/issues", "source": "https://github.com/appwrite/sdk-generator/tree/docs-sdk" }, - "time": "2026-01-21T08:15:45+00:00" + "time": "2026-01-21T08:21:48+00:00" }, { "name": "doctrine/annotations", diff --git a/src/Appwrite/Platform/Tasks/SDKs.php b/src/Appwrite/Platform/Tasks/SDKs.php index d1bdb9f7ce..013fae1193 100644 --- a/src/Appwrite/Platform/Tasks/SDKs.php +++ b/src/Appwrite/Platform/Tasks/SDKs.php @@ -50,7 +50,7 @@ class SDKs extends Action 'android', 'graphql', 'rest', - 'md', + 'markdown', ]; public static function getName(): string @@ -83,7 +83,7 @@ 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 (!\in_array($selectedSDK, $this->supportedSDKS)) { + if ($selectedSDK !== '*' && !\in_array($selectedSDK, $this->supportedSDKS)) { throw new \Exception('Unknown SDK "' . $selectedSDK . '" given. Options are: ' . implode(', ', $this->supportedSDKS)); } } else { @@ -277,8 +277,9 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND case 'rest': $config = new REST(); break; - case 'md': + case 'markdown': $config = new Markdown(); + $config->setNPMPackage('@appwrite.io/docs'); break; default: throw new \Exception('Language "' . $language['key'] . '" not supported');