Compare commits
140 commits
master
...
v2023.08.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c44d47f7ea |
||
|
|
3f953cca73 |
||
|
|
dae3e6dcae |
||
|
|
cd53fec585 |
||
|
|
7943c6b6e3 |
||
|
|
7210fd59ff |
||
|
|
e144965ed5 |
||
|
|
99c0d2068d |
||
|
|
cfd2d0b0f2 |
||
|
|
6300a2d696 |
||
|
|
a7ea015b36 |
||
|
|
ae78f53fe6 |
||
|
|
3102ad12f4 |
||
|
|
2ffcc062a0 |
||
|
|
32c675e202 |
||
|
|
b8b36c50d0 |
||
|
|
e7d58f3185 |
||
|
|
24b5a194ca |
||
|
|
d9cf8a2eb7 |
||
|
|
494260fa4a |
||
|
|
103d6b7f3d |
||
|
|
e3e6600f2f |
||
|
|
bc129765f1 |
||
|
|
68a6aad6d1 | ||
|
|
628132d27a | ||
|
|
85cb771075 | ||
|
|
2391984f67 | ||
|
|
8c0a2a6383 | ||
|
|
e15ea940b3 | ||
|
|
2cac5da812 | ||
|
|
b68a797657 | ||
|
|
e2d4409b04 | ||
|
|
b8b756883b | ||
|
|
f980432dec | ||
|
|
1a70c15e98 | ||
|
|
4542dc9fc8 | ||
|
|
f82de3956b | ||
|
|
9a10c8db3a | ||
|
|
4ac2a014d0 | ||
|
|
7e4864f627 | ||
|
|
f547f58d0d | ||
|
|
9eafaa2c2f | ||
|
|
a7b369d988 | ||
|
|
a3c787e1f6 | ||
|
|
f1c0713381 | ||
|
|
36227c9b6e | ||
|
|
8e81858470 | ||
|
|
5a39e2a796 |
||
|
|
006cf391c1 | ||
|
|
118021654b |
||
|
|
690ea377fe |
||
|
|
50a8b45625 |
||
|
|
9e837642bd |
||
|
|
fe0765795a |
||
|
|
fb045348cf |
||
|
|
e627033600 |
||
|
|
7c16dc53b5 |
||
|
|
691d0d933d |
||
|
|
03a53634a3 |
||
|
|
b9f2604bb5 |
||
|
|
65b02f3b8d |
||
|
|
e1da508542 |
||
|
|
b0cccfac6e |
||
|
|
f0a7a8af7c |
||
|
|
8482a98ca6 |
||
|
|
1b267f6102 | ||
|
|
cb8b9830ca |
||
|
|
0f8bfd33cb | ||
|
|
bd626fccd6 |
||
|
|
ad7baa0dc1 |
||
|
|
cb4a1f179b |
||
|
|
e0e179fa79 |
||
|
|
4c501179df |
||
|
|
64b3d6d986 |
||
|
|
4f67d7c7e5 |
||
|
|
ea00153119 |
||
|
|
ef962d4a93 | ||
|
|
0dde11718a |
||
|
|
60245e6976 |
||
|
|
fd68a870f5 |
||
|
|
6ee8acb2a1 | ||
|
|
94db866543 | ||
|
|
194c9e8329 | ||
|
|
85df5c249e | ||
|
|
d7b9a738ad |
||
|
|
53c0cd3712 |
||
|
|
94fc2662bd |
||
|
|
b5293a41a3 |
||
|
|
1c34087354 |
||
|
|
06d7f9b387 |
||
|
|
24e7f56e25 |
||
|
|
06ebb6cb81 |
||
|
|
45fd1d23c4 |
||
|
|
c10d758474 | ||
|
|
0abb29b5c5 |
||
|
|
38da18777c |
||
|
|
9b05e99af8 |
||
|
|
6665998008 |
||
|
|
01c617250c |
||
|
|
e6230427c0 |
||
|
|
6171f63708 |
||
|
|
c8f8f6fb52 |
||
|
|
a3be1eb5b8 |
||
|
|
c7a1b41a19 |
||
|
|
e5ac640025 |
||
|
|
20e394e9f2 |
||
|
|
3a0306ac79 | ||
|
|
89ec6df6b7 | ||
|
|
a02cbfb495 | ||
|
|
c338c310ac | ||
|
|
57190b2f77 | ||
|
|
30f68f5c7d | ||
|
|
5142133f16 | ||
|
|
cb78df544c | ||
|
|
87a36e9bfb | ||
|
|
34a54c5329 | ||
|
|
8e627b1671 | ||
|
|
a464ef4c0e | ||
|
|
44db6ce1d9 |
||
|
|
6b02bc8cad | ||
|
|
3dbf85e3d0 | ||
|
|
466fdd60ed | ||
|
|
4fc4589738 | ||
|
|
6d20ddc394 | ||
|
|
1396683b90 | ||
|
|
a1275c7271 | ||
|
|
216adcfc98 | ||
|
|
d491d8a2da | ||
|
|
21c1fa2b7c | ||
|
|
6a8da5f22a | ||
|
|
ca27656c47 | ||
|
|
dc61b73037 | ||
|
|
4ec6b99ac1 | ||
|
|
2195834edb | ||
|
|
1819aaa533 | ||
|
|
907203d6f7 | ||
|
|
8ba00e764a | ||
|
|
2ab628a9d5 | ||
|
|
54a6b30d26 |
||
|
|
59f0e817c4 |
|
|
@ -26,3 +26,5 @@ MEMCACHED_HOST=127.0.0.1
|
|||
|
||||
LASTFM_KEY=
|
||||
LASTFM_USER=
|
||||
LASTFM_TOP_TRACKS=10
|
||||
API_ROOT=http://127.0.0.1:3000
|
||||
|
|
|
|||
1
.github/CODEOWNERS
vendored
|
|
@ -1 +0,0 @@
|
|||
* @RoscoeDaWah
|
||||
5
.gitignore
vendored
|
|
@ -17,8 +17,5 @@ yarn-error.log
|
|||
/.fleet
|
||||
/.idea
|
||||
/.vscode
|
||||
.auth0.*.json
|
||||
**/.DS_Store
|
||||
/log
|
||||
/storage
|
||||
/tmp
|
||||
/public/pub
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
<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>
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<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,3 +1 @@
|
|||
<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
|
||||
# diskfloppy.me
|
||||
|
|
|
|||
|
|
@ -24,9 +24,7 @@ class Handler extends ExceptionHandler
|
|||
public function register(): void
|
||||
{
|
||||
$this->reportable(function (Throwable $e) {
|
||||
if (app()->bound('sentry')) {
|
||||
app('sentry')->captureException($e);
|
||||
}
|
||||
//
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
<?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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
<?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,32 +2,37 @@
|
|||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\GuestbookEntry;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use UAParser\Parser;
|
||||
use DB;
|
||||
|
||||
class GuestbookController extends Controller {
|
||||
public function show(): View {
|
||||
$entries = GuestbookEntry::selectEntries();
|
||||
$parser = Parser::create();
|
||||
|
||||
return view('guestbook')
|
||||
->with('entries', $entries)
|
||||
->with('parser', $parser);
|
||||
public function guestbook() {
|
||||
return view('pages.guestbook');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new guestbook entry
|
||||
*
|
||||
* @param Request $request
|
||||
* @return RedirectResponse
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function addEntry(Request $request): RedirectResponse {
|
||||
GuestbookEntry::insertGuestbookEntry($request);
|
||||
public function guestbookPost(Request $request) {
|
||||
$this->validate($request, [
|
||||
'name' => 'required',
|
||||
'message' => 'required'
|
||||
]);
|
||||
|
||||
$matching_bans = DB::select('SELECT reason FROM guestbook__bans WHERE ip_address = ?', array($request->ip()));
|
||||
|
||||
if (!empty($matching_bans)) {
|
||||
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!');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
<?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(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
<?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());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
<?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,7 +47,6 @@ class Kernel extends HttpKernel
|
|||
|
||||
protected $routeMiddleware = [
|
||||
'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>
|
||||
*/
|
||||
protected $except = [
|
||||
"colorscheme"
|
||||
//
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
<?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,9 +16,6 @@ class RateLimiter
|
|||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (auth()->check()) {
|
||||
return $next($request);
|
||||
}
|
||||
$ipAddress = $request->ip();
|
||||
$cacheKey = 'rate_limit_'.$ipAddress;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
<?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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
<?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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
<?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();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
app/Models/User.php
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
<?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,20 +2,23 @@
|
|||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use PostHog\PostHog;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider {
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register any application services.
|
||||
*/
|
||||
public function register(): void {
|
||||
public function register(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap any application services.
|
||||
*/
|
||||
public function boot(): void {}
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
<?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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
<?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(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
<?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>
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
|
@ -1,21 +1,18 @@
|
|||
{
|
||||
"name": "roscoedawah/wah.moe",
|
||||
"name": "floppydisk05/diskfloppy.me",
|
||||
"type": "project",
|
||||
"description": "My personal website, developed using the Laravel framework.",
|
||||
"keywords": ["laravel", "framework"],
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.1",
|
||||
"ext-exif": "*",
|
||||
"browner12/helpers": "^3.7",
|
||||
"auth0/login": "^7.8",
|
||||
"guzzlehttp/guzzle": "^7.2",
|
||||
"intervention/image": "^3.9",
|
||||
"laravel/framework": "^10.10",
|
||||
"laravel/sanctum": "^3.2",
|
||||
"laravel/tinker": "^2.8",
|
||||
"scrivo/highlight.php": "v9.18.1.10",
|
||||
"spatie/laravel-honeypot": "^4.3",
|
||||
"spatie/laravel-html": "^3.4",
|
||||
"ua-parser/uap-php": "^3.9.14"
|
||||
"spatie/laravel-honeypot": "^4.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
|
|
|
|||
3945
composer.lock
generated
|
|
@ -4,11 +4,12 @@
|
|||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
return [
|
||||
'name' => env('APP_NAME', 'wah.moe'),
|
||||
'version' => '2025.08.30-patch2',
|
||||
'name' => env('APP_NAME', 'diskfloppy.me'),
|
||||
'version' => '2023.08.24',
|
||||
'env' => env('APP_ENV', 'production'),
|
||||
'debug' => (bool) env('APP_DEBUG', false),
|
||||
'url' => env('APP_URL', 'http://localhost'),
|
||||
'api_root' => env('API_ROOT', 'http://localhost:3000'),
|
||||
|
||||
'asset_url' => env('ASSET_URL'),
|
||||
'timezone' => 'UTC',
|
||||
|
|
@ -25,8 +26,8 @@
|
|||
App\Providers\AuthServiceProvider::class,
|
||||
App\Providers\EventServiceProvider::class,
|
||||
App\Providers\RouteServiceProvider::class,
|
||||
browner12\helpers\HelperServiceProvider::class
|
||||
])->toArray(),
|
||||
'aliases' => Facade::defaultAliases()->merge([
|
||||
// 'Example' => App\Facades\Example::class,
|
||||
])->toArray(),
|
||||
];
|
||||
|
|
|
|||
56
config/auth0.php
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<?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),
|
||||
],
|
||||
],
|
||||
];
|
||||
117
config/bookmarks.php
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
<?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."
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
71
config/projects.php
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
<?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"]
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
||||
67
config/sanctum.php
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
<?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,5 +17,6 @@
|
|||
'lastfm' => [
|
||||
'key' => env('LASTFM_KEY'),
|
||||
'user' => env('LASTFM_USER'),
|
||||
'toptracks' => env('LASTFM_TOP_TRACKS')
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
<?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,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
<?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(),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -11,10 +11,13 @@
|
|||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('bookmark__categories', function (Blueprint $table) {
|
||||
Schema::create('users', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->unsignedBigInteger('priority')->nullable();
|
||||
$table->string('email')->unique();
|
||||
$table->timestamp('email_verified_at')->nullable();
|
||||
$table->string('password');
|
||||
$table->rememberToken();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
|
@ -24,6 +27,6 @@ public function up(): void
|
|||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('bookmark__categories');
|
||||
Schema::dropIfExists('users');
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<?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');
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
<?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,14 @@
|
|||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('guestbook__entries', function (Blueprint $table) {
|
||||
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->morphs('tokenable');
|
||||
$table->string('name');
|
||||
$table->string('ip');
|
||||
$table->string('agent');
|
||||
$table->longText('message');
|
||||
$table->boolean('admin');
|
||||
$table->string('token', 64)->unique();
|
||||
$table->text('abilities')->nullable();
|
||||
$table->timestamp('last_used_at')->nullable();
|
||||
$table->timestamp('expires_at')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
|
@ -27,6 +28,6 @@ public function up(): void
|
|||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('guestbook__entries');
|
||||
Schema::dropIfExists('personal_access_tokens');
|
||||
}
|
||||
};
|
||||
|
|
@ -1,35 +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('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');
|
||||
}
|
||||
};
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?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();
|
||||
}
|
||||
}
|
||||
22
database/seeders/DatabaseSeeder.php
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?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
|
|
@ -1,881 +0,0 @@
|
|||
{
|
||||
"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,9 +8,6 @@
|
|||
"devDependencies": {
|
||||
"axios": "^1.1.2",
|
||||
"laravel-vite-plugin": "^0.7.5",
|
||||
"vite": "^4.5.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sentry/browser": "^7.40.0"
|
||||
"vite": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
104
public/ai.txt
|
|
@ -1,104 +0,0 @@
|
|||
#
|
||||
# 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,54 +0,0 @@
|
|||
body {
|
||||
color: #2f2f42;
|
||||
margin: 20px;
|
||||
background: #80c9fa url("/images/peek.png") no-repeat bottom right 10px fixed;
|
||||
}
|
||||
|
||||
img {
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #2f2f42;
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #2f2f42;
|
||||
text-decoration: underline solid;
|
||||
}
|
||||
|
||||
h1#indextitle {
|
||||
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
|
||||
sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
tr,
|
||||
th,
|
||||
td {
|
||||
font-family: monospace;
|
||||
font-size: 12pt;
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
tr td:nth-child(2) {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
address {
|
||||
font-family: sans-serif;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
.description {
|
||||
font-style: italic;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: none;
|
||||
border-bottom: 2px solid #2f2f42;
|
||||
}
|
||||
|
||||
70
public/css/highlight/tomorrow-night-bright.css
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
/* 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,359 +1,344 @@
|
|||
:root {
|
||||
--background: hsl(214, 67%, 85%);
|
||||
--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);
|
||||
root {
|
||||
--background: #181818;
|
||||
--foreground: #dddddd;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0;
|
||||
color: var(--foreground);
|
||||
min-height: 100%;
|
||||
background: url('/images/roscoe_tile.jpg');
|
||||
padding: 5px;
|
||||
font-family: "PT Serif", serif;
|
||||
background-color: var(--background);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
img.logo_paw {
|
||||
filter: grayscale(100%) sepia(100%) hue-rotate(180deg) saturate(300%);
|
||||
html {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
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,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin: 20px 0 0 0;
|
||||
h3 {
|
||||
margin-top: 1em;
|
||||
clear: left;
|
||||
}
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol,
|
||||
dl,
|
||||
menu,
|
||||
dir {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
hr {
|
||||
img {
|
||||
border: none;
|
||||
border-top: var(--border);
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--links);
|
||||
text-decoration: underline dotted;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--links-hover);
|
||||
text-decoration: underline solid;
|
||||
}
|
||||
|
||||
div.page-container {
|
||||
width: 800px;
|
||||
margin: 5px auto;
|
||||
}
|
||||
|
||||
div.page-container > div {
|
||||
background-color: var(--background);
|
||||
filter: var(--shadow);
|
||||
padding: 10px;
|
||||
border: var(--border);
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
div.page-container > div:last-child {
|
||||
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 {
|
||||
img.right {
|
||||
float: right;
|
||||
border: var(--border);
|
||||
padding: 5px;
|
||||
filter: var(--shadow-small);
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
table.form td {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
div.code-block {
|
||||
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%;
|
||||
border: 2px solid #dddddd;
|
||||
padding: 10px;
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
max-width: 90%;
|
||||
min-width: 400px;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
/** Music **/
|
||||
table.music-top10 {
|
||||
border: var(--border);
|
||||
filter: var(--shadow-small);
|
||||
background-color: var(--background);
|
||||
border-collapse: collapse;
|
||||
div.code-block hr {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
table.music-top10 th,
|
||||
table.music-top10 td {
|
||||
padding: 2px 5px;
|
||||
div.code-block h1 {
|
||||
margin: 0;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
table.music-top10 th:first-child {
|
||||
div.code-block h1 small {
|
||||
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;
|
||||
}
|
||||
|
||||
table.music-top10 tr:first-child th {
|
||||
border-right: var(--border);
|
||||
border-bottom: var(--border);
|
||||
nav div a img {
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
table.music-top10 tr:first-child th:last-child {
|
||||
border-right: none;
|
||||
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;
|
||||
}
|
||||
|
||||
table.music-top10 tr td {
|
||||
border-right: var(--border);
|
||||
div.date {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
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.note {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.current-track {
|
||||
display: grid;
|
||||
grid-template-columns: 180px auto;
|
||||
grid-template-rows: 1fr;
|
||||
grid-column-gap: 10px;
|
||||
align-items: center;
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
div.current-track img {
|
||||
float: left;
|
||||
filter: var(--shadow-small);
|
||||
border: var(--border);
|
||||
width: 174px;
|
||||
height: 174px;
|
||||
table.weather th {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/** Bookmarks **/
|
||||
div.bookmark-category:first-child h2 {
|
||||
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;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #99f;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ────────────────────────────────── Rosco & Leko ────────────────────────────────── */
|
||||
div.rosco-leko-gallery {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-start;
|
||||
table.gb-entry-form tbody tr td textarea {
|
||||
width: 210px;
|
||||
}
|
||||
|
||||
div.rosco-leko-gallery > div {
|
||||
border: var(--border);
|
||||
table.gb-entry tr td {
|
||||
border: solid #ffffff 1px;
|
||||
width: 500px;
|
||||
vertical-align: top;
|
||||
padding: 5px;
|
||||
filter: var(--shadow-small);
|
||||
background-color: var(--background);
|
||||
margin: 10px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
div.rosco-leko-gallery > div,
|
||||
div.rosco-leko-gallery > div img {
|
||||
max-width: 220px;
|
||||
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 {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
html { color-scheme: light; }
|
||||
body { color: #2a271c; background-color: #f2efbd; font-family: serif; }
|
||||
h1, h2, h4, ul, p { margin: 0; }
|
||||
h1 { font-weight: normal; }
|
||||
h4 { margin-bottom: 5px; }
|
||||
ul { padding: 5px 30px; }
|
||||
a { color: hsl(183, 93%, 27%); text-decoration: underline dotted; }
|
||||
a:hover { color: hsl(183, 93%, 15%); text-decoration: underline solid; }
|
||||
code { font-family: monospace; }
|
||||
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)); }
|
||||
hr { border: none; border-bottom: 2px solid #f27405; }
|
||||
html {
|
||||
color-scheme: dark;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
margin: 0;
|
||||
margin-left: 10px;
|
||||
color: #ddd;
|
||||
background-color: #333;
|
||||
}
|
||||
|
||||
table.gb-entry_details tr td {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 777 B |
|
Before Width: | Height: | Size: 735 B After Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 591 B |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 837 KiB |
|
Before Width: | Height: | Size: 786 B |
BIN
public/images/buttons/browser.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 524 B |
|
Before Width: | Height: | Size: 495 B |
BIN
public/images/buttons/html_learn_it_today.gif
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
BIN
public/images/buttons/nukeieani.gif
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 478 B |
|
Before Width: | Height: | Size: 891 B |
|
Before Width: | Height: | Size: 996 B |
|
Before Width: | Height: | Size: 471 B |
BIN
public/images/buttons/valid-html401-blue.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
public/images/buttons/vcss-blue.gif
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 764 B |
BIN
public/images/buttons/wiby.gif
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
BIN
public/images/calculators/casio-fx-120/1s.jpeg
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
public/images/calculators/casio-fx-120/2s.jpeg
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
public/images/calculators/casio-fx-120/3s.jpeg
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
public/images/calculators/casio-fx-120/4s.jpeg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
public/images/calculators/casio-fx-82/1s.jpeg
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
public/images/calculators/casio-fx-82/2s.jpeg
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
public/images/calculators/casio-fx-82/3s.jpeg
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
public/images/calculators/casio-fx-82/4s.jpeg
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
public/images/calculators/casio-fx-cg50/1s.jpeg
Normal file
|
After Width: | Height: | Size: 151 KiB |
BIN
public/images/calculators/casio-fx-cg50/2s.jpeg
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
public/images/calculators/casio-fx-cg50/3s.jpeg
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
public/images/calculators/casio-fx-cg50/4s.jpeg
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
public/images/calculators/texet-880/1s.jpeg
Normal file
|
After Width: | Height: | Size: 141 KiB |
BIN
public/images/calculators/texet-880/2s.jpeg
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
public/images/calculators/texet-880/3s.jpeg
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
public/images/calculators/texet-880/4s.jpeg
Normal file
|
After Width: | Height: | Size: 159 KiB |
BIN
public/images/calculators/ti-30/1s.jpeg
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
public/images/calculators/ti-30/2s.jpeg
Normal file
|
After Width: | Height: | Size: 134 KiB |