├── LICENSE
├── composer.json
├── composer.lock
├── images
└── screenshot.png
├── readme.md
├── resources
└── views
│ └── components
│ └── notification.blade.php
├── src
├── Facades
│ └── InAppNotification.php
├── InAppNotification.php
├── InAppNotificationTestMacro.php
└── InAppNotificationsServiceProvider.php
└── vendor
├── autoload.php
├── bin
└── pint
├── composer
├── ClassLoader.php
├── InstalledVersions.php
├── LICENSE
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── autoload_static.php
├── installed.json
└── installed.php
└── laravel
└── pint
├── LICENSE.md
├── builds
└── pint
└── composer.json
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 jcergolj
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jcergolj/in-app-notifications-for-laravel",
3 | "description": "Simple package for setting and displaying in-app notifications for Laravel",
4 | "license": "MIT",
5 | "authors": [
6 | {
7 | "name": "Janez Cergolj",
8 | "email": "me@jcergolj.me.uk"
9 | }
10 | ],
11 | "minimum-stability": "dev",
12 | "prefer-stable": true,
13 | "autoload": {
14 | "psr-4": {
15 | "Jcergolj\\InAppNotifications\\": "src/"
16 | }
17 | },
18 | "scripts": {
19 | "pint": "vendor/bin/pint"
20 | },
21 | "require-dev": {
22 | "laravel/pint": "^1.9"
23 | },
24 | "extra": {
25 | "laravel": {
26 | "providers": [
27 | "Jcergolj\\InAppNotifications\\InAppNotificationsServiceProvider"
28 | ]
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "da0aaf31837baad3632231cd1d9d2eef",
8 | "packages": [],
9 | "packages-dev": [
10 | {
11 | "name": "laravel/pint",
12 | "version": "v1.14.0",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/laravel/pint.git",
16 | "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
21 | "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "ext-json": "*",
26 | "ext-mbstring": "*",
27 | "ext-tokenizer": "*",
28 | "ext-xml": "*",
29 | "php": "^8.1.0"
30 | },
31 | "require-dev": {
32 | "friendsofphp/php-cs-fixer": "^3.49.0",
33 | "illuminate/view": "^10.43.0",
34 | "larastan/larastan": "^2.8.1",
35 | "laravel-zero/framework": "^10.3.0",
36 | "mockery/mockery": "^1.6.7",
37 | "nunomaduro/termwind": "^1.15.1",
38 | "pestphp/pest": "^2.33.6"
39 | },
40 | "bin": [
41 | "builds/pint"
42 | ],
43 | "type": "project",
44 | "autoload": {
45 | "psr-4": {
46 | "App\\": "app/",
47 | "Database\\Seeders\\": "database/seeders/",
48 | "Database\\Factories\\": "database/factories/"
49 | }
50 | },
51 | "notification-url": "https://packagist.org/downloads/",
52 | "license": [
53 | "MIT"
54 | ],
55 | "authors": [
56 | {
57 | "name": "Nuno Maduro",
58 | "email": "enunomaduro@gmail.com"
59 | }
60 | ],
61 | "description": "An opinionated code formatter for PHP.",
62 | "homepage": "https://laravel.com",
63 | "keywords": [
64 | "format",
65 | "formatter",
66 | "lint",
67 | "linter",
68 | "php"
69 | ],
70 | "support": {
71 | "issues": "https://github.com/laravel/pint/issues",
72 | "source": "https://github.com/laravel/pint"
73 | },
74 | "time": "2024-02-20T17:38:05+00:00"
75 | }
76 | ],
77 | "aliases": [],
78 | "minimum-stability": "dev",
79 | "stability-flags": [],
80 | "prefer-stable": true,
81 | "prefer-lowest": false,
82 | "platform": [],
83 | "platform-dev": [],
84 | "plugin-api-version": "2.3.0"
85 | }
86 |
--------------------------------------------------------------------------------
/images/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jcergolj/in-app-notifications-for-laravel/b1b3c9eb831fbd30e53b3346cbaf7a50b22b4fc9/images/screenshot.png
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # In-App Notifications for Laravel - Elegant & Customizable Alerts
2 |
3 |
4 |
5 | ## Key features
6 | - notification is closed automatically after 5s,
7 | - you can change the timeout,
8 | - styled wiht tailwind css by default,
9 | - you can modify the component and use different framework or none at all
10 |
11 | ## Installation
12 |
13 | ### Requirements
14 | Required PHP >=8.2
15 |
16 | ### Installing package
17 | ```bash
18 | composer require jcergolj/in-app-notifications-for-laravel
19 | ```
20 |
21 | ### Publishing config file
22 | If you wish to modify the component view
23 | ```bash
24 | php artisan vendor:publish --provider="Jcergolj\InAppNotifications\InAppNotificationsServiceProvider"
25 | ```
26 |
27 | ## Usage
28 |
29 | ### Add components to your layouts/app.blade.php file
30 | ```html
31 |
32 |
33 | @yield('scripts')
34 | ```
35 |
36 | ### Set notification inside controller
37 | ```php
38 | app->bind('in-app-notification', function () {
76 | return new Jcergolj\InAppNotifications\InAppNotification(10000); // 10 seconds
77 | });
78 | }
79 | ```
80 |
81 | ## It has use Illuminate\Support\Traits\Macroable;
82 | If you wish so you can extend `InAppNotitication` class utilising Macroable trait.
83 |
84 | ```php
85 | // AppServiceProvider.php
86 |
87 | InAppNotitication::macro('customMethod', function () {
88 |
89 | });
90 |
91 | // e.g. inside controller
92 |
93 | InAppNotification::customMethod();
94 |
95 | ```
96 |
97 | ## Testing
98 | Package comes with few handy assertions:
99 |
100 | ```php
101 | // add this for adding testable macro
102 | InAppNotification::fake();
103 |
104 | InAppNotification::assertSet()
105 | InAppNotification::assertSet('Assert against this text.');
106 |
107 | InAppNotification::assertSuccess()
108 | InAppNotification::assertSuccess('Success');
109 |
110 | InAppNotification::assertError();
111 | InAppNotification::assertError('Error');
112 |
113 | InAppNotification::assertInfo();
114 | InAppNotification::assertInfo('Info');
115 |
116 | InAppNotification::assertWarning();
117 | InAppNotification::assertWarning('Warning');
118 |
119 | InAppNotification::assertTimeout(10000);
120 | ```
121 |
--------------------------------------------------------------------------------
/resources/views/components/notification.blade.php:
--------------------------------------------------------------------------------
1 | @if (InAppNotification::hasMessage())
2 |
InAppNotification::isError(),
6 | 'bg-green-500/90 border-green-500/90' => InAppNotification::isSuccess(),
7 | 'bg-yellow-500/90 border-yellow-500/90' => InAppNotification::isWarning(),
8 | 'bg-blue-500/90 border-blue-500/90' => InAppNotification::isInfo(),
9 | ])
10 | role="alert"
11 | >
12 |
13 | {{ InAppNotification::print() }}
14 |
15 |
16 |
17 | @section('scripts')
18 |
26 | @endsection
27 | @endif
28 |
--------------------------------------------------------------------------------
/src/Facades/InAppNotification.php:
--------------------------------------------------------------------------------
1 | put('flash', ['message' => $message, 'level' => self::SUCCESS]);
26 | }
27 |
28 | public function error(string $message): void
29 | {
30 | session()->put('flash', ['message' => $message, 'level' => self::ERROR]);
31 | }
32 |
33 | public function info(string $message): void
34 | {
35 | session()->put('flash', ['message' => $message, 'level' => self::INFO]);
36 | }
37 |
38 | public function warning(string $message): void
39 | {
40 | session()->put('flash', ['message' => $message, 'level' => self::WARNING]);
41 | }
42 |
43 | public function hasMessage(): bool
44 | {
45 | return session()->has('flash');
46 | }
47 |
48 | public function print(): string
49 | {
50 | return session()->pull('flash')['message'];
51 | }
52 |
53 | public function isError(): bool
54 | {
55 | return session()->get('flash')['level'] === self::ERROR;
56 | }
57 |
58 | public function isSuccess(): bool
59 | {
60 | return session()->get('flash')['level'] === self::SUCCESS;
61 | }
62 |
63 | public function isWarning(): bool
64 | {
65 | return session()->get('flash')['level'] === self::WARNING;
66 | }
67 |
68 | public function isInfo(): bool
69 | {
70 | return session()->get('flash')['level'] === self::INFO;
71 | }
72 |
73 | public function timeout(): int
74 | {
75 | return $this->timeout;
76 | }
77 |
78 | public function fake(): void
79 | {
80 | InAppNotification::mixin(new InAppNotificationTestMacro());
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/src/InAppNotificationTestMacro.php:
--------------------------------------------------------------------------------
1 | app->bind('in-app-notification', function () {
14 | return new InAppNotification();
15 | });
16 | }
17 |
18 | public function boot(): void
19 | {
20 | $loader = AliasLoader::getInstance();
21 | $loader->alias('InAppNotification', FacadeInAppNotification::class);
22 |
23 | $this->publishes([
24 | __DIR__.'/../resources/views' => resource_path('views/vendor/in-app-notifications'),
25 | ], 'views');
26 |
27 | $this->loadViewsFrom(__DIR__.'/../resources/views', 'in-app-notifications');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/autoload.php:
--------------------------------------------------------------------------------
1 | realpath = realpath($opened_path) ?: $opened_path;
34 | $opened_path = $this->realpath;
35 | $this->handle = fopen($this->realpath, $mode);
36 | $this->position = 0;
37 |
38 | return (bool) $this->handle;
39 | }
40 |
41 | public function stream_read($count)
42 | {
43 | $data = fread($this->handle, $count);
44 |
45 | if ($this->position === 0) {
46 | $data = preg_replace('{^#!.*\r?\n}', '', $data);
47 | }
48 |
49 | $this->position += strlen($data);
50 |
51 | return $data;
52 | }
53 |
54 | public function stream_cast($castAs)
55 | {
56 | return $this->handle;
57 | }
58 |
59 | public function stream_close()
60 | {
61 | fclose($this->handle);
62 | }
63 |
64 | public function stream_lock($operation)
65 | {
66 | return $operation ? flock($this->handle, $operation) : true;
67 | }
68 |
69 | public function stream_seek($offset, $whence)
70 | {
71 | if (0 === fseek($this->handle, $offset, $whence)) {
72 | $this->position = ftell($this->handle);
73 | return true;
74 | }
75 |
76 | return false;
77 | }
78 |
79 | public function stream_tell()
80 | {
81 | return $this->position;
82 | }
83 |
84 | public function stream_eof()
85 | {
86 | return feof($this->handle);
87 | }
88 |
89 | public function stream_stat()
90 | {
91 | return array();
92 | }
93 |
94 | public function stream_set_option($option, $arg1, $arg2)
95 | {
96 | return true;
97 | }
98 |
99 | public function url_stat($path, $flags)
100 | {
101 | $path = substr($path, 17);
102 | if (file_exists($path)) {
103 | return stat($path);
104 | }
105 |
106 | return false;
107 | }
108 | }
109 | }
110 |
111 | if (
112 | (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
113 | || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
114 | ) {
115 | include("phpvfscomposer://" . __DIR__ . '/..'.'/laravel/pint/builds/pint');
116 | exit(0);
117 | }
118 | }
119 |
120 | include __DIR__ . '/..'.'/laravel/pint/builds/pint';
121 |
--------------------------------------------------------------------------------
/vendor/composer/ClassLoader.php:
--------------------------------------------------------------------------------
1 |
7 | * Jordi Boggiano
8 | *
9 | * For the full copyright and license information, please view the LICENSE
10 | * file that was distributed with this source code.
11 | */
12 |
13 | namespace Composer\Autoload;
14 |
15 | /**
16 | * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17 | *
18 | * $loader = new \Composer\Autoload\ClassLoader();
19 | *
20 | * // register classes with namespaces
21 | * $loader->add('Symfony\Component', __DIR__.'/component');
22 | * $loader->add('Symfony', __DIR__.'/framework');
23 | *
24 | * // activate the autoloader
25 | * $loader->register();
26 | *
27 | * // to enable searching the include path (eg. for PEAR packages)
28 | * $loader->setUseIncludePath(true);
29 | *
30 | * In this example, if you try to use a class in the Symfony\Component
31 | * namespace or one of its children (Symfony\Component\Console for instance),
32 | * the autoloader will first look for the class under the component/
33 | * directory, and it will then fallback to the framework/ directory if not
34 | * found before giving up.
35 | *
36 | * This class is loosely based on the Symfony UniversalClassLoader.
37 | *
38 | * @author Fabien Potencier
39 | * @author Jordi Boggiano
40 | * @see https://www.php-fig.org/psr/psr-0/
41 | * @see https://www.php-fig.org/psr/psr-4/
42 | */
43 | class ClassLoader
44 | {
45 | /** @var ?string */
46 | private $vendorDir;
47 |
48 | // PSR-4
49 | /**
50 | * @var array[]
51 | * @psalm-var array>
52 | */
53 | private $prefixLengthsPsr4 = array();
54 | /**
55 | * @var array[]
56 | * @psalm-var array>
57 | */
58 | private $prefixDirsPsr4 = array();
59 | /**
60 | * @var array[]
61 | * @psalm-var array
62 | */
63 | private $fallbackDirsPsr4 = array();
64 |
65 | // PSR-0
66 | /**
67 | * @var array[]
68 | * @psalm-var array>
69 | */
70 | private $prefixesPsr0 = array();
71 | /**
72 | * @var array[]
73 | * @psalm-var array
74 | */
75 | private $fallbackDirsPsr0 = array();
76 |
77 | /** @var bool */
78 | private $useIncludePath = false;
79 |
80 | /**
81 | * @var string[]
82 | * @psalm-var array
83 | */
84 | private $classMap = array();
85 |
86 | /** @var bool */
87 | private $classMapAuthoritative = false;
88 |
89 | /**
90 | * @var bool[]
91 | * @psalm-var array
92 | */
93 | private $missingClasses = array();
94 |
95 | /** @var ?string */
96 | private $apcuPrefix;
97 |
98 | /**
99 | * @var self[]
100 | */
101 | private static $registeredLoaders = array();
102 |
103 | /**
104 | * @param ?string $vendorDir
105 | */
106 | public function __construct($vendorDir = null)
107 | {
108 | $this->vendorDir = $vendorDir;
109 | }
110 |
111 | /**
112 | * @return string[]
113 | */
114 | public function getPrefixes()
115 | {
116 | if (!empty($this->prefixesPsr0)) {
117 | return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
118 | }
119 |
120 | return array();
121 | }
122 |
123 | /**
124 | * @return array[]
125 | * @psalm-return array>
126 | */
127 | public function getPrefixesPsr4()
128 | {
129 | return $this->prefixDirsPsr4;
130 | }
131 |
132 | /**
133 | * @return array[]
134 | * @psalm-return array
135 | */
136 | public function getFallbackDirs()
137 | {
138 | return $this->fallbackDirsPsr0;
139 | }
140 |
141 | /**
142 | * @return array[]
143 | * @psalm-return array
144 | */
145 | public function getFallbackDirsPsr4()
146 | {
147 | return $this->fallbackDirsPsr4;
148 | }
149 |
150 | /**
151 | * @return string[] Array of classname => path
152 | * @psalm-return array
153 | */
154 | public function getClassMap()
155 | {
156 | return $this->classMap;
157 | }
158 |
159 | /**
160 | * @param string[] $classMap Class to filename map
161 | * @psalm-param array $classMap
162 | *
163 | * @return void
164 | */
165 | public function addClassMap(array $classMap)
166 | {
167 | if ($this->classMap) {
168 | $this->classMap = array_merge($this->classMap, $classMap);
169 | } else {
170 | $this->classMap = $classMap;
171 | }
172 | }
173 |
174 | /**
175 | * Registers a set of PSR-0 directories for a given prefix, either
176 | * appending or prepending to the ones previously set for this prefix.
177 | *
178 | * @param string $prefix The prefix
179 | * @param string[]|string $paths The PSR-0 root directories
180 | * @param bool $prepend Whether to prepend the directories
181 | *
182 | * @return void
183 | */
184 | public function add($prefix, $paths, $prepend = false)
185 | {
186 | if (!$prefix) {
187 | if ($prepend) {
188 | $this->fallbackDirsPsr0 = array_merge(
189 | (array) $paths,
190 | $this->fallbackDirsPsr0
191 | );
192 | } else {
193 | $this->fallbackDirsPsr0 = array_merge(
194 | $this->fallbackDirsPsr0,
195 | (array) $paths
196 | );
197 | }
198 |
199 | return;
200 | }
201 |
202 | $first = $prefix[0];
203 | if (!isset($this->prefixesPsr0[$first][$prefix])) {
204 | $this->prefixesPsr0[$first][$prefix] = (array) $paths;
205 |
206 | return;
207 | }
208 | if ($prepend) {
209 | $this->prefixesPsr0[$first][$prefix] = array_merge(
210 | (array) $paths,
211 | $this->prefixesPsr0[$first][$prefix]
212 | );
213 | } else {
214 | $this->prefixesPsr0[$first][$prefix] = array_merge(
215 | $this->prefixesPsr0[$first][$prefix],
216 | (array) $paths
217 | );
218 | }
219 | }
220 |
221 | /**
222 | * Registers a set of PSR-4 directories for a given namespace, either
223 | * appending or prepending to the ones previously set for this namespace.
224 | *
225 | * @param string $prefix The prefix/namespace, with trailing '\\'
226 | * @param string[]|string $paths The PSR-4 base directories
227 | * @param bool $prepend Whether to prepend the directories
228 | *
229 | * @throws \InvalidArgumentException
230 | *
231 | * @return void
232 | */
233 | public function addPsr4($prefix, $paths, $prepend = false)
234 | {
235 | if (!$prefix) {
236 | // Register directories for the root namespace.
237 | if ($prepend) {
238 | $this->fallbackDirsPsr4 = array_merge(
239 | (array) $paths,
240 | $this->fallbackDirsPsr4
241 | );
242 | } else {
243 | $this->fallbackDirsPsr4 = array_merge(
244 | $this->fallbackDirsPsr4,
245 | (array) $paths
246 | );
247 | }
248 | } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
249 | // Register directories for a new namespace.
250 | $length = strlen($prefix);
251 | if ('\\' !== $prefix[$length - 1]) {
252 | throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
253 | }
254 | $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
255 | $this->prefixDirsPsr4[$prefix] = (array) $paths;
256 | } elseif ($prepend) {
257 | // Prepend directories for an already registered namespace.
258 | $this->prefixDirsPsr4[$prefix] = array_merge(
259 | (array) $paths,
260 | $this->prefixDirsPsr4[$prefix]
261 | );
262 | } else {
263 | // Append directories for an already registered namespace.
264 | $this->prefixDirsPsr4[$prefix] = array_merge(
265 | $this->prefixDirsPsr4[$prefix],
266 | (array) $paths
267 | );
268 | }
269 | }
270 |
271 | /**
272 | * Registers a set of PSR-0 directories for a given prefix,
273 | * replacing any others previously set for this prefix.
274 | *
275 | * @param string $prefix The prefix
276 | * @param string[]|string $paths The PSR-0 base directories
277 | *
278 | * @return void
279 | */
280 | public function set($prefix, $paths)
281 | {
282 | if (!$prefix) {
283 | $this->fallbackDirsPsr0 = (array) $paths;
284 | } else {
285 | $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
286 | }
287 | }
288 |
289 | /**
290 | * Registers a set of PSR-4 directories for a given namespace,
291 | * replacing any others previously set for this namespace.
292 | *
293 | * @param string $prefix The prefix/namespace, with trailing '\\'
294 | * @param string[]|string $paths The PSR-4 base directories
295 | *
296 | * @throws \InvalidArgumentException
297 | *
298 | * @return void
299 | */
300 | public function setPsr4($prefix, $paths)
301 | {
302 | if (!$prefix) {
303 | $this->fallbackDirsPsr4 = (array) $paths;
304 | } else {
305 | $length = strlen($prefix);
306 | if ('\\' !== $prefix[$length - 1]) {
307 | throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
308 | }
309 | $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
310 | $this->prefixDirsPsr4[$prefix] = (array) $paths;
311 | }
312 | }
313 |
314 | /**
315 | * Turns on searching the include path for class files.
316 | *
317 | * @param bool $useIncludePath
318 | *
319 | * @return void
320 | */
321 | public function setUseIncludePath($useIncludePath)
322 | {
323 | $this->useIncludePath = $useIncludePath;
324 | }
325 |
326 | /**
327 | * Can be used to check if the autoloader uses the include path to check
328 | * for classes.
329 | *
330 | * @return bool
331 | */
332 | public function getUseIncludePath()
333 | {
334 | return $this->useIncludePath;
335 | }
336 |
337 | /**
338 | * Turns off searching the prefix and fallback directories for classes
339 | * that have not been registered with the class map.
340 | *
341 | * @param bool $classMapAuthoritative
342 | *
343 | * @return void
344 | */
345 | public function setClassMapAuthoritative($classMapAuthoritative)
346 | {
347 | $this->classMapAuthoritative = $classMapAuthoritative;
348 | }
349 |
350 | /**
351 | * Should class lookup fail if not found in the current class map?
352 | *
353 | * @return bool
354 | */
355 | public function isClassMapAuthoritative()
356 | {
357 | return $this->classMapAuthoritative;
358 | }
359 |
360 | /**
361 | * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
362 | *
363 | * @param string|null $apcuPrefix
364 | *
365 | * @return void
366 | */
367 | public function setApcuPrefix($apcuPrefix)
368 | {
369 | $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
370 | }
371 |
372 | /**
373 | * The APCu prefix in use, or null if APCu caching is not enabled.
374 | *
375 | * @return string|null
376 | */
377 | public function getApcuPrefix()
378 | {
379 | return $this->apcuPrefix;
380 | }
381 |
382 | /**
383 | * Registers this instance as an autoloader.
384 | *
385 | * @param bool $prepend Whether to prepend the autoloader or not
386 | *
387 | * @return void
388 | */
389 | public function register($prepend = false)
390 | {
391 | spl_autoload_register(array($this, 'loadClass'), true, $prepend);
392 |
393 | if (null === $this->vendorDir) {
394 | return;
395 | }
396 |
397 | if ($prepend) {
398 | self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
399 | } else {
400 | unset(self::$registeredLoaders[$this->vendorDir]);
401 | self::$registeredLoaders[$this->vendorDir] = $this;
402 | }
403 | }
404 |
405 | /**
406 | * Unregisters this instance as an autoloader.
407 | *
408 | * @return void
409 | */
410 | public function unregister()
411 | {
412 | spl_autoload_unregister(array($this, 'loadClass'));
413 |
414 | if (null !== $this->vendorDir) {
415 | unset(self::$registeredLoaders[$this->vendorDir]);
416 | }
417 | }
418 |
419 | /**
420 | * Loads the given class or interface.
421 | *
422 | * @param string $class The name of the class
423 | * @return true|null True if loaded, null otherwise
424 | */
425 | public function loadClass($class)
426 | {
427 | if ($file = $this->findFile($class)) {
428 | includeFile($file);
429 |
430 | return true;
431 | }
432 |
433 | return null;
434 | }
435 |
436 | /**
437 | * Finds the path to the file where the class is defined.
438 | *
439 | * @param string $class The name of the class
440 | *
441 | * @return string|false The path if found, false otherwise
442 | */
443 | public function findFile($class)
444 | {
445 | // class map lookup
446 | if (isset($this->classMap[$class])) {
447 | return $this->classMap[$class];
448 | }
449 | if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
450 | return false;
451 | }
452 | if (null !== $this->apcuPrefix) {
453 | $file = apcu_fetch($this->apcuPrefix.$class, $hit);
454 | if ($hit) {
455 | return $file;
456 | }
457 | }
458 |
459 | $file = $this->findFileWithExtension($class, '.php');
460 |
461 | // Search for Hack files if we are running on HHVM
462 | if (false === $file && defined('HHVM_VERSION')) {
463 | $file = $this->findFileWithExtension($class, '.hh');
464 | }
465 |
466 | if (null !== $this->apcuPrefix) {
467 | apcu_add($this->apcuPrefix.$class, $file);
468 | }
469 |
470 | if (false === $file) {
471 | // Remember that this class does not exist.
472 | $this->missingClasses[$class] = true;
473 | }
474 |
475 | return $file;
476 | }
477 |
478 | /**
479 | * Returns the currently registered loaders indexed by their corresponding vendor directories.
480 | *
481 | * @return self[]
482 | */
483 | public static function getRegisteredLoaders()
484 | {
485 | return self::$registeredLoaders;
486 | }
487 |
488 | /**
489 | * @param string $class
490 | * @param string $ext
491 | * @return string|false
492 | */
493 | private function findFileWithExtension($class, $ext)
494 | {
495 | // PSR-4 lookup
496 | $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
497 |
498 | $first = $class[0];
499 | if (isset($this->prefixLengthsPsr4[$first])) {
500 | $subPath = $class;
501 | while (false !== $lastPos = strrpos($subPath, '\\')) {
502 | $subPath = substr($subPath, 0, $lastPos);
503 | $search = $subPath . '\\';
504 | if (isset($this->prefixDirsPsr4[$search])) {
505 | $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
506 | foreach ($this->prefixDirsPsr4[$search] as $dir) {
507 | if (file_exists($file = $dir . $pathEnd)) {
508 | return $file;
509 | }
510 | }
511 | }
512 | }
513 | }
514 |
515 | // PSR-4 fallback dirs
516 | foreach ($this->fallbackDirsPsr4 as $dir) {
517 | if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
518 | return $file;
519 | }
520 | }
521 |
522 | // PSR-0 lookup
523 | if (false !== $pos = strrpos($class, '\\')) {
524 | // namespaced class name
525 | $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
526 | . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
527 | } else {
528 | // PEAR-like class name
529 | $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
530 | }
531 |
532 | if (isset($this->prefixesPsr0[$first])) {
533 | foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
534 | if (0 === strpos($class, $prefix)) {
535 | foreach ($dirs as $dir) {
536 | if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
537 | return $file;
538 | }
539 | }
540 | }
541 | }
542 | }
543 |
544 | // PSR-0 fallback dirs
545 | foreach ($this->fallbackDirsPsr0 as $dir) {
546 | if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
547 | return $file;
548 | }
549 | }
550 |
551 | // PSR-0 include paths.
552 | if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
553 | return $file;
554 | }
555 |
556 | return false;
557 | }
558 | }
559 |
560 | /**
561 | * Scope isolated include.
562 | *
563 | * Prevents access to $this/self from included files.
564 | *
565 | * @param string $file
566 | * @return void
567 | * @private
568 | */
569 | function includeFile($file)
570 | {
571 | include $file;
572 | }
573 |
--------------------------------------------------------------------------------
/vendor/composer/InstalledVersions.php:
--------------------------------------------------------------------------------
1 |
7 | * Jordi Boggiano
8 | *
9 | * For the full copyright and license information, please view the LICENSE
10 | * file that was distributed with this source code.
11 | */
12 |
13 | namespace Composer;
14 |
15 | use Composer\Autoload\ClassLoader;
16 | use Composer\Semver\VersionParser;
17 |
18 | /**
19 | * This class is copied in every Composer installed project and available to all
20 | *
21 | * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22 | *
23 | * To require its presence, you can require `composer-runtime-api ^2.0`
24 | *
25 | * @final
26 | */
27 | class InstalledVersions
28 | {
29 | /**
30 | * @var mixed[]|null
31 | * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null
32 | */
33 | private static $installed;
34 |
35 | /**
36 | * @var bool|null
37 | */
38 | private static $canGetVendors;
39 |
40 | /**
41 | * @var array[]
42 | * @psalm-var array}>
43 | */
44 | private static $installedByVendor = array();
45 |
46 | /**
47 | * Returns a list of all package names which are present, either by being installed, replaced or provided
48 | *
49 | * @return string[]
50 | * @psalm-return list
51 | */
52 | public static function getInstalledPackages()
53 | {
54 | $packages = array();
55 | foreach (self::getInstalled() as $installed) {
56 | $packages[] = array_keys($installed['versions']);
57 | }
58 |
59 | if (1 === \count($packages)) {
60 | return $packages[0];
61 | }
62 |
63 | return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
64 | }
65 |
66 | /**
67 | * Returns a list of all package names with a specific type e.g. 'library'
68 | *
69 | * @param string $type
70 | * @return string[]
71 | * @psalm-return list
72 | */
73 | public static function getInstalledPackagesByType($type)
74 | {
75 | $packagesByType = array();
76 |
77 | foreach (self::getInstalled() as $installed) {
78 | foreach ($installed['versions'] as $name => $package) {
79 | if (isset($package['type']) && $package['type'] === $type) {
80 | $packagesByType[] = $name;
81 | }
82 | }
83 | }
84 |
85 | return $packagesByType;
86 | }
87 |
88 | /**
89 | * Checks whether the given package is installed
90 | *
91 | * This also returns true if the package name is provided or replaced by another package
92 | *
93 | * @param string $packageName
94 | * @param bool $includeDevRequirements
95 | * @return bool
96 | */
97 | public static function isInstalled($packageName, $includeDevRequirements = true)
98 | {
99 | foreach (self::getInstalled() as $installed) {
100 | if (isset($installed['versions'][$packageName])) {
101 | return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
102 | }
103 | }
104 |
105 | return false;
106 | }
107 |
108 | /**
109 | * Checks whether the given package satisfies a version constraint
110 | *
111 | * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
112 | *
113 | * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
114 | *
115 | * @param VersionParser $parser Install composer/semver to have access to this class and functionality
116 | * @param string $packageName
117 | * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
118 | * @return bool
119 | */
120 | public static function satisfies(VersionParser $parser, $packageName, $constraint)
121 | {
122 | $constraint = $parser->parseConstraints($constraint);
123 | $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
124 |
125 | return $provided->matches($constraint);
126 | }
127 |
128 | /**
129 | * Returns a version constraint representing all the range(s) which are installed for a given package
130 | *
131 | * It is easier to use this via isInstalled() with the $constraint argument if you need to check
132 | * whether a given version of a package is installed, and not just whether it exists
133 | *
134 | * @param string $packageName
135 | * @return string Version constraint usable with composer/semver
136 | */
137 | public static function getVersionRanges($packageName)
138 | {
139 | foreach (self::getInstalled() as $installed) {
140 | if (!isset($installed['versions'][$packageName])) {
141 | continue;
142 | }
143 |
144 | $ranges = array();
145 | if (isset($installed['versions'][$packageName]['pretty_version'])) {
146 | $ranges[] = $installed['versions'][$packageName]['pretty_version'];
147 | }
148 | if (array_key_exists('aliases', $installed['versions'][$packageName])) {
149 | $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
150 | }
151 | if (array_key_exists('replaced', $installed['versions'][$packageName])) {
152 | $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
153 | }
154 | if (array_key_exists('provided', $installed['versions'][$packageName])) {
155 | $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
156 | }
157 |
158 | return implode(' || ', $ranges);
159 | }
160 |
161 | throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
162 | }
163 |
164 | /**
165 | * @param string $packageName
166 | * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
167 | */
168 | public static function getVersion($packageName)
169 | {
170 | foreach (self::getInstalled() as $installed) {
171 | if (!isset($installed['versions'][$packageName])) {
172 | continue;
173 | }
174 |
175 | if (!isset($installed['versions'][$packageName]['version'])) {
176 | return null;
177 | }
178 |
179 | return $installed['versions'][$packageName]['version'];
180 | }
181 |
182 | throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
183 | }
184 |
185 | /**
186 | * @param string $packageName
187 | * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
188 | */
189 | public static function getPrettyVersion($packageName)
190 | {
191 | foreach (self::getInstalled() as $installed) {
192 | if (!isset($installed['versions'][$packageName])) {
193 | continue;
194 | }
195 |
196 | if (!isset($installed['versions'][$packageName]['pretty_version'])) {
197 | return null;
198 | }
199 |
200 | return $installed['versions'][$packageName]['pretty_version'];
201 | }
202 |
203 | throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
204 | }
205 |
206 | /**
207 | * @param string $packageName
208 | * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
209 | */
210 | public static function getReference($packageName)
211 | {
212 | foreach (self::getInstalled() as $installed) {
213 | if (!isset($installed['versions'][$packageName])) {
214 | continue;
215 | }
216 |
217 | if (!isset($installed['versions'][$packageName]['reference'])) {
218 | return null;
219 | }
220 |
221 | return $installed['versions'][$packageName]['reference'];
222 | }
223 |
224 | throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
225 | }
226 |
227 | /**
228 | * @param string $packageName
229 | * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
230 | */
231 | public static function getInstallPath($packageName)
232 | {
233 | foreach (self::getInstalled() as $installed) {
234 | if (!isset($installed['versions'][$packageName])) {
235 | continue;
236 | }
237 |
238 | return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
239 | }
240 |
241 | throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
242 | }
243 |
244 | /**
245 | * @return array
246 | * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
247 | */
248 | public static function getRootPackage()
249 | {
250 | $installed = self::getInstalled();
251 |
252 | return $installed[0]['root'];
253 | }
254 |
255 | /**
256 | * Returns the raw installed.php data for custom implementations
257 | *
258 | * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
259 | * @return array[]
260 | * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}
261 | */
262 | public static function getRawData()
263 | {
264 | @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
265 |
266 | if (null === self::$installed) {
267 | // only require the installed.php file if this file is loaded from its dumped location,
268 | // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
269 | if (substr(__DIR__, -8, 1) !== 'C') {
270 | self::$installed = include __DIR__ . '/installed.php';
271 | } else {
272 | self::$installed = array();
273 | }
274 | }
275 |
276 | return self::$installed;
277 | }
278 |
279 | /**
280 | * Returns the raw data of all installed.php which are currently loaded for custom implementations
281 | *
282 | * @return array[]
283 | * @psalm-return list}>
284 | */
285 | public static function getAllRawData()
286 | {
287 | return self::getInstalled();
288 | }
289 |
290 | /**
291 | * Lets you reload the static array from another file
292 | *
293 | * This is only useful for complex integrations in which a project needs to use
294 | * this class but then also needs to execute another project's autoloader in process,
295 | * and wants to ensure both projects have access to their version of installed.php.
296 | *
297 | * A typical case would be PHPUnit, where it would need to make sure it reads all
298 | * the data it needs from this class, then call reload() with
299 | * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
300 | * the project in which it runs can then also use this class safely, without
301 | * interference between PHPUnit's dependencies and the project's dependencies.
302 | *
303 | * @param array[] $data A vendor/composer/installed.php data set
304 | * @return void
305 | *
306 | * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data
307 | */
308 | public static function reload($data)
309 | {
310 | self::$installed = $data;
311 | self::$installedByVendor = array();
312 | }
313 |
314 | /**
315 | * @return array[]
316 | * @psalm-return list}>
317 | */
318 | private static function getInstalled()
319 | {
320 | if (null === self::$canGetVendors) {
321 | self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
322 | }
323 |
324 | $installed = array();
325 |
326 | if (self::$canGetVendors) {
327 | foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
328 | if (isset(self::$installedByVendor[$vendorDir])) {
329 | $installed[] = self::$installedByVendor[$vendorDir];
330 | } elseif (is_file($vendorDir.'/composer/installed.php')) {
331 | $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
332 | if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
333 | self::$installed = $installed[count($installed) - 1];
334 | }
335 | }
336 | }
337 | }
338 |
339 | if (null === self::$installed) {
340 | // only require the installed.php file if this file is loaded from its dumped location,
341 | // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
342 | if (substr(__DIR__, -8, 1) !== 'C') {
343 | self::$installed = require __DIR__ . '/installed.php';
344 | } else {
345 | self::$installed = array();
346 | }
347 | }
348 | $installed[] = self::$installed;
349 |
350 | return $installed;
351 | }
352 | }
353 |
--------------------------------------------------------------------------------
/vendor/composer/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Copyright (c) Nils Adermann, Jordi Boggiano
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is furnished
9 | to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all
12 | copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
22 |
--------------------------------------------------------------------------------
/vendor/composer/autoload_classmap.php:
--------------------------------------------------------------------------------
1 | $vendorDir . '/composer/InstalledVersions.php',
10 | );
11 |
--------------------------------------------------------------------------------
/vendor/composer/autoload_namespaces.php:
--------------------------------------------------------------------------------
1 | array($baseDir . '/src'),
10 | 'Database\\Seeders\\' => array($vendorDir . '/laravel/pint/database/seeders'),
11 | 'Database\\Factories\\' => array($vendorDir . '/laravel/pint/database/factories'),
12 | 'App\\' => array($vendorDir . '/laravel/pint/app'),
13 | );
14 |
--------------------------------------------------------------------------------
/vendor/composer/autoload_real.php:
--------------------------------------------------------------------------------
1 | register(true);
33 |
34 | return $loader;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/composer/autoload_static.php:
--------------------------------------------------------------------------------
1 |
11 | array (
12 | 'Jcergolj\\InAppNotifications\\' => 28,
13 | ),
14 | 'D' =>
15 | array (
16 | 'Database\\Seeders\\' => 17,
17 | 'Database\\Factories\\' => 19,
18 | ),
19 | 'A' =>
20 | array (
21 | 'App\\' => 4,
22 | ),
23 | );
24 |
25 | public static $prefixDirsPsr4 = array (
26 | 'Jcergolj\\InAppNotifications\\' =>
27 | array (
28 | 0 => __DIR__ . '/../..' . '/src',
29 | ),
30 | 'Database\\Seeders\\' =>
31 | array (
32 | 0 => __DIR__ . '/..' . '/laravel/pint/database/seeders',
33 | ),
34 | 'Database\\Factories\\' =>
35 | array (
36 | 0 => __DIR__ . '/..' . '/laravel/pint/database/factories',
37 | ),
38 | 'App\\' =>
39 | array (
40 | 0 => __DIR__ . '/..' . '/laravel/pint/app',
41 | ),
42 | );
43 |
44 | public static $classMap = array (
45 | 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
46 | );
47 |
48 | public static function getInitializer(ClassLoader $loader)
49 | {
50 | return \Closure::bind(function () use ($loader) {
51 | $loader->prefixLengthsPsr4 = ComposerStaticInit7498346b29e1227c4c34b66ee9b9e837::$prefixLengthsPsr4;
52 | $loader->prefixDirsPsr4 = ComposerStaticInit7498346b29e1227c4c34b66ee9b9e837::$prefixDirsPsr4;
53 | $loader->classMap = ComposerStaticInit7498346b29e1227c4c34b66ee9b9e837::$classMap;
54 |
55 | }, null, ClassLoader::class);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/composer/installed.json:
--------------------------------------------------------------------------------
1 | {
2 | "packages": [
3 | {
4 | "name": "laravel/pint",
5 | "version": "v1.14.0",
6 | "version_normalized": "1.14.0.0",
7 | "source": {
8 | "type": "git",
9 | "url": "https://github.com/laravel/pint.git",
10 | "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e"
11 | },
12 | "dist": {
13 | "type": "zip",
14 | "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
15 | "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
16 | "shasum": ""
17 | },
18 | "require": {
19 | "ext-json": "*",
20 | "ext-mbstring": "*",
21 | "ext-tokenizer": "*",
22 | "ext-xml": "*",
23 | "php": "^8.1.0"
24 | },
25 | "require-dev": {
26 | "friendsofphp/php-cs-fixer": "^3.49.0",
27 | "illuminate/view": "^10.43.0",
28 | "larastan/larastan": "^2.8.1",
29 | "laravel-zero/framework": "^10.3.0",
30 | "mockery/mockery": "^1.6.7",
31 | "nunomaduro/termwind": "^1.15.1",
32 | "pestphp/pest": "^2.33.6"
33 | },
34 | "time": "2024-02-20T17:38:05+00:00",
35 | "bin": [
36 | "builds/pint"
37 | ],
38 | "type": "project",
39 | "installation-source": "dist",
40 | "autoload": {
41 | "psr-4": {
42 | "App\\": "app/",
43 | "Database\\Seeders\\": "database/seeders/",
44 | "Database\\Factories\\": "database/factories/"
45 | }
46 | },
47 | "notification-url": "https://packagist.org/downloads/",
48 | "license": [
49 | "MIT"
50 | ],
51 | "authors": [
52 | {
53 | "name": "Nuno Maduro",
54 | "email": "enunomaduro@gmail.com"
55 | }
56 | ],
57 | "description": "An opinionated code formatter for PHP.",
58 | "homepage": "https://laravel.com",
59 | "keywords": [
60 | "format",
61 | "formatter",
62 | "lint",
63 | "linter",
64 | "php"
65 | ],
66 | "support": {
67 | "issues": "https://github.com/laravel/pint/issues",
68 | "source": "https://github.com/laravel/pint"
69 | },
70 | "install-path": "../laravel/pint"
71 | }
72 | ],
73 | "dev": true,
74 | "dev-package-names": [
75 | "laravel/pint"
76 | ]
77 | }
78 |
--------------------------------------------------------------------------------
/vendor/composer/installed.php:
--------------------------------------------------------------------------------
1 | array(
3 | 'name' => 'jcergolj/in-app-notifications-for-laravel',
4 | 'pretty_version' => '1.0.0+no-version-set',
5 | 'version' => '1.0.0.0',
6 | 'reference' => NULL,
7 | 'type' => 'library',
8 | 'install_path' => __DIR__ . '/../../',
9 | 'aliases' => array(),
10 | 'dev' => true,
11 | ),
12 | 'versions' => array(
13 | 'jcergolj/in-app-notifications-for-laravel' => array(
14 | 'pretty_version' => '1.0.0+no-version-set',
15 | 'version' => '1.0.0.0',
16 | 'reference' => NULL,
17 | 'type' => 'library',
18 | 'install_path' => __DIR__ . '/../../',
19 | 'aliases' => array(),
20 | 'dev_requirement' => false,
21 | ),
22 | 'laravel/pint' => array(
23 | 'pretty_version' => 'v1.14.0',
24 | 'version' => '1.14.0.0',
25 | 'reference' => '6b127276e3f263f7bb17d5077e9e0269e61b2a0e',
26 | 'type' => 'project',
27 | 'install_path' => __DIR__ . '/../laravel/pint',
28 | 'aliases' => array(),
29 | 'dev_requirement' => true,
30 | ),
31 | ),
32 | );
33 |
--------------------------------------------------------------------------------
/vendor/laravel/pint/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Taylor Otwell
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/vendor/laravel/pint/builds/pint:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jcergolj/in-app-notifications-for-laravel/b1b3c9eb831fbd30e53b3346cbaf7a50b22b4fc9/vendor/laravel/pint/builds/pint
--------------------------------------------------------------------------------
/vendor/laravel/pint/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "laravel/pint",
3 | "description": "An opinionated code formatter for PHP.",
4 | "keywords": ["php", "format", "formatter", "lint", "linter"],
5 | "homepage": "https://laravel.com",
6 | "type": "project",
7 | "license": "MIT",
8 | "support": {
9 | "issues": "https://github.com/laravel/pint/issues",
10 | "source": "https://github.com/laravel/pint"
11 | },
12 | "authors": [
13 | {
14 | "name": "Nuno Maduro",
15 | "email": "enunomaduro@gmail.com"
16 | }
17 | ],
18 | "require": {
19 | "php": "^8.1.0",
20 | "ext-json": "*",
21 | "ext-mbstring": "*",
22 | "ext-tokenizer": "*",
23 | "ext-xml": "*"
24 | },
25 | "require-dev": {
26 | "friendsofphp/php-cs-fixer": "^3.49.0",
27 | "illuminate/view": "^10.43.0",
28 | "larastan/larastan": "^2.8.1",
29 | "laravel-zero/framework": "^10.3.0",
30 | "mockery/mockery": "^1.6.7",
31 | "nunomaduro/termwind": "^1.15.1",
32 | "pestphp/pest": "^2.33.6"
33 | },
34 | "autoload": {
35 | "psr-4": {
36 | "App\\": "app/",
37 | "Database\\Factories\\": "database/factories/",
38 | "Database\\Seeders\\": "database/seeders/"
39 | }
40 | },
41 | "autoload-dev": {
42 | "psr-4": {
43 | "Scripts\\": "scripts/",
44 | "Tests\\": "tests/"
45 | }
46 | },
47 | "config": {
48 | "preferred-install": "dist",
49 | "sort-packages": true,
50 | "optimize-autoloader": true,
51 | "platform": {
52 | "php": "8.1.0"
53 | },
54 | "allow-plugins": {
55 | "pestphp/pest-plugin": true
56 | }
57 | },
58 | "minimum-stability": "dev",
59 | "prefer-stable": true,
60 | "bin": ["builds/pint"]
61 | }
62 |
--------------------------------------------------------------------------------