diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..d356cbd --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +Dockerfile +node_modules/ +.git +.gitignore +.DS_Store +.env +storage/logs/laravel.log diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c3ed2a9 --- /dev/null +++ b/.env.example @@ -0,0 +1,49 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailhog +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..95883de --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto +*.css linguist-vendored +*.less linguist-vendored diff --git a/.gitignore b/.gitignore index b24d71e..c93ae0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,50 +1,16 @@ -# These are some examples of commonly ignored file patterns. -# You should customize this list as applicable to your project. -# Learn more about .gitignore: -# https://www.atlassian.com/git/tutorials/saving-changes/gitignore - -# Node artifact files -node_modules/ -dist/ - -# Compiled Java class files -*.class - -# Compiled Python bytecode -*.py[cod] - -# Log files -*.log - -# Package files -*.jar - -# Maven -target/ -dist/ - -# JetBrains IDE +.vagrant/ +/vendor +/node_modules +Homestead.yaml +Homestead.json +.env +#/public/css/ +/public/js/ +/public/fonts/ +/packages +/storage/oauth-private.key +/storage/oauth-public.key .idea/ - -# Unit test reports -TEST*.xml - -# Generated by MacOS .DS_Store - -# Generated by Windows -Thumbs.db - -# Applications -*.app -*.exe -*.war - -# Large media files -*.mp4 -*.tiff -*.avi -*.flv -*.mov -*.wmv - +.phpunit.result.cache +docker/mysql/ diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 0000000..3ef7f7a --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,20 @@ +in([ + $project_path . '/app', + $project_path . '/config', + $project_path . '/database', + $project_path . '/resources', + $project_path . '/routes', + $project_path . '/tests', + ]) + ->name('*.php') + ->notName('*.blade.php') + ->ignoreDotFiles(true) + ->ignoreVCS(true); + +return \ShiftCS\styles($finder); diff --git a/.rnd b/.rnd new file mode 100644 index 0000000..34e5620 Binary files /dev/null and b/.rnd differ diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..fd26b55 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +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, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +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. + +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. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. 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. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at jose@ditecnologia.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +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. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..672d077 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +# Contributing + +Contributions are **welcome** and will be fully **credited**. + +We accept contributions via Pull Requests on [Github](https://github.com/joselfonseca/laravel-api). + + +## Pull Requests + +- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - Check and fix the code standard with ``$ composer cs``. + +- **Add tests!** - Your patch won't be accepted if it doesn't have tests. + +- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date. + +- **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option. + +- **Create feature branches** - Don't ask us to pull from your master branch. + +- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests. + +- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting. + + +## Running Tests + +``` bash +$ composer test +``` + + +**Happy coding**! diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..01e28e5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM joselfonsecadt/nginx-php7.4:latest + +WORKDIR /var/www/html/ + +COPY . /var/www/html/ + +EXPOSE 80 + +CMD ["/usr/bin/supervisord"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d53b6a8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Jose Luis Fonseca + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..f4bf982 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,39 @@ +asset = $asset; + } +} diff --git a/app/Events/ForgotPasswordRequested.php b/app/Events/ForgotPasswordRequested.php new file mode 100644 index 0000000..9cf29d4 --- /dev/null +++ b/app/Events/ForgotPasswordRequested.php @@ -0,0 +1,17 @@ +email = $email; + } +} diff --git a/app/Events/PasswordRecovered.php b/app/Events/PasswordRecovered.php new file mode 100644 index 0000000..4d566bc --- /dev/null +++ b/app/Events/PasswordRecovered.php @@ -0,0 +1,20 @@ +user = $user; + $this->password = $password; + } +} diff --git a/app/Events/UserRegistered.php b/app/Events/UserRegistered.php new file mode 100644 index 0000000..7a9cfec --- /dev/null +++ b/app/Events/UserRegistered.php @@ -0,0 +1,25 @@ +user = $user; + $this->password = $password; + } + + public function broadcastOn(): PrivateChannel { + return new PrivateChannel('channel-name'); + } +} diff --git a/app/Exceptions/BodyTooLargeException.php b/app/Exceptions/BodyTooLargeException.php new file mode 100644 index 0000000..b3bfc1b --- /dev/null +++ b/app/Exceptions/BodyTooLargeException.php @@ -0,0 +1,12 @@ +json([ + 'message' => 'Unauthenticated.', + 'status_code' => 401, + ], 401); + } + if ($exception instanceof BodyTooLargeException) { + return response()->json([ + 'message' => 'The body is too large', + 'status_code' => 413, + ], 413); + } + if ($exception instanceof ValidationException) { + return response()->json([ + 'message' => $exception->getMessage(), + 'status_code' => 422, + 'errors' => $exception->errors(), + ], 422); + } + if ($exception instanceof StoreResourceFailedException) { + return response()->json([ + 'message' => $exception->getMessage(), + 'status_code' => 422, + 'errors' => $exception->errors, + ], 422); + } + if ($exception instanceof NotFoundHttpException) { + return response()->json([ + 'message' => '404 Not Found', + 'status_code' => 404, + ], 404); + } + + return parent::render($request, $exception); + } +} diff --git a/app/Exceptions/PasswordNotUpdated.php b/app/Exceptions/PasswordNotUpdated.php new file mode 100644 index 0000000..7a15249 --- /dev/null +++ b/app/Exceptions/PasswordNotUpdated.php @@ -0,0 +1,9 @@ +errors = $errors; + } +} diff --git a/app/Http/Controllers/Api/Assets/RenderFileController.php b/app/Http/Controllers/Api/Assets/RenderFileController.php new file mode 100644 index 0000000..2aaaede --- /dev/null +++ b/app/Http/Controllers/Api/Assets/RenderFileController.php @@ -0,0 +1,86 @@ +model = $model; + } + + public function show($uuid, Request $request) + { + try { + $model = $this->model->byUuid($uuid)->firstOrFail(); + + return $this->renderFile($model, $request->get('width', null), $request->get('height', null)); + } catch (ModelNotFoundException $e) { + return $this->renderPlaceholder($request->get('width', null), $request->get('height', null)); + } + } + + public function download($uuid) { + $model = $this->model->byUuid($uuid)->firstOrFail(); + return response()->download(Storage::path($model->path), "{$model->name}.{$model->extension}", ["Content-Type: {$model->mime}"]); + } + + public function open($uuid) { + $model = $this->model->byUuid($uuid)->firstOrFail(); + return response()->file(Storage::path($model->path), ["Content-Type: {$model->mime}"]); + } + + public function renderFile($model, $width, $height) + { + $image = $this->makeFromPath($width, $height, $model->path); + return $image->response(); + } + + public function renderPlaceholder($width, $height) + { + $image = Image::cache(function ($image) use ($width, $height) { + $img = $image->canvas(800, 800, '#FFFFFF'); + $this->resize($img, $width, $height); + + return $img; + }, 10, true); + + return $image->response(); + } + + protected function resize($img, $width, $height) + { + if (! empty($width) && ! empty($height)) { + $img->resize($width, $height); + } elseif (! empty($width)) { + $img->resize($width, null, function ($constraint) { + $constraint->aspectRatio(); + }); + } elseif (! empty($height)) { + $img->resize(null, $height, function ($constraint) { + $constraint->aspectRatio(); + }); + } + + return $img; + } + + protected function makeFromPath($width, $height, $path) + { + return Image::cache(function ($image) use ($path, $width, $height) { + $img = $image->make(Storage::get($path)); + $this->resize($img, $width, $height); + + return $img; + }, 10, true); + } +} diff --git a/app/Http/Controllers/Api/Assets/UploadFileController.php b/app/Http/Controllers/Api/Assets/UploadFileController.php new file mode 100644 index 0000000..24844f6 --- /dev/null +++ b/app/Http/Controllers/Api/Assets/UploadFileController.php @@ -0,0 +1,167 @@ + [ + 'type' => 'image', + 'extension' => 'jpeg', + ], + 'image/jpg' => [ + 'type' => 'image', + 'extension' => 'jpg', + ], + 'image/png' => [ + 'type' => 'image', + 'extension' => 'png', + ], + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => [ + 'type' => 'document', + 'extension' => 'xlsx' + ], + 'application/vnd.ms-excel' => [ + 'type' => 'document', + 'extension' => 'xls' + ], + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => [ + 'type' => 'document', + 'extension' => 'docx' + ], + 'application/msword' => [ + 'type' => 'document', + 'extension' => 'doc' + ], + 'application/pdf' => [ + 'type' => 'document', + 'extension' => 'pdf' + ] + ]; + + protected Client $client; + protected Asset $model; + + public function __construct(Client $client, Asset $model) { + $this->client = $client; + $this->model = $model; + } + + public function store(Request $request): JsonResponse { + if ($request->isJson()) { + $asset = $this->uploadFromUrl([ + 'url' => $request->get('url'), + 'user' => $request->user(), + ]); + } elseif ($request->hasFile('file')) { + $file = $request->file('file')->getRealPath(); + $asset = $this->uploadFromDirectFile([ + 'mime' => $request->file('file')->getClientMimeType(), + 'name' => $request->get('name') ?? $request->file('file')->getClientOriginalName(), + 'filename' => $request->file('file')->getClientOriginalName(), + 'extension' => $request->file('file')->getClientOriginalExtension(), + 'content' => file_get_contents($file), + 'Content-Length' => $request->header('Content-Length'), + 'user' => $request->user(), + 'latitude' => $request->get('latitude'), + 'longitude' => $request->get('longitude'), + 'accuracy' => $request->get('accuracy') + ]); + } else { + $body = !(base64_decode($request->getContent())) ? $request->getContent() : base64_decode($request->getContent()); + $asset = $this->uploadFromDirectFile([ + 'mime' => $request->header('Content-Type'), + 'content' => $body, + 'Content-Length' => $request->header('Content-Length'), + 'user' => $request->user(), + 'latitude' => $request->get('latitude'), + 'longitude' => $request->get('longitude') + ]); + } + + event(new AssetWasCreated($asset)); + + return fractal($asset, new AssetTransformer())->respond(201); + } + + protected function uploadFromDirectFile($attributes = []) { + $this->validateMime($attributes['mime']); + $this->validateBodySize($attributes['Content-Length'], $attributes['content']); + $path = $this->storeInFileSystem($attributes); + + return $this->storeInDatabase($attributes, $path); + } + + protected function uploadFromUrl($attributes = []) { + $response = $this->callFileUrl($attributes['url']); + $attributes['mime'] = $response->getHeader('content-type')[0]; + $attributes['filename'] = pathinfo($attributes['url'], PATHINFO_BASENAME); + $attributes['extension'] = pathinfo($attributes['url'], PATHINFO_EXTENSION); + $this->validateMime($attributes['mime']); + $attributes['content'] = $response->getBody(); + $path = $this->storeInFileSystem($attributes); + + return $this->storeInDatabase($attributes, $path); + } + + protected function storeInDatabase(array $attributes, $path) { + $file = $this->model->create([ + 'type' => $this->validMimes[$attributes['mime']]['type'], + 'path' => $path, + 'mime' => $attributes['mime'], + 'name' => $attributes['name'] ?? null, + 'filename' => $attributes['filename'] ?? null, + 'extension' => $attributes['extension'] ?? null, + 'user_id' => ! empty($attributes['user']) ? $attributes['user']->id : null, + 'latitude' => $attributes['latitude'], + 'longitude' => $attributes['longitude'], + 'accuracy' => $attributes['accuracy'] + ]); + + return $file; + } + + protected function storeInFileSystem(array $attributes): string { + $filename = md5(Str::random(16).date('U')); + $path = "upload/{$filename[0]}/$filename.{$this->validMimes[$attributes['mime']]['extension']}"; + Storage::put($path, $attributes['content']); + return $path; + } + + protected function callFileUrl($url): ResponseInterface { + try { + return $this->client->get($url); + } catch (TransferException $e) { + throw new StoreResourceFailedException('Validation Error', [ + 'url' => 'The url seems to be unreachable: '.$e->getCode(), + ]); + } + } + + protected function validateMime($mime) { + if (!array_key_exists($mime, $this->validMimes)) { + throw new StoreResourceFailedException('Validation Error', [ + 'Content-Type' => 'The Content Type sent is not valid', + ]); + } + } + + protected function validateBodySize($contentLength, $content) { + if ($contentLength > config('files.maxsize', 1000000) || mb_strlen($content) > config('files.maxsize', 1000000)) { + throw new BodyTooLargeException(); + } + } +} diff --git a/app/Http/Controllers/Api/Auth/PasswordsController.php b/app/Http/Controllers/Api/Auth/PasswordsController.php new file mode 100644 index 0000000..da1407e --- /dev/null +++ b/app/Http/Controllers/Api/Auth/PasswordsController.php @@ -0,0 +1,52 @@ +validate($request, [ + 'email' => 'required|email|exists:users,email' + ]); + + $response = $this->broker()->sendResetLink(['email' => $request->get('email')]); + if ($response == Password::RESET_LINK_SENT) { + event(new ForgotPasswordRequested($request->get('email'))); + return response()->json(null, 201); + } + throw new EmailNotSentException(__($response)); + } + + public function update(Request $request): JsonResponse { + $this->validate($request, [ + 'email' => 'required|email|exists:users,email', + 'password' => 'required|min:8' + ]); + + $response = $this->broker()->reset($request->except('_token'), function($user, $password) { + $user->password = Hash::make($password); + $user->save(); + }); + + if ($response == Password::PASSWORD_RESET) { + if ($user = User::where('email', $request->get('email'))->first()) event(new PasswordRecovered($user, $request->get('password'))); + return response()->json(['message' => __($response)]); + } + throw new PasswordNotUpdated(__($response)); + } + + public function broker(): PasswordBroker { + return Password::broker(); + } +} diff --git a/app/Http/Controllers/Api/Auth/RegisterController.php b/app/Http/Controllers/Api/Auth/RegisterController.php new file mode 100644 index 0000000..17173fe --- /dev/null +++ b/app/Http/Controllers/Api/Auth/RegisterController.php @@ -0,0 +1,39 @@ +model = $model; + } + + public function checkEmail(Request $request): JsonResponse { + $this->validate($request, [ + 'email' => 'required|email|unique:users,email' + ]); + return response()->json(null, 200); + } + + public function store(Request $request): JsonResponse { + $this->validate($request, [ + 'name' => 'required', + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:8|confirmed', + ]); + $user = $this->model->create($request->all()); + $user->assignRole('User'); + event(new Registered($user)); + + return fractal($user, new UserTransformer())->respond(201); + } + +} diff --git a/app/Http/Controllers/Api/Forms/FormsController.php b/app/Http/Controllers/Api/Forms/FormsController.php new file mode 100644 index 0000000..dfc0898 --- /dev/null +++ b/app/Http/Controllers/Api/Forms/FormsController.php @@ -0,0 +1,44 @@ +form($id, json_decode($request->get('extra_props'), true) ?? []); + } elseif ($object = NirObject::byUuid($id)->first()) { + return fractal($object, new ObjectTransformer())->respond(); + } elseif ($objectType = ObjectType::byUuidOrName($type)->first()) { + return fractal($objectType, new ObjectTypeTransformer())->respond(); + } + } + + public function save(Request $request, $target, $type = null, $id = null) { + if ($target === 'model') { + return FormsService::getService($type)->save($request->all(), $id); + } elseif ($object = NirObject::byUuid($id)->first()) { + $object->setValues($request->all()); + return fractal($object->fresh(), new ObjectTransformer()); + } elseif ($objectType = ObjectType::byUuidOrName($type)->first()) { + $object = $objectType->objects()->create(); + $object->setValues($request->all()); + return fractal($object->fresh(), new ObjectTransformer()); + } + } + + + public function filters(Request $request, $type) { + $filters = collect(json_decode($request->get('filters', []), true)); + return ($service = FiltersService::getService($type)) ? $service->get($filters) : null; + } + +} diff --git a/app/Http/Controllers/Api/NotificationsController.php b/app/Http/Controllers/Api/NotificationsController.php new file mode 100644 index 0000000..7b3031e --- /dev/null +++ b/app/Http/Controllers/Api/NotificationsController.php @@ -0,0 +1,31 @@ +user()->notifications, new NotificationTransformer())->respond(); + $request->user()->notifications()->whereNull('read_at')->update(['read_at' => now()]); + return $result; + } + + public function count(Request $request): JsonResponse { + return response()->json(['count' => $request->user()->unreadNotifications()->count()]); + } + + public function show(Request $request, $uuid): JsonResponse { + $notification = DatabaseNotification::where('id', $uuid)->first(); + $notification->markAsRead(); + return fractal($notification, new NotificationTransformer())->respond(); + } + +} diff --git a/app/Http/Controllers/Api/Objects/ObjectTypesController.php b/app/Http/Controllers/Api/Objects/ObjectTypesController.php new file mode 100644 index 0000000..a909cd0 --- /dev/null +++ b/app/Http/Controllers/Api/Objects/ObjectTypesController.php @@ -0,0 +1,55 @@ +model = $model; + } + + public function index(Request $request): JsonResponse { + $parent = ($val = $request->get('parent')) ? $this->model->byUuidOrName($val)->first() : null; + $query = $parent ? $parent->children() : $this->model->query()->where(['parent_id' => 0]); + $query->orderBy('id'); + $paginator = $query->paginate(config('app.pagination_limit')); + return fractal($paginator, new ObjectTypeTransformer())->respond(); + } + + public function show($id): JsonResponse { + $model = $this->model->byUuidOrName($id)->firstOrFail(); + return fractal($model, new ObjectTypeTransformer())->respond(); + } + + public function store(Request $request): JsonResponse { + $this->validate($request, [ + 'name' => 'required', + 'title' => 'required' + ]); + $model = $this->model->create($request->all()); + return fractal($model, new ObjectTypeTransformer())->respond(201); + } + + public function update(Request $request, $uuid): JsonResponse { + $model = $this->model->byUuidOrName($uuid)->firstOrFail(); + $this->validate($request, [ + 'name' => 'sometimes|required', + 'title' => 'sometimes|required' + ]); + $model->update($request->all()); + return fractal($model->fresh(), new ObjectTypeTransformer())->respond(); + } + + public function destroy(Request $request, $uuid): JsonResponse { + $model = $this->model->byUuidOrName($uuid)->firstOrFail(); + $model->delete(); + return response()->json(null, 204); + } +} diff --git a/app/Http/Controllers/Api/Objects/ObjectsController.php b/app/Http/Controllers/Api/Objects/ObjectsController.php new file mode 100644 index 0000000..4437bdc --- /dev/null +++ b/app/Http/Controllers/Api/Objects/ObjectsController.php @@ -0,0 +1,74 @@ +model = $model; + } + + public function index(Request $request): JsonResponse { + $query = $this->model->query(); + if (($val = $request->get('type')) && ($type = ObjectType::query()->where(['name' => $val])->first())) { + $query->whereHas('type', function ($query) use ($val) { + $query->where('name', $val)->orWhereHas('parent', function ($query) use ($val) { + $query->where('name', $val); + }); + }); + if (in_array('product', [$type->name, $type->parent->name ?? null]) && ($field = Field::byUuidOrName('specification-holder')->first())) { + $field->applyFilter($query, $request->user()->companies->pluck('uuid')->all()); + } + } + $filters = collect($request->has('filters') ? json_decode($request->get('filters'), true) : []); + $filters->each(function($value, $prop) use($query) { + if ($prop === 'search') $this->model->applySearchFilter($query, $value); + elseif ($field = Field::byUuidOrName($prop)->first()) $field->applyFilter($query, $value); + }); + $query->orderBy('created_at', 'desc'); + $paginator = $query->paginate(config('app.pagination_limit')); + return fractal($paginator, new ObjectTransformer())->respond(); + } + + public function show($id): JsonResponse { + $model = $this->model->byUuid($id)->firstOrFail(); + return fractal($model, new ObjectTransformer())->respond(); + } + + public function store(Request $request): JsonResponse { + $this->validate($request, [ + 'type' => 'required', + 'properties' => 'required|array' + ]); + $objectType = ObjectType::byUuidOrName($request->get('type'))->firstOrFail(); + $model = $objectType->objects()->create($request->only('name') + ['owner_id' => $request->user()->id]); + $model->setValues($request->get('properties')); + if ($objectType->name === 'product') $model->setValue('specification-holder', $request->user()->selectedMember->company->uuid ?? null); + return fractal($model, new ObjectTransformer())->respond(201); + } + + public function update(Request $request, $uuid): JsonResponse { + $model = $this->model->byUuid($uuid)->firstOrFail(); + $this->validate($request, [ + 'properties' => 'required|array' + ]); + $model->setValues($request->get('properties')); + $model->update($request->only('name')); + return fractal($model->fresh(), new ObjectTransformer())->respond(); + } + + public function destroy(Request $request, $uuid): JsonResponse { + $model = $this->model->byUuid($uuid)->firstOrFail(); + $model->delete(); + return response()->json(null, 204); + } +} diff --git a/app/Http/Controllers/Api/PingController.php b/app/Http/Controllers/Api/PingController.php new file mode 100644 index 0000000..41f0cf1 --- /dev/null +++ b/app/Http/Controllers/Api/PingController.php @@ -0,0 +1,18 @@ +json([ + 'status' => 'ok', + 'timestamp' => Carbon::now(), + 'host' => request()->ip(), + ]); + } +} diff --git a/app/Http/Controllers/Api/Users/PermissionsController.php b/app/Http/Controllers/Api/Users/PermissionsController.php new file mode 100644 index 0000000..e4412b0 --- /dev/null +++ b/app/Http/Controllers/Api/Users/PermissionsController.php @@ -0,0 +1,29 @@ +model = $model; + $this->middleware('permission:List permissions')->only('index'); + } + + public function index(Request $request) + { + $paginator = $this->model->paginate($request->get('limit', config('app.pagination_limit'))); + if ($request->has('limit')) { + $paginator->appends('limit', $request->get('limit')); + } + + return fractal($paginator, new PermissionTransformer())->respond(); + } +} diff --git a/app/Http/Controllers/Api/Users/ProfileController.php b/app/Http/Controllers/Api/Users/ProfileController.php new file mode 100644 index 0000000..c15cfc4 --- /dev/null +++ b/app/Http/Controllers/Api/Users/ProfileController.php @@ -0,0 +1,77 @@ +user()->membership, new CompanyMemberTransformer())->respond(); + } + + public function currentMember(Request $request) { + return fractal($request->user()->selectedMember, new CompanyMemberTransformer()); + } + + public function selectMember(Request $request) { + $this->validate($request, [ + 'member_id' => 'required|exists:company_members,uuid' + ]); + CompanyMember::byUuid($request->get('member_id'))->firstOrFail()->select(); + return fractal($request->user()->membership, new CompanyMemberTransformer())->respond(); + } + + + + public function index() + { + return fractal(Auth::user(), new UserTransformer())->respond(); + } + + public function update(Request $request) + { + $user = Auth::user(); + $rules = [ + 'name' => 'required', + 'email' => 'required|email|unique:users,email,'.$user->id, + ]; + if ($request->method() == 'PATCH') { + $rules = [ + 'name' => 'sometimes|required', + 'email' => 'sometimes|required|email|unique:users,email,'.$user->id, + ]; + } + $this->validate($request, $rules); + // Except password as we don't want to let the users change a password from this endpoint + $user->update($request->except('_token', 'password')); + + return fractal($user->fresh(), new UserTransformer())->respond(); + } + + public function updatePassword(Request $request) + { + $user = Auth::user(); + $this->validate($request, [ + 'current_password' => 'required', + 'password' => 'required|min:8|confirmed', + ]); + // verify the old password given is valid + if (! app(Hasher::class)->check($request->get('current_password'), $user->password)) { + throw new StoreResourceFailedException('Validation Issue', [ + 'old_password' => 'The current password is incorrect', + ]); + } + $user->password = bcrypt($request->get('password')); + $user->save(); + + return fractal($user->fresh(), new UserTransformer())->respond(); + } +} diff --git a/app/Http/Controllers/Api/Users/RolesController.php b/app/Http/Controllers/Api/Users/RolesController.php new file mode 100644 index 0000000..4fa9991 --- /dev/null +++ b/app/Http/Controllers/Api/Users/RolesController.php @@ -0,0 +1,75 @@ +model = $model; + $this->middleware('permission:List roles')->only('index'); + $this->middleware('permission:List roles')->only('show'); + $this->middleware('permission:Create roles')->only('store'); + $this->middleware('permission:Update roles')->only('update'); + $this->middleware('permission:Delete roles')->only('destroy'); + } + + public function index(Request $request) + { + $paginator = $this->model->with('permissions')->paginate($request->get('limit', config('app.pagination_limit'))); + if ($request->has('limit')) { + $paginator->appends('limit', $request->get('limit')); + } + + return fractal($paginator, new RoleTransformer())->respond(); + } + + public function show($id) + { + $role = $this->model->with('permissions')->byUuid($id)->firstOrFail(); + + return fractal($role, new RoleTransformer())->respond(); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'name' => 'required', + ]); + $role = $this->model->create($request->all()); + if ($request->has('permissions')) { + $role->syncPermissions($request['permissions']); + } + + return fractal($role, new RoleTransformer())->respond(201); + } + + public function update(Request $request, $uuid) + { + $role = $this->model->byUuid($uuid)->firstOrFail(); + $this->validate($request, [ + 'name' => 'required', + ]); + $role->update($request->except('_token')); + if ($request->has('permissions')) { + $role->syncPermissions($request['permissions']); + } + + return fractal($role->fresh(), new RoleTransformer())->respond(); + } + + public function destroy(Request $request, $uuid) + { + $role = $this->model->byUuid($uuid)->firstOrFail(); + $role->delete(); + + return response()->json(null, 204); + } +} diff --git a/app/Http/Controllers/Api/Users/UsersController.php b/app/Http/Controllers/Api/Users/UsersController.php new file mode 100644 index 0000000..e15c821 --- /dev/null +++ b/app/Http/Controllers/Api/Users/UsersController.php @@ -0,0 +1,86 @@ +model = $model; + $this->middleware('permission:List users')->only('index'); + $this->middleware('permission:List users')->only('show'); + $this->middleware('permission:Create users')->only('store'); + $this->middleware('permission:Update users')->only('update'); + $this->middleware('permission:Delete users')->only('destroy'); + } + + public function index(Request $request) + { + $paginator = $this->model->with('roles.permissions')->paginate($request->get('limit', config('app.pagination_limit', 20))); + if ($request->has('limit')) { + $paginator->appends('limit', $request->get('limit')); + } + + return fractal($paginator, new UserTransformer())->respond(); + } + + public function show($id) + { + $user = $this->model->with('roles.permissions')->byUuid($id)->firstOrFail(); + + return fractal($user, new UserTransformer())->respond(); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'name' => 'required', + 'email' => 'required|email|unique:users,email', + 'password' => 'required|min:8|confirmed', + ]); + $user = $this->model->create($request->all()); + if ($request->has('roles')) { + $user->syncRoles($request['roles']); + } + + return fractal($user, new UserTransformer())->respond(201); + } + + public function update(Request $request, $uuid) + { + $user = $this->model->byUuid($uuid)->firstOrFail(); + $rules = [ + 'name' => 'required', + 'email' => 'required|email|unique:users,email,'.$user->id, + ]; + if ($request->method() == 'PATCH') { + $rules = [ + 'name' => 'sometimes|required', + 'email' => 'sometimes|required|email|unique:users,email,'.$user->id, + ]; + } + $this->validate($request, $rules); + // Except password as we don't want to let the users change a password from this endpoint + $user->update($request->except('_token', 'password')); + if ($request->has('roles')) { + $user->syncRoles($request['roles']); + } + + return fractal($user->fresh(), new UserTransformer())->respond(); + } + + public function destroy(Request $request, $uuid) + { + $user = $this->model->byUuid($uuid)->firstOrFail(); + $user->delete(); + + return response()->json(null, 204); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..a0a2a8a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\AdvisorySession\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + \TomLerendu\LaravelConvertCaseMiddleware\ConvertRequestToSnakeCase::class, + \TomLerendu\LaravelConvertCaseMiddleware\ConvertResponseToCamelCase::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class, + 'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..f09d427 --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,9 @@ +headers->set("Access-Control-Allow-Origin", "*"); + $response->headers->set("Access-Control-Allow-Credentials", "true"); + $response->headers->set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, PATCH"); //Make sure you remove those you do not want to support + $response->headers->set("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, X-Requested-With, Application"); + + return $response; + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..033136a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..5a50e7b --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..14befce --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ + ['prop' => 'fio', 'required' => true], + 'email' => ['prop' => 'email', 'required' => true], + 'inn' => ['prop' => 'inn_organizacii', 'required' => true], + 'position' => ['prop' => 'dolznost', 'required' => true], + 'rank' => ['prop' => 'polozenie'] + ]; + + + public function __construct(Advisory $advisory) { + $this->advisory = $advisory; + } + + public function collection(Collection $collection) { + $collection->each(function($row) { + if ($row = $this->mapData($row)) $this->importRow($row); + }); + } + + public function importRow($row) { + $company = Company::getByData(['inn' => $row['inn']]); + $user = User::getByData($row + ['password' => 'Qwerty1!']); + $companyMember = $company->addMember($user, $row['position'] ?? null); + $this->advisory->addMember($companyMember, $this->translateRank($row['rank'] ?? null)); + } + + public function translateRank($rank) { + $aRanks = [ + 'председатель' => AdvisoryMemberRank::CHAIRMAN, + 'заместитель председателя' => AdvisoryMemberRank::VICE_CHAIRMAN, + 'секретарь' => AdvisoryMemberRank::SECRETARY + ]; + return $aRanks[Str::lower(trim($rank))] ?? AdvisoryMemberRank::ORDINARY; + } + +} diff --git a/app/Imports/CategoriesImport.php b/app/Imports/CategoriesImport.php new file mode 100644 index 0000000..47e4dc2 --- /dev/null +++ b/app/Imports/CategoriesImport.php @@ -0,0 +1,38 @@ +each(function($row) { + list($number, $name) = $row; + if (($number = trim($number, ' ')) && ($name = trim($name))) { + $parent = $this->getParent($number); + Category::query()->firstOrCreate(['number' => $number, 'parent_id' => $parent ? $parent->id : 0])->update(['name' => $name]); + } + }); + } + + public function getParent($number) { + $result = false; + $digits = explode('.', $number); + if (count($digits) === 3) { + $digits = array_reverse($digits); + foreach ($digits as $k => $digit) { + if ($digit !== '00') { + $digits[$k] = '00'; + break; + } + } + $parentNumber = implode('.', array_reverse($digits)); + if ($parentNumber !== '00.00.00') { + $result = Category::firstOrCreate(['number' => $parentNumber]); + } + } + return $result; + } +} diff --git a/app/Imports/ClassifierCodesImport.php b/app/Imports/ClassifierCodesImport.php new file mode 100644 index 0000000..734404d --- /dev/null +++ b/app/Imports/ClassifierCodesImport.php @@ -0,0 +1,24 @@ +classifier = $classifier; + } + + public function collection(Collection $collection) { + $collection->each(function($row) { + list($name, $title) = $row; + if (($name = trim($name)) && ($title = trim($title))) { + $this->classifier->codes()->firstOrCreate(['name' => $name])->update(['title' => $title]); + } + }); + } +} diff --git a/app/Imports/CompaniesImport.php b/app/Imports/CompaniesImport.php new file mode 100644 index 0000000..9a9d45e --- /dev/null +++ b/app/Imports/CompaniesImport.php @@ -0,0 +1,43 @@ + ['prop' => 'nazvanie_organizacii', 'required' => true], + 'inn' => ['prop' => 'inn_organizacii'], + 'email' => ['prop' => 'email'], + 'phone' => ['prop' => 'telefon'], + 'types' => ['prop' => 'vid_organizacii'] + ]; + + + public function collection(Collection $collection) { + $collection->each(function($row) { + if ($row = $this->mapData($row)) $this->importRow($row); + }); + } + + public function importRow($row) { + $row['inn'] = $row['inn'] ?? $row['name']; + $row['types'] = $this->translateTypes($row['types'] ?? ''); + Company::getByData($row); + } + + public function translateTypes(string $types): array { + $aTypes = [ + 'изготовитель' => CompanyType::PRODUCER, + 'проектировщик' => CompanyType::DESIGNER + ]; + return collect(explode(';', $types))->map(function($type) use($aTypes) { + return $aTypes[mb_strtolower(trim($type))] ?? null; + })->filter(function($type) {return $type;})->all(); + } + +} diff --git a/app/Imports/Import.php b/app/Imports/Import.php new file mode 100644 index 0000000..cf726e3 --- /dev/null +++ b/app/Imports/Import.php @@ -0,0 +1,20 @@ +mapper as $int => $data) { + //if (!empty($data['prop']) && !empty($row[$data['prop']])) $result[$int] = trim(Str::replace(' ', '', $row[$data['prop']])); + if (!empty($data['prop']) && !empty($row[$data['prop']])) $result[$int] = trim($row[$data['prop']], '  ;,'); + if (!empty($data['date']) && is_numeric($result[$int] ?? null)) $result[$int] = Date::excelToDateTimeObject($result[$int]); + if (!empty($data['required']) && empty($result[$int])) return false; + } + return $result; + } +} diff --git a/app/Listeners/SendPasswordRecoveredNotification.php b/app/Listeners/SendPasswordRecoveredNotification.php new file mode 100644 index 0000000..d31c7de --- /dev/null +++ b/app/Listeners/SendPasswordRecoveredNotification.php @@ -0,0 +1,17 @@ +user->email)->send(new PasswordRecovered($event->user, $event->password)); + } catch (\Exception $exception) {} + } +} diff --git a/app/Listeners/SendRegistrationNotification.php b/app/Listeners/SendRegistrationNotification.php new file mode 100644 index 0000000..394a679 --- /dev/null +++ b/app/Listeners/SendRegistrationNotification.php @@ -0,0 +1,17 @@ +user->email)->send(new UserRegistered($event->user, $event->password)); + } catch (\Exception $exception) {} + } +} diff --git a/app/Mail/PasswordRecovered.php b/app/Mail/PasswordRecovered.php new file mode 100644 index 0000000..ad312c2 --- /dev/null +++ b/app/Mail/PasswordRecovered.php @@ -0,0 +1,25 @@ +recipient = $recipient; + $this->password = $password; + } + + public function build(): PasswordRecovered { + return $this->subject('Пароль сброшен')->view('mail.user.password-recovered'); + } +} diff --git a/app/Mail/PasswordRefreshed.php b/app/Mail/PasswordRefreshed.php new file mode 100644 index 0000000..637a807 --- /dev/null +++ b/app/Mail/PasswordRefreshed.php @@ -0,0 +1,25 @@ +user = $user; + $this->password = $password; + } + + public function build() { + return $this->subject('Пароль обновлен')->view('mail.user.password-refreshed'); + } +} diff --git a/app/Mail/PasswordResetRequested.php b/app/Mail/PasswordResetRequested.php new file mode 100644 index 0000000..fabef28 --- /dev/null +++ b/app/Mail/PasswordResetRequested.php @@ -0,0 +1,25 @@ +recipient = $recipient; + $this->token = $token; + } + + public function build(): PasswordResetRequested { + return $this->subject('Запрос на сброс пароля')->view('mail.user.password-reset-requested'); + } +} diff --git a/app/Mail/UserRegistered.php b/app/Mail/UserRegistered.php new file mode 100644 index 0000000..de420a7 --- /dev/null +++ b/app/Mail/UserRegistered.php @@ -0,0 +1,25 @@ +recipient = $recipient; + $this->password = $password; + } + + public function build(): UserRegistered { + return $this->subject('Данные для входа в систему')->view('mail.user.registered'); + } +} diff --git a/app/Models/Asset.php b/app/Models/Asset.php new file mode 100644 index 0000000..e3f26fd --- /dev/null +++ b/app/Models/Asset.php @@ -0,0 +1,76 @@ +belongsTo(User::class); + } + + public function links() + { + $result = [ + 'open' => url("/api/assets/{$this->uuid}"), + 'download' => url("/api/assets/{$this->uuid}/download") + ]; + if ($this->type == 'image') { + $result['full'] = url("/api/assets/{$this->uuid}/render"); + $result['thumb'] = url("/api/assets/{$this->uuid}/render?width=300"); + } + return $result; + } + + public function coordinates() + { + return [ + 'latitude' => $this->latitude, + 'longitude' => $this->longitude, + 'accuracy' => $this->accuracy + ]; + } + + public function output() + { + return [ + 'id' => $this->uuid, + 'type' => $this->type, + 'mime' => $this->mime, + 'filename' => $this->filename, + 'extension' => $this->extension, + 'links' => $this->links(), + 'user' => $this->user->output(), + 'coordinates' => $this->coordinates(), + 'created_at' => $this->created_at->toIso8601String(), + 'created_by' => $this->user->name, + ]; + } + + public function saveValue($fieldName, $object) + { + $field = Field::byUuidOrName($fieldName)->first(); + $relationValue = RelationValue::create(); + $relationValue->set($this); + $relationValue->update([ + 'field_id' => $field->id, + 'object_id' => $object->id, + ]); + } +} diff --git a/app/Models/Dictionaries/Dictionary.php b/app/Models/Dictionaries/Dictionary.php new file mode 100644 index 0000000..684bb3e --- /dev/null +++ b/app/Models/Dictionaries/Dictionary.php @@ -0,0 +1,35 @@ +hasMany(DictionaryItem::class); + } + + + +} diff --git a/app/Models/Dictionaries/DictionaryItem.php b/app/Models/Dictionaries/DictionaryItem.php new file mode 100644 index 0000000..382b559 --- /dev/null +++ b/app/Models/Dictionaries/DictionaryItem.php @@ -0,0 +1,37 @@ +belongsTo(Dictionary::class); + } + + + + +} diff --git a/app/Models/Objects/Field.php b/app/Models/Objects/Field.php new file mode 100644 index 0000000..dcd9d2a --- /dev/null +++ b/app/Models/Objects/Field.php @@ -0,0 +1,190 @@ + 'array' + ]; + + + public function groups(): BelongsToMany { + return $this->belongsToMany(FieldsGroup::class, 'fields_group_fields', 'field_id', 'group_id'); + } + + public function values(): HasMany { + return $this->hasMany(FieldType::CLASSES[$this->type]); + } + + public function objectValues($objectId): HasMany { + return $this->values()->where(['object_id' => $objectId]); + } + + public function objectsValues(array $ids): HasMany { + return $this->values()->whereIn('object_id', $ids); + } + + public function objectTypeValues($objectTypeId): HasMany { + return $this->values()->whereHas('object', function($query) use($objectTypeId) { + $query->where(['type_id' => $objectTypeId]); + }); + } + + + + public function getOptionsAttribute(): ?Collection { + if (($this->type === FieldType::RELATION) && !empty($this->params['options']['show'])) { + if ($model = $this->params['related'] ?? null) { + $query = $model::query(); + collect($this->params['options']['whereHas'] ?? [])->each(function($val, $prop) use($query) { + $query->whereHas($prop, function($query) use($val) { + foreach ($val as $attr => $v) { + $query->where([$attr => $v]); + } + }); + }); + if ($where = $this->params['options']['where'] ?? null) $query->where($where); + return $query->get(); + } + } + return null; + } + + public function getTransformerAttribute() { + $transformer = $this->params['transformer'] ?? OptionTransformer::class; + return new $transformer; + } + + + + public function getRepresented($filters = [], ?FiltersService $service = null): ?Collection { + if ($model = $this->params['related'] ?? null) { + $query = $model::whereHas('relationValues', function($query) use($filters, $service) { + $query->where(['field_id' => $this->id])->whereHas('object', function($query) use($filters, $service) { + self::applyFilters($query, collect($filters)->except($this->name), $service); + }); + }); + return $query->get(); + } + return null; + } + + public function getRange($filters = [], ?FiltersService $service = null): ?array { + if (in_array($this->type, [FieldType::INTEGER, FieldType::FLOAT, FieldType::DATE, FieldType::DATETIME])) { + $query = $this->values()->whereHas('object', function($query) use($filters, $service) { + self::applyFilters($query, collect($filters)->except($this->name), $service); + }); + return ['min' => $query->min('value') ?? 0, 'max' => $query->max('value') ?? 0]; + } + return null; + } + + public function getValue($objectId) { + return $this->objectValues($objectId)->get()->map(function($value) { + return $value->get(); + }); + } + + public function setValue($objectId, $value) { + if ($this->multiple) $this->objectValues($objectId)->delete(); + if (!($value instanceof Collection)) $value = collect((is_array($value) && !Arr::isAssoc($value)) ? $value : [$value]); + $value->each(function($value) use($objectId) { + if ($this->multiple) $this->values()->create(['object_id' => $objectId])->set($value); + else $this->values()->firstOrCreate(['object_id' => $objectId])->set($value); + }); + return $this->getValue($objectId); + } + + public function addValue($objectId, $value) { + if ($this->multiple) { + if (!($value instanceof Collection)) $value = collect((is_array($value) && !Arr::isAssoc($value)) ? $value : [$value]); + $value->each(function($value) use($objectId) { + $this->values()->create(['object_id' => $objectId])->set($value); + }); + } + return $this->getValue($objectId); + } + + + public static function applyFilters(Builder $query, Collection $filters, ?FiltersService $service = null) { + if ($types = $filters->get('types')) { + $filters->forget('types'); + $query->whereHas('type', function($query) use($types) { + $query->whereIn('uuid', is_array($types) ? $types : [$types]); + }); + $filters->filter(function($value) {return $value;})->each(function($value, $prop) use($query, $types, $service) { + $field = Field::query()->where(['name' => $prop])->whereHas('groups.objectType', function($query) use($types) { + $query->whereIn('uuid', is_array($types) ? $types : [$types]); + })->first(); + if ($field) $field->applyFilter($query, $value); + }); + if ($service && $service->objectRelationName) $query->whereHas($service->objectRelationName, function($query) use($service, $filters) { + if (method_exists($service, 'applyNativeFilters')) $service->applyNativeFilters($query, $filters); + if (method_exists($service, 'applyPermissionsFilters')) $service->applyPermissionsFilters($query); + }); + } + } + + public function applyFilter($query, $value) { + if ($value = $this->prepareFilterValue($value)) $query->whereHas("{$this->type}Values", function($query) use($value) { + $query->where(['field_id' => $this->id]); + $class = FieldType::CLASSES[$this->type]; + $class::applyFilter($query, $value); + }); + } + + public function prepareFilterValue($value) { + return is_array($value) ? collect($value)->filter(function($val) { + return !is_null($val); + })->all() : $value; + } + + + + public function fakeValue($objectId) { + $faker = new Generator(); + if ($this->type === FieldType::STRING) $value = $faker->sentence(4); + elseif ($this->type === FieldType::TEXT) $value = $faker->realText(rand(50, 240)); + elseif ($this->type === FieldType::INTEGER) $value = rand(0, 500); + elseif ($this->type === FieldType::FLOAT) $value = $faker->randomFloat(1, 0, 100); + elseif ($this->type === FieldType::BOOLEAN) $value = boolval(rand(0,1)); + elseif ($this->type === FieldType::DATE) $value = $faker->dateTimeBetween('-5 years', '+ 3 years'); + elseif ($this->type === FieldType::DATETIME) $value = $faker->dateTimeBetween('-5 years', '+ 3 years'); + elseif ($this->type === FieldType::RELATION) $value = $this->options->random(($this->multiple) ? rand(1, 3) : 1); + $this->setValue($objectId, $value ?? null); + } + +} \ No newline at end of file diff --git a/app/Models/Objects/FieldType.php b/app/Models/Objects/FieldType.php new file mode 100644 index 0000000..9cb9b54 --- /dev/null +++ b/app/Models/Objects/FieldType.php @@ -0,0 +1,71 @@ + 'Строка', + self::TEXT => 'Текст', + self::INTEGER => 'Целое число', + self::FLOAT => 'Число с точкой', + self::BOOLEAN => 'Двоичное', + self::DATE => 'Дата', + self::TIME => 'Время', + self::DATETIME => 'Дата и время', + self::RELATION => 'Отношение', + self::DOCUMENT => 'Документ', + self::IMAGE => 'Изображение' + ]; + + public const TABLES = [ + self::STRING => 'field_string_values', + self::TEXT => 'field_text_values', + self::INTEGER => 'field_integer_values', + self::FLOAT => 'field_float_values', + self::BOOLEAN => 'field_boolean_values', + self::DATE => 'field_date_values', + self::TIME => 'field_time_values', + self::DATETIME => 'field_datetime_values', + self::RELATION => 'field_relation_values', + self::DOCUMENT => 'field_document_values', + self::IMAGE => 'field_image_values' + ]; + + public const CLASSES = [ + self::STRING => StringValue::class, + self::TEXT => TextValue::class, + self::INTEGER => IntegerValue::class, + self::FLOAT => FloatValue::class, + self::BOOLEAN => BooleanValue::class, + self::DATE => DateValue::class, + self::TIME => TimeValue::class, + self::DATETIME => DatetimeValue::class, + self::RELATION => RelationValue::class, + self::DOCUMENT => DocumentValue::class, + self::IMAGE => ImageValue::class + ]; +} \ No newline at end of file diff --git a/app/Models/Objects/FieldsGroup.php b/app/Models/Objects/FieldsGroup.php new file mode 100644 index 0000000..73760a5 --- /dev/null +++ b/app/Models/Objects/FieldsGroup.php @@ -0,0 +1,55 @@ + 'array' + ]; + + + public function fields(): BelongsToMany { + return $this->belongsToMany(Field::class, 'fields_group_fields', 'group_id')->orderByPivot('ord'); + } + + public function objectType(): BelongsTo { + return $this->belongsTo(ObjectType::class); + } + + + public function syncFields(array $fieldsNames) { + $data = []; + collect($fieldsNames)->each(function($name, $i) use(&$data) { + if ($field = Field::query()->where('name', $name)->first()) $data[$field->id] = ['ord' => $i]; + }); + $this->fields()->sync($data); + } + + + +} \ No newline at end of file diff --git a/app/Models/Objects/NirObject.php b/app/Models/Objects/NirObject.php new file mode 100644 index 0000000..704ce9e --- /dev/null +++ b/app/Models/Objects/NirObject.php @@ -0,0 +1,172 @@ +morphToMany(NirObject::class, 'objectable'); + } + + public function pollInvitations(): MorphToMany { + return $this->morphedByMany(PollInvitation::class, 'objectable'); + } + + + public function type(): BelongsTo { + return $this->belongsTo(ObjectType::class); + } + + public function owner(): BelongsTo { + return $this->belongsTo(User::class); + } + + public function properties(): HasMany { + return $this->type->groups()->with('fields'); + } + + public function groups(): HasMany { + return $this->type->groups(); + } + + public function stringValues(): HasMany { + return $this->hasMany(StringValue::class, 'object_id'); + } + public function textValues(): HasMany { + return $this->hasMany(TextValue::class, 'object_id'); + } + public function integerValues(): HasMany { + return $this->hasMany(IntegerValue::class, 'object_id'); + } + public function floatValues(): HasMany { + return $this->hasMany(FloatValue::class, 'object_id'); + } + public function booleanValues(): HasMany { + return $this->hasMany(BooleanValue::class, 'object_id'); + } + public function dateValues(): HasMany { + return $this->hasMany(DateValue::class, 'object_id'); + } + public function relationValues(): HasMany { + return $this->hasMany(RelationValue::class, 'object_id'); + } + public function documentValues(): HasMany { + return $this->hasMany(DocumentValue::class, 'object_id'); + } + public function imageValues(): HasMany { + return $this->hasMany(ImageValue::class, 'object_id'); + } + + + public function scopeApplyFilters(Builder $query, array $filters): Builder { + collect($filters)->each(function($value, $prop) use($query) { + if ($field = Field::byUuidOrName($prop)->first()) $field->applyFilter($query, $value); + }); + return $query; + } + + + public function getValuesAttribute(): array { + $result = []; + $this->properties->map(function($group) use(&$result) { + $group->fields->map(function($field) use(&$result) { + $result[$field->name] = $this->getValue($field->name); + }); + }); + return $result; + } + + + public function getValue($fieldName) { + return ($field = $this->type->getField($fieldName)) ? $field->getValue($this->id) : null; + } + + public function value($fieldName) { + $result = null; + if ($field = $this->type->getField($fieldName)) { + $result = $field->getValue($this->id); + if ($result && !$field->multiple) $result = $result->first(); + } + return $result; + } + + public function setValues(array $values): Collection { + return collect($values)->map(function($value, $fieldName) { + return $this->setValue($fieldName, $value); + }); + } + + public function setValue($fieldName, $value) { + return ($field = $this->type->getField($fieldName)) ? $field->setValue($this->id, $value) : null; + } + + public function addValue($fieldName, $value) { + return ($field = $this->type->getField($fieldName)) ? $field->addValue($this->id, $value) : null; + } + + + public function clone() { + $clone = $this->type->objects()->create(['name' => $this->name, 'owner_id' => $this->owner_id]); + $this->properties->each(function($group) use($clone) { + $group->fields->each(function($field) use($clone) { + $clone->setValue($field->name, $this->getValue($field->name)); + }); + }); + return $clone; + } + + + public function applySearchFilter(Builder $query, $search) { + $query->whereHas('stringValues', function($query) use($search) { + $query->where('value', 'like', "%{$search}%"); + })->orWhereHas('textValues', function($query) use($search) { + $query->where('value', 'like', "%{$search}%"); + }); + } + + + public function fakeValues() { + $this->type->fields()->get()->each(function($field) { + $field->fakeValue($this->id); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/ObjectType.php b/app/Models/Objects/ObjectType.php new file mode 100644 index 0000000..99ae4aa --- /dev/null +++ b/app/Models/Objects/ObjectType.php @@ -0,0 +1,55 @@ +belongsTo(ObjectType::class, 'parent_id'); + } + + public function children(): HasMany { + return $this->hasMany(ObjectType::class, 'parent_id'); + } + + public function objects(): HasMany { + return $this->hasMany(NirObject::class, 'type_id'); + } + + public function groups(): HasMany { + return $this->hasMany(FieldsGroup::class)->orderBy('ord'); + } + + public function fields(): Builder { + return Field::query()->whereHas('groups', function($query) { + $query->where(['object_type_id' => $this->id]); + }); + } + + public function getField($name) { + return $this->fields()->where(['name' => $name])->first(); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/BooleanValue.php b/app/Models/Objects/Values/BooleanValue.php new file mode 100644 index 0000000..6c79dbe --- /dev/null +++ b/app/Models/Objects/Values/BooleanValue.php @@ -0,0 +1,20 @@ +value) ? null : boolval($this->value); + } + public function set($value): bool { + if ($value === 'false') $value = false; + if ($value === 'null') $value = null; + return parent::set(is_null($value) ? null : boolval($value)); + } + + public static function applyFilter($query, $value) { + parent::applyFilter($query, ($value === 'yes')); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/DateValue.php b/app/Models/Objects/Values/DateValue.php new file mode 100644 index 0000000..fd85ec3 --- /dev/null +++ b/app/Models/Objects/Values/DateValue.php @@ -0,0 +1,28 @@ +value ? $this->value->toIso8601String() : null; + } + public function set($value): bool { + return parent::set($value); + } + + public static function applyFilter($query, $value) { + $value = collect($value)->map(function($value) { + return $value ? Carbon::create($value)->format('Y-m-d') : null; + }); + parent::applyFilter($query, $value->all()); + } + +} \ No newline at end of file diff --git a/app/Models/Objects/Values/DatetimeValue.php b/app/Models/Objects/Values/DatetimeValue.php new file mode 100644 index 0000000..2857c09 --- /dev/null +++ b/app/Models/Objects/Values/DatetimeValue.php @@ -0,0 +1,28 @@ +value ? $this->value->toIso8601String() : null; + } + public function set($value): bool { + return parent::set($value); + } + + public static function applyFilter($query, $value) { + $value = collect($value)->map(function($value) { + return $value ? Carbon::create($value)->format('Y-m-d H:i') : null; + }); + parent::applyFilter($query, ($value->count() === 2) ? $value->all() : $value->first()); + } + +} \ No newline at end of file diff --git a/app/Models/Objects/Values/DocumentValue.php b/app/Models/Objects/Values/DocumentValue.php new file mode 100644 index 0000000..f992401 --- /dev/null +++ b/app/Models/Objects/Values/DocumentValue.php @@ -0,0 +1,38 @@ +belongsTo(Asset::class); + } + + public function get() { + return $this->asset; + } + + public function set($value): bool { + if (!is_object($value)) $value = Asset::query()->where(['uuid' => $value])->first(); + return is_object($value) ? $this->update(['asset_id' => $value->id]) : !$this->delete(); + } + + public static function applyFilter($query, $value) { + $value = is_array($value) ? $value : [$value]; + $query->whereHas('asset', function($query) use($value) { + $query->where(function($query) use($value) { + $query->whereIn('uuid', $value)->orWhereIn('name', $value); + }); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/FloatValue.php b/app/Models/Objects/Values/FloatValue.php new file mode 100644 index 0000000..cf1d574 --- /dev/null +++ b/app/Models/Objects/Values/FloatValue.php @@ -0,0 +1,14 @@ +value ? floatval($this->value) : null; + } + public function set($value): bool { + return parent::set(floatval($value)); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/ImageValue.php b/app/Models/Objects/Values/ImageValue.php new file mode 100644 index 0000000..fef430e --- /dev/null +++ b/app/Models/Objects/Values/ImageValue.php @@ -0,0 +1,38 @@ +belongsTo(Asset::class); + } + + public function get() { + return $this->asset; + } + + public function set($value): bool { + if (!is_object($value)) $value = Asset::query()->where(['uuid' => $value])->first(); + return is_object($value) ? $this->update(['asset_id' => $value->id]) : !$this->delete(); + } + + public static function applyFilter($query, $value) { + $value = is_array($value) ? $value : [$value]; + $query->whereHas('asset', function($query) use($value) { + $query->where(function($query) use($value) { + $query->whereIn('uuid', $value)->orWhereIn('name', $value); + }); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/IntegerValue.php b/app/Models/Objects/Values/IntegerValue.php new file mode 100644 index 0000000..5953a25 --- /dev/null +++ b/app/Models/Objects/Values/IntegerValue.php @@ -0,0 +1,14 @@ +value ? intval($this->value) : null; + } + public function set($value): bool { + return parent::set(intval($value)); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/RelationValue.php b/app/Models/Objects/Values/RelationValue.php new file mode 100644 index 0000000..51f8e8c --- /dev/null +++ b/app/Models/Objects/Values/RelationValue.php @@ -0,0 +1,46 @@ +morphTo(); + } + + public function get() { + return $this->relatable; + } + + public function set($value): bool { + if (!is_object($value) && ($class = $this->field->params['related'] ?? null) && class_exists($class)) { + if (!is_array($value)) $value = $class::query()->where(['uuid' => $value])->first(); + elseif (Arr::isAssoc($value)) { + if ($id = $value['id'] ?? $value['uuid'] ?? null) { + $value = $class::query()->where(is_numeric($id) ? ['id' => $id] : ['uuid' => $id])->first(); + } else $value = $class::query()->where($value)->first(); + } + } + return is_object($value) ? boolval($value->relationValues()->save($this)) : !$this->delete(); + } + + public static function applyFilter($query, $value) { + $value = is_array($value) ? $value : [$value]; + $query->whereHas('relatable', function ($query) use ($value) { + $query->where(function ($query) use ($value) { + $query->whereIn('uuid', $value)->orWhereIn('name', $value); + }); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/StringValue.php b/app/Models/Objects/Values/StringValue.php new file mode 100644 index 0000000..0ccee3b --- /dev/null +++ b/app/Models/Objects/Values/StringValue.php @@ -0,0 +1,20 @@ +value ? trim($this->value) : null; + } + public function set($value): bool { + return parent::set(trim($value)); + } + + public static function applyFilter($query, $value) { + collect(explode(' ', trim($value)))->each(function($term) use($query) { + $query->where('value', 'like', "%{$term}%"); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/TextValue.php b/app/Models/Objects/Values/TextValue.php new file mode 100644 index 0000000..e24f0f1 --- /dev/null +++ b/app/Models/Objects/Values/TextValue.php @@ -0,0 +1,20 @@ +value ? trim($this->value) : null; + } + public function set($value): bool { + return parent::set(trim($value)); + } + + public static function applyFilter($query, $value) { + collect(explode(' ', trim($value)))->each(function($term) use($query) { + $query->where('value', 'like', "%{$term}%"); + }); + } +} \ No newline at end of file diff --git a/app/Models/Objects/Values/TimeValue.php b/app/Models/Objects/Values/TimeValue.php new file mode 100644 index 0000000..44f5c9d --- /dev/null +++ b/app/Models/Objects/Values/TimeValue.php @@ -0,0 +1,28 @@ +value ? $this->value->toIso8601String() : null; + } + public function set($value): bool { + return parent::set($value); + } + + public static function applyFilter($query, $value) { + $value = collect($value)->map(function($value) { + return $value ? Carbon::create($value)->format('H:i:s') : null; + }); + parent::applyFilter($query, $value->all()); + } + +} \ No newline at end of file diff --git a/app/Models/Objects/Values/Value.php b/app/Models/Objects/Values/Value.php new file mode 100644 index 0000000..bfedbe2 --- /dev/null +++ b/app/Models/Objects/Values/Value.php @@ -0,0 +1,47 @@ +belongsTo(NirObject::class, 'object_id'); + } + + public function field(): BelongsTo { + return $this->belongsTo(Field::class); + } + + public function get() { + return $this->value; + } + + public function set($value): bool { + return $this->update(['value' => $value]); + } + + public static function applyFilter($query, $value) { + if (is_array($value)) { + if (!empty($value['gt']) && !empty($value['lt'])) $query->whereBetween('value', $value); + elseif (!empty($value['gt'])) $query->where('value', '>=', $value['gt']); + elseif (!empty($value['lt'])) $query->where('value', '<=', $value['lt']); + } else $query->where('value', '=', $value); + } +} \ No newline at end of file diff --git a/app/Models/Permission.php b/app/Models/Permission.php new file mode 100644 index 0000000..58b91ad --- /dev/null +++ b/app/Models/Permission.php @@ -0,0 +1,19 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..22f2085 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,112 @@ +hasMany(SocialProvider::class); + } + + public function avatar(): BelongsTo { + return $this->belongsTo(Asset::class, 'asset_id'); + } + + + public function getInitialsAttribute(): string { + return collect(explode(' ', $this->name))->slice(0, 2)->map(function($item) { + return Str::upper(Str::substr($item, 0, 1)); + })->join(''); + } + + public function getFirstAndMidNameAttribute(): string { + return collect(explode(' ', $this->name))->slice(1, 2)->join(' '); + } + + public function getIsAdminAttribute(): bool { + return $this->hasRole('Administrator'); + } + + + + public static function getByData($data, $triggerEvent = false) { + $result = false; + if ($email = trim($data['email'] ?? null)) { + $result = self::query()->where(['email' => $email])->first(); + if (!$result) { + $password = $data['password'] ?? (App::environment('local') ? 'Qwerty1!' : Str::random(8)); + $result = self::create(['email' => $email, 'password' => $password]); + $result->update(['name' => trim($data['name'] ?? null), 'phone' => trim($data['phone'] ?? null)]); + $result->assignRole($data['role'] ?? 'User'); + if ($triggerEvent) event(new UserRegistered($result, $password)); + } else { + if ($val = trim($data['phone'] ?? null)) $result->update(['phone' => $val]); + } + if ($val = $data['avatar'] ?? null) $result->setAvatar($val); + } + return $result; + } + + public function setAvatar($val) { + $asset = Asset::byUuid($val)->first(); + $this->update(['asset_id' => $asset->id ?? null]); + } + + + + public static function create(array $attributes = []) { + if (array_key_exists('password', $attributes)) { + $attributes['password'] = Hash::make($attributes['password']); + } + return static::query()->create($attributes); + } + + + public function sendPasswordResetNotification($token) { + Mail::to($this->email)->send(new PasswordResetRequested($this, $token)); + } + +} diff --git a/app/OAuthGrants/SocialGrant.php b/app/OAuthGrants/SocialGrant.php new file mode 100644 index 0000000..750eaff --- /dev/null +++ b/app/OAuthGrants/SocialGrant.php @@ -0,0 +1,97 @@ +setUserRepository($userRepository); + $this->setRefreshTokenRepository($refreshTokenRepository); + $this->refreshTokenTTL = new DateInterval('P1M'); + } + + /** + * {@inheritdoc} + */ + public function respondToAccessTokenRequest(ServerRequestInterface $request, ResponseTypeInterface $responseType, DateInterval $accessTokenTTL) + { + // Validate request + $client = $this->validateClient($request); + $scopes = $this->validateScopes($this->getRequestParameter('scope', $request)); + $user = $this->validateUser($request); + // Finalize the requested scopes + $scopes = $this->scopeRepository->finalizeScopes($scopes, $this->getIdentifier(), $client, $user->getIdentifier()); + // Issue and persist new tokens + $accessToken = $this->issueAccessToken($accessTokenTTL, $client, $user->getIdentifier(), $scopes); + $refreshToken = $this->issueRefreshToken($accessToken); + // Inject tokens into response + $responseType->setAccessToken($accessToken); + $responseType->setRefreshToken($refreshToken); + + return $responseType; + } + + /** + * {@inheritdoc} + */ + public function getIdentifier() + { + return 'social_grant'; + } + + /** + * @param ServerRequestInterface $request + * + * @throws OAuthServerException + * + * @return UserEntityInterface + */ + protected function validateUser(ServerRequestInterface $request) + { + $laravelRequest = new Request($request->getParsedBody()); + $user = $this->getUserEntityByRequest($laravelRequest); + if (false === $user instanceof UserEntityInterface) { + $this->getEmitter()->emit(new RequestEvent(RequestEvent::USER_AUTHENTICATION_FAILED, $request)); + + throw OAuthServerException::invalidCredentials(); + } + + return $user; + } + + /** + * Retrieve user by request. + * + * @param \Illuminate\Http\Request $request + * + * @throws \League\OAuth2\Server\Exception\OAuthServerException + * + * @return null|\Laravel\Passport\Bridge\User + */ + protected function getUserEntityByRequest(Request $request) + { + if (is_null($model = config('auth.providers.users.model'))) { + throw OAuthServerException::serverError('Unable to determine user model from configuration.'); + } + if (method_exists($model, 'byOAuthToken')) { + $user = (new $model())->byOAuthToken($request); + } else { + throw OAuthServerException::serverError('Unable to find byLoggedInUser method on user model.'); + } + + return ($user) ? new User($user->id) : null; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..0834998 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,88 @@ +app->environment('local')) Mail::alwaysTo('panabonic@yandex.ru'); + + Relation::enforceMorphMap([ + 'asset' => Asset::class, + 'permission' => Permission::class, + 'role' => Role::class, + 'social-provider' => SocialProvider::class, + 'user' => User::class, + + 'dictionary' => Dictionary::class, + 'dictionary-item' => DictionaryItem::class, + + 'object-field' => Field::class, + 'fields-group' => FieldsGroup::class, + 'object' => NirObject::class, + 'object-type' => ObjectType::class + ]); + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..c7471fc --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,60 @@ +registerPolicies(); + $this->extendAuthorizationServer(); + Passport::routes(); + Passport::tokensExpireIn(Carbon::now()->addHours(24)); + Passport::refreshTokensExpireIn(Carbon::now()->addDays(60)); + } + + protected function makeSocialRequestGrant() + { + $grant = new SocialGrant( + $this->app->make(UserRepository::class), + $this->app->make(RefreshTokenRepository::class) + ); + $grant->setRefreshTokenTTL(Passport::refreshTokensExpireIn()); + + return $grant; + } + + protected function extendAuthorizationServer() + { + $this->app->extend(AuthorizationServer::class, function ($server) { + return tap($server, function ($server) { + $server->enableGrantType( + $this->makeSocialRequestGrant(), + Passport::tokensExpireIn() + ); + }); + }); + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..8fecd50 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,22 @@ + [ + SendEmailVerificationNotification::class, + ], + UserRegistered::class => [ + SendRegistrationNotification::class + ], + PasswordRecovered::class => [ + SendPasswordRecoveredNotification::class + ] + ]; + + public function boot() { + parent::boot(); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1171154 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,63 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(300)->by(optional($request->user())->id ?: $request->ip()); + }); + } +} diff --git a/app/Services/DaDataService.php b/app/Services/DaDataService.php new file mode 100644 index 0000000..1e5b811 --- /dev/null +++ b/app/Services/DaDataService.php @@ -0,0 +1,87 @@ +inn = $inn; + $this->kpp = $kpp; + } + + public function saveToCompany(Company $company): Company { + if ($result = $this->getCompanyData()) { + if (!empty($result['company'])) $company->update($result['company']); + if (!empty($result['address'])) { + $company->legalAddress->update($result['address']); + $company->actualAddress->update($result['address']); + } + } + return $company; + } + + public function getCompanyData() { + $result = []; + $data = $this->getSavedResponse(); + if (!$data && is_numeric($this->inn)) { + try { + $data = DaDataCompany::id($this->inn, 1, $this->kpp, BranchType::MAIN, DaDataCompanyType::LEGAL); + $this->saveResponse($data); + } catch (Exception $exception) { + echo 'INN: ' . $this->inn . ' error: ' . $exception->getMessage() . "\n"; + return false; + } + } + if ($data && is_array($data) && !empty($data['suggestions'])) { + $data = $data['suggestions']; + if (!empty($data[0])) $data = $data[0]; + $data = $data['data']; + + $result['company'] = [ + 'name' => $data['name']['short_with_opf'] ?? null, + 'full_name' => $data['name']['full_with_opf'] ?? null, + 'kpp' => $data['kpp'] ?? null, + 'ogrn' => $data['ogrn'] ?? null, + 'okpo' => $data['okpo'] ?? null, + 'okved' => $data['okved'] ?? null + ]; + + $result['address'] = [ + 'full' => $data['address']['unrestricted_value'] ?? null, + 'postcode' => $data['address']['data']['postal_code'] ?? null, + 'country' => $data['address']['data']['country'] ?? null, + 'region' => $data['address']['data']['region'] ?? null, + 'city' => $data['address']['data']['city'] ?? null, + 'district' => $data['address']['data']['federal_district'] ?? null, + 'street' => $data['address']['data']['street_with_type'] ?? null, + 'house' => "{$data['address']['data']['house_type_full']} {$data['address']['data']['house']}", + 'block' => "{$data['address']['data']['block_type_full']} {$data['address']['data']['block']}", + 'office' => "{$data['address']['data']['flat_type_full']} {$data['address']['data']['flat']}" + ]; + } + return $result; + } + + public function saveResponse($data) { + Storage::put($this->makePath(), collect($data)->toJson()); + } + + public function getSavedResponse() { + $path = $this->makePath(); + return Storage::exists($path) ? json_decode(Storage::get("dadata/{$this->inn}.json"), true) : null; + } + + public function makePath(): string { + return "dadata/{$this->inn}.json"; + } + +} \ No newline at end of file diff --git a/app/Services/Documents/DocumentGeneratorService.php b/app/Services/Documents/DocumentGeneratorService.php new file mode 100644 index 0000000..8ebcb77 --- /dev/null +++ b/app/Services/Documents/DocumentGeneratorService.php @@ -0,0 +1,58 @@ + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'pdf' => 'application/pdf', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' + ]; + + public static array $classes = [ + 'pdf' => GeneratePdfDocument::class, + 'word' => GenerateWordDocument::class + ]; + + public static function generate(string $type, string $template, array $data, array $options = []) { + return ($class = self::$classes[$type] ?? null) ? new $class($template, $data, $options) : null; + } + + + public function __construct(string $template, array $data, array $options = []) { + $this->template = $template; + $this->data = $data; + $this->options = array_merge($this->options, $options); + } + + + + public function makeFilePath($ext): string { + $fileName = Str::lower(Str::random()); + $dir = "documents/generated/{$fileName[0]}"; + Storage::makeDirectory($dir); + return "{$dir}/{$fileName}.{$ext}"; + } + + public function makeAsset($path, $name) { + $info = pathinfo($path); + return Asset::create([ + 'type' => 'document', + 'path' => $path, + 'mime' => $this->mimes[$info['extension']] ?? null, + 'name' => $name ?? $info['basename'], + 'filename' => $info['basename'], + 'extension' => $info['extension'], + 'user_id' => ($user = Auth::user()) ? $user->id : null + ]); + } +} \ No newline at end of file diff --git a/app/Services/Documents/GeneratePdfDocument.php b/app/Services/Documents/GeneratePdfDocument.php new file mode 100644 index 0000000..6587c93 --- /dev/null +++ b/app/Services/Documents/GeneratePdfDocument.php @@ -0,0 +1,35 @@ + 'portrait' + ]; + + public string $fontName = 'Times New Roman'; + public int $fontSize = 10; + + + public function __construct(string $template, array $data, array $options) { + $template = "documents.pdf.{$template}"; + parent::__construct($template, $data, $options); + } + + + public function file(): string { + $pdf = PDF::loadView($this->template, $this->data); + if ($this->options['orientation'] === 'landscape') $pdf->setPaper('a4', 'landscape'); + $filePath = $this->makeFilePath('pdf'); + Storage::put($filePath, $pdf->download()->getOriginalContent()); + return $filePath; + } + + public function asset(string $name) { + return $this->makeAsset($this->file(), $name); + } + +} \ No newline at end of file diff --git a/app/Services/Documents/GenerateWordDocument.php b/app/Services/Documents/GenerateWordDocument.php new file mode 100644 index 0000000..dc4e44f --- /dev/null +++ b/app/Services/Documents/GenerateWordDocument.php @@ -0,0 +1,52 @@ + 300, + 'marginLeft' => 600, + 'marginRight' => 600, + 'colsNum' => 1, + 'pageNumberingStart' => 1, + 'orientation' => 'portrait' + ]; + + public string $fontName = 'Times New Roman'; + public int $fontSize = 10; + + + public function __construct(string $template, array $data, array $options = []) { + $template = "documents.word.{$template}"; + parent::__construct($template, $data, $options); + } + + + public function file(): string { + $template = view($this->template, $this->data); + $phpWord = new PhpWord(); + $phpWord->setDefaultFontName($this->fontName); + $phpWord->setDefaultFontSize($this->fontSize); + $section = $phpWord->addSection($this->options); + Html::addHtml($section, $template->render(), false, false); + try { + $filePath = $this->makeFilePath('docx'); + $objWriter = IOFactory::createWriter($phpWord); + $objWriter->save(Storage::path($filePath)); + return $filePath; + } catch (Exception $e) { + var_dump($e->getMessage()); + } + } + + public function asset(string $name = null) { + return $this->makeAsset($this->file(), $name); + } + +} \ No newline at end of file diff --git a/app/Services/Filters/FiltersService.php b/app/Services/Filters/FiltersService.php new file mode 100644 index 0000000..bc4b0ed --- /dev/null +++ b/app/Services/Filters/FiltersService.php @@ -0,0 +1,85 @@ +get('by', 'dates'); + $dir = $order->get('dir', 'desc'); + if ($by === 'dates') $query->orderBy('created_at', $dir); + elseif ($by === 'names') $query->orderBy('name', $dir); + } + + + + public function applySearchFilter($query, $string, $props = [], $has = []) { + $this->stringToWords($string)->each(function($word) use($query, $props, $has) { + $query->where(function($query) use($word, $props, $has) { + collect($props)->each(function($prop, $index) use($query, $word) { + if (is_array($prop)) $this->applyRelationalSearchFilter($query, $prop, $word); + else $index ? $query->orWhere($prop, 'like', $word) : $query->where($prop, 'like', $word); + }); + }); + }); + } + public function applyRelationalSearchFilter($query, $data, $word) { + collect($data)->each(function($props, $relation) use($query, $word) { + $query->orWhereHas($relation, function($query) use($props, $word) { + collect($props)->each(function($prop, $index) use($query, $word) { + $index ? $query->orWhere($prop, 'like', $word) : $query->where($prop, 'like', $word); + }); + }); + }); + } + public function stringToWords($string): Collection { + return collect(explode(' ', $string))->map(function($word) { + return '%' . trim($word) . '%'; + }); + } + + public function applyDateFilter($query, $prop, $value) { + if ($v = $value['gt'] ?? null) $query->where($prop, '>=', Date::create($v)); + if ($v = $value['lt'] ?? null) $query->where($prop, '<=', Date::create($v)); + } + public function applyRelationFilter(Builder $query, $relation, $value) { + $query->whereHas($relation, function($query) use($value) { + $query->whereIn('uuid', is_array($value) ? $value : [$value]); + }); + } + + + public function getRelationItems(array $items): array { + return ['data' => collect($items)->map(function($title, $id) { + return ['id' => $id, 'title' => $title]; + })->values()]; + } + + public function getRelationValue($value, $items): array { + return collect($value)->filter(function($value) {return $value;})->map(function($value) use($items) { + return ['id' => $value, 'title' => $items[$value] ?? null]; + })->values()->all(); + } + +} diff --git a/app/Services/Forms/FormsService.php b/app/Services/Forms/FormsService.php new file mode 100644 index 0000000..50e8fa4 --- /dev/null +++ b/app/Services/Forms/FormsService.php @@ -0,0 +1,64 @@ + '', 'update' => '']; + + public static array $services = [ + UserFormsServices::class + ]; + + public function __construct() { + + } + + public static function getService($type) { + foreach (self::$services as $service) { + $services = $service::$services; + if (($class = $services[$type] ?? null) && class_exists($class)) return new $class(); + } + return null; + } + + + public function formTitle($model = null): ?string { + return $this->formTitles[$model ? 'update' : 'create'] ?? null; + } + + + public function form(?string $id = null, array $data = []): array { + return []; + } + + public function save(array $data, ?string $id = null) { + return $id ? $this->update($id, $data) : $this->store($data); + } + + public function store(array $data) { + return null; + } + + public function update(string $id, array $data) { + return null; + } + + + protected function getRelationItems(array $items): array { + return ['data' => collect($items)->map(function($title, $name) { + return ['id' => $name, 'title' => $title]; + })->values()->all()]; + } + + protected function getRelationValue(array $items, ?string $id): array { + return ['data' => collect($items)->filter(function($title, $name) use ($id) { + return $name == $id; + })->map(function($title, $name) { + return ['id' => $name, 'title' => $title]; + })->values()->all()]; + } + + +} diff --git a/app/Services/Forms/Users/UserForms.php b/app/Services/Forms/Users/UserForms.php new file mode 100644 index 0000000..107d1d4 --- /dev/null +++ b/app/Services/Forms/Users/UserForms.php @@ -0,0 +1,72 @@ + 'Создание нового профиля', 'update' => 'Редактирование профиля']; + + public function form(?string $id = null, array $data = []): array { + $model = User::byUuid($id)->first(); + $groups = [ + ['name' => 'common', 'fields' => $this->commonGroupFields($model)] + ]; + return ['title' => $this->formTitle($model), 'data' => $groups]; + } + + public function commonGroupFields(?User $model): array { + $fields = [ + [ + 'name' => 'email', + 'title' => 'Электронная почта', + 'type' => FieldType::STRING, + 'required' => true, + 'readonly' => !!$model, + 'value' => $model->email ?? null + ], + [ + 'name' => 'name', + 'title' => 'ФИО', + 'type' => FieldType::STRING, + 'required' => true, + 'value' => $model->name ?? null + ], + [ + 'name' => 'phone', + 'title' => 'Телефон', + 'type' => FieldType::STRING, + 'value' => $model->phone ?? null + ], + [ + 'name' => 'avatar', + 'title' => 'Фотография профиля', + 'type' => FieldType::IMAGE, + 'value' => ($model->avatar ?? null) ? fractal($model->avatar, new AssetTransformer()) : null + ] + ]; + return ['data' => $fields]; + } + + + + public function store(array $data): ?JsonResponse { + $model = User::getByData($data, true); + return fractal($model, new UserTransformer())->respond(); + + } + + public function update(string $id, array $data): ?JsonResponse { + $model = User::byUuid($id)->firstOrFail(); + $model->update($data); + $model->setAvatar($data['avatar'] ?? null); + return fractal($model->fresh(), new UserTransformer())->respond(); + } + + +} diff --git a/app/Services/Forms/Users/UserFormsServices.php b/app/Services/Forms/Users/UserFormsServices.php new file mode 100644 index 0000000..94200b0 --- /dev/null +++ b/app/Services/Forms/Users/UserFormsServices.php @@ -0,0 +1,9 @@ + UserForms::class + ]; +} diff --git a/app/Services/ModelPropertyParser.php b/app/Services/ModelPropertyParser.php new file mode 100644 index 0000000..e3645a0 --- /dev/null +++ b/app/Services/ModelPropertyParser.php @@ -0,0 +1,24 @@ +', $prop))->each(function($prop) use($model, &$result) { + $func = $params = null; + if (strpos($prop, '(')) { + list($func, $params) = explode('(', $prop); + $params = trim($params, '()"') ?: null; + } + if ($result && is_object($result)) $result = $func ? ($params ? $result->$func($params) : $result->$func()) : $result->$prop; + else $result = $func ? ($params ? $model->$func($params) : $model->$func()) : $model->$prop; + if (!$result) return false; + }); + return $result; + } + +} \ No newline at end of file diff --git a/app/Services/PermissionsService.php b/app/Services/PermissionsService.php new file mode 100644 index 0000000..c2e5de4 --- /dev/null +++ b/app/Services/PermissionsService.php @@ -0,0 +1,36 @@ + 'nirObject' + ]; + + public function __construct(Model $model, ?User $user = null) { + $this->model = $model; + $this->user = $user ?? Auth::user(); + } + + public function get(): array { + $rule = $this->rules[get_class($this->model)] ?? null; + $func = "{$rule}Permissions"; + if ($this->user->isPrivileged) return ['anything' => true]; + elseif (method_exists($this, $func)) return $this->$func(); + else return []; + } + + + public function nirObjectPermissions(): array { + return ['edit' => $this->model->owner_id === $this->user->id]; + } + +} \ No newline at end of file diff --git a/app/Support/ClassifiableTrait.php b/app/Support/ClassifiableTrait.php new file mode 100644 index 0000000..69c58fc --- /dev/null +++ b/app/Support/ClassifiableTrait.php @@ -0,0 +1,27 @@ +morphToMany(Code::class, 'classifiable', 'classifiable')->withTimestamps(); + } + + public function getCodes($classifier) { + return $this->codes()->whereHas('classifier', function($query) use($classifier) { + $query->where(['name' => $classifier]); + })->get(); + } + + public function setCodes($codes) { + $codes = collect($codes)->map(function($code) { + return trim(Str::replace(' ', '', $code)); + })->all(); + $this->codes()->sync(Code::query()->whereIn('name', $codes)->orWhereIn('uuid', $codes)->pluck('id')->all()); + } + +} diff --git a/app/Support/HasDeadlineTrait.php b/app/Support/HasDeadlineTrait.php new file mode 100644 index 0000000..738da19 --- /dev/null +++ b/app/Support/HasDeadlineTrait.php @@ -0,0 +1,15 @@ +diffInDays($this->deadline, false); + } + + public function getDaysTillDeadlineLabelAttribute(): string { + return $this->daysTillDeadline . ' ' . trans_choice('день|дня|дней', $this->daysTillDeadline); + } + + +} diff --git a/app/Support/HasObjectsTrait.php b/app/Support/HasObjectsTrait.php new file mode 100644 index 0000000..0965626 --- /dev/null +++ b/app/Support/HasObjectsTrait.php @@ -0,0 +1,44 @@ +morphToMany(NirObject::class, 'objectable')->withTimestamps(); + } + + public function getObjectAttribute() { + return $this->objects()->first(); + } + + + public function getObject($typeName): ?Model { + return ($type = ObjectType::query()->where(['name' => $typeName])->first()) ? $this->objects()->firstOrCreate(['type_id' => $type->id]) : null; + } + + public function createObject($typeName): ?Model { + return ($type = ObjectType::query()->where(['name' => $typeName])->first()) ? $this->objects()->create(['type_id' => $type->id]) : null; + } + + public function getValue($fieldName) { + return $this->object ? $this->object->getValue($fieldName) : null; + } + + public function setValue($fieldName, $value) { + return $this->object ? $this->object->setValue($fieldName, $value) : null; + } + + public function setValues(array $values) { + return $this->object ? $this->object->setValues($values) : null; + } + + public function addValue($fieldName, $value) { + return $this->object ? $this->object->addValue($fieldName, $value) : null; + } + +} diff --git a/app/Support/HasPermissionsUuid.php b/app/Support/HasPermissionsUuid.php new file mode 100644 index 0000000..b8a9615 --- /dev/null +++ b/app/Support/HasPermissionsUuid.php @@ -0,0 +1,32 @@ +where('name', $permissions)->orWhere('uuid', $permissions)->first(); + } + + if (is_array($permissions)) { + return app(PermissionEntity::class)->whereIn('name', $permissions)->orWhereIn('uuid', $permissions)->get(); + } + + return $permissions; + } +} diff --git a/app/Support/HasRolesUuid.php b/app/Support/HasRolesUuid.php new file mode 100644 index 0000000..2b98fc4 --- /dev/null +++ b/app/Support/HasRolesUuid.php @@ -0,0 +1,23 @@ +where('name', $role)->orWhere('uuid', $role)->first(); + } + + return $role; + } +} diff --git a/app/Support/HasSocialLogin.php b/app/Support/HasSocialLogin.php new file mode 100644 index 0000000..651a393 --- /dev/null +++ b/app/Support/HasSocialLogin.php @@ -0,0 +1,42 @@ +get('provider'))->userFromToken($request->get('token')); + + try { + $user = static::whereHas('socialProviders', function ($query) use ($request, $userData) { + $query->where('provider', Str::lower($request->get('provider')))->where('provider_id', $userData->getId()); + })->firstOrFail(); + } catch (ModelNotFoundException $e) { + $user = static::where('email', $userData->getEmail())->first(); + if (! $user) { + $user = static::create([ + 'name' => $userData->getName(), + 'email' => $userData->getEmail(), + 'uuid' => Str::uuid(), + 'password' => Hash::make(Str::random(16)), + 'email_verified_at' => now(), + ]); + } + SocialProvider::create([ + 'user_id' => $user->id, + 'provider' => $request->get('provider'), + 'provider_id' => $userData->getId(), + ]); + } + + return $user; + } +} diff --git a/app/Support/ParticipatableTrait.php b/app/Support/ParticipatableTrait.php new file mode 100644 index 0000000..06afbe5 --- /dev/null +++ b/app/Support/ParticipatableTrait.php @@ -0,0 +1,12 @@ +morphMany(Participant::class, 'participatable'); + } +} diff --git a/app/Support/RelationValuesTrait.php b/app/Support/RelationValuesTrait.php new file mode 100644 index 0000000..003db44 --- /dev/null +++ b/app/Support/RelationValuesTrait.php @@ -0,0 +1,12 @@ +morphMany(RelationValue::class, 'relatable'); + } +} diff --git a/app/Support/SortableTrait.php b/app/Support/SortableTrait.php new file mode 100644 index 0000000..335c068 --- /dev/null +++ b/app/Support/SortableTrait.php @@ -0,0 +1,11 @@ +order_num = $model->lastOrderNum() + 1; + }); + } +} diff --git a/app/Support/UuidScopeTrait.php b/app/Support/UuidScopeTrait.php new file mode 100644 index 0000000..b067c13 --- /dev/null +++ b/app/Support/UuidScopeTrait.php @@ -0,0 +1,34 @@ +where('uuid', $this->normalizeUuid($uuid)); + } + + public function scopeByUuids($query, $uuids) { + return $query->whereIn('uuid', is_array($uuids) ? $uuids : [$uuids]); + } + + public function scopeByUuidOrName($query, $uuid) { + return $query->orWhere(['uuid' => $uuid, 'name' => $this->normalizeUuid($uuid)]); + } + + public function scopeByName($query, $name) { + return $query->where(['name' => $name]); + } + + public function normalizeUuid($uuid) { + if (is_array($uuid)) $uuid = (!empty($uuid[0])) ? $this->normalizeUuid($uuid[0]) : ($uuid['uuid'] ?? $uuid['id'] ?? null); + return $uuid; + } + + protected static function bootUuidScopeTrait() { + static::creating(function ($model) { + if (empty($model->uuid)) $model->uuid = (string) Str::uuid(); + }); + } +} diff --git a/app/Transformers/Assets/AssetTransformer.php b/app/Transformers/Assets/AssetTransformer.php new file mode 100644 index 0000000..338e989 --- /dev/null +++ b/app/Transformers/Assets/AssetTransformer.php @@ -0,0 +1,40 @@ + $model->uuid, + 'type' => $model->type, + 'path' => $model->path, + 'mime' => $model->mime, + 'name' => $model->name, + 'filename' => $model->filename, + 'extension' => $model->extension, + 'links' => $model->links(), + 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : null, + ]; + } + + public function includeUser(Asset $model): ?Item { + return $model->user ? $this->item($model->user, new UserTransformer()) : null; + } + + public function includeCoordinates(Asset $model): Primitive { + return $this->primitive($model->coordinates()); + } +} diff --git a/app/Transformers/Dictionaries/DictionaryItemTransformer.php b/app/Transformers/Dictionaries/DictionaryItemTransformer.php new file mode 100644 index 0000000..4bf039e --- /dev/null +++ b/app/Transformers/Dictionaries/DictionaryItemTransformer.php @@ -0,0 +1,31 @@ + $model->uuid, + 'name' => $model->name, + 'title' => $model->title + ]; + } + + public function includeDictionary(DictionaryItem $model): ?Item { + return $model->dictionary ? $this->item($model->dictionary, new DictionaryTransformer()) : null; + } + + +} diff --git a/app/Transformers/Dictionaries/DictionaryTransformer.php b/app/Transformers/Dictionaries/DictionaryTransformer.php new file mode 100644 index 0000000..a3fbbb4 --- /dev/null +++ b/app/Transformers/Dictionaries/DictionaryTransformer.php @@ -0,0 +1,31 @@ + $model->uuid, + 'name' => $model->name, + 'title' => $model->title + ]; + } + + public function includeItems(Dictionary $model): Collection { + return $this->collection($model->items, new DictionaryItemTransformer()); + } + + +} diff --git a/app/Transformers/Objects/FieldTransformer.php b/app/Transformers/Objects/FieldTransformer.php new file mode 100644 index 0000000..c53c701 --- /dev/null +++ b/app/Transformers/Objects/FieldTransformer.php @@ -0,0 +1,65 @@ +filters = $filters; + $this->service = $service; + } + + protected array $defaultIncludes = [ + + ]; + + protected array $availableIncludes = [ + 'value', 'options', 'range', 'represented' + ]; + + public function transform(Field $model): array { + return [ + 'id' => $model->uuid, + 'type' => $model->type, + 'name' => $model->name, + 'title' => $model->title, + 'required' => boolval($model->required), + 'multiple' => boolval($model->multiple), + 'filterable' => boolval($model->filterable), + 'hidden' => boolval($model->hidden), + 'related' => $model->params['related'] ?? null, + 'appearance' => $model->params['appearance'] ?? null + ]; + } + + public function includeValue(Field $model) { + if ($value = $this->filters[$model->name] ?? null) { + if ($class = $model->params['related'] ?? null) { + $value = $class::query()->whereIn('uuid', is_array($value) ? $value : [$value])->get(); + return $this->collection($value, $model->transformer); + } else return $this->primitive($value); + } + } + + public function includeOptions(Field $model): ?Collection { + return $model->options ? $this->collection($model->options, $model->transformer) : null; + } + + public function includeRange(Field $model): ?Primitive { + return ($res = $model->getRange($this->filters, $this->service)) ? $this->primitive($res) : null; + } + + public function includeRepresented(Field $model): ?Collection { + return ($res = $model->getRepresented($this->filters, $this->service)) ? $this->collection($res, $model->transformer) : null; + } + + +} diff --git a/app/Transformers/Objects/FieldsGroupTransformer.php b/app/Transformers/Objects/FieldsGroupTransformer.php new file mode 100644 index 0000000..7cb69b5 --- /dev/null +++ b/app/Transformers/Objects/FieldsGroupTransformer.php @@ -0,0 +1,33 @@ + $model->uuid, + 'name' => $model->name, + 'title' => $model->title, + 'hidden' => boolval($model->hidden), + 'dynamic' => $model->params['dynamic'] ?? null + ]; + } + + public function includeFields(FieldsGroup $model): Collection { + return $this->collection($model->fields, new FieldTransformer($model->objectType)); + } + + +} diff --git a/app/Transformers/Objects/ObjectPropertiesGroupTransformer.php b/app/Transformers/Objects/ObjectPropertiesGroupTransformer.php new file mode 100644 index 0000000..528db3a --- /dev/null +++ b/app/Transformers/Objects/ObjectPropertiesGroupTransformer.php @@ -0,0 +1,40 @@ +object = $object; + } + + protected array $defaultIncludes = [ + + ]; + + protected array $availableIncludes = [ + 'fields' + ]; + + public function transform(FieldsGroup $model): array { + return [ + 'id' => $model->uuid, + 'name' => $model->name, + 'title' => $model->title, + 'hidden' => boolval($model->hidden), + 'dynamic' => $model->params['dynamic'] ?? null + ]; + } + + public function includeFields(FieldsGroup $model): Collection { + return $this->collection($model->fields, new ObjectPropertyTransformer($this->object)); + } + + +} diff --git a/app/Transformers/Objects/ObjectPropertyTransformer.php b/app/Transformers/Objects/ObjectPropertyTransformer.php new file mode 100644 index 0000000..ac787cf --- /dev/null +++ b/app/Transformers/Objects/ObjectPropertyTransformer.php @@ -0,0 +1,56 @@ +object = $object; + } + + protected array $defaultIncludes = [ + + ]; + + protected array $availableIncludes = [ + 'value', 'options' + ]; + + public function transform(Field $model): array { + return [ + 'id' => $model->uuid, + 'type' => $model->type, + 'name' => $model->name, + 'title' => $model->title, + 'required' => boolval($model->required), + 'multiple' => boolval($model->multiple), + 'filterable' => boolval($model->filterable), + 'hidden' => boolval($model->hidden), + 'related' => $model->params['related'] ?? null, + 'appearance' => $model->params['appearance'] ?? null + ]; + } + + public function includeValue(Field $model) { + if ($value = $model->getValue($this->object->id)) { + if ($model->type === FieldType::RELATION) return $this->collection($value->filter(function($val) {return !is_null($val);}), $model->transformer); + elseif ($model->type === FieldType::DOCUMENT) return $this->collection($value, new AssetTransformer()); + else return $this->primitive(['data' => $model->getValue($this->object->id)]); + } + return null; + } + + public function includeOptions(Field $model): ?Collection { + return $model->options ? $this->collection($model->options, $model->transformer) : null; + } + + +} diff --git a/app/Transformers/Objects/ObjectTransformer.php b/app/Transformers/Objects/ObjectTransformer.php new file mode 100644 index 0000000..01d3ff1 --- /dev/null +++ b/app/Transformers/Objects/ObjectTransformer.php @@ -0,0 +1,49 @@ + $model->uuid, + 'name' => $model->name, + 'type_title' => $model->type->title, + 'created_at' => $model->created_at ? $model->created_at->toIso8601String() : null, + 'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : null + ]; + } + + public function includeGroups(NirObject $model): Collection { + return $this->collection($model->properties, new ObjectPropertiesGroupTransformer($model)); + } + + public function includeType(NirObject $model): ?Item { + return $model->type ? $this->item($model->type, new ObjectTypeTransformer()) : null; + } + + public function includeOwner(NirObject $model): ?Item { + return $model->owner ? $this->item($model->owner, new UserTransformer()) : null; + } + + public function includePermissions(NirObject $model): Primitive { + return $this->primitive((new PermissionsService($model))->get()); + } + + +} diff --git a/app/Transformers/Objects/ObjectTypeTransformer.php b/app/Transformers/Objects/ObjectTypeTransformer.php new file mode 100644 index 0000000..ae16d02 --- /dev/null +++ b/app/Transformers/Objects/ObjectTypeTransformer.php @@ -0,0 +1,43 @@ + $model->uuid, + 'name' => $model->name, + 'title' => $model->title + ]; + } + + public function includeParent(ObjectType $model): ?Item { + return $model->parent ? $this->item($model->parent, new ObjectTypeTransformer()) : null; + } + + public function includeChildren(ObjectType $model): Collection { + return $this->collection($model->children, new ObjectTypeTransformer()); + } + + public function includeGroups(ObjectType $model): Collection { + return $this->collection($model->groups, new FieldsGroupTransformer()); + } + + public function includeObjects(ObjectType $model): Collection { + return $this->collection($model->objects, new ObjectTransformer()); + } + +} diff --git a/app/Transformers/Objects/OptionTransformer.php b/app/Transformers/Objects/OptionTransformer.php new file mode 100644 index 0000000..ed7050b --- /dev/null +++ b/app/Transformers/Objects/OptionTransformer.php @@ -0,0 +1,25 @@ + $model->uuid, + 'name' => $model->name, + 'title' => $model->title + ]; + } + +} diff --git a/app/Transformers/Users/NotificationTransformer.php b/app/Transformers/Users/NotificationTransformer.php new file mode 100644 index 0000000..3d49879 --- /dev/null +++ b/app/Transformers/Users/NotificationTransformer.php @@ -0,0 +1,27 @@ + $model->id, + 'type' => $model->type, + 'created_at' => $model->created_at, + 'read_at' => $model->read_at ? $model->read_at->toIso8601String() : null, + 'message' => html_entity_decode($model->data['message']) + ]; + } + +} diff --git a/app/Transformers/Users/PermissionTransformer.php b/app/Transformers/Users/PermissionTransformer.php new file mode 100644 index 0000000..de23b6f --- /dev/null +++ b/app/Transformers/Users/PermissionTransformer.php @@ -0,0 +1,17 @@ + $model->uuid, + 'name' => $model->name, + 'createdAt' => $model->created_at->toIso8601String(), + 'updatedAt' => $model->updated_at->toIso8601String() + ]; + } +} diff --git a/app/Transformers/Users/RoleTransformer.php b/app/Transformers/Users/RoleTransformer.php new file mode 100644 index 0000000..edd3b3e --- /dev/null +++ b/app/Transformers/Users/RoleTransformer.php @@ -0,0 +1,26 @@ + $model->uuid, + 'name' => $model->name, + 'createdAt' => $model->created_at->toIso8601String(), + 'updatedAt' => $model->updated_at->toIso8601String() + ]; + } + + public function includePermissions(Role $model): Collection { + return $this->collection($model->permissions, new PermissionTransformer()); + } +} diff --git a/app/Transformers/Users/UserTransformer.php b/app/Transformers/Users/UserTransformer.php new file mode 100644 index 0000000..562ef3d --- /dev/null +++ b/app/Transformers/Users/UserTransformer.php @@ -0,0 +1,36 @@ + $model->uuid, + 'name' => $model->name, + 'first_name' => $model->first_name, + 'last_name' => $model->last_name, + 'initials' => $model->initials, + 'email' => $model->email, + 'phone' => $model->phone, + 'created_at' => $model->created_at->toIso8601String() + ]; + } + + public function includeAvatar(User $model): ?Item { + return $model->avatar ? $this->item($model->avatar, new AssetTransformer()) : null; + } + + public function includeRoles(User $model): Collection { + return $this->collection($model->roles, new RoleTransformer()); + } + +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..df630d0 --- /dev/null +++ b/artisan @@ -0,0 +1,51 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running. We will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bin/exec-app-container.sh b/bin/exec-app-container.sh new file mode 100644 index 0000000..033e0a2 --- /dev/null +++ b/bin/exec-app-container.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -x #echo on + +docker-compose -f docker-compose.yml exec app /bin/bash \ No newline at end of file diff --git a/bin/run-scheduler.sh b/bin/run-scheduler.sh new file mode 100644 index 0000000..09cbf29 --- /dev/null +++ b/bin/run-scheduler.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +while [ true ] +do + php /var/www/html/artisan schedule:run --quiet --no-interaction & + sleep 60 +done diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..f2801ad --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php new file mode 100644 index 0000000..94adc99 --- /dev/null +++ b/bootstrap/autoload.php @@ -0,0 +1,17 @@ +=7.4", + "ext-json": "*", + "barryvdh/laravel-dompdf": "^0.9.0", + "fideloper/proxy": "^4.2", + "fruitcake/laravel-cors": "^2.0", + "guzzlehttp/guzzle": "^7.0.1", + "intervention/image": "^2.5", + "intervention/imagecache": "^2.4", + "laravel/framework": "^8.0", + "laravel/passport": "^10.0", + "laravel/socialite": "^5.1", + "laravel/tinker": "^2.0", + "maatwebsite/excel": "^3.1", + "movemoveapp/laravel-dadata": "^1.0", + "phpoffice/phpword": "^1.0", + "seyyedam7/laravel-html-parser": "^3.1", + "spatie/laravel-fractal": "^5.8", + "spatie/laravel-permission": "^3.17", + "tomlerendu/laravel-convert-case-middleware": "^1.1" + }, + "require-dev": { + "brianium/paratest": "^6.2", + "eduarguz/shift-php-cs": "dev-master", + "facade/ignition": "^2.5", + "fakerphp/faker": "^1.9.1", + "mockery/mockery": "^1.4.2", + "nunomaduro/collision": "^5.0", + "phpunit/phpunit": "^9.3.3" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ], + "api-docs": [ + "apibmerge docs/api/blueprint docs/api/apiblueprint.apib", + "aglio --theme-variables flatly --theme-template triple -i docs/api/blueprint/apidocs.apib -o resources/views/apidocs.blade.php" + ], + "cs": [ + "vendor/bin/php-cs-fixer fix --config=.php_cs.dist -vvv --using-cache=no" + ], + "test": [ + "php artisan test --parallel" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..f312094 --- /dev/null +++ b/composer.lock @@ -0,0 +1,11695 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "eb612992111e9d72e562a0c7f5da9818", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, + { + "name": "barryvdh/laravel-dompdf", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/5b99e1f94157d74e450f4c97e8444fcaffa2144b", + "reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^1", + "illuminate/support": "^5.5|^6|^7|^8", + "php": "^7.1 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\DomPDF\\ServiceProvider" + ], + "aliases": { + "PDF": "Barryvdh\\DomPDF\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\DomPDF\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "A DOMPDF Wrapper for Laravel", + "keywords": [ + "dompdf", + "laravel", + "pdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v0.9.0" + }, + "funding": [ + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2020-12-27T12:05:53+00:00" + }, + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, + { + "name": "defuse/php-encryption", + "version": "v2.3.1", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/77880488b9954b7884c25555c2a0ea9e7053f9d2", + "reference": "77880488b9954b7884c25555c2a0ea9e7053f9d2", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4|^5|^6|^7|^8|^9" + }, + "bin": [ + "bin/generate-defuse-key" + ], + "type": "library", + "autoload": { + "psr-4": { + "Defuse\\Crypto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "Secure PHP Encryption Library", + "keywords": [ + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "support": { + "issues": "https://github.com/defuse/php-encryption/issues", + "source": "https://github.com/defuse/php-encryption/tree/v2.3.1" + }, + "time": "2021-04-09T23:57:26+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:16:43+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, + { + "name": "dompdf/dompdf", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "5031045d9640b38cfc14aac9667470df09c9e090" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/5031045d9640b38cfc14aac9667470df09c9e090", + "reference": "5031045d9640b38cfc14aac9667470df09c9e090", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "phenx/php-font-lib": "^0.5.4", + "phenx/php-svg-lib": "^0.3.3 || ^0.4.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + }, + { + "name": "Brian Sweeney", + "email": "eclecticgeek@gmail.com" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v1.2.2" + }, + "time": "2022-04-27T13:50:54+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2022-01-18T15:43:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.25", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" + }, + "require-dev": { + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, + { + "name": "fideloper/proxy", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", + "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "support": { + "issues": "https://github.com/fideloper/TrustedProxy/issues", + "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2" + }, + "time": "2022-02-09T13:33:34+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8", + "shasum": "" + }, + "require": { + "php": "^7.1||^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.5||^7.4", + "phpspec/prophecy-phpunit": "^1.1", + "phpunit/phpunit": "^7.5||^9.5", + "psr/cache": "^1.0||^2.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.3.0" + }, + "time": "2022-07-15T16:48:45+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-23T14:25:13+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.28 || ^9.5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2022-07-30T15:56:11+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.4.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.4-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2022-06-20T22:16:13+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.9.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.9.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2022-06-20T21:43:03+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "intervention/imagecache", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/imagecache.git", + "reference": "270d1e72ddff2fc0a6d3c7e6cbc9d23c9ec1e3e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/imagecache/zipball/270d1e72ddff2fc0a6d3c7e6cbc9d23c9ec1e3e4", + "reference": "270d1e72ddff2fc0a6d3c7e6cbc9d23c9ec1e3e4", + "shasum": "" + }, + "require": { + "illuminate/cache": "^5.5|~6|~7|~8|~9", + "illuminate/filesystem": "^5.5|~6|~7|~8|~9", + "intervention/image": "~2.2", + "nesbot/carbon": "^2.39", + "opis/closure": "^3.5", + "php": "~7.2|~8" + }, + "require-dev": { + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "http://intervention.io/" + } + ], + "description": "Caching extension for the Intervention Image Class", + "homepage": "https://image.intervention.io", + "keywords": [ + "cache", + "gd", + "image", + "imagick", + "laravel" + ], + "support": { + "issues": "https://github.com/Intervention/imagecache/issues", + "source": "https://github.com/Intervention/imagecache/tree/2.5.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-01-22T11:14:47+00:00" + }, + { + "name": "laminas/laminas-escaper", + "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "conflict": { + "zendframework/zend-escaper": "*" + }, + "require-dev": { + "infection/infection": "^0.26.6", + "laminas/laminas-coding-standard": "~2.4.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.22.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "homepage": "https://laminas.dev", + "keywords": [ + "escaper", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-10-10T10:11:09+00:00" + }, + { + "name": "laravel/framework", + "version": "v8.83.23", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/bdc707f8b9bcad289b24cd182d98ec7480ac4491", + "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0.2", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^1.3|^2.0.2", + "league/flysystem": "^1.1", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "opis/closure": "^3.6", + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/log": "^1.0|^2.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^4.2.2", + "swiftmailer/swiftmailer": "^6.3", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "filp/whoops": "^2.14.3", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^6.27", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.5.19|^9.5.8", + "predis/predis": "^1.1.9", + "symfony/cache": "^5.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-07-26T13:30:00+00:00" + }, + { + "name": "laravel/passport", + "version": "v10.4.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/passport.git", + "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/passport/zipball/b62b418a6d9e9aca231a587be0fc14dc55cd8d77", + "reference": "b62b418a6d9e9aca231a587be0fc14dc55cd8d77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "firebase/php-jwt": "^6.0", + "illuminate/auth": "^8.37|^9.0", + "illuminate/console": "^8.37|^9.0", + "illuminate/container": "^8.37|^9.0", + "illuminate/contracts": "^8.37|^9.0", + "illuminate/cookie": "^8.37|^9.0", + "illuminate/database": "^8.37|^9.0", + "illuminate/encryption": "^8.37|^9.0", + "illuminate/http": "^8.37|^9.0", + "illuminate/support": "^8.37|^9.0", + "lcobucci/jwt": "^3.4|^4.0", + "league/oauth2-server": "^8.2", + "nyholm/psr7": "^1.3", + "php": "^7.3|^8.0", + "phpseclib/phpseclib": "^2.0|^3.0", + "symfony/psr-http-message-bridge": "^2.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^6.0|^7.0", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Passport\\PassportServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Passport\\": "src/", + "Laravel\\Passport\\Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Passport provides OAuth2 server support to Laravel.", + "keywords": [ + "laravel", + "oauth", + "passport" + ], + "support": { + "issues": "https://github.com/laravel/passport/issues", + "source": "https://github.com/laravel/passport" + }, + "time": "2022-04-16T13:38:08+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.18", + "phpstan/phpstan": "^0.12.98", + "symfony/var-dumper": "^5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2022-05-16T17:09:47+00:00" + }, + { + "name": "laravel/socialite", + "version": "v5.5.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "9dfc76b31ee041c45a7cae86f23339784abde46d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/9dfc76b31ee041c45a7cae86f23339784abde46d", + "reference": "9dfc76b31ee041c45a7cae86f23339784abde46d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "league/oauth1-client": "^1.10.1", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ], + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + } + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2022-07-18T13:51:19+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.7.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "dff39b661e827dae6e092412f976658df82dbac5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", + "reference": "dff39b661e827dae6e092412f976658df82dbac5", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.7.2" + }, + "time": "2022-03-23T12:38:24+00:00" + }, + { + "name": "lcobucci/clock", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/clock.git", + "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/353d83fe2e6ae95745b16b3d911813df6a05bfb3", + "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.17", + "lcobucci/coding-standard": "^6.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-code-coverage": "9.1.4", + "phpunit/phpunit": "9.3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\Clock\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com" + } + ], + "description": "Yet another clock abstraction", + "support": { + "issues": "https://github.com/lcobucci/clock/issues", + "source": "https://github.com/lcobucci/clock/tree/2.0.x" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2020-08-27T18:56:02+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "4.1.5", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-sodium": "*", + "lcobucci/clock": "^2.0", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "infection/infection": "^0.21", + "lcobucci/coding-standard": "^6.0", + "mikey179/vfsstream": "^1.6.7", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/php-invoker": "^3.1", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Cobucci", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "support": { + "issues": "https://github.com/lcobucci/jwt/issues", + "source": "https://github.com/lcobucci/jwt/tree/4.1.5" + }, + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2021-09-28T19:34:56+00:00" + }, + { + "name": "league/commonmark", + "version": "2.3.5", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84d74485fdb7074f4f9dd6f02ab957b1de513257", + "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2022-07-29T10:59:45+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" + }, + { + "name": "league/event", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/event.git", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Event\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Event package", + "keywords": [ + "emitter", + "event", + "listener" + ], + "support": { + "issues": "https://github.com/thephpleague/event/issues", + "source": "https://github.com/thephpleague/event/tree/master" + }, + "time": "2018-11-26T11:52:41+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.9", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2021-12-09T09:40:50+00:00" + }, + { + "name": "league/fractal", + "version": "0.20.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/fractal.git", + "reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/fractal/zipball/8b9d39b67624db9195c06f9c1ffd0355151eaf62", + "reference": "8b9d39b67624db9195c06f9c1ffd0355151eaf62", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "doctrine/orm": "^2.5", + "illuminate/contracts": "~5.0", + "mockery/mockery": "^1.3", + "pagerfanta/pagerfanta": "~1.0.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "~3.4", + "vimeo/psalm": "^4.22", + "zendframework/zend-paginator": "~2.3" + }, + "suggest": { + "illuminate/pagination": "The Illuminate Pagination component.", + "pagerfanta/pagerfanta": "Pagerfanta Paginator", + "zendframework/zend-paginator": "Zend Framework Paginator" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.20.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Fractal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Sturgeon", + "email": "me@philsturgeon.uk", + "homepage": "http://philsturgeon.uk/", + "role": "Developer" + } + ], + "description": "Handle the output of complex data structures ready for API output.", + "homepage": "http://fractal.thephpleague.com/", + "keywords": [ + "api", + "json", + "league", + "rest" + ], + "support": { + "issues": "https://github.com/thephpleague/fractal/issues", + "source": "https://github.com/thephpleague/fractal/tree/0.20.1" + }, + "time": "2022-04-11T12:47:17+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-04-17T13:12:02+00:00" + }, + { + "name": "league/oauth1-client", + "version": "v1.10.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "d6365b901b5c287dd41f143033315e2f777e1167" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/d6365b901b5c287dd41f143033315e2f777e1167", + "reference": "d6365b901b5c287dd41f143033315e2f777e1167", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.10.1" + }, + "time": "2022-04-15T14:02:14+00:00" + }, + { + "name": "league/oauth2-server", + "version": "8.3.5", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth2-server.git", + "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/7aeb7c42b463b1a6fe4d084d3145e2fa22436876", + "reference": "7aeb7c42b463b1a6fe4d084d3145e2fa22436876", + "shasum": "" + }, + "require": { + "defuse/php-encryption": "^2.2.1", + "ext-json": "*", + "ext-openssl": "*", + "lcobucci/jwt": "^3.4.6 || ^4.0.4", + "league/event": "^2.2", + "league/uri": "^6.4", + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.0.1" + }, + "replace": { + "league/oauth2server": "*", + "lncd/oauth2": "*" + }, + "require-dev": { + "laminas/laminas-diactoros": "^2.4.1", + "phpstan/phpstan": "^0.12.57", + "phpstan/phpstan-phpunit": "^0.12.16", + "phpunit/phpunit": "^8.5.13", + "roave/security-advisories": "dev-master" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\OAuth2\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Bilbie", + "email": "hello@alexbilbie.com", + "homepage": "http://www.alexbilbie.com", + "role": "Developer" + }, + { + "name": "Andy Millington", + "email": "andrew@noexceptions.io", + "homepage": "https://www.noexceptions.io", + "role": "Developer" + } + ], + "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", + "homepage": "https://oauth2.thephpleague.com/", + "keywords": [ + "Authentication", + "api", + "auth", + "authorisation", + "authorization", + "oauth", + "oauth 2", + "oauth 2.0", + "oauth2", + "protect", + "resource", + "secure", + "server" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth2-server/issues", + "source": "https://github.com/thephpleague/oauth2-server/tree/8.3.5" + }, + "funding": [ + { + "url": "https://github.com/sephster", + "type": "github" + } + ], + "time": "2022-05-03T21:21:28+00:00" + }, + { + "name": "league/uri", + "version": "6.7.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", + "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/uri-interfaces": "^2.3", + "php": "^7.4 || ^8.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v3.3.2", + "nyholm/psr7": "^1.5", + "php-http/psr7-integration-tests": "^1.1", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpunit/phpunit": "^9.5.10", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-fileinfo": "Needed to create Data URI from a filepath", + "ext-intl": "Needed to improve host validation", + "league/uri-components": "Needed to easily manipulate URI objects", + "psr/http-factory": "Needed to use the URI factory" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri/issues", + "source": "https://github.com/thephpleague/uri/tree/6.7.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2022-06-29T09:48:18+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.19", + "phpstan/phpstan-strict-rules": "^0.12.9", + "phpunit/phpunit": "^8.5.15 || ^9.5" + }, + "suggest": { + "ext-intl": "to use the IDNA feature", + "symfony/intl": "to use the IDNA feature via Symfony Polyfill" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interface for URI representation", + "homepage": "http://github.com/thephpleague/uri-interfaces", + "keywords": [ + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-interfaces/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-06-28T04:27:21+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.40", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "8a54972e3d616c74687c3cbff15765555761885c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/8a54972e3d616c74687c3cbff15765555761885c", + "reference": "8a54972e3d616c74687c3cbff15765555761885c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/support": "5.8.*|^6.0|^7.0|^8.0|^9.0", + "php": "^7.0|^8.0", + "phpoffice/phpspreadsheet": "^1.18" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ], + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + } + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.40" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2022-05-02T13:50:01+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "211e9ba1530ea5260b45d90c9ea252f56ec52729" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/211e9ba1530ea5260b45d90c9ea252f56ec52729", + "reference": "211e9ba1530ea5260b45d90c9ea252f56ec52729", + "shasum": "" + }, + "require": { + "myclabs/php-enum": "^1.5", + "php": "^7.4 || ^8.0", + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.4", + "phpunit/phpunit": "^8.5.8 || ^9.4.2", + "vimeo/psalm": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.1" + }, + "funding": [ + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2022-05-18T15:52:06+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1" + }, + "time": "2021-06-29T15:32:53+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0" + }, + "time": "2021-07-01T19:01:15+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", + "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2022-07-24T11:55:47+00:00" + }, + { + "name": "movemoveapp/laravel-dadata", + "version": "1.0.10", + "source": { + "type": "git", + "url": "https://github.com/movemoveapp/laravel-dadata.git", + "reference": "090e5d9d6561d75fe605a183e3801df77b8b83eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/movemoveapp/laravel-dadata/zipball/090e5d9d6561d75fe605a183e3801df77b8b83eb", + "reference": "090e5d9d6561d75fe605a183e3801df77b8b83eb", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^7.0|^7.2", + "php": "^7.3|^8.0|^8.1" + }, + "require-dev": { + "orchestra/testbench": "^6.2.0", + "phpunit/phpunit": "^9.4.0" + }, + "type": "laravel-package", + "extra": { + "laravel": { + "providers": [ + "MoveMoveIo\\DaData\\DaDataServiceProvider" + ], + "aliases": { + "DaDataAddress": "MoveMoveIo\\DaData\\Facades\\DaDataAddress", + "DaDataName": "MoveMoveIo\\DaData\\Facades\\DaDataName", + "DaDataEmail": "MoveMoveIo\\DaData\\Facades\\DaDataEmail", + "DaDataPhone": "MoveMoveIo\\DaData\\Facades\\DaDataPhone", + "DaDataCompany": "MoveMoveIo\\DaData\\Facades\\DaDataCompany", + "DaDataBank": "MoveMoveIo\\DaData\\Facades\\DaDataBank", + "DaDataPassport": "MoveMoveIo\\DaData\\Facades\\DaDataPassport" + } + } + }, + "autoload": { + "psr-4": { + "MoveMoveIo\\DaData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dmitry Kovalev aka Pipisco", + "email": "d.kovalev@movemove.io", + "homepage": "https://movemove.io", + "role": "Developer" + } + ], + "description": "Laravel SDK for working with the DaData.RU service API", + "keywords": [ + "Bank", + "DaData", + "address", + "email", + "laravel", + "movemoveapp", + "name", + "passport", + "patronymic", + "pipisco", + "sdk", + "surname" + ], + "support": { + "issues": "https://github.com/movemoveapp/laravel-dadata/issues", + "source": "https://github.com/movemoveapp/laravel-dadata/tree/v1.0.10" + }, + "time": "2022-04-26T13:20:20+00:00" + }, + { + "name": "myclabs/php-enum", + "version": "1.8.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + }, + "classmap": [ + "stubs/Stringable.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.4" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], + "time": "2022-08-04T09:53:51+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.61.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2022-08-06T12:41:24+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.2" + }, + "time": "2021-10-15T11:40:02+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "shasum": "" + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.7" + }, + "time": "2022-01-24T11:29:14+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + }, + "time": "2022-05-31T20:59:12+00:00" + }, + { + "name": "nyholm/psr7", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/Nyholm/psr7.git", + "reference": "f734364e38a876a23be4d906a2a089e1315be18a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a", + "reference": "f734364e38a876a23be4d906a2a089e1315be18a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "php-http/message-factory": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || 8.5 || 9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2022-06-22T07:13:36+00:00" + }, + { + "name": "opis/closure", + "version": "3.6.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "paquettg/string-encode", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/paquettg/string-encoder.git", + "reference": "a8708e9fac9d5ddfc8fc2aac6004e2cd05d80fee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paquettg/string-encoder/zipball/a8708e9fac9d5ddfc8fc2aac6004e2cd05d80fee", + "reference": "a8708e9fac9d5ddfc8fc2aac6004e2cd05d80fee", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5.1" + }, + "type": "library", + "autoload": { + "psr-0": { + "stringEncode": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gilles Paquette", + "email": "paquettg@gmail.com", + "homepage": "http://gillespaquette.ca" + } + ], + "description": "Facilitating the process of altering string encoding in PHP.", + "homepage": "https://github.com/paquettg/string-encoder", + "keywords": [ + "charset", + "encoding", + "string" + ], + "support": { + "issues": "https://github.com/paquettg/string-encoder/issues", + "source": "https://github.com/paquettg/string-encoder/tree/1.0.1" + }, + "time": "2018-12-21T02:25:09+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "58c3f47f650c94ec05a151692652a868995d2938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "shasum": "" + }, + "require": { + "php": "^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2022-06-14T06:56:20+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.5.4", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "shasum": "" + }, + "require": { + "ext-mbstring": "*" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3 || ^4 || ^5" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + }, + "time": "2021-12-17T19:44:54+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/4498b5df7b08e8469f0f8279651ea5de9626ed02", + "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^7.2 || ^7.3 || ^7.4 || ^8.0", + "sabberworm/php-css-parser": "^8.4" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.4.1" + }, + "time": "2022-03-07T12:52:04+00:00" + }, + { + "name": "php-http/httplug", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "f640739f80dfa1152533976e3c112477f69274eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/f640739f80dfa1152533976e3c112477f69274eb", + "reference": "f640739f80dfa1152533976e3c112477f69274eb", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1", + "phpspec/phpspec": "^5.1 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.3.0" + }, + "time": "2022-02-21T09:52:22+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "php-http/promise", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", + "phpspec/phpspec": "^5.1.2 || ^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" + }, + "time": "2020-07-07T09:29:14+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.24.1", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "69991111e05fca3ff7398e1e7fca9ebed33efec6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/69991111e05fca3ff7398e1e7fca9ebed33efec6", + "reference": "69991111e05fca3ff7398e1e7fca9ebed33efec6", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.13", + "maennchen/zipstream-php": "^2.1", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.3 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0 || ^2.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "dompdf/dompdf": "^1.0 || ^2.0", + "friendsofphp/php-cs-fixer": "^3.2", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.4" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.24.1" + }, + "time": "2022-07-18T19:50:48+00:00" + }, + { + "name": "phpoffice/phpword", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PHPWord.git", + "reference": "8521612b39edeec9055d3688ad555342a40857dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/8521612b39edeec9055d3688ad555342a40857dd", + "reference": "8521612b39edeec9055d3688ad555342a40857dd", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-xml": "*", + "laminas/laminas-escaper": ">=2.6", + "php": "^7.1|^8.0" + }, + "require-dev": { + "dompdf/dompdf": "^2.0", + "ext-gd": "*", + "ext-libxml": "*", + "ext-zip": "*", + "mpdf/mpdf": "^8.1", + "php-coveralls/php-coveralls": "^2.5", + "phpmd/phpmd": "^2.13", + "phpunit/phpunit": ">=7.0", + "symfony/process": "^4.4", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Allows writing PDF", + "ext-gd2": "Allows adding images", + "ext-xmlwriter": "Allows writing OOXML and ODF", + "ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template", + "ext-zip": "Allows writing OOXML and ODF" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.19-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOffice\\PhpWord\\": "src/PhpWord" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Mark Baker" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com", + "homepage": "http://gabrielbull.com/" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net/blog/" + }, + { + "name": "Ivan Lanin", + "homepage": "http://ivan.lanin.org" + }, + { + "name": "Roman Syroeshko", + "homepage": "http://ru.linkedin.com/pub/roman-syroeshko/34/a53/994/" + }, + { + "name": "Antoine de Troostembergh" + } + ], + "description": "PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)", + "homepage": "https://phpword.readthedocs.io/", + "keywords": [ + "ISO IEC 29500", + "OOXML", + "Office Open XML", + "OpenDocument", + "OpenXML", + "PhpOffice", + "PhpWord", + "Rich Text Format", + "WordprocessingML", + "doc", + "docx", + "html", + "odf", + "odt", + "office", + "pdf", + "php", + "reader", + "rtf", + "template", + "template processor", + "word", + "writer" + ], + "support": { + "issues": "https://github.com/PHPOffice/PHPWord/issues", + "source": "https://github.com/PHPOffice/PHPWord/tree/1.0.0" + }, + "time": "2022-11-15T20:24:50+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2022-07-30T15:51:26+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "3.0.14", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/2f0b7af658cbea265cbb4a791d6c29a6613f98ef", + "reference": "2f0b7af658cbea265cbb4a791d6c29a6613f98ef", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "^1|^2", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" + }, + "require-dev": { + "phpunit/phpunit": "*" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "support": { + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.14" + }, + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2022-04-04T05:15:45+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.8", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", + "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" + }, + "time": "2022-07-28T14:25:11+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-10-10T03:01:02+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "" + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "8.4.0", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=5.6.20" + }, + "require-dev": { + "codacy/coverage": "^1.4", + "phpunit/phpunit": "^4.8.36" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "autoload": { + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + }, + "time": "2021-12-11T13:40:54+00:00" + }, + { + "name": "seyyedam7/laravel-html-parser", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/seyyedam7/laravel-html-parser.git", + "reference": "4e01a438ad5961cc2d7427eb9798d213c8a12629" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/seyyedam7/laravel-html-parser/zipball/4e01a438ad5961cc2d7427eb9798d213c8a12629", + "reference": "4e01a438ad5961cc2d7427eb9798d213c8a12629", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-mbstring": "*", + "ext-zlib": "*", + "guzzlehttp/guzzle": "^7.0", + "guzzlehttp/psr7": "^1.6", + "myclabs/php-enum": "^1.7", + "paquettg/string-encode": "~1.0.0", + "php": ">=7.2", + "php-http/httplug": "^2.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16", + "infection/infection": "^0.13.4", + "mockery/mockery": "^1.2", + "phan/phan": "^2.4", + "phpunit/phpunit": "^7.5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPHtmlParser\\": "src/PHPHtmlParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gilles Paquette", + "email": "paquettg@gmail.com", + "homepage": "http://gillespaquette.ca" + } + ], + "description": "An HTML DOM parser. It allows you to manipulate HTML. Find tags on an HTML page with selectors just like jQuery.", + "homepage": "https://github.com/paquettg/php-html-parser", + "keywords": [ + "dom", + "html", + "parser" + ], + "support": { + "source": "https://github.com/seyyedam7/laravel-html-parser/tree/3.1.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/paquettg/php-html-parser", + "type": "tidelift" + } + ], + "time": "2020-11-01T20:34:43+00:00" + }, + { + "name": "spatie/fractalistic", + "version": "2.9.5", + "source": { + "type": "git", + "url": "https://github.com/spatie/fractalistic.git", + "reference": "6f12686a03d035f4558d166989c62aa93bde2151" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/fractalistic/zipball/6f12686a03d035f4558d166989c62aa93bde2151", + "reference": "6f12686a03d035f4558d166989c62aa93bde2151", + "shasum": "" + }, + "require": { + "league/fractal": "^0.20.1", + "php": "^7.4|^8.0" + }, + "require-dev": { + "illuminate/pagination": "~5.3.0|~5.4.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Fractalistic\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A developer friendly wrapper around Fractal", + "homepage": "https://github.com/spatie/fractalistic", + "keywords": [ + "api", + "fractal", + "fractalistic", + "spatie", + "transform" + ], + "support": { + "issues": "https://github.com/spatie/fractalistic/issues", + "source": "https://github.com/spatie/fractalistic/tree/2.9.5" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-04-21T12:26:22+00:00" + }, + { + "name": "spatie/laravel-fractal", + "version": "5.8.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-fractal.git", + "reference": "be3ccd54e26742cd05b3637fb732fd9addfa28df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-fractal/zipball/be3ccd54e26742cd05b3637fb732fd9addfa28df", + "reference": "be3ccd54e26742cd05b3637fb732fd9addfa28df", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^7.0|^8.0", + "illuminate/support": "^7.0|^8.0", + "php": "^7.2|^8.0", + "spatie/fractalistic": "^2.5" + }, + "require-dev": { + "ext-json": "*", + "orchestra/testbench": "^5.0|^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Fractal\\FractalServiceProvider" + ], + "aliases": { + "Fractal": "Spatie\\Fractal\\FractalFacade" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Fractal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "An easy to use Fractal integration for Laravel applications", + "homepage": "https://github.com/spatie/laravel-fractal", + "keywords": [ + "api", + "fractal", + "laravel", + "laravel-fractal", + "lumen", + "spatie", + "transform" + ], + "support": { + "issues": "https://github.com/spatie/laravel-fractal/issues", + "source": "https://github.com/spatie/laravel-fractal/tree/5.8.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2020-11-12T18:46:53+00:00" + }, + { + "name": "spatie/laravel-permission", + "version": "3.18.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "1c51a5fa12131565fe3860705163e53d7a26258a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/1c51a5fa12131565fe3860705163e53d7a26258a", + "reference": "1c51a5fa12131565fe3860705163e53d7a26258a", + "shasum": "" + }, + "require": { + "illuminate/auth": "^5.8|^6.0|^7.0|^8.0", + "illuminate/container": "^5.8|^6.0|^7.0|^8.0", + "illuminate/contracts": "^5.8|^6.0|^7.0|^8.0", + "illuminate/database": "^5.8|^6.0|^7.0|^8.0", + "php": "^7.2.5|^8.0" + }, + "require-dev": { + "orchestra/testbench": "^3.8|^4.0|^5.0|^6.0", + "phpunit/phpunit": "^8.0|^9.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 5.8 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/3.18.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2020-11-09T14:08:36+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, + { + "name": "symfony/console", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "535846c7ee6bc4dd027ca0d93220601456734b10" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10", + "reference": "535846c7ee6bc4dd027ca0d93220601456734b10", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-22T10:42:43+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "c1681789f059ab756001052164726ae88512ae3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", + "reference": "c1681789f059ab756001052164726ae88512ae3d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/f75d17cb4769eb38cd5fccbda95cd80a054d35c8", + "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-29T07:37:50+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-05T16:45:39+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-29T07:37:50+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4fd590a2ef3f62560dbbf6cea511995dd77321ee", + "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-29T12:30:22+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", + "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T11:34:24+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "143f1881e655bebca1312722af8068de235ae5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "433d05519ce6990bf3530fba6957499d327395c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-10T07:21:04+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-05T13:13:39+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226", + "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322", + "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-24T16:15:25+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", + "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "tomlerendu/laravel-convert-case-middleware", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/tomlerendu/laravel-convert-case-middleware.git", + "reference": "3ad83b01d102cd5c7d9fbcfd13b9ca844bcb3b47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tomlerendu/laravel-convert-case-middleware/zipball/3ad83b01d102cd5c7d9fbcfd13b9ca844bcb3b47", + "reference": "3ad83b01d102cd5c7d9fbcfd13b9ca844bcb3b47", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": "^5.2 || ^6.0 || ^7.0 || ^8.0", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "TomLerendu\\LaravelConvertCaseMiddleware\\": "src/", + "TomLerendu\\LaravelConvertCaseMiddleware\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tom Lerendu", + "email": "tom.lerendu@gmail.com" + } + ], + "description": "Convert request and response keys to and from camel and snake case.", + "support": { + "issues": "https://github.com/tomlerendu/laravel-convert-case-middleware/issues", + "source": "https://github.com/tomlerendu/laravel-convert-case-middleware/tree/1.1.2" + }, + "time": "2021-03-03T18:34:03+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-12-12T23:22:04+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v6.6.1", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "ae5803ce4558f855c7d955baa2d90b93ec40c4b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/ae5803ce4558f855c7d955baa2d90b93ec40c4b7", + "reference": "ae5803ce4558f855c7d955baa2d90b93ec40c4b7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "jean85/pretty-package-versions": "^2.0.5", + "php": "^7.3 || ^8.0", + "phpunit/php-code-coverage": "^9.2.15", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-timer": "^5.0.3", + "phpunit/phpunit": "^9.5.21", + "sebastian/environment": "^5.1.4", + "symfony/console": "^5.4.9 || ^6.1.2", + "symfony/process": "^5.4.8 || ^6.1.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.26.13", + "malukenho/mcbumpface": "^1.1.5", + "squizlabs/php_codesniffer": "^3.7.1", + "symfony/filesystem": "^5.4.9 || ^6.1.0", + "vimeo/psalm": "^4.24.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v6.6.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2022-07-22T14:07:17+00:00" + }, + { + "name": "composer/pcre", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.0.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T20:21:48+00:00" + }, + { + "name": "composer/semver", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" + }, + { + "name": "doctrine/annotations", + "version": "1.13.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0", + "psr/cache": "^1 || ^2 || ^3" + }, + "require-dev": { + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^6.0 || ^8.1", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.13.3" + }, + "time": "2022-07-02T10:48:51+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" + }, + { + "name": "eduarguz/shift-php-cs", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/eduarguz/shift-php-cs.git", + "reference": "b8ebbed006d58ca3babe6bafa97cc3cc625b2751" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/eduarguz/shift-php-cs/zipball/b8ebbed006d58ca3babe6bafa97cc3cc625b2751", + "reference": "b8ebbed006d58ca3babe6bafa97cc3cc625b2751", + "shasum": "" + }, + "require": { + "friendsofphp/php-cs-fixer": "^3.0", + "php": ">=7.0" + }, + "default-branch": true, + "type": "library", + "autoload": { + "files": [ + "./src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Guzmán Hernández", + "email": "eduarguzher@gmail.com", + "homepage": "https://eduarguz.github.io/eduardogh/" + } + ], + "description": "PHP CS Fixer - Laravel Coding Style Ruleset", + "homepage": "https://github.com/eduarguz/shift-php-cs", + "support": { + "issues": "https://github.com/eduarguz/shift-php-cs/issues", + "source": "https://github.com/eduarguz/shift-php-cs/tree/3.0.0" + }, + "time": "2021-12-07T13:51:51+00:00" + }, + { + "name": "facade/flare-client-php", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", + "php": "^7.1|^8.0", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "support": { + "issues": "https://github.com/facade/flare-client-php/issues", + "source": "https://github.com/facade/flare-client-php/tree/1.10.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-08-09T11:23:57+00:00" + }, + { + "name": "facade/ignition", + "version": "2.17.6", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/facade/ignition/issues", + "source": "https://github.com/facade/ignition" + }, + "time": "2022-06-30T18:26:59+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.20-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" + }, + "time": "2022-07-20T13:12:54+00:00" + }, + { + "name": "filp/whoops", + "version": "2.14.5", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.14.5" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2022-01-07T12:00:00+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.9.5", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "4465d70ba776806857a1ac2a6f877e582445ff36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/4465d70ba776806857a1ac2a6f877e582445ff36", + "reference": "4465d70ba776806857a1ac2a6f877e582445ff36", + "shasum": "" + }, + "require": { + "composer/semver": "^3.2", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "php-cs-fixer/diff": "^2.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" + }, + "require-dev": { + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^1.5", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.5", + "phpunitgoodpractices/traits": "^1.9.1", + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^5.4 || ^6.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "support": { + "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.9.5" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2022-07-22T08:43:51+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.5.0" + }, + "time": "2022-01-20T13:18:17+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v5.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "shasum": "" + }, + "require": { + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.14.3", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" + }, + "require-dev": { + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "8.x-dev", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-01-10T16:22:52+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "php-cs-fixer/diff", + "version": "v2.0.2", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "sebastian/diff v3 backport support for PHP 5.6+", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/diff/issues", + "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + }, + "time": "2020-10-14T08:32:19+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.21", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-06-19T12:14:25+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd", + "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v5.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-07-20T13:00:38+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v5.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-02-18T16:06:09+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "eduarguz/shift-php-cs": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=7.4", + "ext-json": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/composer.phar b/composer.phar new file mode 100644 index 0000000..9efd41a Binary files /dev/null and b/composer.phar differ diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..f82fbbe --- /dev/null +++ b/config/app.php @@ -0,0 +1,202 @@ + env('APP_NAME', 'Laravel'), + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + 'env' => env('APP_ENV', 'production'), + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + 'debug' => env('APP_DEBUG', false), + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + 'url' => env('APP_URL', 'http://localhost'), + 'asset_url' => env('ASSET_URL', null), + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + 'timezone' => 'Europe/Moscow', + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + 'locale' => 'ru', + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + 'fallback_locale' => 'en', + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + 'faker_locale' => 'ru_RU', + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + 'key' => env('APP_KEY'), + 'cipher' => 'AES-256-CBC', + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + 'providers' => [ + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + /* + * Package Service Providers... + */ + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + Barryvdh\DomPDF\ServiceProvider::class, + ], + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + 'aliases' => [ + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'AdvisorySession' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + 'PDF' => Barryvdh\DomPDF\Facade::class, + ], +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..da50119 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'api', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'api' => [ + 'driver' => 'passport', + 'provider' => 'users', + ], + + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => \App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..ec12e60 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,49 @@ + env('BROADCAST_DRIVER', 'null'), + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + 'connections' => [ + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'encrypted' => true, + ], + ], + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + 'log' => [ + 'driver' => 'log', + ], + 'null' => [ + 'driver' => 'null', + ], + ], +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..f2a5dc8 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,88 @@ + env('CACHE_DRIVER', 'file'), + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + 'stores' => [ + 'apc' => [ + 'driver' => 'apc', + ], + 'array' => [ + 'driver' => 'array', + ], + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + ], + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + ], + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), +]; diff --git a/config/dadata.php b/config/dadata.php new file mode 100644 index 0000000..561cec2 --- /dev/null +++ b/config/dadata.php @@ -0,0 +1,7 @@ + '8b17f392a13766638d511ee02531678d110726e8', + 'secret' => '', + 'timeout' => 10 +]; \ No newline at end of file diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..b0649b1 --- /dev/null +++ b/config/database.php @@ -0,0 +1,135 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + ], + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + 'migrations' => 'migrations', + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + 'redis' => [ + 'client' => env('REDIS_CLIENT', 'phpredis'), + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_').'_database_', + ], + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', 6379), + 'database' => env('REDIS_DB', 0), + ], + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', 6379), + 'database' => env('REDIS_CACHE_DB', 1), + ], + ], +]; diff --git a/config/dompdf.php b/config/dompdf.php new file mode 100644 index 0000000..192ef1c --- /dev/null +++ b/config/dompdf.php @@ -0,0 +1,244 @@ + false, // Throw an Exception on warnings from dompdf + 'orientation' => 'portrait', + 'defines' => array( + /** + * The location of the DOMPDF font directory + * + * The location of the directory where DOMPDF will store fonts and font metrics + * Note: This directory must exist and be writable by the webserver process. + * *Please note the trailing slash.* + * + * Notes regarding fonts: + * Additional .afm font metrics can be added by executing load_font.php from command line. + * + * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must + * be embedded in the pdf file or the PDF may not display correctly. This can significantly + * increase file size unless font subsetting is enabled. Before embedding a font please + * review your rights under the font license. + * + * Any font specification in the source HTML is translated to the closest font available + * in the font directory. + * + * The pdf standard "Base 14 fonts" are: + * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, + * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, + * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic, + * Symbol, ZapfDingbats. + */ + "font_dir" => storage_path('fonts/'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782) + + /** + * The location of the DOMPDF font cache directory + * + * This directory contains the cached font metrics for the fonts used by DOMPDF. + * This directory can be the same as DOMPDF_FONT_DIR + * + * Note: This directory must exist and be writable by the webserver process. + */ + "font_cache" => storage_path('fonts/'), + + /** + * The location of a temporary directory. + * + * The directory specified must be writeable by the webserver process. + * The temporary directory is required to download remote images and when + * using the PFDLib back end. + */ + "temp_dir" => sys_get_temp_dir(), + + /** + * ==== IMPORTANT ==== + * + * dompdf's "chroot": Prevents dompdf from accessing system files or other + * files on the webserver. All local files opened by dompdf must be in a + * subdirectory of this directory. DO NOT set it to '/' since this could + * allow an attacker to use dompdf to read any files on the server. This + * should be an absolute path. + * This is only checked on command line call by dompdf.php, but not by + * direct class use like: + * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); + */ + "chroot" => realpath(base_path()), + + /** + * Whether to enable font subsetting or not. + */ + "enable_font_subsetting" => false, + + /** + * The PDF rendering backend to use + * + * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and + * 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will + * fall back on CPDF. 'GD' renders PDFs to graphic files. {@link + * Canvas_Factory} ultimately determines which rendering class to instantiate + * based on this setting. + * + * Both PDFLib & CPDF rendering backends provide sufficient rendering + * capabilities for dompdf, however additional features (e.g. object, + * image and font support, etc.) differ between backends. Please see + * {@link PDFLib_Adapter} for more information on the PDFLib backend + * and {@link CPDF_Adapter} and lib/class.pdf.php for more information + * on CPDF. Also see the documentation for each backend at the links + * below. + * + * The GD rendering backend is a little different than PDFLib and + * CPDF. Several features of CPDF and PDFLib are not supported or do + * not make any sense when creating image files. For example, + * multiple pages are not supported, nor are PDF 'objects'. Have a + * look at {@link GD_Adapter} for more information. GD support is + * experimental, so use it at your own risk. + * + * @link http://www.pdflib.com + * @link http://www.ros.co.nz/pdf + * @link http://www.php.net/image + */ + "pdf_backend" => "CPDF", + + /** + * PDFlib license key + * + * If you are using a licensed, commercial version of PDFlib, specify + * your license key here. If you are using PDFlib-Lite or are evaluating + * the commercial version of PDFlib, comment out this setting. + * + * @link http://www.pdflib.com + * + * If pdflib present in web server and auto or selected explicitely above, + * a real license code must exist! + */ + //"DOMPDF_PDFLIB_LICENSE" => "your license key here", + + /** + * html target media view which should be rendered into pdf. + * List of types and parsing rules for future extensions: + * http://www.w3.org/TR/REC-html40/types.html + * screen, tty, tv, projection, handheld, print, braille, aural, all + * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3. + * Note, even though the generated pdf file is intended for print output, + * the desired content might be different (e.g. screen or projection view of html file). + * Therefore allow specification of content here. + */ + "default_media_type" => "screen", + + /** + * The default paper size. + * + * North America standard is "letter"; other countries generally "a4" + * + * @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.) + */ + "default_paper_size" => "a4", + + /** + * The default font family + * + * Used if no suitable fonts can be found. This must exist in the font folder. + * @var string + */ + "default_font" => "serif", + + /** + * Image DPI setting + * + * This setting determines the default DPI setting for images and fonts. The + * DPI may be overridden for inline images by explictly setting the + * image's width & height style attributes (i.e. if the image's native + * width is 600 pixels and you specify the image's width as 72 points, + * the image will have a DPI of 600 in the rendered PDF. The DPI of + * background images can not be overridden and is controlled entirely + * via this parameter. + * + * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI). + * If a size in html is given as px (or without unit as image size), + * this tells the corresponding size in pt. + * This adjusts the relative sizes to be similar to the rendering of the + * html page in a reference browser. + * + * In pdf, always 1 pt = 1/72 inch + * + * Rendering resolution of various browsers in px per inch: + * Windows Firefox and Internet Explorer: + * SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:? + * Linux Firefox: + * about:config *resolution: Default:96 + * (xorg screen dimension in mm and Desktop font dpi settings are ignored) + * + * Take care about extra font/image zoom factor of browser. + * + * In images, size in pixel attribute, img css style, are overriding + * the real image dimension in px for rendering. + * + * @var int + */ + "dpi" => 96, + + /** + * Enable inline PHP + * + * If this setting is set to true then DOMPDF will automatically evaluate + * inline PHP contained within tags. + * + * Enabling this for documents you do not trust (e.g. arbitrary remote html + * pages) is a security risk. Set this option to false if you wish to process + * untrusted documents. + * + * @var bool + */ + "enable_php" => false, + + /** + * Enable inline Javascript + * + * If this setting is set to true then DOMPDF will automatically insert + * JavaScript code contained within tags. + * + * @var bool + */ + "enable_javascript" => true, + + /** + * Enable remote file access + * + * If this setting is set to true, DOMPDF will access remote sites for + * images and CSS files as required. + * This is required for part of test case www/test/image_variants.html through www/examples.php + * + * Attention! + * This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and + * allowing remote access to dompdf.php or on allowing remote html code to be passed to + * $dompdf = new DOMPDF(, $dompdf->load_html(..., + * This allows anonymous users to download legally doubtful internet content which on + * tracing back appears to being downloaded by your server, or allows malicious php code + * in remote html pages to be executed by your server with your account privileges. + * + * @var bool + */ + "enable_remote" => false, + + /** + * A ratio applied to the fonts height to be more like browsers' line height + */ + "font_height_ratio" => 1, + + /** + * Use the more-than-experimental HTML5 Lib parser + */ + "enable_html5_parser" => false, + ), + + +); diff --git a/config/excel.php b/config/excel.php new file mode 100644 index 0000000..ac26b7d --- /dev/null +++ b/config/excel.php @@ -0,0 +1,328 @@ + [ + + /* + |-------------------------------------------------------------------------- + | Chunk size + |-------------------------------------------------------------------------- + | + | When using FromQuery, the query is automatically chunked. + | Here you can specify how big the chunk should be. + | + */ + 'chunk_size' => 1000, + + /* + |-------------------------------------------------------------------------- + | Pre-calculate formulas during export + |-------------------------------------------------------------------------- + */ + 'pre_calculate_formulas' => false, + + /* + |-------------------------------------------------------------------------- + | Enable strict null comparison + |-------------------------------------------------------------------------- + | + | When enabling strict null comparison empty cells ('') will + | be added to the sheet. + */ + 'strict_null_comparison' => false, + + /* + |-------------------------------------------------------------------------- + | CSV Settings + |-------------------------------------------------------------------------- + | + | Configure e.g. delimiter, enclosure and line ending for CSV exports. + | + */ + 'csv' => [ + 'delimiter' => ',', + 'enclosure' => '"', + 'line_ending' => PHP_EOL, + 'use_bom' => false, + 'include_separator_line' => false, + 'excel_compatibility' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Worksheet properties + |-------------------------------------------------------------------------- + | + | Configure e.g. default title, creator, subject,... + | + */ + 'properties' => [ + 'creator' => '', + 'lastModifiedBy' => '', + 'title' => '', + 'description' => '', + 'subject' => '', + 'keywords' => '', + 'category' => '', + 'manager' => '', + 'company' => '', + ], + ], + + 'imports' => [ + + /* + |-------------------------------------------------------------------------- + | Read Only + |-------------------------------------------------------------------------- + | + | When dealing with imports, you might only be interested in the + | data that the sheet exists. By default we ignore all styles, + | however if you want to do some logic based on style data + | you can enable it by setting read_only to false. + | + */ + 'read_only' => true, + + /* + |-------------------------------------------------------------------------- + | Ignore Empty + |-------------------------------------------------------------------------- + | + | When dealing with imports, you might be interested in ignoring + | rows that have null values or empty strings. By default rows + | containing empty strings or empty values are not ignored but can be + | ignored by enabling the setting ignore_empty to true. + | + */ + 'ignore_empty' => false, + + /* + |-------------------------------------------------------------------------- + | Heading Row Formatter + |-------------------------------------------------------------------------- + | + | Configure the heading row formatter. + | Available options: none|slug|custom + | + */ + 'heading_row' => [ + 'formatter' => 'slug', + ], + + /* + |-------------------------------------------------------------------------- + | CSV Settings + |-------------------------------------------------------------------------- + | + | Configure e.g. delimiter, enclosure and line ending for CSV imports. + | + */ + 'csv' => [ + 'delimiter' => ',', + 'enclosure' => '"', + 'escape_character' => '\\', + 'contiguous' => false, + 'input_encoding' => 'UTF-8', + ], + + /* + |-------------------------------------------------------------------------- + | Worksheet properties + |-------------------------------------------------------------------------- + | + | Configure e.g. default title, creator, subject,... + | + */ + 'properties' => [ + 'creator' => '', + 'lastModifiedBy' => '', + 'title' => '', + 'description' => '', + 'subject' => '', + 'keywords' => '', + 'category' => '', + 'manager' => '', + 'company' => '', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Extension detector + |-------------------------------------------------------------------------- + | + | Configure here which writer/reader type should be used when the package + | needs to guess the correct type based on the extension alone. + | + */ + 'extension_detector' => [ + 'xlsx' => Excel::XLSX, + 'xlsm' => Excel::XLSX, + 'xltx' => Excel::XLSX, + 'xltm' => Excel::XLSX, + 'xls' => Excel::XLS, + 'xlt' => Excel::XLS, + 'ods' => Excel::ODS, + 'ots' => Excel::ODS, + 'slk' => Excel::SLK, + 'xml' => Excel::XML, + 'gnumeric' => Excel::GNUMERIC, + 'htm' => Excel::HTML, + 'html' => Excel::HTML, + 'csv' => Excel::CSV, + 'tsv' => Excel::TSV, + + /* + |-------------------------------------------------------------------------- + | PDF Extension + |-------------------------------------------------------------------------- + | + | Configure here which Pdf driver should be used by default. + | Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF + | + */ + 'pdf' => Excel::DOMPDF, + ], + + /* + |-------------------------------------------------------------------------- + | StringValue Binder + |-------------------------------------------------------------------------- + | + | PhpSpreadsheet offers a way to hook into the process of a value being + | written to a cell. In there some assumptions are made on how the + | value should be formatted. If you want to change those defaults, + | you can implement your own default value binder. + | + | Possible value binders: + | + | [x] Maatwebsite\Excel\DefaultValueBinder::class + | [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class + | [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class + | + */ + 'value_binder' => [ + 'default' => Maatwebsite\Excel\DefaultValueBinder::class, + ], + + 'cache' => [ + /* + |-------------------------------------------------------------------------- + | Default cell caching driver + |-------------------------------------------------------------------------- + | + | By default PhpSpreadsheet keeps all cell values in memory, however when + | dealing with large files, this might result into memory issues. If you + | want to mitigate that, you can configure a cell caching driver here. + | When using the illuminate driver, it will store each value in a the + | cache store. This can slow down the process, because it needs to + | store each value. You can use the "batch" store if you want to + | only persist to the store when the memory limit is reached. + | + | Drivers: memory|illuminate|batch + | + */ + 'driver' => 'memory', + + /* + |-------------------------------------------------------------------------- + | Batch memory caching + |-------------------------------------------------------------------------- + | + | When dealing with the "batch" caching driver, it will only + | persist to the store when the memory limit is reached. + | Here you can tweak the memory limit to your liking. + | + */ + 'batch' => [ + 'memory_limit' => 60000, + ], + + /* + |-------------------------------------------------------------------------- + | Illuminate cache + |-------------------------------------------------------------------------- + | + | When using the "illuminate" caching driver, it will automatically use + | your default cache store. However if you prefer to have the cell + | cache on a separate store, you can configure the store name here. + | You can use any store defined in your cache config. When leaving + | at "null" it will use the default store. + | + */ + 'illuminate' => [ + 'store' => null, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Transaction Handler + |-------------------------------------------------------------------------- + | + | By default the import is wrapped in a transaction. This is useful + | for when an import may fail and you want to retry it. With the + | transactions, the previous import gets rolled-back. + | + | You can disable the transaction handler by setting this to null. + | Or you can choose a custom made transaction handler here. + | + | Supported handlers: null|db + | + */ + 'transactions' => [ + 'handler' => 'db', + ], + + 'temporary_files' => [ + + /* + |-------------------------------------------------------------------------- + | Local Temporary Path + |-------------------------------------------------------------------------- + | + | When exporting and importing files, we use a temporary file, before + | storing reading or downloading. Here you can customize that path. + | + */ + 'local_path' => storage_path('framework/laravel-excel'), + + /* + |-------------------------------------------------------------------------- + | Remote Temporary Disk + |-------------------------------------------------------------------------- + | + | When dealing with a multi server setup with queues in which you + | cannot rely on having a shared local temporary path, you might + | want to store the temporary file on a shared disk. During the + | queue executing, we'll retrieve the temporary file from that + | location instead. When left to null, it will always use + | the local path. This setting only has effect when using + | in conjunction with queued imports and exports. + | + */ + 'remote_disk' => null, + 'remote_prefix' => null, + + /* + |-------------------------------------------------------------------------- + | Force Resync + |-------------------------------------------------------------------------- + | + | When dealing with a multi server setup as above, it's possible + | for the clean up that occurs after entire queue has been run to only + | cleanup the server that the last AfterImportJob runs on. The rest of the server + | would still have the local temporary file stored on it. In this case your + | local storage limits can be exceeded and future imports won't be processed. + | To mitigate this you can set this config value to be true, so that after every + | queued chunk is processed the local temporary file is deleted on the server that + | processed it. + | + */ + 'force_resync_remote' => null, + ], +]; diff --git a/config/files.php b/config/files.php new file mode 100644 index 0000000..888e27c --- /dev/null +++ b/config/files.php @@ -0,0 +1,5 @@ + 200 * 1024 * 1024 +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..6558393 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,59 @@ + env('FILESYSTEM_DRIVER', 'local'), + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + 'disks' => [ + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + ], + ], + 'maxsize' => 10 * 1024 * 1024 +]; diff --git a/config/fractal.php b/config/fractal.php new file mode 100644 index 0000000..edc4337 --- /dev/null +++ b/config/fractal.php @@ -0,0 +1,42 @@ + '', + + /* The default paginator to be used when performing a transformation. It + * may be left empty to use Fractal's default one. This can either be a + * string or a League\Fractal\Paginator\PaginatorInterface subclass. + */ + 'default_paginator' => '', + + /* + * League\Fractal\Serializer\JsonApiSerializer will use this value + * as a prefix for generated links. Set to `null` to disable this. + */ + 'base_url' => null, + + /* + * If you wish to override or extend the default Spatie\Fractal\Fractal + * instance provide the name of the class you want to use. + */ + 'fractal_class' => Spatie\Fractal\Fractal::class, + + 'auto_includes' => [ + + /* + * If enabled Fractal will automatically add the includes who's + * names are present in the `include` request parameter. + */ + 'enabled' => true, + + /* + * The name of key in the request to where we should look for the includes to include. + */ + 'request_key' => 'include', + ], +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..00ed9e7 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,45 @@ + 'bcrypt', + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..0df8212 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,100 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['daily'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..a804de8 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,115 @@ + env('MAIL_DRIVER', 'smtp'), + /* + |-------------------------------------------------------------------------- + | SMTP Host Address + |-------------------------------------------------------------------------- + | + | Here you may provide the host address of the SMTP server used by your + | applications. A default option is provided that is compatible with + | the Mailgun mail service which will provide reliable deliveries. + | + */ + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + /* + |-------------------------------------------------------------------------- + | SMTP Host Port + |-------------------------------------------------------------------------- + | + | This is the SMTP port used by your application to deliver e-mails to + | users of the application. Like the host we have set this value to + | stay compatible with the Mailgun e-mail application by default. + | + */ + 'port' => env('MAIL_PORT', 587), + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'noreply@testnir.ru'), + 'name' => env('MAIL_FROM_NAME', 'ТК023'), + ], + /* + |-------------------------------------------------------------------------- + | E-Mail Encryption Protocol + |-------------------------------------------------------------------------- + | + | Here you may specify the encryption protocol that should be used when + | the application send e-mail messages. A sensible default using the + | transport layer security protocol should provide great security. + | + */ + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + /* + |-------------------------------------------------------------------------- + | SMTP Server Username + |-------------------------------------------------------------------------- + | + | If your SMTP server requires a username for authentication, you should + | set it here. This will get used to authenticate with your server on + | connection. You may also set the "password" value below this one. + | + */ + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + /* + |-------------------------------------------------------------------------- + | Sendmail System Path + |-------------------------------------------------------------------------- + | + | When using the "sendmail" driver to send e-mails, we will need to know + | the path to where Sendmail lives on this server. A default path has + | been provided here, which will work well on most of your systems. + | + */ + 'sendmail' => '/usr/sbin/sendmail -bs', + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + 'markdown' => [ + 'theme' => 'default', + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + /* + |-------------------------------------------------------------------------- + | Log Channel + |-------------------------------------------------------------------------- + | + | If you are using the "log" driver, you may specify the logging channel + | if you prefer to keep mail messages separate from other log entries + | for simpler reading. Otherwise, the default channel will be used. + | + */ + 'log_channel' => env('MAIL_LOG_CHANNEL'), +]; diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 0000000..a4c01db --- /dev/null +++ b/config/permission.php @@ -0,0 +1,89 @@ + [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => \App\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => \App\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + /* + * By default all permissions will be cached for 24 hours unless a permission or + * role is updated. Then the cache will be flushed immediately. + */ + + 'cache_expiration_time' => 60 * 24, + + /* + * By default we'll make an entry in the application log when the permissions + * could not be loaded. Normally this only occurs while installing the packages. + * + * If for some reason you want to disable that logging, set this value to false. + */ + + 'log_registration_exception' => env('APP_ENV') !== 'testing', +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..3a30d6c --- /dev/null +++ b/config/queue.php @@ -0,0 +1,88 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..f089b1f --- /dev/null +++ b/config/services.php @@ -0,0 +1,39 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'github' => [ + 'client_id' => env('GITHUB_CLIENT_ID'), + 'client_secret' => env('GITHUB_CLIENT_SECRET'), + 'redirect' => 'http://example.com/callback-url', + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..c2c39c6 --- /dev/null +++ b/config/session.php @@ -0,0 +1,169 @@ + env('SESSION_DRIVER', 'file'), + /* + |-------------------------------------------------------------------------- + | AdvisorySession Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + 'lifetime' => env('SESSION_LIFETIME', 120), + 'expire_on_close' => false, + /* + |-------------------------------------------------------------------------- + | AdvisorySession Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the AdvisorySession like normal. + | + */ + 'encrypt' => false, + /* + |-------------------------------------------------------------------------- + | AdvisorySession File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + 'files' => storage_path('framework/sessions'), + /* + |-------------------------------------------------------------------------- + | AdvisorySession Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + 'connection' => env('SESSION_CONNECTION', null), + /* + |-------------------------------------------------------------------------- + | AdvisorySession Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + 'table' => 'sessions', + /* + |-------------------------------------------------------------------------- + | AdvisorySession Cache Store + |-------------------------------------------------------------------------- + | + | When using the "apc", "memcached", or "dynamodb" session drivers you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + */ + 'store' => env('SESSION_STORE', null), + /* + |-------------------------------------------------------------------------- + | AdvisorySession Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + 'lottery' => [2, 100], + /* + |-------------------------------------------------------------------------- + | AdvisorySession Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + /* + |-------------------------------------------------------------------------- + | AdvisorySession Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + 'path' => '/', + /* + |-------------------------------------------------------------------------- + | AdvisorySession Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + 'domain' => env('SESSION_DOMAIN', null), + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + 'secure' => env('SESSION_SECURE_COOKIE', false), + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + 'http_only' => true, + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | do not enable this as other CSRF protection services are in place. + | + | Supported: "lax", "strict" + | + */ + 'same_site' => null, +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..fb757e9 --- /dev/null +++ b/config/view.php @@ -0,0 +1,31 @@ + [ + resource_path('views'), + ], + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b1dffd --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite diff --git a/database/factories/PermissionFactory.php b/database/factories/PermissionFactory.php new file mode 100644 index 0000000..77442b9 --- /dev/null +++ b/database/factories/PermissionFactory.php @@ -0,0 +1,29 @@ + $this->faker->name, + 'uuid' => $this->faker->uuid, + ]; + } +} diff --git a/database/factories/RoleFactory.php b/database/factories/RoleFactory.php new file mode 100644 index 0000000..8599055 --- /dev/null +++ b/database/factories/RoleFactory.php @@ -0,0 +1,29 @@ + $this->faker->name, + 'uuid' => $this->faker->uuid, + ]; + } +} diff --git a/database/factories/SocialProviderFactory.php b/database/factories/SocialProviderFactory.php new file mode 100644 index 0000000..9da7312 --- /dev/null +++ b/database/factories/SocialProviderFactory.php @@ -0,0 +1,31 @@ + User::factory()->create()->id, + 'provider' => 'github', + 'provider_id' => $this->faker->randomNumber(), + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..bc2caee --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,35 @@ + $this->faker->name, + 'uuid' => $this->faker->uuid, + 'email' => $this->faker->unique()->safeEmail, + 'email_verified_at' => now(), + 'password' => Hash::make('Qwerty1!'), // password + 'remember_token' => Str::random(10), + ]; + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..daca866 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,43 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->string('name')->nullable(); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + $table->string('middle_name')->nullable(); + $table->integer('asset_id')->nullable(); + $table->string('phone')->nullable(); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..c8b9ab5 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token')->index(); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +} diff --git a/database/migrations/2017_02_09_031936_create_permission_tables.php b/database/migrations/2017_02_09_031936_create_permission_tables.php new file mode 100644 index 0000000..99af3f7 --- /dev/null +++ b/database/migrations/2017_02_09_031936_create_permission_tables.php @@ -0,0 +1,91 @@ +bigIncrements('id'); + $table->string('name'); + $table->string('guard_name'); + $table->char('uuid', 36)->index()->unique(); + $table->timestamps(); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) { + $table->bigIncrements('id'); + $table->string('name'); + $table->string('guard_name'); + $table->char('uuid', 36)->index()->unique(); + $table->timestamps(); + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $foreignKeys) { + $table->bigInteger('permission_id')->unsigned(); + $table->morphs('model'); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'model_id', 'model_type']); + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $foreignKeys) { + $table->bigInteger('role_id')->unsigned(); + $table->morphs('model'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['role_id', 'model_id', 'model_type']); + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->bigInteger('permission_id')->unsigned(); + $table->bigInteger('role_id')->unsigned(); + + $table->foreign('permission_id') + ->references('id') + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign('role_id') + ->references('id') + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary(['permission_id', 'role_id']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $tableNames = config('permission.table_names'); + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +} diff --git a/database/migrations/2017_08_08_193843_create_assets_table.php b/database/migrations/2017_08_08_193843_create_assets_table.php new file mode 100644 index 0000000..9b14ed9 --- /dev/null +++ b/database/migrations/2017_08_08_193843_create_assets_table.php @@ -0,0 +1,44 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->bigInteger('user_id')->unsigned()->index()->nullable(); + $table->string('name')->index()->nullable(); + $table->string('type', 45)->index()->nullable(); + $table->string('path', 100)->nullable(); + $table->string('mime')->nullable(); + $table->string('filename')->index()->nullable(); + $table->string('extension', 10)->index()->nullable(); + $table->decimal('latitude', 8, 6)->nullable(); + $table->decimal('longitude', 9, 6)->nullable(); + $table->float('accuracy')->nullable(); + $table->timestamps(); + $table->softDeletes(); + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('assets'); + } +} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..389bdf7 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,35 @@ +bigIncrements('id'); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/database/migrations/2021_01_10_023024_create_social_providers_table.php b/database/migrations/2021_01_10_023024_create_social_providers_table.php new file mode 100644 index 0000000..d21ce76 --- /dev/null +++ b/database/migrations/2021_01_10_023024_create_social_providers_table.php @@ -0,0 +1,34 @@ +id(); + $table->foreignId('user_id')->constrained()->onDelete('cascade'); + $table->string('provider')->index(); + $table->string('provider_id')->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('social_providers'); + } +} diff --git a/database/migrations/2022_07_01_191111_create_jobs_table.php b/database/migrations/2022_07_01_191111_create_jobs_table.php new file mode 100644 index 0000000..1be9e8a --- /dev/null +++ b/database/migrations/2022_07_01_191111_create_jobs_table.php @@ -0,0 +1,36 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('jobs'); + } +} diff --git a/database/migrations/2022_07_09_142254_create_objects_table.php b/database/migrations/2022_07_09_142254_create_objects_table.php new file mode 100644 index 0000000..b7e8c0a --- /dev/null +++ b/database/migrations/2022_07_09_142254_create_objects_table.php @@ -0,0 +1,36 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->integer('type_id')->index()->nullable(); + $table->integer('owner_id')->index()->nullable(); + $table->string('name')->index()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('objects'); + } +} diff --git a/database/migrations/2022_07_09_162004_create_object_types_table.php b/database/migrations/2022_07_09_162004_create_object_types_table.php new file mode 100644 index 0000000..584f459 --- /dev/null +++ b/database/migrations/2022_07_09_162004_create_object_types_table.php @@ -0,0 +1,36 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->integer('parent_id')->index()->default(0); + $table->string('name')->index()->nullable(); + $table->string('title')->index()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('object_types'); + } +} diff --git a/database/migrations/2022_07_09_162215_create_fields_groups_table.php b/database/migrations/2022_07_09_162215_create_fields_groups_table.php new file mode 100644 index 0000000..9990c37 --- /dev/null +++ b/database/migrations/2022_07_09_162215_create_fields_groups_table.php @@ -0,0 +1,39 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->integer('object_type_id')->nullable()->index(); + $table->string('name')->index()->nullable(); + $table->string('title')->index()->nullable(); + $table->boolean('hidden')->index()->default(0); + $table->json('params')->nullable(); + $table->integer('ord')->index()->default(0); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('fields_groups'); + } +} diff --git a/database/migrations/2022_07_09_163012_create_fields_table.php b/database/migrations/2022_07_09_163012_create_fields_table.php new file mode 100644 index 0000000..9401a46 --- /dev/null +++ b/database/migrations/2022_07_09_163012_create_fields_table.php @@ -0,0 +1,41 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->string('type')->index()->nullable(); + $table->string('name')->index()->nullable(); + $table->string('title')->index()->nullable(); + $table->boolean('required')->index()->default(0); + $table->boolean('multiple')->index()->default(0); + $table->boolean('filterable')->index()->default(0); + $table->boolean('hidden')->index()->default(0); + $table->json('params')->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('fields'); + } +} diff --git a/database/migrations/2022_07_09_164823_create_field_string_values_table.php b/database/migrations/2022_07_09_164823_create_field_string_values_table.php new file mode 100644 index 0000000..0b3a7eb --- /dev/null +++ b/database/migrations/2022_07_09_164823_create_field_string_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->string('value', 500)->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_string_values'); + } +} diff --git a/database/migrations/2022_07_09_165026_create_field_integer_values_table.php b/database/migrations/2022_07_09_165026_create_field_integer_values_table.php new file mode 100644 index 0000000..da1a733 --- /dev/null +++ b/database/migrations/2022_07_09_165026_create_field_integer_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->integer('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_integer_values'); + } +} diff --git a/database/migrations/2022_07_09_165156_create_field_float_values_table.php b/database/migrations/2022_07_09_165156_create_field_float_values_table.php new file mode 100644 index 0000000..883a628 --- /dev/null +++ b/database/migrations/2022_07_09_165156_create_field_float_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->float('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_float_values'); + } +} diff --git a/database/migrations/2022_07_09_165708_create_field_text_values_table.php b/database/migrations/2022_07_09_165708_create_field_text_values_table.php new file mode 100644 index 0000000..c85130f --- /dev/null +++ b/database/migrations/2022_07_09_165708_create_field_text_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->text('value')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_text_values'); + } +} diff --git a/database/migrations/2022_07_09_165744_create_field_boolean_values_table.php b/database/migrations/2022_07_09_165744_create_field_boolean_values_table.php new file mode 100644 index 0000000..7f0fe31 --- /dev/null +++ b/database/migrations/2022_07_09_165744_create_field_boolean_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->boolean('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_boolean_values'); + } +} diff --git a/database/migrations/2022_07_09_170042_create_field_relation_values_table.php b/database/migrations/2022_07_09_170042_create_field_relation_values_table.php new file mode 100644 index 0000000..d956207 --- /dev/null +++ b/database/migrations/2022_07_09_170042_create_field_relation_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->nullableMorphs('relatable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_relation_values'); + } +} diff --git a/database/migrations/2022_07_11_145950_create_fields_group_fields_table.php b/database/migrations/2022_07_11_145950_create_fields_group_fields_table.php new file mode 100644 index 0000000..879a0ad --- /dev/null +++ b/database/migrations/2022_07_11_145950_create_fields_group_fields_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('group_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->integer('ord')->index()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('fields_group_fields'); + } +} diff --git a/database/migrations/2022_07_16_185218_create_field_date_values_table.php b/database/migrations/2022_07_16_185218_create_field_date_values_table.php new file mode 100644 index 0000000..9132f2f --- /dev/null +++ b/database/migrations/2022_07_16_185218_create_field_date_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->date('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_date_values'); + } +} diff --git a/database/migrations/2022_07_18_163715_create_field_datetime_values.php b/database/migrations/2022_07_18_163715_create_field_datetime_values.php new file mode 100644 index 0000000..474f9eb --- /dev/null +++ b/database/migrations/2022_07_18_163715_create_field_datetime_values.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->dateTime('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_datetime_values'); + } +} diff --git a/database/migrations/2022_09_05_210810_create_formables_table.php b/database/migrations/2022_09_05_210810_create_formables_table.php new file mode 100644 index 0000000..2bc726e --- /dev/null +++ b/database/migrations/2022_09_05_210810_create_formables_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_type_id')->index()->nullable(); + $table->nullableMorphs('formable'); + $table->integer('ord')->index()->default(0); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('formables'); + } +} diff --git a/database/migrations/2022_09_05_212157_create_objectables_table.php b/database/migrations/2022_09_05_212157_create_objectables_table.php new file mode 100644 index 0000000..12772d4 --- /dev/null +++ b/database/migrations/2022_09_05_212157_create_objectables_table.php @@ -0,0 +1,33 @@ +id(); + $table->integer('nir_object_id')->index()->nullable(); + $table->nullableMorphs('objectable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('objectables'); + } +} diff --git a/database/migrations/2022_09_09_141648_create_dictionaries_table.php b/database/migrations/2022_09_09_141648_create_dictionaries_table.php new file mode 100644 index 0000000..50c0b14 --- /dev/null +++ b/database/migrations/2022_09_09_141648_create_dictionaries_table.php @@ -0,0 +1,35 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->string('name')->index()->nullable(); + $table->string('title')->index()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('dictionaries'); + } +} diff --git a/database/migrations/2022_09_09_141724_create_dictionary_items_table.php b/database/migrations/2022_09_09_141724_create_dictionary_items_table.php new file mode 100644 index 0000000..9bac1dc --- /dev/null +++ b/database/migrations/2022_09_09_141724_create_dictionary_items_table.php @@ -0,0 +1,36 @@ +id(); + $table->char('uuid', 36)->index()->unique(); + $table->integer('dictionary_id')->index()->nullable(); + $table->string('name')->index()->nullable(); + $table->string('title')->index()->nullable(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('dictionary_items'); + } +} diff --git a/database/migrations/2022_10_20_165525_create_field_document_values_table.php b/database/migrations/2022_10_20_165525_create_field_document_values_table.php new file mode 100644 index 0000000..c6692e5 --- /dev/null +++ b/database/migrations/2022_10_20_165525_create_field_document_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->integer('asset_id')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_document_values'); + } +} diff --git a/database/migrations/2022_11_10_090659_create_notifications_table.php b/database/migrations/2022_11_10_090659_create_notifications_table.php new file mode 100644 index 0000000..9797596 --- /dev/null +++ b/database/migrations/2022_11_10_090659_create_notifications_table.php @@ -0,0 +1,35 @@ +uuid('id')->primary(); + $table->string('type'); + $table->morphs('notifiable'); + $table->text('data'); + $table->timestamp('read_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('notifications'); + } +} diff --git a/database/migrations/2022_11_21_092500_create_field_time_values_table.php b/database/migrations/2022_11_21_092500_create_field_time_values_table.php new file mode 100644 index 0000000..3a63407 --- /dev/null +++ b/database/migrations/2022_11_21_092500_create_field_time_values_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->date('value')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_time_values'); + } +} diff --git a/database/migrations/2022_11_22_204535_create_field_image_values.php b/database/migrations/2022_11_22_204535_create_field_image_values.php new file mode 100644 index 0000000..c50f3e4 --- /dev/null +++ b/database/migrations/2022_11_22_204535_create_field_image_values.php @@ -0,0 +1,34 @@ +id(); + $table->integer('object_id')->index()->nullable(); + $table->integer('field_id')->index()->nullable(); + $table->integer('asset_id')->index()->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('field_image_values'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..03c30f5 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,19 @@ +call(RoleTableSeeder::class); + $this->call(UsersTableSeeder::class); + $this->call(ObjectsTablesSeeder::class); + $this->call(DictionariesTablesSeeder::class); + } +} diff --git a/database/seeders/Dictionaries/DictionariesTableSeeder.php b/database/seeders/Dictionaries/DictionariesTableSeeder.php new file mode 100644 index 0000000..87d6863 --- /dev/null +++ b/database/seeders/Dictionaries/DictionariesTableSeeder.php @@ -0,0 +1,22 @@ +dictionaries)->each(function($data, $name) { + $dictionary = Dictionary::firstOrCreate(['name' => $name]); + $dictionary->update(collect($data)->except('items')->all()); + collect($data['items'] ?? [])->each(function($title, $name) use($dictionary) { + $item = $dictionary->items()->firstOrCreate(['name' => $name]); + $item->update(['title' => $title]); + }); + }); + } +} diff --git a/database/seeders/Dictionaries/DictionariesTablesSeeder.php b/database/seeders/Dictionaries/DictionariesTablesSeeder.php new file mode 100644 index 0000000..f807fbc --- /dev/null +++ b/database/seeders/Dictionaries/DictionariesTablesSeeder.php @@ -0,0 +1,11 @@ +call(DictionariesTableSeeder::class); + } +} diff --git a/database/seeders/Objects/FieldsTableSeeder.php b/database/seeders/Objects/FieldsTableSeeder.php new file mode 100644 index 0000000..080c8d1 --- /dev/null +++ b/database/seeders/Objects/FieldsTableSeeder.php @@ -0,0 +1,19 @@ +fields)->each(function($data, $name) { + $field = Field::firstOrCreate(['name' => $name]); + $field->update($data); + }); + } +} diff --git a/database/seeders/Objects/ObjectTypeFieldsTableSeeder.php b/database/seeders/Objects/ObjectTypeFieldsTableSeeder.php new file mode 100644 index 0000000..1c20b24 --- /dev/null +++ b/database/seeders/Objects/ObjectTypeFieldsTableSeeder.php @@ -0,0 +1,39 @@ +objectTypeFields)->each(function($data, $name) { + $objectType = ObjectType::query()->where(['name' => $name])->firstOrFail(); + $this->syncGroups($objectType, $data); + }); + } + + public function syncGroups(ObjectType $objectType, array $data) { + $ord = 0; + collect($data)->each(function($data, $name) use($objectType, &$ord) { + $group = $objectType->groups()->firstOrCreate(['name' => $name]); + $group->update(collect($data)->except('fields')->put('ord', $ord++)->all()); + $this->syncGroupFields($group, $data); + }); + $objectType->groups()->whereNotIn('name', array_keys($data))->delete(); + } + + public function syncGroupFields(FieldsGroup $group, array $data) { + $fields = []; + collect($data['fields'] ?? [])->map(function($name, $ord) use(&$fields) { + if ($field = Field::query()->where(['name' => $name])->first()) $fields[$field->id] = ['ord' => $ord]; + }); + $group->fields()->sync($fields); + } +} diff --git a/database/seeders/Objects/ObjectTypesTableSeeder.php b/database/seeders/Objects/ObjectTypesTableSeeder.php new file mode 100644 index 0000000..04b81b0 --- /dev/null +++ b/database/seeders/Objects/ObjectTypesTableSeeder.php @@ -0,0 +1,26 @@ +types)->each(function($data, $name) { + $this->createType($name, collect($data)); + }); + } + + public function createType($name, $data, $parent = false) { + $type = ObjectType::firstOrCreate(['name' => $name]); + $type->update($data->except('children')->put('parent_id', $parent->id ?? 0)->all()); + collect($data->get('children') ?? [])->each(function($data, $name) use($type) { + $this->createType($name, collect($data), $type); + }); + } +} diff --git a/database/seeders/Objects/ObjectsTableSeeder.php b/database/seeders/Objects/ObjectsTableSeeder.php new file mode 100644 index 0000000..75a0a42 --- /dev/null +++ b/database/seeders/Objects/ObjectsTableSeeder.php @@ -0,0 +1,19 @@ +objects)->each(function($data, $name) { + $objectType = ObjectType::query()->where(['name' => $data['type']])->firstOrFail(); + $object = $objectType->objects()->firstOrCreate(['name' => $name]); + $object->setValues($data['properties'] ?? []); + }); + } +} diff --git a/database/seeders/Objects/ObjectsTablesSeeder.php b/database/seeders/Objects/ObjectsTablesSeeder.php new file mode 100644 index 0000000..0080c93 --- /dev/null +++ b/database/seeders/Objects/ObjectsTablesSeeder.php @@ -0,0 +1,14 @@ +call(ObjectTypesTableSeeder::class); + $this->call(FieldsTableSeeder::class); + $this->call(ObjectTypeFieldsTableSeeder::class); + $this->call(ObjectsTableSeeder::class); + } +} diff --git a/database/seeders/Users/RoleTableSeeder.php b/database/seeders/Users/RoleTableSeeder.php new file mode 100644 index 0000000..8581a4b --- /dev/null +++ b/database/seeders/Users/RoleTableSeeder.php @@ -0,0 +1,94 @@ + 'Administrator'], + ['name' => 'User'], + ]; + + /** + * @var array|\Illuminate\Support\Collection + */ + public $permissions = [ + 'users' => [ + ['name' => 'List users'], + ['name' => 'Create users'], + ['name' => 'Delete users'], + ['name' => 'Update users'], + ], + 'roles' => [ + ['name' => 'List roles'], + ['name' => 'Create roles'], + ['name' => 'Delete roles'], + ['name' => 'Update roles'], + ], + 'permissions' => [ + ['name' => 'List permissions'], + ], + 'companies' => [ + ['name' => 'List companies'], + ['name' => 'Create companies'], + ['name' => 'Delete companies'], + ['name' => 'Update companies'], + ] + ]; + + /** + * Run the database seeders. + * + * @return void + */ + public function run() + { + $this->createRoles()->createPermissions()->assignAllPermissionsToAdminRole(); + } + + /** + * @return $this + */ + public function createRoles() + { + $this->roles = collect($this->roles)->map(function ($role) { + return Role::firstOrCreate($role); + }); + + return $this; + } + + /** + * @return $this + */ + public function createPermissions() + { + $this->permissions = collect($this->permissions)->map(function ($group) { + return collect($group)->map(function ($permission) { + return Permission::firstOrCreate($permission); + }); + }); + + return $this; + } + + /** + * @return $this + */ + public function assignAllPermissionsToAdminRole() + { + $role = Role::where('name', 'Administrator')->firstOrFail(); + $this->permissions->flatten()->each(function ($permission) use ($role) { + $role->givePermissionTo($permission); + }); + + return $this; + } +} diff --git a/database/seeders/Users/UsersTableSeeder.php b/database/seeders/Users/UsersTableSeeder.php new file mode 100644 index 0000000..141a6d5 --- /dev/null +++ b/database/seeders/Users/UsersTableSeeder.php @@ -0,0 +1,40 @@ + 'shyctpuk@mail.ru', 'name' => 'Константин Митрофанов'], + ['email' => 'n.astashkevich@gmail.com', 'name' => 'Николай Асташкевич'], + ['email' => 'sergey@bodin.ru', 'name' => 'Сергей Бодин'], + ['email' => 'test@test.ru', 'name' => 'Иван Иванов'] + ]; + + + /** + * Run the database seeders. + * + * @return void + */ + public function run() { + $this->createUsers($this->users); + $this->createUsers($this->admins, 'Administrator'); + } + + public function createUsers($users, $role = 'User') { + collect($users)->each(function($data) use($role) { + if ($email = $data['email'] ?? null) { + if ($user = User::where(['email' => $email])->first()) $user->update($data); + else $user = User::factory()->create($data); + $user->assignRole($role); + } + }); + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..47c272a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3' +services: + app: + image: joselfonsecadt/nginx-php7.4-dev:latest + working_dir: /var/www/html + volumes: + - ./:/var/www/html + ports: + - 80:80 + networks: + - api + scheduler: + image: joselfonsecadt/nginx-php7.4-dev:latest + command: ./var/www/html/bin/run-scheduler.sh + volumes: + - ./:/var/www/html + networks: + - api + mysql: + image: mysql:8.0 + environment: + MYSQL_ROOT_PASSWORD: secret + MYSQL_DATABASE: api + volumes: + - ./docker/mysql/data/:/var/lib/mysql + ports: + - 3306:3306 + networks: + - api +networks: + api: + driver: bridge diff --git a/docs/api/apiblueprint.apib b/docs/api/apiblueprint.apib new file mode 100644 index 0000000..c5b0b5b --- /dev/null +++ b/docs/api/apiblueprint.apib @@ -0,0 +1,892 @@ +FORMAT: 1A +HOST: https://example.com + +# Laravel API +Welcome to the Starter Kit API, here you will find all the information related to the endpoints available. + +## Authentication + +The API uses [oAuth2](https://oauth.net/2/) for authentication, this means that all API calls should contain and authorization that looks like this + +``` +Authorization: Bearer API_KEY_HERE +``` + +Please see the Authentication documentation to know how to get an access token. + +## Headers + +Make sure you have the following content type headers are set on every request: + +```http +Accept: application/json +Content-Type: application/json +``` + +## Errors + +The API uses conventional HTTP response codes to indicate the success or failure of an API request. The table below contains a summary of the typical response codes: + +| Code | Description | +|------|------------------------------------------------------------------------| +| 200 | Everything is ok. | +| 400 | Valid data was given but the request has failed. | +| 401 | No valid API Key was given. | +| 404 | The request resource could not be found. | +| 405 | The method is not implemented | +| 413 | The Body is too large | +| 422 | The payload has missing required parameters or invalid data was given. | +| 429 | Too many attempts. | +| 500 | Request failed due to an internal error. | +| 503 | API is offline for maintenance. | + +# Data Structures + + + + + + + + + + + +### Asset Object (object) ++ id: `08279320-dfc9-11e5-a450-0002a5d5c51b`(string) - The asset ID ++ mime: `image/jpeg` (string) - The asset mime type ++ type: `image` (string) - The asset type ++ path: `12342bh3y3bn3i4i5ii5b43o3n.jpg` (string) - The asset path in the storage ++ links + + full: `https://laravelapi.test/api/assets/0c244c51-0a3b-4b86-829a-ee161c2f966f/render` (string) - The asset link for render full size + + thumb: `https://laravelapi.test/api/assets/0c244c51-0a3b-4b86-829a-ee161c2f966f/render?width=200&height=200` (string) - The asset link for render thumb size ++ created_at : `1997-07-16T19:20:30+01:00` (string) - Date in format iso 8601 + ### Registration input (object) +- name: `Jose Fonseca`(string, required) - The name of the user +- email: `email@example.com` (string, required) - The email of the user +- password: `Password123**` (string, required) - The password of the user +- password_confirmation: `Password123**` (string, required) - The password confirmation of the user + +### Forgot password input (object) +- email: `email@example.com` (string, required) - The email of the user + +### Reset password input (object) +- email: `email@example.com` (string, required) - The email of the user +- token: `77d933717e14023a1ddcc4cfa0c1d20ccedeb3acb525092aae34ac1f3f708a51` (string, required) - The token received in the email +- password: `Password123**` (string, required) - The new password of the user + +### Reset password response (object) +- message: `The email has been updated` (string) - The message after the reset + +### Get tokens with credentials (object) +- grant_type: `password` (string, required) - The grant type to use +- client_id: `1` (string, required) - the client id +- client_secret: `isudaiusyd87a6s87atsd8a7std` (string, required) - The client secret +- username: `jose@example.com` (string, required) - The username for the user being authenticated +- password: `Password123**` (string, required) - The password for the user being authenticated + +### Get tokens with social token (object) +- grant_type: `social_grant` (string, required) - The grant type to use +- client_id: `1` (string, required) - the client id +- client_secret: `isudaiusyd87a6s87atsd8a7std` (string, required) - The client secret +- provider: `github` (string, required) - The provider to use +- token: `sdoifu98a7sd87fytbs8d67ftnabs786dnta76std` (string, required) - The token obtained by the provider + +### Tokens (object) +- token_type: `Bearer` (string) - The token type +- expires_in: `86400` (string) - When the token expires +- access_token: `eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiNDNjYTE2ZDNjZTEwYmIyZDZjYmQwYjE1ZjU0ZmY2NDhiODkxZGVlYzJmZGE4YTE3NGEzNjE3NzZlMDEzMzdmMDcyMDVjYzM2OGUzYzkwMjUiLCJpYXQiOiIxNjEwMjQ3NTUwLjkwMzEzMSIsIm5iZiI6IjE2MTAyNDc1NTAuOTAzMTM3IiwiZXhwIjoiMTYxMDMzMzk1MC41MTc3ODAiLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.YNlBKazrYQ0CSFmWIUFeOl7ODDC3Sw-fiQyZ1Behyl7-_9fp7akuhmvGXeOJCYQiS1-tsYbkckaauVRlgpfeMExcxe261-8WWEGU0HQDaHxrXcojWQr5LwsnCno_elxLsqoXRZXrKe8s70zs6wwKnqc8tZkrUDkpFt4bjHHtCF1M4xGxA8kNNFs_sqyN0P-amWt1gfuMaALWxgYeISpAAzfP6KgqWVmP3JqDWQAIMhh8NO2kEkfE6rgxQXp0zzvlvvZ7RSYc0sV8JrSnwa15z-q7-1oQ4XFqmYxv-90i_Jrf5N3gz-VON6ovt26Vh7qNeHKFkf98DwHiu5XF6cDHpiZBKwfjlFzG6-0ZPN1ROIXPt5Bk35xLlUUgB6f5kPHZMPfMTuWGneeTbFm_5igdyxwaBqEVfVnuFPnIv5oaKKbAQleyo-yt_LZe9qxFNx-LFlMHmDyAqdfKkra0HG6dCfxynV6x2RtRZHyicN6fDPekTMBs356vNlRRL1dEEzZ4Fbpft4TRZylyqarAXfGb7kCKCuuuHbO8LT6f2yk5JW3Ngc-gfb1dfTO0bfgtl0Rg6l8PWGStSnmyXqeNxLej0XKhrPuqft1JFtucUCw8gUjrcuqSmAAzvXBTbLLvb65WSTnl_tOFviaSeBF-zCJxkxD2uJ1b31YuKMkVd-9dpMs` (string) - The Access token +- refresh_token: `def50200cd296202fa3d84fb5fedb48f09453ac34afafaa05446bab2b0d927821b9c79ba8239ef2c1825fdee70d03e9504d3e739ec8d5efcf79b5cae61dd081972105d75d196b16214087a80df5c1a2616bbff9c22b75077ca7cc2c9c1176cb3fe1404d3ae3e868e01989ef432521839912fe8ffd39a4048ced88f0c4cd52d01fa7c25166bdab9ab104a419705444bf3b316f00e4b0b1edcee80b0b1b6ec748a62a974089994f215abdc2a6b537f0ceb93dbe0f828bbd338d00f4583ec992bb1bee5fec646082e5a38a1f35ed1931ed3a05b7a0e261261e3e31430d134392ffe6b4a4dcd4e8247b4646ad64e42533ebe9357794d331f77566b3e1b236f27afd4b29d44c109997042d918c2243d43a49e3847b084989639e9b5765b8da62f67f497f3b0a965f7cb36a1fecb738370537c8be4d432a518cbe78a0ebc8704fdd0111afe1bd705f9b5b0257aeb88da6c681a88219940e5ac7b9b686dd57ad4b466ab57` (string) - The Refresh token +## Error 404 (object) +- message: `404 Not found` (string) +- status_code: 404 (number) `status code number` + +## Error 400 (object) +- message: `Bad Request` (string) +- status_code: 400 (number) `status code number` + +## Error 403 (object) +- message: `Forbidden` (string) +- status_code: 403 (number) `status code number` + +## Error 401 (object) +- message: `Unauthenticated.` (string) +- status_code: 401 (number) `status code number` + +## Error 405 (object) +- message: `Method Not Allowed` (string) +- status_code: 405 (number) `status code number` + +## Error 422 (object) +- message: `Validation error` (string) +- errors (array) `Array of errors present in the validation` +- status_code: 422 (number) `status code number`## Permission Object (object) +- id: `01020af0-44b5-11e7-8001-41a6bfe4ef85` (string) +- name: `List users` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) + + +## Permission Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/roles?page=1` (string) + - next: `http://laravelapi.dev/api/roles?page=2` (string) + - last: `http://laravelapi.dev/api/roles?page=2` (string)## Role Object (object) +- id: `01020af0-44b5-11e7-8001-41a6bfe4ef85` (string) +- name: `Guest` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) +- permissions (array) + - (Permission Object) + - (Permission Object) + - (Permission Object) + +## Role Create (object) +- name: `Guest` (string) +- permissions (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + +## Role Update Full (object) +- name: `Guest` (string) +- permissions (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + +## Role Update (object) +- name: `Guest` (string) + +## Role Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/roles?page=1` (string) + - next: `http://laravelapi.dev/api/roles?page=2` (string) + - last: `http://laravelapi.dev/api/roles?page=2` (string)## User Object (object) +- id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) +- name: `Jhon Doe` (string) +- email: `email@example.com` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) +- roles + - data (array) + - (Role Object) + - (Role Object) + +## User Create (object) +- name: `Jhon Doe` (string, required) +- email: `email@example.com` (string, required) +- password: `123456789` (string, required) +- password_confirmation: `123456789` (string, required) +- roles (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + +## User Update (object) +- name: `Jhon Doe` (string, optional) + +## User Update Full (object) +- name: `Jhon Doe` (string, required) +- email: `email@example.com` (string, required) + +## User Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/users?page=1` (string) + - next: `http://laravelapi.dev/api/users?page=2` (string) + - last: `http://laravelapi.dev/api/users?page=2` (string) + +## User Update Password (object) +- current_password: `12345` (string, required) +- password: `123456789qq` (string, required) +- password_confirmation: `123456789qq` (string, required)# Group Assets API + +## Images [/api/assets] +This endpoint will let you upload files to the API asset library. + +### Upload a file [POST] + +Using this method you can make a request to the endpoint and include the following headers: + +- Content-Type: image/jpeg : In this case you can send in the body of the request the raw image data and the API will process it and save it with the correct mime type. +- Content-Length: 1257652 : In this header you will send the body size in bytes, that way the api will be able to determinate if the request is too large. + +In the body of the requests you can send the raw binary data in base 64 encoded of the image. + ++ Request (image/jpeg) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + Content-Length: 1000000 + + + Body + + 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 + ++ Response 201 (application/json) + + Attributes + - data (Asset Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 413 (application/json) + + + Body + + { + "code": 413, + "message": "The body is too large" + }# Group Auth + +The auth API will allow you to work with the users registration and password management. + +## Tokens [/oauth/token] + +### Get a token [POST] +Use this endpoint to get access tokens for the user, the API currently uses oAuth2 and supports 2 grants. +- **Password:** Use grant `password` when the user is providing username and password +- **Social grant:** Use grant `social_grant` when the user has a token from a supported OAuth provider. + ++ Request (application/json) + + + Attributes (Get tokens with credentials) + ++ Response 200 (application/json) + + + Attributes (Tokens) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Request (application/json) + + + Attributes (Get tokens with social token) + ++ Response 200 (application/json) + + + Attributes (Tokens) + ++ Response 401 (application/json) + + + Attributes (Error 401) + +## Register [/api/register] +Use this endpoint to register a new user from the client consuming the API. + +### Register user [POST] +This endpoint will allow you to handle the user registration in the API. + ++ Request (application/json) + + + Attributes (Registration input) + ++ Response 201 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + + +## Password Recovery [/api/passwords/reset] +Use this endpoints to reset the user's password with a recovery email. + +### Forgot Password [POST] +This endpoint will allow you to trigger the recovery password email. + ++ Request (application/json) + + + Attributes (Forgot password input) + ++ Response 201 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Reset Password [PUT] +This endpoint will allow you to update the user's password with the token received in the email. + ++ Request (application/json) + + + Attributes (Reset password input) + ++ Response 201 (application/json) + + + Attributes (Reset password response) + ++ Response 422 (application/json) + + + Attributes (Error 422) + + +## Permissions resource [/api/permissions] +It requires your user to have permissions to fetch, create, update or delete roles in the system depending on the request you want to make + +### List permissions [GET] + +This endpoint will allow you to get the roles registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (Permission Object) + + (Permission Object) + + (Permission Object) + + (Permission Object) + + meta + + pagination (Permission Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) +## Users profile [/api/me] + +### Get logged in user profile [GET] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Full update logged in user profile [PUT] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Partial update logged in user profile [PATCH] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Change logged in user password [PUT /api/me/password] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Password) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +## Roles resource [/api/roles] +It requires your user to have permissions to fetch, create, update or delete roles in the system depending on the request you want to make + +### List roles [GET] + +This endpoint will allow you to get the roles registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (Role Object) + + (Role Object) + + (Role Object) + + (Role Object) + + meta + + pagination (Role Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Create Role [POST] +This endpoint will allow you to create a role in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Create) + ++ Response 201 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Get single role [GET /api/roles/{id}] + +This endpoint will allow you to get a single role + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Update Role [PUT /api/roles/{id}] + +This endpoint will allow you to update the role's information, in this case the payload will have to contain all the entity to be updated. ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Partial update Role [PATCH /api/roles/{id}] +This endpoint will allow you to update the role's information, please note that the attributes are optional meaning you can send only one per request and only that field will be updated. + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Update) + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + +### Delete Role [DELETE /api/roles/{id}] +This endpoint will allow you to delete a role from the system + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The Role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 204 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) +# Group Users API + +The users API will allow you to work with the users, roles and permissions. + +## Users resource [/api/users] +It requires your user to have permissions to fetch, create, update or delete users in the system depending on the request you want to make + +### List users [GET] + +This endpoint will allow you to get the users registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (User Object) + + (User Object) + + (User Object) + + (User Object) + + meta + + pagination (User Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Create User [POST] +This endpoint will allow you to create a user in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Create) + ++ Response 201 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Get single user [GET /api/users/{id}] + +This endpoint will allow you to get a single user + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Update User [PUT /api/users/{id}] + +This endpoint will allow you to update the user's information, in this case the payload will have to contain all the entity to be updated. ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Partial update User [PATCH /api/users/{id}] +This endpoint will allow you to update the user's information, please note that the attributes are optional meaning you can send only one per request and only that field will be updated. + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + +### Delete User [DELETE /api/users/{id}] +This endpoint will allow you to delete a user from the system + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 204 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + + + diff --git a/docs/api/blueprint/apidocs.apib b/docs/api/blueprint/apidocs.apib new file mode 100644 index 0000000..a20f803 --- /dev/null +++ b/docs/api/blueprint/apidocs.apib @@ -0,0 +1,54 @@ +FORMAT: 1A +HOST: https://example.com + +# Laravel API +Welcome to the Starter Kit API, here you will find all the information related to the endpoints available. + +## Authentication + +The API uses [oAuth2](https://oauth.net/2/) for authentication, this means that all API calls should contain and authorization that looks like this + +``` +Authorization: Bearer API_KEY_HERE +``` + +Please see the Authentication documentation to know how to get an access token. + +## Headers + +Make sure you have the following content type headers are set on every request: + +```http +Accept: application/json +Content-Type: application/json +``` + +## Errors + +The API uses conventional HTTP response codes to indicate the success or failure of an API request. The table below contains a summary of the typical response codes: + +| Code | Description | +|------|------------------------------------------------------------------------| +| 200 | Everything is ok. | +| 400 | Valid data was given but the request has failed. | +| 401 | No valid API Key was given. | +| 404 | The request resource could not be found. | +| 405 | The method is not implemented | +| 413 | The Body is too large | +| 422 | The payload has missing required parameters or invalid data was given. | +| 429 | Too many attempts. | +| 500 | Request failed due to an internal error. | +| 503 | API is offline for maintenance. | + +# Data Structures + + + + + + + + + + + diff --git a/docs/api/blueprint/dataStructures/assets.apib b/docs/api/blueprint/dataStructures/assets.apib new file mode 100644 index 0000000..018d6a3 --- /dev/null +++ b/docs/api/blueprint/dataStructures/assets.apib @@ -0,0 +1,10 @@ +### Asset Object (object) ++ id: `08279320-dfc9-11e5-a450-0002a5d5c51b`(string) - The asset ID ++ mime: `image/jpeg` (string) - The asset mime type ++ type: `image` (string) - The asset type ++ path: `12342bh3y3bn3i4i5ii5b43o3n.jpg` (string) - The asset path in the storage ++ links + + full: `https://laravelapi.test/api/assets/0c244c51-0a3b-4b86-829a-ee161c2f966f/render` (string) - The asset link for render full size + + thumb: `https://laravelapi.test/api/assets/0c244c51-0a3b-4b86-829a-ee161c2f966f/render?width=200&height=200` (string) - The asset link for render thumb size ++ created_at : `1997-07-16T19:20:30+01:00` (string) - Date in format iso 8601 + \ No newline at end of file diff --git a/docs/api/blueprint/dataStructures/auth.apib b/docs/api/blueprint/dataStructures/auth.apib new file mode 100644 index 0000000..ebb1d0a --- /dev/null +++ b/docs/api/blueprint/dataStructures/auth.apib @@ -0,0 +1,36 @@ +### Registration input (object) +- name: `Jose Fonseca`(string, required) - The name of the user +- email: `email@example.com` (string, required) - The email of the user +- password: `Password123**` (string, required) - The password of the user +- password_confirmation: `Password123**` (string, required) - The password confirmation of the user + +### Forgot password input (object) +- email: `email@example.com` (string, required) - The email of the user + +### Reset password input (object) +- email: `email@example.com` (string, required) - The email of the user +- token: `77d933717e14023a1ddcc4cfa0c1d20ccedeb3acb525092aae34ac1f3f708a51` (string, required) - The token received in the email +- password: `Password123**` (string, required) - The new password of the user + +### Reset password response (object) +- message: `The email has been updated` (string) - The message after the reset + +### Get tokens with credentials (object) +- grant_type: `password` (string, required) - The grant type to use +- client_id: `1` (string, required) - the client id +- client_secret: `isudaiusyd87a6s87atsd8a7std` (string, required) - The client secret +- username: `jose@example.com` (string, required) - The username for the user being authenticated +- password: `Password123**` (string, required) - The password for the user being authenticated + +### Get tokens with social token (object) +- grant_type: `social_grant` (string, required) - The grant type to use +- client_id: `1` (string, required) - the client id +- client_secret: `isudaiusyd87a6s87atsd8a7std` (string, required) - The client secret +- provider: `github` (string, required) - The provider to use +- token: `sdoifu98a7sd87fytbs8d67ftnabs786dnta76std` (string, required) - The token obtained by the provider + +### Tokens (object) +- token_type: `Bearer` (string) - The token type +- expires_in: `86400` (string) - When the token expires +- access_token: `eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiNDNjYTE2ZDNjZTEwYmIyZDZjYmQwYjE1ZjU0ZmY2NDhiODkxZGVlYzJmZGE4YTE3NGEzNjE3NzZlMDEzMzdmMDcyMDVjYzM2OGUzYzkwMjUiLCJpYXQiOiIxNjEwMjQ3NTUwLjkwMzEzMSIsIm5iZiI6IjE2MTAyNDc1NTAuOTAzMTM3IiwiZXhwIjoiMTYxMDMzMzk1MC41MTc3ODAiLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.YNlBKazrYQ0CSFmWIUFeOl7ODDC3Sw-fiQyZ1Behyl7-_9fp7akuhmvGXeOJCYQiS1-tsYbkckaauVRlgpfeMExcxe261-8WWEGU0HQDaHxrXcojWQr5LwsnCno_elxLsqoXRZXrKe8s70zs6wwKnqc8tZkrUDkpFt4bjHHtCF1M4xGxA8kNNFs_sqyN0P-amWt1gfuMaALWxgYeISpAAzfP6KgqWVmP3JqDWQAIMhh8NO2kEkfE6rgxQXp0zzvlvvZ7RSYc0sV8JrSnwa15z-q7-1oQ4XFqmYxv-90i_Jrf5N3gz-VON6ovt26Vh7qNeHKFkf98DwHiu5XF6cDHpiZBKwfjlFzG6-0ZPN1ROIXPt5Bk35xLlUUgB6f5kPHZMPfMTuWGneeTbFm_5igdyxwaBqEVfVnuFPnIv5oaKKbAQleyo-yt_LZe9qxFNx-LFlMHmDyAqdfKkra0HG6dCfxynV6x2RtRZHyicN6fDPekTMBs356vNlRRL1dEEzZ4Fbpft4TRZylyqarAXfGb7kCKCuuuHbO8LT6f2yk5JW3Ngc-gfb1dfTO0bfgtl0Rg6l8PWGStSnmyXqeNxLej0XKhrPuqft1JFtucUCw8gUjrcuqSmAAzvXBTbLLvb65WSTnl_tOFviaSeBF-zCJxkxD2uJ1b31YuKMkVd-9dpMs` (string) - The Access token +- refresh_token: `def50200cd296202fa3d84fb5fedb48f09453ac34afafaa05446bab2b0d927821b9c79ba8239ef2c1825fdee70d03e9504d3e739ec8d5efcf79b5cae61dd081972105d75d196b16214087a80df5c1a2616bbff9c22b75077ca7cc2c9c1176cb3fe1404d3ae3e868e01989ef432521839912fe8ffd39a4048ced88f0c4cd52d01fa7c25166bdab9ab104a419705444bf3b316f00e4b0b1edcee80b0b1b6ec748a62a974089994f215abdc2a6b537f0ceb93dbe0f828bbd338d00f4583ec992bb1bee5fec646082e5a38a1f35ed1931ed3a05b7a0e261261e3e31430d134392ffe6b4a4dcd4e8247b4646ad64e42533ebe9357794d331f77566b3e1b236f27afd4b29d44c109997042d918c2243d43a49e3847b084989639e9b5765b8da62f67f497f3b0a965f7cb36a1fecb738370537c8be4d432a518cbe78a0ebc8704fdd0111afe1bd705f9b5b0257aeb88da6c681a88219940e5ac7b9b686dd57ad4b466ab57` (string) - The Refresh token diff --git a/docs/api/blueprint/dataStructures/errors.apib b/docs/api/blueprint/dataStructures/errors.apib new file mode 100644 index 0000000..eada5c0 --- /dev/null +++ b/docs/api/blueprint/dataStructures/errors.apib @@ -0,0 +1,24 @@ +## Error 404 (object) +- message: `404 Not found` (string) +- status_code: 404 (number) `status code number` + +## Error 400 (object) +- message: `Bad Request` (string) +- status_code: 400 (number) `status code number` + +## Error 403 (object) +- message: `Forbidden` (string) +- status_code: 403 (number) `status code number` + +## Error 401 (object) +- message: `Unauthenticated.` (string) +- status_code: 401 (number) `status code number` + +## Error 405 (object) +- message: `Method Not Allowed` (string) +- status_code: 405 (number) `status code number` + +## Error 422 (object) +- message: `Validation error` (string) +- errors (array) `Array of errors present in the validation` +- status_code: 422 (number) `status code number` \ No newline at end of file diff --git a/docs/api/blueprint/dataStructures/permissions.apib b/docs/api/blueprint/dataStructures/permissions.apib new file mode 100644 index 0000000..87c001b --- /dev/null +++ b/docs/api/blueprint/dataStructures/permissions.apib @@ -0,0 +1,17 @@ +## Permission Object (object) +- id: `01020af0-44b5-11e7-8001-41a6bfe4ef85` (string) +- name: `List users` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) + + +## Permission Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/roles?page=1` (string) + - next: `http://laravelapi.dev/api/roles?page=2` (string) + - last: `http://laravelapi.dev/api/roles?page=2` (string) \ No newline at end of file diff --git a/docs/api/blueprint/dataStructures/roles.apib b/docs/api/blueprint/dataStructures/roles.apib new file mode 100644 index 0000000..760d814 --- /dev/null +++ b/docs/api/blueprint/dataStructures/roles.apib @@ -0,0 +1,37 @@ +## Role Object (object) +- id: `01020af0-44b5-11e7-8001-41a6bfe4ef85` (string) +- name: `Guest` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) +- permissions (array) + - (Permission Object) + - (Permission Object) + - (Permission Object) + +## Role Create (object) +- name: `Guest` (string) +- permissions (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + +## Role Update Full (object) +- name: `Guest` (string) +- permissions (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Permission ID + +## Role Update (object) +- name: `Guest` (string) + +## Role Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/roles?page=1` (string) + - next: `http://laravelapi.dev/api/roles?page=2` (string) + - last: `http://laravelapi.dev/api/roles?page=2` (string) \ No newline at end of file diff --git a/docs/api/blueprint/dataStructures/users.apib b/docs/api/blueprint/dataStructures/users.apib new file mode 100644 index 0000000..800ba17 --- /dev/null +++ b/docs/api/blueprint/dataStructures/users.apib @@ -0,0 +1,43 @@ +## User Object (object) +- id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) +- name: `Jhon Doe` (string) +- email: `email@example.com` (string) +- created_at: `2017-02-09T03:28:32+00:00` (string) +- updated_at: `2017-02-09T03:28:32+00:00` (string) +- roles + - data (array) + - (Role Object) + - (Role Object) + +## User Create (object) +- name: `Jhon Doe` (string, required) +- email: `email@example.com` (string, required) +- password: `123456789` (string, required) +- password_confirmation: `123456789` (string, required) +- roles (array) + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + - `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string) Role ID + +## User Update (object) +- name: `Jhon Doe` (string, optional) + +## User Update Full (object) +- name: `Jhon Doe` (string, required) +- email: `email@example.com` (string, required) + +## User Pagination (object) +- total: 30 (number) +- count: 20 (number) +- per_page: 20 (number) +- current_page: 1 (number) +- total_pages: 2 (number) +- links + - previous: `http://laravelapi.dev/api/users?page=1` (string) + - next: `http://laravelapi.dev/api/users?page=2` (string) + - last: `http://laravelapi.dev/api/users?page=2` (string) + +## User Update Password (object) +- current_password: `12345` (string, required) +- password: `123456789qq` (string, required) +- password_confirmation: `123456789qq` (string, required) \ No newline at end of file diff --git a/docs/api/blueprint/routes/assets.apib b/docs/api/blueprint/routes/assets.apib new file mode 100644 index 0000000..86d8eee --- /dev/null +++ b/docs/api/blueprint/routes/assets.apib @@ -0,0 +1,41 @@ +# Group Assets API + +## Images [/api/assets] +This endpoint will let you upload files to the API asset library. + +### Upload a file [POST] + +Using this method you can make a request to the endpoint and include the following headers: + +- Content-Type: image/jpeg : In this case you can send in the body of the request the raw image data and the API will process it and save it with the correct mime type. +- Content-Length: 1257652 : In this header you will send the body size in bytes, that way the api will be able to determinate if the request is too large. + +In the body of the requests you can send the raw binary data in base 64 encoded of the image. + ++ Request (image/jpeg) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + Content-Length: 1000000 + + + Body + + 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 + ++ Response 201 (application/json) + + Attributes + - data (Asset Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 413 (application/json) + + + Body + + { + "code": 413, + "message": "The body is too large" + } \ No newline at end of file diff --git a/docs/api/blueprint/routes/auth.apib b/docs/api/blueprint/routes/auth.apib new file mode 100644 index 0000000..9cf9488 --- /dev/null +++ b/docs/api/blueprint/routes/auth.apib @@ -0,0 +1,86 @@ +# Group Auth + +The auth API will allow you to work with the users registration and password management. + +## Tokens [/oauth/token] + +### Get a token [POST] +Use this endpoint to get access tokens for the user, the API currently uses oAuth2 and supports 2 grants. +- **Password:** Use grant `password` when the user is providing username and password +- **Social grant:** Use grant `social_grant` when the user has a token from a supported OAuth provider. + ++ Request (application/json) + + + Attributes (Get tokens with credentials) + ++ Response 200 (application/json) + + + Attributes (Tokens) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Request (application/json) + + + Attributes (Get tokens with social token) + ++ Response 200 (application/json) + + + Attributes (Tokens) + ++ Response 401 (application/json) + + + Attributes (Error 401) + +## Register [/api/register] +Use this endpoint to register a new user from the client consuming the API. + +### Register user [POST] +This endpoint will allow you to handle the user registration in the API. + ++ Request (application/json) + + + Attributes (Registration input) + ++ Response 201 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + + +## Password Recovery [/api/passwords/reset] +Use this endpoints to reset the user's password with a recovery email. + +### Forgot Password [POST] +This endpoint will allow you to trigger the recovery password email. + ++ Request (application/json) + + + Attributes (Forgot password input) + ++ Response 201 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Reset Password [PUT] +This endpoint will allow you to update the user's password with the token received in the email. + ++ Request (application/json) + + + Attributes (Reset password input) + ++ Response 201 (application/json) + + + Attributes (Reset password response) + ++ Response 422 (application/json) + + + Attributes (Error 422) + diff --git a/docs/api/blueprint/routes/permissions.apib b/docs/api/blueprint/routes/permissions.apib new file mode 100644 index 0000000..f3e3026 --- /dev/null +++ b/docs/api/blueprint/routes/permissions.apib @@ -0,0 +1,36 @@ + +## Permissions resource [/api/permissions] +It requires your user to have permissions to fetch, create, update or delete roles in the system depending on the request you want to make + +### List permissions [GET] + +This endpoint will allow you to get the roles registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (Permission Object) + + (Permission Object) + + (Permission Object) + + (Permission Object) + + meta + + pagination (Permission Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) diff --git a/docs/api/blueprint/routes/profile.apib b/docs/api/blueprint/routes/profile.apib new file mode 100644 index 0000000..a138888 --- /dev/null +++ b/docs/api/blueprint/routes/profile.apib @@ -0,0 +1,107 @@ +## Users profile [/api/me] + +### Get logged in user profile [GET] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Full update logged in user profile [PUT] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Partial update logged in user profile [PATCH] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) + +### Change logged in user password [PUT /api/me/password] + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Password) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 422 (application/json) + + + Attributes (Error 422) diff --git a/docs/api/blueprint/routes/roles.apib b/docs/api/blueprint/routes/roles.apib new file mode 100644 index 0000000..f6b4ddc --- /dev/null +++ b/docs/api/blueprint/routes/roles.apib @@ -0,0 +1,200 @@ + +## Roles resource [/api/roles] +It requires your user to have permissions to fetch, create, update or delete roles in the system depending on the request you want to make + +### List roles [GET] + +This endpoint will allow you to get the roles registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (Role Object) + + (Role Object) + + (Role Object) + + (Role Object) + + meta + + pagination (Role Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Create Role [POST] +This endpoint will allow you to create a role in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Create) + ++ Response 201 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Get single role [GET /api/roles/{id}] + +This endpoint will allow you to get a single role + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Update Role [PUT /api/roles/{id}] + +This endpoint will allow you to update the role's information, in this case the payload will have to contain all the entity to be updated. ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Partial update Role [PATCH /api/roles/{id}] +This endpoint will allow you to update the role's information, please note that the attributes are optional meaning you can send only one per request and only that field will be updated. + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (Role Update) + ++ Response 200 (application/json) + + + Attributes + + data (Role Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + +### Delete Role [DELETE /api/roles/{id}] +This endpoint will allow you to delete a role from the system + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The Role ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 204 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) diff --git a/docs/api/blueprint/routes/users.apib b/docs/api/blueprint/routes/users.apib new file mode 100644 index 0000000..3012f78 --- /dev/null +++ b/docs/api/blueprint/routes/users.apib @@ -0,0 +1,207 @@ +# Group Users API + +The users API will allow you to work with the users, roles and permissions. + +## Users resource [/api/users] +It requires your user to have permissions to fetch, create, update or delete users in the system depending on the request you want to make + +### List users [GET] + +This endpoint will allow you to get the users registered in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (array) + + (User Object) + + (User Object) + + (User Object) + + (User Object) + + meta + + pagination (User Pagination) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Create User [POST] +This endpoint will allow you to create a user in the system + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Create) + ++ Response 201 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Get single user [GET /api/users/{id}] + +This endpoint will allow you to get a single user + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Update User [PUT /api/users/{id}] + +This endpoint will allow you to update the user's information, in this case the payload will have to contain all the entity to be updated. ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update Full) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + +### Partial update User [PATCH /api/users/{id}] +This endpoint will allow you to update the user's information, please note that the attributes are optional meaning you can send only one per request and only that field will be updated. + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + + + Attributes (User Update) + ++ Response 200 (application/json) + + + Attributes + + data (User Object) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + +### Delete User [DELETE /api/users/{id}] +This endpoint will allow you to delete a user from the system + ++ Parameters + + id: `d4d42ea0-ee77-11e6-b823-6d63c6504afc` (string, required) The user ID + ++ Request (application/json) + + + Headers + + Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjBlOGVhOGY0YWY2Yjg3NzU0YjZjZDBjNjdkNzBmMjdhYTZkMmRjNjU3YzIwYTU0MjQ3NWRlZGU4Y2VkNTc1N2IwZDcwMWFmNTAyMGU4MGE4In0.eyJhdWQiOiIxIiwianRpIjoiMGU4ZWE4ZjRhZjZiODc3NTRiNmNkMGM2N2Q3MGYyN2FhNmQyZGM2NTdjMjBhNTQyNDc1ZGVkZThjZWQ1NzU3YjBkNzAxYWY1MDIwZTgwYTgiLCJpYXQiOjE0NzYyOTk1NTQsIm5iZiI6MTQ3NjI5OTU1NCwiZXhwIjoxNDc3NTk1NTU0LCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.gTOotTVp2eF_HvuW48ngGqdly4bocNMlvY0al0YmYPJ_tjBQYegE4AjtCH2bWUf9aUz8tQqhMr2UFae3JV6VDQC9VzoGK8gU_nulM0BkqaCCxadqrw_slcd4he9hT0FE3WshvdZKcmgaVovgrI2-sAnX3n749BiWtWLEpw6x-TdEHEVcW6uRfRWyrwKhPBfOk-hXpgbecgT8LYdBW531P1ryjSJzzi5zBEe0Ecbp9Lo-fV69AW8ZBnG1DBjzxW-hvE0rRLXXnI4-f9rbQfK6QUzfG3Dg2INexcKxu9sQ3Vn5wHhQyu4_nTNQh8rsgphdAqFnEo-FQZrRWejkKbOi_BcpQybaXNn7Qln-96QF6PAzT-2E08VmL4XeVNcSvmM1sPVwirnSXo4UIFSsHvvIdVfEYEXD8XDonlnVO74RgBDMXWs6xo7dmDNaqQxKt9J_s_xtmyM3w62C4QucKw7MY0zOqviEyXySbrYbgazO_Pl1--GXtksE8tVMW8OW6Y8fw0JE0GEd5hZVadR277A5164QAJhiGXI_mKNTtUZVNaj0JpKEQpu4tod_BJR_DxzvcpKHwc1YrfrPOul6mL4kZeafkehPe79jxrCXKgKEuGlgSFcyrXUNCtME9LxsMID6QpJ-tfx4i0jqjixd_smqpjPPYqhPuqhox3uMLcDgM6s + ++ Response 204 (application/json) + ++ Response 422 (application/json) + + + Attributes (Error 422) + ++ Response 401 (application/json) + + + Attributes (Error 401) + ++ Response 403 (application/json) + + + Attributes (Error 403) + ++ Response 404 (application/json) + + + Attributes (Error 404) + + + + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..920a013 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,26 @@ + + + + + ./app + + + + + ./tests/Unit + + + ./tests/Feature + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..903f639 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,20 @@ + + + Options -MultiViews + + + RewriteEngine On + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)/$ /$1 [L,R=301] + + # Handle Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + diff --git a/public/4a01lZZngFgmjHyM b/public/4a01lZZngFgmjHyM new file mode 100644 index 0000000..6f4675f Binary files /dev/null and b/public/4a01lZZngFgmjHyM differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..716731f --- /dev/null +++ b/public/index.php @@ -0,0 +1,58 @@ + + */ + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| our application. We just need to utilize it! We'll simply require it +| into the script here so that we don't have to worry about manual +| loading any of our classes later on. It feels nice to relax. +| +*/ + +require __DIR__.'/../bootstrap/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/public/mix-manifest.json b/public/mix-manifest.json new file mode 100644 index 0000000..2c165b4 --- /dev/null +++ b/public/mix-manifest.json @@ -0,0 +1,4 @@ +{ + "/js/app.js": "/js/app.js", + "/css/app.css": "/css/app.css" +} \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/vendor/scribe/css/highlight-atelier-cave-light.css b/public/vendor/scribe/css/highlight-atelier-cave-light.css new file mode 100644 index 0000000..b419f9f --- /dev/null +++ b/public/vendor/scribe/css/highlight-atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #efecf4; + color: #585260; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/public/vendor/scribe/css/highlight-darcula.css b/public/vendor/scribe/css/highlight-darcula.css new file mode 100644 index 0000000..4c734f1 --- /dev/null +++ b/public/vendor/scribe/css/highlight-darcula.css @@ -0,0 +1,74 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b2b2b; + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/public/vendor/scribe/css/highlight-monokai-sublime.css b/public/vendor/scribe/css/highlight-monokai-sublime.css new file mode 100644 index 0000000..2864170 --- /dev/null +++ b/public/vendor/scribe/css/highlight-monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/public/vendor/scribe/css/highlight-monokai.css b/public/vendor/scribe/css/highlight-monokai.css new file mode 100644 index 0000000..af24834 --- /dev/null +++ b/public/vendor/scribe/css/highlight-monokai.css @@ -0,0 +1,71 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; + color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/public/vendor/scribe/css/highlight-vs2015.css b/public/vendor/scribe/css/highlight-vs2015.css new file mode 100644 index 0000000..d1d9be3 --- /dev/null +++ b/public/vendor/scribe/css/highlight-vs2015.css @@ -0,0 +1,115 @@ +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1E1E1E; + color: #DCDCDC; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6; +} +.hljs-link { + color: #569CD6; + text-decoration: underline; +} + +.hljs-built_in, +.hljs-type { + color: #4EC9B0; +} + +.hljs-number, +.hljs-class { + color: #B8D7A3; +} + +.hljs-string, +.hljs-meta-string { + color: #D69D85; +} + +.hljs-regexp, +.hljs-template-tag { + color: #9A5334; +} + +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC; +} + +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic; +} + +.hljs-doctag { + color: #608B4E; +} + +.hljs-meta, +.hljs-meta-keyword, +.hljs-tag { + color: #9B9B9B; +} + +.hljs-variable, +.hljs-template-variable { + color: #BD63C5; +} + +.hljs-attr, +.hljs-attribute, +.hljs-builtin-name { + color: #9CDCFE; +} + +.hljs-section { + color: gold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +/*.hljs-code { + font-family:'Monospace'; +}*/ + +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D; +} + +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100%; +} diff --git a/public/vendor/scribe/css/print.css b/public/vendor/scribe/css/print.css new file mode 100644 index 0000000..0e1f323 --- /dev/null +++ b/public/vendor/scribe/css/print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} \ No newline at end of file diff --git a/public/vendor/scribe/css/style.css b/public/vendor/scribe/css/style.css new file mode 100644 index 0000000..eb6a99c --- /dev/null +++ b/public/vendor/scribe/css/style.css @@ -0,0 +1,999 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'PT Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6, +body, +html { + font-family: 'PT Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 15px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'PT Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper .search-results a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector a { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0 +} + +.lang-selector a:active, +.lang-selector a:focus { + background-color: #111; + color: #fff +} + +.lang-selector a.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + background-color: rgba(0, 0, 0, .05); + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + text-shadow: 0 1px 0 #a0c6da; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #8fbcd4; + line-height: 1.6 +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91 +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89 +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 2em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content aside, + .content dl, + .content h1, + .content h2, + .content h3, + .content h4, + .content h5, + .content h6, + .content ol, + .content p, + .content table, + .content ul { + margin-right: 0 + } + .content blockquote, + .content pre { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} \ No newline at end of file diff --git a/public/vendor/scribe/images/logo.png b/public/vendor/scribe/images/logo.png new file mode 100644 index 0000000..1c5dfe5 Binary files /dev/null and b/public/vendor/scribe/images/logo.png differ diff --git a/public/vendor/scribe/images/navbar.png b/public/vendor/scribe/images/navbar.png new file mode 100644 index 0000000..df38e90 Binary files /dev/null and b/public/vendor/scribe/images/navbar.png differ diff --git a/public/vendor/scribe/js/all.js b/public/vendor/scribe/js/all.js new file mode 100644 index 0000000..1804686 --- /dev/null +++ b/public/vendor/scribe/js/all.js @@ -0,0 +1,6 @@ +!function(){if("ontouchstart"in window){var e,t,n,r,i,o,s={};e=function(e,t){return Math.abs(e[0]-t[0])>5||Math.abs(e[1]-t[1])>5},t=function(e){this.startXY=[e.touches[0].clientX,e.touches[0].clientY],this.threshold=!1},n=function(t){return this.threshold?!1:void(this.threshold=e(this.startXY,[t.touches[0].clientX,t.touches[0].clientY]))},r=function(t){if(!this.threshold&&!e(this.startXY,[t.changedTouches[0].clientX,t.changedTouches[0].clientY])){var n=t.changedTouches[0],r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),r.simulated=!0,t.target.dispatchEvent(r)}},i=function(e){var t=Date.now(),n=t-s.time,r=e.clientX,i=e.clientY,a=[Math.abs(s.x-r),Math.abs(s.y-i)],c=o(e.target,"A")||e.target,l=c.nodeName,u="A"===l,d=window.navigator.standalone&&u&&e.target.getAttribute("href");return s.time=t,s.x=r,s.y=i,(!e.simulated&&(500>n||1500>n&&a[0]<50&&a[1]<50)||d)&&(e.preventDefault(),e.stopPropagation(),!d)?!1:(d&&(window.location=c.getAttribute("href")),void(c&&c.classList&&(c.classList.add("energize-focus"),window.setTimeout(function(){c.classList.remove("energize-focus")},150))))},o=function(e,t){for(var n=e;n!==document.body;){if(!n||n.nodeName===t)return n;n=n.parentNode}return null},document.addEventListener("touchstart",t,!1),document.addEventListener("touchmove",n,!1),document.addEventListener("touchend",r,!1),document.addEventListener("click",i,!0)}}(),!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=G.type(e);return"function"===n||G.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(G.isFunction(t))return G.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return G.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(ae.test(t))return G.filter(t,e,n);t=G.filter(t,e)}return G.grep(e,function(e){return Q.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t=he[e]={};return G.each(e.match(pe)||[],function(e,n){t[n]=!0}),t}function s(){Y.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1),G.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=G.expando+a.uid++}function c(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(we,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:be.test(n)?G.parseJSON(n):n}catch(i){}ye.set(e,t,n)}else n=void 0;return n}function l(){return!0}function u(){return!1}function d(){try{return Y.activeElement}catch(e){}}function f(e,t){return G.nodeName(e,"table")&&G.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function p(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function h(e){var t=Re.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function g(e,t){for(var n=0,r=e.length;r>n;n++)ve.set(e[n],"globalEval",!t||ve.get(t[n],"globalEval"))}function m(e,t){var n,r,i,o,s,a,c,l;if(1===t.nodeType){if(ve.hasData(e)&&(o=ve.access(e),s=ve.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)G.event.add(t,i,l[i][n])}ye.hasData(e)&&(a=ye.access(e),c=G.extend({},a),ye.set(t,c))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&G.nodeName(e,t)?G.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&Ce.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function b(t,n){var r,i=G(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:G.css(i[0],"display");return i.detach(),o}function w(e){var t=Y,n=He[e];return n||(n=b(e,t),"none"!==n&&n||(Ie=(Ie||G("