From 795050c75dcbe7eb400864aac3a5c5f35ddc3ed6 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Tue, 8 Dec 2020 13:57:05 +0330
Subject: [PATCH 001/326] Rename ----------------------------------.md to
CONTENT_CONTRIBUTE_TEMPLATE.md
---
...------------------------.md => CONTENT_CONTRIBUTE_TEMPLATE.md} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename .github/ISSUE_TEMPLATE/{----------------------------------.md => CONTENT_CONTRIBUTE_TEMPLATE.md} (100%)
diff --git a/.github/ISSUE_TEMPLATE/----------------------------------.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
similarity index 100%
rename from .github/ISSUE_TEMPLATE/----------------------------------.md
rename to .github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
From 86712a0312c3f2be35ee966b66e97ad4611b54be Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Fri, 11 Dec 2020 21:22:30 +0330
Subject: [PATCH 002/326] Add email template [ugly but working] (#13)
* Add email template
---
EMAIL_TEMPLATES/sample.html | 130 ++++++++++++++++++++++++++++++++++++
1 file changed, 130 insertions(+)
create mode 100644 EMAIL_TEMPLATES/sample.html
diff --git a/EMAIL_TEMPLATES/sample.html b/EMAIL_TEMPLATES/sample.html
new file mode 100644
index 0000000..5475c6e
--- /dev/null
+++ b/EMAIL_TEMPLATES/sample.html
@@ -0,0 +1,130 @@
+
+
+
+ خبرنامه شماره یک
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+
+ شماره اول - چهارشنبه - ۱۹ آذر ۱۳۹۹
+
+
+
+
+ تیتر مطلب اول
+
+
+ اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
+ شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
+ فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
+ پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
+ مطالعه مطلب اصلی
+
+
+
+ تیتر مطلب دوم
+
+
+ اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
+ شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
+ فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
+ پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
+ مطالعه مطلب اصلی
+
+
+
+ تیتر مطلب سوم
+
+
+ اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
+ شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
+ فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
+ پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
+ مطالعه مطلب اصلی
+
+
+
+ تیتر مطلب چهارم
+
+
+ اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
+ شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
+ فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
+ پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
+ مطالعه مطلب اصلی
+
+
+
+ تیتر مطلب پنجم
+
+
+ اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
+ شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
+ فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
+ پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
+ مطالعه مطلب اصلی
+
+
+
+
+ در این شماره از خبرنامه، دوستان خوبی به نامهای امیرحسین بقایی، حامد سعیدی،
+ فلان فلانزاده و بهمان بهمانزاده در تهیه محتوا کمک کردند.
+
+
+
+
+ لغو اشتراک :(
+ (در صورت تمایل خوشحال میشویم علت لغو اشتراک شما را بدانیم. به ما
+ ایمیل بزنید)
+
+
+
+
+
\ No newline at end of file
From cdec2e11184e09e1045167bb8ee3c64423198a79 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Fri, 11 Dec 2020 21:53:53 +0330
Subject: [PATCH 003/326] Update issue templates
---
.../CONTENT_CONTRIBUTE_TEMPLATE.md | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
index 4c3589a..0bb57ef 100644
--- a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
@@ -1,15 +1,21 @@
---
name: قالب مشارکت در تهیه محتوای خبرنامه
about: برای مشارکت و تهیه محتوای هفتگی خبرنامه، کافیست اطلاعات پست خود را وارد تمپلیت
- کنید. بین کلمات نیمفاصله گذاشته شده تا راحت با یک کلیک انتخاب و سپس توسط شما پر
- شود
+ کنید.
title: معرفی مطلب جدید برای خبرنامه
labels: content
assignees: amirbagh75, Hameds
---
-name: "نام(دلخواه)"
-link: "لینکمطلب"
-title: "عنوانیبرایمقاله"
-description: "توضیحاتیدربارهمقاله"
+##### نام و نامخانوادگی شما (اختیاری)
+name: ""
+
+##### لینک صحیح مطلب را وارد نمایید.
+link: ""
+
+##### عنوان مطلب (یا یک عنوان اختیاری بنویسید یا هم عنوان خود مقاله رو کپی کنید)
+title: ""
+
+##### خلاصهای حداکثر ۲ الی ۳ خطی درباره محتوای مقاله بنویسید.
+description: ""
From 1d33c36c526533ecae4aef049d58c0866da22131 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 14 Dec 2020 20:10:47 +0330
Subject: [PATCH 004/326] Update issue templates
---
.../CONTENT_CONTRIBUTE_TEMPLATE.md | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
index 0bb57ef..f65a772 100644
--- a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
@@ -8,14 +8,23 @@ assignees: amirbagh75, Hameds
---
-##### نام و نامخانوادگی شما (اختیاری)
-name: ""
+##### نام و نامخانوادگی شما
+##### مثلا:
+##### امیرحسین بقایی
+fullName: ""
##### لینک صحیح مطلب را وارد نمایید.
-link: ""
+##### مثلا:
+##### https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
+postLink: ""
##### عنوان مطلب (یا یک عنوان اختیاری بنویسید یا هم عنوان خود مقاله رو کپی کنید)
-title: ""
+##### مثلا:
+##### کوبرنتیز چیست؟
+postTitle: ""
##### خلاصهای حداکثر ۲ الی ۳ خطی درباره محتوای مقاله بنویسید.
-description: ""
+##### مثلا:
+##### این مقاله رو توی وبلاگ کوبرنتیز درباره نحوه عملکرد سیستم کوبرنتیز نوشته که با خوندنش
+##### میتونین دید خوبی از عملکرد چنین سیستمهایی در مقیاسهای بالا پیدا کنید.
+postDescription: ""
From 37e247f38a55f087964f1a1e4a9cdebd57d601e5 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 14 Dec 2020 21:33:08 +0330
Subject: [PATCH 005/326] Update issue templates
---
.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
index f65a772..8a00bb1 100644
--- a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
@@ -9,22 +9,13 @@ assignees: amirbagh75, Hameds
---
##### نام و نامخانوادگی شما
-##### مثلا:
-##### امیرحسین بقایی
fullName: ""
-##### لینک صحیح مطلب را وارد نمایید.
-##### مثلا:
-##### https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
+##### لینک مطلب رو کامل وارد کنید.
postLink: ""
##### عنوان مطلب (یا یک عنوان اختیاری بنویسید یا هم عنوان خود مقاله رو کپی کنید)
-##### مثلا:
-##### کوبرنتیز چیست؟
postTitle: ""
##### خلاصهای حداکثر ۲ الی ۳ خطی درباره محتوای مقاله بنویسید.
-##### مثلا:
-##### این مقاله رو توی وبلاگ کوبرنتیز درباره نحوه عملکرد سیستم کوبرنتیز نوشته که با خوندنش
-##### میتونین دید خوبی از عملکرد چنین سیستمهایی در مقیاسهای بالا پیدا کنید.
postDescription: ""
From 928b6246dc195a855709d60f2c135e59a4719e9b Mon Sep 17 00:00:00 2001
From: amirbagh75
Date: Mon, 14 Dec 2020 21:41:25 +0330
Subject: [PATCH 006/326] Add template engine + Fix texts in main site
---
.gitignore | 38 +--
EMAIL_TEMPLATES/newsletter.html | 97 ++++++
composer.json | 4 +-
composer.lock | 550 +++++++++++++++++++++++++++++++-
fetch_issues.php | 22 --
index.html | 293 +++++++++--------
main.php | 62 ++++
7 files changed, 855 insertions(+), 211 deletions(-)
create mode 100644 EMAIL_TEMPLATES/newsletter.html
delete mode 100644 fetch_issues.php
create mode 100644 main.php
diff --git a/.gitignore b/.gitignore
index a02de76..8762e37 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,47 +2,11 @@
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-# .idea/artifacts
-# .idea/compiler.xml
-# .idea/jarRepositories.xml
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-# *.iml
-# *.ipr
+.idea/
# CMake
cmake-build-*/
-# Mongo Explorer plugin
-.idea/**/mongoSettings.xml
-
# File-based project format
*.iws
diff --git a/EMAIL_TEMPLATES/newsletter.html b/EMAIL_TEMPLATES/newsletter.html
new file mode 100644
index 0000000..2e52cef
--- /dev/null
+++ b/EMAIL_TEMPLATES/newsletter.html
@@ -0,0 +1,97 @@
+
+
+
+ خبرنامه شماره یک
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+
+ شماره {{ newsletterNumber }} - {{ currentDate }}
+
+
+
+
+
+ در این شماره از خبرنامه، دوستان خوبی به نامهای
+ {% for post in posts %}
+ {% if loop.last %}
+ {{ post.userFullName }}
+ {% else %}
+ {{ post.userFullName }},
+ {% endif %}
+ {% endfor %}
+ در تهیه محتوا کمک کردند.
+
+
+
+
+ لغو اشتراک
+
+ (در صورت تمایل خوشحال میشویم علت لغو اشتراک شما را بدانیم. به ما
+ ایمیل بزنید)
+
+
+
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 443794d..d19d444 100644
--- a/composer.json
+++ b/composer.json
@@ -3,6 +3,8 @@
"php": "^7.4.0",
"knplabs/github-api": "^2.17",
"php-http/guzzle6-adapter": "^2.0",
- "symfony/yaml": "^5.2"
+ "symfony/yaml": "^5.2",
+ "twig/twig": "^3.0",
+ "morilog/jalali": "^3.2"
}
}
diff --git a/composer.lock b/composer.lock
index 3feb58b..828f4d6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,73 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "2a7af87251292995ffc474d59166b78d",
+ "content-hash": "28287adcad7f8dd106f9a6e6ad5d7d65",
"packages": [
+ {
+ "name": "beberlei/assert",
+ "version": "v3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/beberlei/assert.git",
+ "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/beberlei/assert/zipball/5367e3895976b49704ae671f75bc5f0ba1b986ab",
+ "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-intl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "php": "^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpunit": ">=6.0.0",
+ "yoast/phpunit-polyfills": "^0.1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Assert\\": "lib/Assert"
+ },
+ "files": [
+ "lib/Assert/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Richard Quadling",
+ "email": "rquadling@gmail.com",
+ "role": "Collaborator"
+ }
+ ],
+ "description": "Thin assertion library for input validation in business models.",
+ "keywords": [
+ "assert",
+ "assertion",
+ "validation"
+ ],
+ "support": {
+ "issues": "https://github.com/beberlei/assert/issues",
+ "source": "https://github.com/beberlei/assert/tree/v3.3.0"
+ },
+ "time": "2020-11-13T20:02:54+00:00"
+ },
{
"name": "clue/stream-filter",
"version": "v1.5.0",
@@ -352,6 +417,158 @@
],
"time": "2020-11-14T17:07:32+00:00"
},
+ {
+ "name": "morilog/jalali",
+ "version": "v3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/morilog/jalali.git",
+ "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/morilog/jalali/zipball/7ea78b84ce3b5546b01217febb2fba4915dac5e5",
+ "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5",
+ "shasum": ""
+ },
+ "require": {
+ "beberlei/assert": "3.*",
+ "nesbot/carbon": "^1.21 || ^2.0",
+ "php": "^7.0 | ^7.1 | ^7.2 | ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Morilog\\Jalali\\": "src"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Milad Rey",
+ "email": "miladr@gmail.com"
+ },
+ {
+ "name": "Morteza Parvini",
+ "email": "m.parvini@outlook.com"
+ }
+ ],
+ "description": "This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in PHP applications, based on Jalali (Shamsi) DateTime class.",
+ "keywords": [
+ "Jalali",
+ "date",
+ "datetime",
+ "laravel",
+ "morilog"
+ ],
+ "support": {
+ "issues": "https://github.com/morilog/jalali/issues",
+ "source": "https://github.com/morilog/jalali/tree/v3.2.0"
+ },
+ "time": "2020-12-01T21:26:31+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.42.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "d0463779663437392fe42ff339ebc0213bd55498"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d0463779663437392fe42ff339ebc0213bd55498",
+ "reference": "d0463779663437392fe42ff339ebc0213bd55498",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "^2.7",
+ "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.54",
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev",
+ "dev-3.x": "3.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "http://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "http://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-28T14:25:28+00:00"
+ },
{
"name": "php-http/cache-plugin",
"version": "1.7.1",
@@ -1508,6 +1725,86 @@
],
"time": "2020-10-23T14:02:19+00:00"
},
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
{
"name": "symfony/polyfill-php72",
"version": "v1.20.0",
@@ -1746,6 +2043,177 @@
],
"time": "2020-10-23T14:02:19+00:00"
},
+ {
+ "name": "symfony/translation",
+ "version": "v5.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "52f486a707510884450df461b5a6429dd7a67379"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/52f486a707510884450df461b5a6429dd7a67379",
+ "reference": "52f486a707510884450df461b5a6429dd7a67379",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^2.3"
+ },
+ "conflict": {
+ "symfony/config": "<4.4",
+ "symfony/dependency-injection": "<5.0",
+ "symfony/http-kernel": "<5.0",
+ "symfony/twig-bundle": "<5.0",
+ "symfony/yaml": "<4.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-kernel": "^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1.2|^2",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v5.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-28T11:24:18+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-09-28T13:05:58+00:00"
+ },
{
"name": "symfony/yaml",
"version": "v5.2.0",
@@ -1820,6 +2288,82 @@
}
],
"time": "2020-11-28T10:57:20+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "support": {
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-27T19:28:23+00:00"
}
],
"packages-dev": [],
@@ -1828,7 +2372,9 @@
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
- "platform": [],
+ "platform": {
+ "php": "^7.4.0"
+ },
"platform-dev": [],
"plugin-api-version": "2.0.0"
}
diff --git a/fetch_issues.php b/fetch_issues.php
deleted file mode 100644
index 5990e06..0000000
--- a/fetch_issues.php
+++ /dev/null
@@ -1,22 +0,0 @@
-api('issue')->all('softwaretalks', 'newsletter', [
- 'labels' => 'content',
- 'state' => 'open',
-]);
-
-foreach ($issues as $issue) {
- try {
- $parsed = Yaml::parse($issue['body']);
- print_r($parsed);
- } catch (ParseException $exception) {
- printf('Unable to parse the YAML string: %s', $exception->getMessage());
- }
-}
\ No newline at end of file
diff --git a/index.html b/index.html
index fc3cf4f..7ea8569 100644
--- a/index.html
+++ b/index.html
@@ -1,149 +1,144 @@
-
-
-
-
- خبرنامه مهندسین نرمافزار
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- نحوه مشارکت در تامین محتوای خبرنامه
-
- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با
- استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در
- ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و
- کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی
- در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را
- می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی
- الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این
- صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
- شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای
- اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد
- استفاده قرار گیرد.
-
-
- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با
- استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در
- ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و
- کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی
- در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را
- می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی
- الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این
- صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
- شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای
- اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد
- استفاده قرار گیرد.
-
-
-
-
- آرشیو خبرنامههای ارسال شده
- هنوز خبرنامهای ارسال نشده است.
-
-
-
- درباره پروژه
-
- لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با
- استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در
- ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و
- کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد. کتابهای زیادی
- در شصت و سه درصد گذشته، حال و آینده شناخت فراوان جامعه و متخصصان را
- می طلبد تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی
- الخصوص طراحان خلاقی و فرهنگ پیشرو در زبان فارسی ایجاد کرد. در این
- صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها و
- شرایط سخت تایپ به پایان رسد وزمان مورد نیاز شامل حروفچینی دستاوردهای
- اصلی و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد
- استفاده قرار گیرد.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ خبرنامه مهندسین نرمافزار
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ نحوه مشارکت در تامین محتوای خبرنامه
+
+ برای این که بتونین مطلب مدنظرتون رو با اسم خودتون با بقیه بهوسیله خبرنامه به اشتراک بزارید، چند تا کار خیلی ساده رو
+ باید انجام بدید:
+
+
+ اول از همه باید توی گیتهاب یک اکانت داشته باشید. پس اگر ندارید ثبتنام کنید.
+
+
+ وارد صفحه ایجاد issue جدید در پروژه خبرنامه بشید. یعنی اینجا .
+
+
+ بالای صفحه یک نوار میبینید که تیترش اینه: قالب مشارکت در تهیه محتوای خبرنامه . کافیه روی
+ دکمه Get started کلیک کنین.
+
+
+ خب، تقریبا کار تمومه؛ کافیه محتواتون رو وارد کنید. دقت کنید که محتواها رو بین علامت double quotes یا
+ همون " " قرار بدید. این که مقاله با چه فرمتی باید وارد بشه، داخل همون صفحه توضیحاتش رو میتونید
+ ببینید.
+
+
+ هر وقت همه چیز رو با خیال راحت وارد کردید و مطمئن بودید که همه چیز درسته، روی دکمه Submit new issue
+ کلیک کنید. مطلب شما وارد بخش issues میشه و بقیهاش رو به عهده اسکریپتها بزارید.
+
+
+ بعد از این که مطلبتون رو وارد کردین این اتفاقات رخ میده:
+
+ اگر مطلب شما طبق قوانین خبرنامه تایید بشه، لیبل verify رو دریافت میکنه. اگر هم تایید نشه کمکتون میکنیم تغییرات لازمه رو اعمال کنین.
+ ما هر هفته خبرنامه ارسال میکنیم. اگر مطلب شما جزو مقالات ارسالی هفته جاری باشه، لیبل current-week رو دریافت میکنه.
+
+ وقتی مطلب شما با موفقیت ارسال میشه، اون issue رو close میکنیم.
+
+
+
+
+
+ آرشیو خبرنامههای ارسال شده
+ هنوز خبرنامهای ارسال نشده است.
+
+
+
+ قوانین
+
+ در حال تکمیل شدن ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.php b/main.php
new file mode 100644
index 0000000..27e6473
--- /dev/null
+++ b/main.php
@@ -0,0 +1,62 @@
+api('issue')->all('softwaretalks', 'newsletter', [
+ 'labels' => 'content,current-week,verified',
+ 'state' => 'open',
+]);
+
+foreach ($issues as $issue) {
+ try {
+ $posts[] = Yaml::parse($issue['body']);
+ } catch (ParseException $exception) {
+ printf('Unable to parse the YAML string: %s', $exception->getMessage());
+ }
+}
+
+/*
+ * 2- make html template based on contents
+ */
+$loader = new FilesystemLoader('./EMAIL_TEMPLATES/');
+$twig = new Environment($loader, [
+ 'strict_variables' => true,
+]);
+
+try {
+ $template = $twig->render('newsletter.html', [
+ 'currentDate' => jdate()->format('%A, %d %B %y'),
+ 'newsletterNumber' => '1',
+ 'posts' => $posts,
+ ]);
+ print_r($template);
+} catch (Exception $exception) {
+ printf('Unable to render template: %s', $exception->getMessage());
+}
+
+/*
+ * 3- send email to all subscribers
+ */
+
+
+/*
+ * 4- close related issues
+ */
+
+
+/*
+ * 5- add archive to website
+ */
From cb526573532a44b379db5f40d4ce6fc004c62638 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 14 Dec 2020 21:45:31 +0330
Subject: [PATCH 007/326] Delete sample.html
---
EMAIL_TEMPLATES/sample.html | 130 ------------------------------------
1 file changed, 130 deletions(-)
delete mode 100644 EMAIL_TEMPLATES/sample.html
diff --git a/EMAIL_TEMPLATES/sample.html b/EMAIL_TEMPLATES/sample.html
deleted file mode 100644
index 5475c6e..0000000
--- a/EMAIL_TEMPLATES/sample.html
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-
- خبرنامه شماره یک
-
-
-
-
-
-
-
- خبرنامه مهندسان نرمافزار
-
-
- شماره اول - چهارشنبه - ۱۹ آذر ۱۳۹۹
-
-
-
-
- تیتر مطلب اول
-
-
- اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
- شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
- فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
- پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
- مطالعه مطلب اصلی
-
-
-
- تیتر مطلب دوم
-
-
- اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
- شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
- فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
- پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
- مطالعه مطلب اصلی
-
-
-
- تیتر مطلب سوم
-
-
- اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
- شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
- فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
- پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
- مطالعه مطلب اصلی
-
-
-
- تیتر مطلب چهارم
-
-
- اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
- شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
- فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
- پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
- مطالعه مطلب اصلی
-
-
-
- تیتر مطلب پنجم
-
-
- اگر شما یک طراح هستین و یا با طراحی های گرافیکی سروکار دارید به متن های برخورده اید که با نام لورم ایپسوم
- شناخته میشوند. لورم ایپسوم یا طرحنما (به انگلیسی: Lorem ipsum) متنی ساختگی و بدون معنی است که برای امتحان
- فونت و یا پر کردن فضا در یک طراحی گرافیکی و یا صنعت چاپ استفاده میشود. طراحان وب و گرافیک از این متن برای
- پرکردن صفحه و ارائه شکل کلی طرح استفاده میکنند.
- مطالعه مطلب اصلی
-
-
-
-
- در این شماره از خبرنامه، دوستان خوبی به نامهای امیرحسین بقایی، حامد سعیدی،
- فلان فلانزاده و بهمان بهمانزاده در تهیه محتوا کمک کردند.
-
-
-
-
- لغو اشتراک :(
- (در صورت تمایل خوشحال میشویم علت لغو اشتراک شما را بدانیم. به ما
- ایمیل بزنید)
-
-
-
-
-
\ No newline at end of file
From 9a6a549cccede8e4b4061ff6bbcbf12d25ae166e Mon Sep 17 00:00:00 2001
From: Hamed Saeedi
Date: Wed, 16 Dec 2020 12:32:21 +0330
Subject: [PATCH 008/326] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..cca3344
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+newsletter.softwaretalks.ir
\ No newline at end of file
From 198571885a955eb7b16a1c57eb188fc2ff5e0e17 Mon Sep 17 00:00:00 2001
From: Hamed Saeedi
Date: Wed, 16 Dec 2020 12:37:34 +0330
Subject: [PATCH 009/326] Delete CNAME
---
CNAME | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 CNAME
diff --git a/CNAME b/CNAME
deleted file mode 100644
index cca3344..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-newsletter.softwaretalks.ir
\ No newline at end of file
From f405ed7e29c25e222eb0c24f0aff58bdec470cb2 Mon Sep 17 00:00:00 2001
From: Hamed Saeedi
Date: Wed, 16 Dec 2020 12:37:49 +0330
Subject: [PATCH 010/326] Create CNAME
---
CNAME | 1 +
1 file changed, 1 insertion(+)
create mode 100644 CNAME
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..cca3344
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+newsletter.softwaretalks.ir
\ No newline at end of file
From e47f7876105b3f502bb7e23cbc02cb0dfe727167 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 21 Dec 2020 12:03:26 +0330
Subject: [PATCH 011/326] Add signup link
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 7ea8569..491b61e 100644
--- a/index.html
+++ b/index.html
@@ -57,7 +57,7 @@ خبرنامه مهندسین نرمافزار
- ثبتنام
+ ثبتنام
مشارکت در محتوا
آرشیو
قوانین
From 1d289e2527af00ae09ef7dbeffed86e9dcfde261 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 21 Dec 2020 23:03:44 +0330
Subject: [PATCH 012/326] Add og meta tags
---
index.html | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 491b61e..356619e 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,10 @@
-->
- خبرنامه مهندسین نرمافزار
+ خبرنامه مهندسین نرمافزار
+
+
+
Date: Mon, 28 Dec 2020 19:48:27 +0330
Subject: [PATCH 013/326] Add mailer (#24)
* Adding send email feature
* Adding unsubscribe link
* Organize code
---
EMAIL_TEMPLATES/newsletter.html | 11 +-
composer.json | 6 +-
composer.lock | 5339 +++++++++++++++++++++++++------
configs.php | 24 +
main.php | 136 +-
5 files changed, 4469 insertions(+), 1047 deletions(-)
create mode 100644 configs.php
diff --git a/EMAIL_TEMPLATES/newsletter.html b/EMAIL_TEMPLATES/newsletter.html
index 2e52cef..ad45b2a 100644
--- a/EMAIL_TEMPLATES/newsletter.html
+++ b/EMAIL_TEMPLATES/newsletter.html
@@ -31,14 +31,7 @@
-
+
خبرنامه مهندسان نرمافزار
- لغو اشتراک
+ لغو اشتراک
(در صورت تمایل خوشحال میشویم علت لغو اشتراک شما را بدانیم. به ما
ایمیل بزنید)
diff --git a/composer.json b/composer.json
index d19d444..a42d91a 100644
--- a/composer.json
+++ b/composer.json
@@ -5,6 +5,10 @@
"php-http/guzzle6-adapter": "^2.0",
"symfony/yaml": "^5.2",
"twig/twig": "^3.0",
- "morilog/jalali": "^3.2"
+ "morilog/jalali": "^3.2",
+ "phpmailer/phpmailer": "^6.2",
+ "sendinblue/api-v3-sdk": "7.x.x",
+ "wyrihaximus/html-compress": "^4.1",
+ "amirbagh75/chalqoz": "^1.0"
}
}
diff --git a/composer.lock b/composer.lock
index 828f4d6..e7feee8 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,55 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "28287adcad7f8dd106f9a6e6ad5d7d65",
+ "content-hash": "4ec9791daa9ff011de9c05a64fa96030",
"packages": [
+ {
+ "name": "amirbagh75/chalqoz",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amirbagh75/chalqoz.git",
+ "reference": "613cbd0ee4c6380db90c0137c2e69c921dfbafb7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amirbagh75/chalqoz/zipball/613cbd0ee4c6380db90c0137c2e69c921dfbafb7",
+ "reference": "613cbd0ee4c6380db90c0137c2e69c921dfbafb7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Amirbagh75\\Chalqoz\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Amirhossein Baghaie",
+ "email": "amirbagh75@gmail.com",
+ "homepage": "https://amirbagh75.ir",
+ "role": "Developer"
+ }
+ ],
+ "description": "Convert persian number to english number and vice versa",
+ "keywords": [
+ "english-number",
+ "persian-number",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/amirbagh75/chalqoz/issues",
+ "source": "https://github.com/amirbagh75/chalqoz/tree/1.0.2"
+ },
+ "time": "2020-11-22T10:59:05+00:00"
+ },
{
"name": "beberlei/assert",
"version": "v3.3.0",
@@ -137,6 +184,75 @@
],
"time": "2020-10-02T12:38:20+00:00"
},
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
{
"name": "guzzlehttp/guzzle",
"version": "6.5.5",
@@ -338,18 +454,60 @@
},
"time": "2020-09-30T07:37:11+00:00"
},
+ {
+ "name": "jalle19/php-yui-compressor",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Jalle19/php-yui-compressor.git",
+ "reference": "eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Jalle19/php-yui-compressor/zipball/eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0",
+ "reference": "eb88c4f7fd8d7c8bd15a1970611d67cca11f71a0",
+ "shasum": ""
+ },
+ "require": {
+ "nervo/yuicompressor": "2.4.*",
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "YUI": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "A modern PHP wrapper for the YUI compressor",
+ "homepage": "https://github.com/Jalle19/php-yui-compressor",
+ "keywords": [
+ "JS",
+ "css",
+ "minify",
+ "yui"
+ ],
+ "support": {
+ "issues": "https://github.com/Jalle19/php-yui-compressor/issues",
+ "source": "https://github.com/Jalle19/php-yui-compressor/tree/1.0.1"
+ },
+ "time": "2014-06-03T12:02:11+00:00"
+ },
{
"name": "knplabs/github-api",
- "version": "v2.17.0",
+ "version": "v2.19.0",
"source": {
"type": "git",
"url": "https://github.com/KnpLabs/php-github-api.git",
- "reference": "26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38"
+ "reference": "271b3ca6f7b315c3dae1fcf2be8bb2912a93587d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38",
- "reference": "26dafcddb9739c0afc16dc74ae6e0ca2f4d0fe38",
+ "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/271b3ca6f7b315c3dae1fcf2be8bb2912a93587d",
+ "reference": "271b3ca6f7b315c3dae1fcf2be8bb2912a93587d",
"shasum": ""
},
"require": {
@@ -373,7 +531,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-2.x": "2.16.x-dev",
+ "dev-2.x": "2.19.x-dev",
"dev-master": "3.0.x-dev"
}
},
@@ -407,7 +565,7 @@
],
"support": {
"issues": "https://github.com/KnpLabs/php-github-api/issues",
- "source": "https://github.com/KnpLabs/php-github-api/tree/v2.17.0"
+ "source": "https://github.com/KnpLabs/php-github-api/tree/v2.19.0"
},
"funding": [
{
@@ -415,37 +573,29 @@
"type": "github"
}
],
- "time": "2020-11-14T17:07:32+00:00"
+ "time": "2020-12-21T18:32:50+00:00"
},
{
- "name": "morilog/jalali",
- "version": "v3.2.0",
+ "name": "linkorb/jsmin-php",
+ "version": "1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/morilog/jalali.git",
- "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5"
+ "url": "https://github.com/linkorb/jsmin-php.git",
+ "reference": "be85d87fc9c27730e7e9ced742b13010dafc1026"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/morilog/jalali/zipball/7ea78b84ce3b5546b01217febb2fba4915dac5e5",
- "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5",
+ "url": "https://api.github.com/repos/linkorb/jsmin-php/zipball/be85d87fc9c27730e7e9ced742b13010dafc1026",
+ "reference": "be85d87fc9c27730e7e9ced742b13010dafc1026",
"shasum": ""
},
"require": {
- "beberlei/assert": "3.*",
- "nesbot/carbon": "^1.21 || ^2.0",
- "php": "^7.0 | ^7.1 | ^7.2 | ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.0"
+ "php": ">=5.0.0"
},
"type": "library",
"autoload": {
- "psr-4": {
- "Morilog\\Jalali\\": "src"
- },
- "files": [
- "src/helpers.php"
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -454,81 +604,73 @@
],
"authors": [
{
- "name": "Milad Rey",
- "email": "miladr@gmail.com"
+ "name": "Joost Faassen",
+ "email": "j.faassen@linkorb.com",
+ "role": "Packaging for Composer"
},
{
- "name": "Morteza Parvini",
- "email": "m.parvini@outlook.com"
+ "name": "Ryan Grove",
+ "email": "ryan@wonko.com",
+ "role": "PHP port"
+ },
+ {
+ "name": "Adam Gofort",
+ "email": "aag@adamgoforth.com",
+ "role": "Updates to the PHP port"
+ },
+ {
+ "name": "Douglas Crockford",
+ "email": "douglas@crockford.com"
}
],
- "description": "This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in PHP applications, based on Jalali (Shamsi) DateTime class.",
+ "description": "Unofficial package of jsmin-php",
+ "homepage": "http://www.github.com/linkorb/jsmin-php",
"keywords": [
- "Jalali",
- "date",
- "datetime",
- "laravel",
- "morilog"
+ "javascript",
+ "jsmin",
+ "minify"
],
"support": {
- "issues": "https://github.com/morilog/jalali/issues",
- "source": "https://github.com/morilog/jalali/tree/v3.2.0"
+ "issues": "https://github.com/linkorb/jsmin-php/issues",
+ "source": "https://github.com/linkorb/jsmin-php/tree/1.0.0"
},
- "time": "2020-12-01T21:26:31+00:00"
+ "time": "2013-03-15T13:16:35+00:00"
},
{
- "name": "nesbot/carbon",
- "version": "2.42.0",
+ "name": "matthiasmullie/minify",
+ "version": "1.3.65",
"source": {
"type": "git",
- "url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "d0463779663437392fe42ff339ebc0213bd55498"
+ "url": "https://github.com/matthiasmullie/minify.git",
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d0463779663437392fe42ff339ebc0213bd55498",
- "reference": "d0463779663437392fe42ff339ebc0213bd55498",
+ "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c",
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "php": "^7.1.8 || ^8.0",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/translation": "^3.4 || ^4.0 || ^5.0"
+ "ext-pcre": "*",
+ "matthiasmullie/path-converter": "~1.1",
+ "php": ">=5.3.0"
},
"require-dev": {
- "doctrine/orm": "^2.7",
- "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
- "kylekatarnls/multi-tester": "^2.0",
- "phpmd/phpmd": "^2.9",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12.54",
- "phpunit/phpunit": "^7.5 || ^8.0",
- "squizlabs/php_codesniffer": "^3.4"
+ "friendsofphp/php-cs-fixer": "~2.0",
+ "matthiasmullie/scrapbook": "~1.0",
+ "phpunit/phpunit": "~4.8"
+ },
+ "suggest": {
+ "psr/cache-implementation": "Cache implementation to use with Minify::cache"
},
"bin": [
- "bin/carbon"
+ "bin/minifycss",
+ "bin/minifyjs"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev",
- "dev-3.x": "3.x-dev"
- },
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- }
- },
"autoload": {
"psr-4": {
- "Carbon\\": "src/Carbon/"
+ "MatthiasMullie\\Minify\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -537,71 +679,66 @@
],
"authors": [
{
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "http://nesbot.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "http://github.com/kylekatarnls"
+ "name": "Matthias Mullie",
+ "email": "minify@mullie.eu",
+ "homepage": "http://www.mullie.eu",
+ "role": "Developer"
}
],
- "description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "http://carbon.nesbot.com",
+ "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
+ "homepage": "http://www.minifier.org",
"keywords": [
- "date",
- "datetime",
- "time"
+ "JS",
+ "css",
+ "javascript",
+ "minifier",
+ "minify"
],
"support": {
- "issues": "https://github.com/briannesbitt/Carbon/issues",
- "source": "https://github.com/briannesbitt/Carbon"
+ "issues": "https://github.com/matthiasmullie/minify/issues",
+ "source": "https://github.com/matthiasmullie/minify/tree/1.3.65"
},
"funding": [
{
- "url": "https://opencollective.com/Carbon",
- "type": "open_collective"
+ "url": "https://github.com/[user1",
+ "type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
- "type": "tidelift"
+ "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/user2",
+ "type": "github"
}
],
- "time": "2020-11-28T14:25:28+00:00"
+ "time": "2020-12-27T21:43:29+00:00"
},
{
- "name": "php-http/cache-plugin",
- "version": "1.7.1",
+ "name": "matthiasmullie/path-converter",
+ "version": "1.1.3",
"source": {
"type": "git",
- "url": "https://github.com/php-http/cache-plugin.git",
- "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7"
+ "url": "https://github.com/matthiasmullie/path-converter.git",
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7",
- "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7",
+ "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0",
- "php-http/client-common": "^1.9 || ^2.0",
- "php-http/message-factory": "^1.0",
- "psr/cache": "^1.0",
- "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ "ext-pcre": "*",
+ "php": ">=5.3.0"
},
"require-dev": {
- "phpspec/phpspec": "^5.1 || ^6.0"
+ "phpunit/phpunit": "~4.8"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6-dev"
- }
- },
"autoload": {
"psr-4": {
- "Http\\Client\\Common\\Plugin\\": "src/"
+ "MatthiasMullie\\PathConverter\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -610,140 +747,97 @@
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Matthias Mullie",
+ "email": "pathconverter@mullie.eu",
+ "homepage": "http://www.mullie.eu",
+ "role": "Developer"
}
],
- "description": "PSR-6 Cache plugin for HTTPlug",
- "homepage": "http://httplug.io",
+ "description": "Relative path converter",
+ "homepage": "http://github.com/matthiasmullie/path-converter",
"keywords": [
- "cache",
- "http",
- "httplug",
- "plugin"
+ "converter",
+ "path",
+ "paths",
+ "relative"
],
"support": {
- "issues": "https://github.com/php-http/cache-plugin/issues",
- "source": "https://github.com/php-http/cache-plugin/tree/master"
+ "issues": "https://github.com/matthiasmullie/path-converter/issues",
+ "source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3"
},
- "time": "2020-07-13T10:55:38+00:00"
+ "time": "2019-02-05T23:41:09+00:00"
},
{
- "name": "php-http/client-common",
- "version": "2.3.0",
+ "name": "meenie/javascript-packer",
+ "version": "1.1",
"source": {
"type": "git",
- "url": "https://github.com/php-http/client-common.git",
- "reference": "e37e46c610c87519753135fb893111798c69076a"
+ "url": "https://github.com/meenie/javascript-packer.git",
+ "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/client-common/zipball/e37e46c610c87519753135fb893111798c69076a",
- "reference": "e37e46c610c87519753135fb893111798c69076a",
+ "url": "https://api.github.com/repos/meenie/javascript-packer/zipball/dcab0159ae1ed9d7535c034fb8afe1e4c3495d22",
+ "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22",
"shasum": ""
},
- "require": {
- "php": "^7.1 || ^8.0",
- "php-http/httplug": "^2.0",
- "php-http/message": "^1.6",
- "php-http/message-factory": "^1.0",
- "psr/http-client": "^1.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.0",
- "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0",
- "symfony/polyfill-php80": "^1.17"
- },
- "require-dev": {
- "doctrine/instantiator": "^1.1",
- "guzzlehttp/psr7": "^1.4",
- "nyholm/psr7": "^1.2",
- "phpspec/phpspec": "^5.1 || ^6.0",
- "phpspec/prophecy": "^1.10.2",
- "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3"
- },
- "suggest": {
- "ext-json": "To detect JSON responses with the ContentTypePlugin",
- "ext-libxml": "To detect XML responses with the ContentTypePlugin",
- "php-http/cache-plugin": "PSR-6 Cache plugin",
- "php-http/logger-plugin": "PSR-3 Logger plugin",
- "php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
- },
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3.x-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Http\\Client\\Common\\": "src/"
- }
+ "files": [
+ "class.JavaScriptPacker.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "LGPL 2.1"
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Nicolas Martin",
+ "role": "Developer"
}
],
- "description": "Common HTTP Client implementations and tools for HTTPlug",
- "homepage": "http://httplug.io",
+ "description": "Composer hosted mirror of the PHP Version of Dean Edwards' JavaScript Packer",
+ "homepage": "http://joliclic.free.fr/php/javascript-packer/en/",
"keywords": [
- "client",
- "common",
- "http",
- "httplug"
+ "javascript packer"
],
"support": {
- "issues": "https://github.com/php-http/client-common/issues",
- "source": "https://github.com/php-http/client-common/tree/2.3.0"
+ "issues": "https://github.com/meenie/javascript-packer/issues",
+ "source": "https://github.com/meenie/javascript-packer/tree/1.1"
},
- "time": "2020-07-21T10:04:13+00:00"
+ "time": "2013-03-25T21:54:33+00:00"
},
{
- "name": "php-http/discovery",
- "version": "1.13.0",
+ "name": "morilog/jalali",
+ "version": "v3.2.0",
"source": {
"type": "git",
- "url": "https://github.com/php-http/discovery.git",
- "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7"
+ "url": "https://github.com/morilog/jalali.git",
+ "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/discovery/zipball/788f72d64c43dc361e7fcc7464c3d947c64984a7",
- "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7",
+ "url": "https://api.github.com/repos/morilog/jalali/zipball/7ea78b84ce3b5546b01217febb2fba4915dac5e5",
+ "reference": "7ea78b84ce3b5546b01217febb2fba4915dac5e5",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "nyholm/psr7": "<1.0"
+ "beberlei/assert": "3.*",
+ "nesbot/carbon": "^1.21 || ^2.0",
+ "php": "^7.0 | ^7.1 | ^7.2 | ^8.0"
},
"require-dev": {
- "graham-campbell/phpspec-skip-example-extension": "^5.0",
- "php-http/httplug": "^1.0 || ^2.0",
- "php-http/message-factory": "^1.0",
- "phpspec/phpspec": "^5.1 || ^6.1",
- "puli/composer-plugin": "1.0.0-beta10"
- },
- "suggest": {
- "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories",
- "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details."
+ "phpunit/phpunit": "~4.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9-dev"
- }
- },
"autoload": {
"psr-4": {
- "Http\\Discovery\\": "src/"
- }
+ "Morilog\\Jalali\\": "src"
+ },
+ "files": [
+ "src/helpers.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -751,127 +845,170 @@
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Milad Rey",
+ "email": "miladr@gmail.com"
+ },
+ {
+ "name": "Morteza Parvini",
+ "email": "m.parvini@outlook.com"
}
],
- "description": "Finds installed HTTPlug implementations and PSR-7 message factories",
- "homepage": "http://php-http.org",
+ "description": "This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in PHP applications, based on Jalali (Shamsi) DateTime class.",
"keywords": [
- "adapter",
- "client",
- "discovery",
- "factory",
- "http",
- "message",
- "psr7"
+ "Jalali",
+ "date",
+ "datetime",
+ "laravel",
+ "morilog"
],
"support": {
- "issues": "https://github.com/php-http/discovery/issues",
- "source": "https://github.com/php-http/discovery/tree/1.13.0"
+ "issues": "https://github.com/morilog/jalali/issues",
+ "source": "https://github.com/morilog/jalali/tree/v3.2.0"
},
- "time": "2020-11-27T14:49:42+00:00"
+ "time": "2020-12-01T21:26:31+00:00"
},
{
- "name": "php-http/guzzle6-adapter",
- "version": "v2.0.1",
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
"source": {
"type": "git",
- "url": "https://github.com/php-http/guzzle6-adapter.git",
- "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f"
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
- "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
"shasum": ""
},
"require": {
- "guzzlehttp/guzzle": "^6.0",
- "php": "^7.1",
- "php-http/httplug": "^2.0",
- "psr/http-client": "^1.0"
+ "php": "^7.1 || ^8.0"
},
- "provide": {
- "php-http/async-client-implementation": "1.0",
- "php-http/client-implementation": "1.0",
- "psr/http-client-implementation": "1.0"
+ "replace": {
+ "myclabs/deep-copy": "self.version"
},
"require-dev": {
- "ext-curl": "*",
- "php-http/client-integration-tests": "^2.0",
- "phpunit/phpunit": "^7.4"
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Http\\Adapter\\Guzzle6\\": "src/"
- }
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- },
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
{
- "name": "David de Boer",
- "email": "david@ddeboer.nl"
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
}
],
- "description": "Guzzle 6 HTTP Adapter",
- "homepage": "http://httplug.io",
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "nervo/yuicompressor",
+ "version": "2.4.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nervo/yuicompressor.git",
+ "reference": "e6e3b215c3998cf6092613c002ae533ae75d7ada"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nervo/yuicompressor/zipball/e6e3b215c3998cf6092613c002ae533ae75d7ada",
+ "reference": "e6e3b215c3998cf6092613c002ae533ae75d7ada",
+ "shasum": ""
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD"
+ ],
+ "description": "YUI Compressor is an open source tool that supports the compression of both JavaScript and CSS files. The JavaScript compression removes comments and white-spaces as well as obfuscates local variables using the smallest possible variable name. CSS compression is done using a regular-expression-based CSS minifier.",
+ "homepage": "https://github.com/yui/yuicompressor",
"keywords": [
- "Guzzle",
- "http"
+ "java",
+ "yui"
],
"support": {
- "issues": "https://github.com/php-http/guzzle6-adapter/issues",
- "source": "https://github.com/php-http/guzzle6-adapter/tree/master"
+ "issues": "https://github.com/nervo/yuicompressor/issues",
+ "source": "https://github.com/nervo/yuicompressor/tree/master"
},
- "time": "2018-12-16T14:44:03+00:00"
+ "time": "2013-09-13T10:26:14+00:00"
},
{
- "name": "php-http/httplug",
- "version": "2.2.0",
+ "name": "nesbot/carbon",
+ "version": "2.43.0",
"source": {
"type": "git",
- "url": "https://github.com/php-http/httplug.git",
- "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9"
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "d32c57d8389113742f4a88725a170236470012e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9",
- "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d32c57d8389113742f4a88725a170236470012e2",
+ "reference": "d32c57d8389113742f4a88725a170236470012e2",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0",
- "php-http/promise": "^1.1",
- "psr/http-client": "^1.0",
- "psr/http-message": "^1.0"
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0"
},
"require-dev": {
- "friends-of-phpspec/phpspec-code-coverage": "^4.1",
- "phpspec/phpspec": "^5.1 || ^6.0"
+ "doctrine/orm": "^2.7",
+ "friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.54",
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "squizlabs/php_codesniffer": "^3.4"
},
+ "bin": [
+ "bin/carbon"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.x-dev"
+ "dev-master": "2.x-dev",
+ "dev-3.x": "3.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"autoload": {
"psr-4": {
- "Http\\Client\\": "src/"
+ "Carbon\\": "src/Carbon/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -880,238 +1017,238 @@
],
"authors": [
{
- "name": "Eric GELOEN",
- "email": "geloen.eric@gmail.com"
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "http://nesbot.com"
},
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://sagikazarmark.hu"
+ "name": "kylekatarnls",
+ "homepage": "http://github.com/kylekatarnls"
}
],
- "description": "HTTPlug, the HTTP client abstraction for PHP",
- "homepage": "http://httplug.io",
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "http://carbon.nesbot.com",
"keywords": [
- "client",
- "http"
+ "date",
+ "datetime",
+ "time"
],
"support": {
- "issues": "https://github.com/php-http/httplug/issues",
- "source": "https://github.com/php-http/httplug/tree/master"
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
},
- "time": "2020-07-13T15:43:23+00:00"
+ "funding": [
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-17T20:55:32+00:00"
},
{
- "name": "php-http/message",
- "version": "1.10.0",
+ "name": "nikic/php-parser",
+ "version": "v4.10.4",
"source": {
"type": "git",
- "url": "https://github.com/php-http/message.git",
- "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d"
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/message/zipball/39db36d5972e9e6d00ea852b650953f928d8f10d",
- "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
+ "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
"shasum": ""
},
"require": {
- "clue/stream-filter": "^1.5",
- "php": "^7.1 || ^8.0",
- "php-http/message-factory": "^1.0.2",
- "psr/http-message": "^1.0"
- },
- "provide": {
- "php-http/message-factory-implementation": "1.0"
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
},
"require-dev": {
- "ergebnis/composer-normalize": "^2.6",
- "ext-zlib": "*",
- "guzzlehttp/psr7": "^1.0",
- "phpspec/phpspec": "^5.1 || ^6.3",
- "slim/slim": "^3.0",
- "zendframework/zend-diactoros": "^1.0"
- },
- "suggest": {
- "ext-zlib": "Used with compressor/decompressor streams",
- "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
- "slim/slim": "Used with Slim Framework PSR-7 implementation",
- "zendframework/zend-diactoros": "Used with Diactoros Factories"
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
},
+ "bin": [
+ "bin/php-parse"
+ ],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.10-dev"
+ "dev-master": "4.9-dev"
}
},
"autoload": {
"psr-4": {
- "Http\\Message\\": "src/"
- },
- "files": [
- "src/filters.php"
- ]
+ "PhpParser\\": "lib/PhpParser"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Nikita Popov"
}
],
- "description": "HTTP Message related tools",
- "homepage": "http://php-http.org",
+ "description": "A PHP parser written in PHP",
"keywords": [
- "http",
- "message",
- "psr-7"
+ "parser",
+ "php"
],
"support": {
- "issues": "https://github.com/php-http/message/issues",
- "source": "https://github.com/php-http/message/tree/1.10.0"
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4"
},
- "time": "2020-11-11T10:19:56+00:00"
+ "time": "2020-12-20T10:01:03+00:00"
},
{
- "name": "php-http/message-factory",
- "version": "v1.0.2",
+ "name": "phar-io/manifest",
+ "version": "2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/php-http/message-factory.git",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
- "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
"shasum": ""
},
"require": {
- "php": ">=5.4",
- "psr/http-message": "^1.0"
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
- "psr-4": {
- "Http\\Message\\": "src/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "Factory interfaces for PSR-7 HTTP Message",
- "homepage": "http://php-http.org",
- "keywords": [
- "factory",
- "http",
- "message",
- "stream",
- "uri"
- ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
- "issues": "https://github.com/php-http/message-factory/issues",
- "source": "https://github.com/php-http/message-factory/tree/master"
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/master"
},
- "time": "2015-12-19T14:08:53+00:00"
+ "time": "2020-06-27T14:33:11+00:00"
},
{
- "name": "php-http/promise",
- "version": "1.1.0",
+ "name": "phar-io/version",
+ "version": "3.0.4",
"source": {
"type": "git",
- "url": "https://github.com/php-http/promise.git",
- "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88"
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "e4782611070e50613683d2b9a57730e9a3ba5451"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
- "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451",
+ "reference": "e4782611070e50613683d2b9a57730e9a3ba5451",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "friends-of-phpspec/phpspec-code-coverage": "^4.3.2",
- "phpspec/phpspec": "^5.1.2 || ^6.2"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Http\\Promise\\": "src/"
- }
+ "classmap": [
+ "src/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Joel Wurtz",
- "email": "joel.wurtz@gmail.com"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
},
{
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
}
],
- "description": "Promise used for asynchronous HTTP requests",
- "homepage": "http://httplug.io",
- "keywords": [
- "promise"
- ],
+ "description": "Library for handling version information and constraints",
"support": {
- "issues": "https://github.com/php-http/promise/issues",
- "source": "https://github.com/php-http/promise/tree/1.1.0"
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.0.4"
},
- "time": "2020-07-07T09:29:14+00:00"
+ "time": "2020-12-13T23:18:30+00:00"
},
{
- "name": "psr/cache",
- "version": "1.0.1",
+ "name": "php-http/cache-plugin",
+ "version": "1.7.1",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ "url": "https://github.com/php-http/cache-plugin.git",
+ "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7",
+ "reference": "a1cb3e2a4f095f820e0a0e078f3dfd2d9c83a0f7",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": "^7.1 || ^8.0",
+ "php-http/client-common": "^1.9 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "psr/cache": "^1.0",
+ "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0 || ^5.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^5.1 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.6-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Cache\\": "src/"
+ "Http\\Client\\Common\\Plugin\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1120,48 +1257,73 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
- "description": "Common interface for caching libraries",
+ "description": "PSR-6 Cache plugin for HTTPlug",
+ "homepage": "http://httplug.io",
"keywords": [
"cache",
- "psr",
- "psr-6"
+ "http",
+ "httplug",
+ "plugin"
],
"support": {
- "source": "https://github.com/php-fig/cache/tree/master"
+ "issues": "https://github.com/php-http/cache-plugin/issues",
+ "source": "https://github.com/php-http/cache-plugin/tree/master"
},
- "time": "2016-08-06T20:24:11+00:00"
+ "time": "2020-07-13T10:55:38+00:00"
},
{
- "name": "psr/http-client",
- "version": "1.0.1",
+ "name": "php-http/client-common",
+ "version": "2.3.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-client.git",
- "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ "url": "https://github.com/php-http/client-common.git",
+ "reference": "e37e46c610c87519753135fb893111798c69076a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
- "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "url": "https://api.github.com/repos/php-http/client-common/zipball/e37e46c610c87519753135fb893111798c69076a",
+ "reference": "e37e46c610c87519753135fb893111798c69076a",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0"
+ "php": "^7.1 || ^8.0",
+ "php-http/httplug": "^2.0",
+ "php-http/message": "^1.6",
+ "php-http/message-factory": "^1.0",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0",
+ "symfony/polyfill-php80": "^1.17"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.1",
+ "guzzlehttp/psr7": "^1.4",
+ "nyholm/psr7": "^1.2",
+ "phpspec/phpspec": "^5.1 || ^6.0",
+ "phpspec/prophecy": "^1.10.2",
+ "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3"
+ },
+ "suggest": {
+ "ext-json": "To detect JSON responses with the ContentTypePlugin",
+ "ext-libxml": "To detect XML responses with the ContentTypePlugin",
+ "php-http/cache-plugin": "PSR-6 Cache plugin",
+ "php-http/logger-plugin": "PSR-3 Logger plugin",
+ "php-http/stopwatch-plugin": "Symfony Stopwatch plugin"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Client\\": "src/"
+ "Http\\Client\\Common\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1170,50 +1332,64 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
- "description": "Common interface for HTTP clients",
- "homepage": "https://github.com/php-fig/http-client",
+ "description": "Common HTTP Client implementations and tools for HTTPlug",
+ "homepage": "http://httplug.io",
"keywords": [
+ "client",
+ "common",
"http",
- "http-client",
- "psr",
- "psr-18"
+ "httplug"
],
"support": {
- "source": "https://github.com/php-fig/http-client/tree/master"
+ "issues": "https://github.com/php-http/client-common/issues",
+ "source": "https://github.com/php-http/client-common/tree/2.3.0"
},
- "time": "2020-06-29T06:28:15+00:00"
+ "time": "2020-07-21T10:04:13+00:00"
},
{
- "name": "psr/http-factory",
- "version": "1.0.1",
+ "name": "php-http/discovery",
+ "version": "1.13.0",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ "url": "https://github.com/php-http/discovery.git",
+ "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
- "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/788f72d64c43dc361e7fcc7464c3d947c64984a7",
+ "reference": "788f72d64c43dc361e7fcc7464c3d947c64984a7",
"shasum": ""
},
"require": {
- "php": ">=7.0.0",
- "psr/http-message": "^1.0"
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "nyholm/psr7": "<1.0"
+ },
+ "require-dev": {
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
+ "php-http/httplug": "^1.0 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.1",
+ "puli/composer-plugin": "1.0.0-beta10"
+ },
+ "suggest": {
+ "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories",
+ "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Http\\Discovery\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1222,52 +1398,66 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
}
],
- "description": "Common interfaces for PSR-7 HTTP message factories",
+ "description": "Finds installed HTTPlug implementations and PSR-7 message factories",
+ "homepage": "http://php-http.org",
"keywords": [
+ "adapter",
+ "client",
+ "discovery",
"factory",
"http",
"message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
+ "psr7"
],
"support": {
- "source": "https://github.com/php-fig/http-factory/tree/master"
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.13.0"
},
- "time": "2019-04-30T12:38:16+00:00"
+ "time": "2020-11-27T14:49:42+00:00"
},
{
- "name": "psr/http-message",
- "version": "1.0.1",
+ "name": "php-http/guzzle6-adapter",
+ "version": "v2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ "url": "https://github.com/php-http/guzzle6-adapter.git",
+ "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
+ "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "guzzlehttp/guzzle": "^6.0",
+ "php": "^7.1",
+ "php-http/httplug": "^2.0",
+ "psr/http-client": "^1.0"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "1.0",
+ "php-http/client-implementation": "1.0",
+ "psr/http-client-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "php-http/client-integration-tests": "^2.0",
+ "phpunit/phpunit": "^7.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "2.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Http\\Adapter\\Guzzle6\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1276,50 +1466,3100 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ },
+ {
+ "name": "David de Boer",
+ "email": "david@ddeboer.nl"
}
],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
+ "description": "Guzzle 6 HTTP Adapter",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "Guzzle",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/guzzle6-adapter/issues",
+ "source": "https://github.com/php-http/guzzle6-adapter/tree/master"
+ },
+ "time": "2018-12-16T14:44:03+00:00"
+ },
+ {
+ "name": "php-http/httplug",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/httplug.git",
+ "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9",
+ "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "php-http/promise": "^1.1",
+ "psr/http-client": "^1.0",
+ "psr/http-message": "^1.0"
+ },
+ "require-dev": {
+ "friends-of-phpspec/phpspec-code-coverage": "^4.1",
+ "phpspec/phpspec": "^5.1 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Eric GELOEN",
+ "email": "geloen.eric@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "HTTPlug, the HTTP client abstraction for PHP",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "client",
+ "http"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/httplug/issues",
+ "source": "https://github.com/php-http/httplug/tree/master"
+ },
+ "time": "2020-07-13T15:43:23+00:00"
+ },
+ {
+ "name": "php-http/message",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/message.git",
+ "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/message/zipball/39db36d5972e9e6d00ea852b650953f928d8f10d",
+ "reference": "39db36d5972e9e6d00ea852b650953f928d8f10d",
+ "shasum": ""
+ },
+ "require": {
+ "clue/stream-filter": "^1.5",
+ "php": "^7.1 || ^8.0",
+ "php-http/message-factory": "^1.0.2",
+ "psr/http-message": "^1.0"
+ },
+ "provide": {
+ "php-http/message-factory-implementation": "1.0"
+ },
+ "require-dev": {
+ "ergebnis/composer-normalize": "^2.6",
+ "ext-zlib": "*",
+ "guzzlehttp/psr7": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.3",
+ "slim/slim": "^3.0",
+ "zendframework/zend-diactoros": "^1.0"
+ },
+ "suggest": {
+ "ext-zlib": "Used with compressor/decompressor streams",
+ "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories",
+ "slim/slim": "Used with Slim Framework PSR-7 implementation",
+ "zendframework/zend-diactoros": "Used with Diactoros Factories"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Message\\": "src/"
+ },
+ "files": [
+ "src/filters.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "HTTP Message related tools",
+ "homepage": "http://php-http.org",
"keywords": [
"http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
+ "message",
+ "psr-7"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/master"
+ "issues": "https://github.com/php-http/message/issues",
+ "source": "https://github.com/php-http/message/tree/1.10.0"
},
- "time": "2016-08-06T14:39:51+00:00"
+ "time": "2020-11-11T10:19:56+00:00"
},
{
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
+ "name": "php-http/message-factory",
+ "version": "v1.0.2",
"source": {
"type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ "url": "https://github.com/php-http/message-factory.git",
+ "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
+ "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": ">=5.4",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Factory interfaces for PSR-7 HTTP Message",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "stream",
+ "uri"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/message-factory/issues",
+ "source": "https://github.com/php-http/message-factory/tree/master"
+ },
+ "time": "2015-12-19T14:08:53+00:00"
+ },
+ {
+ "name": "php-http/promise",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/promise.git",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "friends-of-phpspec/phpspec-code-coverage": "^4.3.2",
+ "phpspec/phpspec": "^5.1.2 || ^6.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Joel Wurtz",
+ "email": "joel.wurtz@gmail.com"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Promise used for asynchronous HTTP requests",
+ "homepage": "http://httplug.io",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/promise/issues",
+ "source": "https://github.com/php-http/promise/tree/1.1.0"
+ },
+ "time": "2020-07-07T09:29:14+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ },
+ "time": "2020-09-03T19:13:55+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "phpmailer/phpmailer",
+ "version": "v6.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPMailer/PHPMailer.git",
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.2",
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.5.6",
+ "yoast/phpunit-polyfills": "^0.2.0"
+ },
+ "suggest": {
+ "ext-mbstring": "Needed to send email in multibyte encoding charset",
+ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "psr/log": "For optional PSR-3 debug logging",
+ "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+ "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPMailer\\PHPMailer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-only"
+ ],
+ "authors": [
+ {
+ "name": "Marcus Bointon",
+ "email": "phpmailer@synchromedia.co.uk"
+ },
+ {
+ "name": "Jim Jagielski",
+ "email": "jimjag@gmail.com"
+ },
+ {
+ "name": "Andy Prevost",
+ "email": "codeworxtech@users.sourceforge.net"
+ },
+ {
+ "name": "Brent R. Matzelle"
+ }
+ ],
+ "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+ "support": {
+ "issues": "https://github.com/PHPMailer/PHPMailer/issues",
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Synchro",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-25T15:24:57+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.12.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "245710e971a030f42e08f4912863805570f23d39"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39",
+ "reference": "245710e971a030f42e08f4912863805570f23d39",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.1",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/1.12.2"
+ },
+ "time": "2020-12-19T10:15:11+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.10.2",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:44:49+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:57:25+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
+ "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.1",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.3",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-12-04T05:05:53+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
+ "time": "2019-04-30T12:38:16+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:24:23+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:55:19+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:18:59+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "sendinblue/api-v3-sdk",
+ "version": "v7.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sendinblue/APIv3-php-library.git",
+ "reference": "4b7c9b1c0aadd90d7fc24286e4247add57606e6c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sendinblue/APIv3-php-library/zipball/4b7c9b1c0aadd90d7fc24286e4247add57606e6c",
+ "reference": "4b7c9b1c0aadd90d7fc24286e4247add57606e6c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "guzzlehttp/guzzle": "^6.2 || ^7.0",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~1.12",
+ "phpunit/phpunit": "^4.8",
+ "squizlabs/php_codesniffer": "~2.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SendinBlue\\Client\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "SendinBlue Developers",
+ "email": "contact@sendinblue.com",
+ "homepage": "https://www.sendinblue.com/"
+ }
+ ],
+ "description": "Official SendinBlue provided RESTFul API V3 php library",
+ "homepage": "https://github.com/sendinblue/APIv3-php-library",
+ "keywords": [
+ "api",
+ "php",
+ "sdk",
+ "sendinblue",
+ "swagger"
+ ],
+ "support": {
+ "issues": "https://github.com/sendinblue/APIv3-php-library/issues",
+ "source": "https://github.com/sendinblue/APIv3-php-library/tree/v7.2.0"
+ },
+ "time": "2020-11-03T07:43:07+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/f789e7ead4c79e04ca9a6d6162fc629c89bd8054",
+ "reference": "f789e7ead4c79e04ca9a6d6162fc629c89bd8054",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\CssSelector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Jean-François Simon",
+ "email": "jeanfrancois.simon@sensiolabs.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:02:38+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-09-07T11:33:47+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/87a2a4a766244e796dd9cb9d6f58c123358cd986",
+ "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony OptionsResolver Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:08:07+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "727d1096295d807c309fb01a851577302394c897"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+ "reference": "727d1096295d807c309fb01a851577302394c897",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v5.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "a04209ba0d1391c828e5b2373181dac63c52ee70"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/a04209ba0d1391c828e5b2373181dac63c52ee70",
+ "reference": "a04209ba0d1391c828e5b2373181dac63c52ee70",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^2.3"
+ },
+ "conflict": {
+ "symfony/config": "<4.4",
+ "symfony/dependency-injection": "<5.0",
+ "symfony/http-kernel": "<5.0",
+ "symfony/twig-bundle": "<5.0",
+ "symfony/yaml": "<4.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-kernel": "^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1.2|^2",
+ "symfony/yaml": "^4.4|^5.0"
},
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
},
"type": "library",
"autoload": {
"files": [
- "src/getallheaders.php"
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -1328,38 +4568,59 @@
],
"authors": [
{
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "A polyfill for getallheaders.",
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
"support": {
- "issues": "https://github.com/ralouphie/getallheaders/issues",
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ "source": "https://github.com/symfony/translation/tree/v5.2.1"
},
- "time": "2019-03-08T08:55:37+00:00"
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-08T17:03:37+00:00"
},
{
- "name": "symfony/deprecation-contracts",
- "version": "v2.2.0",
+ "name": "symfony/translation-contracts",
+ "version": "v2.3.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
- "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=7.2.5"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-master": "2.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -1367,9 +4628,9 @@
}
},
"autoload": {
- "files": [
- "function.php"
- ]
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1385,10 +4646,18 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "A generic function and convention to trigger deprecation notices",
+ "description": "Generic abstractions related to translation",
"homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/master"
+ "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0"
},
"funding": [
{
@@ -1404,32 +4673,43 @@
"type": "tidelift"
}
],
- "time": "2020-09-07T11:33:47+00:00"
+ "time": "2020-09-28T13:05:58+00:00"
},
{
- "name": "symfony/options-resolver",
- "version": "v5.2.0",
+ "name": "symfony/yaml",
+ "version": "v5.2.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986"
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "290ea5e03b8cf9b42c783163123f54441fb06939"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/87a2a4a766244e796dd9cb9d6f58c123358cd986",
- "reference": "87a2a4a766244e796dd9cb9d6f58c123358cd986",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/290ea5e03b8cf9b42c783163123f54441fb06939",
+ "reference": "290ea5e03b8cf9b42c783163123f54441fb06939",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php73": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<4.4"
+ },
+ "require-dev": {
+ "symfony/console": "^4.4|^5.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
},
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
+ "Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -1449,15 +4729,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony OptionsResolver Component",
+ "description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.2.0"
+ "source": "https://github.com/symfony/yaml/tree/v5.2.1"
},
"funding": [
{
@@ -1473,214 +4748,407 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T12:08:07+00:00"
+ "time": "2020-12-08T17:02:38+00:00"
},
{
- "name": "symfony/polyfill-ctype",
- "version": "v1.20.0",
+ "name": "tedivm/jshrink",
+ "version": "v1.3.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+ "url": "https://github.com/tedious/JShrink.git",
+ "reference": "566e0c731ba4e372be2de429ef7d54f4faf4477a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
- "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "url": "https://api.github.com/repos/tedious/JShrink/zipball/566e0c731ba4e372be2de429ef7d54f4faf4477a",
+ "reference": "566e0c731ba4e372be2de429ef7d54f4faf4477a",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.6|^7.0"
},
- "suggest": {
- "ext-ctype": "For best performance"
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.8",
+ "php-coveralls/php-coveralls": "^1.1.0",
+ "phpunit/phpunit": "^6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JShrink": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Robert Hafner",
+ "email": "tedivm@tedivm.com"
+ }
+ ],
+ "description": "Javascript Minifier built in PHP",
+ "homepage": "http://github.com/tedious/JShrink",
+ "keywords": [
+ "javascript",
+ "minifier"
+ ],
+ "support": {
+ "issues": "https://github.com/tedious/JShrink/issues",
+ "source": "https://github.com/tedious/JShrink/tree/master"
+ },
+ "time": "2019-06-28T18:11:46+00:00"
+ },
+ {
+ "name": "thecodingmachine/safe",
+ "version": "v1.3.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thecodingmachine/safe.git",
+ "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
+ "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12",
+ "squizlabs/php_codesniffer": "^3.2",
+ "thecodingmachine/phpstan-strict-rules": "^0.12"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "0.1-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
+ "Safe\\": [
+ "lib/",
+ "deprecated/",
+ "generated/"
+ ]
},
"files": [
- "bootstrap.php"
+ "deprecated/apc.php",
+ "deprecated/libevent.php",
+ "deprecated/mssql.php",
+ "deprecated/stats.php",
+ "lib/special_cases.php",
+ "generated/apache.php",
+ "generated/apcu.php",
+ "generated/array.php",
+ "generated/bzip2.php",
+ "generated/calendar.php",
+ "generated/classobj.php",
+ "generated/com.php",
+ "generated/cubrid.php",
+ "generated/curl.php",
+ "generated/datetime.php",
+ "generated/dir.php",
+ "generated/eio.php",
+ "generated/errorfunc.php",
+ "generated/exec.php",
+ "generated/fileinfo.php",
+ "generated/filesystem.php",
+ "generated/filter.php",
+ "generated/fpm.php",
+ "generated/ftp.php",
+ "generated/funchand.php",
+ "generated/gmp.php",
+ "generated/gnupg.php",
+ "generated/hash.php",
+ "generated/ibase.php",
+ "generated/ibmDb2.php",
+ "generated/iconv.php",
+ "generated/image.php",
+ "generated/imap.php",
+ "generated/info.php",
+ "generated/ingres-ii.php",
+ "generated/inotify.php",
+ "generated/json.php",
+ "generated/ldap.php",
+ "generated/libxml.php",
+ "generated/lzf.php",
+ "generated/mailparse.php",
+ "generated/mbstring.php",
+ "generated/misc.php",
+ "generated/msql.php",
+ "generated/mysql.php",
+ "generated/mysqli.php",
+ "generated/mysqlndMs.php",
+ "generated/mysqlndQc.php",
+ "generated/network.php",
+ "generated/oci8.php",
+ "generated/opcache.php",
+ "generated/openssl.php",
+ "generated/outcontrol.php",
+ "generated/password.php",
+ "generated/pcntl.php",
+ "generated/pcre.php",
+ "generated/pdf.php",
+ "generated/pgsql.php",
+ "generated/posix.php",
+ "generated/ps.php",
+ "generated/pspell.php",
+ "generated/readline.php",
+ "generated/rpminfo.php",
+ "generated/rrd.php",
+ "generated/sem.php",
+ "generated/session.php",
+ "generated/shmop.php",
+ "generated/simplexml.php",
+ "generated/sockets.php",
+ "generated/sodium.php",
+ "generated/solr.php",
+ "generated/spl.php",
+ "generated/sqlsrv.php",
+ "generated/ssdeep.php",
+ "generated/ssh2.php",
+ "generated/stream.php",
+ "generated/strings.php",
+ "generated/swoole.php",
+ "generated/uodbc.php",
+ "generated/uopz.php",
+ "generated/url.php",
+ "generated/var.php",
+ "generated/xdiff.php",
+ "generated/xml.php",
+ "generated/xmlrpc.php",
+ "generated/yaml.php",
+ "generated/yaz.php",
+ "generated/zip.php",
+ "generated/zlib.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
+ "description": "PHP core functions that throw exceptions instead of returning FALSE on error",
+ "support": {
+ "issues": "https://github.com/thecodingmachine/safe/issues",
+ "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3"
+ },
+ "time": "2020-10-28T17:51:34+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
"authors": [
{
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
}
],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/master"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/theseer",
"type": "github"
- },
+ }
+ ],
+ "time": "2020-07-12T23:59:07+00:00"
+ },
+ {
+ "name": "tubalmartin/cssmin",
+ "version": "v4.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "cogpowered/finediff": "0.3.*",
+ "phpunit/phpunit": "4.8.*"
+ },
+ "bin": [
+ "cssmin"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "tubalmartin\\CssMin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
+ "name": "Túbal Martín",
+ "homepage": "http://tubalmartin.me/"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "description": "A PHP port of the YUI CSS compressor",
+ "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+ "keywords": [
+ "compress",
+ "compressor",
+ "css",
+ "cssmin",
+ "minify",
+ "yui"
+ ],
+ "support": {
+ "issues": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues",
+ "source": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port"
+ },
+ "time": "2018-01-15T15:26:51+00:00"
},
{
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.20.0",
+ "name": "twig/twig",
+ "version": "v3.1.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
- "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
},
- "suggest": {
- "ext-intl": "For best performance"
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "dev-master": "3.1-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
+ "Twig\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
+ "BSD-3-Clause"
],
"authors": [
{
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
},
{
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
+ "name": "Twig Team",
+ "role": "Contributors"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
}
],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
"keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
+ "templating"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0"
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.1.1"
},
"funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
"type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-10-27T19:28:23+00:00"
},
{
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.20.0",
+ "name": "voku/html-min",
+ "version": "4.4.8",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "727d1096295d807c309fb01a851577302394c897"
+ "url": "https://github.com/voku/HtmlMin.git",
+ "reference": "4f700584abd70b308b7d06b8e4cfcc31711faaf9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
- "reference": "727d1096295d807c309fb01a851577302394c897",
+ "url": "https://api.github.com/repos/voku/HtmlMin/zipball/4f700584abd70b308b7d06b8e4cfcc31711faaf9",
+ "reference": "4f700584abd70b308b7d06b8e4cfcc31711faaf9",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-dom": "*",
+ "php": ">=7.0.0",
+ "voku/simple_html_dom": "~4.7.23"
},
- "suggest": {
- "ext-intl": "For best performance"
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
+ "voku\\": "src/voku/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1688,80 +5156,71 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/"
}
],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
+ "description": "HTML Compressor and Minifier",
+ "homepage": "https://github.com/voku/HtmlMin",
"keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
+ "compress",
+ "compression",
+ "compressor",
+ "html",
+ "minifier"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
+ "issues": "https://github.com/voku/HtmlMin/issues",
+ "source": "https://github.com/voku/HtmlMin/tree/master"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
+ "url": "https://www.paypal.me/moelleken",
"type": "custom"
},
{
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/voku",
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-08-11T22:13:23+00:00"
},
{
- "name": "symfony/polyfill-mbstring",
- "version": "v1.20.0",
+ "name": "voku/simple_html_dom",
+ "version": "4.7.28",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+ "url": "https://github.com/voku/simple_html_dom.git",
+ "reference": "78d5894c7f0facfb4fb6369af15b1a87baea958c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
- "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+ "url": "https://api.github.com/repos/voku/simple_html_dom/zipball/78d5894c7f0facfb4fb6369af15b1a87baea958c",
+ "reference": "78d5894c7f0facfb4fb6369af15b1a87baea958c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-simplexml": "*",
+ "php": ">=7.0.0",
+ "symfony/css-selector": "~3.0 || ~4.0 || ~5.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
},
"suggest": {
- "ext-mbstring": "For best performance"
+ "voku/portable-utf8": "If you need e.g. UTF-8 fixed output."
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
+ "voku\\helper\\": "src/voku/helper/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1769,76 +5228,78 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "dimabdc",
+ "email": "support@titor.ru",
+ "homepage": "http://github.com/dimabdc",
+ "role": "Developer"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/",
+ "role": "Developer"
}
],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
+ "description": "Simple HTML DOM package.",
+ "homepage": "http://simplehtmldom.sourceforge.net/",
"keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
+ "HTML Parser",
+ "dom",
+ "php dom"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
+ "issues": "https://github.com/voku/simple_html_dom/issues",
+ "source": "https://github.com/voku/simple_html_dom/tree/4.7.28"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
+ "url": "https://www.paypal.me/moelleken",
"type": "custom"
},
{
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/voku",
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/simple_html_dom",
"type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-11-17T23:30:43+00:00"
},
{
- "name": "symfony/polyfill-php72",
- "version": "v1.20.0",
+ "name": "webmozart/assert",
+ "version": "1.9.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
- "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
},
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
- "files": [
- "bootstrap.php"
- ]
+ "Webmozart\\Assert\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1846,157 +5307,106 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
}
],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
- "homepage": "https://symfony.com",
+ "description": "Assertions to validate method input/output with nice error messages.",
"keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
+ "assert",
+ "check",
+ "validate"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
+ "issues": "https://github.com/webmozart/assert/issues",
+ "source": "https://github.com/webmozart/assert/tree/master"
},
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-07-08T17:02:28+00:00"
},
{
- "name": "symfony/polyfill-php73",
- "version": "v1.20.0",
+ "name": "websharks/css-minifier",
+ "version": "150820",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+ "url": "https://github.com/websharks/css-minifier.git",
+ "reference": "da1d0254c41e1f59c7337aa444d743e6056046ff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
- "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "url": "https://api.github.com/repos/websharks/css-minifier/zipball/da1d0254c41e1f59c7337aa444d743e6056046ff",
+ "reference": "da1d0254c41e1f59c7337aa444d743e6056046ff",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "ext-mbstring": "*",
+ "php": ">=5.3"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "WebSharks\\CssMinifier\\": "src/includes/classes"
}
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
},
- "funding": [
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-3.0+"
+ ],
+ "authors": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
+ "name": "websharks",
+ "homepage": "http://websharks-inc.com/",
+ "role": "company"
},
{
- "url": "https://github.com/fabpot",
- "type": "github"
+ "name": "jaswsinc",
+ "homepage": "http://jaswsinc.com/",
+ "role": "developer"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
+ "name": "raamdev",
+ "homepage": "http://raam.org/",
+ "role": "developer"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "description": "Compresses CSS.",
+ "homepage": "https://github.com/websharks/css-minifier",
+ "keywords": [
+ "compressor",
+ "css",
+ "websharks"
+ ],
+ "support": {
+ "issues": "https://github.com/websharks/css-minifier/issues",
+ "source": "https://github.com/websharks/css-minifier"
+ },
+ "time": "2015-08-21T03:19:25+00:00"
},
{
- "name": "symfony/polyfill-php80",
- "version": "v1.20.0",
+ "name": "wyrihaximus/compress",
+ "version": "1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+ "url": "https://github.com/WyriHaximus/php-compress.git",
+ "reference": "66fd05aec43a6367bfa9b325722fca3f83e9d471"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
- "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "url": "https://api.github.com/repos/WyriHaximus/php-compress/zipball/66fd05aec43a6367bfa9b325722fca3f83e9d471",
+ "reference": "66fd05aec43a6367bfa9b325722fca3f83e9d471",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": "^8 || ^7.4",
+ "phpunit/phpunit": "^9.4"
},
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.20-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
+ "require-dev": {
+ "wyrihaximus/test-utilities": "^3.3.1"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "classmap": [
- "Resources/stubs"
- ]
+ "WyriHaximus\\Compress\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2004,101 +5414,51 @@
],
"authors": [
{
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
}
],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
+ "description": "Compress marker interface and utility compressors",
"keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
+ "compress"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
+ "issues": "https://github.com/WyriHaximus/php-compress/issues",
+ "source": "https://github.com/WyriHaximus/php-compress/tree/1.2.0"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/WyriHaximus",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-10-23T14:02:19+00:00"
+ "time": "2020-11-29T15:12:24+00:00"
},
{
- "name": "symfony/translation",
- "version": "v5.2.0",
+ "name": "wyrihaximus/constants",
+ "version": "1.6.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/translation.git",
- "reference": "52f486a707510884450df461b5a6429dd7a67379"
+ "url": "https://github.com/WyriHaximus/php-constants.git",
+ "reference": "32ceffdd881593c7fa24d8fcbf9deb58687484cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/52f486a707510884450df461b5a6429dd7a67379",
- "reference": "52f486a707510884450df461b5a6429dd7a67379",
+ "url": "https://api.github.com/repos/WyriHaximus/php-constants/zipball/32ceffdd881593c7fa24d8fcbf9deb58687484cb",
+ "reference": "32ceffdd881593c7fa24d8fcbf9deb58687484cb",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15",
- "symfony/translation-contracts": "^2.3"
- },
- "conflict": {
- "symfony/config": "<4.4",
- "symfony/dependency-injection": "<5.0",
- "symfony/http-kernel": "<5.0",
- "symfony/twig-bundle": "<5.0",
- "symfony/yaml": "<4.4"
- },
- "provide": {
- "symfony/translation-implementation": "2.0"
- },
- "require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/intl": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1.2|^2",
- "symfony/yaml": "^4.4|^5.0"
- },
- "suggest": {
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
+ "php": "^8 || ^7 || ^5.3"
},
"type": "library",
"autoload": {
"files": [
- "Resources/functions.php"
- ],
- "psr-4": {
- "Symfony\\Component\\Translation\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
+ "src/Boolean/constants_include.php",
+ "src/ComposerAutoloader/constants_include.php",
+ "src/HTTPStatusCodes/constants_include.php",
+ "src/Numeric/constants_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2107,68 +5467,55 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "https://www.wyrihaximus.net/"
}
],
- "description": "Symfony Translation Component",
- "homepage": "https://symfony.com",
+ "description": "Collection of constants for PHP",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.2.0"
+ "issues": "https://github.com/WyriHaximus/php-constants/issues",
+ "source": "https://github.com/WyriHaximus/php-constants/tree/1.6.0"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/WyriHaximus",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-11-28T11:24:18+00:00"
+ "time": "2020-11-28T12:04:43+00:00"
},
{
- "name": "symfony/translation-contracts",
- "version": "v2.3.0",
+ "name": "wyrihaximus/css-compress",
+ "version": "1.1.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/translation-contracts.git",
- "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
+ "url": "https://github.com/WyriHaximus/php-css-compress.git",
+ "reference": "6391e1750524d2b9081c4d579975ccaa6d2f4bbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
- "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "url": "https://api.github.com/repos/WyriHaximus/php-css-compress/zipball/6391e1750524d2b9081c4d579975ccaa6d2f4bbb",
+ "reference": "6391e1750524d2b9081c4d579975ccaa6d2f4bbb",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "jalle19/php-yui-compressor": "^1.0",
+ "matthiasmullie/minify": "^1.3",
+ "php": "^8 || ^7.4",
+ "thecodingmachine/safe": "^1.0 || ^0.1",
+ "tubalmartin/cssmin": "^4.1",
+ "websharks/css-minifier": "150820",
+ "wyrihaximus/compress": "^1.1",
+ "wyrihaximus/constants": "^1.6"
},
- "suggest": {
- "symfony/translation-implementation": ""
+ "require-dev": {
+ "wyrihaximus/test-utilities": "^3.3.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.3-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
"autoload": {
"psr-4": {
- "Symfony\\Contracts\\Translation\\": ""
+ "WyriHaximus\\CssCompress\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2177,82 +5524,68 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
}
],
- "description": "Generic abstractions related to translation",
- "homepage": "https://symfony.com",
+ "description": "Compress/minify your CSS",
"keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
+ "compress",
+ "html"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0"
+ "issues": "https://github.com/WyriHaximus/php-css-compress/issues",
+ "source": "https://github.com/WyriHaximus/php-css-compress/tree/1.1.0"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/WyriHaximus",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-09-28T13:05:58+00:00"
+ "time": "2020-11-29T16:58:59+00:00"
},
{
- "name": "symfony/yaml",
- "version": "v5.2.0",
+ "name": "wyrihaximus/html-compress",
+ "version": "4.1.2",
"source": {
"type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598"
+ "url": "https://github.com/WyriHaximus/HtmlCompress.git",
+ "reference": "2db09023e66ffdf20d6f9231a85cc0cbc950035d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
- "reference": "bb73619b2ae5121bbbcd9f191dfd53ded17ae598",
+ "url": "https://api.github.com/repos/WyriHaximus/HtmlCompress/zipball/2db09023e66ffdf20d6f9231a85cc0cbc950035d",
+ "reference": "2db09023e66ffdf20d6f9231a85cc0cbc950035d",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-ctype": "~1.8"
+ "php": "^7.4 || ^8.0",
+ "thecodingmachine/safe": "^1.1",
+ "voku/html-min": "^4.4.8",
+ "voku/simple_html_dom": "^4.7.17",
+ "wyrihaximus/compress": "^1.1",
+ "wyrihaximus/constants": "^1.5",
+ "wyrihaximus/css-compress": "^1.0.1",
+ "wyrihaximus/js-compress": "^2.0.1 || ^3.0.0 || ^4.0.0"
},
"conflict": {
- "symfony/console": "<4.4"
+ "voku/simple_html_dom": "<4.7.28"
},
"require-dev": {
- "symfony/console": "^4.4|^5.0"
- },
- "suggest": {
- "symfony/console": "For validating YAML files using the lint command"
+ "wyrihaximus/test-utilities": "^3.3.1"
},
- "bin": [
- "Resources/bin/yaml-lint"
- ],
"type": "library",
+ "extra": {
+ "unused": [
+ "slevomat/coding-standard"
+ ]
+ },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "WyriHaximus\\HtmlCompress\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2260,110 +5593,88 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
}
],
- "description": "Symfony Yaml Component",
- "homepage": "https://symfony.com",
+ "description": "Compress/minify your HTML",
+ "keywords": [
+ "compress",
+ "html"
+ ],
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.2.0"
+ "issues": "https://github.com/WyriHaximus/HtmlCompress/issues",
+ "source": "https://github.com/WyriHaximus/HtmlCompress/tree/4.1.2"
},
"funding": [
{
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/WyriHaximus",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
}
],
- "time": "2020-11-28T10:57:20+00:00"
+ "time": "2020-12-19T22:01:32+00:00"
},
{
- "name": "twig/twig",
- "version": "v3.1.1",
+ "name": "wyrihaximus/js-compress",
+ "version": "4.0.0",
"source": {
"type": "git",
- "url": "https://github.com/twigphp/Twig.git",
- "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737"
+ "url": "https://github.com/WyriHaximus/php-js-compress.git",
+ "reference": "7adb73778942480e0fd469a3634da63f3b1770e9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737",
- "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "url": "https://api.github.com/repos/WyriHaximus/php-js-compress/zipball/7adb73778942480e0fd469a3634da63f3b1770e9",
+ "reference": "7adb73778942480e0fd469a3634da63f3b1770e9",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-mbstring": "^1.3"
+ "jalle19/php-yui-compressor": "^1.0",
+ "linkorb/jsmin-php": "1.0.0",
+ "matthiasmullie/minify": "^1.3",
+ "meenie/javascript-packer": "1.1",
+ "php": "^7.4 || ^8.0",
+ "tedivm/jshrink": "^1.3",
+ "wyrihaximus/compress": "^1.2",
+ "wyrihaximus/constants": "^1.6"
},
"require-dev": {
- "psr/container": "^1.0",
- "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ "wyrihaximus/test-utilities": "^3.3.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.1-dev"
- }
- },
"autoload": {
"psr-4": {
- "Twig\\": "src/"
+ "WyriHaximus\\JsCompress\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com",
- "homepage": "http://fabien.potencier.org",
- "role": "Lead Developer"
- },
- {
- "name": "Twig Team",
- "role": "Contributors"
- },
- {
- "name": "Armin Ronacher",
- "email": "armin.ronacher@active-4.com",
- "role": "Project Founder"
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com",
+ "homepage": "http://wyrihaximus.net/"
}
],
- "description": "Twig, the flexible, fast, and secure template language for PHP",
- "homepage": "https://twig.symfony.com",
+ "description": "Compress/minify your JavaScript",
"keywords": [
- "templating"
+ "compress",
+ "html"
],
"support": {
- "issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.1.1"
+ "issues": "https://github.com/WyriHaximus/php-js-compress/issues",
+ "source": "https://github.com/WyriHaximus/php-js-compress/tree/4.0.0"
},
"funding": [
{
- "url": "https://github.com/fabpot",
+ "url": "https://github.com/WyriHaximus",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/twig/twig",
- "type": "tidelift"
}
],
- "time": "2020-10-27T19:28:23+00:00"
+ "time": "2020-12-19T19:56:03+00:00"
}
],
"packages-dev": [],
diff --git a/configs.php b/configs.php
new file mode 100644
index 0000000..e55b27c
--- /dev/null
+++ b/configs.php
@@ -0,0 +1,24 @@
+ 'softwaretalks',
+ 'REPOSITORY_NAME' => 'newsletter',
+ 'LABELS' => [
+ 'content',
+ 'current-week',
+ 'verified'
+ ],
+ 'STATE' => 'open',
+ 'EMAIL_TEMPLATE_DIR' => './EMAIL_TEMPLATES/',
+ 'EMAIL_TEMPLATE_FILE_NAME' => 'newsletter.html',
+ 'PAKAT_API_KEY' => getenv('PAKAT_API_KEY'),
+ 'PAKAT_SMTP_HOST' => 'smtp-relay.sendinblue.com',
+ 'PAKAT_SMTP_PORT' => '587',
+ 'PAKAT_SMTP_USERNAME' => getenv('PAKAT_SMTP_USERNAME'),
+ 'PAKAT_SMTP_PASSWORD' => getenv('PAKAT_SMTP_PASSWORD'),
+ 'PAKAT_SMTP_EMAIL_NAME' => 'Softwaretalks newsletter',
+ 'PAKAT_SMTP_EMAIL_ADDRESS' => 'newsletter@softwaretalks.ir',
+ 'PAKAT_SMTP_DEBUG' => false,
+ 'NEWSLETTER_LIST_ID' => '2',
+ 'CAN_SEND_EMAIL' => true
+];
diff --git a/main.php b/main.php
index 27e6473..9ae54f7 100644
--- a/main.php
+++ b/main.php
@@ -1,62 +1,152 @@
Fetch issues from GitHub' . PHP_EOL);
$posts = [];
-$issues = $githubClient->api('issue')->all('softwaretalks', 'newsletter', [
- 'labels' => 'content,current-week,verified',
- 'state' => 'open',
+
+$githubClient = new Client();
+$issues = $githubClient->api('issue')->all($configs['REPOSITORY_ORGANIZATION'], $configs['REPOSITORY_NAME'], [
+ 'labels' => implode(",", $configs['LABELS']),
+ 'state' => $configs['STATE']
]);
-foreach ($issues as $issue) {
- try {
+try {
+ foreach ($issues as $issue) {
$posts[] = Yaml::parse($issue['body']);
- } catch (ParseException $exception) {
- printf('Unable to parse the YAML string: %s', $exception->getMessage());
}
+ if (count($posts) === 0) {
+ die("There is no post!\n");
+ }
+} catch (Exception $exception) {
+ die("Unable to parse the YAML string: {$exception->getMessage()}" . PHP_EOL);
}
/*
- * 2- make html template based on contents
+ *
+ * 2- Generate HTML template based on issues
+ *
*/
-$loader = new FilesystemLoader('./EMAIL_TEMPLATES/');
+printf('--> Generate HTML template based on issues' . PHP_EOL);
+$htmlTemplate = "";
+
+$loader = new FilesystemLoader($configs['EMAIL_TEMPLATE_DIR']);
$twig = new Environment($loader, [
'strict_variables' => true,
]);
try {
- $template = $twig->render('newsletter.html', [
- 'currentDate' => jdate()->format('%A, %d %B %y'),
- 'newsletterNumber' => '1',
- 'posts' => $posts,
+ $template = $twig->render($configs['EMAIL_TEMPLATE_FILE_NAME'], [
+ 'currentDate' => Chalqoz::convertEnglishNumbersToPersian(jdate()->format('%A، %d %B %y')),
+ 'newsletterNumber' => Chalqoz::convertEnglishNumbersToPersian('1'),
+ 'posts' => $posts,
]);
- print_r($template);
+ $htmlCompress = Factory::constructSmallest();
+ $htmlTemplate = $htmlCompress->compress($template);
} catch (Exception $exception) {
- printf('Unable to render template: %s', $exception->getMessage());
+ die("Unable to render template: {$exception->getMessage()}" . PHP_EOL);
}
/*
- * 3- send email to all subscribers
+ *
+ * 3- Fetch a list of registered users
+ *
*/
+printf('--> Fetch a list of registered users' . PHP_EOL);
+$userEmails = [];
+$pakatConfig = Configuration::getDefaultConfiguration()->setApiKey('api-key', $configs['PAKAT_API_KEY']);
+$contactsInstance = new ContactsApi(
+ new GuzzleHttp\Client(),
+ $pakatConfig
+);
+
+try {
+ $contacts = $contactsInstance->getContactsFromList($configs['NEWSLETTER_LIST_ID'])->getContacts();
+ if (count($contacts) === 0) {
+ die("There is no user!" . PHP_EOL);
+ }
+ foreach ($contacts as $contact) {
+ if ($contact['emailBlacklisted'] === false) {
+ array_push($userEmails, $contact['email']);
+ }
+ }
+} catch (Exception $exception) {
+ die("Exception when calling AccountApi->getContactsFromList: {$exception->getMessage()}" . PHP_EOL);
+}
+
+/*
+ *
+ * 4- Send email to all users with SMTP server
+ *
+ */
+printf('--> Send email to all users with SMTP server' . PHP_EOL);
+
+if($configs['CAN_SEND_EMAIL']) {
+ $mail = new PHPMailer(true);
+ try {
+ $mail->isSMTP();
+ $mail->SMTPDebug = $configs['PAKAT_SMTP_DEBUG'];
+ $mail->SMTPAuth = true;
+ $mail->Timeout = 60;
+ $mail->Host = $configs['PAKAT_SMTP_HOST'];
+ $mail->Port = $configs['PAKAT_SMTP_PORT'];
+ $mail->Username = $configs['PAKAT_SMTP_USERNAME'];
+ $mail->Password = $configs['PAKAT_SMTP_PASSWORD'];
+ $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
+ $mail->CharSet = 'UTF-8';
+ $mail->Subject = 'خبرنامه Software Talks، شماره یک';
+ $mail->Body = $htmlTemplate;
+ foreach ($userEmails as $key => $value) {
+ $mail->addAddress($value);
+ }
+ $mail->setFrom($configs['PAKAT_SMTP_EMAIL_ADDRESS'], $configs['PAKAT_SMTP_EMAIL_NAME']);
+ $mail->send();
+ } catch (Exception $exception) {
+ die("Message could not be sent. Mailer Error: {$exception->getMessage()}" . PHP_EOL);
+ }
+}
/*
- * 4- close related issues
+ *
+ * 5- close related issues
+ * It is currently manual.
+ *
*/
/*
- * 5- add archive to website
+ *
+ * 6- add archive to website
+ * It is currently manual.
+ *
*/
+
+
+/*
+ *
+ * Done.
+ *
+ */
+
+$scriptEndedAt = microtime(true);
+printf('--> Done. Good job, it took %s seconds.' . PHP_EOL, $scriptEndedAt-$scriptStartedAt);
From 36628457efe1ba56a814c0d959aab627de2d0ae0 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 28 Dec 2020 19:49:29 +0330
Subject: [PATCH 014/326] Update CONTENT_CONTRIBUTE_TEMPLATE.md
---
.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
index 8a00bb1..810539e 100644
--- a/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE/CONTENT_CONTRIBUTE_TEMPLATE.md
@@ -9,7 +9,7 @@ assignees: amirbagh75, Hameds
---
##### نام و نامخانوادگی شما
-fullName: ""
+userFullName: ""
##### لینک مطلب رو کامل وارد کنید.
postLink: ""
From bb5f301f4cbf88e8fb68bc2925858580c2471aad Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 28 Dec 2020 19:56:49 +0330
Subject: [PATCH 015/326] --
---
main.php | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/main.php b/main.php
index 9ae54f7..8460abf 100644
--- a/main.php
+++ b/main.php
@@ -5,16 +5,15 @@
require_once __DIR__ . '/vendor/autoload.php';
$configs = require_once __DIR__ . '/configs.php';
-use Amirbagh75\Chalqoz\Chalqoz;
-use Github\Client;
-use PHPMailer\PHPMailer\PHPMailer;
use SendinBlue\Client\Api\ContactsApi;
+use WyriHaximus\HtmlCompress\Factory;
use SendinBlue\Client\Configuration;
+use PHPMailer\PHPMailer\PHPMailer;
+use Twig\Loader\FilesystemLoader;
use Symfony\Component\Yaml\Yaml;
+use Amirbagh75\Chalqoz\Chalqoz;
use Twig\Environment;
-use Twig\Loader\FilesystemLoader;
-use WyriHaximus\HtmlCompress\Factory;
-
+use Github\Client;
/*
*
From 4df325c386364d71fa090e7edfd6032107c8419d Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Mon, 28 Dec 2020 19:59:24 +0330
Subject: [PATCH 016/326] Update main.php
---
main.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/main.php b/main.php
index 8460abf..9bbdbec 100644
--- a/main.php
+++ b/main.php
@@ -34,7 +34,7 @@
$posts[] = Yaml::parse($issue['body']);
}
if (count($posts) === 0) {
- die("There is no post!\n");
+ die('There is no post!' . PHP_EOL);
}
} catch (Exception $exception) {
die("Unable to parse the YAML string: {$exception->getMessage()}" . PHP_EOL);
From 251c6c694e79ad75f499fefe264f3e6856902ef0 Mon Sep 17 00:00:00 2001
From: amirbagh75
Date: Mon, 28 Dec 2020 20:03:33 +0330
Subject: [PATCH 017/326] Check empty env
---
configs.php | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configs.php b/configs.php
index e55b27c..415af72 100644
--- a/configs.php
+++ b/configs.php
@@ -1,5 +1,12 @@
'softwaretalks',
'REPOSITORY_NAME' => 'newsletter',
From f2b8a02d49bdb6b770539adc42ba5de47c68c0a2 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Thu, 31 Dec 2020 09:55:20 +0330
Subject: [PATCH 018/326] Fix bug: replace To with BCC (#36)
---
main.php | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/main.php b/main.php
index 9bbdbec..6867ebb 100644
--- a/main.php
+++ b/main.php
@@ -54,13 +54,13 @@
]);
try {
- $template = $twig->render($configs['EMAIL_TEMPLATE_FILE_NAME'], [
+ $htmlTemplate = $twig->render($configs['EMAIL_TEMPLATE_FILE_NAME'], [
'currentDate' => Chalqoz::convertEnglishNumbersToPersian(jdate()->format('%A، %d %B %y')),
'newsletterNumber' => Chalqoz::convertEnglishNumbersToPersian('1'),
'posts' => $posts,
]);
- $htmlCompress = Factory::constructSmallest();
- $htmlTemplate = $htmlCompress->compress($template);
+ $minifier = Factory::constructSmallest();
+ $minifiedHtmlTemplate = $minifier->compress($htmlTemplate);
} catch (Exception $exception) {
die("Unable to render template: {$exception->getMessage()}" . PHP_EOL);
}
@@ -114,9 +114,9 @@
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->CharSet = 'UTF-8';
$mail->Subject = 'خبرنامه Software Talks، شماره یک';
- $mail->Body = $htmlTemplate;
+ $mail->Body = $minifiedHtmlTemplate;
foreach ($userEmails as $key => $value) {
- $mail->addAddress($value);
+ $mail->addBCC($value);
}
$mail->setFrom($configs['PAKAT_SMTP_EMAIL_ADDRESS'], $configs['PAKAT_SMTP_EMAIL_NAME']);
$mail->send();
@@ -127,7 +127,7 @@
/*
*
- * 5- close related issues
+ * 5- Close related issues
* It is currently manual.
*
*/
@@ -135,7 +135,7 @@
/*
*
- * 6- add archive to website
+ * 6- Add archive to website
* It is currently manual.
*
*/
From 5e08caa02eb9f7740f0fbf25d2e71b53c044ff1d Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Thu, 31 Dec 2020 10:53:52 +0330
Subject: [PATCH 019/326] --
---
index.html | 1 -
1 file changed, 1 deletion(-)
diff --git a/index.html b/index.html
index 356619e..eed5774 100644
--- a/index.html
+++ b/index.html
@@ -134,7 +134,6 @@ قوانین
-
From 288af291cb8ecc998992fe5e58632c3347f2848b Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Thu, 31 Dec 2020 11:07:50 +0330
Subject: [PATCH 020/326] Add test list (#40)
---
configs.php | 13 +++++++++----
main.php | 51 ++++++++++++++++++++++++++++-----------------------
2 files changed, 37 insertions(+), 27 deletions(-)
diff --git a/configs.php b/configs.php
index 415af72..031f96a 100644
--- a/configs.php
+++ b/configs.php
@@ -7,6 +7,10 @@
die('Please set ENV' . PHP_EOL);
}
+if(!in_array(getenv('SEND_ENV', true), ['test', 'production'])) {
+ putenv('SEND_ENV=test');
+}
+
return [
'REPOSITORY_ORGANIZATION' => 'softwaretalks',
'REPOSITORY_NAME' => 'newsletter',
@@ -18,14 +22,15 @@
'STATE' => 'open',
'EMAIL_TEMPLATE_DIR' => './EMAIL_TEMPLATES/',
'EMAIL_TEMPLATE_FILE_NAME' => 'newsletter.html',
- 'PAKAT_API_KEY' => getenv('PAKAT_API_KEY'),
+ 'PAKAT_API_KEY' => getenv('PAKAT_API_KEY', true),
'PAKAT_SMTP_HOST' => 'smtp-relay.sendinblue.com',
'PAKAT_SMTP_PORT' => '587',
- 'PAKAT_SMTP_USERNAME' => getenv('PAKAT_SMTP_USERNAME'),
- 'PAKAT_SMTP_PASSWORD' => getenv('PAKAT_SMTP_PASSWORD'),
+ 'PAKAT_SMTP_USERNAME' => getenv('PAKAT_SMTP_USERNAME', true),
+ 'PAKAT_SMTP_PASSWORD' => getenv('PAKAT_SMTP_PASSWORD', true),
'PAKAT_SMTP_EMAIL_NAME' => 'Softwaretalks newsletter',
'PAKAT_SMTP_EMAIL_ADDRESS' => 'newsletter@softwaretalks.ir',
'PAKAT_SMTP_DEBUG' => false,
+ 'NEWSLETTER_TEST_LIST_ID' => '8',
'NEWSLETTER_LIST_ID' => '2',
- 'CAN_SEND_EMAIL' => true
+ 'SEND_ENV' => getenv('SEND_ENV', true)
];
diff --git a/main.php b/main.php
index 6867ebb..1d38fcb 100644
--- a/main.php
+++ b/main.php
@@ -80,7 +80,14 @@
);
try {
- $contacts = $contactsInstance->getContactsFromList($configs['NEWSLETTER_LIST_ID'])->getContacts();
+ $newsletterListID = "";
+ if($configs['SEND_ENV'] === 'test') {
+ $newsletterListID = $configs['NEWSLETTER_TEST_LIST_ID'];
+ }
+ elseif($configs['SEND_ENV'] === 'production') {
+ $newsletterListID = $configs['NEWSLETTER_LIST_ID'];
+ }
+ $contacts = $contactsInstance->getContactsFromList($newsletterListID)->getContacts();
if (count($contacts) === 0) {
die("There is no user!" . PHP_EOL);
}
@@ -100,29 +107,27 @@
*/
printf('--> Send email to all users with SMTP server' . PHP_EOL);
-if($configs['CAN_SEND_EMAIL']) {
- $mail = new PHPMailer(true);
- try {
- $mail->isSMTP();
- $mail->SMTPDebug = $configs['PAKAT_SMTP_DEBUG'];
- $mail->SMTPAuth = true;
- $mail->Timeout = 60;
- $mail->Host = $configs['PAKAT_SMTP_HOST'];
- $mail->Port = $configs['PAKAT_SMTP_PORT'];
- $mail->Username = $configs['PAKAT_SMTP_USERNAME'];
- $mail->Password = $configs['PAKAT_SMTP_PASSWORD'];
- $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
- $mail->CharSet = 'UTF-8';
- $mail->Subject = 'خبرنامه Software Talks، شماره یک';
- $mail->Body = $minifiedHtmlTemplate;
- foreach ($userEmails as $key => $value) {
- $mail->addBCC($value);
- }
- $mail->setFrom($configs['PAKAT_SMTP_EMAIL_ADDRESS'], $configs['PAKAT_SMTP_EMAIL_NAME']);
- $mail->send();
- } catch (Exception $exception) {
- die("Message could not be sent. Mailer Error: {$exception->getMessage()}" . PHP_EOL);
+$mail = new PHPMailer(true);
+try {
+ $mail->isSMTP();
+ $mail->SMTPDebug = $configs['PAKAT_SMTP_DEBUG'];
+ $mail->SMTPAuth = true;
+ $mail->Timeout = 60;
+ $mail->Host = $configs['PAKAT_SMTP_HOST'];
+ $mail->Port = $configs['PAKAT_SMTP_PORT'];
+ $mail->Username = $configs['PAKAT_SMTP_USERNAME'];
+ $mail->Password = $configs['PAKAT_SMTP_PASSWORD'];
+ $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
+ $mail->CharSet = 'UTF-8';
+ $mail->Subject = 'خبرنامه Software Talks، شماره یک';
+ $mail->Body = $minifiedHtmlTemplate;
+ foreach ($userEmails as $key => $value) {
+ $mail->addBCC($value);
}
+ $mail->setFrom($configs['PAKAT_SMTP_EMAIL_ADDRESS'], $configs['PAKAT_SMTP_EMAIL_NAME']);
+ $mail->send();
+} catch (Exception $exception) {
+ die("Message could not be sent. Mailer Error: {$exception->getMessage()}" . PHP_EOL);
}
/*
From c119801bad2be2c6f54e21b578e056ae3e41b283 Mon Sep 17 00:00:00 2001
From: Amir Hossein Baghaie
Date: Thu, 31 Dec 2020 11:40:18 +0330
Subject: [PATCH 021/326] Add temporary texts (#41)
---
EMAIL_TEMPLATES/newsletter.html | 133 +++++++++++++++++++-------------
main.php | 4 +-
2 files changed, 82 insertions(+), 55 deletions(-)
diff --git a/EMAIL_TEMPLATES/newsletter.html b/EMAIL_TEMPLATES/newsletter.html
index ad45b2a..e6cd049 100644
--- a/EMAIL_TEMPLATES/newsletter.html
+++ b/EMAIL_TEMPLATES/newsletter.html
@@ -1,15 +1,14 @@
-
+
- خبرنامه شماره یک
-
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+ شماره صفرم -
+ پنجشنبه، ۱۱ دی ۹۹
+ سلام. به خبرنامه
+ هفتگی SoftwareTalks خوش آمدید. این خبرنامه روی گیتهاب در دسترس است و محتوای آن نیز توسط
+ مشارکتکنندگان در پروژه اپنسورس خبرنامه تامین میشود. این اولین تلاشهای ما برای ساخت یک خبرنامه هفتگی در
+ حوزه توسعه نرمافزار است و خوشحال میشویم نظرات و پیشنهادات شما را در گیتهاب پروژه بخوانیم. هر هفته پنجشنبهها شماره
+ جدید خبرنامه ارسال میشود. با معرفی خبرنامه به دوستان و همکاران خود و مشارکت در تامین محتوا، به بهبود پروژه
+ و اشتراکگذاری بهتر منابع کمک کنید.
+
+
+ روشهایی پرکاربرد برای طراحی سیستمهایی با مقیاس بالا
+ توی این ریپوزیتوری گیتهاب، نویسنده توضیح میده که توی طراحی و پیادهسازی برنامهها و زیرساختهای
+ نرمافزارهایی با مقیاس بالا معمولا چه روشهایی به کار برده میشه. حتی اگر حالا حالاها سروکارتون با
+ سیستمهای بزرگ نمیفته، خوندن این مطلب میتونه براتون هیجانانگیز باشه همونطور که برای من بود. مطالعه مطلب اصلی
+
+ آیا بهرهوری برنامهنویسان را میتوان اندازه گرفت؟
+ این مطلب از وبلاگ استکاورفلو به پاسخ دادن به این پرسشها میپردازد که وقتی کاری که برنامهنویسها
+ میکنند نامحسوس است، چطور باید بهرهوری آنها را اندازه گرفت و آیا این کار شدنی است؟ مطالعه مطلب اصلی
+ بازبینی کدهای گو توسط فرود - یوتوب فارسی
+ یکی از بهترین کارهایی که به یادگیری بهتر و جلب مشارکت بیشتر در پروژههای اپنسورس کمک میکند، بازبینی کد
+ آنهاست. فرود غفوری مدتی است روی پروژههایی که به زبان گو نوشته شده، به صورت زنده بازبینی و بهبود کد را
+ از یوتوب استریم میکند. مطالعه مطلب اصلی
+ آن ۴۰ میلیثانیه اضافی: داستان ویژگی عجیبی که عرضه دستگاهی با اپ نتفلیکس را در
+ اروپا متوقف کرد!
+ اپلیکیشن نتفلیکس روی صدها تلویزیون هوشمند و دستگاههای مختلف از جمله اندروید تیویها اجرا میشه. اما یک
+ باگ مرموز عرضه یک دستگاه خاص اندرویدی در اروپا با اپ نتفلیکس رو متوقف میکنه. درباره کشف این مساله عجیب
+ در «وبلاگ فنی نتفلیکس» بخوانید مطالعه مطلب اصلی
+ کانتینر در لینوکس به بیان ساده
+ کانتینر پروسس ایزولهشده در سطح کرنل و بدون سربار است. چه ارتباطی با داکر دارد؟ تفاوت آن با ماشین مجازی؟
+ پروسس چگونه ایزوله میشود؟ مطالعه مطلب اصلی
+
+ روشهای مختلف ذخیره اطلاعات در مرورگر کاربر و وضعیت آنها در ۲۰۲۱
+ نویسنده در این مقاله انواع روشهای ذخیره اطلاعات در مرورگرهای مدرن و ویژگیها و محدودیتهایشان را بررسی
+ کرده است. از روشهای سادهتر Local Storage و Session Storage تا روشهای پیشرفتهتر IndexedDB و Cookies
+ در این مقاله بررسی شدهاند و مرجع مناسبی برای انتخاب یکی از این روشها در شرایط ویژه پروژه و چالشهای
+ پیش رویتان است. مطالعه مطلب اصلی
+ منتشر شد: Flysystem v2
+ فلای سیستم یک کتابخانه جامع برای زبان php است که با استفاده از آن می توانیم برای فضاهای ذخیره سازی
+ مختلفی همچون دیسک لوکال، گوگل درایو، آمازون، دراپ باکس و... از آن استفاده کنیم. این کتابخانه در نسخه دوم
+ خود موارد جدیدی همچون Exceptionها را اضافه کرده است. مطالعه مطلب اصلی
+
+
+ در این شماره از خبرنامه، دوستان
+ خوبی به نامهای امیرحسین بقایی، حامد سعیدی، سیدمصطفی افزونی، وحید قادری، محمد
+ مهدی غلامرضایی در تهیه محتوا کمک کردند.
+
+ ارسال شده توسط پاکت
+
سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10
+ میتوانید از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
\ No newline at end of file
diff --git a/archives/num1.html b/archives/num1.html
new file mode 100644
index 0000000..ddfa59f
--- /dev/null
+++ b/archives/num1.html
@@ -0,0 +1,109 @@
+
+
+
+ خبرنامه Software Talks، شماره یکم
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+ شماره
+ یکم - پنجشنبه، ۱۸ دی ۹۹
+
+
+ چرا تیمتان احتیاجی به استفاده از pull-request ندارد
+ Pull Request توسط گیتهاب برای مدیریت پروژهای بازمتن معرفی شد تا مدیران این پروژهها راحتتر بتوانند
+ کمکهای خارج از تیم اصلی را بپذیرند. ولی به مرور زمان بسیاری از تیم ها شروع به استفاده از این امکان برای
+ افراد داخل تیم کردند و این کار آنقدر رواج پیدا کرد که خیلی ها این کار را به عنوان یک best practice در
+ نظر میگیرند و چون تا به حال راه دیگری برای اطمینان از اینکه کدها بازبینی شوند، ندیدهاند، تصور میکنند
+ که راه دیگری وجود ندارد. مطالعه مطلب اصلی
+ مانیتورینگ لینوکس با پرومتئوس و گرافانا
+ معرفی ابزارهای پرومتئوس و گرافانا؛ نحوه نصبشون و اینکه چطوری میتونیم خیلی سریع با داکر یک محیط آزمایشی
+ داشته باشیم که به کمک node exporter متریکهای سیستم رو استخراج کرده و به اشکال متفاوت نمایش بدیم.
+ مطالعه مطلب اصلی
+ گیتهاب دوباره به صورت کامل برای ایران در دسترس است
+ بعد از آنکه در اواسط سال ۲۰۱۹ گیتهاب ارائه بخشی عمدهای از خدمات خود را به ایران متوقف و حساب کاربری
+ برنامهنویسان ایرانی را محدود کرد، ۵ ژانویه ۲۰۲۱ مدیرعامل گیتهاب در پست وبلاگی خبر در دسترس قرار گرفتن
+ همه گیتهاب برای ایران را اعلام کرد. گیتهاب اعلام کرد که ۲ سال پیگیر دریافت مجوز از دولت ایالات متحده
+ بوده تا دوباره خدماتش را برقرار کند و به زودی برای سایر کشورهای تحریم شده نظیر سوریه و کریمه هم این
+ خدمات به صورت کامل در دسترس قرار خواهند گرفت مطالعه مطلب اصلی
+ نگاهی به امروز و فردای WebAssembly
+ نقطه شروع برای چیزهایی که لازمه درمورد وب اسمبلی بدونید تا اون رو دنبال کنید و بیشتر یاد بگیرید مطالعه مطلب
+ اصلی
+ کتابچه شرکت Valve برای کارمندان جدیدش (کمپانی پشت Steam و چند بازی معروف مثل
+ کانتر)
+ کمپانیهایی که خیلی بزرگ هستند همیشه از جهات مختلفی مورد توجه قرار میگیرن؛ مثلا گاهی نگاه میکنیم مسائل
+ رو چطوری حل میکنن یا گاهی میبینیم که چه ابزارهایی توسعه دادهاند و چیزهای این مدلی. ولی این دفعه بیاین و
+ دفترچه ورود به شرکت Valve رو بخونین و ببینید وقتی یک کارمند جدید وارد شرکت میشه چه اطلاعاتی بهش داده
+ میشه و چه چیزهایی در اختیارش قرار میگیره. مطالعه مطلب اصلی
+ افسانه مستندسازی در پروژه های نرم افزاری
+ اسد صفری توی این ارائه درباره چالشهای مستندسازی پروژههای نرمافزاری که در ساختار Agile توسعه داده
+ میشوند، صحبت میکنه. مطالعه مطلب
+ اصلی
+ نگاهی به ملاحظات اخلاقی در طراحی و استفاده از ابزار «ادراکات شخصیتی» شرکت
+ آیبیام
+ این مطلب نگاهی به نحوهی طراحی و استفاده از سرویس مبتنی بر یادگیری ماشین «ادراکات شخصیتی» شرکت آیبیام
+ میپردازه و تاثیرات اخلاقی و حقوقیاش رو بررسی میکنه. نویسنده با مطرح کردن مثالهایی، مسائلی مثل سوگیری،
+ ناکامل بودن مستندات، جعبه سیاه بودن مدل یادگیری ماشین رو مورد سوال قرار میده. مطالعه مطلب اصلی
+ چگونه یک استریم به نمایش در می آید؟
+ برای اینکه یه ویدئو به صورت لایو از استریمر به مخاطب برسه، یه پروسه سخت افزاری و نرم افزاری لازمه. تو
+ این مقاله قراره کمی با این مسیر آشنا بشیم و مفاهیم کلی رو دربارش رو بدونیم مطالعه مطلب اصلی
+ کامپایل و حفاظت از پایتون؛ Cython
+ فرض کنید کد پایتون شما قرار است در محلی بکارگیری شود که مدیریت آن با شما نیست، طبیعتا در این حالت باید
+ از کد خود حفاظت کنید. محافظت از سورسکد پایتون کار پیچیدهای نبوده و ابزار یا (بهتر بگویم) کتابخانهای
+ وجود دارد به اسم Cython. مطالعه مطلب اصلی
+
+
+ در این شماره از
+ خبرنامه، دوستان خوبی به نامهای وحید نادری، مارک پشمفروش، حامد سعیدی، هادی
+ اعظمی، امیرحسین بقایی، رویا پاکزاد، حسین ناصری، سیدمصطفی افزونی در تهیه
+ محتوا کمک کردند.
+
+
+ ارسال شده توسط پاکت
+
سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف
+ sota10 میتوانید از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num2.html b/archives/num2.html
new file mode 100644
index 0000000..1b1d226
--- /dev/null
+++ b/archives/num2.html
@@ -0,0 +1,1213 @@
+
+
+
+ خبرنامه شماره ۲
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه
+ مهندسان
+ نرمافزار
+ شماره
+ ۲
+ -
+ پنجشنبه،
+ ۲۵
+ دی
+ ۹۹
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ این
+ متن
+ دو-قسمتی،
+ که
+ در
+ صفحهی
+ ویرگول
+ «تکانه»
+ منتشر
+ شده
+ است،
+ نگاهی
+ میکند
+ به
+ تاریخچهی
+ ورود
+ و
+ حضور
+ زنان
+ در
+ دنیای
+ برنامهنویسی
+ کامپیوتر
+
+
+
+
+
+
+
+
+
+ اگر
+ به
+ حوزه
+ DevOps
+ و
+ Cloud
+ علاقه
+ دارید
+ یا
+ تو
+ این
+ حوزه
+ کار
+ میکنید،
+ داخل
+ این
+ کانال
+ یوتیوبی
+ میتونید
+ آرشیو
+ کنفرانسهای
+ DevOpsCon
+ رو
+ مشاهده
+ کنید.
+
+
+
+
+
+
+
+
+
+ نوشتن
+ کد
+ تمیز،
+ خوانا
+ و
+ قابل
+ توسعه
+ مهارتیه
+ که
+ به
+ مرور
+ و با
+ تمرین
+ زیاد
+ و
+ مطالعه
+ بدست
+ میاد.
+ اگر
+ شما
+ هم
+ از
+ این
+ دسته
+ برنامهنویسان
+ هستید
+ که
+ قصد
+ دارند
+ کد
+ تمیز
+ بنویسند
+ و از
+ قضا
+ PHP
+ هم
+ کار
+ میکنید،
+ پس
+ این
+ ریپوزیتوری
+ Clean
+ code
+ in
+ php
+ رو
+ حتما
+ باید
+ یک
+ نگاهی
+ بندازین.
+
+
+
+
+
+
+
+
+
+ در
+ این
+ مطلب،
+ نویسنده
+ توضیحاتی
+ درباره
+ عملکرد
+ CDN
+ و
+ اینکه
+ چطور
+ CDN
+ ها
+ سرورهای
+ ما
+ رو
+ پشت
+ خودشون
+ قایم
+ میکنند
+ میده.
+ در
+ عین
+ حال
+ توضیح
+ هم
+ میده
+ این
+ قایم
+ شدنه
+ همیشه
+ کارساز
+ نیست!
+
+
+
+
+
+
+
+
+
+ در
+ این
+ ویدئو،
+ سروش
+ در
+ ۹۰
+ دقیقه
+ درباره
+ مفاهیم
+ Aspect
+ Oriented
+ Programming
+ توضیح
+ میدهد
+ و با
+ ذکر
+ مثال
+ و
+ کدنویسی
+ در
+ جاوا
+ کاربرد
+ این
+ مفاهیم
+ را
+ نشان
+ میدهد
+
+
+
+
+
+
+
+
+
+
+ تو
+ این
+ مقاله
+ قراره
+ یه
+ پروژه
+ ساده
+ React
+ رو
+ با
+ استفاده
+ از
+ Docker
+ روی
+ سرور
+ مستقر
+ کنیم
+ و به
+ اصطلاح
+ Dockerize
+ کنیم.
+
+
+
+
+
+
+
+
+
+ ارث
+ بری
+ (inheritance)
+ یک
+ مفهوم
+ بنیادی
+ و
+ کلیدی
+ در
+ برنامهنویسی
+ شیگرا
+ است.در
+ برنامهنویسی
+ نیز
+ این
+ واژه
+ مفهومی
+ مشابه
+ دنیای
+ واقعی
+ دارد
+ و به
+ معنای
+ ارث
+ بردن
+ خصوصیات
+ است.
+ در
+ این
+ نوشته
+ قصد
+ دارم
+ نگاهی
+ دوباره
+ به
+ ارثبری
+ در
+ جاوا
+ داشته
+ باشم.
+ در
+ ادامه
+ به
+ دو
+ سوال
+ درخصوص
+ ارثبری
+ در
+ جاوا
+ پاسخ
+ دهید
+ و
+ توانمندی
+ خود
+ را
+ محک
+ بزنید!
+
+
+
+
+
+
+
+ ---
+
+
+
+ در
+ این
+ شماره
+ از
+ خبرنامه،
+ دوستان
+ خوبی
+ به
+ نامهای
+
رویا
+ پاکزاد ،
+
امیرحسین
+ بقایی ،
+
حامد
+ سعیدی ،
+
علی
+ ناصری ،
+
مرتضی
+ اسدی
+ در
+ تهیه
+ محتوا
+ کمک
+ کردند.
+ شما
+ هم
+ میتوانید
+
با
+ ایجاد
+ یک
+ issue
+ جدید
+ در
+ گیتهاب
+ پروژه،
+ در
+ تهیه
+ محتوای
+ این
+ خبرنامه
+ در
+ شمارههای
+ بعدی
+ به
+ ما
+ کمک
+ کنید.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ سرویس پاکت اسپانسر ارسال
+ ایمیلهای این خبرنامه است.
+ با کد تخفیف sota10 میتوانید از
+ ۱۰ درصد تخفیف در خرید پلنهای
+ پاکت بهرهمند شوید
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num3.html b/archives/num3.html
new file mode 100644
index 0000000..36cd68c
--- /dev/null
+++ b/archives/num3.html
@@ -0,0 +1,1283 @@
+
+
+
+ خبرنامه شماره ۳
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه
+ مهندسان
+ نرمافزار
+ شماره
+ ۳
+ -
+ پنجشنبه
+ ۲
+ بهمن
+ ۹۹
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
به
+ خبرنامه
+ SoftwareTalks
+ خوش
+ آمدید.
+ این
+ یک
+ خبرنامه
+ هفتگی
+ ایمیلی
+ است
+ که
+ در
+ آن
+ هر
+ هفته
+ لینکهایی
+ شامل
+ محتوای
+ مرتبط
+ با
+ توسعه
+ نرمافزار
+ را
+ برای
+ مشترکین
+ ایمیل
+ میکنیم.
+ این
+ یک
+ پروژه
+ اپنسورس
+ است
+ و
+ شما
+ هم
+ میتوانید
+ از
+ طریق
+ ثبت
+ issue
+ جدید
+ در
+ مخزن
+ گیتهاب
+ پروژه
+ به
+ ما
+ در
+ تهیه
+ محتوای
+ خبرنامههای
+ بعدی
+ کمک
+ کنید.
+ اگر
+ خبرنامه
+ را
+ مفید
+ میدانید،
+ اشتراک
+ در
+ آن
+ را
+ به
+ دوستان
+ خود
+ پیشنهاد
+ کنید.
+ صفحه
+ ثبت
+ اشتراک
+ جدید: https://newsletter.softwaretalks.ir
+
+
+
+
+
+
+
+
+ مروری
+ بر
+ مفهوم
+ نرمافزار
+ و
+ دیدهای
+ مختلف
+ به
+ آزادی
+ نرمافزار.
+ همچنین
+ بررسی
+ وضعیت
+ نرمافزار
+ آزاد
+ در
+ ایران
+
+
+
+
+
+
+ کتاب
+ Clean
+ Code
+ نوشتهی
+ Robert
+ C.
+ Martin
+ کتابی
+ نامآشنا
+ برای
+ اکثر
+ ماست
+ و
+ خواندنش
+ به
+ هر
+ توسعهدهندهی
+ نرمافزاری
+ که
+ علاقمند
+ به
+ نوشتن
+ کدهای
+ بهتر
+ و
+ پربازدهتر
+ است،
+ توصیه
+ میشود.
+ اگر
+ این
+ کتاب
+ را
+ نخواندید،
+ الان
+ فرصت
+ خوبی
+ است
+ که
+ به
+ نکات
+ مهم
+ کتاب
+ در
+ این
+ ریپازیتوری
+ گیتهاب
+ نگاهی
+ بیاندازید.
+
+
+
+
+
+
توی
+ این
+ مقاله
+ قراره
+ از
+ Docker
+ مهاجرت
+ کنیم
+ به
+ Docker
+ compose
+ و
+ ببینیم
+ که
+ چقدر
+ کارمون
+ راحت
+ تر
+ میشه
+ برای
+ اجرای
+ همزمان
+ چند
+ پروژه
+
+
+
+
+
+
AWK
+ یک
+ زبان
+ برنامهنویسی
+ مفسری
+ است
+ که
+ برای
+ پردازش
+ متن
+ طراحی
+ شده
+ و
+ عموماً
+ به
+ عنوان
+ ابزاری
+ برای
+ گزارشگیری
+ و
+ استخراج
+ دادهها
+ مورد
+ استفاده
+ قرار
+ میگیرد.
+ این
+ زبان
+ برنامهنویسی،
+ تبدیل
+ به
+ یکی
+ از
+ ویژگیهای
+ استاندارد
+ در
+ سیستمعاملهای
+ خانواده
+ یونیکس
+ شدهاست.
+ در
+ این
+ ویدئو
+ مبانی
+ کار
+ با
+ این
+ زبان
+ و
+ چند
+ نمونه
+ گزارشگیری
+ و
+ همین
+ طور
+ ساختن
+ چندبرنامهٔ
+ کوچک
+ در
+ کامندلاین
+ آموزش
+ داده
+ شده
+ است
+
+
+
+
+
+
+
+
یکی
+ از
+ مواردی
+ که
+ قبل
+ از
+ جلسات
+ مخصوصا
+ جلسات
+ بین
+ المللی
+ باید
+ بدانید
+ اصطلاحات
+ و
+ کلمات
+ اختصاری
+ هست
+ که
+ دونستن
+ اونها
+ باعث
+ میشه
+ تا
+ حد
+ قابل
+ قبولی
+ بتونید
+ با
+ محیط
+ آشنا
+ باشید
+ اگر
+ بار
+ اولتون
+ هست
+ که
+ توی
+ یه
+ جلسه
+ ی
+ تیمی
+ خارجی
+ می
+ خواید
+ شرکت
+ کنید
+ احتمالا
+ خیلی
+ بدردتون
+ میخوره؛
+ البته
+ تیم
+ های
+ خفن
+ ایرانی
+ هم
+ از
+ این
+ اصطلاحات
+ بی
+ بهره
+ نیستن
+
+
+
+
+
+
و
+ Reactive
+ !یکی
+ از
+ overloaded
+ ترین
+ کلمات
+ دنیای
+ امروز
+ برنامه
+ نویسی!
+ در
+ این
+ پست
+ میخوایم
+ Reactive
+ Programming
+ رو
+ خیلی
+ ساده
+ و
+ خودمونی
+ معرفی
+ کنیم...
+
+
+
+
+
+
+
+
+ فلسک
+ یا
+ Flask
+ یکی
+ از
+ کتابخانههای
+ پایتون
+ برای
+ پیادهسازی
+ وبسرویس
+ و
+ API
+ است
+ که
+ بعنوان
+ یک
+ میکروفریمورک
+ ساده
+ اما
+ سبک
+ محسوب
+ میشود.
+ در
+ این
+ نوشتار
+ به
+ چگونگی
+ استفاده
+ از
+ Flask
+ در
+ محیط
+ Production
+ (محیط
+ عملیاتی
+ یا
+ محصول)
+ با
+ استفاده
+ از
+ Reverse
+ Proxy
+ و
+ gunicorn
+ (بعنوان
+ WSGI)
+ و
+ بصورت
+ یک
+ سرویس
+ لینوکسی
+ پرداخته
+ شده
+ است.
+
+
+
+
+
+
+ -----
+
+
+
در
+ این
+ شماره
+ از
+ خبرنامه،
+ دوستان
+ خوبی
+ به
+ نامهای
+ ابراهیم
+ نجاتی،
+ مرتضی
+ اسدی،
+ علی
+ ناصری،
+ وحید
+ نایینی،
+ Amir
+ Shokri،
+ محمد
+ واحدی،
+ سیدمصطفی
+ افزونی
+ در
+ تهیه
+ محتوا
+ کمک
+ کردند
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
سرویس
+ پاکت اسپانسر ارسال ایمیلهای این
+ خبرنامه است.
+
+
با کد
+ تخفیف sota10 میتوانید از ۱۰ درصد
+ تخفیف در خرید پلنهای پاکت
+ بهرهمند شوید
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num4.html b/archives/num4.html
new file mode 100644
index 0000000..2498caa
--- /dev/null
+++ b/archives/num4.html
@@ -0,0 +1,105 @@
+
+
+
+ خبرنامه شماره ۴
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+ شماره ۴ - پنجشنبه، ۰۹ بهمن ۹۹
+
+
+ اصولی کاربردی برای ساختن و طراحی کردن برنامههای مبتنی بر CLI
+ در این وبسایت شما اصول پایه طراحی نرمافزارهای CLI را بدون در نظر گرفتن زبان یا تکنولوژی خاصی یاد
+ میگیرید و همچنین تجربیات خوبی از نویسندگان مطلب درباره best practice های این حوزه، یعنی طراحی مبتنی بر
+ CLI، میآموزید. مطالعه مطلب اصلی
+ Abusing For Loops In C# For Job Security
+ این مطلب آناتومی حلقه for را بررسی میکنه و نشون میده چه کارهایی میشه باهاش انجام داد، البته نوشتن همچین
+ کدی پیشنهاد نمیشه چون در نهایت منجر به افزایش پیچیدگی کدهاتون میشه ولی دونستن اینکه چه کارهایی میشه
+ باهاش انجام داد شاید براتون جالب باشه. مطالعه مطلب اصلی
+ The joy of deleting code
+ حذف کد یکی از مهارتهای خوبیه که هر برنامهنویسی بهتره داشته باشه، بیشتر اوقات برنامهنویسها خیلی به
+ کدشون وابسته میشن و دل کندن از کدی که نوشتن براشون به شدت سخت میشه. در واقع بهتره این اصل رو در نظر
+ بگیرم که کد به عنوان یک بدهی در نظر گرفته میشه، نوشتن کد زیاد به معنای کیفیت بهتر محصول نیست چون هزینه
+ تست و نگهداری کد به مرور زمان بیشتر و بیشتر میشه، کد زمانی به سرمایه تبدیل میشه که در راستای افزودن
+ business value و حل مشکلات دنیای واقعی باشه. این مطلب در مورد لذت (اهمیت) حذف کد نکاتی خوبی رو اشاره
+ میکنه که خوندنش خالی از لطف نیست. مطالعه مطلب اصلی
+ صفر تا صد امریه سربازی: همه چیز درباره امریه دانش بنیان
+ این ویدیو درباره بزرگترین دغدغه پسرهاست،یعنی سربازی!! اگر پسر هستین و از سربازی هم معاف نیستین، احتمالن
+ همیشه به این فکرمیکنین که دو سال از بهترین روز های عمرتون رو باید توی پادگان بگذرونین و دو سال از
+ زندگیتون عقب میفتین. این ویدیو گفته میشه که چجوری میتونین سربازی رو بپیچونین و پادگان نرین. مطالعه مطلب اصلی
+ چند تا کار لازم و ضروری که بعد از خرید VPS باید انجام بدیم
+ وقتی یه سرور میخریم از لحاظ امنیتی توی پایینترین حالت خودش قرار داره. قراره توی این مقاله باهم سرورمون
+ رو تا حد قابل قبولی امن کنیم مطالعه مطلب اصلی
+ پیاده سازی صفحه بندی در APIها
+ بازگرداندن همهی نتایج برای یک Query به ویژه وقتی که شامل تعداد زیادی رکورد باشد ممکن است در طراحی API
+ چالش برانگیز باشد، چرا که باعث ایجاد باری بر روی سرور، کلاینت و شبکه میشود که در اغلب اوقات لزومی
+ ندارد. برای رفع این مشکل اغلب از تکنیک صفحهبندی (Pagination) نتایج استفاده میکنیم. اما آیا فقط یک روش
+ برای صفحهبندی وجود دارد؟ در این مقاله کوتاه نویسنده روشی برای صفحه بندی ارائه میدهد که در مواردی از
+ قبیل infinite scrolling میتواند عملکرد بهتری نسبت به روش مرسوم نشان دهد. مطالعه مطلب اصلی
+
+
+ در این شماره از
+ خبرنامه، دوستان خوبی به نامهای امیرحسین بقایی، سیروان عفیفی، اشکان رحمانی، علی
+ ناصری، وحید نادری در تهیه محتوا کمک کردند.
+ ارسال شده توسط پاکت
+ سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید
+ از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num5.html b/archives/num5.html
new file mode 100644
index 0000000..d52a743
--- /dev/null
+++ b/archives/num5.html
@@ -0,0 +1,97 @@
+
+
+
+ خبرنامه شماره ۵
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+ شماره ۵ - پنجشنبه، ۱٦ بهمن ۹۹
+
+
+ نحوه استفاده از ریپوزیتوری پترن در PHP
+ اگر قصد استفاده از ریپوزیتوری پترن رو داخل PHP دارید، این مقاله دید خوبی به چراییها و چگونگیها میده.
+ مطالعه مطلب اصلی
+ تفاوت بین دیتاآنالیست و دیتاساینتیست
+ شاید اولش حس کنید دیتاآنالیست و دیتاساینتیست تفاوت زیادی ندارن چون در نهایت قراره با داده ها کار کنن ولی
+ در واقع تفاوت های زیادی هم از نظر دانش مورد نیاز دارن و هم جایگاه های شغلی متفاوتی دارن یکم بیشتر بخونید
+ اطلاعات جالبی رو کشف می کنید مطالعه مطلب اصلی
+ با یادگیری عمیق، کمتر پول خرج کن!
+ تیم فنی مسیریاب بلد توی این پست فنی شون درباره این گفتن که چطور مسئله کیفیت تصاویر ماهوارهای رو حل
+ کردن. مطالعه مطلب اصلی
+ آیا لینوکس یک مجرم در زمینه RAMخواری میباشد؟
+ به نظرتون لینوکس داره به طرز غیرمعقولی از RAM استفاده میکنه؟ توی این مطلب بیشتر با عملکرد لینوکس درباره
+ RAMخواری آشنا میشوید. مطالعه مطلب اصلی
+ نحوه قرارداد نوشتن برای پروژه های برنامه نویسی
+ در این پست ویرگول راجع به قرارداد توی پروژه های برنامه نویسی صحبت میشه، چیزی که بیشتر بچه های فریلنسر
+ این حوزه باهاش سر و کار دارن و نکات مهمی که در تنظیم یک پروژه باید رعایت بشه رو بررسی کرده مطالعه مطلب اصلی
+ چجوری روی یک سرور، چند سرویس مختلف رو با استفاده از Nginx و Docker، مستقر
+ کنیم؟
+ اگه براتون سوال شده چجوری چند تا دامین به یک سرور وصل میشه و مدیریتشون با Docker چجوری انجام میشه، تو
+ این مقاله قراره بهش بپردازیم مطالعه مطلب اصلی
+
+
+ در این شماره از
+ خبرنامه، دوستان خوبی به نامهای امیرحسین بقایی، امیر شکری، امیر ابوئی، علی ناصری
+ در تهیه محتوا کمک کردند.
+
+ ارسال شده توسط پاکت
+ سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید
+ از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num6.html b/archives/num6.html
new file mode 100644
index 0000000..ba8877e
--- /dev/null
+++ b/archives/num6.html
@@ -0,0 +1,88 @@
+
+
+
+ خبرنامه شماره ٦
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+ شماره ٦ - پنجشنبه، ۲۳ بهمن ۹۹
+
+
+ توضیح Design Pattern ها با غذا و برنامه واقعی
+ این مخزن گیتهاب، همه دیزاین پترنها را با مثالهایی از صنعت غذا و با برنامههای واقعی توضیح داده تا در
+ دنیای واقعی کاربرد آنها را بررسی کند. همچنین در یک سری ویدئوی یوتوب درباره هر کدام از پروژهها در حال
+ صحبت هستند. مطالعه مطلب اصلی
+ مرجعی رایگان و کامل برای ساختمان دادهها و الگوریتمها با جاوااسکریپت
+
+ در این مخزن گیتهاب، مشارکتکنندگان یک مجموعه بسیار کامل از ساختماندادهها و الگوریتمها را با استفاده
+ از جاوا اسکریپت توضیح دادند. این مخزن به ۱۴ زبان دیگر هم در دسترس است و کاندید بسیار مناسبی برای ترجمه
+ به فارسی است مطالعه مطلب اصلی
+ سه روش برای اندازهگیری کارآیی برنامههای React
+ در این مقاله، محصول اپن سورس Reactime معرفی میشود و سه روش برای تحلیل performance در برنامههای React
+ به کمک این محصول بررسی میشوند. Reactime که یک ابزار debug است کمک میکند تا snapshot هایی از برنامه و
+ state ایجاد شود و امکان سفر در زمان را برای برنامهنویس فراهم میکند مطالعه مطلب اصلی
+ همه چیز درباره رفتن به کارآموزی
+ توی این ویدیو درباره هر چیزی که برای رفتن به کارآموزی برای برنامهنویسی و ورود به بازار کار حرفهای و
+ کسب درآمد نیاز هست توضیح داده شده. مطالعه مطلب اصلی
+
+
+ در این شماره از
+ خبرنامه، دوستان خوبی به نامهای حامد سعیدی، اشکان رحمانی در تهیه محتوا کمک کردند.
+
+ ارسال شده توسط پاکت
+ سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید
+ از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/archives/num7.html b/archives/num7.html
new file mode 100644
index 0000000..1ada9de
--- /dev/null
+++ b/archives/num7.html
@@ -0,0 +1,119 @@
+
+
+
+ خبرنامه شماره ۷
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خبرنامه مهندسان نرمافزار
+
+ شماره ۷ - پنجشنبه، ۳۰ بهمن ۹۹
+
+
+ نکاتی در خصوص پیمایش کدبیس های عظیم
+ در این مقاله نویسنده از مشکلاتی که برای پیمایش کدبیس های حجیم (شامل ده ها یا صدها هزار خط کد) وجود دارد
+ نام میبرد و سپس راه حل هایی جهت رفع و یا بهبود این مشکلات ارائه میکند. مطالعه مطلب اصلی
+ برنامه کن! یک ربات تلگرامی برای اضافه کردن رویدادها به تقویم گوگل
+ برنامه کن یک ربات تلگرامیه که آدما بتونن به راحتی ایونت هایی که میبینن (به خصوص توی تلگرام) رو به تقویم
+ گوگلشون اضافه کنن. سورس این ربات به صورت آزاد منتشر شده و جا برای بهتر شدن زیاد داره.خوشحال میشم ادمای
+ بیشتری ازش استفاده کنن و به دردشون بخوره. مطالعه مطلب اصلی
+ قواعدی برای اسمگذاری توابع و متغیرها
+ برای نامگذاری بهتر متغیرها و به خصوص توابع و متدها، این ریپوزیتوری، قلقها و پترنهای جالبی بهمون
+ یاد میده. مطالعه مطلب اصلی
+ کشف یک باگ در کرنل لینوکس بعد از ۲۴ سال
+ یک باگ در لایه شبکه کرنل لینوکس که باعث از کار افتادن پایپ «آرسنیک» برای انتقال محتواهای حجیم میشد، بعد
+ از ۲۴ سال کشف و برطرف شد. این مقاله شامل یک بررسی کوتاه از کد کرنل، نحوه آدرس دهی مشکل، و در نهایت نحوه
+ دیباگ کردن کرنل و تولید پچ هست. مطالعه مطلب اصلی
+ دیتاست رایگان شرکت مدیریت فناوری بورس تهران
+ احتمالا این روزها همه دیگه روزی چند بار اسم بورس رو شنیدیم و خب سرویس هایی که برای دسترسی به داده های
+ بورس به صورت api موجود هست هم کم نیست ولی خب تا جایی که اطلاع دارم سرویس رایگانی پیدا نمیشه که برای
+ پروژه های کوچولو و شخصی بشه استفاده کرد؛ سایت tsetmc یه ساختار آدرس خاص برای داده های هر سهام داره که به
+ سادگی امکان دریافت دیتای لحظه ای رو دارید اما دقت کنید هر شرکتی دو کد برای ریکوئست زدن لازم داره که با
+ توجه به زیاد بودن سهام ها نیاز هست یک لیست کامل رو داشته باشید که این دیتاست احتمالا کارتون رو راه
+ بندازه مطالعه مطلب اصلی
+ ARCHITECTURE.md
+ در یک پروژه اپن سورس داشتن مستندات برای افرادی که مایل به مشارکت در کد هستند خیلی اهمیت دارد و در واقع
+ میتواند یک نقطه شروع برای مشارکتکنندگان باشد، اما بیشتر اوقات برای افراد تازهکار شروع به همکاری و
+ آشنایی با پروژه ممکن است کمی گیجکننده باشد، در این مطلب یک راهحل خوب پیشنهاد شده است و آن هم داشتن یک
+ فایل است که معماری کلی سیستم را به صورت خلاصه توضیح دهد مطالعه مطلب اصلی
+ تاسیس یک انجمن تخصصی برای مباحث توسعه قرارداد هوشمند به زبان فارسی
+ چند ماه پیش بود که کوینایران با ارتباط هایی که تونسته بود بگیره یه سولارشیپ 1000 دلاری از کانزنسیس(یک
+ شرکت که توی حوزه توسعه بلاکچین اتریوم کار میکنه هستش) برای 7 نفر گرفت (این سولارشیپ مخصوص بانوان بود)
+ گرفت و حالا که این دوره تموم شده این افراد به علاوه چند متخصص دیگه این انجمن رو راه اندازی کردن با هدف
+ انتقال دانش و تجربه مطالعه مطلب اصلی
+ استفاده از اختلاف قیمت در صرافی ها غیرمتمرکز برای آربیتراژ گرفتن با استفاده
+ از قرارداد های هوشمند
+ صرافی ها غیرمتمرکز بر بستر شبک اتریوم این روز ها نوع جدیدی از نوع مبادله رو معرفی کردن . به استفاده کردن
+ از اختلاف قیمت یک چیز در دو بازار متفاوت برای کسب درآمد آربیتراژ گفته میشه.تو بازار های سنتی برای
+ استفاده کردن از موقعیت های آربیتراژ نیاز به نقدینگی هستش ولی توی دنیای دیفای(بازار های مالی غیر متمرکز
+ یا دیسنترالایز فایننس) این محدودیت با مفهمومی به اسم فلش لون (وام های لحظه ای) برداشته شده و هرکسی
+ میتونه بدون داشتن نقدینگی هم از موقیعت های آربیتراژ بین صرافی های مختلف بر بستر اتریوم استفاده کنه و این
+ کار نیاز به برنامه نویسی به زبان سالیدیتی داره. مطالعه مطلب اصلی
+
+
+ در این شماره از
+ خبرنامه، دوستان خوبی به نامهای حسن شهبازی، محمد عرب انواری، امیرحسین بقایی، امیر
+ شکری، سیروان عفیفی، حمید رضا مرادی در تهیه محتوا کمک کردند.
+
+ ارسال شده توسط پاکت
+ سرویس پاکت اسپانسر ارسال ایمیلهای این خبرنامه است. با کد تخفیف sota10 میتوانید
+ از ۱۰ درصد تخفیف در خرید پلنهای پاکت بهرهمند شوید
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
index 2118745..add1849 100644
--- a/index.html
+++ b/index.html
@@ -110,7 +110,16 @@