1
0
Fork 0
mirror of synced 2024-05-20 20:52:36 +12:00

Merge branch 'master' of https://github.com/appwrite/appwrite into feat-database-indexing

This commit is contained in:
Torsten Dittmann 2021-11-17 11:39:03 +01:00
commit d099b0133c
25 changed files with 16780 additions and 17977 deletions

View file

@ -37,6 +37,7 @@ body:
label: "🎲 Appwrite version" label: "🎲 Appwrite version"
description: "What version of Appwrite are you running?" description: "What version of Appwrite are you running?"
options: options:
- Version 0.11.x
- Version 0.10.x - Version 0.10.x
- Version 0.9.x - Version 0.9.x
- Version 0.8.x - Version 0.8.x

View file

@ -102,7 +102,6 @@ Getting started with Appwrite is as easy as creating a new project, choosing you
* [Getting Started for Android](https://appwrite.io/docs/getting-started-for-android) * [Getting Started for Android](https://appwrite.io/docs/getting-started-for-android)
* [Getting Started for Server](https://appwrite.io/docs/getting-started-for-server) * [Getting Started for Server](https://appwrite.io/docs/getting-started-for-server)
* [Getting Started for CLI](https://appwrite.io/docs/command-line) * [Getting Started for CLI](https://appwrite.io/docs/command-line)
* Getting Started for iOS (Coming soon...)
### Services ### Services
@ -139,8 +138,9 @@ Below is a list of currently supported platforms and languages. If you wish to h
* ✅   [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Experimental** (Maintained by the Appwrite Team) * ✅   [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Experimental** (Maintained by the Appwrite Team)
#### Community #### Community
* ✅   [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (Maintained by [Michael Gangolf](https://github.com/m1ga/)) * ✅   [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (Maintained by [Michael Gangolf](https://github.com/m1ga/))
* ✅   [Godot Engine](https://github.com/GodotNuts/appwrite-sdk) (Maintained by [fenix-hub @GodotNuts](https://github.com/fenix-hub))
Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)! Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)!
## Contributing ## Contributing

View file

@ -1,24 +1,24 @@
{ {
"settings.inspire": "\"هنر خردمند بودن، هنر دانستن چیزی است که باید از آن غافل شد.\"", "settings.inspire": "\"هنر خردمند بودن این است که بدانید چه چیزی را نادیده بگیرید.\"",
"settings.locale": "fa", "settings.locale": "fa",
"settings.direction": "rtl", "settings.direction": "rtl",
"emails.sender": "تیم %s", "emails.sender": "تیم %s",
"emails.verification.subject": "تأیید حساب", "emails.verification.subject": "تأیید حساب",
"emails.verification.hello": "سلام {{name}}", "emails.verification.hello": "سلام {{name}}",
"emails.verification.body": "برای تأیید حساب‌تان پیوند زیر را دنبال کنید.", "emails.verification.body": "برای تأیید ایمیل‌تان پیوند زیر را دنبال کنید.",
"emails.verification.footer": "اگر شما درخواست تأیید حساب نداده‌اید، می‌توانید این ایمیل را نادیده بگیرید.", "emails.verification.footer": "اگر شما درخواست تأیید حساب نداده‌اید، می‌توانید این پیام را نادیده بگیرید.",
"emails.verification.thanks": "سپاس فراوان", "emails.verification.thanks": "سپاس فراوان",
"emails.verification.signature": "تیم {{name}}", "emails.verification.signature": "تیم {{name}}",
"emails.magicSession.subject": "ورود به حساب کاربری", "emails.magicSession.subject": "ورود به حساب کاربری",
"emails.magicSession.hello": "سلام،", "emails.magicSession.hello": "سلام،",
"emails.magicSession.body": "برای ورود به حساب‌تان پیوند زیر را دنبال کنید.", "emails.magicSession.body": "برای ورود به حساب‌تان پیوند زیر را دنبال کنید.",
"emails.magicSession.footer": "اگر شما درخواست ورود به حساب کاربری نداد‌ه‌اید، می‌توانید این ایمیل را نادیده بگیرید.", "emails.magicSession.footer": "اگر شما درخواست ورود به حساب کاربری با استفاده از این ایمیل را نداد‌ه‌اید، می‌توانید این پیام را نادیده بگیرید.",
"emails.magicSession.thanks": "سپاس فراوان", "emails.magicSession.thanks": "سپاس فراوان",
"emails.magicSession.signature": "تیم {{name}}", "emails.magicSession.signature": "تیم {{name}}",
"emails.recovery.subject": "بازیابی گذرواژه", "emails.recovery.subject": "بازیابی گذرواژه",
"emails.recovery.hello": "سلام {{name}}", "emails.recovery.hello": "سلام {{name}}",
"emails.recovery.body": "برای بازیابی گذرواژه‌تان پیوند زیر را دنبال کنید.", "emails.recovery.body": "برای بازیابی گذرواژه‌تان پیوند زیر را دنبال کنید.",
"emails.recovery.footer": "اگر شما درخواست بازیابی گذرواژه نداده‌اید، می‌توانید این ایمیل را نادیده بگیرید.", "emails.recovery.footer": "اگر شما درخواست بازیابی گذرواژه نداده‌اید، می‌توانید این پیام را نادیده بگیرید.",
"emails.recovery.thanks": "سپاس فراوان", "emails.recovery.thanks": "سپاس فراوان",
"emails.recovery.signature": "تیم {{name}}", "emails.recovery.signature": "تیم {{name}}",
"emails.invitation.subject": "دعوت به تیم %s در %s", "emails.invitation.subject": "دعوت به تیم %s در %s",

View file

@ -28,205 +28,205 @@
"emails.invitation.thanks": "Go raibh maith agat", "emails.invitation.thanks": "Go raibh maith agat",
"emails.invitation.signature": "{{project}} foireann", "emails.invitation.signature": "{{project}} foireann",
"locale.country.unknown": "Neamhaithnid", "locale.country.unknown": "Neamhaithnid",
"countries.af": "Afghanistan", "countries.af": "An Afganastáin",
"countries.ao": "Angola", "countries.ao": "Angóla",
"countries.al": "Albania", "countries.al": "Albáin",
"countries.ad": "Andorra", "countries.ad": "Andóra",
"countries.ae": "United Arab Emirates", "countries.ae": "Aontas na nÉimíríochtaí Arabacha",
"countries.ar": "Argentina", "countries.ar": "Airgintín",
"countries.am": "Armenia", "countries.am": "Airméin",
"countries.ag": "Antigua and Barbuda", "countries.ag": "Antigua agus Barbúda",
"countries.au": "Australia", "countries.au": "Astráil",
"countries.at": "Austria", "countries.at": "Ostair",
"countries.az": "Azerbaijan", "countries.az": "Asarbaiseáin",
"countries.bi": "Burundi", "countries.bi": "An Bhurúin",
"countries.be": "Belgium", "countries.be": "An Bheilg",
"countries.bj": "Benin", "countries.bj": "Beinin",
"countries.bf": "Burkina Faso", "countries.bf": "Buircíne Fasó",
"countries.bd": "Bangladesh", "countries.bd": "An Bhanglaidéis",
"countries.bg": "Bulgaria", "countries.bg": "An Bhulgáir",
"countries.bh": "Bahrain", "countries.bh": "Bairéin",
"countries.bs": "Bahamas", "countries.bs": "Na Bahámaí",
"countries.ba": "Bosnia and Herzegovina", "countries.ba": "An Bhoisnia agus an Heirseagaivéin",
"countries.by": "Belarus", "countries.by": "An Bhealarúis",
"countries.bz": "Belize", "countries.bz": "An Bheilís",
"countries.bo": "Bolivia", "countries.bo": "An Bholaiv",
"countries.br": "Brazil", "countries.br": "An Bhrasaíl",
"countries.bb": "Barbados", "countries.bb": "Barbadós",
"countries.bn": "Brunei", "countries.bn": "Brúiné",
"countries.bt": "Bhutan", "countries.bt": "An Bhútáin",
"countries.bw": "Botswana", "countries.bw": "An Bhotsuáin",
"countries.cf": "Central African Republic", "countries.cf": "Poblacht na hAfraice Láir",
"countries.ca": "Canada", "countries.ca": "Ceanada",
"countries.ch": "Switzerland", "countries.ch": "An Eilvéis",
"countries.cl": "Chile", "countries.cl": "An tSile",
"countries.cn": "China", "countries.cn": "An tSín",
"countries.ci": "Ivory Coast", "countries.ci": "Poblacht Côte dIvoire",
"countries.cm": "Cameroon", "countries.cm": "Camarún",
"countries.cd": "DR Congo", "countries.cd": "Poblacht Dhaonlathach an Chongó",
"countries.cg": "Republic of the Congo", "countries.cg": "Poblacht an Chongó",
"countries.co": "Colombia", "countries.co": "An Cholóim",
"countries.km": "Comoros", "countries.km": "Oileáin Chomóra",
"countries.cv": "Cape Verde", "countries.cv": "Cape Verde",
"countries.cr": "Costa Rica", "countries.cr": "Cósta Ríce",
"countries.cu": "Cuba", "countries.cu": "Cúba",
"countries.cy": "Cyprus", "countries.cy": "An Chipir",
"countries.cz": "Czechia", "countries.cz": "An tSeicia",
"countries.de": "Germany", "countries.de": "An Ghearmáin",
"countries.dj": "Djibouti", "countries.dj": "Djibouti",
"countries.dm": "Dominica", "countries.dm": "Doiminice",
"countries.dk": "Denmark", "countries.dk": "An Danmhairg",
"countries.do": "Dominican Republic", "countries.do": "An Phoblacht Dhoiminiceach",
"countries.dz": "Algeria", "countries.dz": "An Ailgéir",
"countries.ec": "Ecuador", "countries.ec": "Eacuadór",
"countries.eg": "Egypt", "countries.eg": "An Éigipt",
"countries.er": "Eritrea", "countries.er": "An Eiritré",
"countries.es": "Spain", "countries.es": "An Spáinn",
"countries.ee": "Estonia", "countries.ee": "An Eastóin",
"countries.et": "Ethiopia", "countries.et": "An Aetóip",
"countries.fi": "Finland", "countries.fi": "An Fhionlainn",
"countries.fj": "Fiji", "countries.fj": "Fidsí",
"countries.fr": "France", "countries.fr": "An Fhrainc",
"countries.fm": "Micronesia", "countries.fm": "An Mhicrinéis",
"countries.ga": "Gabon", "countries.ga": "An Ghabúin",
"countries.gb": "United Kingdom", "countries.gb": "An Ríocht Aontaithe",
"countries.ge": "Georgia", "countries.ge": "An tSeoirsia",
"countries.gh": "Ghana", "countries.gh": "Gána",
"countries.gn": "Guinea", "countries.gn": "An Ghuine",
"countries.gm": "Gambia", "countries.gm": "An Ghaimbia",
"countries.gw": "Guinea-Bissau", "countries.gw": "Guine Bissau",
"countries.gq": "Equatorial Guinea", "countries.gq": "An Ghuine Mheánchiorclach",
"countries.gr": "Greece", "countries.gr": "An Ghréig",
"countries.gd": "Grenada", "countries.gd": "Greanáda",
"countries.gt": "Guatemala", "countries.gt": "Guatamala",
"countries.gy": "Guyana", "countries.gy": "An Ghuáin",
"countries.hn": "Honduras", "countries.hn": "Hondúras",
"countries.hr": "Croatia", "countries.hr": "An Chróit",
"countries.ht": "Haiti", "countries.ht": "Háítí",
"countries.hu": "Hungary", "countries.hu": "An Ungáir",
"countries.id": "Indonesia", "countries.id": "An Indinéis",
"countries.in": "India", "countries.in": "India",
"countries.ie": "Ireland", "countries.ie": "Éire",
"countries.ir": "Iran", "countries.ir": "An Iaráin",
"countries.iq": "Iraq", "countries.iq": "An Iaráic",
"countries.is": "Iceland", "countries.is": "An Íoslainn",
"countries.il": "Israel", "countries.il": "Iosrael",
"countries.it": "Italy", "countries.it": "An Iodáil",
"countries.jm": "Jamaica", "countries.jm": "Iamáice",
"countries.jo": "Jordan", "countries.jo": "An Iordáin",
"countries.jp": "Japan", "countries.jp": "An tSeapáin",
"countries.kz": "Kazakhstan", "countries.kz": "An Chasacstáin",
"countries.ke": "Kenya", "countries.ke": "An Chéinia",
"countries.kg": "Kyrgyzstan", "countries.kg": "An Chirgeastáin",
"countries.kh": "Cambodia", "countries.kh": "An Chambóid",
"countries.ki": "Kiribati", "countries.ki": "Ciribeas",
"countries.kn": "Saint Kitts and Nevis", "countries.kn": "San Críostóir-Nimheas",
"countries.kr": "South Korea", "countries.kr": "An Chóiré Theas",
"countries.kw": "Kuwait", "countries.kw": "Cuáit",
"countries.la": "Laos", "countries.la": "Laos",
"countries.lb": "Lebanon", "countries.lb": "An Liobáin",
"countries.lr": "Liberia", "countries.lr": "An Libéir",
"countries.ly": "Libya", "countries.ly": "An Libia",
"countries.lc": "Saint Lucia", "countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein", "countries.li": "Lichtinstéin",
"countries.lk": "Sri Lanka", "countries.lk": "Srí Lanca",
"countries.ls": "Lesotho", "countries.ls": "Leosóta",
"countries.lt": "Lithuania", "countries.lt": "An Liotuáin",
"countries.lu": "Luxembourg", "countries.lu": "Lucsamburg",
"countries.lv": "Latvia", "countries.lv": "An Laitvia",
"countries.ma": "Morocco", "countries.ma": "Maracó",
"countries.mc": "Monaco", "countries.mc": "Monacó",
"countries.md": "Moldova", "countries.md": "An Mholdóiv",
"countries.mg": "Madagascar", "countries.mg": "Madagascar",
"countries.mv": "Maldives", "countries.mv": "Oileáin Mhaildíve",
"countries.mx": "Mexico", "countries.mx": "Meicsiceo",
"countries.mh": "Marshall Islands", "countries.mh": "Oileáin Marshall",
"countries.mk": "Macedonia", "countries.mk": "An Mhacadóin",
"countries.ml": "Mali", "countries.ml": "Mailí",
"countries.mt": "Malta", "countries.mt": "Málta",
"countries.mm": "Myanmar", "countries.mm": "Maenmar",
"countries.me": "Montenegro", "countries.me": "Montainéagró",
"countries.mn": "Mongolia", "countries.mn": "An Mhongóil",
"countries.mz": "Mozambique", "countries.mz": "Mósaimbíc",
"countries.mr": "Mauritania", "countries.mr": "An Mháratáin",
"countries.mu": "Mauritius", "countries.mu": "Oileán Mhuirís",
"countries.mw": "Malawi", "countries.mw": "Malávach",
"countries.my": "Malaysia", "countries.my": "An Mhalaeisia",
"countries.na": "Namibia", "countries.na": "An Namaib",
"countries.ne": "Niger", "countries.ne": "Niger",
"countries.ng": "Nigeria", "countries.ng": "An Nigéir",
"countries.ni": "Nicaragua", "countries.ni": "Nicearagua",
"countries.nl": "Netherlands", "countries.nl": "An Ísiltír",
"countries.no": "Norway", "countries.no": "An Iorua",
"countries.np": "Nepal", "countries.np": "Neipeal",
"countries.nr": "Nauru", "countries.nr": "Nárú",
"countries.nz": "New Zealand", "countries.nz": "An Nua-Shéalainn",
"countries.om": "Oman", "countries.om": "Óman",
"countries.pk": "Pakistan", "countries.pk": "An Phacastáin",
"countries.pa": "Panama", "countries.pa": "Panama",
"countries.pe": "Peru", "countries.pe": "Peiriú",
"countries.ph": "Philippines", "countries.ph": "Na hOileáin Fhilipíneacha",
"countries.pw": "Palau", "countries.pw": "Oileáin Palau",
"countries.pg": "Papua New Guinea", "countries.pg": "Nua-Ghuine Phapua",
"countries.pl": "Poland", "countries.pl": "An Pholainn",
"countries.kp": "North Korea", "countries.kp": "An Chóiré Thuaidh",
"countries.pt": "Portugal", "countries.pt": "An Phortaingéil",
"countries.py": "Paraguay", "countries.py": "Paragua",
"countries.qa": "Qatar", "countries.qa": "Catar",
"countries.ro": "Romania", "countries.ro": "An Rómáin",
"countries.ru": "Russia", "countries.ru": "An Rúis",
"countries.rw": "Rwanda", "countries.rw": "Ruanda",
"countries.sa": "Saudi Arabia", "countries.sa": "An Araib Shádach",
"countries.sd": "Sudan", "countries.sd": "An tSúdáin",
"countries.sn": "Senegal", "countries.sn": "An tSeineagáil",
"countries.sg": "Singapore", "countries.sg": "Singeapór",
"countries.sb": "Solomon Islands", "countries.sb": "Oileáin Sholaimh",
"countries.sl": "Sierra Leone", "countries.sl": "Siarra Leon",
"countries.sv": "El Salvador", "countries.sv": "An tSalvadóir",
"countries.sm": "San Marino", "countries.sm": "San Mairíne",
"countries.so": "Somalia", "countries.so": "An tSomáil",
"countries.rs": "Serbia", "countries.rs": "An tSeirbia",
"countries.ss": "South Sudan", "countries.ss": "An tSúdáin Theas",
"countries.st": "São Tomé and Príncipe", "countries.st": "São Tomé agus Príncipe",
"countries.sr": "Suriname", "countries.sr": "Suranam",
"countries.sk": "Slovakia", "countries.sk": "An tSlóvaic",
"countries.si": "Slovenia", "countries.si": "An tSlóivéin",
"countries.se": "Sweden", "countries.se": "An tSualainn",
"countries.sz": "Swaziland", "countries.sz": "An tSuasalainn",
"countries.sc": "Seychelles", "countries.sc": "Na Séiséil",
"countries.sy": "Syria", "countries.sy": "An tSiria",
"countries.td": "Chad", "countries.td": "Sead",
"countries.tg": "Togo", "countries.tg": "Tóga",
"countries.th": "Thailand", "countries.th": "An Téalainn",
"countries.tj": "Tajikistan", "countries.tj": "An Táidsíceastáin",
"countries.tm": "Turkmenistan", "countries.tm": "An Tuircméanastáin",
"countries.tl": "Timor-Leste", "countries.tl": "Tíomór Thoir",
"countries.to": "Tonga", "countries.to": "Tonga",
"countries.tt": "Trinidad and Tobago", "countries.tt": "Oileán na Tríonóide agus Tobága",
"countries.tn": "Tunisia", "countries.tn": "An Túinéis",
"countries.tr": "Turkey", "countries.tr": "An Tuirc",
"countries.tv": "Tuvalu", "countries.tv": "Túvalú",
"countries.tz": "Tanzania", "countries.tz": "An Tansáin",
"countries.ug": "Uganda", "countries.ug": "Uganda",
"countries.ua": "Ukraine", "countries.ua": "An Úcráin",
"countries.uy": "Uruguay", "countries.uy": "Uragua",
"countries.us": "United States", "countries.us": "Na Stáit Aontaithe",
"countries.uz": "Uzbekistan", "countries.uz": "An Úisbéiceastáin",
"countries.va": "Vatican City", "countries.va": "Cathair na Vatacáine",
"countries.vc": "Saint Vincent and the Grenadines", "countries.vc": "San Uinseann agus na Greanáidíní",
"countries.ve": "Venezuela", "countries.ve": "Veiniséala",
"countries.vn": "Vietnam", "countries.vn": "Vítneam",
"countries.vu": "Vanuatu", "countries.vu": "Vanuatú",
"countries.ws": "Samoa", "countries.ws": "Samó",
"countries.ye": "Yemen", "countries.ye": "Éimin",
"countries.za": "South Africa", "countries.za": "An Afraic Theas",
"countries.zm": "Zambia", "countries.zm": "An tSaimbia",
"countries.zw": "Zimbabwe", "countries.zw": "An tSiombáib",
"continents.af": "Africa", "continents.af": "An Afraic",
"continents.an": "Antarctica", "continents.an": "Antartaice",
"continents.as": "Asia", "continents.as": "An Áise",
"continents.eu": "Europe", "continents.eu": "An Eoraip",
"continents.na": "North America", "continents.na": "Meiriceá Thuaidh",
"continents.oc": "Oceania", "continents.oc": "An Aigéine",
"continents.sa": "South America" "continents.sa": "Meiriceá Theas"
} }

View file

@ -3,30 +3,30 @@
"settings.locale": "jv", "settings.locale": "jv",
"settings.direction": "ltr", "settings.direction": "ltr",
"emails.sender": "Tim %s", "emails.sender": "Tim %s",
"emails.verification.subject": "", "emails.verification.subject": "Verifikasi Akun",
"emails.verification.hello": "", "emails.verification.hello": "Hai {{name}}",
"emails.verification.body": "", "emails.verification.body": "Klik link iki kanggo verifikasi alamat email sampeyan.",
"emails.verification.footer": "", "emails.verification.footer": "Yen sampeyan ora njaluk verifikasi alamat iki, sampeyan iso nglirwakake pesen iki.",
"emails.verification.thanks": "", "emails.verification.thanks": "Matur nuwun",
"emails.verification.signature": "", "emails.verification.signature": "Tim {{project}}",
"emails.magicSession.subject": "", "emails.magicSession.subject": "Masuk",
"emails.magicSession.hello": "", "emails.magicSession.hello": "Hai,",
"emails.magicSession.body": "", "emails.magicSession.body": "Klik link iki kanggo masuk.",
"emails.magicSession.footer": "", "emails.magicSession.footer": "Yen sampeyan ora njaluk masuk nggunakake alamat email iki, sampeyan iso nglirwakake pesen iki.",
"emails.magicSession.thanks": "", "emails.magicSession.thanks": "Matur nuwun",
"emails.magicSession.signature": "", "emails.magicSession.signature": "Tim {{project}}",
"emails.recovery.subject": "", "emails.recovery.subject": "Setel ulang sandi",
"emails.recovery.hello": "", "emails.recovery.hello": "Halo {{name}}",
"emails.recovery.body": "", "emails.recovery.body": "Klik link iki kanggo setel ulang sandi {{project}}.",
"emails.recovery.footer": "", "emails.recovery.footer": "Yen sampeyan ora njaluk setel ulang sandi, sampeyan iso nglirwakake pesen iki.",
"emails.recovery.thanks": "", "emails.recovery.thanks": "Matur nuwun",
"emails.recovery.signature": "", "emails.recovery.signature": "Tim {{project}}",
"emails.invitation.subject": "", "emails.invitation.subject": "Undangan ke Tim %s di %s",
"emails.invitation.hello": "", "emails.invitation.hello": "Halo",
"emails.invitation.body": "", "emails.invitation.body": "Email iki dikirim menyang sampeyan amarga {{owner}} pengin ngajak sampeyan dadi anggota tim {{team}} di {{project}}.",
"emails.invitation.footer": "", "emails.invitation.footer": "Yen sampeyan ora tertarik, sampeyan iso nglirwakake pesen iki.",
"emails.invitation.thanks": "", "emails.invitation.thanks": "Matur nuwun",
"emails.invitation.signature": "", "emails.invitation.signature": "Tim {{project}}",
"locale.country.unknown": "Ora dingerteni", "locale.country.unknown": "Ora dingerteni",
"countries.af": "Afghanistan", "countries.af": "Afghanistan",
"countries.ao": "Angola", "countries.ao": "Angola",

View file

@ -3,30 +3,30 @@
"settings.locale": "mr", "settings.locale": "mr",
"settings.direction": "ltr", "settings.direction": "ltr",
"emails.sender": "%s टीम", "emails.sender": "%s टीम",
"emails.verification.subject": "", "emails.verification.subject": "खाते सत्यापन",
"emails.verification.hello": "", "emails.verification.hello": "नमस्कार {{name}}",
"emails.verification.body": "", "emails.verification.body": "आपला ईमेल पत्ता सत्यापित करण्यासाठी या दुव्याचे अनुसरण करा.",
"emails.verification.footer": "", "emails.verification.footer": "आपण या पत्त्याची पडताळणी करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"emails.verification.thanks": "", "emails.verification.thanks": "धन्यवाद",
"emails.verification.signature": "", "emails.verification.signature": "{{project}} संघ",
"emails.magicSession.subject": "", "emails.magicSession.subject": "लॉगिन करा",
"emails.magicSession.hello": "", "emails.magicSession.hello": "नमस्कार ,",
"emails.magicSession.body": "", "emails.magicSession.body": "लॉगिन करण्यासाठी या लिंकचे अनुसरण करा.",
"emails.magicSession.footer": "", "emails.magicSession.footer": "आपण या ईमेलचा वापर करून लॉगिन करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"emails.magicSession.thanks": "", "emails.magicSession.thanks": "धन्यवाद",
"emails.magicSession.signature": "", "emails.magicSession.signature": "{{project}} संघ",
"emails.recovery.subject": "", "emails.recovery.subject": "पासवर्ड रीसेट",
"emails.recovery.hello": "", "emails.recovery.hello": "नमस्कार {{name}}",
"emails.recovery.body": "", "emails.recovery.body": "आपला {{project}}चे पासवर्ड रीसेट करण्यासाठी या लिंकचे अनुसरण करा",
"emails.recovery.footer": "", "emails.recovery.footer": "आपण आपला पासवर्ड रीसेट करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"emails.recovery.thanks": "", "emails.recovery.thanks": "धन्यवाद",
"emails.recovery.signature": "", "emails.recovery.signature": "{{project}} संघ",
"emails.invitation.subject": "", "emails.invitation.subject": "%s संघ %s येथे सामील होण्यासाठी आमंत्रण",
"emails.invitation.hello": "", "emails.invitation.hello": "नमस्कार",
"emails.invitation.body": "", "emails.invitation.body": "हा मेल तुम्हाला पाठवला होता कारण {{owner}} तुम्हाला {{project}} येथे {{team}} टीमचे सदस्य होण्यासाठी आमंत्रित करू इच्छित होते.",
"emails.invitation.footer": "", "emails.invitation.footer": "आपल्याला स्वारस्य नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"emails.invitation.thanks": "", "emails.invitation.thanks": "धन्यवाद",
"emails.invitation.signature": "", "emails.invitation.signature": "{{project}} संघ",
"locale.country.unknown": "अज्ञात", "locale.country.unknown": "अज्ञात",
"countries.af": "अफगानिस्तान", "countries.af": "अफगानिस्तान",
"countries.ao": "अंगोला", "countries.ao": "अंगोला",

View file

@ -15,7 +15,7 @@ return [
[ [
'key' => 'web', 'key' => 'web',
'name' => 'Web', 'name' => 'Web',
'version' => '4.0.4', 'version' => '5.0.0',
'url' => 'https://github.com/appwrite/sdk-for-web', 'url' => 'https://github.com/appwrite/sdk-for-web',
'package' => 'https://www.npmjs.com/package/appwrite', 'package' => 'https://www.npmjs.com/package/appwrite',
'enabled' => true, 'enabled' => true,
@ -190,7 +190,7 @@ return [
[ [
'key' => 'nodejs', 'key' => 'nodejs',
'name' => 'Node.js', 'name' => 'Node.js',
'version' => '2.5.1', 'version' => '3.0.0',
'url' => 'https://github.com/appwrite/sdk-for-node', 'url' => 'https://github.com/appwrite/sdk-for-node',
'package' => 'https://www.npmjs.com/package/node-appwrite', 'package' => 'https://www.npmjs.com/package/node-appwrite',
'enabled' => true, 'enabled' => true,
@ -208,11 +208,11 @@ return [
[ [
'key' => 'deno', 'key' => 'deno',
'name' => 'Deno', 'name' => 'Deno',
'version' => '0.4.1', 'version' => '1.0.0',
'url' => 'https://github.com/appwrite/sdk-for-deno', 'url' => 'https://github.com/appwrite/sdk-for-deno',
'package' => 'https://deno.land/x/appwrite', 'package' => 'https://deno.land/x/appwrite',
'enabled' => true, 'enabled' => true,
'beta' => true, 'beta' => false,
'dev' => false, 'dev' => false,
'hidden' => false, 'hidden' => false,
'family' => APP_PLATFORM_SERVER, 'family' => APP_PLATFORM_SERVER,

View file

@ -46,9 +46,20 @@ App::get('/v1/health/db')
->action(function ($response, $utopia) { ->action(function ($response, $utopia) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\App $utopia */ /** @var Utopia\App $utopia */
$utopia->getResource('db'); try {
$db = $utopia->getResource('db'); /* @var $db PDO */
$response->json(['status' => 'OK']); // Run a small test to check the connection
$statement = $db->prepare("SELECT 1;");
$statement->closeCursor();
$statement->execute();
} catch (Exception $_e) {
throw new Exception('Database is not available', 500);
}
return $response->json(['status' => 'OK']);
}); });
App::get('/v1/health/cache') App::get('/v1/health/cache')
@ -64,9 +75,14 @@ App::get('/v1/health/cache')
->action(function ($response, $utopia) { ->action(function ($response, $utopia) {
/** @var Appwrite\Utopia\Response $response */ /** @var Appwrite\Utopia\Response $response */
/** @var Utopia\App $utopia */ /** @var Utopia\App $utopia */
$utopia->getResource('cache'); /** @var Redis */
$redis = $utopia->getResource('cache');
$response->json(['status' => 'OK']); if ($redis->ping(true)) {
return $response->json(['status' => 'OK']);
} else {
throw new Exception('Cache is not available', 500);
}
}); });
App::get('/v1/health/time') App::get('/v1/health/time')

View file

@ -234,29 +234,74 @@ App::post('/v1/mock/tests/general/upload')
->param('z', null, new ArrayList(new Text(256)), 'Sample array param') ->param('z', null, new ArrayList(new Text(256)), 'Sample array param')
->param('file', [], new File(), 'Sample file param', false) ->param('file', [], new File(), 'Sample file param', false)
->inject('request') ->inject('request')
->action(function ($x, $y, $z, $file, $request) { ->inject('response')
->action(function ($x, $y, $z, $file, $request, $response) {
/** @var Utopia\Swoole\Request $request */ /** @var Utopia\Swoole\Request $request */
/** @var Utopia\Swoole\Response $response */
$file = $request->getFiles('file'); $file = $request->getFiles('file');
$file['tmp_name'] = (\is_array($file['tmp_name'])) ? $file['tmp_name'] : [$file['tmp_name']];
$file['name'] = (\is_array($file['name'])) ? $file['name'] : [$file['name']]; $contentRange = $request->getHeader('content-range');
$file['size'] = (\is_array($file['size'])) ? $file['size'] : [$file['size']]; if(!empty($contentRange)) {
$start = $request->getContentRangeStart();
$end = $request->getContentRangeEnd();
$size = $request->getContentRangeSize();
$id = $request->getHeader('x-appwrite-id', '');
$file['size'] = (\is_array($file['size'])) ? $file['size'] : [$file['size']];
foreach ($file['name'] as $i => $name) { if(is_null($start) || is_null($end) || is_null($size)) {
if ($name !== 'file.png') { throw new Exception('Invalid content-range header', 400);
throw new Exception('Wrong file name', 400);
} }
}
foreach ($file['size'] as $i => $size) { if($start > $end || $end > $size) {
if ($size !== 38756) { throw new Exception('Invalid content-range header', 400);
throw new Exception('Wrong file size', 400);
} }
}
foreach ($file['tmp_name'] as $i => $tmpName) { if($start === 0 && !empty($id)) {
if (\md5(\file_get_contents($tmpName)) !== 'd80e7e6999a3eb2ae0d631a96fe135a4') { throw new Exception('First chunked request cannot have id header', 400);
throw new Exception('Wrong file uploaded', 400); }
if($start !== 0 && $id !== 'newfileid') {
throw new Exception('All chunked request must have id header (except first)', 400);
}
if($end !== $size && $end-$start+1 !== 5*1024*1024) {
throw new Exception('Chunk size must be 5MB (except last chunk)', 400);
}
foreach ($file['size'] as $i => $sz) {
if ($end !== $size && $sz !== 5*1024*1024) {
throw new Exception('Wrong chunk size', 400);
}
if($sz > 5*1024*1024) {
throw new Exception('Chunk size must be 5MB or less', 400);
}
}
if($end !== $size) {
$response->json(['$id'=> 'newfileid']);
}
} else {
$file['tmp_name'] = (\is_array($file['tmp_name'])) ? $file['tmp_name'] : [$file['tmp_name']];
$file['name'] = (\is_array($file['name'])) ? $file['name'] : [$file['name']];
$file['size'] = (\is_array($file['size'])) ? $file['size'] : [$file['size']];
foreach ($file['name'] as $i => $name) {
if ($name !== 'file.png') {
throw new Exception('Wrong file name', 400);
}
}
foreach ($file['size'] as $i => $size) {
if ($size !== 38756) {
throw new Exception('Wrong file size', 400);
}
}
foreach ($file['tmp_name'] as $i => $tmpName) {
if (\md5(\file_get_contents($tmpName)) !== 'd80e7e6999a3eb2ae0d631a96fe135a4') {
throw new Exception('Wrong file uploaded', 400);
}
} }
} }
}); });

View file

@ -67,7 +67,7 @@
}, },
"repositories": [], "repositories": [],
"require-dev": { "require-dev": {
"appwrite/sdk-generator": "0.16.0", "appwrite/sdk-generator": "0.16.2",
"phpunit/phpunit": "9.5.6", "phpunit/phpunit": "9.5.6",
"swoole/ide-helper": "4.6.7", "swoole/ide-helper": "4.6.7",
"textalk/websocket": "1.5.2", "textalk/websocket": "1.5.2",

106
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "fa378feaffc446f557a140035a1c77b6", "content-hash": "a3aad9d7aba75e837b4c6e242c7a91a3",
"packages": [ "packages": [
{ {
"name": "adhocore/jwt", "name": "adhocore/jwt",
@ -2304,20 +2304,19 @@
}, },
{ {
"name": "utopia-php/image", "name": "utopia-php/image",
"version": "0.5.2", "version": "0.5.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/utopia-php/image.git", "url": "https://github.com/utopia-php/image.git",
"reference": "049446fea7cb53db8a431455ec382e30e6d1482a" "reference": "4a8429b62dcf56562b038d6712375f75166f0c02"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/utopia-php/image/zipball/049446fea7cb53db8a431455ec382e30e6d1482a", "url": "https://api.github.com/repos/utopia-php/image/zipball/4a8429b62dcf56562b038d6712375f75166f0c02",
"reference": "049446fea7cb53db8a431455ec382e30e6d1482a", "reference": "4a8429b62dcf56562b038d6712375f75166f0c02",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"chillerlan/php-qrcode": "4.3.1",
"ext-imagick": "*", "ext-imagick": "*",
"php": ">=7.4" "php": ">=7.4"
}, },
@ -2351,9 +2350,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/utopia-php/image/issues", "issues": "https://github.com/utopia-php/image/issues",
"source": "https://github.com/utopia-php/image/tree/0.5.2" "source": "https://github.com/utopia-php/image/tree/0.5.3"
}, },
"time": "2021-10-18T06:41:05+00:00" "time": "2021-11-02T05:47:16+00:00"
}, },
{ {
"name": "utopia-php/locale", "name": "utopia-php/locale",
@ -3015,16 +3014,16 @@
}, },
{ {
"name": "appwrite/sdk-generator", "name": "appwrite/sdk-generator",
"version": "0.16.0", "version": "0.16.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/appwrite/sdk-generator.git", "url": "https://github.com/appwrite/sdk-generator.git",
"reference": "5a57afe89ded393a3eca8d9ba96b8e2c479f2601" "reference": "e3a20c96a745a9c4aa048fd344650fcfbf41cf6f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/5a57afe89ded393a3eca8d9ba96b8e2c479f2601", "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/e3a20c96a745a9c4aa048fd344650fcfbf41cf6f",
"reference": "5a57afe89ded393a3eca8d9ba96b8e2c479f2601", "reference": "e3a20c96a745a9c4aa048fd344650fcfbf41cf6f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3058,9 +3057,9 @@
"description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms",
"support": { "support": {
"issues": "https://github.com/appwrite/sdk-generator/issues", "issues": "https://github.com/appwrite/sdk-generator/issues",
"source": "https://github.com/appwrite/sdk-generator/tree/0.16.0" "source": "https://github.com/appwrite/sdk-generator/tree/0.16.2"
}, },
"time": "2021-10-21T06:49:55+00:00" "time": "2021-11-12T11:09:38+00:00"
}, },
{ {
"name": "composer/semver", "name": "composer/semver",
@ -3656,16 +3655,16 @@
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.13.0", "version": "v4.13.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "50953a2691a922aa1769461637869a0a2faa3f53" "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/63a79e8daa781cac14e5195e63ed8ae231dd10fd",
"reference": "50953a2691a922aa1769461637869a0a2faa3f53", "reference": "63a79e8daa781cac14e5195e63ed8ae231dd10fd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3706,9 +3705,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.1"
}, },
"time": "2021-09-20T12:20:58+00:00" "time": "2021-11-03T20:52:16+00:00"
}, },
{ {
"name": "openlss/lib-array2xml", "name": "openlss/lib-array2xml",
@ -4103,23 +4102,23 @@
}, },
{ {
"name": "phpunit/php-code-coverage", "name": "phpunit/php-code-coverage",
"version": "9.2.7", "version": "9.2.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cf04e88a2e3c56fc1a65488afd493325b4c1bc3e",
"reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", "reference": "cf04e88a2e3c56fc1a65488afd493325b4c1bc3e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-dom": "*", "ext-dom": "*",
"ext-libxml": "*", "ext-libxml": "*",
"ext-xmlwriter": "*", "ext-xmlwriter": "*",
"nikic/php-parser": "^4.12.0", "nikic/php-parser": "^4.13.0",
"php": ">=7.3", "php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3", "phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2", "phpunit/php-text-template": "^2.0.2",
@ -4168,7 +4167,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.8"
}, },
"funding": [ "funding": [
{ {
@ -4176,7 +4175,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-09-17T05:39:03+00:00" "time": "2021-10-30T08:01:38+00:00"
}, },
{ {
"name": "phpunit/php-file-iterator", "name": "phpunit/php-file-iterator",
@ -4524,20 +4523,20 @@
}, },
{ {
"name": "psr/container", "name": "psr/container",
"version": "1.1.1", "version": "1.1.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/container.git", "url": "https://github.com/php-fig/container.git",
"reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
"reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=7.2.0" "php": ">=7.4.0"
}, },
"type": "library", "type": "library",
"autoload": { "autoload": {
@ -4566,9 +4565,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/php-fig/container/issues", "issues": "https://github.com/php-fig/container/issues",
"source": "https://github.com/php-fig/container/tree/1.1.1" "source": "https://github.com/php-fig/container/tree/1.1.2"
}, },
"time": "2021-03-05T17:36:06+00:00" "time": "2021-11-05T16:50:12+00:00"
}, },
{ {
"name": "sebastian/cli-parser", "name": "sebastian/cli-parser",
@ -4999,16 +4998,16 @@
}, },
{ {
"name": "sebastian/exporter", "name": "sebastian/exporter",
"version": "4.0.3", "version": "4.0.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git", "url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
"reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5057,14 +5056,14 @@
} }
], ],
"description": "Provides the functionality to export PHP variables for visualization", "description": "Provides the functionality to export PHP variables for visualization",
"homepage": "http://www.github.com/sebastianbergmann/exporter", "homepage": "https://www.github.com/sebastianbergmann/exporter",
"keywords": [ "keywords": [
"export", "export",
"exporter" "exporter"
], ],
"support": { "support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues", "issues": "https://github.com/sebastianbergmann/exporter/issues",
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
}, },
"funding": [ "funding": [
{ {
@ -5072,7 +5071,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2020-09-28T05:24:23+00:00" "time": "2021-11-11T14:18:36+00:00"
}, },
{ {
"name": "sebastian/global-state", "name": "sebastian/global-state",
@ -5588,16 +5587,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v5.3.7", "version": "v5.3.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", "url": "https://api.github.com/repos/symfony/console/zipball/d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3",
"reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", "reference": "d4e409d9fbcfbf71af0e5a940abb7b0b4bad0bd3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5667,7 +5666,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v5.3.7" "source": "https://github.com/symfony/console/tree/v5.3.10"
}, },
"funding": [ "funding": [
{ {
@ -5683,7 +5682,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-08-25T20:02:16+00:00" "time": "2021-10-26T09:30:15+00:00"
}, },
{ {
"name": "symfony/polyfill-intl-grapheme", "name": "symfony/polyfill-intl-grapheme",
@ -6090,16 +6089,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v5.3.7", "version": "v5.3.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
"reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6153,7 +6152,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v5.3.7" "source": "https://github.com/symfony/string/tree/v5.3.10"
}, },
"funding": [ "funding": [
{ {
@ -6169,7 +6168,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-08-26T08:00:08+00:00" "time": "2021-10-27T18:21:46+00:00"
}, },
{ {
"name": "textalk/websocket", "name": "textalk/websocket",
@ -6502,6 +6501,7 @@
"issues": "https://github.com/webmozart/path-util/issues", "issues": "https://github.com/webmozart/path-util/issues",
"source": "https://github.com/webmozart/path-util/tree/2.3.0" "source": "https://github.com/webmozart/path-util/tree/2.3.0"
}, },
"abandoned": "symfony/filesystem",
"time": "2015-12-17T08:42:14+00:00" "time": "2015-12-17T08:42:14+00:00"
} }
], ],

View file

@ -12,7 +12,6 @@ client
.setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key .setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key
.setSelfSigned() // Use only on dev mode with a self-signed SSL cert .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
; ;
``` ```
### Make your first request ### Make your first request
@ -22,13 +21,8 @@ Once your SDK object is set, create any of the Appwrite service objects and choo
```typescript ```typescript
let users = new sdk.Users(client); let users = new sdk.Users(client);
let promise = users.create('email@example.com', 'password'); let response = await users.create('email@example.com', 'password');
console.log(response);
promise.then(function (response) {
console.log(response);
}, function (error) {
console.log(error);
});
``` ```
### Full Example ### Full Example
@ -45,13 +39,8 @@ client
.setSelfSigned() // Use only on dev mode with a self-signed SSL cert .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
; ;
let promise = users.create('email@example.com', 'password'); let response = await users.create('email@example.com', 'password');
console.log(response);
promise.then(function (response) {
console.log(response);
}, function (error) {
console.log(error);
});
``` ```
### Error Handling ### Error Handling
@ -61,7 +50,7 @@ The Appwrite Deno SDK raises `AppwriteException` object with `message`, `code` a
let users = new sdk.Users(client); let users = new sdk.Users(client);
try { try {
let res = await users.create('email@example.com', 'password'); let response = await users.create('email@example.com', 'password');
} catch(e) { } catch(e) {
console.log(e.message); console.log(e.message);
} }

View file

@ -58,14 +58,16 @@ For **Windows** add your app <u>name</u> and <u>package name</u>, Your package n
```dart ```dart
import 'package:appwrite/appwrite.dart'; import 'package:appwrite/appwrite.dart';
Client client = Client();
void main() {
Client client = Client();
client client
.setEndpoint('https://localhost/v1') // Your Appwrite Endpoint .setEndpoint('https://localhost/v1') // Your Appwrite Endpoint
.setProject('5e8cf4f46b5e8') // Your project ID .setProject('5e8cf4f46b5e8') // Your project ID
.setSelfSigned() // Use only on dev mode with a self-signed SSL cert .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
; ;
}
``` ```
Before starting to send any API calls to your new Appwrite instance, make sure your Android or iOS emulators has network access to the Appwrite server hostname or IP address. Before starting to send any API calls to your new Appwrite instance, make sure your Android or iOS emulators has network access to the Appwrite server hostname or IP address.
@ -91,25 +93,28 @@ Response user = await account
```dart ```dart
import 'package:appwrite/appwrite.dart'; import 'package:appwrite/appwrite.dart';
Client client = Client();
void main() {
Client client = Client();
client client
.setEndpoint('https://localhost/v1') // Your Appwrite Endpoint .setEndpoint('https://localhost/v1') // Your Appwrite Endpoint
.setProject('5e8cf4f46b5e8') // Your project ID .setProject('5e8cf4f46b5e8') // Your project ID
.setSelfSigned() // Use only on dev mode with a self-signed SSL cert .setSelfSigned() // Use only on dev mode with a self-signed SSL cert
; ;
// Register User // Register User
Account account = Account(client); Account account = Account(client);
Response user = await account Response user = await account
.create( .create(
email: 'me@appwrite.io', email: 'me@appwrite.io',
password: 'password', password: 'password',
name: 'My Name' name: 'My Name'
); );
}
``` ```
### Error Handling ### Error Handling

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -370,10 +370,9 @@ let doNotTrack=window.navigator.doNotTrack;if(doNotTrack=='1'){return;}
let project=router.params["project"]||'None';ga("set","page",window.location.pathname);ga("set","dimension1",project);ga('set','dimension2',env.VERSION);ga('set','dimension3',env.SETUP);ga("send","pageview");}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-clone",controller:function(element,document,view){var template=element.innerHTML.toString();var label=element.dataset["label"]||"Add";var icon=element.dataset["icon"]||null;var target=element.dataset["target"]||null;var first=parseInt(element.dataset["first"]||1);var button=document.createElement("button");button.type="button";button.innerText=" "+label+" ";button.classList.add("margin-end");button.classList.add("margin-bottom-small");button.classList.add("reverse");if(icon){var iconElement=document.createElement("i");iconElement.className=icon;button.insertBefore(iconElement,button.firstChild);} let project=router.params["project"]||'None';ga("set","page",window.location.pathname);ga("set","dimension1",project);ga('set','dimension2',env.VERSION);ga('set','dimension3',env.SETUP);ga("send","pageview");}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-clone",controller:function(element,document,view){var template=element.innerHTML.toString();var label=element.dataset["label"]||"Add";var icon=element.dataset["icon"]||null;var target=element.dataset["target"]||null;var first=parseInt(element.dataset["first"]||1);var button=document.createElement("button");button.type="button";button.innerText=" "+label+" ";button.classList.add("margin-end");button.classList.add("margin-bottom-small");button.classList.add("reverse");if(icon){var iconElement=document.createElement("i");iconElement.className=icon;button.insertBefore(iconElement,button.firstChild);}
if(target){target=document.getElementById(target);} if(target){target=document.getElementById(target);}
button.addEventListener("click",function(){var clone=document.createElement(element.tagName);if(element.name){clone.name=element.name;} button.addEventListener("click",function(){var clone=document.createElement(element.tagName);if(element.name){clone.name=element.name;}
clone.innerHTML=template;clone.className=element.className;var input=clone.querySelector("input, select, textarea");view.render(clone);if(target){target.appendChild(clone);}else{button.parentNode.insertBefore(clone,button);} clone.innerHTML=template;clone.className=element.className;view.render(clone);if(target){target.appendChild(clone);}else{button.parentNode.insertBefore(clone,button);}
if(input){input.focus();} clone.querySelector("input").focus();Array.prototype.slice.call(clone.querySelectorAll("[data-remove]")).map(function(obj){obj.addEventListener("click",function(){clone.parentNode.removeChild(clone);obj.scrollIntoView({behavior:"smooth"});});});Array.prototype.slice.call(clone.querySelectorAll("[data-up]")).map(function(obj){obj.addEventListener("click",function(){if(clone.previousElementSibling){clone.parentNode.insertBefore(clone,clone.previousElementSibling);obj.scrollIntoView({behavior:"smooth"});}});});Array.prototype.slice.call(clone.querySelectorAll("[data-down]")).map(function(obj){obj.addEventListener("click",function(){if(clone.nextElementSibling){clone.parentNode.insertBefore(clone.nextElementSibling,clone);obj.scrollIntoView({behavior:"smooth"});}});});});element.parentNode.insertBefore(button,element.nextSibling);element.parentNode.removeChild(element);if(first){button.click();}}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-add",repeat:false,controller:function(element,view,container,document){for(var i=0;i<element.children.length;i++){let button=document.createElement("button");let template=element.children[i].cloneNode(true);let as=element.getAttribute('data-ls-as');let counter=0;button.type="button";button.innerText="Add";button.classList.add("reverse");button.classList.add("margin-end-small");button.addEventListener('click',function(){container.addNamespace(as,'new-'+counter++);console.log(container.namespaces,container.get(as),as);container.set(as,null,true,true);let child=template.cloneNode(true);view.render(child);element.appendChild(child);element.style.visibility='visible';let inputs=child.querySelectorAll('input,textarea');for(let index=0;index<inputs.length;++index){if(inputs[index].type!=='hidden'){inputs[index].focus();break;}}});element.after(button);}}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-chart",controller:function(element,container,date,document){let wrapper=document.createElement("div");let child=document.createElement("canvas");let sources=element.getAttribute('data-forms-chart');let width=element.getAttribute('data-width')||500;let height=element.getAttribute('data-height')||175;let colors=(element.getAttribute('data-colors')||'blue,green,orange,red').split(',');let themes={'blue':'#29b5d9','green':'#4eb55b','orange':'#fba233','red':'#dc3232',};let range={'24h':'H:i','7d':'d F Y','30d':'d F Y','90d':'d F Y'}
Array.prototype.slice.call(clone.querySelectorAll("[data-remove]")).map(function(obj){obj.addEventListener("click",function(){clone.parentNode.removeChild(clone);obj.scrollIntoView({behavior:"smooth"});});});Array.prototype.slice.call(clone.querySelectorAll("[data-up]")).map(function(obj){obj.addEventListener("click",function(){if(clone.previousElementSibling){clone.parentNode.insertBefore(clone,clone.previousElementSibling);obj.scrollIntoView({behavior:"smooth"});}});});Array.prototype.slice.call(clone.querySelectorAll("[data-down]")).map(function(obj){obj.addEventListener("click",function(){if(clone.nextElementSibling){clone.parentNode.insertBefore(clone.nextElementSibling,clone);obj.scrollIntoView({behavior:"smooth"});}});});});element.parentNode.insertBefore(button,element.nextSibling);element.parentNode.removeChild(element);button.form.addEventListener('reset',function(event){target.innerHTML='';if(first){button.click();}});if(first){button.click();}}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-add",repeat:false,controller:function(element,view,container,document){for(var i=0;i<element.children.length;i++){let button=document.createElement("button");let template=element.children[i].cloneNode(true);let as=element.getAttribute('data-ls-as');let counter=0;button.type="button";button.innerText="Add";button.classList.add("reverse");button.classList.add("margin-end-small");button.addEventListener('click',function(){container.addNamespace(as,'new-'+counter++);console.log(container.namespaces,container.get(as),as);container.set(as,null,true,true);let child=template.cloneNode(true);view.render(child);element.appendChild(child);element.style.visibility='visible';let inputs=child.querySelectorAll('input,textarea');for(let index=0;index<inputs.length;++index){if(inputs[index].type!=='hidden'){inputs[index].focus();break;}}});element.after(button);}}});})(window);(function(window){"use strict";window.ls.container.get("view").add({selector:"data-forms-chart",controller:function(element,container,date,document){let wrapper=document.createElement("div");let child=document.createElement("canvas");let sources=element.getAttribute('data-forms-chart');let width=element.getAttribute('data-width')||500;let height=element.getAttribute('data-height')||175;let colors=(element.getAttribute('data-colors')||'blue,green,orange,red').split(',');let themes={'blue':'#29b5d9','green':'#4eb55b','orange':'#fba233','red':'#dc3232',};let range={'24h':'H:i','7d':'d F Y','30d':'d F Y','90d':'d F Y'} element.parentNode.insertBefore(wrapper,element.nextSibling);wrapper.classList.add('content');child.width=width;child.height=height;sources=sources.split(',');wrapper.appendChild(child);let chart=null;let check=function(){let config={type:"line",data:{labels:[],datasets:[]},options:{responsive:true,tooltip:{mode:"index",intersect:false,caretPadding:0},hover:{mode:"nearest",intersect:true},scales:{x:{display:false},y:{display:false}},plugins:{title:{display:false,text:"Stats"},legend:{display:false},}}};for(let i=0;i<sources.length;i++){let label=sources[i].substring(0,sources[i].indexOf('='));let path=sources[i].substring(sources[i].indexOf('=')+1);let data=container.path(path);let value=JSON.parse(element.value);config.data.labels[i]=label;config.data.datasets[i]={};config.data.datasets[i].label=label;config.data.datasets[i].borderColor=themes[colors[i]];config.data.datasets[i].backgroundColor=themes[colors[i]]+'36';config.data.datasets[i].borderWidth=2;config.data.datasets[i].data=[0,0,0,0,0,0,0];config.data.datasets[i].fill=true;if(!data){return;}
element.parentNode.insertBefore(wrapper,element.nextSibling);wrapper.classList.add('content');child.width=width;child.height=height;sources=sources.split(',');wrapper.appendChild(child);let chart=null;let check=function(){let config={type:"line",data:{labels:[],datasets:[]},options:{responsive:true,title:{display:false,text:"Stats"},legend:{display:false},tooltips:{mode:"index",intersect:false,caretPadding:0},hover:{mode:"nearest",intersect:true},scales:{xAxes:[{display:false}],yAxes:[{display:false}]}}};for(let i=0;i<sources.length;i++){let label=sources[i].substring(0,sources[i].indexOf('='));let path=sources[i].substring(sources[i].indexOf('=')+1);let data=container.path(path);let value=JSON.parse(element.value);config.data.labels[i]=label;config.data.datasets[i]={};config.data.datasets[i].label=label;config.data.datasets[i].borderColor=themes[colors[i]];config.data.datasets[i].backgroundColor=themes[colors[i]]+'36';config.data.datasets[i].borderWidth=2;config.data.datasets[i].data=[0,0,0,0,0,0,0];config.data.datasets[i].fill=true;if(!data){return;}
let dateFormat=(value.range&&range[value.range])?range[value.range]:'d F Y';for(let x=0;x<data.length;x++){config.data.datasets[i].data[x]=data[x].value;config.data.labels[x]=date.format(dateFormat,data[x].date);}} let dateFormat=(value.range&&range[value.range])?range[value.range]:'d F Y';for(let x=0;x<data.length;x++){config.data.datasets[i].data[x]=data[x].value;config.data.labels[x]=date.format(dateFormat,data[x].date);}}
if(chart){chart.destroy();} if(chart){chart.destroy();}
else{} else{}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 86 KiB

File diff suppressed because it is too large Load diff

View file

@ -36,14 +36,7 @@
}, },
options: { options: {
responsive: true, responsive: true,
title: { tooltip: {
display: false,
text: "Stats"
},
legend: {
display: false
},
tooltips: {
mode: "index", mode: "index",
intersect: false, intersect: false,
caretPadding: 0 caretPadding: 0
@ -53,16 +46,21 @@
intersect: true intersect: true
}, },
scales: { scales: {
xAxes: [ x: {
{ display: false
display: false },
} y: {
], display: false
yAxes: [ }
{ },
display: false plugins: {
} title: {
] display: false,
text: "Stats"
},
legend: {
display: false
},
} }
} }
}; };

View file

@ -5,6 +5,7 @@
--config-width-large: 700px; --config-width-large: 700px;
--config-width-medium: 550px; --config-width-medium: 550px;
--config-width-small: 320px; --config-width-small: 320px;
--config-color-primary: #f02e65;
--config-color-link: #1e849e; --config-color-link: #1e849e;
--config-color-background: #eceff1; --config-color-background: #eceff1;
--config-color-background-dark: #dfe2e4; --config-color-background-dark: #dfe2e4;
@ -93,6 +94,7 @@
--config-console-nav-switch-arrow: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='%23868686' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>"); --config-console-nav-switch-arrow: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='%23868686' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
.theme-dark { .theme-dark {
--config-color-primary: #f02e65;
--config-color-background: #061F2F; --config-color-background: #061F2F;
--config-color-background-dark: #262d50; --config-color-background-dark: #262d50;
--config-color-background-fade: #1c223a; --config-color-background-fade: #1c223a;

View file

@ -49,7 +49,7 @@ class PDO extends PDONative
return $this->pdo->setAttribute($attribute, $value); return $this->pdo->setAttribute($attribute, $value);
} }
public function prepare($statement, $driver_options = NULL) public function prepare($statement, $driver_options = null)
{ {
return new PDOStatement($this, $this->pdo->prepare($statement, [])); return new PDOStatement($this, $this->pdo->prepare($statement, []));
} }
@ -107,4 +107,4 @@ class PDO extends PDONative
return $this->pdo; return $this->pdo;
} }
} }

View file

@ -100,10 +100,10 @@ class PDOStatement extends PDOStatementNative
/** /**
* Fetch All * Fetch All
* *
* @param int $fetch_style * @param int $fetch_style
* @param mixed $fetch_args * @param mixed $fetch_args
* *
* @return array|false * @return array|false
*/ */
public function fetchAll(int $fetch_style = PDO::FETCH_BOTH, mixed ...$fetch_args) public function fetchAll(int $fetch_style = PDO::FETCH_BOTH, mixed ...$fetch_args)
@ -112,4 +112,4 @@ class PDOStatement extends PDOStatementNative
return $result; return $result;
} }
} }

View file

@ -4,7 +4,7 @@ namespace Appwrite\OpenSSL;
class OpenSSL class OpenSSL
{ {
const CIPHER_AES_128_GCM = 'aes-128-gcm'; public const CIPHER_AES_128_GCM = 'aes-128-gcm';
/** /**
* @param $data * @param $data