Merge branch 'master' into feat-storage-buckets
This commit is contained in:
commit
4a37d402df
1
.github/ISSUE_TEMPLATE/bug.yaml
vendored
1
.github/ISSUE_TEMPLATE/bug.yaml
vendored
|
@ -37,6 +37,7 @@ body:
|
|||
label: "🎲 Appwrite version"
|
||||
description: "What version of Appwrite are you running?"
|
||||
options:
|
||||
- Version 0.12.x
|
||||
- Version 0.11.x
|
||||
- Version 0.10.x
|
||||
- Version 0.9.x
|
||||
|
|
10
CHANGES.md
10
CHANGES.md
|
@ -1,3 +1,13 @@
|
|||
# Version 0.12.1
|
||||
|
||||
## Bugs
|
||||
- Fixed some issues with the Migration
|
||||
- Fixed the UI to add Variables to Functions
|
||||
- Fixed wrong data type for String Attribute size
|
||||
- Fixed Request stats on the console
|
||||
- Fixed Realtime Connection stats with high number by abbreviation
|
||||
- Fixed backward compatibility of account status attribute.
|
||||
|
||||
# Version 0.12.0
|
||||
|
||||
## Features
|
||||
|
|
|
@ -32,7 +32,7 @@ ENV DEBUG=$DEBUG
|
|||
ENV PHP_REDIS_VERSION=5.3.5 \
|
||||
PHP_MONGODB_VERSION=1.9.1 \
|
||||
PHP_SWOOLE_VERSION=v4.8.5 \
|
||||
PHP_IMAGICK_VERSION=3.5.1 \
|
||||
PHP_IMAGICK_VERSION=3.7.0 \
|
||||
PHP_YAML_VERSION=2.2.2 \
|
||||
PHP_MAXMINDDB_VERSION=v1.11.0
|
||||
|
||||
|
|
16
README.md
16
README.md
|
@ -40,6 +40,7 @@ Table of Contents:
|
|||
- [Client](#client)
|
||||
- [Server](#server)
|
||||
- [Community](#community)
|
||||
- [Architecture](#architecture)
|
||||
- [Contributing](#contributing)
|
||||
- [Security](#security)
|
||||
- [Follow Us](#follow-us)
|
||||
|
@ -58,7 +59,7 @@ docker run -it --rm \
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
|
||||
--entrypoint="install" \
|
||||
appwrite/appwrite:0.12.0
|
||||
appwrite/appwrite:0.12.1
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
@ -70,7 +71,7 @@ docker run -it --rm ^
|
|||
--volume //var/run/docker.sock:/var/run/docker.sock ^
|
||||
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
|
||||
--entrypoint="install" ^
|
||||
appwrite/appwrite:0.12.0
|
||||
appwrite/appwrite:0.12.1
|
||||
```
|
||||
|
||||
#### PowerShell
|
||||
|
@ -80,7 +81,7 @@ docker run -it --rm ,
|
|||
--volume /var/run/docker.sock:/var/run/docker.sock ,
|
||||
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ,
|
||||
--entrypoint="install" ,
|
||||
appwrite/appwrite:0.12.0
|
||||
appwrite/appwrite:0.12.1
|
||||
```
|
||||
|
||||
Once the Docker installation completes, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after installation completes.
|
||||
|
@ -143,6 +144,15 @@ Below is a list of currently supported platforms and languages. If you wish to h
|
|||
|
||||
Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)!
|
||||
|
||||
|
||||
## Architecture
|
||||
|
||||
![Appwrite Architecture](docs/specs/overview.drawio.svg)
|
||||
|
||||
Appwrite uses a microservices architecture that was designed for easy scaling and delegation of responsibilities. In addition, Appwrite supports multiple APIs (REST, WebSocket, and GraphQL-soon) to allow you to interact with your resources leveraging your existing knowledge and protocols of choice.
|
||||
|
||||
The Appwrite API layer was designed to be extremely fast by leveraging in-memory caching and delegating any heavy-lifting tasks to the Appwrite background workers. The background workers also allow you to precisely control your compute capacity and costs using a message queue to handle the load. You can learn more about our architecture in the [contribution guide](CONTRIBUTING.md#architecture-1).
|
||||
|
||||
## Contributing
|
||||
|
||||
All code contributions - including those of people having commit access - must go through a pull request and be approved by a core developer before being merged. This is to ensure a proper review of all the code.
|
||||
|
|
|
@ -19,18 +19,6 @@ $collections = [
|
|||
'webhooks' => [],
|
||||
'keys' => [],
|
||||
'platforms' => [
|
||||
[
|
||||
'$collection' => Database::SYSTEM_COLLECTION_PLATFORMS,
|
||||
'name' => 'Production',
|
||||
'type' => 'web',
|
||||
'hostname' => 'appwrite.io',
|
||||
],
|
||||
[
|
||||
'$collection' => Database::SYSTEM_COLLECTION_PLATFORMS,
|
||||
'name' => 'Development',
|
||||
'type' => 'web',
|
||||
'hostname' => 'appwrite.test',
|
||||
],
|
||||
[
|
||||
'$collection' => Database::SYSTEM_COLLECTION_PLATFORMS,
|
||||
'name' => 'Localhost',
|
||||
|
|
|
@ -2253,6 +2253,7 @@ $collections = [
|
|||
],
|
||||
],
|
||||
],
|
||||
|
||||
'realtime' => [
|
||||
'$collection' => Database::METADATA,
|
||||
'$id' => 'realtime',
|
||||
|
|
|
@ -152,7 +152,7 @@ return [
|
|||
// ],
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
APP_PLATFORM_CONSOLE => [
|
||||
'key' => APP_PLATFORM_CONSOLE,
|
||||
'name' => 'Console',
|
||||
|
@ -190,7 +190,7 @@ return [
|
|||
[
|
||||
'key' => 'nodejs',
|
||||
'name' => 'Node.js',
|
||||
'version' => '4.0.1',
|
||||
'version' => '4.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-node',
|
||||
'package' => 'https://www.npmjs.com/package/node-appwrite',
|
||||
'enabled' => true,
|
||||
|
@ -208,7 +208,7 @@ return [
|
|||
[
|
||||
'key' => 'deno',
|
||||
'name' => 'Deno',
|
||||
'version' => '2.0.1',
|
||||
'version' => '2.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-deno',
|
||||
'package' => 'https://deno.land/x/appwrite',
|
||||
'enabled' => true,
|
||||
|
@ -334,7 +334,7 @@ return [
|
|||
[
|
||||
'key' => 'dart',
|
||||
'name' => 'Dart',
|
||||
'version' => '3.0.1',
|
||||
'version' => '3.0.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-dart',
|
||||
'package' => 'https://pub.dev/packages/dart_appwrite',
|
||||
'enabled' => true,
|
||||
|
@ -370,7 +370,7 @@ return [
|
|||
[
|
||||
'key' => 'kotlin',
|
||||
'name' => 'Kotlin',
|
||||
'version' => '0.2.0',
|
||||
'version' => '0.2.2',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-kotlin',
|
||||
'package' => 'https://search.maven.org/artifact/io.appwrite/sdk-for-kotlin',
|
||||
'enabled' => true,
|
||||
|
@ -392,7 +392,7 @@ return [
|
|||
[
|
||||
'key' => 'swift',
|
||||
'name' => 'Swift',
|
||||
'version' => '0.2.0',
|
||||
'version' => '0.2.1',
|
||||
'url' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'package' => 'https://github.com/appwrite/sdk-for-swift',
|
||||
'enabled' => true,
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -479,7 +479,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
|
|||
$limit = $project->getAttribute('auths', [])['limit'] ?? 0;
|
||||
|
||||
if ($limit !== 0) {
|
||||
$sum = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]),], APP_LIMIT_COUNT);
|
||||
$sum = $dbForProject->count('users', [ new Query('deleted', Query::TYPE_EQUAL, [false]),], APP_LIMIT_USERS);
|
||||
|
||||
if ($sum >= $limit) {
|
||||
throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501);
|
||||
|
@ -652,7 +652,7 @@ App::post('/v1/account/sessions/magic-url')
|
|||
if ($limit !== 0) {
|
||||
$sum = $dbForProject->count('users', [
|
||||
new Query('deleted', Query::TYPE_EQUAL, [false]),
|
||||
], APP_LIMIT_COUNT);
|
||||
], APP_LIMIT_USERS);
|
||||
|
||||
if ($sum >= $limit) {
|
||||
throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501);
|
||||
|
@ -924,7 +924,7 @@ App::post('/v1/account/sessions/anonymous')
|
|||
if ($limit !== 0) {
|
||||
$sum = $dbForProject->count('users', [
|
||||
new Query('deleted', Query::TYPE_EQUAL, [false]),
|
||||
], APP_LIMIT_COUNT);
|
||||
], APP_LIMIT_USERS);
|
||||
|
||||
if ($sum >= $limit) {
|
||||
throw new Exception('Project registration is restricted. Contact your administrator for more information.', 501);
|
||||
|
|
|
@ -461,7 +461,7 @@ App::patch('/v1/projects/:projectId/auth/limit')
|
|||
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
|
||||
->label('sdk.response.model', Response::MODEL_PROJECT)
|
||||
->param('projectId', '', new UID(), 'Project unique ID.')
|
||||
->param('limit', false, new Integer(true), 'Set the max number of users allowed in this project. Use 0 for unlimited.')
|
||||
->param('limit', false, new Range(0, APP_LIMIT_USERS), 'Set the max number of users allowed in this project. Use 0 for unlimited.')
|
||||
->inject('response')
|
||||
->inject('dbForConsole')
|
||||
->action(function ($projectId, $limit, $response, $dbForConsole) {
|
||||
|
|
|
@ -353,10 +353,12 @@ App::get('/v1/mock/tests/general/set-cookie')
|
|||
->label('sdk.response.model', Response::MODEL_MOCK)
|
||||
->label('sdk.mock', true)
|
||||
->inject('response')
|
||||
->action(function ($response) {
|
||||
->inject('request')
|
||||
->action(function ($response, $request) {
|
||||
/** @var Appwrite\Utopia\Response $response */
|
||||
/** @var Appwrite\Utopia\Request $request */
|
||||
|
||||
$response->addCookie('cookieName', 'cookieValue', \time() + 31536000, '/', 'localhost', true, true);
|
||||
$response->addCookie('cookieName', 'cookieValue', \time() + 31536000, '/', $request->getHostname(), true, true);
|
||||
});
|
||||
|
||||
App::get('/v1/mock/tests/general/get-cookie')
|
||||
|
|
14
app/init.php
14
app/init.php
|
@ -64,7 +64,7 @@ const APP_LIMIT_USERS = 10000;
|
|||
const APP_LIMIT_ANTIVIRUS = 20971520; //20MB
|
||||
const APP_LIMIT_ENCRYPTION = 20971520; //20MB
|
||||
const APP_LIMIT_COMPRESSION = 20971520; //20MB
|
||||
const APP_CACHE_BUSTER = 200;
|
||||
const APP_CACHE_BUSTER = 201;
|
||||
const APP_VERSION_STABLE = '0.13.0';
|
||||
const APP_DATABASE_ATTRIBUTE_EMAIL = 'email';
|
||||
const APP_DATABASE_ATTRIBUTE_ENUM = 'enum';
|
||||
|
@ -778,18 +778,6 @@ App::setResource('console', function() {
|
|||
'webhooks' => [],
|
||||
'keys' => [],
|
||||
'platforms' => [
|
||||
[
|
||||
'$collection' => 'platforms',
|
||||
'name' => 'Production',
|
||||
'type' => 'web',
|
||||
'hostname' => 'appwrite.io',
|
||||
],
|
||||
[
|
||||
'$collection' => 'platforms',
|
||||
'name' => 'Development',
|
||||
'type' => 'web',
|
||||
'hostname' => 'appwrite.test',
|
||||
],
|
||||
[
|
||||
'$collection' => 'platforms',
|
||||
'name' => 'Localhost',
|
||||
|
|
|
@ -97,13 +97,13 @@ $usageStatsEnabled = $this->getParam('usageStatsEnabled', true);
|
|||
</div>
|
||||
|
||||
<div class="chart-metric">
|
||||
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.requests|statsGetLast|statsTotal}}">N/A</span></div>
|
||||
<div class="value margin-bottom-small"><span class="sum" data-ls-bind="{{usage.requests|statsGetSum|statsTotal}}">N/A</span></div>
|
||||
<div class="unit margin-start-no margin-bottom-small">Requests</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col span-3">
|
||||
<div class="value margin-bottom-small">
|
||||
<span class="sum" data-ls-bind="{{realtime.current|accessProject}}" data-default="0">0</span>
|
||||
<span class="sum" data-ls-bind="{{realtime.current|accessProject|statsTotal}}" data-default="0">0</span>
|
||||
</div>
|
||||
<div class="unit margin-start-no margin-bottom-small">Connections</div>
|
||||
<div class="chart-bar margin-top-small margin-bottom-small" data-ls-attrs="data-history={{realtime.history|accessProject}}" data-forms-chart-bars="{{realtime.history|accessProject}}"></div>
|
||||
|
|
|
@ -353,13 +353,13 @@ $smtpEnabled = $this->getParam('smtpEnabled', false);
|
|||
data-failure-param-alert-text="Failed to update project users limit"
|
||||
data-failure-param-alert-classname="error">
|
||||
|
||||
<input name="limit" id="users-limit" type="number" data-ls-bind="{{console-project.authLimit}}" data-cast-to="numeric" min="0" />
|
||||
<input name="limit" id="users-limit" type="number" data-ls-bind="{{console-project.authLimit}}" data-cast-to="numeric" min="0" max="<?php echo APP_LIMIT_USERS; ?>" />
|
||||
|
||||
<div class="info row thin margin-bottom margin-top">
|
||||
<div class="col span-1">
|
||||
<i class="icon-info-circled text-sign"></i>
|
||||
</div>
|
||||
<div class="col span-11">This limit will prevent new users from signing up for your project, no matter what auth method has been used. You will still be able to create users and team memberships from your Appwrite console. For an unlimited amount of users, set the limit to 0.</div>
|
||||
<div class="col span-11">This limit will prevent new users from signing up for your project, no matter what auth method has been used. You will still be able to create users and team memberships from your Appwrite console. For an unlimited amount of users, set the limit to 0. Max limit is <?php echo number_format(APP_LIMIT_USERS); ?>.</div>
|
||||
</div>
|
||||
|
||||
<button>Update</button> <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
"appwrite/php-clamav": "1.1.*",
|
||||
"appwrite/php-runtimes": "0.6.*",
|
||||
|
||||
"utopia-php/framework": "0.19.5",
|
||||
"utopia-php/framework": "0.19.*",
|
||||
"utopia-php/logger": "0.1.*",
|
||||
"utopia-php/abuse": "0.7.*",
|
||||
"utopia-php/analytics": "0.2.*",
|
||||
|
@ -73,7 +73,7 @@
|
|||
}
|
||||
],
|
||||
"require-dev": {
|
||||
"appwrite/sdk-generator": "0.17.0",
|
||||
"appwrite/sdk-generator": "0.17.1",
|
||||
"phpunit/phpunit": "9.5.10",
|
||||
"swoole/ide-helper": "4.8.3",
|
||||
"textalk/websocket": "1.5.5",
|
||||
|
|
12
composer.lock
generated
12
composer.lock
generated
|
@ -3077,16 +3077,16 @@
|
|||
},
|
||||
{
|
||||
"name": "appwrite/sdk-generator",
|
||||
"version": "0.17.0",
|
||||
"version": "0.17.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/appwrite/sdk-generator.git",
|
||||
"reference": "a68e072170a81532cfb0ff914864d8f074a73a37"
|
||||
"reference": "3542c6ed0f808b6a9f6735a8aad7ccda961bea29"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/a68e072170a81532cfb0ff914864d8f074a73a37",
|
||||
"reference": "a68e072170a81532cfb0ff914864d8f074a73a37",
|
||||
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/3542c6ed0f808b6a9f6735a8aad7ccda961bea29",
|
||||
"reference": "3542c6ed0f808b6a9f6735a8aad7ccda961bea29",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3120,9 +3120,9 @@
|
|||
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
|
||||
"support": {
|
||||
"issues": "https://github.com/appwrite/sdk-generator/issues",
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.17.0"
|
||||
"source": "https://github.com/appwrite/sdk-generator/tree/0.17.1"
|
||||
},
|
||||
"time": "2022-01-04T09:24:44+00:00"
|
||||
"time": "2022-01-07T12:55:37+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.
|
||||
Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.
|
||||
|
||||
If the request is successful, a session for the user is automatically created.
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
## 3.0.2
|
||||
- String Attribute Type got fixed
|
||||
|
||||
## 3.0.1
|
||||
- Export Query Builder
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1108px" height="839px" viewBox="-0.5 -0.5 1108 839" content="<mxfile host="612c770d-d23c-4897-ac0d-72478d1c5aef" modified="2021-02-22T07:17:54.650Z" agent="5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.53.2 Chrome/87.0.4280.141 Electron/11.2.1 Safari/537.36" etag="sAOb0L0gpVpMeEycjwCe" version="14.2.4" type="embed"><diagram id="WOshqXSVd2VkRfcggtcB" name="Page-1">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</diagram></mxfile>">
|
||||
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1108px" height="839px" viewBox="-0.5 -0.5 1108 839" content="<mxfile><diagram id="WOshqXSVd2VkRfcggtcB" name="Page-1">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</diagram></mxfile>">
|
||||
<defs/>
|
||||
<g>
|
||||
<path d="M 77 40 L 77 80 L 397 80 L 397 113.63" fill="none" stroke="#23445d" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
|
@ -201,13 +201,13 @@
|
|||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 520px; margin-left: 608px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Pub/Sub (Redis)
|
||||
Queue (Redis)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="667" y="524" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Pub/Sub (Redis)
|
||||
Queue (Redis)
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -239,13 +239,13 @@
|
|||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 590px; margin-left: 468px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Database (MariaDB)
|
||||
Database
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="527" y="594" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Database (MariaDB)
|
||||
Database
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -404,22 +404,20 @@
|
|||
</g>
|
||||
<path d="M 437 720 L 437 820 L 297 820 L 297 590 L 460.63 590" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 465.88 590 L 458.88 593.5 L 460.63 590 L 458.88 586.5 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 437 680 L 437 640 L 667 640 L 667 546.37" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 667 541.12 L 670.5 548.12 L 667 546.37 L 663.5 548.12 Z" fill="#0e8088" stroke="#0e8088" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<rect x="397" y="680" width="80" height="40" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/>
|
||||
<rect x="397" y="680" width="80" height="40" fill="#b1ddf0" stroke="#10739e" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)">
|
||||
<switch>
|
||||
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 700px; margin-left: 398px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Deletes
|
||||
Maintenance
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="437" y="704" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Deletes
|
||||
Maintenance
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -450,9 +448,7 @@
|
|||
<path d="M 347 541.12 L 350.5 548.12 L 347 546.37 L 343.5 548.12 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 347 720 L 347 740 L 207 740 L 207 546.37" fill="none" stroke="#9673a6" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 207 541.12 L 210.5 548.12 L 207 546.37 L 203.5 548.12 Z" fill="#9673a6" stroke="#9673a6" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 347 680 L 347 640 L 667 640 L 667 546.37" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 667 541.12 L 670.5 548.12 L 667 546.37 L 663.5 548.12 Z" fill="#0e8088" stroke="#0e8088" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<rect x="307" y="680" width="80" height="40" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/>
|
||||
<rect x="307" y="680" width="80" height="40" fill="#b1ddf0" stroke="#10739e" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)">
|
||||
<switch>
|
||||
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
|
@ -530,8 +526,6 @@
|
|||
</g>
|
||||
<path d="M 707 720 L 707 820 L 297 820 L 297 590 L 460.63 590" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 465.88 590 L 458.88 593.5 L 460.63 590 L 458.88 586.5 Z" fill="#d6b656" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 707 680 L 707 640 L 667 640 L 667 546.37" fill="none" stroke="#d4d4d4" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 667 541.12 L 670.5 548.12 L 667 546.37 L 663.5 548.12 Z" fill="#d4d4d4" stroke="#d4d4d4" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<path d="M 707 680 L 707 640 L 667 640 L 667 546.37" fill="none" stroke="#0e8088" stroke-miterlimit="10" pointer-events="stroke"/>
|
||||
<path d="M 667 541.12 L 670.5 548.12 L 667 546.37 L 663.5 548.12 Z" fill="#0e8088" stroke="#0e8088" stroke-miterlimit="10" pointer-events="all"/>
|
||||
<rect x="667" y="680" width="80" height="40" fill="#b0e3e6" stroke="#0e8088" pointer-events="all"/>
|
||||
|
@ -541,13 +535,13 @@
|
|||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 700px; margin-left: 668px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Tasks
|
||||
Database
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="707" y="704" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Tasks
|
||||
Database
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -678,13 +672,13 @@
|
|||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 700px; margin-left: 1028px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Scheduler
|
||||
Deletes
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="1067" y="704" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Scheduler
|
||||
Deletes
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -714,13 +708,13 @@
|
|||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 520px; margin-left: 748px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Antivirus (ClamAV)
|
||||
AntiVirus (ClamAV)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="807" y="524" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Antivirus (ClamAV)
|
||||
AntiVirus (ClamAV)
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
|
@ -743,6 +737,23 @@
|
|||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
<rect x="217" y="680" width="80" height="40" fill="#b1ddf0" stroke="#10739e" pointer-events="all"/>
|
||||
<g transform="translate(-0.5 -0.5)">
|
||||
<switch>
|
||||
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 700px; margin-left: 218px;">
|
||||
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
|
||||
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
|
||||
Scheduler
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</foreignObject>
|
||||
<text x="257" y="704" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
|
||||
Scheduler
|
||||
</text>
|
||||
</switch>
|
||||
</g>
|
||||
</g>
|
||||
<switch>
|
||||
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>
|
||||
|
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
931
public/dist/scripts/app-all.js
vendored
931
public/dist/scripts/app-all.js
vendored
File diff suppressed because it is too large
Load diff
926
public/dist/scripts/app-dep.js
vendored
926
public/dist/scripts/app-dep.js
vendored
File diff suppressed because it is too large
Load diff
5
public/dist/scripts/app.js
vendored
5
public/dist/scripts/app.js
vendored
|
@ -668,7 +668,8 @@ let units=["kB","MB","GB","TB","PB","EB","ZB","YB"];let u=-1;do{$value/=thresh;+
|
|||
let thresh=1000;if(Math.abs($value)<thresh){return'B';}
|
||||
let units=["kB","MB","GB","TB","PB","EB","ZB","YB"];let u=-1;do{$value/=thresh;++u;}while(Math.abs($value)>=thresh&&u<units.length-1);return units[u];}).add("statsTotal",function($value){if(!$value){return 0;}
|
||||
$value=abbreviate($value,0,false,false);return $value??"N/A";}).add("statsGetLast",function($value){if(!$value||$value.length<1){return 0;}
|
||||
return $value[$value.length-1].value;}).add("isEmpty",function($value){return(!!$value);}).add("isEmptyObject",function($value){return((Object.keys($value).length===0&&$value.constructor===Object)||$value.length===0)}).add("activeDomainsCount",function($value){let result=[];if(Array.isArray($value)){result=$value.filter(function(node){return(node.verification&&node.certificateId);});}
|
||||
return $value[$value.length-1].value;}).add("statsGetSum",function($value){if(!$value||$value.length<1){return 0;}
|
||||
return $value.reduce(function(value,object){return value+object.value},0);}).add("isEmpty",function($value){return(!!$value);}).add("isEmptyObject",function($value){return((Object.keys($value).length===0&&$value.constructor===Object)||$value.length===0)}).add("activeDomainsCount",function($value){let result=[];if(Array.isArray($value)){result=$value.filter(function(node){return(node.verification&&node.certificateId);});}
|
||||
return result.length;}).add("documentAction",function(container){let collection=container.get('project-collection');let document=container.get('project-document');if(collection&&document&&!document.$id){return'database.createDocument';}
|
||||
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];}
|
||||
|
@ -811,7 +812,7 @@ position=direction;let current=Math.ceil(direction/window.innerHeight);element.s
|
|||
else{element.classList.remove('scroll-end')}};window.addEventListener('scroll',check,false);window.addEventListener('resize',check,false);check();}});})(window);(function(window){window.ls.container.get("view").add({selector:"data-setup",controller:function(element,console,form,alerts,router){element.addEventListener("submit",function(event){event.preventDefault();let loaderId=alerts.add({text:'Creating new project...',class:""},0);let formData=form.toJson(element);formData["name"]=formData["name"]||(element.dataset["defaultName"]||"");console.teams.create('unique()',formData["name"]||"").then(function(data){let team=data["$id"];formData=JSON.parse(JSON.stringify(formData).replace(new RegExp("{{teamId}}","g"),team));console.projects.create(formData["projectId"],formData["name"],team).then(function(project){alerts.remove(loaderId);window.location.href="/console/home?project="+project["$id"];},function(){throw new Error("Failed to setup project");});},function(){throw new Error("Setup failed creating project team");});});}});})(window);(function(window){window.ls.container.get("view").add({selector:"data-switch",controller:function(element,router,document){let check=function(c){if(!element.value){return;}
|
||||
if(element.value===router.params.project){return;}
|
||||
return router.change("/console/home?project="+element.value);};element.addEventListener("change",function(){check();});}});})(window);(function(window){window.ls.container.get("view").add({selector:"data-general-theme",controller:function(element,router,document){let toggle=function(c){if(document.body.classList.contains('theme-light')){document.body.classList.remove('theme-light');document.body.classList.add('theme-dark');window.localStorage.setItem('user-theme','theme-dark')}
|
||||
else{document.body.classList.remove('theme-dark');document.body.classList.add('theme-light');window.localStorage.setItem('user-theme','theme-light')}};element.addEventListener("click",function(){toggle();});}});})(window);(function(window){window.ls.container.get("view").add({selector:"data-version",controller:function(alerts,env,cookie){let cookieName="version-update-"+env.VERSION.replace(/\./g,"_");if(!cookie.get(cookieName)){var xhr=new XMLHttpRequest();xhr.open('GET','/console/version',true);xhr.onload=function(){if(this.readyState==4&&this.status==200){let data=JSON.parse(this.responseText);let text='Appwrite version '+data.version+' is available, check the';if(isNewerVersion(env.VERSION,data.version)){alerts.add({text:text,class:"success",link:"https://github.com/appwrite/appwrite/releases",label:'release notes',callback:function(){cookie.set(cookieName,"true",365*10);}},0);}}};xhr.send(null);function isNewerVersion(oldVer,newVer){const oldParts=oldVer.split('.')
|
||||
else{document.body.classList.remove('theme-dark');document.body.classList.add('theme-light');window.localStorage.setItem('user-theme','theme-light')}};element.addEventListener("click",function(){toggle();});}});})(window);(function(window){window.ls.container.get("view").add({selector:"data-version",controller:function(alerts,env,cookie){let cookieName="version-update-"+env.VERSION.replace(/\./g,"_");if(!cookie.get(cookieName)){var xhr=new XMLHttpRequest();xhr.open('GET','https://appwrite.io/version',true);xhr.onload=function(){if(this.readyState==4&&this.status==200){let data=JSON.parse(this.responseText);let text='Appwrite version '+data.version+' is available, check the';if(isNewerVersion(env.VERSION,data.version)){alerts.add({text:text,class:"success",link:"https://github.com/appwrite/appwrite/releases",label:'release notes',callback:function(){cookie.set(cookieName,"true",365*10);}},0);}}};xhr.send(null);function isNewerVersion(oldVer,newVer){const oldParts=oldVer.split('.')
|
||||
const newParts=newVer.split('.')
|
||||
for(var i=0;i<newParts.length;i++){const a=parseInt(newParts[i])||0
|
||||
const b=parseInt(oldParts[i])||0
|
||||
|
|
|
@ -183,12 +183,12 @@ window.ls.filter
|
|||
|
||||
return $value[$value.length - 1].value;
|
||||
})
|
||||
.add("statsGetLast", function ($value) {
|
||||
.add("statsGetSum", function ($value) {
|
||||
if (!$value || $value.length < 1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return $value[$value.length - 1].value;
|
||||
return $value.reduce(function(value, object) { return value + object.value }, 0);
|
||||
})
|
||||
.add("isEmpty", function ($value) {
|
||||
return (!!$value);
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
if (!cookie.get(cookieName)) {
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', '/console/version', true);
|
||||
xhr.open('GET', 'https://appwrite.io/version', true);
|
||||
|
||||
xhr.onload = function () {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
|
|
|
@ -67,6 +67,7 @@ abstract class Migration
|
|||
'0.11.0' => 'V10',
|
||||
'0.12.0' => 'V10',
|
||||
'0.12.0' => 'V11',
|
||||
'0.12.1' => 'V11',
|
||||
'0.13.0' => 'V11',
|
||||
];
|
||||
|
||||
|
|
|
@ -141,7 +141,13 @@ class V12 extends Filter
|
|||
if(isset($usedOperator)) {
|
||||
[ $attributeKey, $filterValue ] = \explode($usedOperator, $filter);
|
||||
|
||||
$filterValue = \is_numeric($filterValue) ? $filterValue : '"' . $filterValue . '"';
|
||||
if($filterValue === 'true' || $filterValue === 'false') {
|
||||
// Let's keep it at true and false string, but without "" around
|
||||
// No action needed
|
||||
} else {
|
||||
$filterValue = \is_numeric($filterValue) ? $filterValue : '"' . $filterValue . '"';
|
||||
}
|
||||
|
||||
$query = $attributeKey . '.' . $operators[$usedOperator] . '(' . $filterValue . ')';
|
||||
\array_push($queries, $query);
|
||||
}
|
||||
|
@ -152,7 +158,6 @@ class V12 extends Filter
|
|||
unset($content['search']);
|
||||
|
||||
unset($content['filters']);
|
||||
unset($content['search']);
|
||||
$content['queries'] = $queries;
|
||||
|
||||
return $content;
|
||||
|
|
|
@ -13,7 +13,7 @@ class AttributeString extends Attribute
|
|||
|
||||
$this
|
||||
->addRule('size', [
|
||||
'type' => self::TYPE_STRING,
|
||||
'type' => self::TYPE_INTEGER,
|
||||
'description' => 'Attribute size.',
|
||||
'default' => 0,
|
||||
'example' => 128,
|
||||
|
@ -52,4 +52,4 @@ class AttributeString extends Attribute
|
|||
{
|
||||
return Response::MODEL_ATTRIBUTE_STRING;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue