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.]()
+
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.]()
+
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) {