From eea14a67fcffcdbbe6cf2abfe29e35b0ce1fdc9f Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Wed, 19 Nov 2025 15:44:41 +0530 Subject: [PATCH 1/4] Add type generation support for geometric types (point, linestring, polygon) This commit adds support for generating types for geometric attributes (POINT, LINESTRING, POLYGON) across all supported languages in the CLI type generation feature. Type mappings: - TypeScript/JavaScript: Array, Array>, Array>> - C#/Dart/Java/Kotlin: List/List>/List>> - PHP: array (for all geometric types) - Swift: [Double], [[Double]], [[[Double]]] Changes include: - Added POINT, LINESTRING, POLYGON to AttributeType enum - Implemented type mapping logic for all language generators --- templates/cli/lib/type-generation/attribute.js.twig | 3 +++ .../cli/lib/type-generation/languages/csharp.js.twig | 9 +++++++++ templates/cli/lib/type-generation/languages/dart.js.twig | 9 +++++++++ templates/cli/lib/type-generation/languages/java.js.twig | 9 +++++++++ .../cli/lib/type-generation/languages/javascript.js.twig | 9 +++++++++ .../cli/lib/type-generation/languages/kotlin.js.twig | 9 +++++++++ templates/cli/lib/type-generation/languages/php.js.twig | 5 +++++ .../cli/lib/type-generation/languages/swift.js.twig | 9 +++++++++ .../cli/lib/type-generation/languages/typescript.js.twig | 9 +++++++++ 9 files changed, 71 insertions(+) diff --git a/templates/cli/lib/type-generation/attribute.js.twig b/templates/cli/lib/type-generation/attribute.js.twig index 70bfc38698..e36d0558ce 100644 --- a/templates/cli/lib/type-generation/attribute.js.twig +++ b/templates/cli/lib/type-generation/attribute.js.twig @@ -9,6 +9,9 @@ const AttributeType = { URL: "url", ENUM: "enum", RELATIONSHIP: "relationship", + POINT: "point", + LINESTRING: "linestring", + POLYGON: "polygon", }; module.exports = { diff --git a/templates/cli/lib/type-generation/languages/csharp.js.twig b/templates/cli/lib/type-generation/languages/csharp.js.twig index 3914d15955..ff85bf675a 100644 --- a/templates/cli/lib/type-generation/languages/csharp.js.twig +++ b/templates/cli/lib/type-generation/languages/csharp.js.twig @@ -33,6 +33,15 @@ class CSharp extends LanguageMeta { type = `List<${type}>`; } break; + case AttributeType.POINT: + type = "List"; + break; + case AttributeType.LINESTRING: + type = "List>"; + break; + case AttributeType.POLYGON: + type = "List>>"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/dart.js.twig b/templates/cli/lib/type-generation/languages/dart.js.twig index d44efb9326..d48ca48684 100644 --- a/templates/cli/lib/type-generation/languages/dart.js.twig +++ b/templates/cli/lib/type-generation/languages/dart.js.twig @@ -70,6 +70,15 @@ class Dart extends LanguageMeta { type = `List<${type}>`; } break; + case AttributeType.POINT: + type = "List"; + break; + case AttributeType.LINESTRING: + type = "List>"; + break; + case AttributeType.POLYGON: + type = "List>>"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/java.js.twig b/templates/cli/lib/type-generation/languages/java.js.twig index dfcf5e20bd..e45f22e540 100644 --- a/templates/cli/lib/type-generation/languages/java.js.twig +++ b/templates/cli/lib/type-generation/languages/java.js.twig @@ -33,6 +33,15 @@ class Java extends LanguageMeta { type = "List<" + type + ">"; } break; + case AttributeType.POINT: + type = "List"; + break; + case AttributeType.LINESTRING: + type = "List>"; + break; + case AttributeType.POLYGON: + type = "List>>"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/javascript.js.twig b/templates/cli/lib/type-generation/languages/javascript.js.twig index 5c40f2925d..1d19cfb44c 100644 --- a/templates/cli/lib/type-generation/languages/javascript.js.twig +++ b/templates/cli/lib/type-generation/languages/javascript.js.twig @@ -38,6 +38,15 @@ class JavaScript extends LanguageMeta { type = `${type}[]`; } break; + case AttributeType.POINT: + type = "number[]"; + break; + case AttributeType.LINESTRING: + type = "number[][]"; + break; + case AttributeType.POLYGON: + type = "number[][][]"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/kotlin.js.twig b/templates/cli/lib/type-generation/languages/kotlin.js.twig index 09df341a07..8cecd74bac 100644 --- a/templates/cli/lib/type-generation/languages/kotlin.js.twig +++ b/templates/cli/lib/type-generation/languages/kotlin.js.twig @@ -33,6 +33,15 @@ class Kotlin extends LanguageMeta { type = `List<${type}>`; } break; + case AttributeType.POINT: + type = "List"; + break; + case AttributeType.LINESTRING: + type = "List>"; + break; + case AttributeType.POLYGON: + type = "List>>"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/php.js.twig b/templates/cli/lib/type-generation/languages/php.js.twig index 713ed2004b..d316796fa3 100644 --- a/templates/cli/lib/type-generation/languages/php.js.twig +++ b/templates/cli/lib/type-generation/languages/php.js.twig @@ -36,6 +36,11 @@ class PHP extends LanguageMeta { type = "array"; } break; + case AttributeType.POINT: + case AttributeType.LINESTRING: + case AttributeType.POLYGON: + type = "array"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/swift.js.twig b/templates/cli/lib/type-generation/languages/swift.js.twig index 87557bb32e..8cb25748c8 100644 --- a/templates/cli/lib/type-generation/languages/swift.js.twig +++ b/templates/cli/lib/type-generation/languages/swift.js.twig @@ -33,6 +33,15 @@ class Swift extends LanguageMeta { type = `[${type}]`; } break; + case AttributeType.POINT: + type = "[Double]"; + break; + case AttributeType.LINESTRING: + type = "[[Double]]"; + break; + case AttributeType.POLYGON: + type = "[[[Double]]]"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } diff --git a/templates/cli/lib/type-generation/languages/typescript.js.twig b/templates/cli/lib/type-generation/languages/typescript.js.twig index 61a6fcb0b9..d3fdd67b83 100644 --- a/templates/cli/lib/type-generation/languages/typescript.js.twig +++ b/templates/cli/lib/type-generation/languages/typescript.js.twig @@ -38,6 +38,15 @@ class TypeScript extends LanguageMeta { type = `${type}[]`; } break; + case AttributeType.POINT: + type = "Array"; + break; + case AttributeType.LINESTRING: + type = "Array>"; + break; + case AttributeType.POLYGON: + type = "Array>>"; + break; default: throw new Error(`Unknown attribute type: ${attribute.type}`); } From 734f44ae60e2383ca70b4f896dd9af6a907a6c81 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 20 Nov 2025 10:31:54 +0530 Subject: [PATCH 2/4] fix playwright version --- templates/react-native/package.json.twig | 2 +- templates/web/package.json.twig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/react-native/package.json.twig b/templates/react-native/package.json.twig index a4e276c1dd..73e3acb7c9 100644 --- a/templates/react-native/package.json.twig +++ b/templates/react-native/package.json.twig @@ -26,7 +26,7 @@ }, "devDependencies": { "@rollup/plugin-typescript": "8.3.2", - "playwright": "1.15.0", + "playwright": "1.56.1", "rollup": "2.75.4", "serve-handler": "6.1.0", "tslib": "2.4.0", diff --git a/templates/web/package.json.twig b/templates/web/package.json.twig index 7e8771b328..fefcbbf003 100644 --- a/templates/web/package.json.twig +++ b/templates/web/package.json.twig @@ -26,7 +26,7 @@ }, "devDependencies": { "@rollup/plugin-typescript": "8.3.2", - "playwright": "1.15.0", + "playwright": "1.56.1", "rollup": "2.79.2", "serve-handler": "6.1.0", "tslib": "2.4.0", From d7ac73713f70e4bc7f328a0a34ea1a42002b655a Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 20 Nov 2025 10:46:25 +0530 Subject: [PATCH 3/4] seperate out branch in example file --- example.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/example.php b/example.php index 852ddfa312..fe52a6a195 100644 --- a/example.php +++ b/example.php @@ -94,8 +94,9 @@ function configureSDK($sdk, $overrides = []) { // $platform = 'server'; } + $branch = '1.8.x'; $version = '1.8.x'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/{$version}/app/config/specs/swagger2-{$version}-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/{$branch}/app/config/specs/swagger2-{$version}-{$platform}.json"); if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); From ae5294d7e5cbefc1073ca5594a3eecfad24d27f3 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Thu, 20 Nov 2025 11:20:24 +0530 Subject: [PATCH 4/4] fix web chromium issue --- tests/WebChromiumTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/WebChromiumTest.php b/tests/WebChromiumTest.php index bb58b2c1d9..8e609e383e 100644 --- a/tests/WebChromiumTest.php +++ b/tests/WebChromiumTest.php @@ -15,10 +15,10 @@ class WebChromiumTest extends Base 'cp tests/languages/web/tests.js tests/sdks/web/tests.js', 'cp tests/languages/web/node.js tests/sdks/web/node.js', 'cp tests/languages/web/index.html tests/sdks/web/index.html', - 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/web mcr.microsoft.com/playwright:v1.15.0-focal sh -c "npm install && npm run build"', + 'docker run --rm -v $(pwd):/app -w /app/tests/sdks/web mcr.microsoft.com/playwright:v1.56.1-jammy sh -c "npm install && npm run build"', ]; protected string $command = - 'docker run --network="mockapi" --rm -v $(pwd):/app -e BROWSER=chromium -w /app/tests/sdks/web mcr.microsoft.com/playwright:v1.15.0-focal node tests.js'; + 'docker run --network="mockapi" --rm -v $(pwd):/app -e BROWSER=chromium -w /app/tests/sdks/web mcr.microsoft.com/playwright:v1.56.1-jammy node tests.js'; protected array $expectedOutput = [ ...Base::PING_RESPONSE,