diff --git a/.travis.yml b/.travis.yml index f3e66e8e73..2265373c23 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,6 +26,8 @@ before_install: - docker buildx create --use - chmod -R u+x ./.travis-ci - export COMPOSE_INTERACTIVE_NO_CLI=1 +# Only pass a single runtime for CI stability +- echo "_APP_FUNCTIONS_ENVS=php-8.0" >> .env install: - docker-compose up -d diff --git a/CHANGES.md b/CHANGES.md index b6b5c8a316..be06d3bdbe 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ - Enabled 501 errors (Not Implemented) from the error handler - Added Python 3.9 as a new Cloud Functions runtime - Added Deno 1.8 as a new Cloud Functions runtime (#989) +- Upgraded to PHP 8.0 (#713) - ClamAV is now disabled by default to allow lower min requirments for Appwrite (#1064) - Added a new env var named `_APP_LOCALE` that allow to change the default `en` locale value (#1056) - Updated all the console bottom control to be consistent. Dropped the `+` icon (#1062) @@ -30,9 +31,12 @@ ## Breaking Changes (Read before upgrading!) - Rename `deleteuser` to `delete` on Users Api +- Environment variable `_APP_FUNCTIONS_ENVS` renamed to `_APP_FUNCTIONS_RUNTIMES` - Only logged in users can execute functions (for guests, use anonymous login) - Only the user who has triggered the execution get access to the relevant execution logs -- Function execution env `APPWRITE_FUNCTION_EVENT_PAYLOAD` renamed to `APPWRITE_FUNCTION_EVENT_DATA` +- Function execution environment variable `APPWRITE_FUNCTION_EVENT_PAYLOAD` renamed to `APPWRITE_FUNCTION_EVENT_DATA` +- Function execution environment variable `APPWRITE_FUNCTION_ENV_NAME` renamed to `APPWRITE_FUNCTION_RUNTIME_NAME` +- Function execution environment variable `APPWRITE_FUNCTION_ENV_VERSION` renamed to `APPWRITE_FUNCTION_RUNTIME_VERSION` - Introdcues rate limits for: - Team invite (10 requests in every 60 minutes per IP address) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f2f1bc02a9..69d26d0aa4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -278,13 +278,9 @@ Before running the command, make sure you have proper write permissions to the A ```bash docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x -t appwrite/appwrite:dev --push . ``` -**Build Functions Envs** +**Build Functions Runtimes** -Build envs for all supported cloud functions (multicore builds) - -```bash -bash ./docker/environments/build.sh -``` +The Runtimes for all supported cloud functions (multicore builds) can be found at the [appwrite/php-runtimes](https://github.com/appwrite/php-runtimes) repository. ## Tests diff --git a/Dockerfile b/Dockerfile index 74dc9685e4..83f5c07b3f 100755 --- a/Dockerfile +++ b/Dockerfile @@ -12,12 +12,13 @@ RUN composer update --ignore-platform-reqs --optimize-autoloader \ --no-plugins --no-scripts --prefer-dist \ `if [ "$TESTING" != "true" ]; then echo "--no-dev"; fi` -FROM php:7.4-cli-alpine as step1 +FROM php:8.0-cli-alpine as step1 -ENV PHP_REDIS_VERSION=5.3.3 \ - PHP_SWOOLE_VERSION=v4.5.8 \ - PHP_MAXMINDDB_VERSION=v1.10.0 \ - PHP_XDEBUG_VERSION=sdebug_2_9-beta +ENV PHP_REDIS_VERSION=5.3.4 \ + PHP_SWOOLE_VERSION=v4.6.6 \ + PHP_IMAGICK_VERSION=master \ + PHP_YAML_VERSION=2.2.1 \ + PHP_MAXMINDDB_VERSION=v1.10.1 RUN \ apk add --no-cache --virtual .deps \ @@ -29,38 +30,52 @@ RUN \ git \ zlib-dev \ brotli-dev \ + yaml-dev \ + imagemagick \ + imagemagick-dev \ libmaxminddb-dev RUN docker-php-ext-install sockets RUN \ # Redis Extension - git clone https://github.com/phpredis/phpredis.git && \ + git clone --depth 1 --branch $PHP_REDIS_VERSION https://github.com/phpredis/phpredis.git && \ cd phpredis && \ - git checkout $PHP_REDIS_VERSION && \ phpize && \ ./configure && \ make && make install && \ cd .. && \ ## Swoole Extension - git clone https://github.com/swoole/swoole-src.git && \ + git clone --depth 1 --branch $PHP_SWOOLE_VERSION https://github.com/swoole/swoole-src.git && \ cd swoole-src && \ - git checkout $PHP_SWOOLE_VERSION && \ phpize && \ - ./configure --enable-sockets --enable-http2 && \ + ./configure --enable-http2 && \ + make && make install && \ + cd .. && \ + ## Imagick Extension + git clone --depth 1 --branch $PHP_IMAGICK_VERSION https://github.com/Imagick/imagick && \ + cd imagick && \ + phpize && \ + ./configure && \ + make && make install && \ + cd .. && \ + ## YAML Extension + git clone --depth 1 --branch $PHP_YAML_VERSION https://github.com/php/pecl-file_formats-yaml && \ + cd pecl-file_formats-yaml && \ + phpize && \ + ./configure && \ make && make install && \ cd .. && \ ## Maxminddb extension - git clone https://github.com/maxmind/MaxMind-DB-Reader-php.git && \ + git clone --depth 1 --branch $PHP_MAXMINDDB_VERSION https://github.com/maxmind/MaxMind-DB-Reader-php.git && \ cd MaxMind-DB-Reader-php && \ - git checkout $PHP_MAXMINDDB_VERSION && \ cd ext && \ phpize && \ ./configure && \ make && make install && \ cd ../.. -FROM php:7.4-cli-alpine as final +FROM php:8.0-cli-alpine as final LABEL maintainer="team@appwrite.io" @@ -124,16 +139,14 @@ RUN \ curl-dev \ && apk add --no-cache \ libstdc++ \ + certbot \ + brotli-dev \ yaml-dev \ imagemagick \ - imagemagick-dev \ + libmaxminddb-dev \ certbot \ docker-cli \ docker-compose \ - libmaxminddb \ - libmaxminddb-dev \ - && pecl install imagick yaml \ - && docker-php-ext-enable imagick yaml \ && docker-php-ext-install sockets opcache pdo_mysql \ && apk del .deps \ && rm -rf /var/cache/apk/* @@ -141,9 +154,11 @@ RUN \ WORKDIR /usr/src/code COPY --from=step0 /usr/local/src/vendor /usr/src/code/vendor -COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/swoole.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ -COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ -COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/maxminddb.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20200930/swoole.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20200930/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20200930/imagick.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20200930/yaml.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20200930/maxminddb.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ # Add Source Code COPY ./app /usr/src/code/app @@ -191,11 +206,15 @@ RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ # Enable Extensions RUN echo extension=swoole.so >> /usr/local/etc/php/conf.d/swoole.ini RUN echo extension=redis.so >> /usr/local/etc/php/conf.d/redis.ini +RUN echo extension=imagick.so >> /usr/local/etc/php/conf.d/imagick.ini +RUN echo extension=yaml.so >> /usr/local/etc/php/conf.d/yaml.ini RUN echo extension=maxminddb.so >> /usr/local/etc/php/conf.d/maxminddb.ini RUN echo "opcache.preload_user=www-data" >> /usr/local/etc/php/conf.d/appwrite.ini RUN echo "opcache.preload=/usr/src/code/app/preload.php" >> /usr/local/etc/php/conf.d/appwrite.ini RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/appwrite.ini +RUN echo "opcache.jit_buffer_size=100M" >> /usr/local/etc/php/conf.d/appwrite.ini +RUN echo "opcache.jit=1235" >> /usr/local/etc/php/conf.d/appwrite.ini EXPOSE 80 diff --git a/app/config/environments.php b/app/config/environments.php deleted file mode 100644 index cd3868d72c..0000000000 --- a/app/config/environments.php +++ /dev/null @@ -1,165 +0,0 @@ - [ - 'name' => 'Node.js', - 'version' => '14.5', - 'base' => 'node:14.5-alpine', - 'image' => 'appwrite/env-node-14.5:1.0.0', - 'build' => '/usr/src/code/docker/environments/node-14.5', - 'logo' => 'node.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'node-15.5' => [ - 'name' => 'Node.js', - 'version' => '15.5', - 'base' => 'node:15.5-alpine', - 'image' => 'appwrite/env-node-15.5:1.0.0', - 'build' => '/usr/src/code/docker/environments/node-15.5', - 'logo' => 'node.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'php-7.4' => [ - 'name' => 'PHP', - 'version' => '7.4', - 'base' => 'php:7.4-cli-alpine', - 'image' => 'appwrite/env-php-7.4:1.0.0', - 'build' => '/usr/src/code/docker/environments/php-7.4', - 'logo' => 'php.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'php-8.0' => [ - 'name' => 'PHP', - 'version' => '8.0', - 'base' => 'php:8.0-cli-alpine', - 'image' => 'appwrite/env-php-8.0:1.0.0', - 'build' => '/usr/src/code/docker/environments/php-8.0', - 'logo' => 'php.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'ruby-2.7' => [ - 'name' => 'Ruby', - 'version' => '2.7', - 'base' => 'ruby:2.7-alpine', - 'image' => 'appwrite/env-ruby-2.7:1.0.2', - 'build' => '/usr/src/code/docker/environments/ruby-2.7', - 'logo' => 'ruby.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'ruby-3.0' => [ - 'name' => 'Ruby', - 'version' => '3.0', - 'base' => 'ruby:3.0-alpine', - 'image' => 'appwrite/env-ruby-3.0:1.0.0', - 'build' => '/usr/src/code/docker/environments/ruby-3.0', - 'logo' => 'ruby.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'python-3.8' => [ - 'name' => 'Python', - 'version' => '3.8', - 'base' => 'python:3.8-alpine', - 'image' => 'appwrite/env-python-3.8:1.0.0', - 'build' => '/usr/src/code/docker/environments/python-3.8', - 'logo' => 'python.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'python-3.9' => [ - 'name' => 'Python', - 'version' => '3.9', - 'base' => 'python:3.9-alpine', - 'image' => 'appwrite/env-python-3.9:1.0.0', - 'build' => '/usr/src/code/docker/environments/python-3.9', - 'logo' => 'python.png', - 'supports' => [System::X86, System::PPC, System::ARM], - ], - 'deno-1.2' => [ - 'name' => 'Deno', - 'version' => '1.2', - 'base' => 'hayd/deno:alpine-1.2.0', - 'image' => 'appwrite/env-deno-1.2:1.0.0', - 'build' => '/usr/src/code/docker/environments/deno-1.2', - 'logo' => 'deno.png', - 'supports' => [System::X86], - ], - 'deno-1.5' => [ - 'name' => 'Deno', - 'version' => '1.5', - 'base' => 'hayd/deno:alpine-1.5.0', - 'image' => 'appwrite/env-deno-1.5:1.0.0', - 'build' => '/usr/src/code/docker/environments/deno-1.5', - 'logo' => 'deno.png', - 'supports' => [System::X86], - ], - 'deno-1.6' => [ - 'name' => 'Deno', - 'version' => '1.6', - 'base' => 'hayd/deno:alpine-1.6.0', - 'image' => 'appwrite/env-deno-1.6:1.0.0', - 'build' => '/usr/src/code/docker/environments/deno-1.6', - 'logo' => 'deno.png', - 'supports' => [System::X86], - ], - 'deno-1.8' => [ - 'name' => 'Deno', - 'version' => '1.8', - 'base' => 'hayd/deno:alpine-1.8.2', - 'image' => 'appwrite/env-deno-1.8:1.0.0', - 'build' => '/usr/src/code/docker/environments/deno-1.8', - 'logo' => 'deno.png', - 'supports' => [System::X86], - ], - 'dart-2.10' => [ - 'name' => 'Dart', - 'version' => '2.10', - 'base' => 'google/dart:2.10', - 'image' => 'appwrite/env-dart-2.10:1.0.0', - 'build' => '/usr/src/code/docker/environments/dart-2.10', - 'logo' => 'dart.png', - 'supports' => [System::X86], - ], - 'dart-2.12' => [ - 'name' => 'Dart', - 'version' => '2.12', - 'base' => 'google/dart:2.12', - 'image' => 'appwrite/env-dart-2.12:1.0.0', - 'build' => '/usr/src/code/docker/environments/dart-2.12', - 'logo' => 'dart.png', - 'supports' => [System::X86], - ], - 'dotnet-3.1' => [ - 'name' => '.NET', - 'version' => '3.1', - 'base' => 'mcr.microsoft.com/dotnet/runtime:3.1-alpine', - 'image' => 'appwrite/env-dotnet-3.1:1.0.0', - 'build' => '/usr/src/code/docker/environments/dotnet-3.1', - 'logo' => 'dotnet.png', - 'supports' => [System::X86], - ], - 'dotnet-5.0' => [ - 'name' => '.NET', - 'version' => '5.0', - 'base' => 'mcr.microsoft.com/dotnet/runtime:5.0-alpine', - 'image' => 'appwrite/env-dotnet-5.0:1.0.0', - 'build' => '/usr/src/code/docker/environments/dotnet-5.0', - 'logo' => 'dotnet.png', - 'supports' => [System::X86, System::ARM], - ], -]; - -$allowList = empty(App::getEnv('_APP_FUNCTIONS_ENVS', null)) ? false : \explode(',', App::getEnv('_APP_FUNCTIONS_ENVS', null)); - -$environments = array_filter($environments, function ($environment, $key) use ($allowList) { - $isAllowed = $allowList && in_array($key, $allowList); - $isSupported = in_array(System::getArchEnum(), $environment["supports"]); - - return $allowList ? ($isAllowed && $isSupported) : $isSupported; -}, ARRAY_FILTER_USE_BOTH); - -return $environments; \ No newline at end of file diff --git a/app/config/runtimes.php b/app/config/runtimes.php new file mode 100644 index 0000000000..986de7a655 --- /dev/null +++ b/app/config/runtimes.php @@ -0,0 +1,15 @@ +getAll(filter: $allowList); + +return $runtimes; \ No newline at end of file diff --git a/app/config/variables.php b/app/config/variables.php index ff23b11694..a5f598d80d 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -386,8 +386,16 @@ return [ 'question' => '', ], [ - 'name' => '_APP_FUNCTIONS_ENVS', + 'name' => '_APP_FUNCTIONS_RUNTIMES', 'description' => 'This option allows you to limit the available environments for cloud functions. This option is very useful for low-cost servers to safe disk space.\n\nTo enable/activate this option, pass a list of allowed environments separated by a comma.\n\nCurrently, supported environments are: ' . \implode(', ', \array_keys(Config::getParam('providers'))), + 'introduction' => '0.8.0', + 'default' => 'node-15.5,deno-1.8,php-8.0,python-3.9,ruby-3.0,dotnet-5.0', + 'required' => false, + 'question' => '', + ], + [ + 'name' => '_APP_FUNCTIONS_ENVS', + 'description' => 'Deprectated with 0.8.0, use \'_APP_FUNCTIONS_RUNTIMES\' instead!', 'introduction' => '0.7.0', 'default' => 'node-14.5,deno-1.8,php-7.4,python-3.9,ruby-3.0,dotnet-5.0', 'required' => false, diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 2fa454c49e..ff8b7d5bc9 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -39,7 +39,7 @@ App::post('/v1/functions') ->label('sdk.response.model', Response::MODEL_FUNCTION) ->param('name', '', new Text(128), 'Function name. Max length: 128 chars.') ->param('execute', [], new ArrayList(new Text(64)), 'An array of strings with execution permissions. By default no user is granted with any execute permissions. [learn more about permissions](/docs/permissions) and get a full list of available permissions.') - ->param('env', '', new WhiteList(array_keys(Config::getParam('environments')), true), 'Execution enviornment.') + ->param('env', '', new WhiteList(array_keys(Config::getParam('runtimes')), true), 'Execution enviornment.') ->param('vars', [], new Assoc(), 'Key-value JSON object.', true) ->param('events', [], new ArrayList(new WhiteList(array_keys(Config::getParam('events')), true)), 'Events list.', true) ->param('schedule', '', new Cron(), 'Schedule CRON syntax.', true) diff --git a/app/controllers/mock.php b/app/controllers/mock.php index df1f15cedf..0f94f36911 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -370,7 +370,7 @@ App::get('/v1/mock/tests/general/oauth2') ->param('scope', '', new Text(100), 'OAuth2 scope list.') ->param('state', '', new Text(1024), 'OAuth2 state.') ->inject('response') - ->action(function ($clientId, $redirectURI, $scope, $state, $response) { + ->action(function ($client_id, $redirectURI, $scope, $state, $response) { /** @var Appwrite\Utopia\Response $response */ $response->redirect($redirectURI.'?'.\http_build_query(['code' => 'abcdef', 'state' => $state])); @@ -387,14 +387,14 @@ App::get('/v1/mock/tests/general/oauth2/token') ->param('client_secret', '', new Text(100), 'OAuth2 scope list.') ->param('code', '', new Text(100), 'OAuth2 state.') ->inject('response') - ->action(function ($clientId, $redirectURI, $clientSecret, $code, $response) { + ->action(function ($client_id, $redirectURI, $client_secret, $code, $response) { /** @var Appwrite\Utopia\Response $response */ - if ($clientId != '1') { + if ($client_id != '1') { throw new Exception('Invalid client ID'); } - if ($clientSecret != '123456') { + if ($client_secret != '123456') { throw new Exception('Invalid client secret'); } diff --git a/app/controllers/shared/web.php b/app/controllers/shared/web.php index 526a4dbb62..dacd2501ed 100644 --- a/app/controllers/shared/web.php +++ b/app/controllers/shared/web.php @@ -32,7 +32,7 @@ App::init(function ($utopia, $request, $response, $layout) { ['type' => 'developer', 'label' => 'Developer'], ['type' => 'admin', 'label' => 'Admin'], ]) - ->setParam('environments', Config::getParam('environments')) + ->setParam('runtimes', Config::getParam('runtimes')) ->setParam('mode', App::getMode()) ; diff --git a/app/controllers/web/console.php b/app/controllers/web/console.php index 2506c70070..8017eda767 100644 --- a/app/controllers/web/console.php +++ b/app/controllers/web/console.php @@ -373,7 +373,7 @@ App::get('/console/functions') $page = new View(__DIR__.'/../../views/console/functions/index.phtml'); $page - ->setParam('environments', Config::getParam('environments')) + ->setParam('runtimes', Config::getParam('runtimes')) ; $layout diff --git a/app/init.php b/app/init.php index 4bccff6504..bc5e37d28a 100644 --- a/app/init.php +++ b/app/init.php @@ -79,7 +79,7 @@ Config::load('auth', __DIR__.'/config/auth.php'); Config::load('providers', __DIR__.'/config/providers.php'); Config::load('platforms', __DIR__.'/config/platforms.php'); Config::load('collections', __DIR__.'/config/collections.php'); -Config::load('environments', __DIR__.'/config/environments.php'); +Config::load('runtimes', __DIR__.'/config/runtimes.php'); Config::load('roles', __DIR__.'/config/roles.php'); // User roles and scopes Config::load('scopes', __DIR__.'/config/scopes.php'); // User roles and scopes Config::load('services', __DIR__.'/config/services.php'); // List of services diff --git a/app/views/console/functions/function.phtml b/app/views/console/functions/function.phtml index 15ba114350..15d4bf9e00 100644 --- a/app/views/console/functions/function.phtml +++ b/app/views/console/functions/function.phtml @@ -46,7 +46,7 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled',true);
- Function Env. + Function Env.

diff --git a/app/views/console/functions/index.phtml b/app/views/console/functions/index.phtml index 2aec5b6493..5951ad51cf 100644 --- a/app/views/console/functions/index.phtml +++ b/app/views/console/functions/index.phtml @@ -1,5 +1,5 @@ getParam('environments', []); +$runtimes = $this->getParam('runtimes', []); ?>

@@ -40,7 +40,7 @@ $environments = $this->getParam('environments', []);
  • - Function Env. + Function Env.
    Settings @@ -109,10 +109,10 @@ $environments = $this->getParam('environments', []); - + diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index cbe2bb531f..5a0803c65f 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -94,7 +94,7 @@ services: - _APP_FUNCTIONS_CPUS - _APP_FUNCTIONS_MEMORY - _APP_FUNCTIONS_MEMORY_SWAP - - _APP_FUNCTIONS_ENVS + - _APP_FUNCTIONS_RUNTIMES appwrite-worker-usage: image: appwrite/appwrite: @@ -266,6 +266,7 @@ services: - _APP_FUNCTIONS_CPUS - _APP_FUNCTIONS_MEMORY - _APP_FUNCTIONS_MEMORY_SWAP + - _APP_FUNCTIONS_RUNTIMES - _APP_USAGE_STATS appwrite-worker-mails: diff --git a/app/views/layouts/default.phtml b/app/views/layouts/default.phtml index b019baa0df..465e08366a 100644 --- a/app/views/layouts/default.phtml +++ b/app/views/layouts/default.phtml @@ -11,7 +11,7 @@ $analytics = $this->getParam('analytics', 'UA-26264668-9'); $mode = $this->getParam('mode', ''); $canonical = $this->getParam('canonical', ''); $locale = $this->getParam('locale', null); -$environments = $this->getParam('environments', null); +$runtimes = $this->getParam('runtimes', null); if(!empty($platforms)) { $platforms = array_map(function($platform) { @@ -78,7 +78,7 @@ if(!empty($platforms)) { SETUP: 'escape($this->getParam('setup')); ?>', API: '/v1', PROJECT: 'console', - ENVIRONMENTS: , + RUNTIMES: , PLATFORMS: , LOCALE: 'escape($locale->getText('settings.locale')); ?>', PREFIX: 'escape($this->getParam('prefix')); ?>', diff --git a/app/workers/functions.php b/app/workers/functions.php index 4a8244f37c..7ea356464e 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -14,21 +14,19 @@ use Utopia\Config\Config; require_once __DIR__.'/../init.php'; +Runtime::enableCoroutine(0); + Console::title('Functions V1 Worker'); - -Runtime::setHookFlags(SWOOLE_HOOK_ALL); - Console::success(APP_NAME.' functions worker v1 has started'); -$environments = Config::getParam('environments'); +$runtimes = Config::getParam('runtimes'); /** * Warmup Docker Images */ $warmupStart = \microtime(true); -Co\run(function() use ($environments) { // Warmup: make sure images are ready to run fast 🚀 - Runtime::enableCoroutine(SWOOLE_HOOK_ALL); +Co\run(function() use ($runtimes) { // Warmup: make sure images are ready to run fast 🚀 $dockerUser = App::getEnv('DOCKERHUB_PULL_USERNAME', null); $dockerPass = App::getEnv('DOCKERHUB_PULL_PASSWORD', null); @@ -41,14 +39,14 @@ Co\run(function() use ($environments) { // Warmup: make sure images are ready t Console::log('Docker Login'. $stdout.$stderr); } - foreach($environments as $environment) { - go(function() use ($environment) { + foreach($runtimes as $runtime) { + go(function() use ($runtime) { $stdout = ''; $stderr = ''; - Console::info('Warming up '.$environment['name'].' '.$environment['version'].' environment...'); + Console::info('Warming up '.$runtime['name'].' '.$runtime['version'].' environment...'); - Console::execute('docker pull '.$environment['image'], '', $stdout, $stderr); + Console::execute('docker pull '.$runtime['image'], '', $stdout, $stderr); if(!empty($stdout)) { Console::log($stdout); @@ -293,7 +291,7 @@ class FunctionsV1 { global $list; - $environments = Config::getParam('environments'); + $runtimes = Config::getParam('runtimes'); Authorization::disable(); $tag = $database->getDocument($function->getAttribute('tag', '')); @@ -327,11 +325,11 @@ class FunctionsV1 Authorization::reset(); - $environment = (isset($environments[$function->getAttribute('env', '')])) - ? $environments[$function->getAttribute('env', '')] + $runtime = (isset($runtimes[$function->getAttribute('env', '')])) + ? $runtimes[$function->getAttribute('env', '')] : null; - if(\is_null($environment)) { + if(\is_null($runtime)) { throw new Exception('Environment "'.$function->getAttribute('env', '').' is not supported'); } @@ -340,8 +338,8 @@ class FunctionsV1 'APPWRITE_FUNCTION_NAME' => $function->getAttribute('name', ''), 'APPWRITE_FUNCTION_TAG' => $tag->getId(), 'APPWRITE_FUNCTION_TRIGGER' => $trigger, - 'APPWRITE_FUNCTION_ENV_NAME' => $environment['name'], - 'APPWRITE_FUNCTION_ENV_VERSION' => $environment['version'], + 'APPWRITE_FUNCTION_RUNTIME_NAME' => $runtime['name'], + 'APPWRITE_FUNCTION_RUNTIME_VERSION' => $runtime['version'], 'APPWRITE_FUNCTION_EVENT' => $event, 'APPWRITE_FUNCTION_EVENT_DATA' => $eventData, 'APPWRITE_FUNCTION_DATA' => $data, @@ -419,7 +417,7 @@ class FunctionsV1 " --volume {$tagPathTargetDir}:/tmp:rw". " --workdir /usr/local/src". " ".\implode(" ", $vars). - " {$environment['image']}". + " {$runtime['image']}". " sh -c 'mv /tmp/code.tar.gz /usr/local/src/code.tar.gz && tar -zxf /usr/local/src/code.tar.gz --strip 1 && rm /usr/local/src/code.tar.gz && tail -f /dev/null'" , '', $stdout, $stderr, 30); diff --git a/composer.json b/composer.json index 402fba9ffa..4b68a5f1c7 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ } }, "require": { - "php": ">=7.4.0", + "php": ">=8.0.0", "ext-curl": "*", "ext-imagick": "*", "ext-mbstring": "*", @@ -35,37 +35,37 @@ "ext-zlib": "*", "ext-sockets": "*", - "appwrite/php-clamav": "1.0.*", + "appwrite/php-clamav": "1.1.*", + "appwrite/php-runtimes": "0.2.*", "utopia-php/framework": "0.12.*", "utopia-php/abuse": "0.4.*", "utopia-php/analytics": "0.2.*", "utopia-php/audit": "0.5.*", "utopia-php/cache": "0.2.*", - "utopia-php/cli": "0.10.0", + "utopia-php/cli": "0.10.*", "utopia-php/config": "0.2.*", "utopia-php/locale": "0.3.*", - "utopia-php/registry": "0.2.*", + "utopia-php/registry": "0.4.*", "utopia-php/preloader": "0.2.*", - "utopia-php/domains": "0.2.*", + "utopia-php/domains": "1.1.*", "utopia-php/swoole": "0.2.*", - "utopia-php/system": "0.4.*", - "utopia-php/storage": "0.4.3", + "utopia-php/storage": "0.4.*", "utopia-php/image": "0.2.*", "resque/php-resque": "1.3.6", - "matomo/device-detector": "4.1.0", + "matomo/device-detector": "4.2.2", "dragonmantank/cron-expression": "3.1.0", "influxdb/influxdb-php": "1.15.2", - "phpmailer/phpmailer": "6.3.0", + "phpmailer/phpmailer": "6.4.0", "chillerlan/php-qrcode": "4.3.0", "adhocore/jwt": "1.1.2", - "slickdeals/statsd": "~3.0" + "slickdeals/statsd": "3.0.2" }, "require-dev": { "appwrite/sdk-generator": "dev-feat-preps-for-0.8", - "phpunit/phpunit": "9.4.2", - "swoole/ide-helper": "4.5.5", - "vimeo/psalm": "4.1.1" + "swoole/ide-helper": "4.6.6", + "phpunit/phpunit": "9.5.4", + "vimeo/psalm": "4.7.1" }, "repositories": [ { @@ -76,10 +76,9 @@ "provide": { "ext-phpiredis": "*" }, - "minimum-stability": "dev", "config": { "platform": { - "php": "7.4" + "php": "8.0" } } } diff --git a/composer.lock b/composer.lock index eff9d12db8..8e54ef9bbb 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": "5fa595ed9b4c12279bc43f2192524eaa", + "content-hash": "32ceddda707fb8f625f84eec08dc3871", "packages": [ { "name": "adhocore/jwt", @@ -65,19 +65,20 @@ }, { "name": "appwrite/php-clamav", - "version": "v1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/appwrite/php-clamav.git", - "reference": "4c13abddfc89d59395da0bd75c18a8eeadc2a542" + "reference": "61d00f24f9e7766fbba233e7b8d09c5475388073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/php-clamav/zipball/4c13abddfc89d59395da0bd75c18a8eeadc2a542", - "reference": "4c13abddfc89d59395da0bd75c18a8eeadc2a542", + "url": "https://api.github.com/repos/appwrite/php-clamav/zipball/61d00f24f9e7766fbba233e7b8d09c5475388073", + "reference": "61d00f24f9e7766fbba233e7b8d09c5475388073", "shasum": "" }, "require": { + "ext-sockets": "*", "php": ">=7.1" }, "require-dev": { @@ -108,9 +109,64 @@ ], "support": { "issues": "https://github.com/appwrite/php-clamav/issues", - "source": "https://github.com/appwrite/php-clamav/tree/master" + "source": "https://github.com/appwrite/php-clamav/tree/1.1.0" }, - "time": "2020-02-29T11:35:01+00:00" + "time": "2020-10-02T05:23:46+00:00" + }, + { + "name": "appwrite/php-runtimes", + "version": "0.2.0", + "source": { + "type": "git", + "url": "https://github.com/appwrite/php-runtimes.git", + "reference": "43ec4e91cecb9bba0015ef26ab3736cbee2055f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/appwrite/php-runtimes/zipball/43ec4e91cecb9bba0015ef26ab3736cbee2055f5", + "reference": "43ec4e91cecb9bba0015ef26ab3736cbee2055f5", + "shasum": "" + }, + "require": { + "php": ">=8.0", + "utopia-php/system": "0.4.*" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "utopia-php/cli": "0.11.*", + "vimeo/psalm": "4.0.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Appwrite\\Runtimes\\": "src/Runtimes" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3" + ], + "authors": [ + { + "name": "Eldad Fux", + "email": "eldad@appwrite.io" + }, + { + "name": "Torsten Dittmann", + "email": "torsten@appwrite.io" + } + ], + "description": "Appwrite repository for Cloud Function runtimes that contains the configurations and tests for all of the Appwrite runtime environments.", + "keywords": [ + "appwrite", + "php", + "runtimes" + ], + "support": { + "issues": "https://github.com/appwrite/php-runtimes/issues", + "source": "https://github.com/appwrite/php-runtimes/tree/0.2.0" + }, + "time": "2021-04-22T20:47:42+00:00" }, { "name": "chillerlan/php-qrcode", @@ -360,16 +416,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "dev-master", + "version": "7.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "de6f1e58e735754b888649495ed4cb9ae3b19589" + "reference": "7008573787b430c1c1f650e3722d9bba59967628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/de6f1e58e735754b888649495ed4cb9ae3b19589", - "reference": "de6f1e58e735754b888649495ed4cb9ae3b19589", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", + "reference": "7008573787b430c1c1f650e3722d9bba59967628", "shasum": "" }, "require": { @@ -394,11 +450,10 @@ "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "7.3-dev" } }, "autoload": { @@ -440,7 +495,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/master" + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" }, "funding": [ { @@ -460,11 +515,11 @@ "type": "github" } ], - "time": "2021-03-23T14:07:59+00:00" + "time": "2021-03-23T11:33:13+00:00" }, { "name": "guzzlehttp/promises", - "version": "dev-master", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", @@ -482,7 +537,6 @@ "require-dev": { "symfony/phpunit-bridge": "^4.4 || ^5.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -520,47 +574,46 @@ }, { "name": "guzzlehttp/psr7", - "version": "dev-master", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c0dcda9f54d145bd4d062a6d15f54931a67732f9" + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c0dcda9f54d145bd4d062a6d15f54931a67732f9", - "reference": "c0dcda9f54d145bd4d062a6d15f54931a67732f9", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "ralouphie/getallheaders": "^3.0" + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" }, "provide": { - "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - } + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -575,11 +628,6 @@ { "name": "Tobias Schultze", "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -595,9 +643,9 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.0.0-beta1" + "source": "https://github.com/guzzle/psr7/tree/1.8.2" }, - "time": "2021-03-21T17:21:36+00:00" + "time": "2021-04-26T09:17:50+00:00" }, { "name": "influxdb/influxdb-php", @@ -667,16 +715,16 @@ }, { "name": "matomo/device-detector", - "version": "4.1.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/matomo-org/device-detector.git", - "reference": "6b3facc35e7a465bc4223fddfa5fa88c5b327554" + "reference": "dc270e7645d286d6f01d516a6634aba8b31ad668" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/6b3facc35e7a465bc4223fddfa5fa88c5b327554", - "reference": "6b3facc35e7a465bc4223fddfa5fa88c5b327554", + "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/dc270e7645d286d6f01d516a6634aba8b31ad668", + "reference": "dc270e7645d286d6f01d516a6634aba8b31ad668", "shasum": "" }, "require": { @@ -727,12 +775,12 @@ "useragent" ], "support": { - "forum": "http://forum.matomo.org/", + "forum": "https://forum.matomo.org/", "issues": "https://github.com/matomo-org/device-detector/issues", - "source": "https://github.com/matomo-org/piwik", + "source": "https://github.com/matomo-org/matomo", "wiki": "https://dev.matomo.org/" }, - "time": "2021-01-08T14:14:55+00:00" + "time": "2021-02-26T07:31:42+00:00" }, { "name": "mustangostang/spyc", @@ -786,16 +834,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.3.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "4a08cf4cdd2c38d12ee2b9fa69e5d235f37a6dcb" + "reference": "050d430203105c27c30efd1dce7aa421ad882d01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/4a08cf4cdd2c38d12ee2b9fa69e5d235f37a6dcb", - "reference": "4a08cf4cdd2c38d12ee2b9fa69e5d235f37a6dcb", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/050d430203105c27c30efd1dce7aa421ad882d01", + "reference": "050d430203105c27c30efd1dce7aa421ad882d01", "shasum": "" }, "require": { @@ -813,7 +861,7 @@ "yoast/phpunit-polyfills": "^0.2.0" }, "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", + "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", @@ -850,7 +898,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.3.0" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.4.0" }, "funding": [ { @@ -858,27 +906,26 @@ "type": "github" } ], - "time": "2021-02-19T15:28:08+00:00" + "time": "2021-03-31T20:06:42+00:00" }, { "name": "psr/http-client", - "version": "dev-master", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "22b2ef5687f43679481615605d7a15c557ce85b1" + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/22b2ef5687f43679481615605d7a15c557ce85b1", - "reference": "22b2ef5687f43679481615605d7a15c557ce85b1", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", "psr/http-message": "^1.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -897,7 +944,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -911,82 +958,25 @@ "support": { "source": "https://github.com/php-fig/http-client/tree/master" }, - "time": "2020-09-19T09:12:31+00:00" - }, - { - "name": "psr/http-factory", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "36fa03d50ff82abcae81860bdaf4ed9a1510c7cd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/36fa03d50ff82abcae81860bdaf4ed9a1510c7cd", - "reference": "36fa03d50ff82abcae81860bdaf4ed9a1510c7cd", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "default-branch": true, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" - }, - "time": "2020-09-17T16:52:55+00:00" + "time": "2020-06-29T06:28:15+00:00" }, { "name": "psr/http-message", - "version": "dev-master", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4" + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", - "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { "php": ">=5.3.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1021,26 +1011,25 @@ "support": { "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2019-08-29T13:16:46+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", - "version": "dev-master", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "a18c1e692e02b84abbafe4856c3cd7cc6903908c" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/a18c1e692e02b84abbafe4856c3cd7cc6903908c", - "reference": "a18c1e692e02b84abbafe4856c3cd7cc6903908c", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { "php": ">=5.3.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1059,7 +1048,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -1070,9 +1059,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/master" + "source": "https://github.com/php-fig/log/tree/1.1.3" }, - "time": "2021-03-02T15:02:34+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { "name": "ralouphie/getallheaders", @@ -1256,16 +1245,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { @@ -1274,11 +1263,10 @@ "suggest": { "ext-ctype": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1316,7 +1304,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/main" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" }, "funding": [ { @@ -1332,7 +1320,7 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "utopia-php/abuse", @@ -1651,24 +1639,23 @@ }, { "name": "utopia-php/domains", - "version": "0.2.3", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/utopia-php/domains.git", - "reference": "6c9b3706b0df4e0150a1f9062321ff114270a643" + "reference": "1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/domains/zipball/6c9b3706b0df4e0150a1f9062321ff114270a643", - "reference": "6c9b3706b0df4e0150a1f9062321ff114270a643", + "url": "https://api.github.com/repos/utopia-php/domains/zipball/1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73", + "reference": "1665e1d9932afa3be63b5c1e0dcfe01fe77d8e73", "shasum": "" }, "require": { "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "vimeo/psalm": "4.0.1" + "phpunit/phpunit": "^7.0" }, "type": "library", "autoload": { @@ -1700,9 +1687,9 @@ ], "support": { "issues": "https://github.com/utopia-php/domains/issues", - "source": "https://github.com/utopia-php/domains/tree/0.2.3" + "source": "https://github.com/utopia-php/domains/tree/master" }, - "time": "2020-10-23T09:59:51+00:00" + "time": "2020-02-23T07:40:02+00:00" }, { "name": "utopia-php/framework", @@ -1912,20 +1899,20 @@ }, { "name": "utopia-php/registry", - "version": "0.2.4", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/utopia-php/registry.git", - "reference": "428a94f1a36147e7b7221e778c01e1be08db2893" + "reference": "7aebbc6c5f3f04ff7a35ac3dad39fa91c9bd7c2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/registry/zipball/428a94f1a36147e7b7221e778c01e1be08db2893", - "reference": "428a94f1a36147e7b7221e778c01e1be08db2893", + "url": "https://api.github.com/repos/utopia-php/registry/zipball/7aebbc6c5f3f04ff7a35ac3dad39fa91c9bd7c2d", + "reference": "7aebbc6c5f3f04ff7a35ac3dad39fa91c9bd7c2d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.4" }, "require-dev": { "phpunit/phpunit": "^9.3", @@ -1958,9 +1945,9 @@ ], "support": { "issues": "https://github.com/utopia-php/registry/issues", - "source": "https://github.com/utopia-php/registry/tree/0.2.4" + "source": "https://github.com/utopia-php/registry/tree/0.4.0" }, - "time": "2020-10-24T08:51:37+00:00" + "time": "2021-03-10T06:50:09+00:00" }, { "name": "utopia-php/storage", @@ -2127,30 +2114,35 @@ }, { "name": "webmozart/assert", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -2174,39 +2166,38 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.9.1" + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2020-07-08T17:02:28+00:00" + "time": "2021-03-09T10:59:23+00:00" } ], "packages-dev": [ { "name": "amphp/amp", - "version": "dev-master", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "7d4bbc6e0b47c6bb39b6cce1a4b5942e0c5125fb" + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/7d4bbc6e0b47c6bb39b6cce1a4b5942e0c5125fb", - "reference": "7d4bbc6e0b47c6bb39b6cce1a4b5942e0c5125fb", + "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9", + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7" }, "require-dev": { "amphp/php-cs-fixer-config": "dev-master", "amphp/phpunit-util": "^1", "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", + "phpunit/phpunit": "^6.0.9 | ^7", "psalm/phar": "^3.11@dev", "react/promise": "^2" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2260,7 +2251,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/master" + "source": "https://github.com/amphp/amp/tree/v2.5.2" }, "funding": [ { @@ -2268,20 +2259,20 @@ "type": "github" } ], - "time": "2021-01-13T19:16:50+00:00" + "time": "2021-01-10T17:06:37+00:00" }, { "name": "amphp/byte-stream", - "version": "dev-master", + "version": "v1.8.1", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "7a64a9ad336fc5e1e70b1c1fc1e9618a7027332e" + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/7a64a9ad336fc5e1e70b1c1fc1e9618a7027332e", - "reference": "7a64a9ad336fc5e1e70b1c1fc1e9618a7027332e", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", "shasum": "" }, "require": { @@ -2296,7 +2287,6 @@ "phpunit/phpunit": "^6 || ^7 || ^8", "psalm/phar": "^3.11.4" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2338,7 +2328,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/master" + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" }, "funding": [ { @@ -2346,7 +2336,7 @@ "type": "github" } ], - "time": "2021-04-05T20:23:22+00:00" + "time": "2021-03-30T17:13:30+00:00" }, { "name": "appwrite/sdk-generator", @@ -2388,16 +2378,16 @@ }, { "name": "composer/package-versions-deprecated", - "version": "dev-master", + "version": "1.11.99.1", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "f921205948ab93bb19f86327c793a81edb62f236" + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/f921205948ab93bb19f86327c793a81edb62f236", - "reference": "f921205948ab93bb19f86327c793a81edb62f236", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6", "shasum": "" }, "require": { @@ -2412,7 +2402,6 @@ "ext-zip": "^1.13", "phpunit/phpunit": "^6.5 || ^7" }, - "default-branch": true, "type": "composer-plugin", "extra": { "class": "PackageVersions\\Installer", @@ -2442,7 +2431,7 @@ "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/master" + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.1" }, "funding": [ { @@ -2458,20 +2447,20 @@ "type": "tidelift" } ], - "time": "2020-12-27T20:11:05+00:00" + "time": "2020-11-11T10:22:58+00:00" }, { "name": "composer/semver", - "version": "dev-main", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "dd61cb4efbd0cff1700b217faf24ce596af4fc4e" + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/dd61cb4efbd0cff1700b217faf24ce596af4fc4e", - "reference": "dd61cb4efbd0cff1700b217faf24ce596af4fc4e", + "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", "shasum": "" }, "require": { @@ -2481,7 +2470,6 @@ "phpstan/phpstan": "^0.12.54", "symfony/phpunit-bridge": "^4.2 || ^5" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2524,7 +2512,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/main" + "source": "https://github.com/composer/semver/tree/3.2.4" }, "funding": [ { @@ -2540,20 +2528,20 @@ "type": "tidelift" } ], - "time": "2020-12-10T07:55:43+00:00" + "time": "2020-11-13T08:59:24+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.4.x-dev", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c" + "reference": "31d57697eb1971712a08031cfaff5a846d10bdf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c", - "reference": "f27e06cd9675801df441b3656569b328e04aa37c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/31d57697eb1971712a08031cfaff5a846d10bdf5", + "reference": "31d57697eb1971712a08031cfaff5a846d10bdf5", "shasum": "" }, "require": { @@ -2588,7 +2576,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/1.4.6" + "source": "https://github.com/composer/xdebug-handler/tree/2.0.0" }, "funding": [ { @@ -2604,7 +2592,7 @@ "type": "tidelift" } ], - "time": "2021-03-25T17:01:18+00:00" + "time": "2021-04-09T19:40:06+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -2645,16 +2633,16 @@ }, { "name": "doctrine/instantiator", - "version": "1.5.x-dev", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "6410c4b8352cb64218641457cef64997e6b784fb" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/6410c4b8352cb64218641457cef64997e6b784fb", - "reference": "6410c4b8352cb64218641457cef64997e6b784fb", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { @@ -2694,7 +2682,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.x" + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" }, "funding": [ { @@ -2710,7 +2698,7 @@ "type": "tidelift" } ], - "time": "2020-11-10T19:05:51+00:00" + "time": "2020-11-10T18:47:58+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -2759,7 +2747,7 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "dev-master", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", @@ -2779,7 +2767,6 @@ "squizlabs/php_codesniffer": "^3.1", "vimeo/psalm": "^4.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2947,7 +2934,7 @@ }, { "name": "myclabs/deep-copy", - "version": "1.x-dev", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", @@ -2970,7 +2957,6 @@ "doctrine/common": "^2.6", "phpunit/phpunit": "^7.1" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -3166,7 +3152,7 @@ }, { "name": "phar-io/manifest", - "version": "dev-master", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", @@ -3185,7 +3171,6 @@ "phar-io/version": "^3.0.1", "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3221,7 +3206,7 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.1" + "source": "https://github.com/phar-io/manifest/tree/master" }, "time": "2020-06-27T14:33:11+00:00" }, @@ -3278,26 +3263,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "dev-master", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "cf8df60735d98fd18070b7cab0019ba0831e219c" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/cf8df60735d98fd18070b7cab0019ba0831e219c", - "reference": "cf8df60735d98fd18070b7cab0019ba0831e219c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -3326,22 +3310,22 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2020-06-19T17:42:03+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "dev-master", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "f8d350d8514ff60b5993dd0121c62299480c989c" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/f8d350d8514ff60b5993dd0121c62299480c989c", - "reference": "f8d350d8514ff60b5993dd0121c62299480c989c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { @@ -3354,7 +3338,6 @@ "require-dev": { "mockery/mockery": "~1.3.2" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3385,20 +3368,20 @@ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" }, - "time": "2021-03-07T11:12:25+00:00" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.x-dev", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6759f2268deb9f329812679e9dcb2d0083b2a30b" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6759f2268deb9f329812679e9dcb2d0083b2a30b", - "reference": "6759f2268deb9f329812679e9dcb2d0083b2a30b", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { @@ -3408,7 +3391,6 @@ "require-dev": { "ext-tokenizer": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3433,9 +3415,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.x" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" }, - "time": "2021-02-02T21:09:27+00:00" + "time": "2020-09-17T18:55:26+00:00" }, { "name": "phpspec/prophecy", @@ -3506,7 +3488,7 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.x-dev", + "version": "9.2.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", @@ -3583,16 +3565,16 @@ }, { "name": "phpunit/php-file-iterator", - "version": "dev-master", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "97eb187efc3560da69c5b501235cd3eb1ebfec86" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/97eb187efc3560da69c5b501235cd3eb1ebfec86", - "reference": "97eb187efc3560da69c5b501235cd3eb1ebfec86", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { @@ -3601,7 +3583,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3632,7 +3613,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/master" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" }, "funding": [ { @@ -3640,20 +3621,20 @@ "type": "github" } ], - "time": "2021-04-02T08:22:03+00:00" + "time": "2020-09-28T05:57:25+00:00" }, { "name": "phpunit/php-invoker", - "version": "dev-master", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "de89b92643f75d97135fd0f895d4369630952c95" + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/de89b92643f75d97135fd0f895d4369630952c95", - "reference": "de89b92643f75d97135fd0f895d4369630952c95", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { @@ -3666,7 +3647,6 @@ "suggest": { "ext-pcntl": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3696,7 +3676,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/master" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { @@ -3704,20 +3684,20 @@ "type": "github" } ], - "time": "2021-04-02T08:22:12+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { "name": "phpunit/php-text-template", - "version": "dev-master", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "f46a87d94ad351b46c836f6cdda98795e8a6c979" + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/f46a87d94ad351b46c836f6cdda98795e8a6c979", - "reference": "f46a87d94ad351b46c836f6cdda98795e8a6c979", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { @@ -3726,7 +3706,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3756,7 +3735,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/master" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, "funding": [ { @@ -3764,20 +3743,20 @@ "type": "github" } ], - "time": "2021-04-02T08:22:46+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "dev-master", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "bd80d581ad411a5a4b7e613541a7f4cd09cf0da9" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/bd80d581ad411a5a4b7e613541a7f4cd09cf0da9", - "reference": "bd80d581ad411a5a4b7e613541a7f4cd09cf0da9", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { @@ -3786,7 +3765,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3816,7 +3794,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -3824,20 +3802,20 @@ "type": "github" } ], - "time": "2021-04-02T08:22:20+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "9.4.2", + "version": "9.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa" + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa", - "reference": "3866b2eeeed21b1b099c4bc0b7a1690ac6fd5baa", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c73c6737305e779771147af66c96ca6a7ed8a741", + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741", "shasum": "" }, "require": { @@ -3853,7 +3831,7 @@ "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2", + "phpunit/php-code-coverage": "^9.2.3", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -3884,7 +3862,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.4-dev" + "dev-master": "9.5-dev" } }, "autoload": { @@ -3915,7 +3893,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.4.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.4" }, "funding": [ { @@ -3927,11 +3905,11 @@ "type": "github" } ], - "time": "2020-10-19T09:23:29+00:00" + "time": "2021-03-23T07:16:29+00:00" }, { "name": "psr/container", - "version": "1.1.x-dev", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", @@ -3973,22 +3951,22 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.x" + "source": "https://github.com/php-fig/container/tree/1.1.1" }, "time": "2021-03-05T17:36:06+00:00" }, { "name": "sebastian/cli-parser", - "version": "dev-master", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "e59dfbeeaf6ccdff168c537427cbc9f7fed6b160" + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/e59dfbeeaf6ccdff168c537427cbc9f7fed6b160", - "reference": "e59dfbeeaf6ccdff168c537427cbc9f7fed6b160", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { @@ -3997,7 +3975,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4024,7 +4001,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/master" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { @@ -4032,7 +4009,7 @@ "type": "github" } ], - "time": "2021-04-02T08:23:11+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { "name": "sebastian/code-unit", @@ -4092,16 +4069,16 @@ }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "dev-master", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "f7ee1d817bdd8a8bdfb76b11fa851204132ef6d9" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/f7ee1d817bdd8a8bdfb76b11fa851204132ef6d9", - "reference": "f7ee1d817bdd8a8bdfb76b11fa851204132ef6d9", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { @@ -4110,7 +4087,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4136,7 +4112,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/master" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -4144,20 +4120,20 @@ "type": "github" } ], - "time": "2021-04-02T08:20:56+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "dev-master", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "604de433dd3e1467ded9a92414b3561a812554c5" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/604de433dd3e1467ded9a92414b3561a812554c5", - "reference": "604de433dd3e1467ded9a92414b3561a812554c5", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { @@ -4168,7 +4144,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4211,7 +4186,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/master" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { @@ -4219,7 +4194,7 @@ "type": "github" } ], - "time": "2021-04-02T08:21:05+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { "name": "sebastian/complexity", @@ -4280,16 +4255,16 @@ }, { "name": "sebastian/diff", - "version": "dev-master", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3fa178cf5772d7a09bcfe01bfb7acc13edcf8aec" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3fa178cf5772d7a09bcfe01bfb7acc13edcf8aec", - "reference": "3fa178cf5772d7a09bcfe01bfb7acc13edcf8aec", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { @@ -4299,7 +4274,6 @@ "phpunit/phpunit": "^9.3", "symfony/process": "^4.2 || ^5" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4335,7 +4309,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/master" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -4343,20 +4317,20 @@ "type": "github" } ], - "time": "2021-04-02T08:21:13+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "dev-master", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1fe23c75ca20a9cfe5ef8af473c726f9ef7e9465" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1fe23c75ca20a9cfe5ef8af473c726f9ef7e9465", - "reference": "1fe23c75ca20a9cfe5ef8af473c726f9ef7e9465", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { @@ -4368,7 +4342,6 @@ "suggest": { "ext-posix": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4399,7 +4372,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/master" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" }, "funding": [ { @@ -4407,20 +4380,20 @@ "type": "github" } ], - "time": "2021-04-02T08:21:21+00:00" + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "dev-master", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "31abe95278f9b406051b4a26faf2677fbcc01755" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/31abe95278f9b406051b4a26faf2677fbcc01755", - "reference": "31abe95278f9b406051b4a26faf2677fbcc01755", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { @@ -4431,7 +4404,6 @@ "ext-mbstring": "*", "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4477,7 +4449,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/master" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" }, "funding": [ { @@ -4485,20 +4457,20 @@ "type": "github" } ], - "time": "2021-04-02T08:21:30+00:00" + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "dev-master", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "8684de2d84cd6a819f5e22a1292cd3b2e1f26487" + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/8684de2d84cd6a819f5e22a1292cd3b2e1f26487", - "reference": "8684de2d84cd6a819f5e22a1292cd3b2e1f26487", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", "shasum": "" }, "require": { @@ -4513,7 +4485,6 @@ "suggest": { "ext-uopz": "*" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4542,7 +4513,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/master" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" }, "funding": [ { @@ -4550,7 +4521,7 @@ "type": "github" } ], - "time": "2021-04-02T08:21:38+00:00" + "time": "2020-10-26T15:55:19+00:00" }, { "name": "sebastian/lines-of-code", @@ -4611,16 +4582,16 @@ }, { "name": "sebastian/object-enumerator", - "version": "dev-master", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "b331fc5975a2225e6b93c7e6cd9fce0a57f0fddc" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/b331fc5975a2225e6b93c7e6cd9fce0a57f0fddc", - "reference": "b331fc5975a2225e6b93c7e6cd9fce0a57f0fddc", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { @@ -4631,7 +4602,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4657,7 +4627,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -4665,20 +4635,20 @@ "type": "github" } ], - "time": "2021-04-02T08:21:47+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "dev-master", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "297a334e3ae78670a7633e36569d7362bb7397bf" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/297a334e3ae78670a7633e36569d7362bb7397bf", - "reference": "297a334e3ae78670a7633e36569d7362bb7397bf", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { @@ -4687,7 +4657,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4713,7 +4682,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/master" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -4721,20 +4690,20 @@ "type": "github" } ], - "time": "2021-04-02T08:21:54+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "dev-master", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "78526ace5bac7c10048020f0317c58fd310a14ec" + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/78526ace5bac7c10048020f0317c58fd310a14ec", - "reference": "78526ace5bac7c10048020f0317c58fd310a14ec", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { @@ -4743,7 +4712,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4777,7 +4745,7 @@ "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/master" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { @@ -4785,11 +4753,11 @@ "type": "github" } ], - "time": "2021-04-02T08:22:30+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { "name": "sebastian/resource-operations", - "version": "dev-master", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", @@ -4807,7 +4775,6 @@ "require-dev": { "phpunit/phpunit": "^9.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4845,16 +4812,16 @@ }, { "name": "sebastian/type", - "version": "dev-master", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "17fc98bb3c75a02a1a99ffdd022e84ac6d22bd51" + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/17fc98bb3c75a02a1a99ffdd022e84ac6d22bd51", - "reference": "17fc98bb3c75a02a1a99ffdd022e84ac6d22bd51", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", "shasum": "" }, "require": { @@ -4863,7 +4830,6 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4890,7 +4856,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/master" + "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" }, "funding": [ { @@ -4898,7 +4864,7 @@ "type": "github" } ], - "time": "2021-04-02T08:36:52+00:00" + "time": "2020-10-26T13:18:59+00:00" }, { "name": "sebastian/version", @@ -4955,16 +4921,16 @@ }, { "name": "swoole/ide-helper", - "version": "4.5.5", + "version": "4.6.6", "source": { "type": "git", "url": "https://github.com/swoole/ide-helper.git", - "reference": "aefd9d15e00cf14b89a5ed87cfa3bd79c9889028" + "reference": "d29d71267f8ed4e4993dc057ca53ffdb5d2703b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swoole/ide-helper/zipball/aefd9d15e00cf14b89a5ed87cfa3bd79c9889028", - "reference": "aefd9d15e00cf14b89a5ed87cfa3bd79c9889028", + "url": "https://api.github.com/repos/swoole/ide-helper/zipball/d29d71267f8ed4e4993dc057ca53ffdb5d2703b7", + "reference": "d29d71267f8ed4e4993dc057ca53ffdb5d2703b7", "shasum": "" }, "require-dev": { @@ -4987,27 +4953,40 @@ "description": "IDE help files for Swoole.", "support": { "issues": "https://github.com/swoole/ide-helper/issues", - "source": "https://github.com/swoole/ide-helper/tree/4.5.5" + "source": "https://github.com/swoole/ide-helper/tree/4.6.6" }, - "time": "2020-10-14T18:05:12+00:00" + "funding": [ + { + "url": "https://gitee.com/swoole/swoole?donate=true", + "type": "custom" + }, + { + "url": "https://github.com/swoole", + "type": "github" + }, + { + "url": "https://opencollective.com/swoole-src", + "type": "open_collective" + } + ], + "time": "2021-04-22T16:38:11+00:00" }, { "name": "symfony/console", - "version": "5.x-dev", + "version": "v5.2.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1d077bd682f7c0794d5f5b794b16e2b30febec6b" + "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1d077bd682f7c0794d5f5b794b16e2b30febec6b", - "reference": "1d077bd682f7c0794d5f5b794b16e2b30febec6b", + "url": "https://api.github.com/repos/symfony/console/zipball/35f039df40a3b335ebf310f244cb242b3a83ac8d", + "reference": "35f039df40a3b335ebf310f244cb242b3a83ac8d", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", "symfony/polyfill-php80": "^1.15", @@ -5039,7 +5018,6 @@ "symfony/lock": "", "symfony/process": "" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -5072,7 +5050,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.0-BETA1" + "source": "https://github.com/symfony/console/tree/v5.2.6" }, "funding": [ { @@ -5088,88 +5066,20 @@ "type": "tidelift" } ], - "time": "2021-04-16T17:36:28+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "dev-main", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "default-branch": true, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.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": "2021-03-23T23:28:01+00:00" + "time": "2021-03-28T09:42:18+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "053f7184175d5417c933817341c5cc0053ddacd5" + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/053f7184175d5417c933817341c5cc0053ddacd5", - "reference": "053f7184175d5417c933817341c5cc0053ddacd5", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", "shasum": "" }, "require": { @@ -5178,11 +5088,10 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5222,7 +5131,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/main" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" }, "funding": [ { @@ -5238,20 +5147,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", "shasum": "" }, "require": { @@ -5260,11 +5169,10 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5307,7 +5215,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/main" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" }, "funding": [ { @@ -5323,20 +5231,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "298b87cbbe99cb2c9f88fb1d1de78833b64b483e" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/298b87cbbe99cb2c9f88fb1d1de78833b64b483e", - "reference": "298b87cbbe99cb2c9f88fb1d1de78833b64b483e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { @@ -5345,11 +5253,10 @@ "suggest": { "ext-mbstring": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5388,7 +5295,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/main" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { @@ -5404,30 +5311,29 @@ "type": "tidelift" } ], - "time": "2021-04-19T09:32:22+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-php73", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { "php": ">=7.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5468,7 +5374,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/main" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" }, "funding": [ { @@ -5484,30 +5390,29 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php80", - "version": "dev-main", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { "php": ">=7.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5552,7 +5457,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/main" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { @@ -5568,11 +5473,11 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/service-contracts", - "version": "dev-main", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", @@ -5591,7 +5496,6 @@ "suggest": { "symfony/service-implementation": "" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -5652,16 +5556,16 @@ }, { "name": "symfony/string", - "version": "5.x-dev", + "version": "v5.2.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "01454c66c88a6bb4449dcdeb913e463e075f331b" + "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/01454c66c88a6bb4449dcdeb913e463e075f331b", - "reference": "01454c66c88a6bb4449dcdeb913e463e075f331b", + "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", + "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", "shasum": "" }, "require": { @@ -5678,7 +5582,6 @@ "symfony/translation-contracts": "^1.1|^2", "symfony/var-exporter": "^4.4|^5.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -5716,7 +5619,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.0-BETA1" + "source": "https://github.com/symfony/string/tree/v5.2.6" }, "funding": [ { @@ -5732,7 +5635,7 @@ "type": "tidelift" } ], - "time": "2021-03-17T17:12:23+00:00" + "time": "2021-03-17T17:12:15+00:00" }, { "name": "theseer/tokenizer", @@ -5786,16 +5689,16 @@ }, { "name": "twig/twig", - "version": "2.x-dev", + "version": "v2.14.4", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "f7250c6ea6b6cdd724e25ce7c56e2a60006203cb" + "reference": "0b4ba691fb99ec7952d25deb36c0a83061b93bbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/f7250c6ea6b6cdd724e25ce7c56e2a60006203cb", - "reference": "f7250c6ea6b6cdd724e25ce7c56e2a60006203cb", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b4ba691fb99ec7952d25deb36c0a83061b93bbf", + "reference": "0b4ba691fb99ec7952d25deb36c0a83061b93bbf", "shasum": "" }, "require": { @@ -5849,7 +5752,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/2.x" + "source": "https://github.com/twigphp/Twig/tree/v2.14.4" }, "funding": [ { @@ -5861,28 +5764,28 @@ "type": "tidelift" } ], - "time": "2021-04-10T08:17:25+00:00" + "time": "2021-03-10T10:05:55+00:00" }, { "name": "vimeo/psalm", - "version": "4.1.1", + "version": "4.7.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "16bfbd9224698bd738c665f33039fade2a1a3977" + "reference": "cd53e047a58f71f646dd6bf45476076ab07b5d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/16bfbd9224698bd738c665f33039fade2a1a3977", - "reference": "16bfbd9224698bd738c665f33039fade2a1a3977", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/cd53e047a58f71f646dd6bf45476076ab07b5d44", + "reference": "cd53e047a58f71f646dd6bf45476076ab07b5d44", "shasum": "" }, "require": { - "amphp/amp": "^2.1", + "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", "composer/package-versions-deprecated": "^1.8.0", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1", + "composer/xdebug-handler": "^1.1 || ^2.0", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-dom": "*", "ext-json": "*", @@ -5891,8 +5794,8 @@ "ext-simplexml": "*", "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.4", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0", + "felixfbecker/language-server-protocol": "^1.5", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.10.1", "openlss/lib-array2xml": "^1.0", "php": "^7.1|^8", @@ -5904,19 +5807,19 @@ "psalm/psalm": "self.version" }, "require-dev": { - "amphp/amp": "^2.4.2", "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0.0", + "brianium/paratest": "^4.0||^6.0", "ext-curl": "*", - "php": "^7.3|^8", + "php-parallel-lint/php-parallel-lint": "^1.2", "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0", + "phpmyadmin/sql-parser": "5.1.0||dev-master", "phpspec/prophecy": ">=1.9.0", "phpunit/phpunit": "^9.0", "psalm/plugin-phpunit": "^0.13", - "slevomat/coding-standard": "^5.0", + "slevomat/coding-standard": "^6.3.11", "squizlabs/php_codesniffer": "^3.5", "symfony/process": "^4.3", + "weirdan/phpunit-appveyor-reporter": "^1.0.0", "weirdan/prophecy-shim": "^1.0 || ^2.0" }, "suggest": { @@ -5964,33 +5867,32 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.1.1" + "source": "https://github.com/vimeo/psalm/tree/4.7.1" }, - "time": "2020-11-02T05:54:12+00:00" + "time": "2021-04-25T21:26:25+00:00" }, { "name": "webmozart/path-util", - "version": "dev-master", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/path-util.git", - "reference": "95a8f7ad150c2a3773ff3c3d04f557a24c99cfd2" + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/95a8f7ad150c2a3773ff3c3d04f557a24c99cfd2", - "reference": "95a8f7ad150c2a3773ff3c3d04f557a24c99cfd2", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", "shasum": "" }, "require": { - "php": "^5.3.3|^7.0", + "php": ">=5.3.3", "webmozart/assert": "~1.0" }, "require-dev": { "phpunit/phpunit": "^4.6", "sebastian/version": "^1.0.1" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -6015,20 +5917,20 @@ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", "support": { "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/master" + "source": "https://github.com/webmozart/path-util/tree/2.3.0" }, - "time": "2016-08-15T15:31:42+00:00" + "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], - "minimum-stability": "dev", + "minimum-stability": "stable", "stability-flags": { "appwrite/sdk-generator": 20 }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.4.0", + "php": ">=8.0.0", "ext-curl": "*", "ext-imagick": "*", "ext-mbstring": "*", @@ -6044,7 +5946,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.4" + "php": "8.0" }, "plugin-api-version": "2.0.0" } diff --git a/docker-compose.yml b/docker-compose.yml index 29e882fcb6..3104eb4bf0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -111,7 +111,7 @@ services: - _APP_FUNCTIONS_CPUS - _APP_FUNCTIONS_MEMORY - _APP_FUNCTIONS_MEMORY_SWAP - - _APP_FUNCTIONS_ENVS + - _APP_FUNCTIONS_RUNTIMES appwrite-worker-usage: entrypoint: worker-usage @@ -283,7 +283,6 @@ services: - /tmp:/tmp:rw - ./app:/usr/src/code/app - ./src:/usr/src/code/src - - ./docker:/usr/src/code/docker depends_on: - redis - mariadb @@ -300,6 +299,7 @@ services: - _APP_DB_PASS - _APP_FUNCTIONS_TIMEOUT - _APP_FUNCTIONS_CONTAINERS + - _APP_FUNCTIONS_RUNTIMES - _APP_FUNCTIONS_CPUS - _APP_FUNCTIONS_MEMORY - _APP_FUNCTIONS_MEMORY_SWAP @@ -467,6 +467,7 @@ services: adminer: image: adminer + container_name: appwrite-adminer restart: always ports: - 9505:8080 diff --git a/docker/environments/README.md b/docker/environments/README.md deleted file mode 100644 index 7713755301..0000000000 --- a/docker/environments/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Appwrite Functions Environments - -Docker based enviornments for Appwrite Functions. You can use this Docker images to locally tests your functions by executing them on your local desktop or server. - -All the supported enviornments are based on Docker Alpine images. - -## Build - -Build envs for all supported cloud functions (multicore builds) - -```bash -bash ./docker/environments/build.sh -``` \ No newline at end of file diff --git a/docker/environments/build.sh b/docker/environments/build.sh deleted file mode 100644 index 887aeb0713..0000000000 --- a/docker/environments/build.sh +++ /dev/null @@ -1,49 +0,0 @@ -echo 'Starting build...' - -echo 'Deno 1.2...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-deno-1.2:1.0.0 ./docker/environments/deno-1.2/ --push - -echo 'Deno 1.5...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-deno-1.5:1.0.0 ./docker/environments/deno-1.5/ --push - -echo 'Deno 1.6...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-deno-1.6:1.0.0 ./docker/environments/deno-1.6/ --push - -echo 'Deno 1.8...' -docker buildx build --platform linux/amd64,linux/386 -t appwrite/env-deno-1.8:1.0.0 ./docker/environments/deno-1.8/ --push - -echo 'Node 14.5...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le -t appwrite/env-node-14.5:1.0.0 ./docker/environments/node-14.5/ --push - -echo 'Node 15.5...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le -t appwrite/env-node-15.5:1.0.0 ./docker/environments/node-15.5/ --push - -echo 'PHP 7.4...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-php-7.4:1.0.0 ./docker/environments/php-7.4/ --push - -echo 'PHP 8.0...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-php-8.0:1.0.0 ./docker/environments/php-8.0/ --push - -echo 'Python 3.8...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-python-3.8:1.0.0 ./docker/environments/python-3.8/ --push - -echo 'Python 3.9...' -docker buildx build --platform linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-python-3.9:1.0.0 ./docker/environments/python-3.9/ --push - -echo 'Ruby 2.7...' -docker buildx build --platform linux/amd64,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-ruby-2.7:1.0.2 ./docker/environments/ruby-2.7/ --push - -echo 'Ruby 3.0...' -docker buildx build --platform linux/amd64,linux/arm64,linux/386,linux/ppc64le -t appwrite/env-ruby-3.0:1.0.0 ./docker/environments/ruby-3.0/ --push - -echo 'Dart 2.10...' -docker buildx build --platform linux/amd64 -t appwrite/env-dart-2.10:1.0.0 ./docker/environments/dart-2.10/ --push - -echo 'Dart 2.12...' -docker buildx build --platform linux/amd64 -t appwrite/env-dart-2.12:1.0.0 ./docker/environments/dart-2.12/ --push - -echo '.NET 3.1...' -docker buildx build --platform linux/amd64 -t appwrite/env-dotnet-3.1:1.0.0 ./docker/environments/dotnet-3.1/ --push - -echo '.NET 5.0...' -docker buildx build --platform linux/amd64,linux/arm64 -t appwrite/env-dotnet-5.0:1.0.0 ./docker/environments/dotnet-5.0/ --push diff --git a/docker/environments/dart-2.10/Dockerfile b/docker/environments/dart-2.10/Dockerfile deleted file mode 100644 index 9216a9b4ee..0000000000 --- a/docker/environments/dart-2.10/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM google/dart:2.10 - -LABEL maintainer="team@appwrite.io" - -RUN apt-get update -y && apt-get install -y tar - -WORKDIR /usr/local/src/ - -ENV PUB_CACHE=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/dart-2.12/Dockerfile b/docker/environments/dart-2.12/Dockerfile deleted file mode 100644 index 06740803a8..0000000000 --- a/docker/environments/dart-2.12/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM google/dart:2.12 - -LABEL maintainer="team@appwrite.io" - -RUN apt-get update -y && apt-get install -y tar - -WORKDIR /usr/local/src/ - -ENV PUB_CACHE=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/deno-1.2/Dockerfile b/docker/environments/deno-1.2/Dockerfile deleted file mode 100644 index b6877da806..0000000000 --- a/docker/environments/deno-1.2/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM hayd/deno:alpine-1.2.0 - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV DENO_DIR=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/deno-1.5/Dockerfile b/docker/environments/deno-1.5/Dockerfile deleted file mode 100644 index 4d48179bab..0000000000 --- a/docker/environments/deno-1.5/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM hayd/deno:alpine-1.5.0 - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV DENO_DIR=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/deno-1.6/Dockerfile b/docker/environments/deno-1.6/Dockerfile deleted file mode 100644 index 886c4287fc..0000000000 --- a/docker/environments/deno-1.6/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM hayd/deno:alpine-1.6.2 - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV DENO_DIR=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/deno-1.8/Dockerfile b/docker/environments/deno-1.8/Dockerfile deleted file mode 100644 index e064614473..0000000000 --- a/docker/environments/deno-1.8/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM hayd/deno:alpine-1.8.3 - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV DENO_DIR=/usr/local/src/.appwrite \ No newline at end of file diff --git a/docker/environments/dotnet-3.1/Dockerfile b/docker/environments/dotnet-3.1/Dockerfile deleted file mode 100644 index 007b47a50c..0000000000 --- a/docker/environments/dotnet-3.1/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM mcr.microsoft.com/dotnet/runtime:3.1-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -WORKDIR /usr/local/src/ diff --git a/docker/environments/dotnet-5.0/Dockerfile b/docker/environments/dotnet-5.0/Dockerfile deleted file mode 100644 index e259ae1e45..0000000000 --- a/docker/environments/dotnet-5.0/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM mcr.microsoft.com/dotnet/runtime:5.0-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -WORKDIR /usr/local/src/ diff --git a/docker/environments/node-14.5/Dockerfile b/docker/environments/node-14.5/Dockerfile deleted file mode 100644 index c2f3458a3f..0000000000 --- a/docker/environments/node-14.5/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM node:14.5-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ \ No newline at end of file diff --git a/docker/environments/node-15.5/Dockerfile b/docker/environments/node-15.5/Dockerfile deleted file mode 100644 index 823862bc12..0000000000 --- a/docker/environments/node-15.5/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM node:15.5-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ \ No newline at end of file diff --git a/docker/environments/php-7.4/Dockerfile b/docker/environments/php-7.4/Dockerfile deleted file mode 100644 index 08af0999be..0000000000 --- a/docker/environments/php-7.4/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM php:7.4-cli-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ \ No newline at end of file diff --git a/docker/environments/php-8.0/Dockerfile b/docker/environments/php-8.0/Dockerfile deleted file mode 100644 index 221b0c4a15..0000000000 --- a/docker/environments/php-8.0/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM php:8.0-cli-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ \ No newline at end of file diff --git a/docker/environments/python-3.8/Dockerfile b/docker/environments/python-3.8/Dockerfile deleted file mode 100644 index 659644bd24..0000000000 --- a/docker/environments/python-3.8/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM python:3.8-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV PYTHONPATH "${PYTHONPATH}:/usr/local/src/.appwrite" \ No newline at end of file diff --git a/docker/environments/python-3.9/Dockerfile b/docker/environments/python-3.9/Dockerfile deleted file mode 100644 index 94b7b8ceb8..0000000000 --- a/docker/environments/python-3.9/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM python:3.9-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV PYTHONPATH "${PYTHONPATH}:/usr/local/src/.appwrite" \ No newline at end of file diff --git a/docker/environments/ruby-2.7/Dockerfile b/docker/environments/ruby-2.7/Dockerfile deleted file mode 100644 index 36cbb56746..0000000000 --- a/docker/environments/ruby-2.7/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM ruby:2.7-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV GEM_PATH=/usr/local/src/.appwrite -ENV GEM_SPEC_CACHE=/usr/local/src/.appwrite/specs \ No newline at end of file diff --git a/docker/environments/ruby-3.0/Dockerfile b/docker/environments/ruby-3.0/Dockerfile deleted file mode 100644 index 7f1600fa75..0000000000 --- a/docker/environments/ruby-3.0/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM ruby:3.0-alpine - -LABEL maintainer="team@appwrite.io" - -RUN apk add tar - -RUN mkdir /usr/local/src - -WORKDIR /usr/local/src/ - -ENV GEM_PATH=/usr/local/src/.appwrite -ENV GEM_SPEC_CACHE=/usr/local/src/.appwrite/specs \ No newline at end of file diff --git a/phpunit.xml b/phpunit.xml index a1c2da786b..6be2d27d7b 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -12,25 +12,27 @@ - + + ./tests/unit/ + + ./tests/e2e/Client.php ./tests/e2e/General ./tests/e2e/Scopes + ./tests/e2e/Services/Projects ./tests/e2e/Services/Account ./tests/e2e/Services/Avatars ./tests/e2e/Services/Database - ./tests/e2e/Services/Functions/FunctionsBase.php - ./tests/e2e/Services/Functions/FunctionsCustomServerTest.php - ./tests/e2e/Services/Functions/FunctionsCustomClientTest.php ./tests/e2e/Services/Health ./tests/e2e/Services/Locale - ./tests/e2e/Services/Projects ./tests/e2e/Services/Storage ./tests/e2e/Services/Teams ./tests/e2e/Services/Users - ./tests/e2e/Services/Webhooks ./tests/e2e/Services/Workers - ./tests/unit/ + ./tests/e2e/Services/Webhooks + ./tests/e2e/Services/Functions/FunctionsBase.php + ./tests/e2e/Services/Functions/FunctionsCustomServerTest.php + ./tests/e2e/Services/Functions/FunctionsCustomClientTest.php \ No newline at end of file diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index e97ece6287..a780aeb287 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -2269,9 +2269,9 @@ return result.length;}).add("documentAction",function(container){let collection= return'database.updateDocument';}).add("documentSuccess",function(container){let document=container.get('project-document');if(document&&!document.$id){return',redirect';} return'';}).add("firstElement",function($value){if($value&&$value[0]){return $value[0];} return $value;}).add("platformsLimit",function($value){return $value;}).add("limit",function($value){let postfix=($value.length>=50)?'...':'';return $value.substring(0,50)+postfix;;}).add("arraySentence",function($value){if(!Array.isArray($value)){return'';} -return $value.join(", ").replace(/,\s([^,]+)$/,' and $1');}).add("envName",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].name;} -return'';}).add("envLogo",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].logo;} -return'';}).add("envVersion",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].version;} +return $value.join(", ").replace(/,\s([^,]+)$/,' and $1');}).add("envName",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].name;} +return'';}).add("envLogo",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].logo;} +return'';}).add("envVersion",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].version;} return'';});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);} let abbr;if(number>=1e12){abbr="T";}else if(number>=1e9){abbr="B";}else if(number>=1e6){abbr="M";}else if(number>=1e3){abbr="K";}else{abbr="";} return annotate(number,maxPlaces,forcePlaces,abbr);} diff --git a/public/dist/scripts/app.js b/public/dist/scripts/app.js index 663a324551..ee6a4ced5e 100644 --- a/public/dist/scripts/app.js +++ b/public/dist/scripts/app.js @@ -306,9 +306,9 @@ return result.length;}).add("documentAction",function(container){let collection= return'database.updateDocument';}).add("documentSuccess",function(container){let document=container.get('project-document');if(document&&!document.$id){return',redirect';} return'';}).add("firstElement",function($value){if($value&&$value[0]){return $value[0];} return $value;}).add("platformsLimit",function($value){return $value;}).add("limit",function($value){let postfix=($value.length>=50)?'...':'';return $value.substring(0,50)+postfix;;}).add("arraySentence",function($value){if(!Array.isArray($value)){return'';} -return $value.join(", ").replace(/,\s([^,]+)$/,' and $1');}).add("envName",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].name;} -return'';}).add("envLogo",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].logo;} -return'';}).add("envVersion",function($value,env){if(env&&env.ENVIRONMENTS&&env.ENVIRONMENTS[$value]){return env.ENVIRONMENTS[$value].version;} +return $value.join(", ").replace(/,\s([^,]+)$/,' and $1');}).add("envName",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].name;} +return'';}).add("envLogo",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].logo;} +return'';}).add("envVersion",function($value,env){if(env&&env.RUNTIMES&&env.RUNTIMES[$value]){return env.RUNTIMES[$value].version;} return'';});function abbreviate(number,maxPlaces,forcePlaces,forceLetter){number=Number(number);forceLetter=forceLetter||false;if(forceLetter!==false){return annotate(number,maxPlaces,forcePlaces,forceLetter);} let abbr;if(number>=1e12){abbr="T";}else if(number>=1e9){abbr="B";}else if(number>=1e6){abbr="M";}else if(number>=1e3){abbr="K";}else{abbr="";} return annotate(number,maxPlaces,forcePlaces,abbr);} diff --git a/public/images/environments/dart.png b/public/images/runtimes/dart.png similarity index 100% rename from public/images/environments/dart.png rename to public/images/runtimes/dart.png diff --git a/public/images/environments/deno.png b/public/images/runtimes/deno.png similarity index 100% rename from public/images/environments/deno.png rename to public/images/runtimes/deno.png diff --git a/public/images/environments/dotnet.png b/public/images/runtimes/dotnet.png similarity index 100% rename from public/images/environments/dotnet.png rename to public/images/runtimes/dotnet.png diff --git a/public/images/environments/node.png b/public/images/runtimes/node.png similarity index 100% rename from public/images/environments/node.png rename to public/images/runtimes/node.png diff --git a/public/images/environments/php.png b/public/images/runtimes/php.png similarity index 100% rename from public/images/environments/php.png rename to public/images/runtimes/php.png diff --git a/public/images/environments/python.png b/public/images/runtimes/python.png similarity index 100% rename from public/images/environments/python.png rename to public/images/runtimes/python.png diff --git a/public/images/environments/ruby.png b/public/images/runtimes/ruby.png similarity index 100% rename from public/images/environments/ruby.png rename to public/images/runtimes/ruby.png diff --git a/public/scripts/filters.js b/public/scripts/filters.js index e1e6e1f6ea..917a4a82ee 100644 --- a/public/scripts/filters.js +++ b/public/scripts/filters.js @@ -235,22 +235,22 @@ window.ls.filter return $value.join(", ").replace(/,\s([^,]+)$/, ' and $1'); }) .add("envName", function($value, env) { - if(env && env.ENVIRONMENTS && env.ENVIRONMENTS[$value]) { - return env.ENVIRONMENTS[$value].name; + if(env && env.RUNTIMES && env.RUNTIMES[$value]) { + return env.RUNTIMES[$value].name; } return ''; }) .add("envLogo", function($value, env) { - if(env && env.ENVIRONMENTS && env.ENVIRONMENTS[$value]) { - return env.ENVIRONMENTS[$value].logo; + if(env && env.RUNTIMES && env.RUNTIMES[$value]) { + return env.RUNTIMES[$value].logo; } return ''; }) .add("envVersion", function($value, env) { - if(env && env.ENVIRONMENTS && env.ENVIRONMENTS[$value]) { - return env.ENVIRONMENTS[$value].version; + if(env && env.RUNTIMES && env.RUNTIMES[$value]) { + return env.RUNTIMES[$value].version; } return ''; diff --git a/src/Appwrite/Docker/Compose/Service.php b/src/Appwrite/Docker/Compose/Service.php index 476e9a40eb..c3af364836 100644 --- a/src/Appwrite/Docker/Compose/Service.php +++ b/src/Appwrite/Docker/Compose/Service.php @@ -21,7 +21,7 @@ class Service $ports = (isset($this->service['ports']) && is_array($this->service['ports'])) ? $this->service['ports'] : []; $this->service['ports'] = []; - array_walk($ports, function(&$value, &$key) { + array_walk($ports, function(&$value, $key) { $split = explode(':', $value); $this->service['ports'][ (isset($split[0])) ? $split[0] : '' diff --git a/src/Appwrite/Extend/PDOStatement.php b/src/Appwrite/Extend/PDOStatement.php index 412607d9ec..c1a60f6a3a 100644 --- a/src/Appwrite/Extend/PDOStatement.php +++ b/src/Appwrite/Extend/PDOStatement.php @@ -98,7 +98,15 @@ class PDOStatement extends PDOStatementNative return $result; } - public function fetchAll($how = null, $class_name = null, $ctor_args = null) + /** + * Fetch All + * + * @param int $fetch_style + * @param mixed $fetch_args + * + * @return array|false + */ + public function fetchAll(int $fetch_style = PDO::FETCH_BOTH, mixed ...$fetch_args) { $result = $this->PDOStatement->fetchAll(); diff --git a/src/Appwrite/Migration/Version/V06.php b/src/Appwrite/Migration/Version/V06.php index 90cdb3e2a9..e4fbc77718 100644 --- a/src/Appwrite/Migration/Version/V06.php +++ b/src/Appwrite/Migration/Version/V06.php @@ -34,8 +34,8 @@ class V06 extends Migration break; case Database::SYSTEM_COLLECTION_KEYS: if ($document->getAttribute('secret', null)) { - $json = \json_decode($document->getAttribute('secret')); - if ($json->{'data'} || $json->{'method'} || $json->{'iv'} || $json->{'tag'} || $json->{'version'}) + $json = \json_decode($document->getAttribute('secret'), true); + if (is_array($json)) { Console::log('Secret already encrypted. Skipped: ' . $document->getId()); break; diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index 207b4fe81f..9925d4c2df 100644 --- a/src/Appwrite/Utopia/Response/Model/Platform.php +++ b/src/Appwrite/Utopia/Response/Model/Platform.php @@ -39,11 +39,11 @@ class Platform extends Model 'default' => '', 'example' => 'com.company.appname', ]) - // ->addRule('store', [ - // 'type' => self::TYPE_STRING, - // 'description' => 'Link to platform store.', - // 'example' => '', - // ]) + ->addRule('store', [ + 'type' => self::TYPE_STRING, + 'description' => 'App store or Google Play store ID.', + 'example' => '', + ]) ->addRule('hostname', [ 'type' => self::TYPE_STRING, 'description' => 'Web app hostname. Empty string for other platforms.', diff --git a/tests/e2e/Client.php b/tests/e2e/Client.php index 2d8eff9515..82fd642a08 100644 --- a/tests/e2e/Client.php +++ b/tests/e2e/Client.php @@ -156,6 +156,7 @@ class Client */ public function call(string $method, string $path = '', array $headers = [], array $params = []) { + usleep(50000); $headers = array_merge($this->headers, $headers); $ch = curl_init($this->endpoint . $path . (($method == self::METHOD_GET && !empty($params)) ? '?' . http_build_query($params) : '')); $responseHeaders = []; @@ -187,6 +188,8 @@ class Client curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($curl, $header) use (&$responseHeaders) { $len = strlen($header); $header = explode(':', $header, 2); diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index e1dedd6be9..bc274996f9 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -261,7 +261,7 @@ class AccountCustomClientTest extends Scope /** * @depends testCreateAnonymousAccount */ - public function testUpdateAnonymousAccountPassword($session):array + public function testUpdateAnonymousAccountPassword($session) { /** * Test for FAILURE @@ -278,13 +278,13 @@ class AccountCustomClientTest extends Scope $this->assertEquals($response['headers']['status-code'], 400); - return []; + return $session; } /** * @depends testUpdateAnonymousAccountPassword */ - public function testUpdateAnonymousAccountEmail($session):array + public function testUpdateAnonymousAccountEmail($session) { $email = uniqid().'new@localhost.test'; @@ -301,12 +301,12 @@ class AccountCustomClientTest extends Scope 'password' => '', ]); - $this->assertEquals($response['headers']['status-code'], 401); + $this->assertEquals(400, $response['headers']['status-code']); return []; } - public function testConvertAnonymousAccount():array + public function testConvertAnonymousAccount() { $session = $this->testCreateAnonymousAccount(); $email = uniqid().'new@localhost.test'; @@ -372,7 +372,7 @@ class AccountCustomClientTest extends Scope return []; } - public function testConvertAnonymousAccountOAuth2():array + public function testConvertAnonymousAccountOAuth2() { $session = $this->testCreateAnonymousAccount(); $provider = 'mock'; diff --git a/tests/e2e/Services/Database/DatabaseBase.php b/tests/e2e/Services/Database/DatabaseBase.php index eedd312fef..6627018307 100644 --- a/tests/e2e/Services/Database/DatabaseBase.php +++ b/tests/e2e/Services/Database/DatabaseBase.php @@ -40,7 +40,6 @@ trait DatabaseBase ]); $this->assertEquals($actors['headers']['status-code'], 201); - $this->assertEquals($actors['body']['$collection'], 0); $this->assertEquals($actors['body']['name'], 'Actors'); $this->assertIsArray($actors['body']['$permissions']); $this->assertIsArray($actors['body']['$permissions']['read']); @@ -86,7 +85,6 @@ trait DatabaseBase ]); $this->assertEquals($movies['headers']['status-code'], 201); - $this->assertEquals($movies['body']['$collection'], 0); $this->assertEquals($movies['body']['name'], 'Movies'); $this->assertIsArray($movies['body']['$permissions']); $this->assertIsArray($movies['body']['$permissions']['read']); diff --git a/tests/e2e/Services/Database/DatabaseCustomServerTest.php b/tests/e2e/Services/Database/DatabaseCustomServerTest.php index 3bb9c3e82d..5590728756 100644 --- a/tests/e2e/Services/Database/DatabaseCustomServerTest.php +++ b/tests/e2e/Services/Database/DatabaseCustomServerTest.php @@ -49,7 +49,6 @@ class DatabaseCustomServerTest extends Scope ]); $this->assertEquals($actors['headers']['status-code'], 201); - $this->assertEquals($actors['body']['$collection'], 0); $this->assertEquals($actors['body']['name'], 'Actors'); $this->assertIsArray($actors['body']['$permissions']); $this->assertIsArray($actors['body']['$permissions']['read']); diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index b4c604c5cc..12a9edf245 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -33,7 +33,7 @@ class FunctionsCustomClientTest extends Scope 'account.create', 'account.delete', ], - 'schedule' => '* * * * *', + 'schedule' => '0 0 1 1 *', 'timeout' => 10, ]); @@ -54,7 +54,7 @@ class FunctionsCustomClientTest extends Scope ], [ 'name' => 'Test', 'execute' => ['user:'.$this->getUser()['$id']], - 'env' => 'php-7.4', + 'env' => 'php-8.0', 'vars' => [ 'funcKey1' => 'funcValue1', 'funcKey2' => 'funcValue2', @@ -64,7 +64,7 @@ class FunctionsCustomClientTest extends Scope 'account.create', 'account.delete', ], - 'schedule' => '* * * * *', + 'schedule' => '0 0 1 1 *', 'timeout' => 10, ]); @@ -75,7 +75,7 @@ class FunctionsCustomClientTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], 'x-appwrite-key' => $this->getProject()['apiKey'], ], [ - 'command' => 'php function.php', + 'command' => 'php index.php', 'code' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), ]); @@ -140,7 +140,7 @@ class FunctionsCustomClientTest extends Scope ], [ 'name' => 'Test', 'execute' => ['*'], - 'env' => 'php-7.4', + 'env' => 'php-8.0', 'vars' => [ 'funcKey1' => 'funcValue1', 'funcKey2' => 'funcValue2', diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 1184ba7730..edd9081c91 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -7,7 +7,6 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\CLI\Console; class FunctionsCustomServerTest extends Scope { @@ -25,7 +24,7 @@ class FunctionsCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'name' => 'Test', - 'env' => 'php-7.4', + 'env' => 'php-8.0', 'vars' => [ 'funcKey1' => 'funcValue1', 'funcKey2' => 'funcValue2', @@ -35,7 +34,7 @@ class FunctionsCustomServerTest extends Scope 'account.create', 'account.delete', ], - 'schedule' => '* * * * *', + 'schedule' => '0 0 1 1 *', 'timeout' => 10, ]); @@ -44,7 +43,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(201, $response1['headers']['status-code']); $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Test', $response1['body']['name']); - $this->assertEquals('php-7.4', $response1['body']['env']); + $this->assertEquals('php-8.0', $response1['body']['env']); $this->assertIsInt($response1['body']['dateCreated']); $this->assertIsInt($response1['body']['dateUpdated']); $this->assertEquals('', $response1['body']['tag']); @@ -57,7 +56,7 @@ class FunctionsCustomServerTest extends Scope 'account.create', 'account.delete', ], $response1['body']['events']); - $this->assertEquals('* * * * *', $response1['body']['schedule']); + $this->assertEquals('0 0 1 1 *', $response1['body']['schedule']); $this->assertEquals(10, $response1['body']['timeout']); /** @@ -142,7 +141,7 @@ class FunctionsCustomServerTest extends Scope 'account.update.name', 'account.update.email', ], - 'schedule' => '* * * * 1', + 'schedule' => '0 0 1 1 *', 'timeout' => 5, ]); @@ -161,7 +160,7 @@ class FunctionsCustomServerTest extends Scope 'account.update.name', 'account.update.email', ], $response1['body']['events']); - $this->assertEquals('* * * * 1', $response1['body']['schedule']); + $this->assertEquals('0 0 1 1 *', $response1['body']['schedule']); $this->assertEquals(5, $response1['body']['timeout']); /** @@ -183,7 +182,7 @@ class FunctionsCustomServerTest extends Scope 'content-type' => 'multipart/form-data', 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ - 'command' => 'php function.php', + 'command' => 'php index.php', 'code' => new CURLFile(realpath(__DIR__ . '/../../../resources/functions/php.tar.gz'), 'application/x-gzip', 'php-fx.tar.gz'), ]); @@ -192,7 +191,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(201, $tag['headers']['status-code']); $this->assertNotEmpty($tag['body']['$id']); $this->assertIsInt($tag['body']['dateCreated']); - $this->assertEquals('php function.php', $tag['body']['command']); + $this->assertEquals('php index.php', $tag['body']['command']); $this->assertGreaterThan(10000, $tag['body']['size']); /** @@ -308,28 +307,28 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals('', $execution['body']['stderr']); $this->assertEquals(0, $execution['body']['time']); - // $execution = $this->client->call(Client::METHOD_GET, '/functions/'.$data['functionId'].'/executions/'.$executionId, array_merge([ - // 'content-type' => 'application/json', - // 'x-appwrite-project' => $this->getProject()['$id'], - // ], $this->getHeaders())); + sleep(10); - // $this->assertNotEmpty($execution['body']['$id']); - // $this->assertNotEmpty($execution['body']['functionId']); - // $this->assertIsInt($execution['body']['dateCreated']); - // $this->assertEquals($data['functionId'], $execution['body']['functionId']); - // $this->assertEquals('completed', $execution['body']['status']); - // $this->assertEquals(0, $execution['body']['exitCode']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_ID', $execution['body']['stdout']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_NAME', $execution['body']['stdout']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_TAG', $execution['body']['stdout']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_TRIGGER', $execution['body']['stdout']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_ENV_NAME', $execution['body']['stdout']); - // $this->assertStringContainsString('APPWRITE_FUNCTION_ENV_VERSION', $execution['body']['stdout']); - // $this->assertStringContainsString('Hello World', $execution['body']['stdout']); - // $this->assertStringContainsString($execution['body']['functionId'], $execution['body']['stdout']); - // $this->assertEquals('', $execution['body']['stderr']); - // $this->assertGreaterThan(0.100, $execution['body']['time']); - // $this->assertLessThan(0.500, $execution['body']['time']); + $execution = $this->client->call(Client::METHOD_GET, '/functions/'.$data['functionId'].'/executions/'.$executionId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders())); + + $this->assertNotEmpty($execution['body']['$id']); + $this->assertNotEmpty($execution['body']['functionId']); + $this->assertIsInt($execution['body']['dateCreated']); + $this->assertEquals($data['functionId'], $execution['body']['functionId']); + $this->assertEquals('completed', $execution['body']['status']); + $this->assertEquals(0, $execution['body']['exitCode']); + $this->assertStringContainsString($execution['body']['functionId'], $execution['body']['stdout']); + $this->assertStringContainsString($data['tagId'], $execution['body']['stdout']); + $this->assertStringContainsString('Test1', $execution['body']['stdout']); + $this->assertStringContainsString('http', $execution['body']['stdout']); + $this->assertStringContainsString('PHP', $execution['body']['stdout']); + $this->assertStringContainsString('8.0', $execution['body']['stdout']); + $this->assertEquals('', $execution['body']['stderr']); + $this->assertGreaterThan(0.100, $execution['body']['time']); + $this->assertLessThan(0.500, $execution['body']['time']); /** * Test for FAILURE @@ -451,231 +450,6 @@ class FunctionsCustomServerTest extends Scope return $data; } - public function testENVS():array - { - - $functionsDir = realpath(__DIR__ . '/../../../resources/functions'); - $envs = require('app/config/environments.php'); - - - /** - * Command for rebuilding code packages: - * bash tests/resources/functions/package-*.sh - */ - $functions = [ - 'node-14.5' => [ - 'code' => $functionsDir.'/node.tar.gz', - 'command' => 'node index.js', - 'timeout' => 15, - ], - 'node-15.5' => [ - 'code' => $functionsDir.'/node.tar.gz', - 'command' => 'node index.js', - 'timeout' => 15, - ], - 'php-7.4' => [ - 'code' => $functionsDir.'/php.tar.gz', - 'command' => 'php index.php', - 'timeout' => 15, - ], - 'php-8.0' => [ - 'code' => $functionsDir.'/php.tar.gz', - 'command' => 'php index.php', - 'timeout' => 15, - ], - 'ruby-2.7' => [ - 'code' => $functionsDir.'/ruby.tar.gz', - 'command' => 'ruby app.rb', - 'timeout' => 15, - ], - 'ruby-3.0' => [ - 'code' => $functionsDir.'/ruby.tar.gz', - 'command' => 'ruby app.rb', - 'timeout' => 15, - ], - 'python-3.8' => [ - 'code' => $functionsDir.'/python.tar.gz', - 'command' => 'python main.py', - 'timeout' => 15, - ], - 'python-3.9' => [ - 'code' => $functionsDir.'/python.tar.gz', - 'command' => 'python main.py', - 'timeout' => 15, - ], - 'deno-1.2' => [ - 'code' => $functionsDir.'/deno.tar.gz', - 'command' => 'deno run --allow-env index.ts', - 'timeout' => 15, - ], - 'deno-1.5' => [ - 'code' => $functionsDir.'/deno.tar.gz', - 'command' => 'deno run --allow-env index.ts', - 'timeout' => 15, - ], - 'deno-1.6' => [ - 'code' => $functionsDir.'/deno.tar.gz', - 'command' => 'deno run --allow-env index.ts', - 'timeout' => 15, - ], - 'deno-1.8' => [ - 'code' => $functionsDir.'/deno.tar.gz', - 'command' => 'deno run --allow-env index.ts', - 'timeout' => 15, - ], - 'dart-2.10' => [ - 'code' => $functionsDir.'/dart.tar.gz', - 'command' => 'dart main.dart', - 'timeout' => 15, - ], - 'dart-2.12' => [ - 'code' => $functionsDir.'/dart.tar.gz', - 'command' => 'dart main.dart', - 'timeout' => 15, - ], - 'dotnet-3.1' => [ - 'code' => $functionsDir.'/dotnet-3.1.tar.gz', - 'command' => 'dotnet dotnet.dll', - 'timeout' => 15, - ], - 'dotnet-5.0' => [ - 'code' => $functionsDir.'/dotnet-5.0.tar.gz', - 'command' => 'dotnet dotnet.dll', - 'timeout' => 15, - ] - ]; - - foreach ($envs as $key => $env) { - $envs[$key] = array_merge($env, $functions[$key]); - } - - sleep(count($envs) * 20); - fwrite(STDERR, "."); - - /** - * Test for SUCCESS - */ - $file = $this->client->call(Client::METHOD_POST, '/storage/files', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'file' => new CURLFile(realpath(__DIR__ . '/../../../resources/logo.png'), 'image/png', 'logo.png'), - 'read' => ['*'], - 'write' => ['*'], - 'folderId' => 'xyz', - ]); - - $this->assertEquals($file['headers']['status-code'], 201); - $this->assertNotEmpty($file['body']['$id']); - - $fileId = $file['body']['$id'] ?? ''; - - foreach ($envs as $key => $env) { - $name = $key ?? ''; - $language = $env['name'] ?? ''; - $version = $env['version'] ?? ''; - $code = $env['code'] ?? ''; - $command = $env['command'] ?? ''; - $timeout = $env['timeout'] ?? 15; - - $function = $this->client->call(Client::METHOD_POST, '/functions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'name' => 'Test '.$name, - 'env' => $name, - 'vars' => [ - 'APPWRITE_ENDPOINT' => 'http://appwrite.test/v1', - 'APPWRITE_PROJECT' => $this->getProject()['$id'], - 'APPWRITE_SECRET' => $this->getProject()['apiKey'], - 'APPWRITE_FILEID' => $fileId, - ], - 'events' => [], - 'schedule' => '', - 'timeout' => $timeout, - ]); - - // var_dump('http://'.gethostbyname(trim(`hostname`)).'/v1'); - - $functionId = $function['body']['$id'] ?? ''; - - $this->assertEquals(201, $function['headers']['status-code']); - - $tag = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/tags', array_merge([ - 'content-type' => 'multipart/form-data', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'command' => $command, - 'code' => new CURLFile($code, 'application/x-gzip', basename($code)), - ]); - - $tagId = $tag['body']['$id'] ?? ''; - $this->assertEquals(201, $tag['headers']['status-code']); - - $tag = $this->client->call(Client::METHOD_PATCH, '/functions/'.$functionId.'/tag', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'tag' => $tagId, - ]); - - $this->assertEquals(200, $tag['headers']['status-code']); - - $execution = $this->client->call(Client::METHOD_POST, '/functions/'.$functionId.'/executions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders()), [ - 'async' => 1, - ]); - - $executionId = $execution['body']['$id'] ?? ''; - $this->assertEquals(201, $execution['headers']['status-code']); - - sleep(10); - - $executions = $this->client->call(Client::METHOD_GET, '/functions/'.$functionId.'/executions', array_merge([ - 'content-type' => 'application/json', - 'x-appwrite-project' => $this->getProject()['$id'], - ], $this->getHeaders())); - - if($executions['body']['executions'][0]['status'] !== 'completed') { - var_dump($env); - var_dump($executions['body']['executions'][0]); - $stdout = ''; - $stderr = ''; - Console::execute('docker logs appwrite-worker-functions', '', $stdout, $stderr); - var_dump($stdout); - var_dump($stderr); - } - - $this->assertEquals($executions['headers']['status-code'], 200); - $this->assertEquals($executions['body']['sum'], 1); - $this->assertIsArray($executions['body']['executions']); - $this->assertCount(1, $executions['body']['executions']); - $this->assertEquals($executions['body']['executions'][0]['$id'], $executionId); - $this->assertEquals($executions['body']['executions'][0]['trigger'], 'http'); - $this->assertEquals($executions['body']['executions'][0]['status'], 'completed'); - $this->assertEquals($executions['body']['executions'][0]['exitCode'], 0); - - $stdout = explode("\n", $executions['body']['executions'][0]['stdout']); - - $this->assertEquals($stdout[0], $functionId); - $this->assertEquals($stdout[1], 'Test '.$name); - $this->assertEquals($stdout[2], $tagId); - $this->assertEquals($stdout[3], 'http'); - $this->assertEquals($stdout[4], $language); - $this->assertEquals($stdout[5], $version); - // $this->assertEquals($stdout[6], $fileId); - fwrite(STDERR, "."); - } - - return [ - 'functionId' => $functionId, - ]; - } - /** - * @depends testENVS - */ public function testTimeout() { $name = 'php-8.0'; diff --git a/tests/e2e/Services/Locale/LocaleBase.php b/tests/e2e/Services/Locale/LocaleBase.php index cdfb0c726a..2757b70ba7 100644 --- a/tests/e2e/Services/Locale/LocaleBase.php +++ b/tests/e2e/Services/Locale/LocaleBase.php @@ -123,8 +123,8 @@ trait LocaleBase $this->assertEquals(194, $response['body']['sum']); $this->assertIsArray($response['body']['phones']); $this->assertEquals($response['body']['phones'][0]['code'], '+1'); - $this->assertEquals($response['body']['phones'][0]['countryName'], 'United States'); - $this->assertEquals($response['body']['phones'][0]['countryCode'], 'US'); + $this->assertEquals($response['body']['phones'][0]['countryName'], 'Canada'); + $this->assertEquals($response['body']['phones'][0]['countryCode'], 'CA'); /** * Test for FAILURE @@ -222,7 +222,7 @@ trait LocaleBase return []; } - public function testLangaugaes(): array + public function testLanguages(): array { /** * Test for SUCCESS diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 07042f8b78..311c533c3a 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -149,6 +149,8 @@ class ProjectsConsoleClientTest extends Scope { $id = $data['projectId'] ?? ''; + sleep(30); + /** * Test for SUCCESS */ diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index c8e3ba747d..0ef01ec850 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -306,7 +306,7 @@ class WebhooksCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'name' => 'Test', - 'env' => 'php-7.4', + 'env' => 'php-8.0', 'execute' => ['*'], 'timeout' => 10, ]); @@ -348,7 +348,7 @@ class WebhooksCustomServerTest extends Scope 'x-appwrite-project' => $this->getProject()['$id'], ], $this->getHeaders()), [ 'name' => 'Test', - 'env' => 'php-7.4', + 'env' => 'php-8.0', 'execute' => ['*'], 'vars' => [ 'key1' => 'value1', @@ -453,6 +453,7 @@ class WebhooksCustomServerTest extends Scope /** * Test for SUCCESS */ + $execution = $this->client->call(Client::METHOD_POST, '/functions/'.$data['functionId'].'/executions', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -472,7 +473,7 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals($webhook['headers']['X-Appwrite-Webhook-Project-Id'] ?? '', $this->getProject()['$id']); // wait for timeout function to complete (sleep(5);) - sleep(6); + sleep(10); $webhook = $this->getLastRequest(); diff --git a/tests/resources/functions/dart.tar.gz b/tests/resources/functions/dart.tar.gz deleted file mode 100644 index 3f1bc41544..0000000000 Binary files a/tests/resources/functions/dart.tar.gz and /dev/null differ diff --git a/tests/resources/functions/dart/main.dart b/tests/resources/functions/dart/main.dart deleted file mode 100644 index 33c184d7bd..0000000000 --- a/tests/resources/functions/dart/main.dart +++ /dev/null @@ -1,26 +0,0 @@ -import "dart:io"; -import "package:dart_appwrite/dart_appwrite.dart"; - -void main() { // Init SDK - Client client = Client(); - - client - .setEndpoint(Platform.environment["APPWRITE_ENDPOINT"]) // Your API Endpoint - .setProject(Platform.environment["APPWRITE_PROJECT"]) // Your project ID - .setKey(Platform.environment["APPWRITE_SECRET"]) // Your secret API key - ; - - Storage storage = Storage(client); - - //Future result = storage.getFile(fileId: '[FILE_ID]'); - - print(Platform.environment["APPWRITE_FUNCTION_ID"]); - print(Platform.environment["APPWRITE_FUNCTION_NAME"]); - print(Platform.environment["APPWRITE_FUNCTION_TAG"]); - print(Platform.environment["APPWRITE_FUNCTION_TRIGGER"]); - print(Platform.environment["APPWRITE_FUNCTION_ENV_NAME"]); - print(Platform.environment["APPWRITE_FUNCTION_ENV_VERSION"]); - // print(result['$id']); - print(Platform.environment["APPWRITE_FUNCTION_EVENT"]); - print(Platform.environment["APPWRITE_FUNCTION_EVENT_DATA"]); -} \ No newline at end of file diff --git a/tests/resources/functions/dart/pubspec.yaml b/tests/resources/functions/dart/pubspec.yaml deleted file mode 100644 index 6478d8c4e1..0000000000 --- a/tests/resources/functions/dart/pubspec.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: appwrite_cloud_function_demo -version: 0.1.0 -description: Demo cloud function script. -environment: - sdk: '>=2.10.0 <3.0.0' -dependencies: - dart_appwrite: ^0.1.0 diff --git a/tests/resources/functions/deno.tar.gz b/tests/resources/functions/deno.tar.gz deleted file mode 100644 index 5e57e3cfed..0000000000 Binary files a/tests/resources/functions/deno.tar.gz and /dev/null differ diff --git a/tests/resources/functions/deno/index.ts b/tests/resources/functions/deno/index.ts deleted file mode 100644 index ce043dc33a..0000000000 --- a/tests/resources/functions/deno/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as sdk from "https://deno.land/x/appwrite/mod.ts"; - -let client = new sdk.Client(); - -client - .setEndpoint(Deno.env.get("APPWRITE_ENDPOINT") || '') // Your API Endpoint - .setProject(Deno.env.get("APPWRITE_PROJECT") || '') // Your project ID - .setKey(Deno.env.get("APPWRITE_SECRET") || '') // Your secret API key -; - -let storage = new sdk.Storage(client); - -// let result = storage.getFile(Deno.env.get("APPWRITE_FILEID")); - -console.log(Deno.env.get("APPWRITE_FUNCTION_ID") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_NAME") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_TAG") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_TRIGGER") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_ENV_NAME") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_ENV_VERSION") || ''); -// console.log(result['$id']")); -console.log(Deno.env.get("APPWRITE_FUNCTION_EVENT") || ''); -console.log(Deno.env.get("APPWRITE_FUNCTION_EVENT_DATA") || ''); \ No newline at end of file diff --git a/tests/resources/functions/dotnet-3.1.tar.gz b/tests/resources/functions/dotnet-3.1.tar.gz deleted file mode 100644 index 8ce777cec1..0000000000 Binary files a/tests/resources/functions/dotnet-3.1.tar.gz and /dev/null differ diff --git a/tests/resources/functions/dotnet-3.1/Program.cs b/tests/resources/functions/dotnet-3.1/Program.cs deleted file mode 100644 index 9c20ee9f97..0000000000 --- a/tests/resources/functions/dotnet-3.1/Program.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using Appwrite; - -namespace dotnet -{ - class Program - { - static void Main(string[] args) - { - Client client = new Client(); - - client.SetEndPoint(Environment.GetEnvironmentVariable("APPWRITE_ENDPOINT")); - client.SetProject(Environment.GetEnvironmentVariable("APPWRITE_PROJECT")); - client.SetKey(Environment.GetEnvironmentVariable("APPWRITE_SECRET")); - - Storage storage = new Storage(client); - - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ID")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_NAME")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_TAG")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_TRIGGER")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ENV_NAME")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ENV_VERSION")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_EVENT")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_EVENT_DATA")); - } - } -} diff --git a/tests/resources/functions/dotnet-3.1/dotnet.csproj b/tests/resources/functions/dotnet-3.1/dotnet.csproj deleted file mode 100644 index 1b2d649f68..0000000000 --- a/tests/resources/functions/dotnet-3.1/dotnet.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - Exe - netcoreapp3.1 - - - - - diff --git a/tests/resources/functions/dotnet-5.0.tar.gz b/tests/resources/functions/dotnet-5.0.tar.gz deleted file mode 100644 index 1e82fe8619..0000000000 Binary files a/tests/resources/functions/dotnet-5.0.tar.gz and /dev/null differ diff --git a/tests/resources/functions/dotnet-5.0/Program.cs b/tests/resources/functions/dotnet-5.0/Program.cs deleted file mode 100644 index 9c20ee9f97..0000000000 --- a/tests/resources/functions/dotnet-5.0/Program.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using Appwrite; - -namespace dotnet -{ - class Program - { - static void Main(string[] args) - { - Client client = new Client(); - - client.SetEndPoint(Environment.GetEnvironmentVariable("APPWRITE_ENDPOINT")); - client.SetProject(Environment.GetEnvironmentVariable("APPWRITE_PROJECT")); - client.SetKey(Environment.GetEnvironmentVariable("APPWRITE_SECRET")); - - Storage storage = new Storage(client); - - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ID")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_NAME")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_TAG")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_TRIGGER")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ENV_NAME")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_ENV_VERSION")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_EVENT")); - Console.WriteLine(Environment.GetEnvironmentVariable("APPWRITE_FUNCTION_EVENT_DATA")); - } - } -} diff --git a/tests/resources/functions/dotnet-5.0/dotnet.csproj b/tests/resources/functions/dotnet-5.0/dotnet.csproj deleted file mode 100644 index 84fee71f31..0000000000 --- a/tests/resources/functions/dotnet-5.0/dotnet.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - Exe - net5.0 - - - - - diff --git a/tests/resources/functions/node.tar.gz b/tests/resources/functions/node.tar.gz deleted file mode 100644 index 9f0fa40f7d..0000000000 Binary files a/tests/resources/functions/node.tar.gz and /dev/null differ diff --git a/tests/resources/functions/node/index.js b/tests/resources/functions/node/index.js deleted file mode 100644 index f994323807..0000000000 --- a/tests/resources/functions/node/index.js +++ /dev/null @@ -1,23 +0,0 @@ -const sdk = require('node-appwrite'); - -let client = new sdk.Client(); - -client - .setEndpoint(process.env.APPWRITE_ENDPOINT) // Your API Endpoint - .setProject(process.env.APPWRITE_PROJECT) // Your project ID - .setKey(process.env.APPWRITE_SECRET) // Your secret API key -; - -let storage = new sdk.Storage(client); - -// let result = storage.getFile(process.env.APPWRITE_FILEID); - -console.log(process.env.APPWRITE_FUNCTION_ID); -console.log(process.env.APPWRITE_FUNCTION_NAME); -console.log(process.env.APPWRITE_FUNCTION_TAG); -console.log(process.env.APPWRITE_FUNCTION_TRIGGER); -console.log(process.env.APPWRITE_FUNCTION_ENV_NAME); -console.log(process.env.APPWRITE_FUNCTION_ENV_VERSION); -// console.log(result['$id']); -console.log(process.env.APPWRITE_FUNCTION_EVENT); -console.log(process.env.APPWRITE_FUNCTION_EVENT_DATA); \ No newline at end of file diff --git a/tests/resources/functions/node/package-lock.json b/tests/resources/functions/node/package-lock.json deleted file mode 100644 index faeedef7fb..0000000000 --- a/tests/resources/functions/node/package-lock.json +++ /dev/null @@ -1,376 +0,0 @@ -{ - "name": "appwrite-cloud-function-demo", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "node-appwrite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/node-appwrite/-/node-appwrite-1.1.0.tgz", - "integrity": "sha512-ZLOsxmsGry4ZRT63QRbNgUxhYiUzJlQntQL2nKAy6PBL1S/hMCChKrdLIdJv3ytGxPrrIWiDWxXivMeUeCW5KA==", - "requires": { - "request": "^2.88.0", - "request-promise-native": "^1.0.7" - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "requires": { - "punycode": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - } - } -} diff --git a/tests/resources/functions/node/package.json b/tests/resources/functions/node/package.json deleted file mode 100644 index 98b49bd241..0000000000 --- a/tests/resources/functions/node/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "appwrite-cloud-function-demo", - "version": "0.1.0", - "license": "BSD-3-Clause", - "repository": "public", - "dependencies": { - "node-appwrite": "1.1.0" - } -} diff --git a/tests/resources/functions/package-dart.sh b/tests/resources/functions/package-dart.sh deleted file mode 100644 index 74cb73ca21..0000000000 --- a/tests/resources/functions/package-dart.sh +++ /dev/null @@ -1,13 +0,0 @@ - -echo 'Dart Packaging...' - -cp -r $(pwd)/tests/resources/functions/dart $(pwd)/tests/resources/functions/packages/dart - -docker run --rm -v $(pwd)/tests/resources/functions/packages/dart:/app -w /app appwrite/env-dart-2.10:1.0.0 ls -docker run --rm -v $(pwd)/tests/resources/functions/packages/dart:/app -w /app --env PUB_CACHE=./.appwrite appwrite/env-dart-2.10:1.0.0 pub get - -docker run --rm -v $(pwd)/tests/resources/functions/packages/dart:/app -w /app appwrite/env-dart-2.10:1.0.0 tar -zcvf code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/dart/code.tar.gz $(pwd)/tests/resources/functions/dart.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/dart diff --git a/tests/resources/functions/package-deno.sh b/tests/resources/functions/package-deno.sh deleted file mode 100644 index 1e5fd0f779..0000000000 --- a/tests/resources/functions/package-deno.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo 'Deno Packaging...' - -cp -r $(pwd)/tests/resources/functions/deno $(pwd)/tests/resources/functions/packages/deno - -docker run --rm -v $(pwd)/tests/resources/functions/packages/deno:/app -w /app appwrite/env-deno-1.5:1.0.0 ls -docker run --rm --env DENO_DIR=./.appwrite -v $(pwd)/tests/resources/functions/packages/deno:/app -w /app appwrite/env-deno-1.5:1.0.0 deno cache index.ts -docker run --rm -v $(pwd)/tests/resources/functions/packages/deno:/app -w /app appwrite/env-deno-1.5:1.0.0 tar -zcvf code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/deno/code.tar.gz $(pwd)/tests/resources/functions/deno.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/deno diff --git a/tests/resources/functions/package-dotnet-3.1.sh b/tests/resources/functions/package-dotnet-3.1.sh deleted file mode 100644 index f3cb92adfc..0000000000 --- a/tests/resources/functions/package-dotnet-3.1.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo '.NET 3.1 Packaging...' - -cp -r $(pwd)/tests/resources/functions/dotnet-3.1 $(pwd)/tests/resources/functions/packages/dotnet-3.1 - -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-3.1:/app -w /app mcr.microsoft.com/dotnet/sdk:3.1-alpine dotnet restore -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-3.1:/app -w /app mcr.microsoft.com/dotnet/sdk:3.1-alpine dotnet publish -o ./release -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-3.1:/app -w /app/release appwrite/env-dotnet-3.1:1.0.0 tar -zcvf ../code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/dotnet-3.1/code.tar.gz $(pwd)/tests/resources/functions/dotnet-3.1.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/dotnet-3.1 diff --git a/tests/resources/functions/package-dotnet-5.0.sh b/tests/resources/functions/package-dotnet-5.0.sh deleted file mode 100644 index d126812488..0000000000 --- a/tests/resources/functions/package-dotnet-5.0.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo '.NET 5.0 Packaging...' - -cp -r $(pwd)/tests/resources/functions/dotnet-5.0 $(pwd)/tests/resources/functions/packages/dotnet-5.0 - -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-5.0:/app -w /app mcr.microsoft.com/dotnet/sdk:5.0-alpine dotnet restore -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-5.0:/app -w /app mcr.microsoft.com/dotnet/sdk:5.0-alpine dotnet publish -o ./release -docker run --rm -v $(pwd)/tests/resources/functions/packages/dotnet-5.0:/app -w /app/release appwrite/env-dotnet-5.0:1.0.0 tar -zcvf ../code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/dotnet-5.0/code.tar.gz $(pwd)/tests/resources/functions/dotnet-5.0.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/dotnet-5.0 diff --git a/tests/resources/functions/package-node.sh b/tests/resources/functions/package-node.sh deleted file mode 100644 index 46f4fed559..0000000000 --- a/tests/resources/functions/package-node.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo 'Node Packaging...' - -cp -r $(pwd)/tests/resources/functions/node $(pwd)/tests/resources/functions/packages/node - -docker run --rm -v $(pwd)/tests/resources/functions/packages/node:/app -w /app appwrite/env-node-14.5:1.0.0 npm install - -docker run --rm -v $(pwd)/tests/resources/functions/packages/node:/app -w /app appwrite/env-node-14.5:1.0.0 tar -zcvf code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/node/code.tar.gz $(pwd)/tests/resources/functions/node.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/node diff --git a/tests/resources/functions/package-python.sh b/tests/resources/functions/package-python.sh deleted file mode 100644 index 689ae7b7bd..0000000000 --- a/tests/resources/functions/package-python.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo 'Python Packaging...' - -cp -r $(pwd)/tests/resources/functions/python $(pwd)/tests/resources/functions/packages/python - -docker run --rm -v $(pwd)/tests/resources/functions/packages/python:/app -w /app --env PIP_TARGET=./.appwrite appwrite/env-python-3.8:1.0.0 pip install -r ./requirements.txt --upgrade --ignore-installed - -docker run --rm -v $(pwd)/tests/resources/functions/packages/python:/app -w /app appwrite/env-python-3.8:1.0.0 tar -zcvf code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/python/code.tar.gz $(pwd)/tests/resources/functions/python.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/python diff --git a/tests/resources/functions/package-ruby.sh b/tests/resources/functions/package-ruby.sh deleted file mode 100644 index a1c3676ace..0000000000 --- a/tests/resources/functions/package-ruby.sh +++ /dev/null @@ -1,12 +0,0 @@ - -echo 'Ruby Packaging...' - -cp -r $(pwd)/tests/resources/functions/ruby $(pwd)/tests/resources/functions/packages/ruby - -docker run --rm -v $(pwd)/tests/resources/functions/packages/ruby:/app -w /app --env GEM_HOME=./.appwrite appwrite/env-ruby-2.7:1.0.2 bundle install - -docker run --rm -v $(pwd)/tests/resources/functions/packages/ruby:/app -w /app appwrite/env-ruby-2.7:1.0.2 tar -zcvf code.tar.gz . - -mv $(pwd)/tests/resources/functions/packages/ruby/code.tar.gz $(pwd)/tests/resources/functions/ruby.tar.gz - -rm -r $(pwd)/tests/resources/functions/packages/ruby diff --git a/tests/resources/functions/php-fn.tar.gz b/tests/resources/functions/php-fn.tar.gz index 762072967e..a97a2e2352 100644 Binary files a/tests/resources/functions/php-fn.tar.gz and b/tests/resources/functions/php-fn.tar.gz differ diff --git a/tests/resources/functions/php-fn/index.php b/tests/resources/functions/php-fn/index.php index a1e20cc776..32af3ccb16 100644 --- a/tests/resources/functions/php-fn/index.php +++ b/tests/resources/functions/php-fn/index.php @@ -21,8 +21,8 @@ echo $_ENV['APPWRITE_FUNCTION_ID']."\n"; echo $_ENV['APPWRITE_FUNCTION_NAME']."\n"; echo $_ENV['APPWRITE_FUNCTION_TAG']."\n"; echo $_ENV['APPWRITE_FUNCTION_TRIGGER']."\n"; -echo $_ENV['APPWRITE_FUNCTION_ENV_NAME']."\n"; -echo $_ENV['APPWRITE_FUNCTION_ENV_VERSION']."\n"; +echo $_ENV['APPWRITE_FUNCTION_RUNTIME_NAME']."\n"; +echo $_ENV['APPWRITE_FUNCTION_RUNTIME_VERSION']."\n"; // echo $result['$id']; echo $_ENV['APPWRITE_FUNCTION_EVENT']."\n"; echo $_ENV['APPWRITE_FUNCTION_EVENT_DATA']."\n"; diff --git a/tests/resources/functions/php.tar.gz b/tests/resources/functions/php.tar.gz index 3e4fb632b5..0f29ac9a96 100644 Binary files a/tests/resources/functions/php.tar.gz and b/tests/resources/functions/php.tar.gz differ diff --git a/tests/resources/functions/php/index.php b/tests/resources/functions/php/index.php index 66267a4fd1..663c9b4d95 100644 --- a/tests/resources/functions/php/index.php +++ b/tests/resources/functions/php/index.php @@ -21,8 +21,8 @@ echo $_ENV['APPWRITE_FUNCTION_ID']."\n"; echo $_ENV['APPWRITE_FUNCTION_NAME']."\n"; echo $_ENV['APPWRITE_FUNCTION_TAG']."\n"; echo $_ENV['APPWRITE_FUNCTION_TRIGGER']."\n"; -echo $_ENV['APPWRITE_FUNCTION_ENV_NAME']."\n"; -echo $_ENV['APPWRITE_FUNCTION_ENV_VERSION']."\n"; +echo $_ENV['APPWRITE_FUNCTION_RUNTIME_NAME']."\n"; +echo $_ENV['APPWRITE_FUNCTION_RUNTIME_VERSION']."\n"; // echo $result['$id']; echo $_ENV['APPWRITE_FUNCTION_EVENT']."\n"; echo $_ENV['APPWRITE_FUNCTION_EVENT_DATA']."\n"; \ No newline at end of file diff --git a/tests/resources/functions/python.tar.gz b/tests/resources/functions/python.tar.gz deleted file mode 100644 index bbd1642001..0000000000 Binary files a/tests/resources/functions/python.tar.gz and /dev/null differ diff --git a/tests/resources/functions/python/main.py b/tests/resources/functions/python/main.py deleted file mode 100644 index c6b2f6e5dd..0000000000 --- a/tests/resources/functions/python/main.py +++ /dev/null @@ -1,23 +0,0 @@ -import json -import os -from appwrite.client import Client -from appwrite.services.storage import Storage - -# Setup appwrite client -client = Client() -client.set_endpoint(os.environ["APPWRITE_ENDPOINT"]) # PRIVATE IP OF YOUR APPWRITE CONTAINER -client.set_project(os.environ["APPWRITE_PROJECT"]) # YOUR PROJECT ID -client.set_key(os.environ["APPWRITE_SECRET"]) - -storage = Storage(client) -# result = storage.get_file(os.environ["APPWRITE_FILEID"]) - -print(os.environ["APPWRITE_FUNCTION_ID"]) -print(os.environ["APPWRITE_FUNCTION_NAME"]) -print(os.environ["APPWRITE_FUNCTION_TAG"]) -print(os.environ["APPWRITE_FUNCTION_TRIGGER"]) -print(os.environ["APPWRITE_FUNCTION_ENV_NAME"]) -print(os.environ["APPWRITE_FUNCTION_ENV_VERSION"]) -# print(result["$id"]) -print(os.environ["APPWRITE_FUNCTION_EVENT"]) -print(os.environ["APPWRITE_FUNCTION_EVENT_DATA"]) \ No newline at end of file diff --git a/tests/resources/functions/python/requirements.txt b/tests/resources/functions/python/requirements.txt deleted file mode 100644 index 7a6977edfb..0000000000 --- a/tests/resources/functions/python/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -appwrite \ No newline at end of file diff --git a/tests/resources/functions/ruby.tar.gz b/tests/resources/functions/ruby.tar.gz deleted file mode 100644 index 3e913f73fd..0000000000 Binary files a/tests/resources/functions/ruby.tar.gz and /dev/null differ diff --git a/tests/resources/functions/ruby/Gemfile b/tests/resources/functions/ruby/Gemfile deleted file mode 100644 index 02c1a52ac3..0000000000 --- a/tests/resources/functions/ruby/Gemfile +++ /dev/null @@ -1,5 +0,0 @@ -source "https://rubygems.org" - -ruby "~> 2.7.0" - -gem 'appwrite', '~> 1.0', '>= 1.0.11' \ No newline at end of file diff --git a/tests/resources/functions/ruby/Gemfile.lock b/tests/resources/functions/ruby/Gemfile.lock deleted file mode 100644 index 08d06664d4..0000000000 --- a/tests/resources/functions/ruby/Gemfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - appwrite (1.0.11) - -PLATFORMS - ruby - -DEPENDENCIES - appwrite (~> 1.0, >= 1.0.11) - -RUBY VERSION - ruby 2.7.2p137 - -BUNDLED WITH - 2.1.4 diff --git a/tests/resources/functions/ruby/app.rb b/tests/resources/functions/ruby/app.rb deleted file mode 100644 index 6972d75d94..0000000000 --- a/tests/resources/functions/ruby/app.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'appwrite' - -client = Appwrite::Client.new() - -client - .set_endpoint(ENV["APPWRITE_ENDPOINT"]) # Your API Endpoint - .set_project(ENV["APPWRITE_PROJECT"]) # Your project ID - .set_key(ENV["APPWRITE_SECRET"]) # Your secret API key -; - -storage = Appwrite::Storage.new(client); - -# result = storage.get_file(ENV["APPWRITE_FILEID"]); - -puts ENV["APPWRITE_FUNCTION_ID"] -puts ENV["APPWRITE_FUNCTION_NAME"] -puts ENV["APPWRITE_FUNCTION_TAG"] -puts ENV["APPWRITE_FUNCTION_TRIGGER"] -puts ENV["APPWRITE_FUNCTION_ENV_NAME"] -puts ENV["APPWRITE_FUNCTION_ENV_VERSION"] -# puts result["$id"] -puts ENV["APPWRITE_FUNCTION_EVENT"] -puts ENV["APPWRITE_FUNCTION_EVENT_DATA"] \ No newline at end of file diff --git a/tests/unit/General/CollectionsTest.php b/tests/unit/General/CollectionsTest.php index bf7aea7c0c..b5d29bd24b 100644 --- a/tests/unit/General/CollectionsTest.php +++ b/tests/unit/General/CollectionsTest.php @@ -19,8 +19,8 @@ class CollectionsTest extends TestCase public function testDuplicateRules() { - foreach ($this->collections as $collection) { - if ($collection['rules']) { + foreach ($this->collections as $key => $collection) { + if (array_key_exists('rules', $collection)) { foreach ($collection['rules'] as $check) { $occurences = 0; foreach ($collection['rules'] as $rule) {