1
0
Fork 0
mirror of synced 2024-06-29 11:40:45 +12:00

Merge branch 'master' into doc-unique-id

This commit is contained in:
Vincent (Wen Yu) Ge 2022-11-01 17:53:48 +00:00
commit a8a23fb8eb
13 changed files with 173 additions and 445 deletions

View file

@ -21,6 +21,8 @@
[English](README.md) | 简体中文 [English](README.md) | 简体中文
[**我们发布了 Appwrite 1.0 版本!**](https://appwrite.io/1.0)
Appwrite是一个基于Docker的端到端开发者平台其容器化的微服务库可应用于网页端移动端以及后端。Appwrite 通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。 Appwrite是一个基于Docker的端到端开发者平台其容器化的微服务库可应用于网页端移动端以及后端。Appwrite 通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。
Appwrite 可以提供给开发者用户验证,外部授权,用户数据读写检索,文件储存,图像处理,云函数计算,[等多种服务](https://appwrite.io/docs). Appwrite 可以提供给开发者用户验证,外部授权,用户数据读写检索,文件储存,图像处理,云函数计算,[等多种服务](https://appwrite.io/docs).

View file

@ -2209,14 +2209,14 @@ $collections = [
'$id' => ID::custom('_key_search'), '$id' => ID::custom('_key_search'),
'type' => Database::INDEX_FULLTEXT, 'type' => Database::INDEX_FULLTEXT,
'attributes' => ['search'], 'attributes' => ['search'],
'lengths' => [2048], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_name'), '$id' => ID::custom('_key_name'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['name'], 'attributes' => ['name'],
'lengths' => [2048], 'lengths' => [768],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2230,21 +2230,21 @@ $collections = [
'$id' => ID::custom('_key_runtime'), '$id' => ID::custom('_key_runtime'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['runtime'], 'attributes' => ['runtime'],
'lengths' => [2048], 'lengths' => [768],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_deployment'), '$id' => ID::custom('_key_deployment'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['deployment'], 'attributes' => ['deployment'],
'lengths' => [Database::LENGTH_KEY], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_schedule'), '$id' => ID::custom('_key_schedule'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['schedule'], 'attributes' => ['schedule'],
'lengths' => [128], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2403,14 +2403,14 @@ $collections = [
'$id' => ID::custom('_key_resource'), '$id' => ID::custom('_key_resource'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['resourceId'], 'attributes' => ['resourceId'],
'lengths' => [Database::LENGTH_KEY], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_resource_type'), '$id' => ID::custom('_key_resource_type'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['resourceType'], 'attributes' => ['resourceType'],
'lengths' => [Database::LENGTH_KEY], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2424,7 +2424,7 @@ $collections = [
'$id' => ID::custom('_key_entrypoint'), '$id' => ID::custom('_key_entrypoint'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['entrypoint'], 'attributes' => ['entrypoint'],
'lengths' => [2048], 'lengths' => [768],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2438,7 +2438,7 @@ $collections = [
'$id' => ID::custom('_key_buildId'), '$id' => ID::custom('_key_buildId'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['buildId'], 'attributes' => ['buildId'],
'lengths' => [Database::LENGTH_KEY], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2939,14 +2939,14 @@ $collections = [
'$id' => ID::custom('_fulltext_name'), '$id' => ID::custom('_fulltext_name'),
'type' => Database::INDEX_FULLTEXT, 'type' => Database::INDEX_FULLTEXT,
'attributes' => ['name'], 'attributes' => ['name'],
'lengths' => [1024], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_search'), '$id' => ID::custom('_key_search'),
'type' => Database::INDEX_FULLTEXT, 'type' => Database::INDEX_FULLTEXT,
'attributes' => ['search'], 'attributes' => ['search'],
'lengths' => [2048], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -2960,7 +2960,7 @@ $collections = [
'$id' => ID::custom('_key_name'), '$id' => ID::custom('_key_name'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['name'], 'attributes' => ['name'],
'lengths' => [128], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -3383,7 +3383,7 @@ $collections = [
'$id' => ID::custom('_key_search'), '$id' => ID::custom('_key_search'),
'type' => Database::INDEX_FULLTEXT, 'type' => Database::INDEX_FULLTEXT,
'attributes' => ['search'], 'attributes' => ['search'],
'lengths' => [2048], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
@ -3397,21 +3397,21 @@ $collections = [
'$id' => ID::custom('_key_name'), '$id' => ID::custom('_key_name'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['name'], 'attributes' => ['name'],
'lengths' => [2048], 'lengths' => [768],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_signature'), '$id' => ID::custom('_key_signature'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['signature'], 'attributes' => ['signature'],
'lengths' => [2048], 'lengths' => [768],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [
'$id' => ID::custom('_key_mimeType'), '$id' => ID::custom('_key_mimeType'),
'type' => Database::INDEX_KEY, 'type' => Database::INDEX_KEY,
'attributes' => ['mimeType'], 'attributes' => ['mimeType'],
'lengths' => [127], 'lengths' => [],
'orders' => [Database::ORDER_ASC], 'orders' => [Database::ORDER_ASC],
], ],
[ [

View file

@ -85,7 +85,7 @@ return [
'url' => 'https://github.com/appwrite/sdk-for-apple', 'url' => 'https://github.com/appwrite/sdk-for-apple',
'package' => 'https://github.com/appwrite/sdk-for-apple', 'package' => 'https://github.com/appwrite/sdk-for-apple',
'enabled' => true, 'enabled' => true,
'beta' => true, 'beta' => false,
'dev' => false, 'dev' => false,
'hidden' => false, 'hidden' => false,
'family' => APP_PLATFORM_CLIENT, 'family' => APP_PLATFORM_CLIENT,
@ -120,7 +120,7 @@ return [
'url' => 'https://github.com/appwrite/sdk-for-android', 'url' => 'https://github.com/appwrite/sdk-for-android',
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-android', 'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-android',
'enabled' => true, 'enabled' => true,
'beta' => true, 'beta' => false,
'dev' => false, 'dev' => false,
'hidden' => false, 'hidden' => false,
'family' => APP_PLATFORM_CLIENT, 'family' => APP_PLATFORM_CLIENT,
@ -374,7 +374,7 @@ return [
'url' => 'https://github.com/appwrite/sdk-for-kotlin', 'url' => 'https://github.com/appwrite/sdk-for-kotlin',
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin', 'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin',
'enabled' => true, 'enabled' => true,
'beta' => true, 'beta' => false,
'dev' => false, 'dev' => false,
'hidden' => false, 'hidden' => false,
'family' => APP_PLATFORM_SERVER, 'family' => APP_PLATFORM_SERVER,
@ -396,7 +396,7 @@ return [
'url' => 'https://github.com/appwrite/sdk-for-swift', 'url' => 'https://github.com/appwrite/sdk-for-swift',
'package' => 'https://github.com/appwrite/sdk-for-swift', 'package' => 'https://github.com/appwrite/sdk-for-swift',
'enabled' => true, 'enabled' => true,
'beta' => true, 'beta' => false,
'dev' => false, 'dev' => false,
'hidden' => false, 'hidden' => false,
'family' => APP_PLATFORM_SERVER, 'family' => APP_PLATFORM_SERVER,

View file

@ -125,7 +125,7 @@ App::post('/v1/projects')
$collections = Config::getParam('collections', []); $collections = Config::getParam('collections', []);
$dbForProject->setNamespace("_{$project->getInternalId()}"); $dbForProject->setNamespace("_{$project->getInternalId()}");
$dbForProject->create(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); $dbForProject->create();
$audit = new Audit($dbForProject); $audit = new Audit($dbForProject);
$audit->setup(); $audit->setup();

View file

@ -403,11 +403,6 @@ App::error()
$version = App::getEnv('_APP_VERSION', 'UNKNOWN'); $version = App::getEnv('_APP_VERSION', 'UNKNOWN');
$route = $utopia->match($request); $route = $utopia->match($request);
/** Delegate PDO exceptions to the global handler so the database connection can be returned to the pool */
if ($error instanceof PDOException) {
throw $error;
}
if ($logger) { if ($logger) {
if ($error->getCode() >= 500 || $error->getCode() === 0) { if ($error->getCode() >= 500 || $error->getCode() === 0) {
try { try {

View file

@ -94,7 +94,7 @@ $http->on('start', function (Server $http) use ($payloadSize, $register) {
try { try {
$redis->flushAll(); $redis->flushAll();
Console::success('[Setup] - Creating database: appwrite...'); Console::success('[Setup] - Creating database: appwrite...');
$dbForConsole->create(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); $dbForConsole->create();
} catch (\Exception $e) { } catch (\Exception $e) {
Console::success('[Setup] - Skip: metadata table already exists'); Console::success('[Setup] - Skip: metadata table already exists');
} }
@ -317,13 +317,6 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo
Console::error('[Error] File: ' . $th->getFile()); Console::error('[Error] File: ' . $th->getFile());
Console::error('[Error] Line: ' . $th->getLine()); Console::error('[Error] Line: ' . $th->getLine());
/**
* Reset Database connection if PDOException was thrown.
*/
if ($th instanceof PDOException) {
$db = null;
}
$swooleResponse->setStatusCode(500); $swooleResponse->setStatusCode(500);
$output = ((App::isDevelopment())) ? [ $output = ((App::isDevelopment())) ? [

View file

@ -35,6 +35,7 @@ foreach (
realpath(__DIR__ . '/../vendor/symfony'), realpath(__DIR__ . '/../vendor/symfony'),
realpath(__DIR__ . '/../vendor/mongodb'), realpath(__DIR__ . '/../vendor/mongodb'),
realpath(__DIR__ . '/../vendor/utopia-php/websocket'), // TODO: remove workerman autoload realpath(__DIR__ . '/../vendor/utopia-php/websocket'), // TODO: remove workerman autoload
realpath(__DIR__ . '/../vendor/utopia-php/cache'), // TODO: remove memcache autoload
] as $key => $value ] as $key => $value
) { ) {
if ($value !== false) { if ($value !== false) {

View file

@ -45,13 +45,13 @@
"appwrite/php-runtimes": "0.11.*", "appwrite/php-runtimes": "0.11.*",
"utopia-php/framework": "0.21.*", "utopia-php/framework": "0.21.*",
"utopia-php/logger": "0.3.*", "utopia-php/logger": "0.3.*",
"utopia-php/abuse": "0.14.*", "utopia-php/abuse": "0.16.*",
"utopia-php/analytics": "0.2.*", "utopia-php/analytics": "0.2.*",
"utopia-php/audit": "0.15.*", "utopia-php/audit": "0.17.*",
"utopia-php/cache": "0.6.*", "utopia-php/cache": "0.8.*",
"utopia-php/cli": "0.13.*", "utopia-php/cli": "0.13.*",
"utopia-php/config": "0.2.*", "utopia-php/config": "0.2.*",
"utopia-php/database": "0.26.*", "utopia-php/database": "0.28.*",
"utopia-php/locale": "0.4.*", "utopia-php/locale": "0.4.*",
"utopia-php/registry": "0.5.*", "utopia-php/registry": "0.5.*",
"utopia-php/preloader": "0.2.*", "utopia-php/preloader": "0.2.*",

396
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "08fdd139ad1285b02c4b4e555679e7de", "content-hash": "51f81d435f4b5b7a9a6ea8f81b470353",
"packages": [ "packages": [
{ {
"name": "adhocore/jwt", "name": "adhocore/jwt",
@ -345,79 +345,6 @@
}, },
"time": "2022-06-20T22:56:59+00:00" "time": "2022-06-20T22:56:59+00:00"
}, },
{
"name": "composer/package-versions-deprecated",
"version": "1.11.99.5",
"source": {
"type": "git",
"url": "https://github.com/composer/package-versions-deprecated.git",
"reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
"reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
"shasum": ""
},
"require": {
"composer-plugin-api": "^1.1.0 || ^2.0",
"php": "^7 || ^8"
},
"replace": {
"ocramius/package-versions": "1.11.99"
},
"require-dev": {
"composer/composer": "^1.9.3 || ^2.0@dev",
"ext-zip": "^1.13",
"phpunit/phpunit": "^6.5 || ^7"
},
"type": "composer-plugin",
"extra": {
"class": "PackageVersions\\Installer",
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"PackageVersions\\": "src/PackageVersions"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
},
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be"
}
],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"support": {
"issues": "https://github.com/composer/package-versions-deprecated/issues",
"source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2022-01-17T14:14:24+00:00"
},
{ {
"name": "dragonmantank/cron-expression", "name": "dragonmantank/cron-expression",
"version": "v3.3.1", "version": "v3.3.1",
@ -693,16 +620,16 @@
}, },
{ {
"name": "guzzlehttp/psr7", "name": "guzzlehttp/psr7",
"version": "2.4.1", "version": "2.4.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/psr7.git", "url": "https://github.com/guzzle/psr7.git",
"reference": "69568e4293f4fa993f3b0e51c9723e1e17c41379" "reference": "67c26b443f348a51926030c83481b85718457d3d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/69568e4293f4fa993f3b0e51c9723e1e17c41379", "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
"reference": "69568e4293f4fa993f3b0e51c9723e1e17c41379", "reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -792,7 +719,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/guzzle/psr7/issues", "issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.4.1" "source": "https://github.com/guzzle/psr7/tree/2.4.3"
}, },
"funding": [ "funding": [
{ {
@ -808,7 +735,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2022-08-28T14:45:39+00:00" "time": "2022-10-26T14:07:24+00:00"
}, },
{ {
"name": "influxdb/influxdb-php", "name": "influxdb/influxdb-php",
@ -876,61 +803,6 @@
}, },
"time": "2020-12-26T17:45:17+00:00" "time": "2020-12-26T17:45:17+00:00"
}, },
{
"name": "jean85/pretty-package-versions",
"version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/Jean85/pretty-package-versions.git",
"reference": "1e0104b46f045868f11942aea058cd7186d6c303"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303",
"reference": "1e0104b46f045868f11942aea058cd7186d6c303",
"shasum": ""
},
"require": {
"composer/package-versions-deprecated": "^1.8.0",
"php": "^7.0|^8.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0|^8.5|^9.2"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Jean85\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Alessandro Lai",
"email": "alessandro.lai85@gmail.com"
}
],
"description": "A wrapper for ocramius/package-versions to get pretty versions strings",
"keywords": [
"composer",
"package",
"release",
"versions"
],
"support": {
"issues": "https://github.com/Jean85/pretty-package-versions/issues",
"source": "https://github.com/Jean85/pretty-package-versions/tree/1.6.0"
},
"time": "2021-02-04T16:20:16+00:00"
},
{ {
"name": "matomo/device-detector", "name": "matomo/device-detector",
"version": "6.0.0", "version": "6.0.0",
@ -1000,74 +872,6 @@
}, },
"time": "2022-04-11T09:58:17+00:00" "time": "2022-04-11T09:58:17+00:00"
}, },
{
"name": "mongodb/mongodb",
"version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/mongodb/mongo-php-library.git",
"reference": "953dbc19443aa9314c44b7217a16873347e6840d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/953dbc19443aa9314c44b7217a16873347e6840d",
"reference": "953dbc19443aa9314c44b7217a16873347e6840d",
"shasum": ""
},
"require": {
"ext-hash": "*",
"ext-json": "*",
"ext-mongodb": "^1.8.1",
"jean85/pretty-package-versions": "^1.2",
"php": "^7.0 || ^8.0",
"symfony/polyfill-php80": "^1.19"
},
"require-dev": {
"squizlabs/php_codesniffer": "^3.5, <3.5.5",
"symfony/phpunit-bridge": "5.x-dev"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev"
}
},
"autoload": {
"files": [
"src/functions.php"
],
"psr-4": {
"MongoDB\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Andreas Braun",
"email": "andreas.braun@mongodb.com"
},
{
"name": "Jeremy Mikola",
"email": "jmikola@gmail.com"
}
],
"description": "MongoDB driver library",
"homepage": "https://jira.mongodb.org/browse/PHPLIB",
"keywords": [
"database",
"driver",
"mongodb",
"persistence"
],
"support": {
"issues": "https://github.com/mongodb/mongo-php-library/issues",
"source": "https://github.com/mongodb/mongo-php-library/tree/1.8.0"
},
"time": "2020-11-25T12:26:02+00:00"
},
{ {
"name": "mustangostang/spyc", "name": "mustangostang/spyc",
"version": "0.6.3", "version": "0.6.3",
@ -1656,108 +1460,25 @@
], ],
"time": "2022-02-25T11:15:52+00:00" "time": "2022-02-25T11:15:52+00:00"
}, },
{
"name": "symfony/polyfill-php80",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Php80\\": ""
},
"classmap": [
"Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ion Bazan",
"email": "ion.bazan@gmail.com"
},
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2022-05-10T07:21:04+00:00"
},
{ {
"name": "utopia-php/abuse", "name": "utopia-php/abuse",
"version": "0.14.0", "version": "0.16.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/abuse.git", "url": "https://github.com/utopia-php/abuse.git",
"reference": "1a5da248e74c1bfc39bc440fa949de6935acceeb" "reference": "6370d9150425460416583feba0990504ac789e98"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/abuse/zipball/1a5da248e74c1bfc39bc440fa949de6935acceeb", "url": "https://api.github.com/repos/utopia-php/abuse/zipball/6370d9150425460416583feba0990504ac789e98",
"reference": "1a5da248e74c1bfc39bc440fa949de6935acceeb", "reference": "6370d9150425460416583feba0990504ac789e98",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-curl": "*", "ext-curl": "*",
"ext-pdo": "*", "ext-pdo": "*",
"php": ">=8.0", "php": ">=8.0",
"utopia-php/database": "0.26.*" "utopia-php/database": "0.28.*"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.4", "phpunit/phpunit": "^9.4",
@ -1789,9 +1510,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/abuse/issues", "issues": "https://github.com/utopia-php/abuse/issues",
"source": "https://github.com/utopia-php/abuse/tree/0.14.0" "source": "https://github.com/utopia-php/abuse/tree/0.16.0"
}, },
"time": "2022-10-14T11:26:39+00:00" "time": "2022-10-31T14:46:41+00:00"
}, },
{ {
"name": "utopia-php/analytics", "name": "utopia-php/analytics",
@ -1850,22 +1571,22 @@
}, },
{ {
"name": "utopia-php/audit", "name": "utopia-php/audit",
"version": "0.15.0", "version": "0.17.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/audit.git", "url": "https://github.com/utopia-php/audit.git",
"reference": "937ffd13e7a5ac9ad220b329247569ef2a4881d9" "reference": "455471bd4de8d74026809e843f8c9740eb32922c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/audit/zipball/937ffd13e7a5ac9ad220b329247569ef2a4881d9", "url": "https://api.github.com/repos/utopia-php/audit/zipball/455471bd4de8d74026809e843f8c9740eb32922c",
"reference": "937ffd13e7a5ac9ad220b329247569ef2a4881d9", "reference": "455471bd4de8d74026809e843f8c9740eb32922c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-pdo": "*", "ext-pdo": "*",
"php": ">=8.0", "php": ">=8.0",
"utopia-php/database": "0.26.*" "utopia-php/database": "0.28.*"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
@ -1891,30 +1612,32 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/audit/issues", "issues": "https://github.com/utopia-php/audit/issues",
"source": "https://github.com/utopia-php/audit/tree/0.15.0" "source": "https://github.com/utopia-php/audit/tree/0.17.0"
}, },
"time": "2022-10-14T11:39:18+00:00" "time": "2022-10-31T14:44:52+00:00"
}, },
{ {
"name": "utopia-php/cache", "name": "utopia-php/cache",
"version": "0.6.1", "version": "0.8.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/cache.git", "url": "https://github.com/utopia-php/cache.git",
"reference": "9889235a6d3da6cbb1f435201529da4d27c30e79" "reference": "212e66100a1f32e674fca5d9bc317cc998303089"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/cache/zipball/9889235a6d3da6cbb1f435201529da4d27c30e79", "url": "https://api.github.com/repos/utopia-php/cache/zipball/212e66100a1f32e674fca5d9bc317cc998303089",
"reference": "9889235a6d3da6cbb1f435201529da4d27c30e79", "reference": "212e66100a1f32e674fca5d9bc317cc998303089",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-json": "*", "ext-json": "*",
"ext-memcached": "*",
"ext-redis": "*", "ext-redis": "*",
"php": ">=8.0" "php": ">=8.0"
}, },
"require-dev": { "require-dev": {
"laravel/pint": "1.2.*",
"phpunit/phpunit": "^9.3", "phpunit/phpunit": "^9.3",
"vimeo/psalm": "4.13.1" "vimeo/psalm": "4.13.1"
}, },
@ -1928,12 +1651,6 @@
"license": [ "license": [
"MIT" "MIT"
], ],
"authors": [
{
"name": "Eldad Fux",
"email": "eldad@appwrite.io"
}
],
"description": "A simple cache library to manage application cache storing, loading and purging", "description": "A simple cache library to manage application cache storing, loading and purging",
"keywords": [ "keywords": [
"cache", "cache",
@ -1944,9 +1661,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/cache/issues", "issues": "https://github.com/utopia-php/cache/issues",
"source": "https://github.com/utopia-php/cache/tree/0.6.1" "source": "https://github.com/utopia-php/cache/tree/0.8.0"
}, },
"time": "2022-08-10T08:12:46+00:00" "time": "2022-10-16T16:48:09+00:00"
}, },
{ {
"name": "utopia-php/cli", "name": "utopia-php/cli",
@ -2054,29 +1771,29 @@
}, },
{ {
"name": "utopia-php/database", "name": "utopia-php/database",
"version": "0.26.0", "version": "0.28.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/database.git", "url": "https://github.com/utopia-php/database.git",
"reference": "d172af2541137c83a86d066f82f48914b5a3a610" "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/database/zipball/d172af2541137c83a86d066f82f48914b5a3a610", "url": "https://api.github.com/repos/utopia-php/database/zipball/ef6506af1c09c22f5dc1e7859159d323f7fafa94",
"reference": "d172af2541137c83a86d066f82f48914b5a3a610", "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-mongodb": "*",
"ext-pdo": "*",
"ext-redis": "*",
"mongodb/mongodb": "1.8.0",
"php": ">=8.0", "php": ">=8.0",
"utopia-php/cache": "0.6.*", "utopia-php/cache": "0.8.*",
"utopia-php/framework": "0.*.*" "utopia-php/framework": "0.*.*"
}, },
"require-dev": { "require-dev": {
"ext-mongodb": "*",
"ext-pdo": "*",
"ext-redis": "*",
"fakerphp/faker": "^1.14", "fakerphp/faker": "^1.14",
"mongodb/mongodb": "1.8.0",
"phpunit/phpunit": "^9.4", "phpunit/phpunit": "^9.4",
"swoole/ide-helper": "4.8.0", "swoole/ide-helper": "4.8.0",
"utopia-php/cli": "^0.11.0", "utopia-php/cli": "^0.11.0",
@ -2092,16 +1809,6 @@
"license": [ "license": [
"MIT" "MIT"
], ],
"authors": [
{
"name": "Eldad Fux",
"email": "eldad@appwrite.io"
},
{
"name": "Brandon Leckemby",
"email": "brandon@appwrite.io"
}
],
"description": "A simple library to manage application persistency using multiple database adapters", "description": "A simple library to manage application persistency using multiple database adapters",
"keywords": [ "keywords": [
"database", "database",
@ -2112,9 +1819,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/database/issues", "issues": "https://github.com/utopia-php/database/issues",
"source": "https://github.com/utopia-php/database/tree/0.26.0" "source": "https://github.com/utopia-php/database/tree/0.28.0"
}, },
"time": "2022-10-03T17:12:01+00:00" "time": "2022-10-31T09:58:46+00:00"
}, },
{ {
"name": "utopia-php/domains", "name": "utopia-php/domains",
@ -3535,16 +3242,16 @@
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "9.2.17", "version": "9.2.18",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8" "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a",
"reference": "aa94dc41e8661fe90c7316849907cba3007b10d8", "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3600,7 +3307,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18"
}, },
"funding": [ "funding": [
{ {
@ -3608,7 +3315,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2022-08-30T12:24:04+00:00" "time": "2022-10-27T13:35:33+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -5357,7 +5064,14 @@
"time": "2022-09-28T08:42:51+00:00" "time": "2022-09-28T08:42:51+00:00"
} }
], ],
"aliases": [], "aliases": [
{
"package": "utopia-php/database",
"version": "0.28.0.0",
"alias": "0.26.99",
"alias_normalized": "0.26.99.0"
}
],
"minimum-stability": "stable", "minimum-stability": "stable",
"stability-flags": [], "stability-flags": [],
"prefer-stable": false, "prefer-stable": false,
@ -5383,5 +5097,5 @@
"platform-overrides": { "platform-overrides": {
"php": "8.0" "php": "8.0"
}, },
"plugin-api-version": "2.3.0" "plugin-api-version": "2.2.0"
} }

View file

@ -10,30 +10,6 @@ x-logging: &x-logging
max-file: '5' max-file: '5'
max-size: '10m' max-size: '10m'
x-env-storage: &x-env-storage |-
_APP_STORAGE_DEVICE
_APP_STORAGE_S3_ACCESS_KEY
_APP_STORAGE_S3_SECRET
_APP_STORAGE_S3_REGION
_APP_STORAGE_S3_BUCKET
_APP_STORAGE_DO_SPACES_ACCESS_KEY
_APP_STORAGE_DO_SPACES_SECRET
_APP_STORAGE_DO_SPACES_REGION
_APP_STORAGE_DO_SPACES_BUCKET
_APP_STORAGE_BACKBLAZE_ACCESS_KEY
_APP_STORAGE_BACKBLAZE_SECRET
_APP_STORAGE_BACKBLAZE_REGION
_APP_STORAGE_BACKBLAZE_BUCKET
_APP_STORAGE_DO_SPACES_BUCKET
_APP_STORAGE_LINODE_ACCESS_KEY
_APP_STORAGE_LINODE_SECRET
_APP_STORAGE_LINODE_REGION
_APP_STORAGE_LINODE_BUCKET
_APP_STORAGE_WASABI_ACCESS_KEY
_APP_STORAGE_WASABI_SECRET
_APP_STORAGE_WASABI_REGION
_APP_STORAGE_WASABI_BUCKET
version: '3' version: '3'
services: services:
@ -155,7 +131,27 @@ services:
- _APP_STORAGE_ANTIVIRUS - _APP_STORAGE_ANTIVIRUS
- _APP_STORAGE_ANTIVIRUS_HOST - _APP_STORAGE_ANTIVIRUS_HOST
- _APP_STORAGE_ANTIVIRUS_PORT - _APP_STORAGE_ANTIVIRUS_PORT
- *x-env-storage - _APP_STORAGE_DEVICE
- _APP_STORAGE_S3_ACCESS_KEY
- _APP_STORAGE_S3_SECRET
- _APP_STORAGE_S3_REGION
- _APP_STORAGE_S3_BUCKET
- _APP_STORAGE_DO_SPACES_ACCESS_KEY
- _APP_STORAGE_DO_SPACES_SECRET
- _APP_STORAGE_DO_SPACES_REGION
- _APP_STORAGE_DO_SPACES_BUCKET
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- _APP_STORAGE_BACKBLAZE_SECRET
- _APP_STORAGE_BACKBLAZE_REGION
- _APP_STORAGE_BACKBLAZE_BUCKET
- _APP_STORAGE_LINODE_ACCESS_KEY
- _APP_STORAGE_LINODE_SECRET
- _APP_STORAGE_LINODE_REGION
- _APP_STORAGE_LINODE_BUCKET
- _APP_STORAGE_WASABI_ACCESS_KEY
- _APP_STORAGE_WASABI_SECRET
- _APP_STORAGE_WASABI_REGION
- _APP_STORAGE_WASABI_BUCKET
- _APP_FUNCTIONS_SIZE_LIMIT - _APP_FUNCTIONS_SIZE_LIMIT
- _APP_FUNCTIONS_TIMEOUT - _APP_FUNCTIONS_TIMEOUT
- _APP_FUNCTIONS_BUILD_TIMEOUT - _APP_FUNCTIONS_BUILD_TIMEOUT
@ -308,7 +304,27 @@ services:
- _APP_DB_SCHEMA - _APP_DB_SCHEMA
- _APP_DB_USER - _APP_DB_USER
- _APP_DB_PASS - _APP_DB_PASS
- *x-env-storage - _APP_STORAGE_DEVICE
- _APP_STORAGE_S3_ACCESS_KEY
- _APP_STORAGE_S3_SECRET
- _APP_STORAGE_S3_REGION
- _APP_STORAGE_S3_BUCKET
- _APP_STORAGE_DO_SPACES_ACCESS_KEY
- _APP_STORAGE_DO_SPACES_SECRET
- _APP_STORAGE_DO_SPACES_REGION
- _APP_STORAGE_DO_SPACES_BUCKET
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- _APP_STORAGE_BACKBLAZE_SECRET
- _APP_STORAGE_BACKBLAZE_REGION
- _APP_STORAGE_BACKBLAZE_BUCKET
- _APP_STORAGE_LINODE_ACCESS_KEY
- _APP_STORAGE_LINODE_SECRET
- _APP_STORAGE_LINODE_REGION
- _APP_STORAGE_LINODE_BUCKET
- _APP_STORAGE_WASABI_ACCESS_KEY
- _APP_STORAGE_WASABI_SECRET
- _APP_STORAGE_WASABI_REGION
- _APP_STORAGE_WASABI_BUCKET
- _APP_LOGGING_PROVIDER - _APP_LOGGING_PROVIDER
- _APP_LOGGING_CONFIG - _APP_LOGGING_CONFIG
- _APP_EXECUTOR_SECRET - _APP_EXECUTOR_SECRET
@ -476,7 +492,27 @@ services:
- OPEN_RUNTIMES_NETWORK - OPEN_RUNTIMES_NETWORK
- _APP_LOGGING_PROVIDER - _APP_LOGGING_PROVIDER
- _APP_LOGGING_CONFIG - _APP_LOGGING_CONFIG
- *x-env-storage - _APP_STORAGE_DEVICE
- _APP_STORAGE_S3_ACCESS_KEY
- _APP_STORAGE_S3_SECRET
- _APP_STORAGE_S3_REGION
- _APP_STORAGE_S3_BUCKET
- _APP_STORAGE_DO_SPACES_ACCESS_KEY
- _APP_STORAGE_DO_SPACES_SECRET
- _APP_STORAGE_DO_SPACES_REGION
- _APP_STORAGE_DO_SPACES_BUCKET
- _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- _APP_STORAGE_BACKBLAZE_SECRET
- _APP_STORAGE_BACKBLAZE_REGION
- _APP_STORAGE_BACKBLAZE_BUCKET
- _APP_STORAGE_LINODE_ACCESS_KEY
- _APP_STORAGE_LINODE_SECRET
- _APP_STORAGE_LINODE_REGION
- _APP_STORAGE_LINODE_BUCKET
- _APP_STORAGE_WASABI_ACCESS_KEY
- _APP_STORAGE_WASABI_SECRET
- _APP_STORAGE_WASABI_REGION
- _APP_STORAGE_WASABI_BUCKET
- DOCKERHUB_PULL_USERNAME - DOCKERHUB_PULL_USERNAME
- DOCKERHUB_PULL_PASSWORD - DOCKERHUB_PULL_PASSWORD

View file

@ -368,6 +368,11 @@ class OpenAPI3 extends Format
$node['schema']['format'] = 'password'; $node['schema']['format'] = 'password';
$node['schema']['x-example'] = 'password'; $node['schema']['x-example'] = 'password';
break; break;
case 'Appwrite\Auth\Validator\Phone':
$node['schema']['type'] = $validator->getType();
$node['schema']['format'] = 'phone';
$node['schema']['x-example'] = '+12065550100'; // In the US, 555 is reserved like example.com
break;
case 'Utopia\Validator\Range': case 'Utopia\Validator\Range':
/** @var \Utopia\Validator\Range $validator */ /** @var \Utopia\Validator\Range $validator */
$node['schema']['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType(); $node['schema']['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType();

View file

@ -365,6 +365,11 @@ class Swagger2 extends Format
$node['format'] = 'password'; $node['format'] = 'password';
$node['x-example'] = 'password'; $node['x-example'] = 'password';
break; break;
case 'Appwrite\Auth\Validator\Phone':
$node['type'] = $validator->getType();
$node['format'] = 'phone';
$node['x-example'] = '+12065550100';
break;
case 'Utopia\Validator\Range': case 'Utopia\Validator\Range':
/** @var \Utopia\Validator\Range $validator */ /** @var \Utopia\Validator\Range $validator */
$node['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType(); $node['type'] = $validator->getType() === Validator::TYPE_FLOAT ? 'number' : $validator->getType();

View file

@ -124,56 +124,33 @@ class HTTPTest extends Scope
$this->client->setEndpoint($previousEndpoint); $this->client->setEndpoint($previousEndpoint);
} }
// public function testSpecSwagger2() public function testSpecs()
// {
// $response = $this->client->call(Client::METHOD_GET, '/specs/swagger2?platform=client', [
// 'content-type' => 'application/json',
// ], []);
// if(!file_put_contents(__DIR__ . '/../../resources/swagger2.json', json_encode($response['body']))) {
// throw new Exception('Failed to save spec file');
// }
// $client = new Client();
// $client->setEndpoint('https://validator.swagger.io');
// /**
// * Test for SUCCESS
// */
// $response = $client->call(Client::METHOD_POST, '/validator/debug', [
// 'content-type' => 'application/json',
// ], json_decode(file_get_contents(realpath(__DIR__ . '/../../resources/swagger2.json')), true));
// $response['body'] = json_decode($response['body'], true);
// $this->assertEquals(200, $response['headers']['status-code']);
// $this->assertTrue(empty($response['body']));
// unlink(realpath(__DIR__ . '/../../resources/swagger2.json'));
// }
public function testSpecOpenAPI3()
{ {
$response = $this->client->call(Client::METHOD_GET, '/specs/open-api3?platform=console', [
'content-type' => 'application/json',
], []);
$directory = __DIR__ . '/../../../app/config/specs/'; $directory = __DIR__ . '/../../../app/config/specs/';
$files = scandir($directory); $files = scandir($directory);
$client = new Client(); $client = new Client();
$client->setEndpoint('https://validator.swagger.io'); $client->setEndpoint('https://validator.swagger.io');
$versions = [
'latest',
'0.15.x',
'0.14.x',
];
foreach ($files as $file) { foreach ($files as $file) {
if (in_array($file, ['.', '..'])) { if (in_array($file, ['.', '..'])) {
continue; continue;
} }
if ( $allowed = false;
(strpos($file, 'latest') === false) && foreach ($versions as $version) {
(strpos($file, '0.12.x') === false) && if (\str_contains($file, $version)) {
(strpos($file, '0.13.x') === false) $allowed = true;
) { break;
}
}
if (!$allowed) {
continue; continue;
} }
@ -186,7 +163,7 @@ class HTTPTest extends Scope
$response['body'] = json_decode($response['body'], true); $response['body'] = json_decode($response['body'], true);
$this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals(200, $response['headers']['status-code']);
$this->assertTrue(empty($response['body'])); $this->assertEmpty($response['body']['schemaValidationMessages']);
} }
} }