├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE.md ├── README.md ├── composer.json ├── composer.lock ├── publishes ├── config │ └── database.php └── database │ ├── factories │ └── Post.php │ ├── migrations │ └── posts-create.php │ └── seeds │ ├── DatabaseSeeder.php │ └── PostSeeder.php └── src ├── Console └── Commands │ ├── Factories │ ├── FactoryMakeCommand.php │ └── stubs │ │ └── factory.stub │ ├── Migrate │ ├── BaseCommand.php │ ├── FreshCommand.php │ ├── InstallCommand.php │ ├── MakeCommand.php │ ├── MigrateCommand.php │ ├── RefreshCommand.php │ ├── ResetCommand.php │ ├── RollbackCommand.php │ ├── StatusCommand.php │ └── stubs │ │ └── blank.stub │ └── Seeds │ ├── SeedCommand.php │ ├── SeederMakeCommand.php │ └── stubs │ └── seeder.stub ├── Factory.php ├── Model ├── Attachment.php ├── Comment.php ├── CustomLink.php ├── Menu.php ├── MenuItem.php ├── Option.php ├── Page.php ├── Post.php ├── Tag.php ├── Taxonomy.php ├── Term.php ├── TermRelationship.php └── User.php ├── Providers ├── DatabaseServiceProvider.php ├── MigrationServiceProvider.php ├── PackageServiceProvider.php └── PaginationServiceProvider.php └── Seeder.php /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. 38 | 39 | Further details of specific enforcement policies may be posted separately. 40 | 41 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 42 | 43 | ## Attribution 44 | 45 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], [version 1.4][contributor covenant version 1.4] 46 | 47 | [homepage]: https://www.contributor-covenant.org 48 | [contributor covenant version 1.4]: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 49 | 50 | For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq 51 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2019 Tiny Pixel Collective, LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AcornDB 2 | 3 | ![Package Version](https://img.shields.io/packagist/v/tiny-pixel/acorn-db?style=flat-square) ![Total Downloads](https://img.shields.io/packagist/dt/tiny-pixel/acorn-db?style=flat-square) 4 | 5 | Provides [Sage 10](https://github.com/roots/sage) and other [Acorn projects](https://github.com/roots/acorn) with an eloquent Model layer straight from the heart of the Laravel framework. 6 | 7 | ## Features 8 | 9 | - Eloquent modeling of WordPress tables. 10 | - Out of the box support for [Advanced Custom Fields](https://advancedcustomfields.com). 11 | - Migrations, database seeders and factories. 12 | - Command-line utilities to automate installation and maintenance of your database and business logic. 13 | 14 | ## Requirements 15 | 16 | - [Sage](https://github.com/roots/sage) >= 10.0 17 | - [PHP](https://secure.php.net/manual/en/install.php) >= 7.1.3 18 | - [Composer](https://getcomposer.org) 19 | 20 | ## Installation 21 | 22 | Install via Composer: 23 | 24 | ```bash 25 | $ composer require tiny-pixel/acorn-db 26 | ``` 27 | 28 | After installation, run the following command to publish the configuration files, starter 29 | 30 | ```bash 31 | $ wp acorn vendor:publish 32 | ``` 33 | 34 | ## Bug Reports 35 | 36 | Should you discover a bug in AcornDB, and there are going to be bugs, please [open an issue](https://github.com/pixelcollective/acorn-db/issues). 37 | 38 | ## Contributing 39 | 40 | Contributing, whether it be through PRs, reporting an issue, or suggesting an idea is encouraged and appreciated. 41 | 42 | All contributors absolutely must strictly adhere to our [Code of Conduct](https://github.com/pixelcollective/acorn-db/blob/master/LICENSE.md). 43 | 44 | ## Acknowledgements 45 | 46 | * [Corcel/Corcel](https://github.com/corcel/corcel) 47 | * [drewjbartlett/wordpress-eloquent](https://github.com/drewjbartlett/wordpress-eloquent) 48 | * [tareq1988/wp-eloquent](https://github.com/tareq1988/wp-eloquent) 49 | 50 | ## License 51 | 52 | AcornDB is provided under the [MIT License](https://github.com/pixelcollective/acorn-mail/blob/master/LICENSE.md). 53 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tiny-pixel/acorn-db", 3 | "type": "package", 4 | "license": "MIT", 5 | "description": "Eloquent database support for Acorn projects", 6 | "authors": [ 7 | { 8 | "name": "Kelly Mears", 9 | "email": "kelly@tinypixel.dev" 10 | } 11 | ], 12 | "support": { 13 | "issues": "https://github.com/pixelcollective/acorn-db/issues" 14 | }, 15 | "autoload": { 16 | "psr-4": { 17 | "AcornDB\\": "src/", 18 | "Corcel\\": "src/" 19 | } 20 | }, 21 | "require": { 22 | "php": ">=7.3", 23 | "fzaninotto/faker": "^1", 24 | "illuminate/container": "^7", 25 | "illuminate/database": "^7", 26 | "illuminate/pagination": "^7", 27 | "symfony/console": "^5", 28 | "jgrossi/corcel": "^4.0" 29 | }, 30 | "extra": { 31 | "acorn": { 32 | "providers": [ 33 | "AcornDB\\Providers\\PaginationServiceProvider", 34 | "AcornDB\\Providers\\DatabaseServiceProvider", 35 | "AcornDB\\Providers\\MigrationServiceProvider", 36 | "AcornDB\\Providers\\PackageServiceProvider" 37 | ] 38 | } 39 | }, 40 | "require-dev": { 41 | "squizlabs/php_codesniffer": "^3.4.2", 42 | "roots/support": "dev-master", 43 | "illuminate/console": "^7.25", 44 | "roots/acorn": "^1.0.9" 45 | }, 46 | "scripts": { 47 | "lint": [ 48 | "phpcs --ignore=vendor,publishes --extensions=php --standard=PSR12 ." 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "ce2f3c9bc71c5d0a2b6f4fb579a27317", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "2.0.3", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", 20 | "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.2 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "doctrine/coding-standard": "^7.0", 28 | "phpstan/phpstan": "^0.11", 29 | "phpstan/phpstan-phpunit": "^0.11", 30 | "phpstan/phpstan-strict-rules": "^0.11", 31 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 32 | }, 33 | "type": "library", 34 | "extra": { 35 | "branch-alias": { 36 | "dev-master": "2.0.x-dev" 37 | } 38 | }, 39 | "autoload": { 40 | "psr-4": { 41 | "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" 42 | } 43 | }, 44 | "notification-url": "https://packagist.org/downloads/", 45 | "license": [ 46 | "MIT" 47 | ], 48 | "authors": [ 49 | { 50 | "name": "Guilherme Blanco", 51 | "email": "guilhermeblanco@gmail.com" 52 | }, 53 | { 54 | "name": "Roman Borschel", 55 | "email": "roman@code-factory.org" 56 | }, 57 | { 58 | "name": "Benjamin Eberlei", 59 | "email": "kontakt@beberlei.de" 60 | }, 61 | { 62 | "name": "Jonathan Wage", 63 | "email": "jonwage@gmail.com" 64 | }, 65 | { 66 | "name": "Johannes Schmitt", 67 | "email": "schmittjoh@gmail.com" 68 | } 69 | ], 70 | "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", 71 | "homepage": "https://www.doctrine-project.org/projects/inflector.html", 72 | "keywords": [ 73 | "inflection", 74 | "inflector", 75 | "lowercase", 76 | "manipulation", 77 | "php", 78 | "plural", 79 | "singular", 80 | "strings", 81 | "uppercase", 82 | "words" 83 | ], 84 | "funding": [ 85 | { 86 | "url": "https://www.doctrine-project.org/sponsorship.html", 87 | "type": "custom" 88 | }, 89 | { 90 | "url": "https://www.patreon.com/phpdoctrine", 91 | "type": "patreon" 92 | }, 93 | { 94 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", 95 | "type": "tidelift" 96 | } 97 | ], 98 | "time": "2020-05-29T15:13:26+00:00" 99 | }, 100 | { 101 | "name": "fzaninotto/faker", 102 | "version": "v1.9.1", 103 | "source": { 104 | "type": "git", 105 | "url": "https://github.com/fzaninotto/Faker.git", 106 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" 107 | }, 108 | "dist": { 109 | "type": "zip", 110 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", 111 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", 112 | "shasum": "" 113 | }, 114 | "require": { 115 | "php": "^5.3.3 || ^7.0" 116 | }, 117 | "require-dev": { 118 | "ext-intl": "*", 119 | "phpunit/phpunit": "^4.8.35 || ^5.7", 120 | "squizlabs/php_codesniffer": "^2.9.2" 121 | }, 122 | "type": "library", 123 | "extra": { 124 | "branch-alias": { 125 | "dev-master": "1.9-dev" 126 | } 127 | }, 128 | "autoload": { 129 | "psr-4": { 130 | "Faker\\": "src/Faker/" 131 | } 132 | }, 133 | "notification-url": "https://packagist.org/downloads/", 134 | "license": [ 135 | "MIT" 136 | ], 137 | "authors": [ 138 | { 139 | "name": "François Zaninotto" 140 | } 141 | ], 142 | "description": "Faker is a PHP library that generates fake data for you.", 143 | "keywords": [ 144 | "data", 145 | "faker", 146 | "fixtures" 147 | ], 148 | "time": "2019-12-12T13:22:17+00:00" 149 | }, 150 | { 151 | "name": "hautelook/phpass", 152 | "version": "0.3.5", 153 | "source": { 154 | "type": "git", 155 | "url": "https://github.com/hautelook/phpass.git", 156 | "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd" 157 | }, 158 | "dist": { 159 | "type": "zip", 160 | "url": "https://api.github.com/repos/hautelook/phpass/zipball/b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", 161 | "reference": "b4cbd9b67ed3ef5672ec79d8e0c46d24bd844abd", 162 | "shasum": "" 163 | }, 164 | "require": { 165 | "php": ">=5.3.3" 166 | }, 167 | "type": "library", 168 | "autoload": { 169 | "psr-0": { 170 | "Hautelook": "src/" 171 | } 172 | }, 173 | "notification-url": "https://packagist.org/downloads/", 174 | "license": [ 175 | "Public Domain" 176 | ], 177 | "authors": [ 178 | { 179 | "name": "Solar Designer", 180 | "email": "solar@openwall.com", 181 | "homepage": "http://openwall.com/phpass/" 182 | } 183 | ], 184 | "description": "Portable PHP password hashing framework", 185 | "homepage": "http://github.com/hautelook/phpass/", 186 | "keywords": [ 187 | "blowfish", 188 | "crypt", 189 | "password", 190 | "security" 191 | ], 192 | "time": "2012-08-31T00:00:00+00:00" 193 | }, 194 | { 195 | "name": "illuminate/container", 196 | "version": "v7.25.0", 197 | "source": { 198 | "type": "git", 199 | "url": "https://github.com/illuminate/container.git", 200 | "reference": "42d4242eaad399ec63aea39ea5976f342a799411" 201 | }, 202 | "dist": { 203 | "type": "zip", 204 | "url": "https://api.github.com/repos/illuminate/container/zipball/42d4242eaad399ec63aea39ea5976f342a799411", 205 | "reference": "42d4242eaad399ec63aea39ea5976f342a799411", 206 | "shasum": "" 207 | }, 208 | "require": { 209 | "illuminate/contracts": "^7.0", 210 | "php": "^7.2.5", 211 | "psr/container": "^1.0" 212 | }, 213 | "provide": { 214 | "psr/container-implementation": "1.0" 215 | }, 216 | "type": "library", 217 | "extra": { 218 | "branch-alias": { 219 | "dev-master": "7.x-dev" 220 | } 221 | }, 222 | "autoload": { 223 | "psr-4": { 224 | "Illuminate\\Container\\": "" 225 | } 226 | }, 227 | "notification-url": "https://packagist.org/downloads/", 228 | "license": [ 229 | "MIT" 230 | ], 231 | "authors": [ 232 | { 233 | "name": "Taylor Otwell", 234 | "email": "taylor@laravel.com" 235 | } 236 | ], 237 | "description": "The Illuminate Container package.", 238 | "homepage": "https://laravel.com", 239 | "time": "2020-07-14T17:13:26+00:00" 240 | }, 241 | { 242 | "name": "illuminate/contracts", 243 | "version": "v7.25.0", 244 | "source": { 245 | "type": "git", 246 | "url": "https://github.com/illuminate/contracts.git", 247 | "reference": "37a76782aef1bb83680143c4283b1bf3db751e96" 248 | }, 249 | "dist": { 250 | "type": "zip", 251 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/37a76782aef1bb83680143c4283b1bf3db751e96", 252 | "reference": "37a76782aef1bb83680143c4283b1bf3db751e96", 253 | "shasum": "" 254 | }, 255 | "require": { 256 | "php": "^7.2.5", 257 | "psr/container": "^1.0", 258 | "psr/simple-cache": "^1.0" 259 | }, 260 | "type": "library", 261 | "extra": { 262 | "branch-alias": { 263 | "dev-master": "7.x-dev" 264 | } 265 | }, 266 | "autoload": { 267 | "psr-4": { 268 | "Illuminate\\Contracts\\": "" 269 | } 270 | }, 271 | "notification-url": "https://packagist.org/downloads/", 272 | "license": [ 273 | "MIT" 274 | ], 275 | "authors": [ 276 | { 277 | "name": "Taylor Otwell", 278 | "email": "taylor@laravel.com" 279 | } 280 | ], 281 | "description": "The Illuminate Contracts package.", 282 | "homepage": "https://laravel.com", 283 | "time": "2020-07-19T12:38:38+00:00" 284 | }, 285 | { 286 | "name": "illuminate/database", 287 | "version": "v7.25.0", 288 | "source": { 289 | "type": "git", 290 | "url": "https://github.com/illuminate/database.git", 291 | "reference": "899d35f5d00ea02f3eb370a0d764720b08f06cdf" 292 | }, 293 | "dist": { 294 | "type": "zip", 295 | "url": "https://api.github.com/repos/illuminate/database/zipball/899d35f5d00ea02f3eb370a0d764720b08f06cdf", 296 | "reference": "899d35f5d00ea02f3eb370a0d764720b08f06cdf", 297 | "shasum": "" 298 | }, 299 | "require": { 300 | "ext-json": "*", 301 | "illuminate/container": "^7.0", 302 | "illuminate/contracts": "^7.0", 303 | "illuminate/support": "^7.0", 304 | "php": "^7.2.5", 305 | "symfony/console": "^5.0" 306 | }, 307 | "suggest": { 308 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 309 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", 310 | "illuminate/console": "Required to use the database commands (^7.0).", 311 | "illuminate/events": "Required to use the observers with Eloquent (^7.0).", 312 | "illuminate/filesystem": "Required to use the migrations (^7.0).", 313 | "illuminate/pagination": "Required to paginate the result set (^7.0).", 314 | "symfony/finder": "Required to use Eloquent model factories (^5.0)." 315 | }, 316 | "type": "library", 317 | "extra": { 318 | "branch-alias": { 319 | "dev-master": "7.x-dev" 320 | } 321 | }, 322 | "autoload": { 323 | "psr-4": { 324 | "Illuminate\\Database\\": "" 325 | } 326 | }, 327 | "notification-url": "https://packagist.org/downloads/", 328 | "license": [ 329 | "MIT" 330 | ], 331 | "authors": [ 332 | { 333 | "name": "Taylor Otwell", 334 | "email": "taylor@laravel.com" 335 | } 336 | ], 337 | "description": "The Illuminate Database package.", 338 | "homepage": "https://laravel.com", 339 | "keywords": [ 340 | "database", 341 | "laravel", 342 | "orm", 343 | "sql" 344 | ], 345 | "time": "2020-08-10T15:08:36+00:00" 346 | }, 347 | { 348 | "name": "illuminate/filesystem", 349 | "version": "v7.25.0", 350 | "source": { 351 | "type": "git", 352 | "url": "https://github.com/illuminate/filesystem.git", 353 | "reference": "d5d7739e23a760b0fa56f64c0f7382a72e8ee86a" 354 | }, 355 | "dist": { 356 | "type": "zip", 357 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/d5d7739e23a760b0fa56f64c0f7382a72e8ee86a", 358 | "reference": "d5d7739e23a760b0fa56f64c0f7382a72e8ee86a", 359 | "shasum": "" 360 | }, 361 | "require": { 362 | "illuminate/contracts": "^7.0", 363 | "illuminate/support": "^7.0", 364 | "php": "^7.2.5", 365 | "symfony/finder": "^5.0" 366 | }, 367 | "suggest": { 368 | "ext-ftp": "Required to use the Flysystem FTP driver.", 369 | "illuminate/http": "Required for handling uploaded files (^7.0).", 370 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.0.34).", 371 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 372 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 373 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 374 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", 375 | "symfony/mime": "Required to enable support for guessing extensions (^5.0)." 376 | }, 377 | "type": "library", 378 | "extra": { 379 | "branch-alias": { 380 | "dev-master": "7.x-dev" 381 | } 382 | }, 383 | "autoload": { 384 | "psr-4": { 385 | "Illuminate\\Filesystem\\": "" 386 | } 387 | }, 388 | "notification-url": "https://packagist.org/downloads/", 389 | "license": [ 390 | "MIT" 391 | ], 392 | "authors": [ 393 | { 394 | "name": "Taylor Otwell", 395 | "email": "taylor@laravel.com" 396 | } 397 | ], 398 | "description": "The Illuminate Filesystem package.", 399 | "homepage": "https://laravel.com", 400 | "time": "2020-07-24T09:17:00+00:00" 401 | }, 402 | { 403 | "name": "illuminate/pagination", 404 | "version": "v7.25.0", 405 | "source": { 406 | "type": "git", 407 | "url": "https://github.com/illuminate/pagination.git", 408 | "reference": "58d6613e19d0923a85a228289de1736452285e1b" 409 | }, 410 | "dist": { 411 | "type": "zip", 412 | "url": "https://api.github.com/repos/illuminate/pagination/zipball/58d6613e19d0923a85a228289de1736452285e1b", 413 | "reference": "58d6613e19d0923a85a228289de1736452285e1b", 414 | "shasum": "" 415 | }, 416 | "require": { 417 | "ext-json": "*", 418 | "illuminate/contracts": "^7.0", 419 | "illuminate/support": "^7.0", 420 | "php": "^7.2.5" 421 | }, 422 | "type": "library", 423 | "extra": { 424 | "branch-alias": { 425 | "dev-master": "7.x-dev" 426 | } 427 | }, 428 | "autoload": { 429 | "psr-4": { 430 | "Illuminate\\Pagination\\": "" 431 | } 432 | }, 433 | "notification-url": "https://packagist.org/downloads/", 434 | "license": [ 435 | "MIT" 436 | ], 437 | "authors": [ 438 | { 439 | "name": "Taylor Otwell", 440 | "email": "taylor@laravel.com" 441 | } 442 | ], 443 | "description": "The Illuminate Pagination package.", 444 | "homepage": "https://laravel.com", 445 | "time": "2020-05-29T13:40:26+00:00" 446 | }, 447 | { 448 | "name": "illuminate/support", 449 | "version": "v7.25.0", 450 | "source": { 451 | "type": "git", 452 | "url": "https://github.com/illuminate/support.git", 453 | "reference": "9b0c0af8d2dd1a729f6337d0ed5c81a241ea43ab" 454 | }, 455 | "dist": { 456 | "type": "zip", 457 | "url": "https://api.github.com/repos/illuminate/support/zipball/9b0c0af8d2dd1a729f6337d0ed5c81a241ea43ab", 458 | "reference": "9b0c0af8d2dd1a729f6337d0ed5c81a241ea43ab", 459 | "shasum": "" 460 | }, 461 | "require": { 462 | "doctrine/inflector": "^1.4|^2.0", 463 | "ext-json": "*", 464 | "ext-mbstring": "*", 465 | "illuminate/contracts": "^7.0", 466 | "nesbot/carbon": "^2.17", 467 | "php": "^7.2.5", 468 | "voku/portable-ascii": "^1.4.8" 469 | }, 470 | "conflict": { 471 | "tightenco/collect": "<5.5.33" 472 | }, 473 | "suggest": { 474 | "illuminate/filesystem": "Required to use the composer class (^7.0).", 475 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 476 | "ramsey/uuid": "Required to use Str::uuid() (^3.7|^4.0).", 477 | "symfony/process": "Required to use the composer class (^5.0).", 478 | "symfony/var-dumper": "Required to use the dd function (^5.0).", 479 | "vlucas/phpdotenv": "Required to use the Env class and env helper (^4.0)." 480 | }, 481 | "type": "library", 482 | "extra": { 483 | "branch-alias": { 484 | "dev-master": "7.x-dev" 485 | } 486 | }, 487 | "autoload": { 488 | "psr-4": { 489 | "Illuminate\\Support\\": "" 490 | }, 491 | "files": [ 492 | "helpers.php" 493 | ] 494 | }, 495 | "notification-url": "https://packagist.org/downloads/", 496 | "license": [ 497 | "MIT" 498 | ], 499 | "authors": [ 500 | { 501 | "name": "Taylor Otwell", 502 | "email": "taylor@laravel.com" 503 | } 504 | ], 505 | "description": "The Illuminate Support package.", 506 | "homepage": "https://laravel.com", 507 | "time": "2020-08-10T13:58:23+00:00" 508 | }, 509 | { 510 | "name": "jgrossi/corcel", 511 | "version": "v4.0.1", 512 | "source": { 513 | "type": "git", 514 | "url": "https://github.com/corcel/corcel.git", 515 | "reference": "8d02e251a595278111dbe737f5f9887a8c0a4605" 516 | }, 517 | "dist": { 518 | "type": "zip", 519 | "url": "https://api.github.com/repos/corcel/corcel/zipball/8d02e251a595278111dbe737f5f9887a8c0a4605", 520 | "reference": "8d02e251a595278111dbe737f5f9887a8c0a4605", 521 | "shasum": "" 522 | }, 523 | "require": { 524 | "fzaninotto/faker": "^1.9", 525 | "hautelook/phpass": "0.3.*", 526 | "illuminate/database": "^7.0", 527 | "illuminate/filesystem": "^7.0", 528 | "illuminate/support": "^7.0", 529 | "php": ">=7.2.5", 530 | "thunderer/shortcode": "^0.7.3" 531 | }, 532 | "replace": { 533 | "juniorgrossi/corcel": "self.version" 534 | }, 535 | "require-dev": { 536 | "dms/phpunit-arraysubset-asserts": "^0.1.0", 537 | "mockery/mockery": "^1.0", 538 | "orchestra/testbench": "^5.0", 539 | "symfony/thanks": "^1.0" 540 | }, 541 | "type": "library", 542 | "extra": { 543 | "laravel": { 544 | "providers": [ 545 | "Corcel\\Laravel\\CorcelServiceProvider" 546 | ] 547 | } 548 | }, 549 | "autoload": { 550 | "psr-4": { 551 | "Corcel\\": "src/", 552 | "Corcel\\Tests\\": "tests/" 553 | } 554 | }, 555 | "notification-url": "https://packagist.org/downloads/", 556 | "license": [ 557 | "MIT" 558 | ], 559 | "authors": [ 560 | { 561 | "name": "Junior Grossi", 562 | "email": "juniorgro@gmail.com", 563 | "homepage": "http://jgrossi.com" 564 | } 565 | ], 566 | "description": "Use WordPress backend with Laravel or any PHP framework", 567 | "homepage": "http://github.com/corcel/corcel", 568 | "time": "2020-07-28T20:57:25+00:00" 569 | }, 570 | { 571 | "name": "nesbot/carbon", 572 | "version": "2.38.0", 573 | "source": { 574 | "type": "git", 575 | "url": "https://github.com/briannesbitt/Carbon.git", 576 | "reference": "d8f6a6a91d1eb9304527b040500f61923e97674b" 577 | }, 578 | "dist": { 579 | "type": "zip", 580 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d8f6a6a91d1eb9304527b040500f61923e97674b", 581 | "reference": "d8f6a6a91d1eb9304527b040500f61923e97674b", 582 | "shasum": "" 583 | }, 584 | "require": { 585 | "ext-json": "*", 586 | "php": "^7.1.8 || ^8.0", 587 | "symfony/polyfill-mbstring": "^1.0", 588 | "symfony/translation": "^3.4 || ^4.0 || ^5.0" 589 | }, 590 | "require-dev": { 591 | "doctrine/orm": "^2.7", 592 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 593 | "kylekatarnls/multi-tester": "^2.0", 594 | "phpmd/phpmd": "^2.8", 595 | "phpstan/extension-installer": "^1.0", 596 | "phpstan/phpstan": "^0.12.35", 597 | "phpunit/phpunit": "^7.5 || ^8.0", 598 | "squizlabs/php_codesniffer": "^3.4" 599 | }, 600 | "bin": [ 601 | "bin/carbon" 602 | ], 603 | "type": "library", 604 | "extra": { 605 | "branch-alias": { 606 | "dev-master": "2.x-dev", 607 | "dev-3.x": "3.x-dev" 608 | }, 609 | "laravel": { 610 | "providers": [ 611 | "Carbon\\Laravel\\ServiceProvider" 612 | ] 613 | }, 614 | "phpstan": { 615 | "includes": [ 616 | "extension.neon" 617 | ] 618 | } 619 | }, 620 | "autoload": { 621 | "psr-4": { 622 | "Carbon\\": "src/Carbon/" 623 | } 624 | }, 625 | "notification-url": "https://packagist.org/downloads/", 626 | "license": [ 627 | "MIT" 628 | ], 629 | "authors": [ 630 | { 631 | "name": "Brian Nesbitt", 632 | "email": "brian@nesbot.com", 633 | "homepage": "http://nesbot.com" 634 | }, 635 | { 636 | "name": "kylekatarnls", 637 | "homepage": "http://github.com/kylekatarnls" 638 | } 639 | ], 640 | "description": "An API extension for DateTime that supports 281 different languages.", 641 | "homepage": "http://carbon.nesbot.com", 642 | "keywords": [ 643 | "date", 644 | "datetime", 645 | "time" 646 | ], 647 | "funding": [ 648 | { 649 | "url": "https://opencollective.com/Carbon", 650 | "type": "open_collective" 651 | }, 652 | { 653 | "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", 654 | "type": "tidelift" 655 | } 656 | ], 657 | "time": "2020-08-04T19:12:46+00:00" 658 | }, 659 | { 660 | "name": "psr/container", 661 | "version": "1.0.0", 662 | "source": { 663 | "type": "git", 664 | "url": "https://github.com/php-fig/container.git", 665 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 666 | }, 667 | "dist": { 668 | "type": "zip", 669 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 670 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 671 | "shasum": "" 672 | }, 673 | "require": { 674 | "php": ">=5.3.0" 675 | }, 676 | "type": "library", 677 | "extra": { 678 | "branch-alias": { 679 | "dev-master": "1.0.x-dev" 680 | } 681 | }, 682 | "autoload": { 683 | "psr-4": { 684 | "Psr\\Container\\": "src/" 685 | } 686 | }, 687 | "notification-url": "https://packagist.org/downloads/", 688 | "license": [ 689 | "MIT" 690 | ], 691 | "authors": [ 692 | { 693 | "name": "PHP-FIG", 694 | "homepage": "http://www.php-fig.org/" 695 | } 696 | ], 697 | "description": "Common Container Interface (PHP FIG PSR-11)", 698 | "homepage": "https://github.com/php-fig/container", 699 | "keywords": [ 700 | "PSR-11", 701 | "container", 702 | "container-interface", 703 | "container-interop", 704 | "psr" 705 | ], 706 | "time": "2017-02-14T16:28:37+00:00" 707 | }, 708 | { 709 | "name": "psr/simple-cache", 710 | "version": "1.0.1", 711 | "source": { 712 | "type": "git", 713 | "url": "https://github.com/php-fig/simple-cache.git", 714 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 715 | }, 716 | "dist": { 717 | "type": "zip", 718 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 719 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 720 | "shasum": "" 721 | }, 722 | "require": { 723 | "php": ">=5.3.0" 724 | }, 725 | "type": "library", 726 | "extra": { 727 | "branch-alias": { 728 | "dev-master": "1.0.x-dev" 729 | } 730 | }, 731 | "autoload": { 732 | "psr-4": { 733 | "Psr\\SimpleCache\\": "src/" 734 | } 735 | }, 736 | "notification-url": "https://packagist.org/downloads/", 737 | "license": [ 738 | "MIT" 739 | ], 740 | "authors": [ 741 | { 742 | "name": "PHP-FIG", 743 | "homepage": "http://www.php-fig.org/" 744 | } 745 | ], 746 | "description": "Common interfaces for simple caching", 747 | "keywords": [ 748 | "cache", 749 | "caching", 750 | "psr", 751 | "psr-16", 752 | "simple-cache" 753 | ], 754 | "time": "2017-10-23T01:57:42+00:00" 755 | }, 756 | { 757 | "name": "symfony/console", 758 | "version": "v5.1.3", 759 | "source": { 760 | "type": "git", 761 | "url": "https://github.com/symfony/console.git", 762 | "reference": "2226c68009627934b8cfc01260b4d287eab070df" 763 | }, 764 | "dist": { 765 | "type": "zip", 766 | "url": "https://api.github.com/repos/symfony/console/zipball/2226c68009627934b8cfc01260b4d287eab070df", 767 | "reference": "2226c68009627934b8cfc01260b4d287eab070df", 768 | "shasum": "" 769 | }, 770 | "require": { 771 | "php": ">=7.2.5", 772 | "symfony/polyfill-mbstring": "~1.0", 773 | "symfony/polyfill-php73": "^1.8", 774 | "symfony/polyfill-php80": "^1.15", 775 | "symfony/service-contracts": "^1.1|^2", 776 | "symfony/string": "^5.1" 777 | }, 778 | "conflict": { 779 | "symfony/dependency-injection": "<4.4", 780 | "symfony/dotenv": "<5.1", 781 | "symfony/event-dispatcher": "<4.4", 782 | "symfony/lock": "<4.4", 783 | "symfony/process": "<4.4" 784 | }, 785 | "provide": { 786 | "psr/log-implementation": "1.0" 787 | }, 788 | "require-dev": { 789 | "psr/log": "~1.0", 790 | "symfony/config": "^4.4|^5.0", 791 | "symfony/dependency-injection": "^4.4|^5.0", 792 | "symfony/event-dispatcher": "^4.4|^5.0", 793 | "symfony/lock": "^4.4|^5.0", 794 | "symfony/process": "^4.4|^5.0", 795 | "symfony/var-dumper": "^4.4|^5.0" 796 | }, 797 | "suggest": { 798 | "psr/log": "For using the console logger", 799 | "symfony/event-dispatcher": "", 800 | "symfony/lock": "", 801 | "symfony/process": "" 802 | }, 803 | "type": "library", 804 | "extra": { 805 | "branch-alias": { 806 | "dev-master": "5.1-dev" 807 | } 808 | }, 809 | "autoload": { 810 | "psr-4": { 811 | "Symfony\\Component\\Console\\": "" 812 | }, 813 | "exclude-from-classmap": [ 814 | "/Tests/" 815 | ] 816 | }, 817 | "notification-url": "https://packagist.org/downloads/", 818 | "license": [ 819 | "MIT" 820 | ], 821 | "authors": [ 822 | { 823 | "name": "Fabien Potencier", 824 | "email": "fabien@symfony.com" 825 | }, 826 | { 827 | "name": "Symfony Community", 828 | "homepage": "https://symfony.com/contributors" 829 | } 830 | ], 831 | "description": "Symfony Console Component", 832 | "homepage": "https://symfony.com", 833 | "funding": [ 834 | { 835 | "url": "https://symfony.com/sponsor", 836 | "type": "custom" 837 | }, 838 | { 839 | "url": "https://github.com/fabpot", 840 | "type": "github" 841 | }, 842 | { 843 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 844 | "type": "tidelift" 845 | } 846 | ], 847 | "time": "2020-07-06T13:23:11+00:00" 848 | }, 849 | { 850 | "name": "symfony/finder", 851 | "version": "v5.1.3", 852 | "source": { 853 | "type": "git", 854 | "url": "https://github.com/symfony/finder.git", 855 | "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" 856 | }, 857 | "dist": { 858 | "type": "zip", 859 | "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", 860 | "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", 861 | "shasum": "" 862 | }, 863 | "require": { 864 | "php": ">=7.2.5" 865 | }, 866 | "type": "library", 867 | "extra": { 868 | "branch-alias": { 869 | "dev-master": "5.1-dev" 870 | } 871 | }, 872 | "autoload": { 873 | "psr-4": { 874 | "Symfony\\Component\\Finder\\": "" 875 | }, 876 | "exclude-from-classmap": [ 877 | "/Tests/" 878 | ] 879 | }, 880 | "notification-url": "https://packagist.org/downloads/", 881 | "license": [ 882 | "MIT" 883 | ], 884 | "authors": [ 885 | { 886 | "name": "Fabien Potencier", 887 | "email": "fabien@symfony.com" 888 | }, 889 | { 890 | "name": "Symfony Community", 891 | "homepage": "https://symfony.com/contributors" 892 | } 893 | ], 894 | "description": "Symfony Finder Component", 895 | "homepage": "https://symfony.com", 896 | "funding": [ 897 | { 898 | "url": "https://symfony.com/sponsor", 899 | "type": "custom" 900 | }, 901 | { 902 | "url": "https://github.com/fabpot", 903 | "type": "github" 904 | }, 905 | { 906 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 907 | "type": "tidelift" 908 | } 909 | ], 910 | "time": "2020-05-20T17:43:50+00:00" 911 | }, 912 | { 913 | "name": "symfony/polyfill-ctype", 914 | "version": "v1.18.1", 915 | "source": { 916 | "type": "git", 917 | "url": "https://github.com/symfony/polyfill-ctype.git", 918 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" 919 | }, 920 | "dist": { 921 | "type": "zip", 922 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", 923 | "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", 924 | "shasum": "" 925 | }, 926 | "require": { 927 | "php": ">=5.3.3" 928 | }, 929 | "suggest": { 930 | "ext-ctype": "For best performance" 931 | }, 932 | "type": "library", 933 | "extra": { 934 | "branch-alias": { 935 | "dev-master": "1.18-dev" 936 | }, 937 | "thanks": { 938 | "name": "symfony/polyfill", 939 | "url": "https://github.com/symfony/polyfill" 940 | } 941 | }, 942 | "autoload": { 943 | "psr-4": { 944 | "Symfony\\Polyfill\\Ctype\\": "" 945 | }, 946 | "files": [ 947 | "bootstrap.php" 948 | ] 949 | }, 950 | "notification-url": "https://packagist.org/downloads/", 951 | "license": [ 952 | "MIT" 953 | ], 954 | "authors": [ 955 | { 956 | "name": "Gert de Pagter", 957 | "email": "BackEndTea@gmail.com" 958 | }, 959 | { 960 | "name": "Symfony Community", 961 | "homepage": "https://symfony.com/contributors" 962 | } 963 | ], 964 | "description": "Symfony polyfill for ctype functions", 965 | "homepage": "https://symfony.com", 966 | "keywords": [ 967 | "compatibility", 968 | "ctype", 969 | "polyfill", 970 | "portable" 971 | ], 972 | "funding": [ 973 | { 974 | "url": "https://symfony.com/sponsor", 975 | "type": "custom" 976 | }, 977 | { 978 | "url": "https://github.com/fabpot", 979 | "type": "github" 980 | }, 981 | { 982 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 983 | "type": "tidelift" 984 | } 985 | ], 986 | "time": "2020-07-14T12:35:20+00:00" 987 | }, 988 | { 989 | "name": "symfony/polyfill-intl-grapheme", 990 | "version": "v1.18.1", 991 | "source": { 992 | "type": "git", 993 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 994 | "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" 995 | }, 996 | "dist": { 997 | "type": "zip", 998 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", 999 | "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", 1000 | "shasum": "" 1001 | }, 1002 | "require": { 1003 | "php": ">=5.3.3" 1004 | }, 1005 | "suggest": { 1006 | "ext-intl": "For best performance" 1007 | }, 1008 | "type": "library", 1009 | "extra": { 1010 | "branch-alias": { 1011 | "dev-master": "1.18-dev" 1012 | }, 1013 | "thanks": { 1014 | "name": "symfony/polyfill", 1015 | "url": "https://github.com/symfony/polyfill" 1016 | } 1017 | }, 1018 | "autoload": { 1019 | "psr-4": { 1020 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 1021 | }, 1022 | "files": [ 1023 | "bootstrap.php" 1024 | ] 1025 | }, 1026 | "notification-url": "https://packagist.org/downloads/", 1027 | "license": [ 1028 | "MIT" 1029 | ], 1030 | "authors": [ 1031 | { 1032 | "name": "Nicolas Grekas", 1033 | "email": "p@tchwork.com" 1034 | }, 1035 | { 1036 | "name": "Symfony Community", 1037 | "homepage": "https://symfony.com/contributors" 1038 | } 1039 | ], 1040 | "description": "Symfony polyfill for intl's grapheme_* functions", 1041 | "homepage": "https://symfony.com", 1042 | "keywords": [ 1043 | "compatibility", 1044 | "grapheme", 1045 | "intl", 1046 | "polyfill", 1047 | "portable", 1048 | "shim" 1049 | ], 1050 | "funding": [ 1051 | { 1052 | "url": "https://symfony.com/sponsor", 1053 | "type": "custom" 1054 | }, 1055 | { 1056 | "url": "https://github.com/fabpot", 1057 | "type": "github" 1058 | }, 1059 | { 1060 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1061 | "type": "tidelift" 1062 | } 1063 | ], 1064 | "time": "2020-07-14T12:35:20+00:00" 1065 | }, 1066 | { 1067 | "name": "symfony/polyfill-intl-normalizer", 1068 | "version": "v1.18.1", 1069 | "source": { 1070 | "type": "git", 1071 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 1072 | "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" 1073 | }, 1074 | "dist": { 1075 | "type": "zip", 1076 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", 1077 | "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", 1078 | "shasum": "" 1079 | }, 1080 | "require": { 1081 | "php": ">=5.3.3" 1082 | }, 1083 | "suggest": { 1084 | "ext-intl": "For best performance" 1085 | }, 1086 | "type": "library", 1087 | "extra": { 1088 | "branch-alias": { 1089 | "dev-master": "1.18-dev" 1090 | }, 1091 | "thanks": { 1092 | "name": "symfony/polyfill", 1093 | "url": "https://github.com/symfony/polyfill" 1094 | } 1095 | }, 1096 | "autoload": { 1097 | "psr-4": { 1098 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 1099 | }, 1100 | "files": [ 1101 | "bootstrap.php" 1102 | ], 1103 | "classmap": [ 1104 | "Resources/stubs" 1105 | ] 1106 | }, 1107 | "notification-url": "https://packagist.org/downloads/", 1108 | "license": [ 1109 | "MIT" 1110 | ], 1111 | "authors": [ 1112 | { 1113 | "name": "Nicolas Grekas", 1114 | "email": "p@tchwork.com" 1115 | }, 1116 | { 1117 | "name": "Symfony Community", 1118 | "homepage": "https://symfony.com/contributors" 1119 | } 1120 | ], 1121 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 1122 | "homepage": "https://symfony.com", 1123 | "keywords": [ 1124 | "compatibility", 1125 | "intl", 1126 | "normalizer", 1127 | "polyfill", 1128 | "portable", 1129 | "shim" 1130 | ], 1131 | "funding": [ 1132 | { 1133 | "url": "https://symfony.com/sponsor", 1134 | "type": "custom" 1135 | }, 1136 | { 1137 | "url": "https://github.com/fabpot", 1138 | "type": "github" 1139 | }, 1140 | { 1141 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1142 | "type": "tidelift" 1143 | } 1144 | ], 1145 | "time": "2020-07-14T12:35:20+00:00" 1146 | }, 1147 | { 1148 | "name": "symfony/polyfill-mbstring", 1149 | "version": "v1.18.1", 1150 | "source": { 1151 | "type": "git", 1152 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1153 | "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" 1154 | }, 1155 | "dist": { 1156 | "type": "zip", 1157 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", 1158 | "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", 1159 | "shasum": "" 1160 | }, 1161 | "require": { 1162 | "php": ">=5.3.3" 1163 | }, 1164 | "suggest": { 1165 | "ext-mbstring": "For best performance" 1166 | }, 1167 | "type": "library", 1168 | "extra": { 1169 | "branch-alias": { 1170 | "dev-master": "1.18-dev" 1171 | }, 1172 | "thanks": { 1173 | "name": "symfony/polyfill", 1174 | "url": "https://github.com/symfony/polyfill" 1175 | } 1176 | }, 1177 | "autoload": { 1178 | "psr-4": { 1179 | "Symfony\\Polyfill\\Mbstring\\": "" 1180 | }, 1181 | "files": [ 1182 | "bootstrap.php" 1183 | ] 1184 | }, 1185 | "notification-url": "https://packagist.org/downloads/", 1186 | "license": [ 1187 | "MIT" 1188 | ], 1189 | "authors": [ 1190 | { 1191 | "name": "Nicolas Grekas", 1192 | "email": "p@tchwork.com" 1193 | }, 1194 | { 1195 | "name": "Symfony Community", 1196 | "homepage": "https://symfony.com/contributors" 1197 | } 1198 | ], 1199 | "description": "Symfony polyfill for the Mbstring extension", 1200 | "homepage": "https://symfony.com", 1201 | "keywords": [ 1202 | "compatibility", 1203 | "mbstring", 1204 | "polyfill", 1205 | "portable", 1206 | "shim" 1207 | ], 1208 | "funding": [ 1209 | { 1210 | "url": "https://symfony.com/sponsor", 1211 | "type": "custom" 1212 | }, 1213 | { 1214 | "url": "https://github.com/fabpot", 1215 | "type": "github" 1216 | }, 1217 | { 1218 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1219 | "type": "tidelift" 1220 | } 1221 | ], 1222 | "time": "2020-07-14T12:35:20+00:00" 1223 | }, 1224 | { 1225 | "name": "symfony/polyfill-php73", 1226 | "version": "v1.18.1", 1227 | "source": { 1228 | "type": "git", 1229 | "url": "https://github.com/symfony/polyfill-php73.git", 1230 | "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" 1231 | }, 1232 | "dist": { 1233 | "type": "zip", 1234 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", 1235 | "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", 1236 | "shasum": "" 1237 | }, 1238 | "require": { 1239 | "php": ">=5.3.3" 1240 | }, 1241 | "type": "library", 1242 | "extra": { 1243 | "branch-alias": { 1244 | "dev-master": "1.18-dev" 1245 | }, 1246 | "thanks": { 1247 | "name": "symfony/polyfill", 1248 | "url": "https://github.com/symfony/polyfill" 1249 | } 1250 | }, 1251 | "autoload": { 1252 | "psr-4": { 1253 | "Symfony\\Polyfill\\Php73\\": "" 1254 | }, 1255 | "files": [ 1256 | "bootstrap.php" 1257 | ], 1258 | "classmap": [ 1259 | "Resources/stubs" 1260 | ] 1261 | }, 1262 | "notification-url": "https://packagist.org/downloads/", 1263 | "license": [ 1264 | "MIT" 1265 | ], 1266 | "authors": [ 1267 | { 1268 | "name": "Nicolas Grekas", 1269 | "email": "p@tchwork.com" 1270 | }, 1271 | { 1272 | "name": "Symfony Community", 1273 | "homepage": "https://symfony.com/contributors" 1274 | } 1275 | ], 1276 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 1277 | "homepage": "https://symfony.com", 1278 | "keywords": [ 1279 | "compatibility", 1280 | "polyfill", 1281 | "portable", 1282 | "shim" 1283 | ], 1284 | "funding": [ 1285 | { 1286 | "url": "https://symfony.com/sponsor", 1287 | "type": "custom" 1288 | }, 1289 | { 1290 | "url": "https://github.com/fabpot", 1291 | "type": "github" 1292 | }, 1293 | { 1294 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1295 | "type": "tidelift" 1296 | } 1297 | ], 1298 | "time": "2020-07-14T12:35:20+00:00" 1299 | }, 1300 | { 1301 | "name": "symfony/polyfill-php80", 1302 | "version": "v1.18.1", 1303 | "source": { 1304 | "type": "git", 1305 | "url": "https://github.com/symfony/polyfill-php80.git", 1306 | "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" 1307 | }, 1308 | "dist": { 1309 | "type": "zip", 1310 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", 1311 | "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", 1312 | "shasum": "" 1313 | }, 1314 | "require": { 1315 | "php": ">=7.0.8" 1316 | }, 1317 | "type": "library", 1318 | "extra": { 1319 | "branch-alias": { 1320 | "dev-master": "1.18-dev" 1321 | }, 1322 | "thanks": { 1323 | "name": "symfony/polyfill", 1324 | "url": "https://github.com/symfony/polyfill" 1325 | } 1326 | }, 1327 | "autoload": { 1328 | "psr-4": { 1329 | "Symfony\\Polyfill\\Php80\\": "" 1330 | }, 1331 | "files": [ 1332 | "bootstrap.php" 1333 | ], 1334 | "classmap": [ 1335 | "Resources/stubs" 1336 | ] 1337 | }, 1338 | "notification-url": "https://packagist.org/downloads/", 1339 | "license": [ 1340 | "MIT" 1341 | ], 1342 | "authors": [ 1343 | { 1344 | "name": "Ion Bazan", 1345 | "email": "ion.bazan@gmail.com" 1346 | }, 1347 | { 1348 | "name": "Nicolas Grekas", 1349 | "email": "p@tchwork.com" 1350 | }, 1351 | { 1352 | "name": "Symfony Community", 1353 | "homepage": "https://symfony.com/contributors" 1354 | } 1355 | ], 1356 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 1357 | "homepage": "https://symfony.com", 1358 | "keywords": [ 1359 | "compatibility", 1360 | "polyfill", 1361 | "portable", 1362 | "shim" 1363 | ], 1364 | "funding": [ 1365 | { 1366 | "url": "https://symfony.com/sponsor", 1367 | "type": "custom" 1368 | }, 1369 | { 1370 | "url": "https://github.com/fabpot", 1371 | "type": "github" 1372 | }, 1373 | { 1374 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1375 | "type": "tidelift" 1376 | } 1377 | ], 1378 | "time": "2020-07-14T12:35:20+00:00" 1379 | }, 1380 | { 1381 | "name": "symfony/service-contracts", 1382 | "version": "v2.1.3", 1383 | "source": { 1384 | "type": "git", 1385 | "url": "https://github.com/symfony/service-contracts.git", 1386 | "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" 1387 | }, 1388 | "dist": { 1389 | "type": "zip", 1390 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", 1391 | "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", 1392 | "shasum": "" 1393 | }, 1394 | "require": { 1395 | "php": ">=7.2.5", 1396 | "psr/container": "^1.0" 1397 | }, 1398 | "suggest": { 1399 | "symfony/service-implementation": "" 1400 | }, 1401 | "type": "library", 1402 | "extra": { 1403 | "branch-alias": { 1404 | "dev-master": "2.1-dev" 1405 | }, 1406 | "thanks": { 1407 | "name": "symfony/contracts", 1408 | "url": "https://github.com/symfony/contracts" 1409 | } 1410 | }, 1411 | "autoload": { 1412 | "psr-4": { 1413 | "Symfony\\Contracts\\Service\\": "" 1414 | } 1415 | }, 1416 | "notification-url": "https://packagist.org/downloads/", 1417 | "license": [ 1418 | "MIT" 1419 | ], 1420 | "authors": [ 1421 | { 1422 | "name": "Nicolas Grekas", 1423 | "email": "p@tchwork.com" 1424 | }, 1425 | { 1426 | "name": "Symfony Community", 1427 | "homepage": "https://symfony.com/contributors" 1428 | } 1429 | ], 1430 | "description": "Generic abstractions related to writing services", 1431 | "homepage": "https://symfony.com", 1432 | "keywords": [ 1433 | "abstractions", 1434 | "contracts", 1435 | "decoupling", 1436 | "interfaces", 1437 | "interoperability", 1438 | "standards" 1439 | ], 1440 | "funding": [ 1441 | { 1442 | "url": "https://symfony.com/sponsor", 1443 | "type": "custom" 1444 | }, 1445 | { 1446 | "url": "https://github.com/fabpot", 1447 | "type": "github" 1448 | }, 1449 | { 1450 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1451 | "type": "tidelift" 1452 | } 1453 | ], 1454 | "time": "2020-07-06T13:23:11+00:00" 1455 | }, 1456 | { 1457 | "name": "symfony/string", 1458 | "version": "v5.1.3", 1459 | "source": { 1460 | "type": "git", 1461 | "url": "https://github.com/symfony/string.git", 1462 | "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b" 1463 | }, 1464 | "dist": { 1465 | "type": "zip", 1466 | "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b", 1467 | "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b", 1468 | "shasum": "" 1469 | }, 1470 | "require": { 1471 | "php": ">=7.2.5", 1472 | "symfony/polyfill-ctype": "~1.8", 1473 | "symfony/polyfill-intl-grapheme": "~1.0", 1474 | "symfony/polyfill-intl-normalizer": "~1.0", 1475 | "symfony/polyfill-mbstring": "~1.0", 1476 | "symfony/polyfill-php80": "~1.15" 1477 | }, 1478 | "require-dev": { 1479 | "symfony/error-handler": "^4.4|^5.0", 1480 | "symfony/http-client": "^4.4|^5.0", 1481 | "symfony/translation-contracts": "^1.1|^2", 1482 | "symfony/var-exporter": "^4.4|^5.0" 1483 | }, 1484 | "type": "library", 1485 | "extra": { 1486 | "branch-alias": { 1487 | "dev-master": "5.1-dev" 1488 | } 1489 | }, 1490 | "autoload": { 1491 | "psr-4": { 1492 | "Symfony\\Component\\String\\": "" 1493 | }, 1494 | "files": [ 1495 | "Resources/functions.php" 1496 | ], 1497 | "exclude-from-classmap": [ 1498 | "/Tests/" 1499 | ] 1500 | }, 1501 | "notification-url": "https://packagist.org/downloads/", 1502 | "license": [ 1503 | "MIT" 1504 | ], 1505 | "authors": [ 1506 | { 1507 | "name": "Nicolas Grekas", 1508 | "email": "p@tchwork.com" 1509 | }, 1510 | { 1511 | "name": "Symfony Community", 1512 | "homepage": "https://symfony.com/contributors" 1513 | } 1514 | ], 1515 | "description": "Symfony String component", 1516 | "homepage": "https://symfony.com", 1517 | "keywords": [ 1518 | "grapheme", 1519 | "i18n", 1520 | "string", 1521 | "unicode", 1522 | "utf-8", 1523 | "utf8" 1524 | ], 1525 | "funding": [ 1526 | { 1527 | "url": "https://symfony.com/sponsor", 1528 | "type": "custom" 1529 | }, 1530 | { 1531 | "url": "https://github.com/fabpot", 1532 | "type": "github" 1533 | }, 1534 | { 1535 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1536 | "type": "tidelift" 1537 | } 1538 | ], 1539 | "time": "2020-07-08T08:27:49+00:00" 1540 | }, 1541 | { 1542 | "name": "symfony/translation", 1543 | "version": "v5.1.3", 1544 | "source": { 1545 | "type": "git", 1546 | "url": "https://github.com/symfony/translation.git", 1547 | "reference": "4b9bf719f0fa5b05253c37fc7b335337ec7ec427" 1548 | }, 1549 | "dist": { 1550 | "type": "zip", 1551 | "url": "https://api.github.com/repos/symfony/translation/zipball/4b9bf719f0fa5b05253c37fc7b335337ec7ec427", 1552 | "reference": "4b9bf719f0fa5b05253c37fc7b335337ec7ec427", 1553 | "shasum": "" 1554 | }, 1555 | "require": { 1556 | "php": ">=7.2.5", 1557 | "symfony/polyfill-mbstring": "~1.0", 1558 | "symfony/polyfill-php80": "^1.15", 1559 | "symfony/translation-contracts": "^2" 1560 | }, 1561 | "conflict": { 1562 | "symfony/config": "<4.4", 1563 | "symfony/dependency-injection": "<5.0", 1564 | "symfony/http-kernel": "<5.0", 1565 | "symfony/twig-bundle": "<5.0", 1566 | "symfony/yaml": "<4.4" 1567 | }, 1568 | "provide": { 1569 | "symfony/translation-implementation": "2.0" 1570 | }, 1571 | "require-dev": { 1572 | "psr/log": "~1.0", 1573 | "symfony/config": "^4.4|^5.0", 1574 | "symfony/console": "^4.4|^5.0", 1575 | "symfony/dependency-injection": "^5.0", 1576 | "symfony/finder": "^4.4|^5.0", 1577 | "symfony/http-kernel": "^5.0", 1578 | "symfony/intl": "^4.4|^5.0", 1579 | "symfony/service-contracts": "^1.1.2|^2", 1580 | "symfony/yaml": "^4.4|^5.0" 1581 | }, 1582 | "suggest": { 1583 | "psr/log-implementation": "To use logging capability in translator", 1584 | "symfony/config": "", 1585 | "symfony/yaml": "" 1586 | }, 1587 | "type": "library", 1588 | "extra": { 1589 | "branch-alias": { 1590 | "dev-master": "5.1-dev" 1591 | } 1592 | }, 1593 | "autoload": { 1594 | "psr-4": { 1595 | "Symfony\\Component\\Translation\\": "" 1596 | }, 1597 | "exclude-from-classmap": [ 1598 | "/Tests/" 1599 | ] 1600 | }, 1601 | "notification-url": "https://packagist.org/downloads/", 1602 | "license": [ 1603 | "MIT" 1604 | ], 1605 | "authors": [ 1606 | { 1607 | "name": "Fabien Potencier", 1608 | "email": "fabien@symfony.com" 1609 | }, 1610 | { 1611 | "name": "Symfony Community", 1612 | "homepage": "https://symfony.com/contributors" 1613 | } 1614 | ], 1615 | "description": "Symfony Translation Component", 1616 | "homepage": "https://symfony.com", 1617 | "funding": [ 1618 | { 1619 | "url": "https://symfony.com/sponsor", 1620 | "type": "custom" 1621 | }, 1622 | { 1623 | "url": "https://github.com/fabpot", 1624 | "type": "github" 1625 | }, 1626 | { 1627 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1628 | "type": "tidelift" 1629 | } 1630 | ], 1631 | "time": "2020-06-30T17:42:22+00:00" 1632 | }, 1633 | { 1634 | "name": "symfony/translation-contracts", 1635 | "version": "v2.1.3", 1636 | "source": { 1637 | "type": "git", 1638 | "url": "https://github.com/symfony/translation-contracts.git", 1639 | "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63" 1640 | }, 1641 | "dist": { 1642 | "type": "zip", 1643 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/616a9773c853097607cf9dd6577d5b143ffdcd63", 1644 | "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63", 1645 | "shasum": "" 1646 | }, 1647 | "require": { 1648 | "php": ">=7.2.5" 1649 | }, 1650 | "suggest": { 1651 | "symfony/translation-implementation": "" 1652 | }, 1653 | "type": "library", 1654 | "extra": { 1655 | "branch-alias": { 1656 | "dev-master": "2.1-dev" 1657 | }, 1658 | "thanks": { 1659 | "name": "symfony/contracts", 1660 | "url": "https://github.com/symfony/contracts" 1661 | } 1662 | }, 1663 | "autoload": { 1664 | "psr-4": { 1665 | "Symfony\\Contracts\\Translation\\": "" 1666 | } 1667 | }, 1668 | "notification-url": "https://packagist.org/downloads/", 1669 | "license": [ 1670 | "MIT" 1671 | ], 1672 | "authors": [ 1673 | { 1674 | "name": "Nicolas Grekas", 1675 | "email": "p@tchwork.com" 1676 | }, 1677 | { 1678 | "name": "Symfony Community", 1679 | "homepage": "https://symfony.com/contributors" 1680 | } 1681 | ], 1682 | "description": "Generic abstractions related to translation", 1683 | "homepage": "https://symfony.com", 1684 | "keywords": [ 1685 | "abstractions", 1686 | "contracts", 1687 | "decoupling", 1688 | "interfaces", 1689 | "interoperability", 1690 | "standards" 1691 | ], 1692 | "funding": [ 1693 | { 1694 | "url": "https://symfony.com/sponsor", 1695 | "type": "custom" 1696 | }, 1697 | { 1698 | "url": "https://github.com/fabpot", 1699 | "type": "github" 1700 | }, 1701 | { 1702 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1703 | "type": "tidelift" 1704 | } 1705 | ], 1706 | "time": "2020-07-06T13:23:11+00:00" 1707 | }, 1708 | { 1709 | "name": "thunderer/shortcode", 1710 | "version": "v0.7.4", 1711 | "source": { 1712 | "type": "git", 1713 | "url": "https://github.com/thunderer/Shortcode.git", 1714 | "reference": "79a219febd774ba1ee66a2992fee1145b4367561" 1715 | }, 1716 | "dist": { 1717 | "type": "zip", 1718 | "url": "https://api.github.com/repos/thunderer/Shortcode/zipball/79a219febd774ba1ee66a2992fee1145b4367561", 1719 | "reference": "79a219febd774ba1ee66a2992fee1145b4367561", 1720 | "shasum": "" 1721 | }, 1722 | "require": { 1723 | "php": ">=5.3" 1724 | }, 1725 | "require-dev": { 1726 | "phpunit/phpunit": ">=4.1", 1727 | "symfony/yaml": ">=2.0" 1728 | }, 1729 | "suggest": { 1730 | "ext-dom": "if you want to use XML serializer", 1731 | "ext-json": "if you want to use JSON serializer", 1732 | "symfony/yaml": "if you want to use YAML serializer" 1733 | }, 1734 | "type": "library", 1735 | "autoload": { 1736 | "psr-4": { 1737 | "Thunder\\Shortcode\\": "src/" 1738 | } 1739 | }, 1740 | "notification-url": "https://packagist.org/downloads/", 1741 | "license": [ 1742 | "MIT" 1743 | ], 1744 | "authors": [ 1745 | { 1746 | "name": "Tomasz Kowalczyk", 1747 | "email": "tomasz@kowalczyk.cc" 1748 | } 1749 | ], 1750 | "description": "Advanced shortcode (BBCode) parser and engine for PHP", 1751 | "keywords": [ 1752 | "bbcode", 1753 | "engine", 1754 | "library", 1755 | "parser", 1756 | "shortcode" 1757 | ], 1758 | "time": "2020-03-08T11:25:13+00:00" 1759 | }, 1760 | { 1761 | "name": "voku/portable-ascii", 1762 | "version": "1.5.3", 1763 | "source": { 1764 | "type": "git", 1765 | "url": "https://github.com/voku/portable-ascii.git", 1766 | "reference": "25bcbf01678930251fd572891447d9e318a6e2b8" 1767 | }, 1768 | "dist": { 1769 | "type": "zip", 1770 | "url": "https://api.github.com/repos/voku/portable-ascii/zipball/25bcbf01678930251fd572891447d9e318a6e2b8", 1771 | "reference": "25bcbf01678930251fd572891447d9e318a6e2b8", 1772 | "shasum": "" 1773 | }, 1774 | "require": { 1775 | "php": ">=7.0.0" 1776 | }, 1777 | "require-dev": { 1778 | "phpunit/phpunit": "~6.0 || ~7.0" 1779 | }, 1780 | "suggest": { 1781 | "ext-intl": "Use Intl for transliterator_transliterate() support" 1782 | }, 1783 | "type": "library", 1784 | "autoload": { 1785 | "psr-4": { 1786 | "voku\\": "src/voku/" 1787 | } 1788 | }, 1789 | "notification-url": "https://packagist.org/downloads/", 1790 | "license": [ 1791 | "MIT" 1792 | ], 1793 | "authors": [ 1794 | { 1795 | "name": "Lars Moelleken", 1796 | "homepage": "http://www.moelleken.org/" 1797 | } 1798 | ], 1799 | "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", 1800 | "homepage": "https://github.com/voku/portable-ascii", 1801 | "keywords": [ 1802 | "ascii", 1803 | "clean", 1804 | "php" 1805 | ], 1806 | "funding": [ 1807 | { 1808 | "url": "https://www.paypal.me/moelleken", 1809 | "type": "custom" 1810 | }, 1811 | { 1812 | "url": "https://github.com/voku", 1813 | "type": "github" 1814 | }, 1815 | { 1816 | "url": "https://opencollective.com/portable-ascii", 1817 | "type": "open_collective" 1818 | }, 1819 | { 1820 | "url": "https://www.patreon.com/voku", 1821 | "type": "patreon" 1822 | }, 1823 | { 1824 | "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", 1825 | "type": "tidelift" 1826 | } 1827 | ], 1828 | "time": "2020-07-22T23:32:04+00:00" 1829 | } 1830 | ], 1831 | "packages-dev": [ 1832 | { 1833 | "name": "illuminate/cache", 1834 | "version": "v7.25.0", 1835 | "source": { 1836 | "type": "git", 1837 | "url": "https://github.com/illuminate/cache.git", 1838 | "reference": "b28b43e1cd4f7a336a68b64d64ff4809838bade9" 1839 | }, 1840 | "dist": { 1841 | "type": "zip", 1842 | "url": "https://api.github.com/repos/illuminate/cache/zipball/b28b43e1cd4f7a336a68b64d64ff4809838bade9", 1843 | "reference": "b28b43e1cd4f7a336a68b64d64ff4809838bade9", 1844 | "shasum": "" 1845 | }, 1846 | "require": { 1847 | "illuminate/contracts": "^7.0", 1848 | "illuminate/support": "^7.0", 1849 | "php": "^7.2.5" 1850 | }, 1851 | "suggest": { 1852 | "ext-memcached": "Required to use the memcache cache driver.", 1853 | "illuminate/database": "Required to use the database cache driver (^7.0).", 1854 | "illuminate/filesystem": "Required to use the file cache driver (^7.0).", 1855 | "illuminate/redis": "Required to use the redis cache driver (^7.0).", 1856 | "symfony/cache": "Required to PSR-6 cache bridge (^5.0)." 1857 | }, 1858 | "type": "library", 1859 | "extra": { 1860 | "branch-alias": { 1861 | "dev-master": "7.x-dev" 1862 | } 1863 | }, 1864 | "autoload": { 1865 | "psr-4": { 1866 | "Illuminate\\Cache\\": "" 1867 | } 1868 | }, 1869 | "notification-url": "https://packagist.org/downloads/", 1870 | "license": [ 1871 | "MIT" 1872 | ], 1873 | "authors": [ 1874 | { 1875 | "name": "Taylor Otwell", 1876 | "email": "taylor@laravel.com" 1877 | } 1878 | ], 1879 | "description": "The Illuminate Cache package.", 1880 | "homepage": "https://laravel.com", 1881 | "time": "2020-07-07T15:44:46+00:00" 1882 | }, 1883 | { 1884 | "name": "illuminate/config", 1885 | "version": "v7.25.0", 1886 | "source": { 1887 | "type": "git", 1888 | "url": "https://github.com/illuminate/config.git", 1889 | "reference": "d1e898de7a0cefe9ce2c94dede6679839e6a7b39" 1890 | }, 1891 | "dist": { 1892 | "type": "zip", 1893 | "url": "https://api.github.com/repos/illuminate/config/zipball/d1e898de7a0cefe9ce2c94dede6679839e6a7b39", 1894 | "reference": "d1e898de7a0cefe9ce2c94dede6679839e6a7b39", 1895 | "shasum": "" 1896 | }, 1897 | "require": { 1898 | "illuminate/contracts": "^7.0", 1899 | "illuminate/support": "^7.0", 1900 | "php": "^7.2.5" 1901 | }, 1902 | "type": "library", 1903 | "extra": { 1904 | "branch-alias": { 1905 | "dev-master": "7.x-dev" 1906 | } 1907 | }, 1908 | "autoload": { 1909 | "psr-4": { 1910 | "Illuminate\\Config\\": "" 1911 | } 1912 | }, 1913 | "notification-url": "https://packagist.org/downloads/", 1914 | "license": [ 1915 | "MIT" 1916 | ], 1917 | "authors": [ 1918 | { 1919 | "name": "Taylor Otwell", 1920 | "email": "taylor@laravel.com" 1921 | } 1922 | ], 1923 | "description": "The Illuminate Config package.", 1924 | "homepage": "https://laravel.com", 1925 | "time": "2020-01-07T13:49:44+00:00" 1926 | }, 1927 | { 1928 | "name": "illuminate/console", 1929 | "version": "v7.25.0", 1930 | "source": { 1931 | "type": "git", 1932 | "url": "https://github.com/illuminate/console.git", 1933 | "reference": "12b52d7fd87719a3cabf3f269c14c0c496e78a1a" 1934 | }, 1935 | "dist": { 1936 | "type": "zip", 1937 | "url": "https://api.github.com/repos/illuminate/console/zipball/12b52d7fd87719a3cabf3f269c14c0c496e78a1a", 1938 | "reference": "12b52d7fd87719a3cabf3f269c14c0c496e78a1a", 1939 | "shasum": "" 1940 | }, 1941 | "require": { 1942 | "illuminate/contracts": "^7.0", 1943 | "illuminate/support": "^7.0", 1944 | "php": "^7.2.5", 1945 | "symfony/console": "^5.0", 1946 | "symfony/process": "^5.0" 1947 | }, 1948 | "suggest": { 1949 | "dragonmantank/cron-expression": "Required to use scheduler (^2.0).", 1950 | "guzzlehttp/guzzle": "Required to use the ping methods on schedules (^6.3.1|^7.0).", 1951 | "illuminate/bus": "Required to use the scheduled job dispatcher (^7.0).", 1952 | "illuminate/container": "Required to use the scheduler (^7.0).", 1953 | "illuminate/filesystem": "Required to use the generator command (^7.0).", 1954 | "illuminate/queue": "Required to use closures for scheduled jobs (^7.0)." 1955 | }, 1956 | "type": "library", 1957 | "extra": { 1958 | "branch-alias": { 1959 | "dev-master": "7.x-dev" 1960 | } 1961 | }, 1962 | "autoload": { 1963 | "psr-4": { 1964 | "Illuminate\\Console\\": "" 1965 | } 1966 | }, 1967 | "notification-url": "https://packagist.org/downloads/", 1968 | "license": [ 1969 | "MIT" 1970 | ], 1971 | "authors": [ 1972 | { 1973 | "name": "Taylor Otwell", 1974 | "email": "taylor@laravel.com" 1975 | } 1976 | ], 1977 | "description": "The Illuminate Console package.", 1978 | "homepage": "https://laravel.com", 1979 | "time": "2020-07-03T23:22:01+00:00" 1980 | }, 1981 | { 1982 | "name": "illuminate/events", 1983 | "version": "v7.25.0", 1984 | "source": { 1985 | "type": "git", 1986 | "url": "https://github.com/illuminate/events.git", 1987 | "reference": "14b21444c04c3052cffbd76e0862b23fdae5fc19" 1988 | }, 1989 | "dist": { 1990 | "type": "zip", 1991 | "url": "https://api.github.com/repos/illuminate/events/zipball/14b21444c04c3052cffbd76e0862b23fdae5fc19", 1992 | "reference": "14b21444c04c3052cffbd76e0862b23fdae5fc19", 1993 | "shasum": "" 1994 | }, 1995 | "require": { 1996 | "illuminate/container": "^7.0", 1997 | "illuminate/contracts": "^7.0", 1998 | "illuminate/support": "^7.0", 1999 | "php": "^7.2.5" 2000 | }, 2001 | "type": "library", 2002 | "extra": { 2003 | "branch-alias": { 2004 | "dev-master": "7.x-dev" 2005 | } 2006 | }, 2007 | "autoload": { 2008 | "psr-4": { 2009 | "Illuminate\\Events\\": "" 2010 | } 2011 | }, 2012 | "notification-url": "https://packagist.org/downloads/", 2013 | "license": [ 2014 | "MIT" 2015 | ], 2016 | "authors": [ 2017 | { 2018 | "name": "Taylor Otwell", 2019 | "email": "taylor@laravel.com" 2020 | } 2021 | ], 2022 | "description": "The Illuminate Events package.", 2023 | "homepage": "https://laravel.com", 2024 | "time": "2020-06-18T15:37:01+00:00" 2025 | }, 2026 | { 2027 | "name": "illuminate/http", 2028 | "version": "v7.25.0", 2029 | "source": { 2030 | "type": "git", 2031 | "url": "https://github.com/illuminate/http.git", 2032 | "reference": "5f1cf382aad784a8af6088d05a2bc15fa0dacd37" 2033 | }, 2034 | "dist": { 2035 | "type": "zip", 2036 | "url": "https://api.github.com/repos/illuminate/http/zipball/5f1cf382aad784a8af6088d05a2bc15fa0dacd37", 2037 | "reference": "5f1cf382aad784a8af6088d05a2bc15fa0dacd37", 2038 | "shasum": "" 2039 | }, 2040 | "require": { 2041 | "ext-json": "*", 2042 | "illuminate/session": "^7.0", 2043 | "illuminate/support": "^7.0", 2044 | "php": "^7.2.5", 2045 | "symfony/http-foundation": "^5.0", 2046 | "symfony/http-kernel": "^5.0", 2047 | "symfony/mime": "^5.0" 2048 | }, 2049 | "suggest": { 2050 | "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", 2051 | "guzzlehttp/guzzle": "Required to use the HTTP Client (^6.3.1|^7.0)." 2052 | }, 2053 | "type": "library", 2054 | "extra": { 2055 | "branch-alias": { 2056 | "dev-master": "7.x-dev" 2057 | } 2058 | }, 2059 | "autoload": { 2060 | "psr-4": { 2061 | "Illuminate\\Http\\": "" 2062 | } 2063 | }, 2064 | "notification-url": "https://packagist.org/downloads/", 2065 | "license": [ 2066 | "MIT" 2067 | ], 2068 | "authors": [ 2069 | { 2070 | "name": "Taylor Otwell", 2071 | "email": "taylor@laravel.com" 2072 | } 2073 | ], 2074 | "description": "The Illuminate Http package.", 2075 | "homepage": "https://laravel.com", 2076 | "time": "2020-08-10T15:08:36+00:00" 2077 | }, 2078 | { 2079 | "name": "illuminate/log", 2080 | "version": "v7.25.0", 2081 | "source": { 2082 | "type": "git", 2083 | "url": "https://github.com/illuminate/log.git", 2084 | "reference": "53c5e2b2ffbf5138488893d3c2a3a249de4a5b7b" 2085 | }, 2086 | "dist": { 2087 | "type": "zip", 2088 | "url": "https://api.github.com/repos/illuminate/log/zipball/53c5e2b2ffbf5138488893d3c2a3a249de4a5b7b", 2089 | "reference": "53c5e2b2ffbf5138488893d3c2a3a249de4a5b7b", 2090 | "shasum": "" 2091 | }, 2092 | "require": { 2093 | "illuminate/contracts": "^7.0", 2094 | "illuminate/support": "^7.0", 2095 | "monolog/monolog": "^2.0", 2096 | "php": "^7.2.5" 2097 | }, 2098 | "type": "library", 2099 | "extra": { 2100 | "branch-alias": { 2101 | "dev-master": "7.x-dev" 2102 | } 2103 | }, 2104 | "autoload": { 2105 | "psr-4": { 2106 | "Illuminate\\Log\\": "" 2107 | } 2108 | }, 2109 | "notification-url": "https://packagist.org/downloads/", 2110 | "license": [ 2111 | "MIT" 2112 | ], 2113 | "authors": [ 2114 | { 2115 | "name": "Taylor Otwell", 2116 | "email": "taylor@laravel.com" 2117 | } 2118 | ], 2119 | "description": "The Illuminate Log package.", 2120 | "homepage": "https://laravel.com", 2121 | "time": "2020-07-19T12:38:38+00:00" 2122 | }, 2123 | { 2124 | "name": "illuminate/session", 2125 | "version": "v7.25.0", 2126 | "source": { 2127 | "type": "git", 2128 | "url": "https://github.com/illuminate/session.git", 2129 | "reference": "a4b1c6b10fa8461e1410339680dfb95ee18c9b46" 2130 | }, 2131 | "dist": { 2132 | "type": "zip", 2133 | "url": "https://api.github.com/repos/illuminate/session/zipball/a4b1c6b10fa8461e1410339680dfb95ee18c9b46", 2134 | "reference": "a4b1c6b10fa8461e1410339680dfb95ee18c9b46", 2135 | "shasum": "" 2136 | }, 2137 | "require": { 2138 | "ext-json": "*", 2139 | "illuminate/contracts": "^7.0", 2140 | "illuminate/filesystem": "^7.0", 2141 | "illuminate/support": "^7.0", 2142 | "php": "^7.2.5", 2143 | "symfony/finder": "^5.0", 2144 | "symfony/http-foundation": "^5.0" 2145 | }, 2146 | "suggest": { 2147 | "illuminate/console": "Required to use the session:table command (^7.0)." 2148 | }, 2149 | "type": "library", 2150 | "extra": { 2151 | "branch-alias": { 2152 | "dev-master": "7.x-dev" 2153 | } 2154 | }, 2155 | "autoload": { 2156 | "psr-4": { 2157 | "Illuminate\\Session\\": "" 2158 | } 2159 | }, 2160 | "notification-url": "https://packagist.org/downloads/", 2161 | "license": [ 2162 | "MIT" 2163 | ], 2164 | "authors": [ 2165 | { 2166 | "name": "Taylor Otwell", 2167 | "email": "taylor@laravel.com" 2168 | } 2169 | ], 2170 | "description": "The Illuminate Session package.", 2171 | "homepage": "https://laravel.com", 2172 | "time": "2020-08-08T23:48:10+00:00" 2173 | }, 2174 | { 2175 | "name": "illuminate/view", 2176 | "version": "v7.25.0", 2177 | "source": { 2178 | "type": "git", 2179 | "url": "https://github.com/illuminate/view.git", 2180 | "reference": "6ad2bb27974199b175a0d685c51325e8e1b3d253" 2181 | }, 2182 | "dist": { 2183 | "type": "zip", 2184 | "url": "https://api.github.com/repos/illuminate/view/zipball/6ad2bb27974199b175a0d685c51325e8e1b3d253", 2185 | "reference": "6ad2bb27974199b175a0d685c51325e8e1b3d253", 2186 | "shasum": "" 2187 | }, 2188 | "require": { 2189 | "ext-json": "*", 2190 | "illuminate/container": "^7.0", 2191 | "illuminate/contracts": "^7.0", 2192 | "illuminate/events": "^7.0", 2193 | "illuminate/filesystem": "^7.0", 2194 | "illuminate/support": "^7.0", 2195 | "php": "^7.2.5" 2196 | }, 2197 | "type": "library", 2198 | "extra": { 2199 | "branch-alias": { 2200 | "dev-master": "7.x-dev" 2201 | } 2202 | }, 2203 | "autoload": { 2204 | "psr-4": { 2205 | "Illuminate\\View\\": "" 2206 | } 2207 | }, 2208 | "notification-url": "https://packagist.org/downloads/", 2209 | "license": [ 2210 | "MIT" 2211 | ], 2212 | "authors": [ 2213 | { 2214 | "name": "Taylor Otwell", 2215 | "email": "taylor@laravel.com" 2216 | } 2217 | ], 2218 | "description": "The Illuminate View package.", 2219 | "homepage": "https://laravel.com", 2220 | "time": "2020-08-10T20:00:58+00:00" 2221 | }, 2222 | { 2223 | "name": "league/flysystem", 2224 | "version": "1.1.1", 2225 | "source": { 2226 | "type": "git", 2227 | "url": "https://github.com/thephpleague/flysystem.git", 2228 | "reference": "6e96f54d82e71f71c4108da33ee96a7f57083710" 2229 | }, 2230 | "dist": { 2231 | "type": "zip", 2232 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/6e96f54d82e71f71c4108da33ee96a7f57083710", 2233 | "reference": "6e96f54d82e71f71c4108da33ee96a7f57083710", 2234 | "shasum": "" 2235 | }, 2236 | "require": { 2237 | "ext-fileinfo": "*", 2238 | "league/mime-type-detection": "^1.3", 2239 | "php": "^7.2.5 || ^8.0" 2240 | }, 2241 | "conflict": { 2242 | "league/flysystem-sftp": "<1.0.6" 2243 | }, 2244 | "require-dev": { 2245 | "phpspec/prophecy": "^1.11.1", 2246 | "phpunit/phpunit": "^8.5.8" 2247 | }, 2248 | "suggest": { 2249 | "ext-fileinfo": "Required for MimeType", 2250 | "ext-ftp": "Allows you to use FTP server storage", 2251 | "ext-openssl": "Allows you to use FTPS server storage", 2252 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 2253 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 2254 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 2255 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 2256 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 2257 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 2258 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 2259 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 2260 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 2261 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 2262 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 2263 | }, 2264 | "type": "library", 2265 | "extra": { 2266 | "branch-alias": { 2267 | "dev-master": "1.1-dev" 2268 | } 2269 | }, 2270 | "autoload": { 2271 | "psr-4": { 2272 | "League\\Flysystem\\": "src/" 2273 | } 2274 | }, 2275 | "notification-url": "https://packagist.org/downloads/", 2276 | "license": [ 2277 | "MIT" 2278 | ], 2279 | "authors": [ 2280 | { 2281 | "name": "Frank de Jonge", 2282 | "email": "info@frenky.net" 2283 | } 2284 | ], 2285 | "description": "Filesystem abstraction: Many filesystems, one API.", 2286 | "keywords": [ 2287 | "Cloud Files", 2288 | "WebDAV", 2289 | "abstraction", 2290 | "aws", 2291 | "cloud", 2292 | "copy.com", 2293 | "dropbox", 2294 | "file systems", 2295 | "files", 2296 | "filesystem", 2297 | "filesystems", 2298 | "ftp", 2299 | "rackspace", 2300 | "remote", 2301 | "s3", 2302 | "sftp", 2303 | "storage" 2304 | ], 2305 | "funding": [ 2306 | { 2307 | "url": "https://offset.earth/frankdejonge", 2308 | "type": "other" 2309 | } 2310 | ], 2311 | "time": "2020-08-12T14:23:41+00:00" 2312 | }, 2313 | { 2314 | "name": "league/mime-type-detection", 2315 | "version": "1.4.0", 2316 | "source": { 2317 | "type": "git", 2318 | "url": "https://github.com/thephpleague/mime-type-detection.git", 2319 | "reference": "fda190b62b962d96a069fcc414d781db66d65b69" 2320 | }, 2321 | "dist": { 2322 | "type": "zip", 2323 | "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/fda190b62b962d96a069fcc414d781db66d65b69", 2324 | "reference": "fda190b62b962d96a069fcc414d781db66d65b69", 2325 | "shasum": "" 2326 | }, 2327 | "require": { 2328 | "ext-fileinfo": "*", 2329 | "php": "^7.2 || ^8.0" 2330 | }, 2331 | "require-dev": { 2332 | "phpstan/phpstan": "^0.12.36", 2333 | "phpunit/phpunit": "^8.5.8" 2334 | }, 2335 | "type": "library", 2336 | "autoload": { 2337 | "psr-4": { 2338 | "League\\MimeTypeDetection\\": "src" 2339 | } 2340 | }, 2341 | "notification-url": "https://packagist.org/downloads/", 2342 | "license": [ 2343 | "MIT" 2344 | ], 2345 | "authors": [ 2346 | { 2347 | "name": "Frank de Jonge", 2348 | "email": "info@frankdejonge.nl" 2349 | } 2350 | ], 2351 | "description": "Mime-type detection for Flysystem", 2352 | "funding": [ 2353 | { 2354 | "url": "https://github.com/frankdejonge", 2355 | "type": "github" 2356 | }, 2357 | { 2358 | "url": "https://tidelift.com/funding/github/packagist/league/flysystem", 2359 | "type": "tidelift" 2360 | } 2361 | ], 2362 | "time": "2020-08-09T10:34:01+00:00" 2363 | }, 2364 | { 2365 | "name": "monolog/monolog", 2366 | "version": "2.1.1", 2367 | "source": { 2368 | "type": "git", 2369 | "url": "https://github.com/Seldaek/monolog.git", 2370 | "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5" 2371 | }, 2372 | "dist": { 2373 | "type": "zip", 2374 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5", 2375 | "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5", 2376 | "shasum": "" 2377 | }, 2378 | "require": { 2379 | "php": ">=7.2", 2380 | "psr/log": "^1.0.1" 2381 | }, 2382 | "provide": { 2383 | "psr/log-implementation": "1.0.0" 2384 | }, 2385 | "require-dev": { 2386 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 2387 | "doctrine/couchdb": "~1.0@dev", 2388 | "elasticsearch/elasticsearch": "^6.0", 2389 | "graylog2/gelf-php": "^1.4.2", 2390 | "php-amqplib/php-amqplib": "~2.4", 2391 | "php-console/php-console": "^3.1.3", 2392 | "php-parallel-lint/php-parallel-lint": "^1.0", 2393 | "phpspec/prophecy": "^1.6.1", 2394 | "phpunit/phpunit": "^8.5", 2395 | "predis/predis": "^1.1", 2396 | "rollbar/rollbar": "^1.3", 2397 | "ruflin/elastica": ">=0.90 <3.0", 2398 | "swiftmailer/swiftmailer": "^5.3|^6.0" 2399 | }, 2400 | "suggest": { 2401 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 2402 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 2403 | "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", 2404 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 2405 | "ext-mbstring": "Allow to work properly with unicode symbols", 2406 | "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", 2407 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 2408 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", 2409 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 2410 | "php-console/php-console": "Allow sending log messages to Google Chrome", 2411 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 2412 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" 2413 | }, 2414 | "type": "library", 2415 | "extra": { 2416 | "branch-alias": { 2417 | "dev-master": "2.x-dev" 2418 | } 2419 | }, 2420 | "autoload": { 2421 | "psr-4": { 2422 | "Monolog\\": "src/Monolog" 2423 | } 2424 | }, 2425 | "notification-url": "https://packagist.org/downloads/", 2426 | "license": [ 2427 | "MIT" 2428 | ], 2429 | "authors": [ 2430 | { 2431 | "name": "Jordi Boggiano", 2432 | "email": "j.boggiano@seld.be", 2433 | "homepage": "http://seld.be" 2434 | } 2435 | ], 2436 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 2437 | "homepage": "http://github.com/Seldaek/monolog", 2438 | "keywords": [ 2439 | "log", 2440 | "logging", 2441 | "psr-3" 2442 | ], 2443 | "funding": [ 2444 | { 2445 | "url": "https://github.com/Seldaek", 2446 | "type": "github" 2447 | }, 2448 | { 2449 | "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", 2450 | "type": "tidelift" 2451 | } 2452 | ], 2453 | "time": "2020-07-23T08:41:23+00:00" 2454 | }, 2455 | { 2456 | "name": "paragonie/random_compat", 2457 | "version": "v9.99.99", 2458 | "source": { 2459 | "type": "git", 2460 | "url": "https://github.com/paragonie/random_compat.git", 2461 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 2462 | }, 2463 | "dist": { 2464 | "type": "zip", 2465 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 2466 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 2467 | "shasum": "" 2468 | }, 2469 | "require": { 2470 | "php": "^7" 2471 | }, 2472 | "require-dev": { 2473 | "phpunit/phpunit": "4.*|5.*", 2474 | "vimeo/psalm": "^1" 2475 | }, 2476 | "suggest": { 2477 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 2478 | }, 2479 | "type": "library", 2480 | "notification-url": "https://packagist.org/downloads/", 2481 | "license": [ 2482 | "MIT" 2483 | ], 2484 | "authors": [ 2485 | { 2486 | "name": "Paragon Initiative Enterprises", 2487 | "email": "security@paragonie.com", 2488 | "homepage": "https://paragonie.com" 2489 | } 2490 | ], 2491 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 2492 | "keywords": [ 2493 | "csprng", 2494 | "polyfill", 2495 | "pseudorandom", 2496 | "random" 2497 | ], 2498 | "time": "2018-07-02T15:55:56+00:00" 2499 | }, 2500 | { 2501 | "name": "psr/event-dispatcher", 2502 | "version": "1.0.0", 2503 | "source": { 2504 | "type": "git", 2505 | "url": "https://github.com/php-fig/event-dispatcher.git", 2506 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 2507 | }, 2508 | "dist": { 2509 | "type": "zip", 2510 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 2511 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 2512 | "shasum": "" 2513 | }, 2514 | "require": { 2515 | "php": ">=7.2.0" 2516 | }, 2517 | "type": "library", 2518 | "extra": { 2519 | "branch-alias": { 2520 | "dev-master": "1.0.x-dev" 2521 | } 2522 | }, 2523 | "autoload": { 2524 | "psr-4": { 2525 | "Psr\\EventDispatcher\\": "src/" 2526 | } 2527 | }, 2528 | "notification-url": "https://packagist.org/downloads/", 2529 | "license": [ 2530 | "MIT" 2531 | ], 2532 | "authors": [ 2533 | { 2534 | "name": "PHP-FIG", 2535 | "homepage": "http://www.php-fig.org/" 2536 | } 2537 | ], 2538 | "description": "Standard interfaces for event handling.", 2539 | "keywords": [ 2540 | "events", 2541 | "psr", 2542 | "psr-14" 2543 | ], 2544 | "time": "2019-01-08T18:20:26+00:00" 2545 | }, 2546 | { 2547 | "name": "psr/log", 2548 | "version": "1.1.3", 2549 | "source": { 2550 | "type": "git", 2551 | "url": "https://github.com/php-fig/log.git", 2552 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 2553 | }, 2554 | "dist": { 2555 | "type": "zip", 2556 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 2557 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 2558 | "shasum": "" 2559 | }, 2560 | "require": { 2561 | "php": ">=5.3.0" 2562 | }, 2563 | "type": "library", 2564 | "extra": { 2565 | "branch-alias": { 2566 | "dev-master": "1.1.x-dev" 2567 | } 2568 | }, 2569 | "autoload": { 2570 | "psr-4": { 2571 | "Psr\\Log\\": "Psr/Log/" 2572 | } 2573 | }, 2574 | "notification-url": "https://packagist.org/downloads/", 2575 | "license": [ 2576 | "MIT" 2577 | ], 2578 | "authors": [ 2579 | { 2580 | "name": "PHP-FIG", 2581 | "homepage": "http://www.php-fig.org/" 2582 | } 2583 | ], 2584 | "description": "Common interface for logging libraries", 2585 | "homepage": "https://github.com/php-fig/log", 2586 | "keywords": [ 2587 | "log", 2588 | "psr", 2589 | "psr-3" 2590 | ], 2591 | "time": "2020-03-23T09:12:05+00:00" 2592 | }, 2593 | { 2594 | "name": "roots/acorn", 2595 | "version": "v1.0.9", 2596 | "source": { 2597 | "type": "git", 2598 | "url": "https://github.com/roots/acorn.git", 2599 | "reference": "6a68b133b1ad432f8fc3c3758faa329da4231efb" 2600 | }, 2601 | "dist": { 2602 | "type": "zip", 2603 | "url": "https://api.github.com/repos/roots/acorn/zipball/6a68b133b1ad432f8fc3c3758faa329da4231efb", 2604 | "reference": "6a68b133b1ad432f8fc3c3758faa329da4231efb", 2605 | "shasum": "" 2606 | }, 2607 | "require": { 2608 | "ext-json": "*", 2609 | "illuminate/cache": "^7.0", 2610 | "illuminate/config": "^7.0", 2611 | "illuminate/console": "^7.0", 2612 | "illuminate/container": "^7.0", 2613 | "illuminate/contracts": "^7.0", 2614 | "illuminate/events": "^7.0", 2615 | "illuminate/filesystem": "^7.0", 2616 | "illuminate/http": "^7.12", 2617 | "illuminate/log": "^7.0", 2618 | "illuminate/support": "^7.0", 2619 | "illuminate/view": "^7.0", 2620 | "league/flysystem": "^1.0", 2621 | "php": "^7.2.5", 2622 | "roots/support": "dev-master", 2623 | "symfony/error-handler": "^5.0", 2624 | "symfony/var-dumper": "^5.0" 2625 | }, 2626 | "require-dev": { 2627 | "filp/whoops": "^2.7", 2628 | "mikey179/vfsstream": "^1.6", 2629 | "phpunit/phpunit": "^8.5", 2630 | "roave/security-advisories": "dev-master", 2631 | "squizlabs/php_codesniffer": "^3.5" 2632 | }, 2633 | "suggest": { 2634 | "filp/whoops": "Required for friendly error pages in development (^2.0)." 2635 | }, 2636 | "type": "library", 2637 | "autoload": { 2638 | "psr-4": { 2639 | "Roots\\": "src/" 2640 | }, 2641 | "files": [ 2642 | "src/helpers.php" 2643 | ] 2644 | }, 2645 | "notification-url": "https://packagist.org/downloads/", 2646 | "license": [ 2647 | "MIT" 2648 | ], 2649 | "authors": [ 2650 | { 2651 | "name": "QWp6t", 2652 | "email": "hi@qwp6t.me" 2653 | }, 2654 | { 2655 | "name": "Brandon Nifong", 2656 | "email": "brandon@tendency.me" 2657 | } 2658 | ], 2659 | "description": "Lazy-loaded framework for Roots WordPress projects.", 2660 | "homepage": "https://roots.io/acorn/", 2661 | "keywords": [ 2662 | "sage", 2663 | "wordpress" 2664 | ], 2665 | "funding": [ 2666 | { 2667 | "url": "https://github.com/roots", 2668 | "type": "github" 2669 | }, 2670 | { 2671 | "url": "https://www.patreon.com/rootsdev", 2672 | "type": "patreon" 2673 | } 2674 | ], 2675 | "time": "2020-07-01T13:08:50+00:00" 2676 | }, 2677 | { 2678 | "name": "roots/support", 2679 | "version": "dev-master", 2680 | "source": { 2681 | "type": "git", 2682 | "url": "https://github.com/roots/support.git", 2683 | "reference": "0c5231dc194407e32bfee000d49a36775040289a" 2684 | }, 2685 | "dist": { 2686 | "type": "zip", 2687 | "url": "https://api.github.com/repos/roots/support/zipball/0c5231dc194407e32bfee000d49a36775040289a", 2688 | "reference": "0c5231dc194407e32bfee000d49a36775040289a", 2689 | "shasum": "" 2690 | }, 2691 | "require": { 2692 | "php": ">=5.6" 2693 | }, 2694 | "require-dev": { 2695 | "phpunit/phpunit": "^7.2", 2696 | "squizlabs/php_codesniffer": "^3.3" 2697 | }, 2698 | "type": "library", 2699 | "autoload": { 2700 | "files": [ 2701 | "helpers.php" 2702 | ] 2703 | }, 2704 | "notification-url": "https://packagist.org/downloads/", 2705 | "license": [ 2706 | "MIT" 2707 | ], 2708 | "authors": [ 2709 | { 2710 | "name": "QWp6t", 2711 | "email": "hi@qwp6t.me" 2712 | } 2713 | ], 2714 | "homepage": "https://github.com/roots/support/", 2715 | "time": "2019-01-28T09:46:14+00:00" 2716 | }, 2717 | { 2718 | "name": "squizlabs/php_codesniffer", 2719 | "version": "3.5.6", 2720 | "source": { 2721 | "type": "git", 2722 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2723 | "reference": "e97627871a7eab2f70e59166072a6b767d5834e0" 2724 | }, 2725 | "dist": { 2726 | "type": "zip", 2727 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e97627871a7eab2f70e59166072a6b767d5834e0", 2728 | "reference": "e97627871a7eab2f70e59166072a6b767d5834e0", 2729 | "shasum": "" 2730 | }, 2731 | "require": { 2732 | "ext-simplexml": "*", 2733 | "ext-tokenizer": "*", 2734 | "ext-xmlwriter": "*", 2735 | "php": ">=5.4.0" 2736 | }, 2737 | "require-dev": { 2738 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 2739 | }, 2740 | "bin": [ 2741 | "bin/phpcs", 2742 | "bin/phpcbf" 2743 | ], 2744 | "type": "library", 2745 | "extra": { 2746 | "branch-alias": { 2747 | "dev-master": "3.x-dev" 2748 | } 2749 | }, 2750 | "notification-url": "https://packagist.org/downloads/", 2751 | "license": [ 2752 | "BSD-3-Clause" 2753 | ], 2754 | "authors": [ 2755 | { 2756 | "name": "Greg Sherwood", 2757 | "role": "lead" 2758 | } 2759 | ], 2760 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2761 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 2762 | "keywords": [ 2763 | "phpcs", 2764 | "standards" 2765 | ], 2766 | "time": "2020-08-10T04:50:15+00:00" 2767 | }, 2768 | { 2769 | "name": "symfony/deprecation-contracts", 2770 | "version": "v2.1.3", 2771 | "source": { 2772 | "type": "git", 2773 | "url": "https://github.com/symfony/deprecation-contracts.git", 2774 | "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14" 2775 | }, 2776 | "dist": { 2777 | "type": "zip", 2778 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5e20b83385a77593259c9f8beb2c43cd03b2ac14", 2779 | "reference": "5e20b83385a77593259c9f8beb2c43cd03b2ac14", 2780 | "shasum": "" 2781 | }, 2782 | "require": { 2783 | "php": ">=7.1" 2784 | }, 2785 | "type": "library", 2786 | "extra": { 2787 | "branch-alias": { 2788 | "dev-master": "2.1-dev" 2789 | }, 2790 | "thanks": { 2791 | "name": "symfony/contracts", 2792 | "url": "https://github.com/symfony/contracts" 2793 | } 2794 | }, 2795 | "autoload": { 2796 | "files": [ 2797 | "function.php" 2798 | ] 2799 | }, 2800 | "notification-url": "https://packagist.org/downloads/", 2801 | "license": [ 2802 | "MIT" 2803 | ], 2804 | "authors": [ 2805 | { 2806 | "name": "Nicolas Grekas", 2807 | "email": "p@tchwork.com" 2808 | }, 2809 | { 2810 | "name": "Symfony Community", 2811 | "homepage": "https://symfony.com/contributors" 2812 | } 2813 | ], 2814 | "description": "A generic function and convention to trigger deprecation notices", 2815 | "homepage": "https://symfony.com", 2816 | "funding": [ 2817 | { 2818 | "url": "https://symfony.com/sponsor", 2819 | "type": "custom" 2820 | }, 2821 | { 2822 | "url": "https://github.com/fabpot", 2823 | "type": "github" 2824 | }, 2825 | { 2826 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2827 | "type": "tidelift" 2828 | } 2829 | ], 2830 | "time": "2020-06-06T08:49:21+00:00" 2831 | }, 2832 | { 2833 | "name": "symfony/error-handler", 2834 | "version": "v5.1.3", 2835 | "source": { 2836 | "type": "git", 2837 | "url": "https://github.com/symfony/error-handler.git", 2838 | "reference": "4a0d1673a4731c3cb2dea3580c73a676ecb9ed4b" 2839 | }, 2840 | "dist": { 2841 | "type": "zip", 2842 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/4a0d1673a4731c3cb2dea3580c73a676ecb9ed4b", 2843 | "reference": "4a0d1673a4731c3cb2dea3580c73a676ecb9ed4b", 2844 | "shasum": "" 2845 | }, 2846 | "require": { 2847 | "php": ">=7.2.5", 2848 | "psr/log": "^1.0", 2849 | "symfony/polyfill-php80": "^1.15", 2850 | "symfony/var-dumper": "^4.4|^5.0" 2851 | }, 2852 | "require-dev": { 2853 | "symfony/deprecation-contracts": "^2.1", 2854 | "symfony/http-kernel": "^4.4|^5.0", 2855 | "symfony/serializer": "^4.4|^5.0" 2856 | }, 2857 | "type": "library", 2858 | "extra": { 2859 | "branch-alias": { 2860 | "dev-master": "5.1-dev" 2861 | } 2862 | }, 2863 | "autoload": { 2864 | "psr-4": { 2865 | "Symfony\\Component\\ErrorHandler\\": "" 2866 | }, 2867 | "exclude-from-classmap": [ 2868 | "/Tests/" 2869 | ] 2870 | }, 2871 | "notification-url": "https://packagist.org/downloads/", 2872 | "license": [ 2873 | "MIT" 2874 | ], 2875 | "authors": [ 2876 | { 2877 | "name": "Fabien Potencier", 2878 | "email": "fabien@symfony.com" 2879 | }, 2880 | { 2881 | "name": "Symfony Community", 2882 | "homepage": "https://symfony.com/contributors" 2883 | } 2884 | ], 2885 | "description": "Symfony ErrorHandler Component", 2886 | "homepage": "https://symfony.com", 2887 | "funding": [ 2888 | { 2889 | "url": "https://symfony.com/sponsor", 2890 | "type": "custom" 2891 | }, 2892 | { 2893 | "url": "https://github.com/fabpot", 2894 | "type": "github" 2895 | }, 2896 | { 2897 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2898 | "type": "tidelift" 2899 | } 2900 | ], 2901 | "time": "2020-07-23T08:36:24+00:00" 2902 | }, 2903 | { 2904 | "name": "symfony/event-dispatcher", 2905 | "version": "v5.1.3", 2906 | "source": { 2907 | "type": "git", 2908 | "url": "https://github.com/symfony/event-dispatcher.git", 2909 | "reference": "7827d55911f91c070fc293ea51a06eec80797d76" 2910 | }, 2911 | "dist": { 2912 | "type": "zip", 2913 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7827d55911f91c070fc293ea51a06eec80797d76", 2914 | "reference": "7827d55911f91c070fc293ea51a06eec80797d76", 2915 | "shasum": "" 2916 | }, 2917 | "require": { 2918 | "php": ">=7.2.5", 2919 | "symfony/deprecation-contracts": "^2.1", 2920 | "symfony/event-dispatcher-contracts": "^2", 2921 | "symfony/polyfill-php80": "^1.15" 2922 | }, 2923 | "conflict": { 2924 | "symfony/dependency-injection": "<4.4" 2925 | }, 2926 | "provide": { 2927 | "psr/event-dispatcher-implementation": "1.0", 2928 | "symfony/event-dispatcher-implementation": "2.0" 2929 | }, 2930 | "require-dev": { 2931 | "psr/log": "~1.0", 2932 | "symfony/config": "^4.4|^5.0", 2933 | "symfony/dependency-injection": "^4.4|^5.0", 2934 | "symfony/expression-language": "^4.4|^5.0", 2935 | "symfony/http-foundation": "^4.4|^5.0", 2936 | "symfony/service-contracts": "^1.1|^2", 2937 | "symfony/stopwatch": "^4.4|^5.0" 2938 | }, 2939 | "suggest": { 2940 | "symfony/dependency-injection": "", 2941 | "symfony/http-kernel": "" 2942 | }, 2943 | "type": "library", 2944 | "extra": { 2945 | "branch-alias": { 2946 | "dev-master": "5.1-dev" 2947 | } 2948 | }, 2949 | "autoload": { 2950 | "psr-4": { 2951 | "Symfony\\Component\\EventDispatcher\\": "" 2952 | }, 2953 | "exclude-from-classmap": [ 2954 | "/Tests/" 2955 | ] 2956 | }, 2957 | "notification-url": "https://packagist.org/downloads/", 2958 | "license": [ 2959 | "MIT" 2960 | ], 2961 | "authors": [ 2962 | { 2963 | "name": "Fabien Potencier", 2964 | "email": "fabien@symfony.com" 2965 | }, 2966 | { 2967 | "name": "Symfony Community", 2968 | "homepage": "https://symfony.com/contributors" 2969 | } 2970 | ], 2971 | "description": "Symfony EventDispatcher Component", 2972 | "homepage": "https://symfony.com", 2973 | "funding": [ 2974 | { 2975 | "url": "https://symfony.com/sponsor", 2976 | "type": "custom" 2977 | }, 2978 | { 2979 | "url": "https://github.com/fabpot", 2980 | "type": "github" 2981 | }, 2982 | { 2983 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2984 | "type": "tidelift" 2985 | } 2986 | ], 2987 | "time": "2020-06-18T18:24:02+00:00" 2988 | }, 2989 | { 2990 | "name": "symfony/event-dispatcher-contracts", 2991 | "version": "v2.1.3", 2992 | "source": { 2993 | "type": "git", 2994 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2995 | "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b" 2996 | }, 2997 | "dist": { 2998 | "type": "zip", 2999 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f6f613d74cfc5a623fc36294d3451eb7fa5a042b", 3000 | "reference": "f6f613d74cfc5a623fc36294d3451eb7fa5a042b", 3001 | "shasum": "" 3002 | }, 3003 | "require": { 3004 | "php": ">=7.2.5", 3005 | "psr/event-dispatcher": "^1" 3006 | }, 3007 | "suggest": { 3008 | "symfony/event-dispatcher-implementation": "" 3009 | }, 3010 | "type": "library", 3011 | "extra": { 3012 | "branch-alias": { 3013 | "dev-master": "2.1-dev" 3014 | }, 3015 | "thanks": { 3016 | "name": "symfony/contracts", 3017 | "url": "https://github.com/symfony/contracts" 3018 | } 3019 | }, 3020 | "autoload": { 3021 | "psr-4": { 3022 | "Symfony\\Contracts\\EventDispatcher\\": "" 3023 | } 3024 | }, 3025 | "notification-url": "https://packagist.org/downloads/", 3026 | "license": [ 3027 | "MIT" 3028 | ], 3029 | "authors": [ 3030 | { 3031 | "name": "Nicolas Grekas", 3032 | "email": "p@tchwork.com" 3033 | }, 3034 | { 3035 | "name": "Symfony Community", 3036 | "homepage": "https://symfony.com/contributors" 3037 | } 3038 | ], 3039 | "description": "Generic abstractions related to dispatching event", 3040 | "homepage": "https://symfony.com", 3041 | "keywords": [ 3042 | "abstractions", 3043 | "contracts", 3044 | "decoupling", 3045 | "interfaces", 3046 | "interoperability", 3047 | "standards" 3048 | ], 3049 | "funding": [ 3050 | { 3051 | "url": "https://symfony.com/sponsor", 3052 | "type": "custom" 3053 | }, 3054 | { 3055 | "url": "https://github.com/fabpot", 3056 | "type": "github" 3057 | }, 3058 | { 3059 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3060 | "type": "tidelift" 3061 | } 3062 | ], 3063 | "time": "2020-07-06T13:23:11+00:00" 3064 | }, 3065 | { 3066 | "name": "symfony/http-foundation", 3067 | "version": "v5.1.3", 3068 | "source": { 3069 | "type": "git", 3070 | "url": "https://github.com/symfony/http-foundation.git", 3071 | "reference": "1f0d6627e680591c61e9176f04a0dc887b4e6702" 3072 | }, 3073 | "dist": { 3074 | "type": "zip", 3075 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1f0d6627e680591c61e9176f04a0dc887b4e6702", 3076 | "reference": "1f0d6627e680591c61e9176f04a0dc887b4e6702", 3077 | "shasum": "" 3078 | }, 3079 | "require": { 3080 | "php": ">=7.2.5", 3081 | "symfony/deprecation-contracts": "^2.1", 3082 | "symfony/polyfill-mbstring": "~1.1", 3083 | "symfony/polyfill-php80": "^1.15" 3084 | }, 3085 | "require-dev": { 3086 | "predis/predis": "~1.0", 3087 | "symfony/cache": "^4.4|^5.0", 3088 | "symfony/expression-language": "^4.4|^5.0", 3089 | "symfony/mime": "^4.4|^5.0" 3090 | }, 3091 | "suggest": { 3092 | "symfony/mime": "To use the file extension guesser" 3093 | }, 3094 | "type": "library", 3095 | "extra": { 3096 | "branch-alias": { 3097 | "dev-master": "5.1-dev" 3098 | } 3099 | }, 3100 | "autoload": { 3101 | "psr-4": { 3102 | "Symfony\\Component\\HttpFoundation\\": "" 3103 | }, 3104 | "exclude-from-classmap": [ 3105 | "/Tests/" 3106 | ] 3107 | }, 3108 | "notification-url": "https://packagist.org/downloads/", 3109 | "license": [ 3110 | "MIT" 3111 | ], 3112 | "authors": [ 3113 | { 3114 | "name": "Fabien Potencier", 3115 | "email": "fabien@symfony.com" 3116 | }, 3117 | { 3118 | "name": "Symfony Community", 3119 | "homepage": "https://symfony.com/contributors" 3120 | } 3121 | ], 3122 | "description": "Symfony HttpFoundation Component", 3123 | "homepage": "https://symfony.com", 3124 | "funding": [ 3125 | { 3126 | "url": "https://symfony.com/sponsor", 3127 | "type": "custom" 3128 | }, 3129 | { 3130 | "url": "https://github.com/fabpot", 3131 | "type": "github" 3132 | }, 3133 | { 3134 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3135 | "type": "tidelift" 3136 | } 3137 | ], 3138 | "time": "2020-07-23T10:04:31+00:00" 3139 | }, 3140 | { 3141 | "name": "symfony/http-kernel", 3142 | "version": "v5.1.3", 3143 | "source": { 3144 | "type": "git", 3145 | "url": "https://github.com/symfony/http-kernel.git", 3146 | "reference": "d6dd8f6420e377970ddad0d6317d4ce4186fc6b3" 3147 | }, 3148 | "dist": { 3149 | "type": "zip", 3150 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d6dd8f6420e377970ddad0d6317d4ce4186fc6b3", 3151 | "reference": "d6dd8f6420e377970ddad0d6317d4ce4186fc6b3", 3152 | "shasum": "" 3153 | }, 3154 | "require": { 3155 | "php": ">=7.2.5", 3156 | "psr/log": "~1.0", 3157 | "symfony/deprecation-contracts": "^2.1", 3158 | "symfony/error-handler": "^4.4|^5.0", 3159 | "symfony/event-dispatcher": "^5.0", 3160 | "symfony/http-foundation": "^4.4|^5.0", 3161 | "symfony/polyfill-ctype": "^1.8", 3162 | "symfony/polyfill-php73": "^1.9", 3163 | "symfony/polyfill-php80": "^1.15" 3164 | }, 3165 | "conflict": { 3166 | "symfony/browser-kit": "<4.4", 3167 | "symfony/cache": "<5.0", 3168 | "symfony/config": "<5.0", 3169 | "symfony/console": "<4.4", 3170 | "symfony/dependency-injection": "<4.4", 3171 | "symfony/doctrine-bridge": "<5.0", 3172 | "symfony/form": "<5.0", 3173 | "symfony/http-client": "<5.0", 3174 | "symfony/mailer": "<5.0", 3175 | "symfony/messenger": "<5.0", 3176 | "symfony/translation": "<5.0", 3177 | "symfony/twig-bridge": "<5.0", 3178 | "symfony/validator": "<5.0", 3179 | "twig/twig": "<2.4" 3180 | }, 3181 | "provide": { 3182 | "psr/log-implementation": "1.0" 3183 | }, 3184 | "require-dev": { 3185 | "psr/cache": "~1.0", 3186 | "symfony/browser-kit": "^4.4|^5.0", 3187 | "symfony/config": "^5.0", 3188 | "symfony/console": "^4.4|^5.0", 3189 | "symfony/css-selector": "^4.4|^5.0", 3190 | "symfony/dependency-injection": "^4.4|^5.0", 3191 | "symfony/dom-crawler": "^4.4|^5.0", 3192 | "symfony/expression-language": "^4.4|^5.0", 3193 | "symfony/finder": "^4.4|^5.0", 3194 | "symfony/process": "^4.4|^5.0", 3195 | "symfony/routing": "^4.4|^5.0", 3196 | "symfony/stopwatch": "^4.4|^5.0", 3197 | "symfony/translation": "^4.4|^5.0", 3198 | "symfony/translation-contracts": "^1.1|^2", 3199 | "twig/twig": "^2.4|^3.0" 3200 | }, 3201 | "suggest": { 3202 | "symfony/browser-kit": "", 3203 | "symfony/config": "", 3204 | "symfony/console": "", 3205 | "symfony/dependency-injection": "" 3206 | }, 3207 | "type": "library", 3208 | "extra": { 3209 | "branch-alias": { 3210 | "dev-master": "5.1-dev" 3211 | } 3212 | }, 3213 | "autoload": { 3214 | "psr-4": { 3215 | "Symfony\\Component\\HttpKernel\\": "" 3216 | }, 3217 | "exclude-from-classmap": [ 3218 | "/Tests/" 3219 | ] 3220 | }, 3221 | "notification-url": "https://packagist.org/downloads/", 3222 | "license": [ 3223 | "MIT" 3224 | ], 3225 | "authors": [ 3226 | { 3227 | "name": "Fabien Potencier", 3228 | "email": "fabien@symfony.com" 3229 | }, 3230 | { 3231 | "name": "Symfony Community", 3232 | "homepage": "https://symfony.com/contributors" 3233 | } 3234 | ], 3235 | "description": "Symfony HttpKernel Component", 3236 | "homepage": "https://symfony.com", 3237 | "funding": [ 3238 | { 3239 | "url": "https://symfony.com/sponsor", 3240 | "type": "custom" 3241 | }, 3242 | { 3243 | "url": "https://github.com/fabpot", 3244 | "type": "github" 3245 | }, 3246 | { 3247 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3248 | "type": "tidelift" 3249 | } 3250 | ], 3251 | "time": "2020-07-24T04:22:56+00:00" 3252 | }, 3253 | { 3254 | "name": "symfony/mime", 3255 | "version": "v5.1.3", 3256 | "source": { 3257 | "type": "git", 3258 | "url": "https://github.com/symfony/mime.git", 3259 | "reference": "149fb0ad35aae3c7637b496b38478797fa6a7ea6" 3260 | }, 3261 | "dist": { 3262 | "type": "zip", 3263 | "url": "https://api.github.com/repos/symfony/mime/zipball/149fb0ad35aae3c7637b496b38478797fa6a7ea6", 3264 | "reference": "149fb0ad35aae3c7637b496b38478797fa6a7ea6", 3265 | "shasum": "" 3266 | }, 3267 | "require": { 3268 | "php": ">=7.2.5", 3269 | "symfony/polyfill-intl-idn": "^1.10", 3270 | "symfony/polyfill-mbstring": "^1.0", 3271 | "symfony/polyfill-php80": "^1.15" 3272 | }, 3273 | "conflict": { 3274 | "symfony/mailer": "<4.4" 3275 | }, 3276 | "require-dev": { 3277 | "egulias/email-validator": "^2.1.10", 3278 | "symfony/dependency-injection": "^4.4|^5.0" 3279 | }, 3280 | "type": "library", 3281 | "extra": { 3282 | "branch-alias": { 3283 | "dev-master": "5.1-dev" 3284 | } 3285 | }, 3286 | "autoload": { 3287 | "psr-4": { 3288 | "Symfony\\Component\\Mime\\": "" 3289 | }, 3290 | "exclude-from-classmap": [ 3291 | "/Tests/" 3292 | ] 3293 | }, 3294 | "notification-url": "https://packagist.org/downloads/", 3295 | "license": [ 3296 | "MIT" 3297 | ], 3298 | "authors": [ 3299 | { 3300 | "name": "Fabien Potencier", 3301 | "email": "fabien@symfony.com" 3302 | }, 3303 | { 3304 | "name": "Symfony Community", 3305 | "homepage": "https://symfony.com/contributors" 3306 | } 3307 | ], 3308 | "description": "A library to manipulate MIME messages", 3309 | "homepage": "https://symfony.com", 3310 | "keywords": [ 3311 | "mime", 3312 | "mime-type" 3313 | ], 3314 | "funding": [ 3315 | { 3316 | "url": "https://symfony.com/sponsor", 3317 | "type": "custom" 3318 | }, 3319 | { 3320 | "url": "https://github.com/fabpot", 3321 | "type": "github" 3322 | }, 3323 | { 3324 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3325 | "type": "tidelift" 3326 | } 3327 | ], 3328 | "time": "2020-07-23T10:04:31+00:00" 3329 | }, 3330 | { 3331 | "name": "symfony/polyfill-intl-idn", 3332 | "version": "v1.18.1", 3333 | "source": { 3334 | "type": "git", 3335 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 3336 | "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" 3337 | }, 3338 | "dist": { 3339 | "type": "zip", 3340 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", 3341 | "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", 3342 | "shasum": "" 3343 | }, 3344 | "require": { 3345 | "php": ">=5.3.3", 3346 | "symfony/polyfill-intl-normalizer": "^1.10", 3347 | "symfony/polyfill-php70": "^1.10", 3348 | "symfony/polyfill-php72": "^1.10" 3349 | }, 3350 | "suggest": { 3351 | "ext-intl": "For best performance" 3352 | }, 3353 | "type": "library", 3354 | "extra": { 3355 | "branch-alias": { 3356 | "dev-master": "1.18-dev" 3357 | }, 3358 | "thanks": { 3359 | "name": "symfony/polyfill", 3360 | "url": "https://github.com/symfony/polyfill" 3361 | } 3362 | }, 3363 | "autoload": { 3364 | "psr-4": { 3365 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 3366 | }, 3367 | "files": [ 3368 | "bootstrap.php" 3369 | ] 3370 | }, 3371 | "notification-url": "https://packagist.org/downloads/", 3372 | "license": [ 3373 | "MIT" 3374 | ], 3375 | "authors": [ 3376 | { 3377 | "name": "Laurent Bassin", 3378 | "email": "laurent@bassin.info" 3379 | }, 3380 | { 3381 | "name": "Trevor Rowbotham", 3382 | "email": "trevor.rowbotham@pm.me" 3383 | }, 3384 | { 3385 | "name": "Symfony Community", 3386 | "homepage": "https://symfony.com/contributors" 3387 | } 3388 | ], 3389 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 3390 | "homepage": "https://symfony.com", 3391 | "keywords": [ 3392 | "compatibility", 3393 | "idn", 3394 | "intl", 3395 | "polyfill", 3396 | "portable", 3397 | "shim" 3398 | ], 3399 | "funding": [ 3400 | { 3401 | "url": "https://symfony.com/sponsor", 3402 | "type": "custom" 3403 | }, 3404 | { 3405 | "url": "https://github.com/fabpot", 3406 | "type": "github" 3407 | }, 3408 | { 3409 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3410 | "type": "tidelift" 3411 | } 3412 | ], 3413 | "time": "2020-08-04T06:02:08+00:00" 3414 | }, 3415 | { 3416 | "name": "symfony/polyfill-php70", 3417 | "version": "v1.18.1", 3418 | "source": { 3419 | "type": "git", 3420 | "url": "https://github.com/symfony/polyfill-php70.git", 3421 | "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" 3422 | }, 3423 | "dist": { 3424 | "type": "zip", 3425 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", 3426 | "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", 3427 | "shasum": "" 3428 | }, 3429 | "require": { 3430 | "paragonie/random_compat": "~1.0|~2.0|~9.99", 3431 | "php": ">=5.3.3" 3432 | }, 3433 | "type": "library", 3434 | "extra": { 3435 | "branch-alias": { 3436 | "dev-master": "1.18-dev" 3437 | }, 3438 | "thanks": { 3439 | "name": "symfony/polyfill", 3440 | "url": "https://github.com/symfony/polyfill" 3441 | } 3442 | }, 3443 | "autoload": { 3444 | "psr-4": { 3445 | "Symfony\\Polyfill\\Php70\\": "" 3446 | }, 3447 | "files": [ 3448 | "bootstrap.php" 3449 | ], 3450 | "classmap": [ 3451 | "Resources/stubs" 3452 | ] 3453 | }, 3454 | "notification-url": "https://packagist.org/downloads/", 3455 | "license": [ 3456 | "MIT" 3457 | ], 3458 | "authors": [ 3459 | { 3460 | "name": "Nicolas Grekas", 3461 | "email": "p@tchwork.com" 3462 | }, 3463 | { 3464 | "name": "Symfony Community", 3465 | "homepage": "https://symfony.com/contributors" 3466 | } 3467 | ], 3468 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 3469 | "homepage": "https://symfony.com", 3470 | "keywords": [ 3471 | "compatibility", 3472 | "polyfill", 3473 | "portable", 3474 | "shim" 3475 | ], 3476 | "funding": [ 3477 | { 3478 | "url": "https://symfony.com/sponsor", 3479 | "type": "custom" 3480 | }, 3481 | { 3482 | "url": "https://github.com/fabpot", 3483 | "type": "github" 3484 | }, 3485 | { 3486 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3487 | "type": "tidelift" 3488 | } 3489 | ], 3490 | "time": "2020-07-14T12:35:20+00:00" 3491 | }, 3492 | { 3493 | "name": "symfony/polyfill-php72", 3494 | "version": "v1.18.1", 3495 | "source": { 3496 | "type": "git", 3497 | "url": "https://github.com/symfony/polyfill-php72.git", 3498 | "reference": "639447d008615574653fb3bc60d1986d7172eaae" 3499 | }, 3500 | "dist": { 3501 | "type": "zip", 3502 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", 3503 | "reference": "639447d008615574653fb3bc60d1986d7172eaae", 3504 | "shasum": "" 3505 | }, 3506 | "require": { 3507 | "php": ">=5.3.3" 3508 | }, 3509 | "type": "library", 3510 | "extra": { 3511 | "branch-alias": { 3512 | "dev-master": "1.18-dev" 3513 | }, 3514 | "thanks": { 3515 | "name": "symfony/polyfill", 3516 | "url": "https://github.com/symfony/polyfill" 3517 | } 3518 | }, 3519 | "autoload": { 3520 | "psr-4": { 3521 | "Symfony\\Polyfill\\Php72\\": "" 3522 | }, 3523 | "files": [ 3524 | "bootstrap.php" 3525 | ] 3526 | }, 3527 | "notification-url": "https://packagist.org/downloads/", 3528 | "license": [ 3529 | "MIT" 3530 | ], 3531 | "authors": [ 3532 | { 3533 | "name": "Nicolas Grekas", 3534 | "email": "p@tchwork.com" 3535 | }, 3536 | { 3537 | "name": "Symfony Community", 3538 | "homepage": "https://symfony.com/contributors" 3539 | } 3540 | ], 3541 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 3542 | "homepage": "https://symfony.com", 3543 | "keywords": [ 3544 | "compatibility", 3545 | "polyfill", 3546 | "portable", 3547 | "shim" 3548 | ], 3549 | "funding": [ 3550 | { 3551 | "url": "https://symfony.com/sponsor", 3552 | "type": "custom" 3553 | }, 3554 | { 3555 | "url": "https://github.com/fabpot", 3556 | "type": "github" 3557 | }, 3558 | { 3559 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3560 | "type": "tidelift" 3561 | } 3562 | ], 3563 | "time": "2020-07-14T12:35:20+00:00" 3564 | }, 3565 | { 3566 | "name": "symfony/process", 3567 | "version": "v5.1.3", 3568 | "source": { 3569 | "type": "git", 3570 | "url": "https://github.com/symfony/process.git", 3571 | "reference": "1864216226af21eb76d9477f691e7cbf198e0402" 3572 | }, 3573 | "dist": { 3574 | "type": "zip", 3575 | "url": "https://api.github.com/repos/symfony/process/zipball/1864216226af21eb76d9477f691e7cbf198e0402", 3576 | "reference": "1864216226af21eb76d9477f691e7cbf198e0402", 3577 | "shasum": "" 3578 | }, 3579 | "require": { 3580 | "php": ">=7.2.5", 3581 | "symfony/polyfill-php80": "^1.15" 3582 | }, 3583 | "type": "library", 3584 | "extra": { 3585 | "branch-alias": { 3586 | "dev-master": "5.1-dev" 3587 | } 3588 | }, 3589 | "autoload": { 3590 | "psr-4": { 3591 | "Symfony\\Component\\Process\\": "" 3592 | }, 3593 | "exclude-from-classmap": [ 3594 | "/Tests/" 3595 | ] 3596 | }, 3597 | "notification-url": "https://packagist.org/downloads/", 3598 | "license": [ 3599 | "MIT" 3600 | ], 3601 | "authors": [ 3602 | { 3603 | "name": "Fabien Potencier", 3604 | "email": "fabien@symfony.com" 3605 | }, 3606 | { 3607 | "name": "Symfony Community", 3608 | "homepage": "https://symfony.com/contributors" 3609 | } 3610 | ], 3611 | "description": "Symfony Process Component", 3612 | "homepage": "https://symfony.com", 3613 | "funding": [ 3614 | { 3615 | "url": "https://symfony.com/sponsor", 3616 | "type": "custom" 3617 | }, 3618 | { 3619 | "url": "https://github.com/fabpot", 3620 | "type": "github" 3621 | }, 3622 | { 3623 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3624 | "type": "tidelift" 3625 | } 3626 | ], 3627 | "time": "2020-07-23T08:36:24+00:00" 3628 | }, 3629 | { 3630 | "name": "symfony/var-dumper", 3631 | "version": "v5.1.3", 3632 | "source": { 3633 | "type": "git", 3634 | "url": "https://github.com/symfony/var-dumper.git", 3635 | "reference": "2ebe1c7bb52052624d6dc1250f4abe525655d75a" 3636 | }, 3637 | "dist": { 3638 | "type": "zip", 3639 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2ebe1c7bb52052624d6dc1250f4abe525655d75a", 3640 | "reference": "2ebe1c7bb52052624d6dc1250f4abe525655d75a", 3641 | "shasum": "" 3642 | }, 3643 | "require": { 3644 | "php": ">=7.2.5", 3645 | "symfony/polyfill-mbstring": "~1.0", 3646 | "symfony/polyfill-php80": "^1.15" 3647 | }, 3648 | "conflict": { 3649 | "phpunit/phpunit": "<5.4.3", 3650 | "symfony/console": "<4.4" 3651 | }, 3652 | "require-dev": { 3653 | "ext-iconv": "*", 3654 | "symfony/console": "^4.4|^5.0", 3655 | "symfony/process": "^4.4|^5.0", 3656 | "twig/twig": "^2.4|^3.0" 3657 | }, 3658 | "suggest": { 3659 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 3660 | "ext-intl": "To show region name in time zone dump", 3661 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 3662 | }, 3663 | "bin": [ 3664 | "Resources/bin/var-dump-server" 3665 | ], 3666 | "type": "library", 3667 | "extra": { 3668 | "branch-alias": { 3669 | "dev-master": "5.1-dev" 3670 | } 3671 | }, 3672 | "autoload": { 3673 | "files": [ 3674 | "Resources/functions/dump.php" 3675 | ], 3676 | "psr-4": { 3677 | "Symfony\\Component\\VarDumper\\": "" 3678 | }, 3679 | "exclude-from-classmap": [ 3680 | "/Tests/" 3681 | ] 3682 | }, 3683 | "notification-url": "https://packagist.org/downloads/", 3684 | "license": [ 3685 | "MIT" 3686 | ], 3687 | "authors": [ 3688 | { 3689 | "name": "Nicolas Grekas", 3690 | "email": "p@tchwork.com" 3691 | }, 3692 | { 3693 | "name": "Symfony Community", 3694 | "homepage": "https://symfony.com/contributors" 3695 | } 3696 | ], 3697 | "description": "Symfony mechanism for exploring and dumping PHP variables", 3698 | "homepage": "https://symfony.com", 3699 | "keywords": [ 3700 | "debug", 3701 | "dump" 3702 | ], 3703 | "funding": [ 3704 | { 3705 | "url": "https://symfony.com/sponsor", 3706 | "type": "custom" 3707 | }, 3708 | { 3709 | "url": "https://github.com/fabpot", 3710 | "type": "github" 3711 | }, 3712 | { 3713 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3714 | "type": "tidelift" 3715 | } 3716 | ], 3717 | "time": "2020-06-24T13:36:18+00:00" 3718 | } 3719 | ], 3720 | "aliases": [], 3721 | "minimum-stability": "stable", 3722 | "stability-flags": { 3723 | "roots/support": 20 3724 | }, 3725 | "prefer-stable": false, 3726 | "prefer-lowest": false, 3727 | "platform": { 3728 | "php": ">=7.3" 3729 | }, 3730 | "platform-dev": [], 3731 | "plugin-api-version": "1.1.0" 3732 | } 3733 | -------------------------------------------------------------------------------- /publishes/config/database.php: -------------------------------------------------------------------------------- 1 | env('DB_CONNECTION', 'mysql'), 21 | 22 | /* 23 | |-------------------------------------------------------------------------- 24 | | Database Connections 25 | |-------------------------------------------------------------------------- 26 | | 27 | | Here are each of the database connections setup for your application. 28 | | Of course, examples of configuring each database platform that is 29 | | supported by Acorn is shown below to make development simple. 30 | | 31 | | 32 | | All database work in Acorn is done through the PHP PDO facilities 33 | | so make sure you have the driver for your particular database of 34 | | choice installed on your machine before you begin development. 35 | | 36 | */ 37 | 38 | 'connections' => [ 39 | 'mysql' => [ 40 | 'driver' => 'mysql', 41 | 'host' => env('DB_HOST', defined('DB_HOST') ? DB_HOST : 'localhost'), 42 | 'port' => env('DB_PORT', defined('DB_PORT') ? DB_PORT : '3306'), 43 | 'database' => env('DB_NAME', defined('DB_NAME') ? DB_NAME : 'wordpress'), 44 | 'username' => env('DB_USER', defined('DB_USER') ? DB_USER : 'wordpress'), 45 | 'password' => env('DB_PASSWORD', defined('DB_PASSWORD') ? DB_PASSWORD : ''), 46 | 'unix_socket' => env('DB_SOCKET', ''), 47 | 'charset' => env('DB_CHARSET', defined('DB_CHARSET') ? DB_CHARSET : 'utf8mb4'), 48 | 'collation' => env('DB_COLLATION', defined('DB_COLLATION') ? DB_COLLATION : 'utf8mb4_unicode_ci'), 49 | 'prefix' => $wpdb->prefix, 50 | 'prefix_indexes' => true, 51 | 'strict' => true, 52 | 'engine' => null, 53 | ], 54 | ], 55 | 56 | /* 57 | |-------------------------------------------------------------------------- 58 | | Migration Repository Table 59 | |-------------------------------------------------------------------------- 60 | | 61 | | This table keeps track of all the migrations that have already run for 62 | | your application. Using this information, we can determine which of 63 | | the migrations on disk haven't actually been run in the database. 64 | | 65 | */ 66 | 67 | 'migrations' => 'migrations', 68 | 69 | /* 70 | |-------------------------------------------------------------------------- 71 | | Post Types 72 | |-------------------------------------------------------------------------- 73 | | 74 | | Add Eloquent support for custom post types by adding them to this array. 75 | | 76 | | Once added, you can extend the AcornDB\Model\Post class in your application 77 | | and then use the model however you see fit. 78 | | 79 | */ 80 | 81 | 'post_types' => [ 82 | // 83 | ], 84 | ]; 85 | -------------------------------------------------------------------------------- /publishes/database/factories/Post.php: -------------------------------------------------------------------------------- 1 | define(Post::class, function (Faker $faker) { 27 | return [ 28 | 'post_title' => $faker->sentence(), 29 | 'post_excerpt' => $faker->sentence() . $faker->sentence(), 30 | 'post_content' => $faker->paragraph(), 31 | 'post_author' => 1, 32 | 'post_name' => $faker->slug(), 33 | 'post_date' => Carbon::now()->toDateTimeString(), 34 | 'post_date_gmt' => Carbon::now('gmt')->toDateTimeString(), 35 | 'post_modified_gmt' => Carbon::now('gmt')->toDateTimeString(), 36 | 'post_content_filtered' => '', 37 | 'to_ping' => '', 38 | 'pinged' => '', 39 | ]; 40 | }); 41 | -------------------------------------------------------------------------------- /publishes/database/migrations/posts-create.php: -------------------------------------------------------------------------------- 1 | bigInteger('ID'); 32 | $table->bigInteger('post_author')->unsigned(); 33 | $table->dateTime('post_date'); 34 | $table->dateTime('post_date_gmt'); 35 | $table->longText('post_content'); 36 | $table->text('post_title'); 37 | $table->text('post_excerpt'); 38 | $table->string('post_status'); 39 | $table->string('comment_status'); 40 | $table->string('ping_status'); 41 | $table->string('post_password'); 42 | $table->string('post_name'); 43 | $table->text('to_ping'); 44 | $table->text('pinged'); 45 | $table->dateTime('post_modified'); 46 | $table->dateTime('post_modified_gmt'); 47 | $table->longText('post_content_filtered'); 48 | $table->bigInteger('post_parent')->unsigned(); 49 | $table->string('guid'); 50 | $table->integer('menu_order'); 51 | $table->string('post_type'); 52 | $table->string('post_mime_type'); 53 | $table->bigInteger('comment_count'); 54 | }); 55 | } 56 | 57 | /** 58 | * Reverse the migrations. 59 | * 60 | * @return void 61 | */ 62 | public function down() 63 | { 64 | Schema::table('posts', function (Blueprint $table) { 65 | Schema::dropIfExists('posts'); 66 | }); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /publishes/database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(PostSeeder::class); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /publishes/database/seeds/PostSeeder.php: -------------------------------------------------------------------------------- 1 | factory(Post::class, 3)->create(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Console/Commands/Factories/FactoryMakeCommand.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | class FactoryMakeCommand extends GeneratorCommand 17 | { 18 | /** 19 | * The console command name. 20 | * 21 | * @var string 22 | */ 23 | protected $name = 'make:factory'; 24 | 25 | /** 26 | * The console command description. 27 | * 28 | * @var string 29 | */ 30 | protected $description = 'Create a new model factory'; 31 | 32 | /** 33 | * The type of class being generated. 34 | * 35 | * @var string 36 | */ 37 | protected $type = 'Factory'; 38 | 39 | /** 40 | * Get the stub file for the generator. 41 | * 42 | * @return string 43 | */ 44 | protected function getStub() 45 | { 46 | return __DIR__ . '/stubs/factory.stub'; 47 | } 48 | 49 | /** 50 | * Build the class with the given name. 51 | * 52 | * @param string $name 53 | * @return string 54 | */ 55 | protected function buildClass($name) 56 | { 57 | $namespaceModel = $this->option('model') 58 | ? $this->qualifyClass($this->option('model')) 59 | : trim($this->rootNamespace(), '\\') . '\\Model'; 60 | 61 | $model = class_basename($namespaceModel); 62 | 63 | return str_replace( 64 | [ 65 | 'NamespacedDummyModel', 66 | 'DummyModel', 67 | ], 68 | [ 69 | $namespaceModel, 70 | $model, 71 | ], 72 | parent::buildClass($name) 73 | ); 74 | } 75 | 76 | /** 77 | * Get the destination class path. 78 | * 79 | * @param string $name 80 | * @return string 81 | */ 82 | protected function getPath($name) 83 | { 84 | $name = str_replace( 85 | ['\\', '/'], 86 | '', 87 | $this->argument('name') 88 | ); 89 | 90 | return base_path("/database/factories/{$name}Factory.php"); 91 | } 92 | 93 | /** 94 | * Get the console command options. 95 | * 96 | * @return array 97 | */ 98 | protected function getOptions() 99 | { 100 | return [ 101 | ['model', 'm', InputOption::VALUE_OPTIONAL, 'The name of the model'], 102 | ]; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /src/Console/Commands/Factories/stubs/factory.stub: -------------------------------------------------------------------------------- 1 | define(DummyModel::class, function (Faker $faker) { 9 | return [ 10 | // 11 | ]; 12 | }); 13 | 14 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/BaseCommand.php: -------------------------------------------------------------------------------- 1 | 11 | * @license MIT 12 | */ 13 | class BaseCommand extends Command 14 | { 15 | /** 16 | * Instantiate the Acorn container. 17 | * 18 | * @param Application $app 19 | * @return void 20 | */ 21 | protected function app(Application $app) : void 22 | { 23 | $this->app = $app; 24 | } 25 | 26 | /** 27 | * Get all of the migration paths. 28 | * 29 | * @return array 30 | **/ 31 | protected function getMigrationPaths() 32 | { 33 | // Here, we will check to see if a path option has been defined. If it has we will 34 | // use the path relative to the root of the installation folder so our database 35 | // migrations may be run for any customized path from within the application. 36 | if ($this->input->hasOption('path') && $this->option('path')) { 37 | return collect($this->option('path'))->map(function ($path) { 38 | return !$this->usingRealPath() ? $this->app->basePath() . DIRECTORY_SEPARATOR . $path : $path; 39 | })->all(); 40 | } 41 | 42 | return array_merge($this->migrator->paths(), [ 43 | $this->getMigrationPath() 44 | ]); 45 | } 46 | 47 | /** 48 | * Determine if the given path(s) are pre-resolved "real" paths. 49 | * 50 | * @return bool 51 | **/ 52 | protected function usingRealPath() 53 | { 54 | return $this->input->hasOption('realpath') && $this->option('realpath'); 55 | } 56 | 57 | /** 58 | * Get the path to the migration directory. 59 | * 60 | * @return string 61 | **/ 62 | protected function getMigrationPath() 63 | { 64 | return $this->app['config']['database.migrations_path']; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/FreshCommand.php: -------------------------------------------------------------------------------- 1 | 13 | * @license MIT 14 | */ 15 | class FreshCommand extends BaseCommand 16 | { 17 | use ConfirmableTrait; 18 | 19 | /** 20 | * The console command name. 21 | * 22 | * @var string 23 | */ 24 | protected $name = 'migrate:fresh'; 25 | 26 | /** 27 | * The console command description. 28 | * 29 | * @var string 30 | */ 31 | protected $description = 'Drop all tables and re-run all migrations'; 32 | 33 | /** 34 | * Execute the console command. 35 | * 36 | * @return void 37 | */ 38 | public function handle() 39 | { 40 | if (! $this->confirmToProceed()) { 41 | return; 42 | } 43 | 44 | $database = $this->input->getOption('database'); 45 | 46 | if ($this->option('drop-views')) { 47 | $this->dropAllViews($database); 48 | 49 | $this->info('Dropped all views successfully.'); 50 | } 51 | 52 | $this->dropAllTables($database); 53 | 54 | $this->info('Dropped all tables successfully.'); 55 | 56 | if ($this->option('drop-types')) { 57 | $this->dropAllTypes($database); 58 | 59 | $this->info('Dropped all types successfully.'); 60 | } 61 | 62 | $this->call('migrate', array_filter([ 63 | '--database' => $database, 64 | '--path' => $this->input->getOption('path'), 65 | '--realpath' => $this->input->getOption('realpath'), 66 | '--force' => true, 67 | '--step' => $this->option('step'), 68 | ])); 69 | 70 | if ($this->needsSeeding()) { 71 | $this->runSeeder($database); 72 | } 73 | } 74 | 75 | /** 76 | * Drop all of the database tables. 77 | * 78 | * @param string $database 79 | * @return void 80 | */ 81 | protected function dropAllTables($database) 82 | { 83 | $this->laravel['db']->connection($database) 84 | ->getSchemaBuilder() 85 | ->dropAllTables(); 86 | } 87 | 88 | /** 89 | * Drop all of the database views. 90 | * 91 | * @param string $database 92 | * @return void 93 | */ 94 | protected function dropAllViews($database) 95 | { 96 | $this->laravel['db']->connection($database) 97 | ->getSchemaBuilder() 98 | ->dropAllViews(); 99 | } 100 | 101 | /** 102 | * Drop all of the database types. 103 | * 104 | * @param string $database 105 | * @return void 106 | */ 107 | protected function dropAllTypes($database) 108 | { 109 | $this->laravel['db']->connection($database) 110 | ->getSchemaBuilder() 111 | ->dropAllTypes(); 112 | } 113 | 114 | /** 115 | * Determine if the developer has requested database seeding. 116 | * 117 | * @return bool 118 | */ 119 | protected function needsSeeding() 120 | { 121 | return $this->option('seed') || $this->option('seeder'); 122 | } 123 | 124 | /** 125 | * Run the database seeder command. 126 | * 127 | * @param string $database 128 | * @return void 129 | */ 130 | protected function runSeeder($database) 131 | { 132 | $this->call('db:seed', array_filter([ 133 | '--database' => $database, 134 | '--class' => $this->option('seeder') ?: 'DatabaseSeeder', 135 | '--force' => true, 136 | ])); 137 | } 138 | 139 | /** 140 | * Get the console command options. 141 | * 142 | * @return array 143 | */ 144 | protected function getOptions() 145 | { 146 | return [ 147 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 148 | ['drop-views', null, InputOption::VALUE_NONE, 'Drop all tables and views'], 149 | ['drop-types', null, InputOption::VALUE_NONE, 'Drop all tables and types (Postgres only)'], 150 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'], 151 | ['path', null, InputOption::VALUE_OPTIONAL, 'The path to the migrations files to be executed'], 152 | ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'], 153 | ['seed', null, InputOption::VALUE_NONE, 'Indicates if the seed task should be re-run'], 154 | ['seeder', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder'], 155 | ['step', null, InputOption::VALUE_NONE, 'Force the migrations to be run so they can be rolled back individually'], 156 | ]; 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/InstallCommand.php: -------------------------------------------------------------------------------- 1 | repository = $app['migration.repository']; 41 | } 42 | 43 | /** 44 | * Execute the console command. 45 | * 46 | * @return void 47 | **/ 48 | public function handle() 49 | { 50 | $this->repository->setSource($this->input->getOption('database')); 51 | $this->repository->createRepository(); 52 | 53 | $this->info('Migration table created successfully.'); 54 | } 55 | 56 | /** 57 | * Get the console command options. 58 | * 59 | * @return array 60 | **/ 61 | protected function getOptions() 62 | { 63 | return [ 64 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 65 | ]; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/MakeCommand.php: -------------------------------------------------------------------------------- 1 | 13 | * @license MIT 14 | */ 15 | class MakeCommand extends BaseCommand 16 | { 17 | /** 18 | * The console command name. 19 | * 20 | * @var string 21 | */ 22 | protected $name = 'migrate:make'; 23 | 24 | /** 25 | * The console command signature. 26 | * 27 | * @var string 28 | */ 29 | protected $signature = 'migrate:make {name : The name of your migration} 30 | {table : The table to migrate.} 31 | {--create : Creates table}'; 32 | 33 | /** 34 | * The description of the command. 35 | * 36 | * @var string 37 | */ 38 | protected $description = 'Create a new migration file'; 39 | 40 | /** 41 | * The migration creator instance. 42 | * 43 | * @var \Illuminate\Database\Migrations\MigrationCreator 44 | */ 45 | protected $creator; 46 | 47 | public function __construct(MigrationCreator $creator) 48 | { 49 | parent::__construct(); 50 | 51 | $this->creator = $creator; 52 | } 53 | 54 | /** 55 | * Execute the console command. 56 | * 57 | * @return void 58 | */ 59 | public function handle() 60 | { 61 | $name = $this->argument('name'); 62 | 63 | $table = $this->argument('table'); 64 | 65 | $create = $this->option('create'); 66 | 67 | if (! $table && is_string($create)) { 68 | $table = $create; 69 | } 70 | 71 | $this->writeMigration($name, $table, $create); 72 | } 73 | 74 | /** 75 | * Write the migration file to disk. 76 | * 77 | * @param string $name 78 | * @param string $table 79 | * @param bool $create 80 | * @return string 81 | */ 82 | protected function writeMigration($name, $table, $create) 83 | { 84 | $path = $this->getMigrationPath(); 85 | 86 | $this->creator->create($name, $path, $table, $create); 87 | 88 | $this->output->newLine(); 89 | $this->output->writeln("Migration created!"); 90 | $this->output->writeln("Name: {$name}"); 91 | $this->output->write("Table: {$table}"); 92 | 93 | if ($create) { 94 | $this->output->write(" Note: new database table created."); 95 | } 96 | 97 | $this->output->newLine(); 98 | $this->output->writeln("Directory: {$path}"); 99 | $this->output->newLine(); 100 | } 101 | 102 | /** 103 | * Get migrations path. 104 | * 105 | * @return string 106 | */ 107 | protected function getMigrationPath(): string 108 | { 109 | return app('config')->get('database.migrations_path'); 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/MigrateCommand.php: -------------------------------------------------------------------------------- 1 | 17 | * @license MIT 18 | * @version 1.0.0 19 | * @since 1.0.0 20 | * @package AcornDB 21 | * @subpackage Console\Commands 22 | **/ 23 | class MigrateCommand extends BaseCommand 24 | { 25 | use ConfirmableTrait; 26 | 27 | /** 28 | * The name and signature of the console command. 29 | * 30 | * @var string 31 | **/ 32 | protected $signature = 'migrate {--database= : The database connection to use} 33 | {--force : Force the operation to run when in production} 34 | {--path=* : The path(s) to the migrations files to be executed} 35 | {--realpath : Indicate any provided migration file paths are pre-resolved absolute paths} 36 | {--pretend : Dump the SQL queries that would be run} 37 | {--seed : Indicates if the seed task should be re-run} 38 | {--step : Force the migrations to be run so they can be rolled back individually}'; 39 | 40 | /** 41 | * The console command description. 42 | * 43 | * @var string 44 | **/ 45 | protected $description = 'Run the database migrations'; 46 | 47 | /** 48 | * The migrator instance. 49 | * 50 | * @var \Illuminate\Database\Migrations\Migrator 51 | **/ 52 | protected $migrator; 53 | 54 | /** 55 | * The IOC 56 | * 57 | * @var Roots\Acorn\Application 58 | */ 59 | protected $app; 60 | 61 | /** 62 | * Create a new migration command instance. 63 | * 64 | * @param \Illuminate\Database\Migrations\Migrator $migrator 65 | * @return void 66 | **/ 67 | public function __construct() 68 | { 69 | parent::__construct(); 70 | $this->app = app(); 71 | $this->migrator = $this->app->get('migrator'); 72 | } 73 | 74 | /** 75 | * Execute the console command. 76 | * 77 | * @return void 78 | **/ 79 | public function handle() 80 | { 81 | if (! $this->confirmToProceed()) { 82 | return; 83 | } 84 | 85 | $this->prepareDatabase(); 86 | // Next, we will check to see if a path option has been defined. If it has 87 | // we will use the path relative to the root of this installation folder 88 | // so that migrations may be run for any path within the applications. 89 | $this->migrator->setOutput($this->output) 90 | ->run($this->getMigrationPaths(), [ 91 | 'pretend' => $this->option('pretend'), 92 | 'step' => $this->option('step'), 93 | ]); 94 | 95 | // Finally, if the "seed" option has been given, we will re-run the database 96 | // seed task to re-populate the database, which is convenient when adding 97 | // a migration and a seed at the same time, as it is only this command. 98 | if ($this->option('seed') && ! $this->option('pretend')) { 99 | $this->call('db:seed', ['--force' => true]); 100 | } 101 | } 102 | 103 | protected function getMigrationsPaths() 104 | { 105 | return $this->app['config']->get('database.migrations_path'); 106 | } 107 | 108 | /** 109 | * Prepare the migration database for running. 110 | * 111 | * @return void 112 | **/ 113 | protected function prepareDatabase() 114 | { 115 | $this->migrator->setConnection($this->option('database')); 116 | if (! $this->migrator->repositoryExists()) { 117 | $this->call('migrate:install', array_filter([ 118 | '--database' => $this->option('database'), 119 | ])); 120 | } 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/RefreshCommand.php: -------------------------------------------------------------------------------- 1 | confirmToProceed()) { 35 | return; 36 | } 37 | // Next we'll gather some of the options so that we can have the right options 38 | // to pass to the commands. This includes options such as which database to 39 | // use and the path to use for the migration. Then we'll run the command. 40 | $database = $this->input->getOption('database'); 41 | $path = $this->input->getOption('path'); 42 | 43 | // If the "step" option is specified it means we only want to rollback a small 44 | // number of migrations before migrating again. For example, the user might 45 | // only rollback and remigrate the latest four migrations instead of all. 46 | $step = $this->input->getOption('step') ?: 0; 47 | if ($step > 0) { 48 | $this->runRollback($database, $path, $step); 49 | } else { 50 | $this->runReset($database, $path); 51 | } 52 | 53 | // The refresh command is essentially just a brief aggregate of a few other of 54 | // the migration commands and just provides a convenient wrapper to execute 55 | // them in succession. We'll also see if we need to re-seed the database. 56 | $this->call('migrate', array_filter([ 57 | '--database' => $database, 58 | '--path' => $path, 59 | '--realpath' => $this->input->getOption('realpath'), 60 | '--force' => true, 61 | ])); 62 | 63 | if ($this->needsSeeding()) { 64 | $this->runSeeder($database); 65 | } 66 | } 67 | 68 | /** 69 | * Run the rollback command. 70 | * 71 | * @param string $database 72 | * @param string $path 73 | * @param int $step 74 | * @return void 75 | **/ 76 | protected function runRollback($database, $path, $step) 77 | { 78 | $this->call('migrate:rollback', array_filter([ 79 | '--database' => $database, 80 | '--path' => $path, 81 | '--realpath' => $this->input->getOption('realpath'), 82 | '--step' => $step, 83 | '--force' => true, 84 | ])); 85 | } 86 | 87 | /** 88 | * Run the reset command. 89 | * 90 | * @param string $database 91 | * @param string $path 92 | * @return void 93 | **/ 94 | protected function runReset($database, $path) 95 | { 96 | $this->call('migrate:reset', array_filter([ 97 | '--database' => $database, 98 | '--path' => $path, 99 | '--realpath' => $this->input->getOption('realpath'), 100 | '--force' => true, 101 | ])); 102 | } 103 | 104 | /** 105 | * Determine if the developer has requested database seeding. 106 | * 107 | * @return bool 108 | **/ 109 | protected function needsSeeding() 110 | { 111 | return $this->option('seed') || $this->option('seeder'); 112 | } 113 | 114 | /** 115 | * Run the database seeder command. 116 | * 117 | * @param string $database 118 | * @return void 119 | **/ 120 | protected function runSeeder($database) 121 | { 122 | $this->call('db:seed', array_filter([ 123 | '--database' => $database, 124 | '--class' => $this->option('seeder') ?: 'DatabaseSeeder', 125 | '--force' => true, 126 | ])); 127 | } 128 | 129 | /** 130 | * Get the console command options. 131 | * 132 | * @return array 133 | **/ 134 | protected function getOptions() 135 | { 136 | // phpcs:disable 137 | return [ 138 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 139 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'], 140 | ['path', null, InputOption::VALUE_OPTIONAL, 'The path to the migrations files to be executed'], 141 | ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'], 142 | ['seed', null, InputOption::VALUE_NONE, 'Indicates if the seed task should be re-run'], 143 | ['seeder', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder'], 144 | ['step', null, InputOption::VALUE_OPTIONAL, 'The number of migrations to be reverted & re-run'], 145 | ]; 146 | // phpcs:enable 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/ResetCommand.php: -------------------------------------------------------------------------------- 1 | app = $app; 47 | $this->migrator = $this->app['migrator']; 48 | } 49 | 50 | /** 51 | * Execute the console command. 52 | * 53 | * @return void 54 | **/ 55 | public function handle() 56 | { 57 | if (! $this->confirmToProceed()) { 58 | return; 59 | } 60 | $this->migrator->setConnection($this->option('database')); 61 | // First, we'll make sure that the migration table actually exists before we 62 | // start trying to rollback and re-run all of the migrations. If it's not 63 | // present we'll just bail out with an info message for the developers. 64 | if (! $this->migrator->repositoryExists()) { 65 | return $this->comment('Migration table not found.'); 66 | } 67 | $this->migrator->setOutput($this->output)->reset( 68 | $this->getMigrationPaths(), 69 | $this->option('pretend') 70 | ); 71 | } 72 | 73 | /** 74 | * Get the console command options. 75 | * 76 | * @return array 77 | **/ 78 | protected function getOptions() 79 | { 80 | // phpcs:disable 81 | return [ 82 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 83 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'], 84 | ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'], 85 | ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'], 86 | ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run'], 87 | ]; 88 | // phpcs:enable 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/RollbackCommand.php: -------------------------------------------------------------------------------- 1 | app = $app; 45 | $this->migrator = $this->app['migrator']; 46 | } 47 | 48 | /** 49 | * Execute the console command. 50 | * 51 | * @return void 52 | **/ 53 | public function handle() 54 | { 55 | if (! $this->confirmToProceed()) { 56 | return; 57 | } 58 | $this->migrator->setConnection($this->option('database')); 59 | $this->migrator->setOutput($this->output)->rollback( 60 | $this->getMigrationPaths(), 61 | [ 62 | 'pretend' => $this->option('pretend'), 63 | 'step' => (int) $this->option('step'), 64 | ] 65 | ); 66 | } 67 | 68 | /** 69 | * Get the console command options. 70 | * 71 | * @return array 72 | **/ 73 | protected function getOptions() 74 | { 75 | // phpcs:disable 76 | return [ 77 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 78 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'], 79 | ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to be executed'], 80 | ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'], 81 | ['pretend', null, InputOption::VALUE_NONE, 'Dump the SQL queries that would be run'], 82 | ['step', null, InputOption::VALUE_OPTIONAL, 'The number of migrations to be reverted'], 83 | ]; 84 | // phpcs:enable 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/StatusCommand.php: -------------------------------------------------------------------------------- 1 | app = $app; 43 | $this->migrator = $this->app['migrator']; 44 | } 45 | 46 | /** 47 | * Execute the console command. 48 | * 49 | * @return void 50 | **/ 51 | public function handle() 52 | { 53 | $this->migrator->setConnection($this->option('database')); 54 | 55 | if (! $this->migrator->repositoryExists()) { 56 | return $this->error('Migration table not found.'); 57 | } 58 | 59 | $ran = $this->migrator->getRepository()->getRan(); 60 | 61 | $batches = $this->migrator->getRepository()->getMigrationBatches(); 62 | 63 | if (count($migrations = $this->getStatusFor($ran, $batches)) > 0) { 64 | $this->table(['Ran?', 'Migration', 'Batch'], $migrations); 65 | } else { 66 | $this->error('No migrations found'); 67 | } 68 | } 69 | 70 | /** 71 | * Get the status for the given ran migrations. 72 | * 73 | * @param array $ran 74 | * @param array $batches 75 | * @return \Illuminate\Support\Collection 76 | **/ 77 | protected function getStatusFor(array $ran, array $batches) 78 | { 79 | return Collection::make($this->getAllMigrationFiles()) 80 | ->map(function ($migration) use ($ran, $batches) { 81 | $migrationName = $this->migrator->getMigrationName($migration); 82 | return in_array($migrationName, $ran) 83 | ? ['Yes', $migrationName, $batches[$migrationName]] 84 | : ['No', $migrationName]; 85 | }); 86 | } 87 | 88 | /** 89 | * Get an array of all of the migration files. 90 | * 91 | * @return array 92 | **/ 93 | protected function getAllMigrationFiles() 94 | { 95 | return $this->migrator->getMigrationFiles($this->getMigrationPaths()); 96 | } 97 | 98 | /** 99 | * Get the console command options. 100 | * 101 | * @return array 102 | **/ 103 | protected function getOptions() 104 | { 105 | // phpcs:disable 106 | return [ 107 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'], 108 | ['path', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'The path(s) to the migrations files to use'], 109 | ['realpath', null, InputOption::VALUE_NONE, 'Indicate any provided migration file paths are pre-resolved absolute paths'], 110 | ]; 111 | // phpcs:enable 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /src/Console/Commands/Migrate/stubs/blank.stub: -------------------------------------------------------------------------------- 1 | 17 | **/ 18 | class SeedCommand extends Command 19 | { 20 | use ConfirmableTrait; 21 | 22 | /** 23 | * The console command name. 24 | * 25 | * @var string 26 | */ 27 | protected $name = 'db:seed'; 28 | 29 | /** 30 | * The console command description. 31 | * 32 | * @var string 33 | */ 34 | protected $description = 'Seed the database with records'; 35 | 36 | /** 37 | * The console command signature. 38 | * 39 | * @var string 40 | **/ 41 | protected $signature = 'db:seed {class : The class name of the root seeder} 42 | {--database : The database connection to seed.} 43 | {--force : Force the operation to run when in production}'; 44 | 45 | /** 46 | * The connection resolver instance. 47 | * 48 | * @var \Illuminate\Database\ConnectionResolverInterface 49 | */ 50 | protected $resolver; 51 | 52 | /** 53 | * Create a new database seed command instance. 54 | * 55 | * @param \Illuminate\Database\ConnectionResolverInterface $resolver 56 | * @return void 57 | */ 58 | public function __construct(Resolver $resolver) 59 | { 60 | parent::__construct(); 61 | 62 | $this->resolver = $resolver; 63 | } 64 | 65 | /** 66 | * Execute the console command. 67 | * 68 | * @return void 69 | */ 70 | public function handle() 71 | { 72 | if (! $this->confirmToProceed()) { 73 | return; 74 | } 75 | 76 | $this->resolver->setDefaultConnection($this->getDatabase()); 77 | 78 | Model::unguarded(function () { 79 | $this->getSeeder()->__invoke(); 80 | }); 81 | 82 | $this->info('Database seeding completed successfully.'); 83 | } 84 | 85 | /** 86 | * Get a seeder instance from the container. 87 | * 88 | * @return \Illuminate\Database\Seeder 89 | */ 90 | protected function getSeeder() 91 | { 92 | $class = $this->laravel->make($this->input->getArgument('class')); 93 | 94 | return $class->setContainer($this->laravel)->setCommand($this); 95 | } 96 | 97 | /** 98 | * Get the name of the database connection to use. 99 | * 100 | * @return string 101 | */ 102 | protected function getDatabase() 103 | { 104 | $database = $this->input->getOption('database'); 105 | 106 | return $database ?: $this->laravel['config']['database.default']; 107 | } 108 | 109 | /** 110 | * Get the console command options. 111 | * 112 | * @return array 113 | */ 114 | protected function getOptions() 115 | { 116 | return [ 117 | ['class', null, InputOption::VALUE_OPTIONAL, 'The class name of the root seeder', 'DatabaseSeeder'], 118 | ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to seed'], 119 | ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production'], 120 | ]; 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /src/Console/Commands/Seeds/SeederMakeCommand.php: -------------------------------------------------------------------------------- 1 | 17 | * @license MIT 18 | * @version 1.0.0 19 | * @since 1.0.0 20 | * @package AcornDB 21 | * @subpackage Console\Commands 22 | **/ 23 | class SeederMakeCommand extends GeneratorCommand 24 | { 25 | /** 26 | * The console command name. 27 | * 28 | * @var string 29 | **/ 30 | protected $name = 'make:seeder'; 31 | 32 | /** 33 | * The console command description. 34 | * 35 | * @var string 36 | **/ 37 | protected $description = 'Create a new seeder class'; 38 | 39 | /** 40 | * The type of class being generated. 41 | * 42 | * @var string 43 | **/ 44 | protected $type = 'Seeder'; 45 | 46 | /** 47 | * The Composer instance. 48 | * 49 | * @var \Illuminate\Support\Composer 50 | **/ 51 | protected $composer; 52 | 53 | /** 54 | * Create a new command instance. 55 | * 56 | * @param \Illuminate\Filesystem\Filesystem $files 57 | * @param \Illuminate\Support\Composer $composer 58 | * @return void 59 | **/ 60 | public function __construct(Filesystem $files, Composer $composer) 61 | { 62 | parent::__construct($files); 63 | 64 | $this->composer = $composer; 65 | } 66 | 67 | /** 68 | * Execute the console command. 69 | * 70 | * @return void 71 | **/ 72 | public function handle() 73 | { 74 | parent::handle(); 75 | $this->composer->dumpAutoloads(); 76 | } 77 | 78 | /** 79 | * Get the stub file for the generator. 80 | * 81 | * @return string 82 | **/ 83 | protected function getStub() 84 | { 85 | return __DIR__ . '/stubs/seeder.stub'; 86 | } 87 | 88 | /** 89 | * Get the destination class path. 90 | * 91 | * @param string $name 92 | * @return string 93 | **/ 94 | protected function getPath($name) 95 | { 96 | return base_path('/database/seeds/' . $this->input->getArgument('name') . '.php'); 97 | } 98 | 99 | /** 100 | * Parse the class name and format according to the root namespace. 101 | * 102 | * @param string $name 103 | * @return string 104 | **/ 105 | protected function qualifyClass($name) 106 | { 107 | return $this->input->getArgument('name'); 108 | } 109 | 110 | /** 111 | * Get the desired class name from the input. 112 | * 113 | * @return string 114 | **/ 115 | protected function getNameInput() 116 | { 117 | return $this->input->getArgument('name'); 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /src/Console/Commands/Seeds/stubs/seeder.stub: -------------------------------------------------------------------------------- 1 | 20 | * @license MIT 21 | **/ 22 | class DatabaseServiceProvider extends ServiceProvider 23 | { 24 | /** 25 | * Register primary Eloquent service and associated features 26 | * 27 | * @return void 28 | **/ 29 | public function register() : void 30 | { 31 | Model::clearBootedModels(); 32 | 33 | $this->app->bindIf(MigrationRepositoryInterface::class); 34 | 35 | $this->registerConnectionServices(); 36 | 37 | $this->registerEloquentFactory(); 38 | 39 | $this->registerQueueableEntityResolver(); 40 | } 41 | 42 | /** 43 | * Register the primary database bindings. 44 | * 45 | * @return void 46 | */ 47 | protected function registerConnectionServices() 48 | { 49 | $this->app->bindIf(ConnectionResolverInterface::class, 'db'); 50 | 51 | // The connection factory is used to create the actual connection instances on 52 | // the database. We will inject the factory into the manager so that it may 53 | // make the connections while they are actually needed and not of before. 54 | $this->app->singleton('db.factory', function ($app) { 55 | return new ConnectionFactory($app); 56 | }); 57 | 58 | // The database manager is used to resolve various connections, since multiple 59 | // connections might be managed. It also implements the connection resolver 60 | // interface which may be used by other components requiring connections. 61 | $this->app->singleton('db', function ($app) { 62 | return new DatabaseManager($app, $app['db.factory']); 63 | }); 64 | 65 | $this->app->bind('db.connection', function ($app) { 66 | return $app['db']->connection(); 67 | }); 68 | } 69 | 70 | /** 71 | * Register the Eloquent factory instance in the container. 72 | * 73 | * @return void 74 | */ 75 | protected function registerEloquentFactory() 76 | { 77 | $this->app->singleton(FakerGenerator::class, function ($app) { 78 | return FakerFactory::create($app['config']->get('app.faker_locale', 'en_US')); 79 | }); 80 | 81 | $this->app->singleton('db.eloquentFactory', function ($app) { 82 | return EloquentFactory::construct( 83 | $app->make(FakerGenerator::class), 84 | $this->app->databasePath('factories'), 85 | ); 86 | }); 87 | } 88 | 89 | /** 90 | * Register the queueable entity resolver implementation. 91 | * 92 | * @return void 93 | */ 94 | protected function registerQueueableEntityResolver() 95 | { 96 | $this->app->singleton(EntityResolver::class, function () { 97 | return new QueueEntityResolver(); 98 | }); 99 | } 100 | 101 | /** 102 | * Bootstrap any application services. 103 | * 104 | * @return void 105 | **/ 106 | public function boot() : void 107 | { 108 | Model::setConnectionResolver($this->app['db']); 109 | Model::setEventDispatcher($this->app['events']); 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /src/Providers/MigrationServiceProvider.php: -------------------------------------------------------------------------------- 1 | 23 | * @license MIT 24 | */ 25 | class MigrationServiceProvider extends ServiceProvider implements DeferrableProvider 26 | { 27 | /** 28 | * Register the service provider. 29 | * 30 | * @return void 31 | */ 32 | public function register(): void 33 | { 34 | $this->app->when(MigrationCreator::class) 35 | ->needs('$customStubPath') 36 | ->give(function ($app) { 37 | return $app->basePath('stubs'); 38 | }); 39 | 40 | $this->registerRepository(); 41 | 42 | $this->registerMigrator(); 43 | 44 | $this->registerCreator(); 45 | 46 | $this->commands([ 47 | MigrateCommand::class, 48 | MakeCommand::class, 49 | InstallCommand::class, 50 | FreshCommand::class, 51 | RefreshCommand::class, 52 | ResetCommand::class, 53 | RollbackCommand::class, 54 | StatusCommand::class, 55 | ]); 56 | } 57 | 58 | /** 59 | * Register the migration repository service. 60 | * 61 | * @return void 62 | */ 63 | protected function registerRepository(): void 64 | { 65 | $this->app->singleton('migration.repository', function ($app) { 66 | $table = $app['config']['database.migrations_table']; 67 | 68 | return new DatabaseMigrationRepository($app['db'], $table); 69 | }); 70 | } 71 | 72 | /** 73 | * Register the migrator service. 74 | * 75 | * @return void 76 | */ 77 | protected function registerMigrator(): void 78 | { 79 | // The migrator is responsible for actually running and rollback the migration 80 | // files in the application. We'll pass in our database connection resolver 81 | // so the migrator can resolve any of these connections when it needs to. 82 | $this->app->singleton('migrator', function ($app) { 83 | $repository = $app['migration.repository']; 84 | 85 | return new Migrator($repository, $app['db'], $app['files'], $app['events']); 86 | }); 87 | } 88 | 89 | /** 90 | * Register the migration creator. 91 | * 92 | * @return void 93 | */ 94 | protected function registerCreator(): void 95 | { 96 | $this->app->singleton('migration.creator', function ($app) { 97 | $path = $app['config']['database.migrations_path']; 98 | 99 | return new MigrationCreator($app['files'], $path); 100 | }); 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/Providers/PackageServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->bind(ShortcodeFacade::class, function () { 27 | return tap(new ShortcodeFacade(), function (ShortcodeFacade $facade) { 28 | $parser_class = $this->app['config']->get('database.shortcode_parser', RegularParser::class); 29 | $facade->setParser(new $parser_class); 30 | }); 31 | }); 32 | 33 | $this->commands([ 34 | SeedCommand::class, 35 | SeederMakeCommand::class, 36 | FactoryMakeCommand::class, 37 | ]); 38 | } 39 | 40 | public function boot() 41 | { 42 | $this->publishes([ 43 | __DIR__ . '/../../publishes/config/database.php' => $this->app->configPath('database.php'), 44 | ], 'Acorn Database'); 45 | 46 | $this->registerFrom($this->app->basePath('database/seeds')); 47 | } 48 | 49 | /** 50 | * Return the App directory. 51 | */ 52 | protected function appDirectory() 53 | { 54 | return $this->app->basePath(); 55 | } 56 | 57 | /** 58 | * Register database seeders 59 | * 60 | * @param string $path 61 | * @return void 62 | **/ 63 | protected function registerFrom(string $path) : void 64 | { 65 | foreach (glob("$path/*.php") as $filename) { 66 | require $filename; 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/Providers/PaginationServiceProvider.php: -------------------------------------------------------------------------------- 1 | app['view']; 23 | }); 24 | 25 | Paginator::currentPathResolver(function () { 26 | return $this->app['request']->url(); 27 | }); 28 | 29 | Paginator::currentPageResolver(function ($pageName = 'page') { 30 | $page = $this->app['request']->input($pageName); 31 | 32 | if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) { 33 | return (int) $page; 34 | } 35 | 36 | return 1; 37 | }); 38 | } 39 | 40 | /** 41 | * Bootstrap any application services. 42 | * 43 | * @return void 44 | */ 45 | public function boot() 46 | { 47 | $this->loadViewsFrom(__DIR__ . '/resources/views', 'pagination'); 48 | 49 | if ($this->app->runningInConsole()) { 50 | $this->publishes([ 51 | __DIR__.'/resources/views' => $this->app->resourcePath('views/vendor/pagination'), 52 | ], 'laravel-pagination'); 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/Seeder.php: -------------------------------------------------------------------------------- 1 | 14 | * @license MIT 15 | */ 16 | abstract class Seeder 17 | { 18 | /** @var Container */ 19 | protected $container; 20 | 21 | /** @var Command */ 22 | protected $command; 23 | 24 | /** 25 | * Required method for implementations. 26 | */ 27 | abstract function run(); 28 | 29 | /** 30 | * Seed the given connection from the given path. 31 | * 32 | * @param array|string $class 33 | * @param bool $silent 34 | * @return $this 35 | */ 36 | public function call($class, $silent = false) 37 | { 38 | $classes = Arr::wrap($class); 39 | 40 | foreach ($classes as $class) { 41 | if ($silent === false && isset($this->command)) { 42 | $this->command->getOutput()->writeln("Seeding: $class"); 43 | } 44 | 45 | $this->resolve($class)->__invoke(); 46 | } 47 | 48 | return $this; 49 | } 50 | 51 | /** 52 | * Silently seed the given connection from the given path. 53 | * 54 | * @param array|string $class 55 | * @return void 56 | */ 57 | public function callSilent($class) 58 | { 59 | $this->call($class, true); 60 | } 61 | 62 | /** 63 | * Resolve an instance of the given seeder class. 64 | * 65 | * @param string $class 66 | * @return \Illuminate\Database\Seeder 67 | */ 68 | protected function resolve($class) 69 | { 70 | if (isset($this->container)) { 71 | $instance = $this->container->make($class); 72 | 73 | $instance->setContainer($this->container); 74 | } else { 75 | $instance = new $class(); 76 | } 77 | 78 | if (isset($this->command)) { 79 | $instance->setCommand($this->command); 80 | } 81 | 82 | return $instance; 83 | } 84 | 85 | /** 86 | * Set the IoC container instance. 87 | * 88 | * @param Container $container 89 | * @return $this 90 | */ 91 | public function setContainer(Container $container) 92 | { 93 | $this->container = $container; 94 | 95 | return $this; 96 | } 97 | 98 | /** 99 | * Set the console command instance. 100 | * 101 | * @param Command $command 102 | * @return Seeder 103 | */ 104 | public function setCommand(Command $command) 105 | { 106 | $this->command = $command; 107 | 108 | return $this; 109 | } 110 | 111 | public function factory() 112 | { 113 | $factory = $this->container->make(EloquentFactory::class); 114 | 115 | $arguments = func_get_args(); 116 | 117 | if (isset($arguments[1]) && is_string($arguments[1])) { 118 | return $factory->of($arguments[0], $arguments[1])->times($arguments[2] ?? null); 119 | } elseif (isset($arguments[1])) { 120 | return $factory->of($arguments[0])->times($arguments[1]); 121 | } else { 122 | return $factory->of($arguments[0]); 123 | } 124 | } 125 | 126 | /** 127 | * Run the database seeds. 128 | * 129 | * @return mixed 130 | * @throws \InvalidArgumentException 131 | */ 132 | public function __invoke() 133 | { 134 | if (! method_exists($this, 'run')) { 135 | throw new InvalidArgumentException('Method [run] missing from :' . get_class($this)); 136 | } 137 | 138 | return isset($this->container) 139 | ? $this->container->call([$this, 'run']) 140 | : $this->run(); 141 | } 142 | } 143 | --------------------------------------------------------------------------------