Compare commits
334 commits
v2023.08.2
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
fd82adc73e |
|||
|
49f9f7fd3c |
|||
|
288fe04e95 |
|||
|
800898153d |
|||
|
79d8294ba1 |
|||
|
c89bf3bf1a |
|||
|
ce45727b60 |
|||
|
7ba32186cf |
|||
|
01cf40d1b8 |
|||
|
db05b1d4e7 |
|||
|
166fab652d |
|||
|
310142efc3 |
|||
|
3c05fe4248 |
|||
|
81b43f3dca |
|||
|
05288f04aa |
|||
|
a4edd396f0 |
|||
|
57bb0e03a3 |
|||
|
429314efba |
|||
|
af4a460ceb |
|||
|
ffc8374b9f |
|||
|
7ed667e941 |
|||
|
42de426467 |
|||
|
54bf26bd35 |
|||
|
59f8d4827b |
|||
|
8cc46fbe47 |
|||
|
160c83f99f |
|||
|
f3e2d1e2fc |
|||
|
3b273d0ee9 |
|||
|
e8ad39203f |
|||
|
6690d4e97e |
|||
|
93a2b9c0b5 |
|||
|
caba5377e3 |
|||
|
edca6b7abf |
|||
|
|
006ad34e1b |
||
|
|
3821e58e10 |
||
|
cebb14f59c |
|||
|
da992ff1b7 |
|||
|
a349858a7d |
|||
|
73d3d0aa85 |
|||
|
42cb4f5561 |
|||
| 296c823fc4 | |||
|
|
ad60b38826 | ||
|
|
4b8c38216f | ||
|
|
a44d14c6bd | ||
|
|
51beb44c30 | ||
|
|
e19e504f1b | ||
|
|
0a50c93d3a | ||
|
|
3e97458ee2 | ||
|
|
0a8db68e42 | ||
|
|
6c126bc20f | ||
|
|
80f4601670 | ||
|
|
b65eca420a | ||
|
|
02e9a6d85d | ||
|
|
98cc18191a | ||
|
|
11c3a2a85f | ||
|
|
06db3b1551 | ||
|
|
ec7e9ef0fb | ||
|
|
bc9c002eb7 | ||
|
|
f3bc3da7f8 | ||
|
|
92f01ad9d0 | ||
|
|
14c3a4e0ed | ||
|
|
3a6758002f | ||
|
|
5596afa450 | ||
|
|
27116d79ce | ||
|
|
f0f87f2a04 | ||
|
|
4a39504f6c | ||
|
|
2d462347f5 | ||
|
|
083a4eb8af | ||
|
|
9c306bd74e | ||
|
|
70234f23f8 | ||
|
|
588966a94f | ||
|
|
b257c17f57 | ||
|
|
97cab32d50 | ||
|
|
858312f77a | ||
|
|
f3694af95e | ||
|
|
f00947d721 | ||
|
|
4730f59dd0 | ||
|
|
29f40ced3b | ||
|
|
ee5931cba8 | ||
|
|
93abf0cb1e | ||
|
|
f674ef7838 | ||
|
|
bf34ffcbc4 | ||
|
|
d61a2d0109 | ||
|
|
80cbe94dc0 | ||
|
|
bb3f6afc81 | ||
|
|
5472d7c7c7 | ||
|
|
39d7895fad | ||
|
|
33c49199c7 | ||
|
|
031aa417b8 | ||
|
|
a480bdeac8 | ||
|
|
84517b7c92 | ||
|
|
217b24c1e8 | ||
|
|
33fec5e189 | ||
|
|
1bfc111503 | ||
|
|
6f5740ecee | ||
|
|
d52be035d0 | ||
|
|
34055ccb41 | ||
|
|
d1ec296717 | ||
|
|
57abc7d5a7 | ||
|
|
acb18eb1ad | ||
|
|
0d7eb302e8 | ||
|
|
8d1469a5f4 | ||
|
|
4b5c192301 | ||
|
|
d7dab43cf4 | ||
|
|
0e0d76760e | ||
|
|
c0eba1f9f7 | ||
|
|
de10ced0d2 | ||
|
|
d9b84b39d2 | ||
|
|
829ecc816d | ||
|
|
387c296638 | ||
|
|
2ea31ce775 | ||
|
|
e1717e13d1 | ||
|
|
0f4da7e3df | ||
|
|
3824f01f9b | ||
|
|
729be11b5a | ||
|
|
4114f350bf | ||
|
|
c9299b5410 | ||
|
|
2fbf6cdc39 | ||
|
|
e75b5ad8a9 | ||
|
|
35e1c10775 | ||
|
|
993198c16a | ||
|
|
89b7a0b7ae | ||
|
|
210d83db45 | ||
|
|
f7e4a21ff2 | ||
|
|
a1a8571873 | ||
|
|
9f58d1e5b3 | ||
|
|
40cd7fc002 | ||
|
|
898176c5d4 | ||
|
|
6f3be14459 | ||
|
|
2b9db42593 | ||
|
|
0cd22cf82b | ||
|
|
6f83c77109 | ||
|
|
0237bc60f3 | ||
|
|
8baf29f486 | ||
|
|
7c5461ddf3 | ||
|
|
663b96bad2 | ||
|
|
8da88fd38d | ||
|
|
faa43b2d74 | ||
|
|
26ab7d24d4 | ||
|
|
03bc2cd211 | ||
|
|
69ae67d510 | ||
|
|
f68e4cb3e6 | ||
|
|
361714b2f2 | ||
|
|
9c18e70754 | ||
|
|
d39ae4b8b5 | ||
|
|
ecfd933db1 | ||
|
|
968c1c996f | ||
|
|
a1eff2c46e | ||
|
|
652afe8093 | ||
|
|
506dbc2b90 | ||
|
|
0b050ec128 | ||
|
|
6bae748385 | ||
|
|
398fb1a1b3 | ||
|
|
5bbe4ed4b5 | ||
|
|
0b6f833b51 | ||
|
|
80ca3f4345 | ||
|
|
ed7a271816 | ||
|
|
9b4410becf | ||
|
|
e4e7ad6267 | ||
|
|
adce1b1cf8 | ||
|
|
359b480e0d | ||
|
|
90c52206ef | ||
|
|
60c11f8376 | ||
|
|
c644b720ea | ||
|
|
a85e8da2e8 | ||
|
|
59e5dc3470 | ||
|
|
41c22dd7f4 | ||
|
|
62b503194f | ||
|
|
a4edf22794 | ||
|
|
d70bf3bc74 | ||
|
|
c21e37a260 | ||
|
|
b249fb8215 | ||
|
|
4610066729 | ||
|
|
8796ca9abe | ||
|
|
98f2ccefea | ||
|
|
35924db567 | ||
|
|
fff8973a85 | ||
|
|
4b585fe2ca | ||
|
|
d8390f7a54 | ||
|
|
fcb30657cb | ||
|
|
4066dbb6d3 | ||
|
|
587788cb7a | ||
|
|
fe26401edc | ||
|
|
ef3fd13b55 | ||
|
|
98b36dd089 | ||
|
|
5b3a2efd82 | ||
|
|
a9e1cba778 | ||
|
|
f0ebb75759 | ||
|
|
9a0d3a4ccc | ||
|
|
3fc99d1c9d | ||
|
|
d4fef8b313 | ||
|
|
0262ba30ab | ||
|
|
e6d14246c9 | ||
|
|
0655a95967 | ||
|
|
9dfbac4b56 | ||
|
|
f1f1169606 | ||
|
|
5d6f390968 | ||
|
|
37b8be496e | ||
|
|
1af7891b11 | ||
|
|
f7d589aad4 | ||
|
|
59dd3cbdfa | ||
|
|
5acec31981 | ||
|
|
de8181ce93 | ||
|
|
09cffe2562 | ||
|
|
bc781baf14 | ||
|
|
4f10d73cf2 | ||
|
|
9d22db13a5 | ||
|
|
d78ba74d44 | ||
|
|
28a94afa50 | ||
|
|
fd12540d0a | ||
|
|
cc7fbbcdca | ||
|
|
88516c780c | ||
|
|
5ba30c2401 | ||
|
|
f56107be8d | ||
|
|
c16b9d351f | ||
|
|
e558997a6a | ||
|
|
5f3348ee79 | ||
|
|
abece1760b | ||
|
|
d6cd2d3154 | ||
|
|
ba85934ebc | ||
|
|
05c5c68460 | ||
|
|
8e36d3dcba | ||
|
|
4f50fa52c3 | ||
|
|
10714d05bd | ||
|
|
772460fc6e | ||
|
|
29338c7175 | ||
|
|
541106420e | ||
|
|
afd430e052 | ||
|
|
b1bdad158b | ||
|
|
754e074dd9 | ||
|
|
1013cd0456 | ||
|
|
9a5ebd6465 | ||
|
|
b29d84eef1 | ||
|
|
811a96cbe3 | ||
|
|
aa61d91b79 | ||
|
|
48de704b66 | ||
|
|
e171a0f8eb | ||
|
|
91896f9dff | ||
|
|
3f42bac3f4 | ||
|
|
03769ee93e | ||
|
|
e5c778e7ad | ||
|
|
aeb9501237 | ||
|
|
1556e6019e | ||
|
|
8b35647f85 | ||
|
|
7c572a1ca6 | ||
|
|
1c8fc95e31 | ||
|
|
0e5f6cd90a | ||
|
|
ac1c84ea55 | ||
|
|
fe06cd915c | ||
|
|
c04f07cb5c | ||
|
|
2a11cff663 | ||
|
|
c5d62dc343 | ||
|
|
b942762409 | ||
|
|
a40febdef9 | ||
|
|
22b74d1764 | ||
|
|
805e9f9dca | ||
|
|
fc7c365672 | ||
|
|
70afd73d2d | ||
|
|
94133ec0f7 | ||
|
|
8adae46775 | ||
|
|
06e760f975 | ||
|
|
74c48d7bb6 | ||
|
|
c96e27b8d2 | ||
|
|
c77a184c37 | ||
|
|
8584d25961 | ||
|
|
b60a70394f | ||
|
|
f7fa536753 | ||
|
|
b8de913210 | ||
|
|
d4021128fe | ||
|
|
5d0fc96ba5 | ||
|
|
4ff6785da1 | ||
|
|
01b9e61b6a | ||
|
|
b453b17797 | ||
|
|
50b0a2b5b3 | ||
|
|
09e5615505 | ||
|
|
cbdbd2d0c7 | ||
|
|
8a152b2138 | ||
|
|
8b4a838785 | ||
|
|
e816b3e3dc | ||
|
|
5e662802bc | ||
|
|
343207e8e4 | ||
|
|
8921eb16f7 | ||
|
|
c3509c0d41 | ||
|
|
94fa32d53e | ||
|
|
0f265f43f2 | ||
|
|
3c711a3be5 | ||
|
|
63ab693d87 | ||
|
|
7884f44391 | ||
|
|
a7ed69542b | ||
|
|
e7e2cfaf4b | ||
|
|
6feda31d56 | ||
|
|
6a2851447c | ||
|
|
294a9573e4 | ||
|
|
476a58fafc | ||
|
|
f0ed9a670f | ||
|
|
cb6e3d378d | ||
|
|
025f4e1773 | ||
|
|
b87c1467c6 | ||
|
|
606c641558 | ||
|
|
ad7f3fca65 | ||
|
|
cf2c13fa26 | ||
|
|
160c8a5d50 | ||
|
|
761cbb11a4 | ||
|
|
4ffec4148a | ||
|
|
bf5b014435 | ||
|
|
d9e3c5b179 | ||
|
|
1ffe9ea2b2 | ||
|
|
16ecc6abe3 | ||
|
|
1763281e39 | ||
|
|
b760a00f3f | ||
|
|
168400fab0 | ||
|
|
8af402a9e2 | ||
|
|
3d69dd05c2 | ||
|
|
fc2111ad4e | ||
|
|
6fd3f5b1d0 | ||
|
|
2832b08777 | ||
|
|
a160a5b4d1 | ||
|
|
092a771283 | ||
|
|
b9cf312ee6 | ||
|
|
cc2d653da6 | ||
|
|
5812807f7d | ||
|
|
05525e7a97 | ||
|
|
7637493fbb | ||
|
|
6a3d6af654 | ||
|
|
60d5008596 | ||
|
|
b55abe4d15 | ||
|
|
47b751c020 | ||
|
|
dcc3c8dd54 | ||
|
|
ea63711fb9 | ||
|
|
5fab5ac440 | ||
|
|
67dbc1f6e8 | ||
|
|
039a2fb895 | ||
|
|
27cac08f46 | ||
|
|
896b5c1550 |
|
|
@ -26,5 +26,3 @@ MEMCACHED_HOST=127.0.0.1
|
||||||
|
|
||||||
LASTFM_KEY=
|
LASTFM_KEY=
|
||||||
LASTFM_USER=
|
LASTFM_USER=
|
||||||
LASTFM_TOP_TRACKS=10
|
|
||||||
API_ROOT=http://127.0.0.1:3000
|
|
||||||
|
|
|
||||||
1
.github/CODEOWNERS
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
* @RoscoeDaWah
|
||||||
5
.gitignore
vendored
|
|
@ -17,5 +17,8 @@ yarn-error.log
|
||||||
/.fleet
|
/.fleet
|
||||||
/.idea
|
/.idea
|
||||||
/.vscode
|
/.vscode
|
||||||
.auth0.*.json
|
|
||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
|
/log
|
||||||
|
/storage
|
||||||
|
/tmp
|
||||||
|
/public/pub
|
||||||
|
|
|
||||||
5
.run/Development Server (External).run.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Development Server (External)" type="PhpLocalRunConfigurationType" factoryName="PHP Console" path="$PROJECT_DIR$/artisan" scriptParameters="serve --host 0.0.0.0 --port 8000">
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
5
.run/Development Server.run.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Development Server" type="PhpLocalRunConfigurationType" factoryName="PHP Console" path="$PROJECT_DIR$/artisan" scriptParameters="serve">
|
||||||
|
<method v="2" />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
|
@ -1 +1,3 @@
|
||||||
# diskfloppy.me
|
<img src="https://git.frzn.dev/RoscoeDaWah/wah.moe/raw/branch/master/assets/logo.svg" alt="" height="100" align="center"/>
|
||||||
|
<hr>
|
||||||
|
My personal website, developed using the Laravel framework
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,9 @@ class Handler extends ExceptionHandler
|
||||||
public function register(): void
|
public function register(): void
|
||||||
{
|
{
|
||||||
$this->reportable(function (Throwable $e) {
|
$this->reportable(function (Throwable $e) {
|
||||||
//
|
if (app()->bound('sentry')) {
|
||||||
|
app('sentry')->captureException($e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
app/Helpers/LegacyHelper.php
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
if (!function_exists('isLegacy')) {
|
||||||
|
/**
|
||||||
|
* Checks if the current hostname should return the legacy site
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function isLegacy(): bool {
|
||||||
|
return (
|
||||||
|
request()->getHost() === "legacy.wah.moe" || // Accessed via legacy.wah.moe domain
|
||||||
|
str_starts_with(request()->getHost(), "192.168") || // Accessed via local IP address
|
||||||
|
!request()->hasHeader("Host") // Browser does not send Host header (e.g. NCSA MOSAIC)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
15
app/Http/Controllers/BookmarksController.php
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\BookmarkSite;
|
||||||
|
use App\Models\BookmarkCategory;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
|
||||||
|
class BookmarksController extends Controller
|
||||||
|
{
|
||||||
|
public function show() : View {
|
||||||
|
$categories = BookmarkCategory::with('sites')->get();
|
||||||
|
return view('bookmarks', compact('categories'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,37 +2,32 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\GuestbookEntry;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use DB;
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\Validation\ValidationException;
|
||||||
|
use UAParser\Parser;
|
||||||
|
|
||||||
class GuestbookController extends Controller {
|
class GuestbookController extends Controller {
|
||||||
public function guestbook() {
|
public function show(): View {
|
||||||
return view('pages.guestbook');
|
$entries = GuestbookEntry::selectEntries();
|
||||||
|
$parser = Parser::create();
|
||||||
|
|
||||||
|
return view('guestbook')
|
||||||
|
->with('entries', $entries)
|
||||||
|
->with('parser', $parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function guestbookPost(Request $request) {
|
/**
|
||||||
$this->validate($request, [
|
* Creates a new guestbook entry
|
||||||
'name' => 'required',
|
*
|
||||||
'message' => 'required'
|
* @param Request $request
|
||||||
]);
|
* @return RedirectResponse
|
||||||
|
* @throws ValidationException
|
||||||
$matching_bans = DB::select('SELECT reason FROM guestbook__bans WHERE ip_address = ?', array($request->ip()));
|
*/
|
||||||
|
public function addEntry(Request $request): RedirectResponse {
|
||||||
if (!empty($matching_bans)) {
|
GuestbookEntry::insertGuestbookEntry($request);
|
||||||
return view('errors.guestbook-ipban')->with('reason', $matching_bans[0]->reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
DB::insert(
|
|
||||||
'INSERT INTO guestbook__entries (name, timestamp, ip_address, agent, message) values (?, ?, ?, ?, ?)',
|
|
||||||
[
|
|
||||||
htmlspecialchars($request->get('name')),
|
|
||||||
time(),
|
|
||||||
$request->ip(),
|
|
||||||
$request->userAgent(),
|
|
||||||
htmlspecialchars($request->get('message'))
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
return back()->with('success', 'Entry submitted successfully!');
|
return back()->with('success', 'Entry submitted successfully!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
33
app/Http/Controllers/HomeController.php
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
|
class HomeController extends Controller {
|
||||||
|
/**
|
||||||
|
* Returns age based on birthday date and current date (GMT)
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
function returnAge(): int {
|
||||||
|
date_default_timezone_set('Europe/London');
|
||||||
|
$birthday = new DateTime("2005-06-07");
|
||||||
|
$currentDate = DateTime::createFromFormat("Y-m-d", date("Y-m-d"));
|
||||||
|
$age = $birthday->diff($currentDate);
|
||||||
|
return $age->y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows home page
|
||||||
|
* @return View
|
||||||
|
*/
|
||||||
|
public function show(): View {
|
||||||
|
return view('home', [
|
||||||
|
'age' => $this->returnAge(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
76
app/Http/Controllers/MusicController.php
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
|
||||||
|
class MusicController extends Controller
|
||||||
|
{
|
||||||
|
public function getCurrentTrack() {
|
||||||
|
// If it's already cached just return that
|
||||||
|
if (Cache::has('current_track')) {
|
||||||
|
return Cache::get('current_track');
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::withQueryParameters([
|
||||||
|
'method' => 'user.getrecenttracks',
|
||||||
|
'user' => Config::get('services.lastfm.user'),
|
||||||
|
'format' => 'json',
|
||||||
|
'nowplaying' => 'true',
|
||||||
|
'api_key' => Config::get('services.lastfm.key')
|
||||||
|
])->get('https://ws.audioscrobbler.com/2.0/');
|
||||||
|
$data = $response->json();
|
||||||
|
$track_data = $data["recenttracks"]["track"][0];
|
||||||
|
// $image = array_column($track_data["image"], null, 'size')['large'] ?? false;
|
||||||
|
$image = end($track_data["image"]) ?? false;
|
||||||
|
$now_playing = false;
|
||||||
|
if (array_key_exists("@attr", $track_data)) {
|
||||||
|
$now_playing = $track_data["@attr"]["nowplaying"] == "true" ?? ["url"=>null];
|
||||||
|
}
|
||||||
|
$current_track = [
|
||||||
|
'title' => $track_data["name"],
|
||||||
|
'artist' => $track_data["artist"]["#text"],
|
||||||
|
'url' => $track_data["url"],
|
||||||
|
'image' => $image["#text"],
|
||||||
|
'header' => $now_playing ? "Now Playing" : "Last Track",
|
||||||
|
];
|
||||||
|
Cache::put('current_track', $current_track, now()->addSeconds(15));
|
||||||
|
return $current_track;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTopTracks() {
|
||||||
|
// If it's already cached just return that
|
||||||
|
if (Cache::has('top_tracks')) {
|
||||||
|
return Cache::get('top_tracks');
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = Http::withQueryParameters([
|
||||||
|
'method' => 'user.gettoptracks',
|
||||||
|
'user' => Config::get('services.lastfm.user'),
|
||||||
|
'format' => 'json',
|
||||||
|
'period' => '1month',
|
||||||
|
'limit' => 10,
|
||||||
|
'api_key' => Config::get('services.lastfm.key')
|
||||||
|
])->get('https://ws.audioscrobbler.com/2.0/');
|
||||||
|
$data = $response->json();
|
||||||
|
$topTracks = [];
|
||||||
|
foreach ($data["toptracks"]["track"] as $track) {
|
||||||
|
$topTracks[] = [
|
||||||
|
'title' => $track["name"],
|
||||||
|
'artist' => $track["artist"]["name"],
|
||||||
|
'url' => $track["url"],
|
||||||
|
'plays' => $track["playcount"],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
Cache::put('top_tracks', $topTracks, now()->addSeconds(15));
|
||||||
|
return $topTracks;
|
||||||
|
}
|
||||||
|
public function show() : View {
|
||||||
|
return view('music')
|
||||||
|
->with('current_track', $this->getCurrentTrack())
|
||||||
|
->with('top_tracks', $this->getTopTracks());
|
||||||
|
}
|
||||||
|
}
|
||||||
52
app/Http/Controllers/RoscoLekoController.php
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
use Illuminate\View\View;
|
||||||
|
|
||||||
|
class RoscoLekoController extends Controller {
|
||||||
|
public function getImages(): array {
|
||||||
|
$images = [];
|
||||||
|
$path = 'images/pandamonium';
|
||||||
|
if (isLegacy()) {
|
||||||
|
$path = 'images/pandamonium-legacy';
|
||||||
|
}
|
||||||
|
foreach (File::glob(public_path($path).'/*') as $path) {
|
||||||
|
$image_data = [];
|
||||||
|
try {
|
||||||
|
$exif = exif_read_data($path);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$image_data["path"] = str_replace(public_path(), '', $path);
|
||||||
|
if (isset($exif)) {
|
||||||
|
if (isset($exif["ImageDescription"])) {
|
||||||
|
$image_data["description"] = $exif["ImageDescription"];
|
||||||
|
}
|
||||||
|
if (isset($exif["DateTime"])) {
|
||||||
|
$image_data["date"] = strtotime($exif["DateTime"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
array_push($images, $image_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
usort($images, function ($a, $b) {
|
||||||
|
$dateA = $a['date'] ?? PHP_INT_MIN;
|
||||||
|
$dateB = $b['date'] ?? PHP_INT_MIN;
|
||||||
|
return $dateB <=> $dateA;
|
||||||
|
});
|
||||||
|
|
||||||
|
return $images;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows the page
|
||||||
|
* @return View
|
||||||
|
*/
|
||||||
|
public function show(): View {
|
||||||
|
return view('pandamonium', [
|
||||||
|
'images' => $this->getImages(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -47,6 +47,7 @@ class Kernel extends HttpKernel
|
||||||
|
|
||||||
protected $routeMiddleware = [
|
protected $routeMiddleware = [
|
||||||
'rate_limit' => \App\Http\Middleware\RateLimiter::class,
|
'rate_limit' => \App\Http\Middleware\RateLimiter::class,
|
||||||
|
'validator' => \App\Http\Middleware\GuestbookValidate::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,6 @@ class EncryptCookies extends Middleware
|
||||||
* @var array<int, string>
|
* @var array<int, string>
|
||||||
*/
|
*/
|
||||||
protected $except = [
|
protected $except = [
|
||||||
//
|
"colorscheme"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
37
app/Http/Middleware/GuestbookValidate.php
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class GuestbookValidate
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Handle an incoming request.
|
||||||
|
*
|
||||||
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next): Response
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
!$request->validate([
|
||||||
|
'name' => 'required',
|
||||||
|
'message' => 'required'
|
||||||
|
]) ||
|
||||||
|
$this->containsUrl($request->get('message')) ||
|
||||||
|
$this->containsUrl($request->get('name'))
|
||||||
|
) {
|
||||||
|
return response()->view('errors.guestbook-invalid', [], 400);
|
||||||
|
}
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function containsUrl($str) {
|
||||||
|
$matches = [];
|
||||||
|
$pattern = '/\b(?:https?|ftp|www)(:\/\/)*[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i';
|
||||||
|
preg_match_all($pattern, $str, $matches);
|
||||||
|
return count($matches[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,9 @@ class RateLimiter
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next): Response
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
|
if (auth()->check()) {
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
$ipAddress = $request->ip();
|
$ipAddress = $request->ip();
|
||||||
$cacheKey = 'rate_limit_'.$ipAddress;
|
$cacheKey = 'rate_limit_'.$ipAddress;
|
||||||
|
|
||||||
|
|
|
||||||
36
app/Models/BookmarkCategory.php
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class BookmarkCategory extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
protected $table = "bookmark__categories";
|
||||||
|
protected $fillable = ['name'];
|
||||||
|
|
||||||
|
public function sites() {
|
||||||
|
return $this->hasMany(BookmarkSite::class, 'category');
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function insertBookmarkCategory(string $name) {
|
||||||
|
$newBookmarkCategory = new BookmarkCategory;
|
||||||
|
$newBookmarkCategory->name = $name;
|
||||||
|
$newBookmarkCategory->save();
|
||||||
|
}
|
||||||
|
public static function selectBookmarks(int $id) {
|
||||||
|
$bookmarks = BookmarkSite::where('category', '=', $id)->firstOrFail();
|
||||||
|
return $bookmarks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function importBookmarkCategory(array $data) {
|
||||||
|
foreach ($data as $category) {
|
||||||
|
$newBookmarkCategory = new BookmarkCategory;
|
||||||
|
$newBookmarkCategory->name = $category['name'];
|
||||||
|
$newBookmarkCategory->priority = intval($category['priority']);
|
||||||
|
$newBookmarkCategory->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
35
app/Models/BookmarkSite.php
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class BookmarkSite extends Model {
|
||||||
|
use HasFactory;
|
||||||
|
protected $table = "bookmark__sites";
|
||||||
|
protected $fillable = ['name', 'description', 'url', 'category'];
|
||||||
|
|
||||||
|
public function category() {
|
||||||
|
return $this->belongsTo(BookmarkCategory::class, 'category');
|
||||||
|
}
|
||||||
|
public static function insertBookmark(string $name, string $url, int $category) {
|
||||||
|
$category = BookmarkCategory::where('id', $category)->firstOrFail();
|
||||||
|
$newBookmark = new BookmarkSite;
|
||||||
|
$newBookmark->name = $name;
|
||||||
|
$newBookmark->url = $url;
|
||||||
|
$newBookmark->category = $category->id;
|
||||||
|
$newBookmark->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function importBookmark(array $data) {
|
||||||
|
foreach ($data as $site) {
|
||||||
|
$newBookmark = new BookmarkSite;
|
||||||
|
$newBookmark->name = $site['name'];
|
||||||
|
$newBookmark->description = $site['description'];
|
||||||
|
$newBookmark->url = $site['url'];
|
||||||
|
$newBookmark->category = $site['category_id'];
|
||||||
|
$newBookmark->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
app/Models/GuestbookEntry.php
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class GuestbookEntry extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
protected $table = "guestbook__entries";
|
||||||
|
protected $fillable = ['name', 'message'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new guestbook entry.
|
||||||
|
*
|
||||||
|
* @param Request $request The HTTP POST request
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function insertGuestbookEntry(Request $request) {
|
||||||
|
$newEntry = new GuestbookEntry;
|
||||||
|
$newEntry->name = $request->get('name');
|
||||||
|
$newEntry->message = $request->get('message');
|
||||||
|
$newEntry->ip = $request->ip();
|
||||||
|
$newEntry->agent = $request->userAgent();
|
||||||
|
$newEntry->legacy_flagged = isLegacy();
|
||||||
|
$newEntry->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function selectEntries() {
|
||||||
|
$entries = GuestbookEntry::where("legacy_flagged", false)->orderBy('created_at', 'desc')->get();
|
||||||
|
return $entries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function importGuestbookEntry(array $data) {
|
||||||
|
foreach ($data as $entry) {
|
||||||
|
$dt = new \DateTime('@' . $entry['timestamp']);
|
||||||
|
$newEntry = new GuestbookEntry;
|
||||||
|
$newEntry->name = $entry['name'];
|
||||||
|
$newEntry->ip = $entry['ip_address'];
|
||||||
|
$newEntry->agent = $entry['agent'];
|
||||||
|
$newEntry->admin = $entry['site_owner'];
|
||||||
|
$newEntry->message = $entry['message'];
|
||||||
|
$newEntry->created_at = $dt;
|
||||||
|
$newEntry->updated_at = $dt;
|
||||||
|
$newEntry->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
// use Illuminate\Contracts\Auth\MustVerifyEmail;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
|
||||||
use Illuminate\Notifications\Notifiable;
|
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
|
||||||
|
|
||||||
class User extends Authenticatable
|
|
||||||
{
|
|
||||||
use HasApiTokens, HasFactory, Notifiable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that are mass assignable.
|
|
||||||
*
|
|
||||||
* @var array<int, string>
|
|
||||||
*/
|
|
||||||
protected $fillable = [
|
|
||||||
'name',
|
|
||||||
'email',
|
|
||||||
'password',
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that should be hidden for serialization.
|
|
||||||
*
|
|
||||||
* @var array<int, string>
|
|
||||||
*/
|
|
||||||
protected $hidden = [
|
|
||||||
'password',
|
|
||||||
'remember_token',
|
|
||||||
];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The attributes that should be cast.
|
|
||||||
*
|
|
||||||
* @var array<string, string>
|
|
||||||
*/
|
|
||||||
protected $casts = [
|
|
||||||
'email_verified_at' => 'datetime',
|
|
||||||
'password' => 'hashed',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -2,23 +2,20 @@
|
||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
use PostHog\PostHog;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider {
|
||||||
{
|
|
||||||
/**
|
/**
|
||||||
* Register any application services.
|
* Register any application services.
|
||||||
*/
|
*/
|
||||||
public function register(): void
|
public function register(): void {
|
||||||
{
|
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bootstrap any application services.
|
* Bootstrap any application services.
|
||||||
*/
|
*/
|
||||||
public function boot(): void
|
public function boot(): void {}
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
app/View/Components/LastFMCurrent.php
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class LastFMCurrent extends Component {
|
||||||
|
public $track;
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct($track) {
|
||||||
|
$this->track = $track;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
return view('components.lastfm-current');
|
||||||
|
}
|
||||||
|
}
|
||||||
24
app/View/Components/LastFMTop.php
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class LastFMTop extends Component {
|
||||||
|
public $tracks;
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct($tracks) {
|
||||||
|
$this->tracks = $tracks;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
return view('components.lastfm-top');
|
||||||
|
}
|
||||||
|
}
|
||||||
26
app/View/Components/LastFMTrack.php
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class LastFMTrack extends Component {
|
||||||
|
public $track;
|
||||||
|
public $count;
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct($track, $count) {
|
||||||
|
$this->track = $track;
|
||||||
|
$this->count = $count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
return view('components.lastfm-track');
|
||||||
|
}
|
||||||
|
}
|
||||||
40
app/View/Components/Layout.php
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use DateTime;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class Layout extends Component {
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
if (isLegacy()) {
|
||||||
|
return view('components.layout-legacy', [
|
||||||
|
'isChristmas' => $this->isItChristmas()
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return view('components.layout', [
|
||||||
|
'isChristmas' => $this->isItChristmas()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isItChristmas() : bool {
|
||||||
|
$currentDate = new DateTime();
|
||||||
|
$currentYear = intval($currentDate->format('Y'));
|
||||||
|
|
||||||
|
$startDate = new DateTime("$currentYear-11-10");
|
||||||
|
$endDate = new DateTime(($currentYear + 1) . "-01-01");
|
||||||
|
|
||||||
|
return $currentDate >= $startDate && $currentDate < $endDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
24
app/View/Components/Navbar.php
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class Navbar extends Component {
|
||||||
|
public $title;
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct($title) {
|
||||||
|
$this->title = $title;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
return view('components.navigation');
|
||||||
|
}
|
||||||
|
}
|
||||||
50
app/View/Components/Wah.php
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\View\Components;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\View\Component;
|
||||||
|
|
||||||
|
class Wah extends Component {
|
||||||
|
/**
|
||||||
|
* Create a new component instance.
|
||||||
|
*/
|
||||||
|
public function __construct() {}
|
||||||
|
|
||||||
|
|
||||||
|
public function getWah(): string {
|
||||||
|
if (isLegacy()) {
|
||||||
|
try {
|
||||||
|
$response = Http::get('https://api.tinyfox.dev/img.json?animal=wah');
|
||||||
|
$data = $response->json();
|
||||||
|
if ($data == null) return "";
|
||||||
|
$path = parse_url("https://api.tinyfox.dev" . $data["loc"], PHP_URL_PATH);
|
||||||
|
return "//".request()->getHttpHost()."/proxy/wah/".basename($path);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$response = Http::get('https://api.tinyfox.dev/img.json?animal=wah');
|
||||||
|
$data = $response->json();
|
||||||
|
if ($data == null) return "";
|
||||||
|
return "https://api.tinyfox.dev" . $data["loc"];
|
||||||
|
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the view / contents that represent the component.
|
||||||
|
*/
|
||||||
|
public function render(): View|Closure|string {
|
||||||
|
return view('components.wah', [
|
||||||
|
'wah' => $this->getWah(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
45
assets/logo.svg
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 1893 339" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<g transform="matrix(1,0,0,1,0,-420.871)">
|
||||||
|
<g id="Artboard2" transform="matrix(0.73917,0,0,0.235401,0,420.871)">
|
||||||
|
<rect x="0" y="0" width="2560" height="1440" style="fill:none;"/>
|
||||||
|
<g transform="matrix(1.62833,0,0,5.11304,-84.1879,-2332.06)">
|
||||||
|
<g transform="matrix(0.9823,0.187314,-0.187314,0.9823,115.768,-33.3744)">
|
||||||
|
<path d="M326.769,715.888C330.602,715.888 334.435,713.529 335.909,711.76C377.188,663.11 403.135,488.853 403.135,488.263C403.135,483.545 401.071,479.418 395.764,478.238L343.281,467.918C342.101,467.624 340.922,467.624 339.742,467.624C336.204,467.624 334.14,469.098 332.961,472.931C329.717,484.135 308.783,589.987 302.001,607.383C300.822,610.921 299.643,612.395 298.463,612.395C297.284,612.395 296.104,610.921 295.515,607.972L273.991,526.594C272.516,522.466 268.388,519.222 262.491,519.222L261.607,519.222L223.276,521.581C214.136,522.171 210.303,526.299 210.008,530.427C204.111,614.754 202.047,615.344 198.509,615.344C197.329,615.344 196.15,614.164 195.265,612.1L138.949,482.661C138.064,480.597 135.116,477.648 130.398,477.648C129.219,477.648 128.039,477.943 126.86,478.238L70.249,497.993C67.3,498.878 65.826,502.416 65.826,505.954C65.826,507.134 66.121,508.608 66.711,509.787L159.883,718.836C161.063,721.49 165.191,724.144 170.203,724.144L171.088,724.144L214.431,721.785C222.687,721.785 229.173,718.836 249.518,644.239L273.106,712.939C273.991,715.593 278.413,718.247 283.426,718.247L284.31,718.247L326.769,715.888Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:7.06px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.996964,-0.077866,0.077866,0.996964,-83.3213,42.4174)">
|
||||||
|
<path d="M650.81,701.735C653.758,700.556 655.233,697.312 655.233,694.364C655.233,692.889 654.643,691.12 654.053,689.941L551.74,481.776C550.561,479.123 545.548,476.174 539.356,476.174L496.603,476.174C492.18,476.174 487.757,478.238 485.988,479.712C437.928,524.53 387.508,690.236 387.508,699.376C387.508,703.799 389.867,707.337 395.469,709.106L440.581,722.08C442.35,722.669 443.825,722.964 445.299,722.964C448.837,722.964 451.196,720.9 452.67,717.362C453.555,714.708 457.683,703.799 463.285,689.646L517.832,692.3L518.422,692.3C522.255,692.3 525.203,689.056 525.498,685.518L529.036,632.74L529.036,632.15C529.036,628.317 526.088,625.074 522.255,625.074L488.642,623.305C507.218,576.423 510.461,568.168 512.82,568.168C513.704,568.168 514.589,569.052 515.473,571.116L580.93,717.952C581.815,720.016 585.353,722.669 590.071,722.669C591.545,722.669 593.314,722.375 594.788,721.785L650.81,701.735Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:7.06px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.997179,0.0750623,-0.0750623,0.997179,-50.4766,-58.4735)">
|
||||||
|
<path d="M899.664,721.785C903.497,721.785 906.74,718.836 907.035,715.003L919.124,485.02C919.124,481.187 916.175,477.648 912.342,477.648L853.077,474.405L852.488,474.405C848.655,474.405 845.706,477.648 845.411,481.187L841.283,560.502L778.48,557.258L777.89,557.258C774.352,557.258 771.109,560.502 770.814,564.04L768.455,615.639L768.455,616.228C768.455,619.767 771.404,623.01 775.237,623.305L838.04,626.253L833.322,711.17C833.322,715.003 836.271,718.247 840.104,718.541L899.664,721.785ZM750.764,720.311C754.597,720.311 757.841,717.067 757.841,713.234L757.841,482.956C757.841,479.123 754.597,475.879 750.764,475.879L690.909,475.879C687.076,475.879 683.833,479.123 683.833,482.956L683.833,713.234C683.833,717.067 687.076,720.311 690.909,720.311L750.764,720.311Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:7.06px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.991478,-0.130275,0.130275,0.991478,-201.194,134.945)">
|
||||||
|
<path d="M1022.32,629.497C1025.86,629.497 1028.22,626.843 1028.81,623.305C1033.53,596.178 1038.24,558.732 1038.24,523.94C1038.24,477.059 1033.82,476.174 1028.51,476.174L965.415,476.174C961.877,476.174 959.518,479.123 959.518,482.366C959.813,523.055 964.236,597.063 966.005,623.305C966.3,626.843 968.954,629.497 972.492,629.497L1022.32,629.497ZM996.67,726.208C1019.67,726.208 1038.54,707.337 1038.54,684.044C1038.54,660.751 1019.67,641.88 996.67,641.88C973.376,641.88 954.506,660.751 954.506,684.044C954.506,707.337 973.376,726.208 996.67,726.208Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:7.06px;"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(1.08899,0,0,3.41949,182.218,-900.313)">
|
||||||
|
<path d="M1220.95,663.011C1221.88,662.394 1222.96,661.778 1222.96,660.544C1222.96,659.928 1222.65,659.157 1221.88,658.232C1212.94,647.902 1197.06,623.541 1197.06,593.784C1197.06,565.415 1212.01,541.055 1221.26,530.108C1222.34,528.874 1222.65,527.949 1222.65,527.024C1222.65,525.945 1221.88,525.174 1220.8,524.403L1216.64,522.09C1216.02,521.782 1215.4,521.474 1214.94,521.474C1213.4,521.474 1212.16,522.553 1211.24,523.632C1202.45,533.5 1183.8,557.089 1183.8,593.784C1183.8,631.096 1203.22,654.84 1211.7,664.399C1212.78,665.632 1213.71,666.095 1214.63,666.095C1215.25,666.095 1215.71,665.941 1216.33,665.632L1220.95,663.011Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
<g transform="matrix(0.990492,-0.137573,0.137573,0.990492,-69.4464,184.165)">
|
||||||
|
<path d="M1242.85,649.597C1243.15,655.456 1246.09,657.923 1251.17,659.157C1252.25,659.311 1253.49,659.465 1254.72,659.773C1261.96,661.007 1269.21,661.624 1276.3,661.624C1320.09,661.624 1358.33,637.726 1358.33,594.093C1358.33,585.459 1356.79,575.899 1353.39,565.569C1344.61,538.588 1317.32,527.333 1291.26,527.333C1282.16,527.333 1273.07,528.72 1265.05,531.341L1240.38,532.729C1238.38,532.729 1236.83,534.579 1236.83,536.583L1242.85,649.597ZM1276.92,561.561C1280.47,560.635 1284.32,560.019 1288.02,560.019C1316.55,560.019 1316.7,590.546 1316.7,593.168C1316.7,612.748 1301.9,625.545 1284.01,625.545C1282.78,625.545 1281.55,625.545 1280.31,625.391L1276.92,561.561Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.999241,0.0389517,-0.0389517,0.999241,24.2226,-55.6835)">
|
||||||
|
<path d="M1510.66,593.63C1510.66,567.882 1492.16,527.178 1442.82,527.178C1415.68,527.178 1386.39,540.13 1376.37,568.961C1373.13,578.52 1371.59,587.617 1371.59,596.097C1371.59,634.488 1402.42,660.39 1437.58,660.39C1468.88,660.39 1510.66,636.03 1510.66,593.63ZM1442.82,626.316C1426.94,626.316 1412.14,613.057 1412.14,593.476C1412.14,579.445 1419.85,560.327 1442.2,560.327C1463.63,560.327 1471.81,578.212 1471.81,593.476C1471.81,610.898 1461.17,626.316 1442.82,626.316Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.998795,-0.0490748,0.0490748,0.998795,-27.2616,77.677)">
|
||||||
|
<path d="M1590.68,657.769C1592.53,657.615 1594.22,656.073 1594.22,654.069L1594.22,653.915L1589.6,565.723L1613.96,564.49C1616.12,564.336 1617.66,562.486 1617.66,560.481L1616.27,532.266C1616.27,530.108 1614.27,528.566 1612.26,528.566L1551.21,531.804L1522.38,533.346C1520.37,533.5 1518.83,535.042 1518.83,536.892L1518.83,537.2L1520.22,565.723C1520.22,567.728 1522.07,569.27 1524.23,569.27L1549.51,567.882L1554.14,655.919C1554.14,657.769 1555.68,659.465 1557.68,659.465L1557.99,659.465L1590.68,657.769Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.993146,-0.116878,0.116878,0.993146,-57.3371,210.711)">
|
||||||
|
<path d="M1834.28,659.157C1836.6,659.157 1838.29,656.844 1838.44,654.685L1843.69,535.196L1843.69,534.887C1843.69,533.191 1842.76,531.033 1839.83,530.879L1809.15,529.337L1808.84,529.337C1806.68,529.337 1804.22,530.57 1803.6,531.341C1796.05,540.284 1781.55,562.948 1768.91,584.688C1768.6,585.15 1768.45,585.459 1768.14,585.459C1767.83,585.459 1767.68,585.304 1767.37,584.842C1754.73,563.102 1740.23,540.284 1732.68,531.341C1732.06,530.57 1728.98,529.337 1726.82,529.337L1726.51,529.337L1696.14,531.033C1693.21,531.341 1692.28,533.654 1692.28,535.35L1698.3,654.685C1698.3,656.844 1699.99,659.157 1702.46,659.157L1702.61,659.157L1732.22,656.69C1735.61,656.381 1737.77,653.144 1737.77,651.448L1737.77,651.293L1730.83,585.767L1730.83,584.688C1730.83,583.763 1730.98,583.146 1731.29,583.146C1731.75,583.146 1732.22,583.608 1732.83,584.379C1735.76,588.388 1747.02,611.515 1754.73,625.7C1755.65,627.55 1757.19,629.862 1759.97,629.862L1775.85,629.246C1779.24,629.092 1780.94,626.933 1781.55,625.7C1789.11,611.515 1800.36,587.463 1803.14,583.608C1803.76,582.837 1804.22,582.375 1804.53,582.375C1804.99,582.375 1805.14,582.992 1805.14,584.071L1805.14,584.842L1797.9,651.448L1797.9,651.602C1797.9,653.298 1799.44,656.69 1802.83,656.844L1834.13,659.157L1834.28,659.157Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.994193,0.107609,-0.107609,0.994193,75.0929,-204.041)">
|
||||||
|
<path d="M1997.71,593.63C1997.71,567.882 1979.21,527.178 1929.87,527.178C1902.74,527.178 1873.44,540.13 1863.42,568.961C1860.18,578.52 1858.64,587.617 1858.64,596.097C1858.64,634.488 1889.48,660.39 1924.63,660.39C1955.93,660.39 1997.71,636.03 1997.71,593.63ZM1929.87,626.316C1913.99,626.316 1899.19,613.057 1899.19,593.476C1899.19,579.445 1906.9,560.327 1929.26,560.327C1950.69,560.327 1958.86,578.212 1958.86,593.476C1958.86,610.898 1948.22,626.316 1929.87,626.316Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<g transform="matrix(0.99192,-0.126865,0.126865,0.99192,-58.7652,265.507)">
|
||||||
|
<path d="M2093.61,655.919C2095.77,655.765 2097.31,653.915 2097.31,651.91L2096.24,625.083C2096.24,623.233 2094.54,621.537 2092.53,621.537L2092.23,621.537L2054.76,623.541L2053.99,609.202L2079.58,609.202C2081.74,609.202 2083.28,607.506 2083.44,605.348L2083.75,581.758L2083.75,581.45C2083.75,579.445 2081.9,577.904 2080.05,577.904L2052.45,577.904L2051.68,564.644L2087.6,562.794C2089.45,562.64 2091.15,560.944 2091.15,559.094L2091.15,558.785L2089.91,531.958C2089.76,530.108 2088.06,528.412 2086.21,528.412L2085.91,528.412L2044.89,530.57L2044.28,530.57L2016.22,532.112C2014.37,532.112 2012.67,533.808 2012.67,535.658L2012.67,535.967L2018.99,656.227C2019.14,658.077 2020.69,659.773 2022.54,659.773L2022.85,659.773L2052.91,658.232C2053.06,658.232 2053.37,658.077 2053.53,658.077L2093.61,655.919Z" style="fill:rgb(223,80,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
<path d="M2115.35,665.632C2115.97,665.941 2116.43,666.095 2117.05,666.095C2117.97,666.095 2118.9,665.632 2119.98,664.399C2128.46,654.84 2147.89,631.096 2147.89,593.784C2147.89,557.089 2129.23,533.5 2120.44,523.632C2119.52,522.553 2118.28,521.474 2116.74,521.474C2116.28,521.474 2115.66,521.782 2115.05,522.09L2110.88,524.403C2109.8,525.174 2109.03,525.945 2109.03,527.024C2109.03,527.949 2109.34,528.874 2110.42,530.108C2119.67,541.055 2134.63,565.415 2134.63,593.784C2134.63,623.541 2118.74,647.902 2109.8,658.232C2109.03,659.157 2108.72,659.928 2108.72,660.544C2108.72,661.778 2109.8,662.394 2110.73,663.011L2115.35,665.632Z" style="fill:rgb(255,152,0);fill-rule:nonzero;stroke:rgb(249,247,204);stroke-width:5.59px;"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -1,18 +1,21 @@
|
||||||
{
|
{
|
||||||
"name": "floppydisk05/diskfloppy.me",
|
"name": "roscoedawah/wah.moe",
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"description": "My personal website, developed using the Laravel framework.",
|
"description": "My personal website, developed using the Laravel framework.",
|
||||||
"keywords": ["laravel", "framework"],
|
"keywords": ["laravel", "framework"],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.1",
|
"php": "^8.1",
|
||||||
"auth0/login": "^7.8",
|
"ext-exif": "*",
|
||||||
|
"browner12/helpers": "^3.7",
|
||||||
"guzzlehttp/guzzle": "^7.2",
|
"guzzlehttp/guzzle": "^7.2",
|
||||||
|
"intervention/image": "^3.9",
|
||||||
"laravel/framework": "^10.10",
|
"laravel/framework": "^10.10",
|
||||||
"laravel/sanctum": "^3.2",
|
|
||||||
"laravel/tinker": "^2.8",
|
"laravel/tinker": "^2.8",
|
||||||
"scrivo/highlight.php": "v9.18.1.10",
|
"scrivo/highlight.php": "v9.18.1.10",
|
||||||
"spatie/laravel-honeypot": "^4.3"
|
"spatie/laravel-honeypot": "^4.3",
|
||||||
|
"spatie/laravel-html": "^3.4",
|
||||||
|
"ua-parser/uap-php": "^3.9.14"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.9.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
|
|
|
||||||
3949
composer.lock
generated
|
|
@ -4,12 +4,11 @@
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'name' => env('APP_NAME', 'diskfloppy.me'),
|
'name' => env('APP_NAME', 'wah.moe'),
|
||||||
'version' => '2023.08.26',
|
'version' => '2025.08.30-patch2',
|
||||||
'env' => env('APP_ENV', 'production'),
|
'env' => env('APP_ENV', 'production'),
|
||||||
'debug' => (bool) env('APP_DEBUG', false),
|
'debug' => (bool) env('APP_DEBUG', false),
|
||||||
'url' => env('APP_URL', 'http://localhost'),
|
'url' => env('APP_URL', 'http://localhost'),
|
||||||
'api_root' => env('API_ROOT', 'http://localhost:3000'),
|
|
||||||
|
|
||||||
'asset_url' => env('ASSET_URL'),
|
'asset_url' => env('ASSET_URL'),
|
||||||
'timezone' => 'UTC',
|
'timezone' => 'UTC',
|
||||||
|
|
@ -26,8 +25,8 @@
|
||||||
App\Providers\AuthServiceProvider::class,
|
App\Providers\AuthServiceProvider::class,
|
||||||
App\Providers\EventServiceProvider::class,
|
App\Providers\EventServiceProvider::class,
|
||||||
App\Providers\RouteServiceProvider::class,
|
App\Providers\RouteServiceProvider::class,
|
||||||
|
browner12\helpers\HelperServiceProvider::class
|
||||||
])->toArray(),
|
])->toArray(),
|
||||||
'aliases' => Facade::defaultAliases()->merge([
|
'aliases' => Facade::defaultAliases()->merge([
|
||||||
// 'Example' => App\Facades\Example::class,
|
|
||||||
])->toArray(),
|
])->toArray(),
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
use Auth0\Laravel\Configuration;
|
|
||||||
use Auth0\SDK\Configuration\SdkConfiguration;
|
|
||||||
|
|
||||||
return Configuration::VERSION_2 + [
|
|
||||||
'registerGuards' => true,
|
|
||||||
'registerMiddleware' => true,
|
|
||||||
'registerAuthenticationRoutes' => true,
|
|
||||||
'configurationPath' => null,
|
|
||||||
|
|
||||||
'guards' => [
|
|
||||||
'default' => [
|
|
||||||
Configuration::CONFIG_STRATEGY => Configuration::get(Configuration::CONFIG_STRATEGY, SdkConfiguration::STRATEGY_NONE),
|
|
||||||
Configuration::CONFIG_DOMAIN => Configuration::get(Configuration::CONFIG_DOMAIN),
|
|
||||||
Configuration::CONFIG_CUSTOM_DOMAIN => Configuration::get(Configuration::CONFIG_CUSTOM_DOMAIN),
|
|
||||||
Configuration::CONFIG_CLIENT_ID => Configuration::get(Configuration::CONFIG_CLIENT_ID),
|
|
||||||
Configuration::CONFIG_CLIENT_SECRET => Configuration::get(Configuration::CONFIG_CLIENT_SECRET),
|
|
||||||
Configuration::CONFIG_AUDIENCE => Configuration::get(Configuration::CONFIG_AUDIENCE),
|
|
||||||
Configuration::CONFIG_ORGANIZATION => Configuration::get(Configuration::CONFIG_ORGANIZATION),
|
|
||||||
Configuration::CONFIG_USE_PKCE => Configuration::get(Configuration::CONFIG_USE_PKCE),
|
|
||||||
Configuration::CONFIG_SCOPE => Configuration::get(Configuration::CONFIG_SCOPE),
|
|
||||||
Configuration::CONFIG_RESPONSE_MODE => Configuration::get(Configuration::CONFIG_RESPONSE_MODE),
|
|
||||||
Configuration::CONFIG_RESPONSE_TYPE => Configuration::get(Configuration::CONFIG_RESPONSE_TYPE),
|
|
||||||
Configuration::CONFIG_TOKEN_ALGORITHM => Configuration::get(Configuration::CONFIG_TOKEN_ALGORITHM),
|
|
||||||
Configuration::CONFIG_TOKEN_JWKS_URI => Configuration::get(Configuration::CONFIG_TOKEN_JWKS_URI),
|
|
||||||
Configuration::CONFIG_TOKEN_MAX_AGE => Configuration::get(Configuration::CONFIG_TOKEN_MAX_AGE),
|
|
||||||
Configuration::CONFIG_TOKEN_LEEWAY => Configuration::get(Configuration::CONFIG_TOKEN_LEEWAY),
|
|
||||||
Configuration::CONFIG_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_TOKEN_CACHE),
|
|
||||||
Configuration::CONFIG_TOKEN_CACHE_TTL => Configuration::get(Configuration::CONFIG_TOKEN_CACHE_TTL),
|
|
||||||
Configuration::CONFIG_HTTP_MAX_RETRIES => Configuration::get(Configuration::CONFIG_HTTP_MAX_RETRIES),
|
|
||||||
Configuration::CONFIG_HTTP_TELEMETRY => Configuration::get(Configuration::CONFIG_HTTP_TELEMETRY),
|
|
||||||
Configuration::CONFIG_MANAGEMENT_TOKEN => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN),
|
|
||||||
Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE),
|
|
||||||
Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY),
|
|
||||||
Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM),
|
|
||||||
Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST => Configuration::get(Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST),
|
|
||||||
],
|
|
||||||
|
|
||||||
'api' => [
|
|
||||||
Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_API,
|
|
||||||
],
|
|
||||||
|
|
||||||
'web' => [
|
|
||||||
Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_REGULAR,
|
|
||||||
Configuration::CONFIG_COOKIE_SECRET => Configuration::get(Configuration::CONFIG_COOKIE_SECRET, env('APP_KEY')),
|
|
||||||
Configuration::CONFIG_REDIRECT_URI => Configuration::get(Configuration::CONFIG_REDIRECT_URI, env('APP_URL') . '/callback'),
|
|
||||||
Configuration::CONFIG_SESSION_STORAGE => Configuration::get(Configuration::CONFIG_SESSION_STORAGE),
|
|
||||||
Configuration::CONFIG_SESSION_STORAGE_ID => Configuration::get(Configuration::CONFIG_SESSION_STORAGE_ID),
|
|
||||||
Configuration::CONFIG_TRANSIENT_STORAGE => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE),
|
|
||||||
Configuration::CONFIG_TRANSIENT_STORAGE_ID => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE_ID),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
||||||
<?php
|
|
||||||
return [
|
|
||||||
// Friends' Websites
|
|
||||||
[
|
|
||||||
'name' => "Friends' Websites",
|
|
||||||
'bookmarks' => [
|
|
||||||
[
|
|
||||||
'name' => "nick99nack",
|
|
||||||
'url' => "http://www.nick99nack.com/",
|
|
||||||
'description' => "Currently in the process of taking over the internet. I Totally didn't steal any of his stuff."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "campos",
|
|
||||||
'url' => "https://campos02.me/",
|
|
||||||
'description' => "Cool brazilian dude, does programming and stuff"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Sashi",
|
|
||||||
'url' => "https://joshuaalto.com/",
|
|
||||||
'description' => "Site redesign #8! I'll find a website style I enjoy eventually, I swear!"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "noone",
|
|
||||||
'url' => "http://strangenessnetworks.com/",
|
|
||||||
'description' => "Strangeness Networks, noone's website."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "raf",
|
|
||||||
'url' => "https://notashelf.dev/",
|
|
||||||
'description' => "is a shelf"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "CamK06",
|
|
||||||
'url' => "https://starman0620.neocities.org/",
|
|
||||||
'description' => "Now with more outdated HTML!"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "HIDEN",
|
|
||||||
'url' => "https://hiden.pw/",
|
|
||||||
'description' => "Moar buttons!"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "coco",
|
|
||||||
'url' => "http://cocomark.neocities.org/",
|
|
||||||
'description' => "needs to go to the brain store"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Toxidation",
|
|
||||||
'url' => "http://toxi.pw/",
|
|
||||||
'description' => "h (idk if this is his actual domain he has like 5)"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "xproot",
|
|
||||||
'url' => "http://xproot.pw/",
|
|
||||||
'description' => "a random internet person on this very random planet"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
// Cool Projects
|
|
||||||
[
|
|
||||||
'name' => "Cool Projects",
|
|
||||||
'bookmarks' => [
|
|
||||||
[
|
|
||||||
'name' => "ToS;DR",
|
|
||||||
'url' => "https://tosdr.org/",
|
|
||||||
'description' => "\"I have read and agree to the Terms\" is the biggest lie on the web. They aim to fix that."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "NINA",
|
|
||||||
'url' => "https://nina.chat/",
|
|
||||||
'description' => "Yahoo! Messenger (and soon AOL) revival"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Escargot",
|
|
||||||
'url' => "https://escargot.chat/",
|
|
||||||
'description' => "MSN/WLM revival"
|
|
||||||
],
|
|
||||||
]
|
|
||||||
],
|
|
||||||
// Other Cool Stuff
|
|
||||||
[
|
|
||||||
'name' => "Other Cool Stuff",
|
|
||||||
'bookmarks' => [
|
|
||||||
[
|
|
||||||
'name' => "WinWorld",
|
|
||||||
'url' => "http://www.winworldpc.com/",
|
|
||||||
'description' => "WinWorld is an online museum dedicated to the preservation and sharing of vintage, abandoned, and pre-release software."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "ToastyTech",
|
|
||||||
'url' => "http://toastytech.com/",
|
|
||||||
'description' => "Nathan's Toasty Technology Page"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Optimized for no one",
|
|
||||||
'url' => "http://www.hoary.org/browse/",
|
|
||||||
'description' => "Optimized for no one, but pretty much OK with . . ."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Cameron's World",
|
|
||||||
'url' => "http://www.cameronsworld.net/",
|
|
||||||
'description' => "A love letter to the Internet of old."
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
// Miscellaneous Resources
|
|
||||||
[
|
|
||||||
'name' => "Miscellaneous Resources",
|
|
||||||
'bookmarks' => [
|
|
||||||
[
|
|
||||||
'name' => "Home Manager (Appendix A)",
|
|
||||||
'url' => "https://rycee.gitlab.io/home-manager/options.html",
|
|
||||||
'description' => "Useful list of configuration options for Home Manager."
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
<?php
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
'name' => "Websites",
|
|
||||||
'projects' => [
|
|
||||||
[
|
|
||||||
'name' => "diskfloppy.me",
|
|
||||||
'description' => "The website you're looking at right now!",
|
|
||||||
'url' => "https://github.com/floppydisk05/diskfloppy.me",
|
|
||||||
'languages' => ["PHP", "CSS"]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "NetDrivers",
|
|
||||||
'description' => "Driver downloads website.",
|
|
||||||
'url' => "https://github.com/floppydisk05/NetDrivers",
|
|
||||||
'languages' => ["Ruby", "CSS"]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "APIs",
|
|
||||||
'projects' => [
|
|
||||||
[
|
|
||||||
'name' => "trivia-api",
|
|
||||||
'description' => "API to serve random trivia questions.",
|
|
||||||
'url' => "https://github.com/floppydisk05/trivia-api",
|
|
||||||
'languages' => ["JavaScript"]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Discord Bots",
|
|
||||||
'projects' => [
|
|
||||||
[
|
|
||||||
'name' => "PlexBot",
|
|
||||||
'description' => "A basic bot to play music from the configured Plex server in a Discord voice channel.",
|
|
||||||
'url' => "https://github.com/floppydisk05/PlexBot",
|
|
||||||
'languages' => ["Python"]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "Abandoned Projects",
|
|
||||||
'projects' => [
|
|
||||||
[
|
|
||||||
'name' => "website-cf",
|
|
||||||
'description' => "Rewrite of my personal website in Adobe ColdFusion.",
|
|
||||||
'url' => "https://github.com/floppydisk05/website-cf",
|
|
||||||
'languages' => ["Adobe ColdFusion"]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "WinBotJDA",
|
|
||||||
'description' => "Rewrite of CamK06's WinBot using Java and DiscordJDA.",
|
|
||||||
'url' => "https://github.com/floppydisk05/WinBotJDA",
|
|
||||||
'languages' => ["Java"]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "delayed-eject",
|
|
||||||
'description' => "Scripts which eject the cd drive a lot to annoy nick.",
|
|
||||||
'url' => "https://github.com/floppydisk05/delayed-eject",
|
|
||||||
'languages' => ["Shell", "C"]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => "php-sound",
|
|
||||||
'description' => "Plays a specified sound file or files on the web server when a php page is loaded.",
|
|
||||||
'url' => "https://github.com/floppydisk05/php-sound",
|
|
||||||
'languages' => ["PHP", "Shell"]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
];
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Laravel\Sanctum\Sanctum;
|
|
||||||
|
|
||||||
return [
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Stateful Domains
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| Requests from the following domains / hosts will receive stateful API
|
|
||||||
| authentication cookies. Typically, these should include your local
|
|
||||||
| and production domains which access your API via a frontend SPA.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
|
|
||||||
'%s%s',
|
|
||||||
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
|
|
||||||
Sanctum::currentApplicationUrlWithPort()
|
|
||||||
))),
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Sanctum Guards
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This array contains the authentication guards that will be checked when
|
|
||||||
| Sanctum is trying to authenticate a request. If none of these guards
|
|
||||||
| are able to authenticate the request, Sanctum will use the bearer
|
|
||||||
| token that's present on an incoming request for authentication.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'guard' => ['web'],
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Expiration Minutes
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| This value controls the number of minutes until an issued token will be
|
|
||||||
| considered expired. If this value is null, personal access tokens do
|
|
||||||
| not expire. This won't tweak the lifetime of first-party sessions.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'expiration' => null,
|
|
||||||
|
|
||||||
/*
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
| Sanctum Middleware
|
|
||||||
|--------------------------------------------------------------------------
|
|
||||||
|
|
|
||||||
| When authenticating your first-party SPA with Sanctum you may need to
|
|
||||||
| customize some of the middleware Sanctum uses while processing the
|
|
||||||
| request. You may change the middleware listed below as required.
|
|
||||||
|
|
|
||||||
*/
|
|
||||||
|
|
||||||
'middleware' => [
|
|
||||||
'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class,
|
|
||||||
'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class,
|
|
||||||
],
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
@ -17,6 +17,5 @@
|
||||||
'lastfm' => [
|
'lastfm' => [
|
||||||
'key' => env('LASTFM_KEY'),
|
'key' => env('LASTFM_KEY'),
|
||||||
'user' => env('LASTFM_USER'),
|
'user' => env('LASTFM_USER'),
|
||||||
'toptracks' => env('LASTFM_TOP_TRACKS')
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
|
||||||
23
database/factories/BookmarkCategoryFactory.php
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Factories;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BookmarkCategory>
|
||||||
|
*/
|
||||||
|
class BookmarkCategoryFactory extends Factory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Define the model's default state.
|
||||||
|
*
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
public function definition(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->faker->word,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
27
database/factories/BookmarkSiteFactory.php
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Factories;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
||||||
|
use App\Models\BookmarkCategory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BookmarkSite>
|
||||||
|
*/
|
||||||
|
class BookmarkSiteFactory extends Factory
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Define the model's default state.
|
||||||
|
*
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
|
public function definition(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => $this->faker->name,
|
||||||
|
'description' => $this->faker->sentence,
|
||||||
|
'url' => $this->faker->url,
|
||||||
|
'category' => BookmarkCategory::factory(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::create('password_reset_tokens', function (Blueprint $table) {
|
|
||||||
$table->string('email')->primary();
|
|
||||||
$table->string('token');
|
|
||||||
$table->timestamp('created_at')->nullable();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('password_reset_tokens');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*/
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::create('failed_jobs', function (Blueprint $table) {
|
|
||||||
$table->id();
|
|
||||||
$table->string('uuid')->unique();
|
|
||||||
$table->text('connection');
|
|
||||||
$table->text('queue');
|
|
||||||
$table->longText('payload');
|
|
||||||
$table->longText('exception');
|
|
||||||
$table->timestamp('failed_at')->useCurrent();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*/
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('failed_jobs');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
@ -11,13 +11,10 @@
|
||||||
*/
|
*/
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('users', function (Blueprint $table) {
|
Schema::create('bookmark__categories', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('email')->unique();
|
$table->unsignedBigInteger('priority')->nullable();
|
||||||
$table->timestamp('email_verified_at')->nullable();
|
|
||||||
$table->string('password');
|
|
||||||
$table->rememberToken();
|
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -27,6 +24,6 @@ public function up(): void
|
||||||
*/
|
*/
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('users');
|
Schema::dropIfExists('bookmark__categories');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('bookmark__sites', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name');
|
||||||
|
$table->text('description')->nullable();
|
||||||
|
$table->string('url');
|
||||||
|
$table->unsignedBigInteger('category');
|
||||||
|
$table->foreign('category')
|
||||||
|
->references('id')
|
||||||
|
->on('bookmark__categories')
|
||||||
|
->onDelete('cascade');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('bookmarks');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -11,14 +11,13 @@
|
||||||
*/
|
*/
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
Schema::create('guestbook__entries', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->morphs('tokenable');
|
|
||||||
$table->string('name');
|
$table->string('name');
|
||||||
$table->string('token', 64)->unique();
|
$table->string('ip');
|
||||||
$table->text('abilities')->nullable();
|
$table->string('agent');
|
||||||
$table->timestamp('last_used_at')->nullable();
|
$table->longText('message');
|
||||||
$table->timestamp('expires_at')->nullable();
|
$table->boolean('admin');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -28,6 +27,6 @@ public function up(): void
|
||||||
*/
|
*/
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('personal_access_tokens');
|
Schema::dropIfExists('guestbook__entries');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
30
database/seeders/BookmarkCategoriesTableSeeder.php
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\BookmarkCategory;
|
||||||
|
use App\Models\BookmarkSite;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class BookmarkCategoriesTableSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void {
|
||||||
|
// BookmarkCategory::factory()->count(5)->create()->each(function ($category) {
|
||||||
|
// $category->sites()->saveMany(BookmarkSite::factory()->count(3)->make());
|
||||||
|
// });
|
||||||
|
$category = new BookmarkCategory([
|
||||||
|
'name' => 'cool people',
|
||||||
|
]);
|
||||||
|
$category->save();
|
||||||
|
$site = new BookmarkSite([
|
||||||
|
'name' => 'campos',
|
||||||
|
'description' => 'Cool brazilian dude, does programming and stuff',
|
||||||
|
'url' => 'https://campos02.me/',
|
||||||
|
'category' => 1,
|
||||||
|
]);
|
||||||
|
$site->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace Database\Seeders;
|
|
||||||
|
|
||||||
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
||||||
use Illuminate\Database\Seeder;
|
|
||||||
|
|
||||||
class DatabaseSeeder extends Seeder
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Seed the application's database.
|
|
||||||
*/
|
|
||||||
public function run(): void
|
|
||||||
{
|
|
||||||
// \App\Models\User::factory(10)->create();
|
|
||||||
|
|
||||||
// \App\Models\User::factory()->create([
|
|
||||||
// 'name' => 'Test User',
|
|
||||||
// 'email' => 'test@example.com',
|
|
||||||
// ]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
881
package-lock.json
generated
Normal file
|
|
@ -0,0 +1,881 @@
|
||||||
|
{
|
||||||
|
"name": "wah.moe",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/browser": "^7.40.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"axios": "^1.1.2",
|
||||||
|
"laravel-vite-plugin": "^0.7.5",
|
||||||
|
"vite": "^4.5.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-arm": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/android-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/darwin-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/darwin-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/freebsd-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/freebsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-arm": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-ia32": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-loong64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
|
||||||
|
"cpu": [
|
||||||
|
"loong64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-mips64el": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
|
||||||
|
"cpu": [
|
||||||
|
"mips64el"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-ppc64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-riscv64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-s390x": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/netbsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"netbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/openbsd-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/sunos-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"sunos"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-arm64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-ia32": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/win32-x64": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry-internal/feedback": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-ewJJIQ0mbsOX6jfiVFvqMjokxNtgP3dNwUv+4nenN+iJJPQsM6a0ocro3iscxwVdbkjw5hY3BUV2ICI5Q0UWoA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry-internal/replay-canvas": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-s5xy+bVL1eDZchM6gmaOiXvTqpAsUfO7122DxVdEDMtwVq3e22bS2aiGa8CUgOiJkulZ+09q73nufM77kOmT/A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/replay": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry-internal/tracing": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-Ausx+Jw1pAMbIBHStoQ6ZqDZR60PsCByvHdw/jdH9AqPrNE9xlBSf9EwcycvmrzwyKspSLaB52grlje2cRIUMg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/browser": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-i9vGcK9N8zZ/JQo1TCEfHHYZ2miidOvgOABRUc9zQKhYdcYQB2/LU1kqlj77Pxdxf4wOa9137d6rPrSn9iiBxg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry-internal/feedback": "7.120.3",
|
||||||
|
"@sentry-internal/replay-canvas": "7.120.3",
|
||||||
|
"@sentry-internal/tracing": "7.120.3",
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/integrations": "7.120.3",
|
||||||
|
"@sentry/replay": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/core": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-vyy11fCGpkGK3qI5DSXOjgIboBZTriw0YDx/0KyX5CjIjDDNgp5AGgpgFkfZyiYiaU2Ww3iFuKo4wHmBusz1uA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/integrations": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-6i/lYp0BubHPDTg91/uxHvNui427df9r17SsIEXa2eKDwQ9gW2qRx5IWgvnxs2GV/GfSbwcx4swUB3RfEWrXrQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3",
|
||||||
|
"localforage": "^1.8.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/replay": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-CjVq1fP6bpDiX8VQxudD5MPWwatfXk8EJ2jQhJTcWu/4bCSOQmHxnnmBM+GVn5acKUBCodWHBN+IUZgnJheZSg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry-internal/tracing": "7.120.3",
|
||||||
|
"@sentry/core": "7.120.3",
|
||||||
|
"@sentry/types": "7.120.3",
|
||||||
|
"@sentry/utils": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/types": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-C4z+3kGWNFJ303FC+FxAd4KkHvxpNFYAFN8iMIgBwJdpIl25KZ8Q/VdGn0MLLUEHNLvjob0+wvwlcRBBNLXOow==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sentry/utils": {
|
||||||
|
"version": "7.120.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.120.3.tgz",
|
||||||
|
"integrity": "sha512-UDAOQJtJDxZHQ5Nm1olycBIsz2wdGX8SdzyGVHmD8EOQYAeDZQyIlQYohDe9nazdIOQLZCIc3fU0G9gqVLkaGQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/types": "7.120.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/asynckit": {
|
||||||
|
"version": "0.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/axios": {
|
||||||
|
"version": "1.7.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
|
||||||
|
"integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"follow-redirects": "^1.15.6",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
|
"proxy-from-env": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/combined-stream": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
|
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"delayed-stream": "~1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/delayed-stream": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/esbuild": {
|
||||||
|
"version": "0.18.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
|
||||||
|
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"esbuild": "bin/esbuild"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@esbuild/android-arm": "0.18.20",
|
||||||
|
"@esbuild/android-arm64": "0.18.20",
|
||||||
|
"@esbuild/android-x64": "0.18.20",
|
||||||
|
"@esbuild/darwin-arm64": "0.18.20",
|
||||||
|
"@esbuild/darwin-x64": "0.18.20",
|
||||||
|
"@esbuild/freebsd-arm64": "0.18.20",
|
||||||
|
"@esbuild/freebsd-x64": "0.18.20",
|
||||||
|
"@esbuild/linux-arm": "0.18.20",
|
||||||
|
"@esbuild/linux-arm64": "0.18.20",
|
||||||
|
"@esbuild/linux-ia32": "0.18.20",
|
||||||
|
"@esbuild/linux-loong64": "0.18.20",
|
||||||
|
"@esbuild/linux-mips64el": "0.18.20",
|
||||||
|
"@esbuild/linux-ppc64": "0.18.20",
|
||||||
|
"@esbuild/linux-riscv64": "0.18.20",
|
||||||
|
"@esbuild/linux-s390x": "0.18.20",
|
||||||
|
"@esbuild/linux-x64": "0.18.20",
|
||||||
|
"@esbuild/netbsd-x64": "0.18.20",
|
||||||
|
"@esbuild/openbsd-x64": "0.18.20",
|
||||||
|
"@esbuild/sunos-x64": "0.18.20",
|
||||||
|
"@esbuild/win32-arm64": "0.18.20",
|
||||||
|
"@esbuild/win32-ia32": "0.18.20",
|
||||||
|
"@esbuild/win32-x64": "0.18.20"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/follow-redirects": {
|
||||||
|
"version": "1.15.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
|
||||||
|
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "individual",
|
||||||
|
"url": "https://github.com/sponsors/RubenVerborgh"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"debug": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/form-data": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fsevents": {
|
||||||
|
"version": "2.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
||||||
|
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
||||||
|
"dev": true,
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/immediate": {
|
||||||
|
"version": "3.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
||||||
|
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/laravel-vite-plugin": {
|
||||||
|
"version": "0.7.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz",
|
||||||
|
"integrity": "sha512-HWYqpQYHR3kEQ1LsHX7gHJoNNf0bz5z5mDaHBLzS+PGLCTmYqlU5/SZyeEgObV7z7bC/cnStYcY9H1DI1D5Udg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"vite-plugin-full-reload": "^1.0.5"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vite": "^3.0.0 || ^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lie": {
|
||||||
|
"version": "3.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz",
|
||||||
|
"integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"immediate": "~3.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/localforage": {
|
||||||
|
"version": "1.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
|
||||||
|
"integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"lie": "3.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-db": {
|
||||||
|
"version": "1.52.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||||
|
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mime-types": {
|
||||||
|
"version": "2.1.35",
|
||||||
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
||||||
|
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"mime-db": "1.52.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 0.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
|
||||||
|
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8.6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
|
||||||
|
"integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.8",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/proxy-from-env": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "3.29.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz",
|
||||||
|
"integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.18.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vite": {
|
||||||
|
"version": "4.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz",
|
||||||
|
"integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"esbuild": "^0.18.10",
|
||||||
|
"postcss": "^8.4.27",
|
||||||
|
"rollup": "^3.27.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vite": "bin/vite.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.18.0 || >=16.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/vitejs/vite?sponsor=1"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": ">= 14",
|
||||||
|
"less": "*",
|
||||||
|
"lightningcss": "^1.21.0",
|
||||||
|
"sass": "*",
|
||||||
|
"stylus": "*",
|
||||||
|
"sugarss": "*",
|
||||||
|
"terser": "^5.4.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"less": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"lightningcss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"stylus": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sugarss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"terser": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vite-plugin-full-reload": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-kz18NW79x0IHbxRSHm0jttP4zoO9P9gXh+n6UTwlNKnviTTEpOlum6oS9SmecrTtSr+muHEn5TUuC75UovQzcA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"picomatch": "^2.3.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"axios": "^1.1.2",
|
"axios": "^1.1.2",
|
||||||
"laravel-vite-plugin": "^0.7.5",
|
"laravel-vite-plugin": "^0.7.5",
|
||||||
"vite": "^4.0.0"
|
"vite": "^4.5.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@sentry/browser": "^7.40.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
104
public/ai.txt
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
#
|
||||||
|
# ai.txt
|
||||||
|
# Generated by Empathy First Media Digital Marketing Agency
|
||||||
|
# https://EmpathyFirstMedia.com
|
||||||
|
#
|
||||||
|
|
||||||
|
User-Agent: *
|
||||||
|
|
||||||
|
# Text Permissions
|
||||||
|
Disallow: *.txt
|
||||||
|
Disallow: *.pdf
|
||||||
|
Disallow: *.doc
|
||||||
|
Disallow: *.docx
|
||||||
|
Disallow: *.odt
|
||||||
|
Disallow: *.rtf
|
||||||
|
Disallow: *.tex
|
||||||
|
Disallow: *.wks
|
||||||
|
Disallow: *.wpd
|
||||||
|
Disallow: *.wps
|
||||||
|
Disallow: *.html
|
||||||
|
|
||||||
|
# Images Permissions
|
||||||
|
Disallow: *.bmp
|
||||||
|
Disallow: *.gif
|
||||||
|
Disallow: *.ico
|
||||||
|
Disallow: *.jpeg
|
||||||
|
Disallow: *.jpg
|
||||||
|
Disallow: *.png
|
||||||
|
Disallow: *.svg
|
||||||
|
Disallow: *.tif
|
||||||
|
Disallow: *.tiff
|
||||||
|
Disallow: *.webp
|
||||||
|
|
||||||
|
# Audio Permissions
|
||||||
|
Disallow: *.aac
|
||||||
|
Disallow: *.aiff
|
||||||
|
Disallow: *.amr
|
||||||
|
Disallow: *.flac
|
||||||
|
Disallow: *.m4a
|
||||||
|
Disallow: *.mp3
|
||||||
|
Disallow: *.oga
|
||||||
|
Disallow: *.opus
|
||||||
|
Disallow: *.wav
|
||||||
|
Disallow: *.wma
|
||||||
|
|
||||||
|
# Video Permissions
|
||||||
|
Disallow: *.mp4
|
||||||
|
Disallow: *.webm
|
||||||
|
Disallow: *.ogg
|
||||||
|
Disallow: *.avi
|
||||||
|
Disallow: *.mov
|
||||||
|
Disallow: *.wmv
|
||||||
|
Disallow: *.flv
|
||||||
|
Disallow: *.mkv
|
||||||
|
|
||||||
|
# Code Permissions
|
||||||
|
Disallow: *.py
|
||||||
|
Disallow: *.js
|
||||||
|
Disallow: *.java
|
||||||
|
Disallow: *.c
|
||||||
|
Disallow: *.cpp
|
||||||
|
Disallow: *.cs
|
||||||
|
Disallow: *.h
|
||||||
|
Disallow: *.css
|
||||||
|
Disallow: *.php
|
||||||
|
Disallow: *.swift
|
||||||
|
Disallow: *.go
|
||||||
|
Disallow: *.rb
|
||||||
|
Disallow: *.pl
|
||||||
|
Disallow: *.sh
|
||||||
|
Disallow: *.sql
|
||||||
|
|
||||||
|
# Disallow
|
||||||
|
Disallow: /
|
||||||
|
# --------------------------
|
||||||
|
# Empathy First Media AI.TXT
|
||||||
|
# --------------------------
|
||||||
|
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&&&@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@&GGGGGGGGGGGGGGGGGGG#@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& @@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& @@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@& &@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
|
# This ai.txt file was created by Empathy First Media.
|
||||||
|
# https://empathyfirstmedia.com/
|
||||||
|
|
@ -1,38 +1,54 @@
|
||||||
:root {
|
|
||||||
--background: #1c1b22;
|
|
||||||
--foreground: #dddddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
color-scheme: dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: var(--background);
|
color: #2f2f42;
|
||||||
color: var(--foreground);
|
margin: 20px;
|
||||||
|
background: #80c9fa url("/images/peek.png") no-repeat bottom right 10px fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
image-rendering: pixelated;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #99f;
|
color: #2f2f42;
|
||||||
text-decoration: none;
|
text-decoration: underline dotted;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
text-decoration: underline;
|
color: #2f2f42;
|
||||||
|
text-decoration: underline solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1#indextitle {
|
h1#indextitle {
|
||||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||||
margin-bottom: 0;
|
Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
|
||||||
|
sans-serif;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr, th, td {
|
tr,
|
||||||
font-family: monospace;
|
th,
|
||||||
font-size: 12pt;
|
td {
|
||||||
padding: 0 5px;
|
font-family: monospace;
|
||||||
|
font-size: 12pt;
|
||||||
|
padding: 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr td:nth-child(2) {
|
||||||
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
address {
|
address {
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
font-size: 12pt
|
font-size: 12pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: none;
|
||||||
|
border-bottom: 2px solid #2f2f42;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
/* Tomorrow Night Bright Theme */
|
|
||||||
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
|
|
||||||
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
|
|
||||||
|
|
||||||
/* Tomorrow Comment */
|
|
||||||
.hljs-comment,
|
|
||||||
.hljs-quote {
|
|
||||||
color: #969896;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Red */
|
|
||||||
.hljs-variable,
|
|
||||||
.hljs-template-variable,
|
|
||||||
.hljs-tag,
|
|
||||||
.hljs-name,
|
|
||||||
.hljs-selector-id,
|
|
||||||
.hljs-selector-class,
|
|
||||||
.hljs-regexp,
|
|
||||||
.hljs-deletion {
|
|
||||||
color: #d54e53;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Orange */
|
|
||||||
.hljs-number,
|
|
||||||
.hljs-built_in,
|
|
||||||
.hljs-literal,
|
|
||||||
.hljs-type,
|
|
||||||
.hljs-params,
|
|
||||||
.hljs-meta,
|
|
||||||
.hljs-link {
|
|
||||||
color: #e78c45;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Yellow */
|
|
||||||
.hljs-attribute {
|
|
||||||
color: #e7c547;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Green */
|
|
||||||
.hljs-string,
|
|
||||||
.hljs-symbol,
|
|
||||||
.hljs-bullet,
|
|
||||||
.hljs-addition {
|
|
||||||
color: #b9ca4a;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Blue */
|
|
||||||
.hljs-title,
|
|
||||||
.hljs-section {
|
|
||||||
color: #7aa6da;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tomorrow Purple */
|
|
||||||
.hljs-keyword,
|
|
||||||
.hljs-selector-tag {
|
|
||||||
color: #c397d8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs {
|
|
||||||
background: black;
|
|
||||||
color: #eaeaea;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-emphasis {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs-strong {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
@ -1,373 +1,359 @@
|
||||||
:root {
|
:root {
|
||||||
--background: #1c1b22;
|
--background: hsl(214, 67%, 85%);
|
||||||
--foreground: #dddddd;
|
--foreground: hsl(214, 20%, 14%);
|
||||||
|
--border-color: hsl(214, 96%, 48%);
|
||||||
|
--border: var(--border-color) 2px solid;
|
||||||
|
--shadow-color: hsla(214, 96%, 43%, 0.4);
|
||||||
|
--shadow: drop-shadow(8px 8px var(--shadow-color));
|
||||||
|
--shadow-small: drop-shadow(3px 3px var(--shadow-color));
|
||||||
|
--links: hsl(214, 27%, 22%);
|
||||||
|
--links-hover: hsl(214, 27%, 15%);
|
||||||
|
--table-header: hsla(214, 96%, 43%, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ───────────────────────────────────── Fonts ────────────────────────────────────── */
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Sans";
|
||||||
|
src: url("/fonts/PTSans-Regular.ttf") format("truetype");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Sans";
|
||||||
|
src: url("/fonts/PTSans-Italic.ttf") format("truetype");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Sans";
|
||||||
|
src: url("/fonts/PTSans-Bold.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Sans";
|
||||||
|
src: url("/fonts/PTSans-BoldItalic.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Serif";
|
||||||
|
src: url("/fonts/PTSerif-Regular.ttf") format("truetype");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Serif";
|
||||||
|
src: url("/fonts/PTSerif-Italic.ttf") format("truetype");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Serif";
|
||||||
|
src: url("/fonts/PTSerif-Bold.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "PT Serif";
|
||||||
|
src: url("/fonts/PTSerif-BoldItalic.ttf") format("truetype");
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ───────────────────────────────────── Pride ────────────────────────────────────── */
|
||||||
|
#prideflag {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 120px;
|
||||||
|
transform-origin: 100% 0;
|
||||||
|
transition: transform .5s cubic-bezier(.32,1.63,.41,1.01);
|
||||||
|
z-index: 8008135;
|
||||||
|
}
|
||||||
|
#prideflag:hover {
|
||||||
|
transform: scale(110%);
|
||||||
|
}
|
||||||
|
#prideflag:active {
|
||||||
|
transform: scale(110%);
|
||||||
|
}
|
||||||
|
#prideflag * {
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ───────────────────────────────────── Global ───────────────────────────────────── */
|
||||||
|
html {
|
||||||
|
height: 100%;
|
||||||
|
color-scheme: light;
|
||||||
|
scrollbar-color: var(--border-color) var(--background);
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: sans-serif;
|
|
||||||
margin: 0;
|
|
||||||
color: var(--foreground);
|
color: var(--foreground);
|
||||||
background-color: var(--background);
|
min-height: 100%;
|
||||||
text-align: left;
|
background: url('/images/roscoe_tile.jpg');
|
||||||
|
padding: 5px;
|
||||||
|
font-family: "PT Serif", serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
img.logo_paw {
|
||||||
color-scheme: dark;
|
filter: grayscale(100%) sepia(100%) hue-rotate(180deg) saturate(300%);
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style-type: square;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.page {
|
|
||||||
min-width: 780px;
|
|
||||||
max-width: 800px;
|
|
||||||
padding-left: 0.5em;
|
|
||||||
padding-right: 0.5em;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1.inline {
|
|
||||||
margin-top: 0;
|
|
||||||
clear: none;
|
|
||||||
display: inline;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
h2,
|
h2,
|
||||||
h3 {
|
h3,
|
||||||
margin-top: 1em;
|
h4,
|
||||||
clear: left;
|
h5,
|
||||||
|
h6 {
|
||||||
|
margin: 20px 0 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
p,
|
||||||
border: none;
|
ul,
|
||||||
max-width: 100%;
|
ol,
|
||||||
}
|
dl,
|
||||||
|
menu,
|
||||||
img.right {
|
dir {
|
||||||
float: right;
|
|
||||||
margin-left: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.form td {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.code-block {
|
|
||||||
background-color: var(--background);
|
|
||||||
border: 2px solid #dddddd;
|
|
||||||
padding: 10px;
|
|
||||||
display: inline-block;
|
|
||||||
text-align: left;
|
|
||||||
max-width: 90%;
|
|
||||||
min-width: 400px;
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-block hr {
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-block h1 {
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: monospace;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
div.code-block h1 small {
|
hr {
|
||||||
color: #919191;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-block pre hr {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.code-block pre code {
|
|
||||||
background-color: #222;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
display: inline;
|
|
||||||
max-width: 95%;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav {
|
|
||||||
margin-bottom: 0.3em;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav div a img {
|
|
||||||
width: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav div h1 {
|
|
||||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
|
||||||
Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
|
|
||||||
sans-serif;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 30px;
|
|
||||||
margin: 10px 10px 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.date {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
border-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.weather th {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.weather td {
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.rss {
|
|
||||||
position: absolute;
|
|
||||||
top: 1em;
|
|
||||||
right: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.archived {
|
|
||||||
margin-top: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.archived span.date {
|
|
||||||
font-style: italic;
|
|
||||||
margin-right: 0.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
video {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.deprecated {
|
|
||||||
line-height: 140%;
|
|
||||||
width: 100%;
|
|
||||||
color: #aa0000;
|
|
||||||
text-align: center;
|
|
||||||
padding-bottom: 0.5em;
|
|
||||||
border-bottom: 2px dashed #aa0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
table td {
|
|
||||||
border: 1px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
padding: 0;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header .title {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
font-size: 100%;
|
|
||||||
font-weight: normal;
|
|
||||||
padding-bottom: 0;
|
|
||||||
text-align: center;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 150%;
|
|
||||||
}
|
|
||||||
h1 {
|
|
||||||
font-size: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 130%;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 115%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.computers {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.computer {
|
|
||||||
width: 50%;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer {
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.commits tr td {
|
|
||||||
border: none;
|
border: none;
|
||||||
padding-right: 5px;
|
border-top: var(--border);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: #99f;
|
color: var(--links);
|
||||||
text-decoration: none;
|
text-decoration: underline dotted;
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form tr td {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form tr td label {
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form tr td span.text-danger {
|
|
||||||
padding-left: 5px;
|
|
||||||
color: rgb(255, 114, 114);
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form tr td textarea,
|
|
||||||
table.gb-entry-form tr td input {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form-container {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form-container tr td {
|
|
||||||
border: none;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form-container tr td p,
|
|
||||||
table.gb-entry-form-container tr td ul {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry-form tbody tr td textarea {
|
|
||||||
width: 210px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry tr td {
|
|
||||||
border: solid #ffffff 1px;
|
|
||||||
width: 500px;
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-entry {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-admin {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
width: 500px;
|
|
||||||
border: #fff solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-admin tr td {
|
|
||||||
border-right: none;
|
|
||||||
border-bottom: none;
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-admin tr td.gb-del {
|
|
||||||
border-left: none;
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 5px;
|
|
||||||
width: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.gb-admin tr td.gb-message {
|
|
||||||
border-top: none;
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.info-table tr td {
|
|
||||||
border: none;
|
|
||||||
padding-right: 5px;
|
|
||||||
vertical-align: bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.info-table tr td h1,
|
|
||||||
table.info-table tr td h2,
|
|
||||||
table.info-table tr td small {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption h1,
|
|
||||||
caption h2 {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.info-table tr td small {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hljs {
|
|
||||||
background: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.me img {
|
|
||||||
float: right;
|
|
||||||
margin: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.me p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
text-decoration: underline;
|
color: var(--links-hover);
|
||||||
|
text-decoration: underline solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
.computer {
|
div.page-container {
|
||||||
width: 100%;
|
width: 800px;
|
||||||
|
margin: 5px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.computer td {
|
div.page-container > div {
|
||||||
border: none;
|
background-color: var(--background);
|
||||||
|
filter: var(--shadow);
|
||||||
|
padding: 10px;
|
||||||
|
border: var(--border);
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.computer h1,
|
div.page-container > div:last-child {
|
||||||
.computer hr {
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 64px 1fr;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
grid-column-gap: 15px;
|
||||||
|
grid-row-gap: 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
header img {
|
||||||
|
image-rendering: pixelated;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1 {
|
||||||
|
margin: 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
header h1,
|
||||||
|
header p {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
main>div {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
main>div::after {
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#footer {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
grid-column-gap: 0;
|
||||||
|
grid-row-gap: 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#footer div:last-child {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#footer div:last-child img {
|
||||||
|
image-rendering: pixelated;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 88px;
|
||||||
|
height: 31px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Wah! **/
|
||||||
|
div.wah {
|
||||||
|
float: right;
|
||||||
|
border: var(--border);
|
||||||
|
padding: 5px;
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
background-color: var(--background);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.wah img {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.wah h3,
|
||||||
|
div.wah p {
|
||||||
|
text-align: center;
|
||||||
|
margin: 5px 0;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.wah p {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.wah img {
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Guestbook **/
|
||||||
|
table.form input,
|
||||||
|
table.form textarea,
|
||||||
|
table.form button {
|
||||||
|
background-color: var(--background);
|
||||||
|
border: var(--border);
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.form input,
|
||||||
|
table.form textarea {
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.form textarea {
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.form button:hover {
|
||||||
|
background-color: var(--border-color);
|
||||||
|
color: var(--background);
|
||||||
|
filter: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.form tr td,
|
||||||
|
table.gb-entry-form-container td:last-child {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gb-entry {
|
||||||
|
border: var(--border);
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
background-color: var(--background);
|
||||||
|
width: 75%;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Music **/
|
||||||
|
table.music-top10 {
|
||||||
|
border: var(--border);
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
background-color: var(--background);
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 th,
|
||||||
|
table.music-top10 td {
|
||||||
|
padding: 2px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 th:first-child {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 tr:first-child th {
|
||||||
|
border-right: var(--border);
|
||||||
|
border-bottom: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 tr:first-child th:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 tr td {
|
||||||
|
border-right: var(--border);
|
||||||
|
}
|
||||||
|
|
||||||
|
table.music-top10 tr td:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
table.music-top10 tr:first-child th,
|
||||||
|
table.music-top10 tr td:first-child {
|
||||||
|
background-color: var(--table-header);
|
||||||
|
}
|
||||||
|
|
||||||
|
div.current-track {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 180px auto;
|
||||||
|
grid-template-rows: 1fr;
|
||||||
|
grid-column-gap: 10px;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.current-track img {
|
||||||
|
float: left;
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
border: var(--border);
|
||||||
|
width: 174px;
|
||||||
|
height: 174px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Bookmarks **/
|
||||||
|
div.bookmark-category:first-child h2 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.computer .computer-image {
|
|
||||||
width: 256px;
|
|
||||||
|
/* ────────────────────────────────── Rosco & Leko ────────────────────────────────── */
|
||||||
|
div.rosco-leko-gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spec {
|
div.rosco-leko-gallery > div {
|
||||||
padding-left: 20px;
|
border: var(--border);
|
||||||
|
padding: 5px;
|
||||||
|
filter: var(--shadow-small);
|
||||||
|
background-color: var(--background);
|
||||||
|
margin: 10px;
|
||||||
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spec-title {
|
div.rosco-leko-gallery > div,
|
||||||
font-weight: bold;
|
div.rosco-leko-gallery > div img {
|
||||||
}
|
max-width: 220px;
|
||||||
|
|
||||||
.computer-specs {
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
html {
|
html { color-scheme: light; }
|
||||||
color-scheme: dark;
|
body { color: #2a271c; background-color: #f2efbd; font-family: serif; }
|
||||||
}
|
h1, h2, h4, ul, p { margin: 0; }
|
||||||
|
h1 { font-weight: normal; }
|
||||||
body {
|
h4 { margin-bottom: 5px; }
|
||||||
font-family: sans-serif;
|
ul { padding: 5px 30px; }
|
||||||
margin: 0;
|
a { color: hsl(183, 93%, 27%); text-decoration: underline dotted; }
|
||||||
margin-left: 10px;
|
a:hover { color: hsl(183, 93%, 15%); text-decoration: underline solid; }
|
||||||
color: #ddd;
|
code { font-family: monospace; }
|
||||||
background-color: #333;
|
code.addr { font-size: 24px; }
|
||||||
}
|
table { border: #f27405 2px solid; background-color: #f2efbd; filter: drop-shadow(3px 3px hsla(11, 96%, 43%, 0.4)); }
|
||||||
|
img { border: #f27405 2px solid; filter: drop-shadow(3px 3px hsla(11, 96%, 43%, 0.4)); }
|
||||||
table.gb-entry_details tr td {
|
hr { border: none; border-bottom: 2px solid #f27405; }
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 777 B After Width: | Height: | Size: 4 KiB |
|
Before Width: | Height: | Size: 536 B After Width: | Height: | Size: 735 B |
|
Before Width: | Height: | Size: 591 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
BIN
public/fonts/PTSans-Bold.ttf
Normal file
BIN
public/fonts/PTSans-BoldItalic.ttf
Normal file
BIN
public/fonts/PTSans-Italic.ttf
Normal file
BIN
public/fonts/PTSans-Regular.ttf
Normal file
BIN
public/fonts/PTSerif-Bold.ttf
Normal file
BIN
public/fonts/PTSerif-BoldItalic.ttf
Normal file
BIN
public/fonts/PTSerif-Italic.ttf
Normal file
BIN
public/fonts/PTSerif-Regular.ttf
Normal file
BIN
public/images/background.jpg
Normal file
|
After Width: | Height: | Size: 837 KiB |
BIN
public/images/buttons/aliasing.png
Normal file
|
After Width: | Height: | Size: 786 B |
|
Before Width: | Height: | Size: 2.5 KiB |
BIN
public/images/buttons/cnfunknown.gif
Normal file
|
After Width: | Height: | Size: 524 B |
BIN
public/images/buttons/csshard.gif
Normal file
|
After Width: | Height: | Size: 495 B |
|
Before Width: | Height: | Size: 1.5 KiB |
BIN
public/images/buttons/juli.gif
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
BIN
public/images/buttons/paws-aliased.png
Normal file
|
After Width: | Height: | Size: 478 B |
BIN
public/images/buttons/servfail.png
Normal file
|
After Width: | Height: | Size: 891 B |
BIN
public/images/buttons/thnlqd.png
Normal file
|
After Width: | Height: | Size: 996 B |
BIN
public/images/buttons/transrights.gif
Normal file
|
After Width: | Height: | Size: 471 B |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
BIN
public/images/buttons/wah.png
Normal file
|
After Width: | Height: | Size: 764 B |
|
Before Width: | Height: | Size: 2.1 KiB |
BIN
public/images/buttons/x86.gif
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 134 KiB |