Merge pull request #1206 from jonnybarnes/develop
MTM Simplify build steps
This commit is contained in:
commit
c0c8e5262b
45 changed files with 452 additions and 11425 deletions
|
@ -73,10 +73,16 @@ class FeedsController extends Controller
|
||||||
{
|
{
|
||||||
$articles = Article::where('published', '1')->latest('updated_at')->take(20)->get();
|
$articles = Article::where('published', '1')->latest('updated_at')->take(20)->get();
|
||||||
$data = [
|
$data = [
|
||||||
'version' => 'https://jsonfeed.org/version/1',
|
'version' => 'https://jsonfeed.org/version/1.1',
|
||||||
'title' => 'The JSON Feed for ' . config('user.display_name') . '’s blog',
|
'title' => 'The JSON Feed for ' . config('user.display_name') . '’s blog',
|
||||||
'home_page_url' => config('app.url') . '/blog',
|
'home_page_url' => config('app.url') . '/blog',
|
||||||
'feed_url' => config('app.url') . '/blog/feed.json',
|
'feed_url' => config('app.url') . '/blog/feed.json',
|
||||||
|
'authors' => [
|
||||||
|
[
|
||||||
|
'name' => config('user.display_name'),
|
||||||
|
'url' => config('app.url'),
|
||||||
|
],
|
||||||
|
],
|
||||||
'items' => [],
|
'items' => [],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -88,9 +94,6 @@ class FeedsController extends Controller
|
||||||
'content_html' => $article->main,
|
'content_html' => $article->main,
|
||||||
'date_published' => $article->created_at->tz('UTC')->toRfc3339String(),
|
'date_published' => $article->created_at->tz('UTC')->toRfc3339String(),
|
||||||
'date_modified' => $article->updated_at->tz('UTC')->toRfc3339String(),
|
'date_modified' => $article->updated_at->tz('UTC')->toRfc3339String(),
|
||||||
'author' => [
|
|
||||||
'name' => config('user.display_name'),
|
|
||||||
],
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,12 +105,18 @@ class FeedsController extends Controller
|
||||||
*/
|
*/
|
||||||
public function notesJson(): array
|
public function notesJson(): array
|
||||||
{
|
{
|
||||||
$notes = Note::latest()->with('media')->take(20)->get();
|
$notes = Note::latest()->with('media', 'place', 'tags')->take(20)->get();
|
||||||
$data = [
|
$data = [
|
||||||
'version' => 'https://jsonfeed.org/version/1',
|
'version' => 'https://jsonfeed.org/version/1.1',
|
||||||
'title' => 'The JSON Feed for ' . config('user.display_name') . '’s notes',
|
'title' => 'The JSON Feed for ' . config('user.display_name') . '’s notes',
|
||||||
'home_page_url' => config('app.url') . '/notes',
|
'home_page_url' => config('app.url') . '/notes',
|
||||||
'feed_url' => config('app.url') . '/notes/feed.json',
|
'feed_url' => config('app.url') . '/notes/feed.json',
|
||||||
|
'authors' => [
|
||||||
|
[
|
||||||
|
'name' => config('user.display_name'),
|
||||||
|
'url' => config('app.url'),
|
||||||
|
],
|
||||||
|
],
|
||||||
'items' => [],
|
'items' => [],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -115,13 +124,13 @@ class FeedsController extends Controller
|
||||||
$data['items'][$key] = [
|
$data['items'][$key] = [
|
||||||
'id' => $note->longurl,
|
'id' => $note->longurl,
|
||||||
'url' => $note->longurl,
|
'url' => $note->longurl,
|
||||||
'content_html' => $note->content,
|
'content_text' => $note->content,
|
||||||
'date_published' => $note->created_at->tz('UTC')->toRfc3339String(),
|
'date_published' => $note->created_at->tz('UTC')->toRfc3339String(),
|
||||||
'date_modified' => $note->updated_at->tz('UTC')->toRfc3339String(),
|
'date_modified' => $note->updated_at->tz('UTC')->toRfc3339String(),
|
||||||
'author' => [
|
|
||||||
'name' => config('user.display_name'),
|
|
||||||
],
|
|
||||||
];
|
];
|
||||||
|
if ($note->tags->count() > 0) {
|
||||||
|
$data['items'][$key]['tags'] = implode(',', $note->tags->pluck('tag')->toArray());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
|
|
|
@ -144,17 +144,17 @@ class Note extends Model
|
||||||
*/
|
*/
|
||||||
public function getContentAttribute(): string
|
public function getContentAttribute(): string
|
||||||
{
|
{
|
||||||
$note = $this->note;
|
$note = $this->getRawOriginal('note');
|
||||||
|
|
||||||
foreach ($this->media as $media) {
|
foreach ($this->media as $media) {
|
||||||
if ($media->type === 'image') {
|
if ($media->type === 'image') {
|
||||||
$note .= '<img src="' . $media->url . '" alt="">';
|
$note .= PHP_EOL . '<img src="' . $media->url . '" alt="">';
|
||||||
}
|
}
|
||||||
if ($media->type === 'audio') {
|
if ($media->type === 'audio') {
|
||||||
$note .= '<audio src="' . $media->url . '">';
|
$note .= PHP_EOL . '<audio src="' . $media->url . '">';
|
||||||
}
|
}
|
||||||
if ($media->type === 'video') {
|
if ($media->type === 'video') {
|
||||||
$note .= '<video src="' . $media->url . '">';
|
$note .= PHP_EOL . '<video src="' . $media->url . '">';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
63
composer.lock
generated
63
composer.lock
generated
|
@ -1928,16 +1928,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v10.37.3",
|
"version": "v10.38.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "996375dd61f8c6e4ac262b57ed485655d71fcbdc"
|
"reference": "ced4689f495213e9d23995b36098f12a802cc15b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/996375dd61f8c6e4ac262b57ed485655d71fcbdc",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/ced4689f495213e9d23995b36098f12a802cc15b",
|
||||||
"reference": "996375dd61f8c6e4ac262b57ed485655d71fcbdc",
|
"reference": "ced4689f495213e9d23995b36098f12a802cc15b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -1983,6 +1983,8 @@
|
||||||
"voku/portable-ascii": "^2.0"
|
"voku/portable-ascii": "^2.0"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
|
"carbonphp/carbon-doctrine-types": ">=3.0",
|
||||||
|
"doctrine/dbal": ">=4.0",
|
||||||
"tightenco/collect": "<5.5.33"
|
"tightenco/collect": "<5.5.33"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
|
@ -2094,6 +2096,7 @@
|
||||||
"files": [
|
"files": [
|
||||||
"src/Illuminate/Collections/helpers.php",
|
"src/Illuminate/Collections/helpers.php",
|
||||||
"src/Illuminate/Events/functions.php",
|
"src/Illuminate/Events/functions.php",
|
||||||
|
"src/Illuminate/Filesystem/functions.php",
|
||||||
"src/Illuminate/Foundation/helpers.php",
|
"src/Illuminate/Foundation/helpers.php",
|
||||||
"src/Illuminate/Support/helpers.php"
|
"src/Illuminate/Support/helpers.php"
|
||||||
],
|
],
|
||||||
|
@ -2126,7 +2129,7 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2023-12-13T20:10:58+00:00"
|
"time": "2023-12-20T14:52:12+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/horizon",
|
"name": "laravel/horizon",
|
||||||
|
@ -5247,16 +5250,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spatie/laravel-ignition",
|
"name": "spatie/laravel-ignition",
|
||||||
"version": "2.3.1",
|
"version": "2.3.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/spatie/laravel-ignition.git",
|
"url": "https://github.com/spatie/laravel-ignition.git",
|
||||||
"reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8"
|
"reference": "66499cd3c858642ded56dafb8fa0352057ca20dd"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8",
|
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/66499cd3c858642ded56dafb8fa0352057ca20dd",
|
||||||
"reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8",
|
"reference": "66499cd3c858642ded56dafb8fa0352057ca20dd",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -5335,7 +5338,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-10-09T12:55:26+00:00"
|
"time": "2023-12-21T09:43:05+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "spomky-labs/cbor-php",
|
"name": "spomky-labs/cbor-php",
|
||||||
|
@ -9680,16 +9683,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "fidry/cpu-core-counter",
|
"name": "fidry/cpu-core-counter",
|
||||||
"version": "0.5.1",
|
"version": "1.0.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/theofidry/cpu-core-counter.git",
|
"url": "https://github.com/theofidry/cpu-core-counter.git",
|
||||||
"reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
|
"reference": "85193c0b0cb5c47894b5eaec906e946f054e7077"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
|
"url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077",
|
||||||
"reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
|
"reference": "85193c0b0cb5c47894b5eaec906e946f054e7077",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -9697,13 +9700,13 @@
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fidry/makefile": "^0.2.0",
|
"fidry/makefile": "^0.2.0",
|
||||||
|
"fidry/php-cs-fixer-config": "^1.1.2",
|
||||||
"phpstan/extension-installer": "^1.2.0",
|
"phpstan/extension-installer": "^1.2.0",
|
||||||
"phpstan/phpstan": "^1.9.2",
|
"phpstan/phpstan": "^1.9.2",
|
||||||
"phpstan/phpstan-deprecation-rules": "^1.0.0",
|
"phpstan/phpstan-deprecation-rules": "^1.0.0",
|
||||||
"phpstan/phpstan-phpunit": "^1.2.2",
|
"phpstan/phpstan-phpunit": "^1.2.2",
|
||||||
"phpstan/phpstan-strict-rules": "^1.4.4",
|
"phpstan/phpstan-strict-rules": "^1.4.4",
|
||||||
"phpunit/phpunit": "^9.5.26 || ^8.5.31",
|
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
|
||||||
"theofidry/php-cs-fixer-config": "^1.0",
|
|
||||||
"webmozarts/strict-phpunit": "^7.5"
|
"webmozarts/strict-phpunit": "^7.5"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
|
@ -9729,7 +9732,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
|
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
|
||||||
"source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
|
"source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -9737,7 +9740,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-12-24T12:35:10+00:00"
|
"time": "2023-09-17T21:38:23+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "filp/whoops",
|
"name": "filp/whoops",
|
||||||
|
@ -11353,16 +11356,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpstan/phpdoc-parser",
|
"name": "phpstan/phpdoc-parser",
|
||||||
"version": "1.24.4",
|
"version": "1.24.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||||
"reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496"
|
"reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496",
|
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
|
||||||
"reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496",
|
"reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -11394,9 +11397,9 @@
|
||||||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4"
|
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5"
|
||||||
},
|
},
|
||||||
"time": "2023-11-26T18:29:22+00:00"
|
"time": "2023-12-16T09:33:33+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/php-code-coverage",
|
"name": "phpunit/php-code-coverage",
|
||||||
|
@ -13516,16 +13519,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "vimeo/psalm",
|
"name": "vimeo/psalm",
|
||||||
"version": "5.17.0",
|
"version": "5.18.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/vimeo/psalm.git",
|
"url": "https://github.com/vimeo/psalm.git",
|
||||||
"reference": "c620f6e80d0abfca532b00bda366062aaedf6e5d"
|
"reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/vimeo/psalm/zipball/c620f6e80d0abfca532b00bda366062aaedf6e5d",
|
"url": "https://api.github.com/repos/vimeo/psalm/zipball/b113f3ed0259fd6e212d87c3df80eec95a6abf19",
|
||||||
"reference": "c620f6e80d0abfca532b00bda366062aaedf6e5d",
|
"reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -13544,7 +13547,7 @@
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"felixfbecker/advanced-json-rpc": "^3.1",
|
"felixfbecker/advanced-json-rpc": "^3.1",
|
||||||
"felixfbecker/language-server-protocol": "^1.5.2",
|
"felixfbecker/language-server-protocol": "^1.5.2",
|
||||||
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
|
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
|
||||||
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
|
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
|
||||||
"nikic/php-parser": "^4.16",
|
"nikic/php-parser": "^4.16",
|
||||||
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
|
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
|
||||||
|
@ -13622,7 +13625,7 @@
|
||||||
"issues": "https://github.com/vimeo/psalm/issues",
|
"issues": "https://github.com/vimeo/psalm/issues",
|
||||||
"source": "https://github.com/vimeo/psalm"
|
"source": "https://github.com/vimeo/psalm"
|
||||||
},
|
},
|
||||||
"time": "2023-12-03T20:21:41+00:00"
|
"time": "2023-12-16T09:37:35+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "zbateson/mail-mime-parser",
|
"name": "zbateson/mail-mime-parser",
|
||||||
|
|
|
@ -193,6 +193,7 @@ A note with some code:
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
echo 'Hello World';
|
echo 'Hello World';
|
||||||
|
```
|
||||||
EOF;
|
EOF;
|
||||||
$noteWithCode = Note::create([
|
$noteWithCode = Note::create([
|
||||||
'note' => $noteWithCodeContent,
|
'note' => $noteWithCodeContent,
|
||||||
|
|
11239
package-lock.json
generated
11239
package-lock.json
generated
File diff suppressed because it is too large
Load diff
40
package.json
40
package.json
|
@ -5,41 +5,17 @@
|
||||||
"repository": "https://github.com/jonnybarnes/jonnybarnes.uk",
|
"repository": "https://github.com/jonnybarnes/jonnybarnes.uk",
|
||||||
"license": "CC0-1.0",
|
"license": "CC0-1.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.23.6",
|
"eslint": "^8.56.0",
|
||||||
"@babel/preset-env": "^7.23.6",
|
"stylelint": "^16.0.2",
|
||||||
"@csstools/postcss-oklab-function": "^3.0.7",
|
"stylelint-config-standard": "^35.0.0"
|
||||||
"autoprefixer": "^10.4.16",
|
|
||||||
"babel-loader": "^9.1.3",
|
|
||||||
"browserlist": "^1.0.1",
|
|
||||||
"compression-webpack-plugin": "^10.0.0",
|
|
||||||
"css-loader": "^6.8.1",
|
|
||||||
"cssnano": "^6.0.2",
|
|
||||||
"eslint": "^8.55.0",
|
|
||||||
"eslint-webpack-plugin": "^4.0.1",
|
|
||||||
"mini-css-extract-plugin": "^2.7.6",
|
|
||||||
"postcss": "^8.4.32",
|
|
||||||
"postcss-combine-duplicated-selectors": "^10.0.2",
|
|
||||||
"postcss-combine-media-query": "^1.0.1",
|
|
||||||
"postcss-import": "^15.1.0",
|
|
||||||
"postcss-loader": "^7.3.3",
|
|
||||||
"postcss-nesting": "^12.0.1",
|
|
||||||
"style-loader": "^3.3.3",
|
|
||||||
"stylelint": "^15.11.0",
|
|
||||||
"stylelint-config-standard": "^34.0.0",
|
|
||||||
"stylelint-webpack-plugin": "^4.1.1",
|
|
||||||
"webpack": "^5.89.0",
|
|
||||||
"webpack-cli": "^5.1.4"
|
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "webpack --mode=development",
|
"eslint": "eslint public/assets/js/*.js",
|
||||||
"prod": "webpack --mode=production"
|
"stylelint": "stylelint public/assets/css/*.css",
|
||||||
|
"lint": "npm run eslint && npm run stylelint",
|
||||||
|
"compress": "./scripts/compress.sh",
|
||||||
|
"build": "npm run lint && npm run compress"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
|
||||||
"last 2 versions",
|
|
||||||
"> 1%",
|
|
||||||
"not IE 11",
|
|
||||||
"not IE_Mob 11"
|
|
||||||
],
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@11ty/is-land": "^4.0.0",
|
"@11ty/is-land": "^4.0.0",
|
||||||
"@zachleat/snow-fall": "^1.0.2"
|
"@zachleat/snow-fall": "^1.0.2"
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
!function(){"use strict";let e=new class{constructor(){}async register(){const e=await this.getCreateOptions(),t={challenge:this.base64URLStringToBuffer(e.challenge),rp:{id:e.rp.id,name:e.rp.name},user:{id:(new TextEncoder).encode(window.atob(e.user.id)),name:e.user.name,displayName:e.user.displayName},pubKeyCredParams:e.pubKeyCredParams,excludeCredentials:[],authenticatorSelection:e.authenticatorSelection,timeout:6e4},a=await navigator.credentials.create({publicKey:t});if(!a)throw new Error("Error generating a passkey");const n={id:a.id?a.id:null,type:a.type?a.type:null,rawId:a.rawId?this.bufferToBase64URLString(a.rawId):null,response:{attestationObject:a.response.attestationObject?this.bufferToBase64URLString(a.response.attestationObject):null,clientDataJSON:a.response.clientDataJSON?this.bufferToBase64URLString(a.response.clientDataJSON):null}};if(!(await window.fetch("/admin/passkeys/register",{method:"POST",body:JSON.stringify(n),cache:"no-cache",headers:{"Content-Type":"application/json","X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).ok)throw new Error("Error saving the passkey");window.location.reload()}async getCreateOptions(){const e=await fetch("/admin/passkeys/register",{method:"GET"});return await e.json()}async login(){const e=await this.getLoginData(),t=await navigator.credentials.get({publicKey:{challenge:this.base64URLStringToBuffer(e.challenge),userVerification:e.userVerification,timeout:6e4}});if(!t)throw new Error("Authentication failed");const a={id:t.id?t.id:"",type:t.type?t.type:"",rawId:t.rawId?this.bufferToBase64URLString(t.rawId):"",response:{authenticatorData:t.response.authenticatorData?this.bufferToBase64URLString(t.response.authenticatorData):"",clientDataJSON:t.response.clientDataJSON?this.bufferToBase64URLString(t.response.clientDataJSON):"",signature:t.response.signature?this.bufferToBase64URLString(t.response.signature):"",userHandle:t.response.userHandle?this.bufferToBase64URLString(t.response.userHandle):""}};if(!(await window.fetch("/login/passkey",{method:"POST",body:JSON.stringify(a),headers:{"Content-Type":"application/json","X-CSRF-TOKEN":document.querySelector('meta[name="csrf-token"]').getAttribute("content")}})).ok)throw new Error("Login failed");window.location.assign("/admin")}async getLoginData(){const e=await fetch("/login/passkey",{method:"GET"});return await e.json()}base64URLStringToBuffer(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),a=(4-t.length%4)%4,n=t.padEnd(t.length+a,"="),r=window.atob(n),i=new ArrayBuffer(r.length),s=new Uint8Array(i);for(let e=0;e<r.length;e++)s[e]=r.charCodeAt(e);return i}bufferToBase64URLString(e){const t=new Uint8Array(e);let a="";for(const e of t)a+=String.fromCharCode(e);return btoa(a).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}};document.querySelectorAll(".add-passkey").forEach((t=>{t.addEventListener("click",(()=>{e.register()}))})),document.querySelectorAll(".login-passkey").forEach((t=>{t.addEventListener("click",(()=>{e.login()}))}))}();
|
|
Binary file not shown.
BIN
public/assets/css/app.css.br
Normal file
BIN
public/assets/css/app.css.br
Normal file
Binary file not shown.
BIN
public/assets/css/code.css.br
Normal file
BIN
public/assets/css/code.css.br
Normal file
Binary file not shown.
|
@ -19,4 +19,10 @@ a {
|
||||||
& a:visited {
|
& a:visited {
|
||||||
color: var(--color-link);
|
color: var(--color-link);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
& .rss-icon {
|
||||||
|
& svg {
|
||||||
|
color: var(--rss-color-link);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
BIN
public/assets/css/colours.css.br
Normal file
BIN
public/assets/css/colours.css.br
Normal file
Binary file not shown.
BIN
public/assets/css/content.css.br
Normal file
BIN
public/assets/css/content.css.br
Normal file
Binary file not shown.
BIN
public/assets/css/fonts.css.br
Normal file
BIN
public/assets/css/fonts.css.br
Normal file
Binary file not shown.
BIN
public/assets/css/h-card.css.br
Normal file
BIN
public/assets/css/h-card.css.br
Normal file
Binary file not shown.
|
@ -8,6 +8,13 @@
|
||||||
#site-header {
|
#site-header {
|
||||||
grid-column: 2 / 3;
|
grid-column: 2 / 3;
|
||||||
grid-row: 1 / 2;
|
grid-row: 1 / 2;
|
||||||
|
|
||||||
|
& .rss-icon {
|
||||||
|
& svg {
|
||||||
|
width: auto;
|
||||||
|
height: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
BIN
public/assets/css/layout.css.br
Normal file
BIN
public/assets/css/layout.css.br
Normal file
Binary file not shown.
BIN
public/assets/css/notes.css.br
Normal file
BIN
public/assets/css/notes.css.br
Normal file
Binary file not shown.
|
@ -19,4 +19,5 @@
|
||||||
--color-link: oklch(48.09% 0.146 241.41deg);
|
--color-link: oklch(48.09% 0.146 241.41deg);
|
||||||
--color-link-visited: oklch(70.44% 0.21 304.41deg);
|
--color-link-visited: oklch(70.44% 0.21 304.41deg);
|
||||||
--color-primary-shadow: oklch(19.56% 0.054 125.505deg / 40%);
|
--color-primary-shadow: oklch(19.56% 0.054 125.505deg / 40%);
|
||||||
|
--rss-color-link: oklch(67.59% 0.189 42.04deg);
|
||||||
}
|
}
|
BIN
public/assets/css/variables.css.br
Normal file
BIN
public/assets/css/variables.css.br
Normal file
Binary file not shown.
349
public/assets/frontend/normalize.css
vendored
349
public/assets/frontend/normalize.css
vendored
|
@ -1,349 +0,0 @@
|
||||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
|
||||||
|
|
||||||
/* Document
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the line height in all browsers.
|
|
||||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
html {
|
|
||||||
line-height: 1.15; /* 1 */
|
|
||||||
-webkit-text-size-adjust: 100%; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sections
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the margin in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Render the `main` element consistently in IE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
main {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Correct the font size and margin on `h1` elements within `section` and
|
|
||||||
* `article` contexts in Chrome, Firefox, and Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2em;
|
|
||||||
margin: 0.67em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Grouping content
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Add the correct box sizing in Firefox.
|
|
||||||
* 2. Show the overflow in Edge and IE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
hr {
|
|
||||||
box-sizing: content-box; /* 1 */
|
|
||||||
height: 0; /* 1 */
|
|
||||||
overflow: visible; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
|
||||||
* 2. Correct the odd `em` font sizing in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
pre {
|
|
||||||
font-family: monospace, monospace; /* 1 */
|
|
||||||
font-size: 1em; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Text-level semantics
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the gray background on active links in IE 10.
|
|
||||||
*/
|
|
||||||
|
|
||||||
a {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Remove the bottom border in Chrome 57-
|
|
||||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
abbr[title] {
|
|
||||||
border-bottom: none; /* 1 */
|
|
||||||
text-decoration: underline; /* 2 */
|
|
||||||
text-decoration: underline dotted; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
b,
|
|
||||||
strong {
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
|
||||||
* 2. Correct the odd `em` font sizing in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
samp {
|
|
||||||
font-family: monospace, monospace; /* 1 */
|
|
||||||
font-size: 1em; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the correct font size in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
small {
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
|
||||||
* all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
sub,
|
|
||||||
sup {
|
|
||||||
font-size: 75%;
|
|
||||||
line-height: 0;
|
|
||||||
position: relative;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub {
|
|
||||||
bottom: -0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
sup {
|
|
||||||
top: -0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Embedded content
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the border on images inside links in IE 10.
|
|
||||||
*/
|
|
||||||
|
|
||||||
img {
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Forms
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Change the font styles in all browsers.
|
|
||||||
* 2. Remove the margin in Firefox and Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
optgroup,
|
|
||||||
select,
|
|
||||||
textarea {
|
|
||||||
font-family: inherit; /* 1 */
|
|
||||||
font-size: 100%; /* 1 */
|
|
||||||
line-height: 1.15; /* 1 */
|
|
||||||
margin: 0; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the overflow in IE.
|
|
||||||
* 1. Show the overflow in Edge.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button,
|
|
||||||
input { /* 1 */
|
|
||||||
overflow: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
|
||||||
* 1. Remove the inheritance of text transform in Firefox.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button,
|
|
||||||
select { /* 1 */
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Correct the inability to style clickable types in iOS and Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button,
|
|
||||||
[type="button"],
|
|
||||||
[type="reset"],
|
|
||||||
[type="submit"] {
|
|
||||||
-webkit-appearance: button;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the inner border and padding in Firefox.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button::-moz-focus-inner,
|
|
||||||
[type="button"]::-moz-focus-inner,
|
|
||||||
[type="reset"]::-moz-focus-inner,
|
|
||||||
[type="submit"]::-moz-focus-inner {
|
|
||||||
border-style: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Restore the focus styles unset by the previous rule.
|
|
||||||
*/
|
|
||||||
|
|
||||||
button:-moz-focusring,
|
|
||||||
[type="button"]:-moz-focusring,
|
|
||||||
[type="reset"]:-moz-focusring,
|
|
||||||
[type="submit"]:-moz-focusring {
|
|
||||||
outline: 1px dotted ButtonText;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Correct the padding in Firefox.
|
|
||||||
*/
|
|
||||||
|
|
||||||
fieldset {
|
|
||||||
padding: 0.35em 0.75em 0.625em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the text wrapping in Edge and IE.
|
|
||||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
|
||||||
* 3. Remove the padding so developers are not caught out when they zero out
|
|
||||||
* `fieldset` elements in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
legend {
|
|
||||||
box-sizing: border-box; /* 1 */
|
|
||||||
color: inherit; /* 2 */
|
|
||||||
display: table; /* 1 */
|
|
||||||
max-width: 100%; /* 1 */
|
|
||||||
padding: 0; /* 3 */
|
|
||||||
white-space: normal; /* 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
|
||||||
*/
|
|
||||||
|
|
||||||
progress {
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the default vertical scrollbar in IE 10+.
|
|
||||||
*/
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Add the correct box sizing in IE 10.
|
|
||||||
* 2. Remove the padding in IE 10.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[type="checkbox"],
|
|
||||||
[type="radio"] {
|
|
||||||
box-sizing: border-box; /* 1 */
|
|
||||||
padding: 0; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[type="number"]::-webkit-inner-spin-button,
|
|
||||||
[type="number"]::-webkit-outer-spin-button {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the odd appearance in Chrome and Safari.
|
|
||||||
* 2. Correct the outline style in Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[type="search"] {
|
|
||||||
-webkit-appearance: textfield; /* 1 */
|
|
||||||
outline-offset: -2px; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the inner padding in Chrome and Safari on macOS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[type="search"]::-webkit-search-decoration {
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
|
||||||
* 2. Change font properties to `inherit` in Safari.
|
|
||||||
*/
|
|
||||||
|
|
||||||
::-webkit-file-upload-button {
|
|
||||||
-webkit-appearance: button; /* 1 */
|
|
||||||
font: inherit; /* 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Interactive
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
|
||||||
*/
|
|
||||||
|
|
||||||
details {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add the correct display in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
summary {
|
|
||||||
display: list-item;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Misc
|
|
||||||
========================================================================== */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the correct display in IE 10+.
|
|
||||||
*/
|
|
||||||
|
|
||||||
template {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add the correct display in IE 10.
|
|
||||||
*/
|
|
||||||
|
|
||||||
[hidden] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,3 @@
|
||||||
import '../css/app.css';
|
|
||||||
|
|
||||||
import { Auth } from './auth.js';
|
import { Auth } from './auth.js';
|
||||||
|
|
||||||
let auth = new Auth();
|
let auth = new Auth();
|
BIN
public/assets/js/app.js.br
Normal file
BIN
public/assets/js/app.js.br
Normal file
Binary file not shown.
BIN
public/assets/js/auth.js.br
Normal file
BIN
public/assets/js/auth.js.br
Normal file
Binary file not shown.
13
resources/views/icons/rss.blade.php
Normal file
13
resources/views/icons/rss.blade.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
@php
|
||||||
|
if (isset($title)) {
|
||||||
|
$uniqueId = bin2hex(random_bytes(6));
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss"
|
||||||
|
@if($title)aria-labelledby="{{ $uniqueId }}"@endif
|
||||||
|
>
|
||||||
|
@if($title)<title id="{{ $uniqueId }}">{{ $title }}</title>@endif
|
||||||
|
<path d="M4 11a9 9 0 0 1 9 9"></path>
|
||||||
|
<path d="M4 4a16 16 0 0 1 16 16"></path>
|
||||||
|
<circle cx="5" cy="19" r="1"></circle>
|
||||||
|
</svg>
|
|
@ -4,14 +4,11 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||||
<title>@yield('title'){{ config('app.name') }}</title>
|
<title>@yield('title'){{ config('app.name') }}</title>
|
||||||
<meta name="viewport" content="width=device-width">
|
|
||||||
@if (!empty(config('app.font_link')))
|
@if (!empty(config('app.font_link')))
|
||||||
<link rel="stylesheet" href="{{ config('app.font_link') }}">
|
<link rel="stylesheet" href="{{ config('app.font_link') }}">
|
||||||
@endif
|
@endif
|
||||||
<link rel="stylesheet" href="/assets/highlight/zenburn.css">
|
<link rel="stylesheet" href="/assets/highlight/zenburn.css">
|
||||||
@production
|
<link rel="stylesheet" href="/assets/css/app.css">
|
||||||
<link rel="stylesheet" href="/assets/app.css">
|
|
||||||
@endproduction
|
|
||||||
<link rel="alternate" type="application/rss+xml" title="Blog RSS Feed" href="/blog/feed.rss">
|
<link rel="alternate" type="application/rss+xml" title="Blog RSS Feed" href="/blog/feed.rss">
|
||||||
<link rel="alternate" type="application/atom+xml" title="Blog Atom Feed" href="/blog/feed.atom">
|
<link rel="alternate" type="application/atom+xml" title="Blog Atom Feed" href="/blog/feed.atom">
|
||||||
<link rel="alternate" type="application/json" title="Blog JSON Feed" href="/blog/feed.json">
|
<link rel="alternate" type="application/json" title="Blog JSON Feed" href="/blog/feed.json">
|
||||||
|
@ -47,6 +44,7 @@
|
||||||
<a href="/likes">Likes</a>
|
<a href="/likes">Likes</a>
|
||||||
<a href="/contacts">Contacts</a>
|
<a href="/contacts">Contacts</a>
|
||||||
<a href="/projects">Projects</a>
|
<a href="/projects">Projects</a>
|
||||||
|
<a href="/notes/feed.json" class="rss-icon">@include('icons.rss', ['title' => 'RSS Feed'])</a>
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -80,7 +78,7 @@
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
<script type="module" src="/assets/frontend/is-land.js"></script>
|
<script type="module" src="/assets/frontend/is-land.js"></script>
|
||||||
<script type="module" src="/assets/frontend/snow-fall.js"></script>
|
<script type="module" src="/assets/frontend/snow-fall.js"></script>
|
||||||
<script src="/assets/app.js"></script>
|
<script type="module" src="/assets/js/app.js"></script>
|
||||||
@show
|
@show
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
3
scripts/build.sh
Executable file
3
scripts/build.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
echo "Build script"
|
|
@ -1,37 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
echo "compressing app.css"
|
|
||||||
zopfli --i100 ./public/assets/css/app.css
|
|
||||||
brotli --force --quality=11 --output=./public/assets/css/app.css.br -- ./public/assets/css/app.css
|
|
||||||
|
|
||||||
echo "compressing js assets"
|
|
||||||
for file in ./public/assets/js/*.js
|
|
||||||
do
|
|
||||||
zopfli --i100 $file
|
|
||||||
brotli --force --quality=11 --output=$file.br -- $file
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "compressing frontend assets"
|
|
||||||
for file in ./public/assets/frontend/*.css
|
|
||||||
do
|
|
||||||
if [[ -f $file ]]; then
|
|
||||||
zopfli --i100 $file
|
|
||||||
brotli --force --quality=11 --output=$file.br -- $file
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
for file in ./public/assets/frontend/a11y.css/*.css
|
|
||||||
do
|
|
||||||
if [[ -f $file ]]; then
|
|
||||||
zopfli --i100 $file
|
|
||||||
brotli --force --quality=11 --output=$file.br -- $file
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "compressing highlight styles"
|
|
||||||
for file in ./public/assets/highlight/*.css
|
|
||||||
do
|
|
||||||
if [[ -f $file ]]; then
|
|
||||||
zopfli --i100 $file
|
|
||||||
brotli --force --quality=11 --output=$file.br -- $file
|
|
||||||
fi
|
|
||||||
done
|
|
16
scripts/compress.sh
Executable file
16
scripts/compress.sh
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
if ! type brotli &> /dev/null; then
|
||||||
|
echo "brotli not installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
for file in ./public/assets/css/*.css
|
||||||
|
do
|
||||||
|
brotli --force --quality=11 --output=$file.br -- $file
|
||||||
|
done
|
||||||
|
|
||||||
|
for file in ./public/assets/js/*.js
|
||||||
|
do
|
||||||
|
brotli --force --quality=11 --output=$file.br -- $file
|
||||||
|
done
|
|
@ -1,25 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Putting the Laravel app in maintenance mode"
|
|
||||||
php artisan down
|
|
||||||
php artisan horizon:terminate
|
|
||||||
|
|
||||||
echo "Pulling the latest changes"
|
|
||||||
git pull
|
|
||||||
|
|
||||||
echo "Updating composer and dependencies"
|
|
||||||
sudo composer self-update
|
|
||||||
composer install --no-dev --optimize-autoloader
|
|
||||||
|
|
||||||
echo "running any migrations"
|
|
||||||
php artisan migrate
|
|
||||||
|
|
||||||
echo "Caching Laravel route and config files"
|
|
||||||
php artisan route:cache
|
|
||||||
php artisan config:cache
|
|
||||||
|
|
||||||
echo "Restarting the supervisord instances"
|
|
||||||
sudo supervisorctl restart all
|
|
||||||
|
|
||||||
echo "Bringing the Laravel app back online"
|
|
||||||
php artisan up
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
for file in ./public/assets/js/*.js
|
|
||||||
do
|
|
||||||
echo "uglifying `basename $file`"
|
|
||||||
uglifyjs --verbose --compress --source-map content=${file:2}.map,url=`basename $file`.map,filename=${file:2}.map,includeSources=true --output $file $file
|
|
||||||
done
|
|
|
@ -6,6 +6,7 @@ namespace Tests\Feature;
|
||||||
|
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
use App\Models\Note;
|
use App\Models\Note;
|
||||||
|
use App\Models\Place;
|
||||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
@ -159,4 +160,14 @@ class FeedsTest extends TestCase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
public function jsonNoteFeedLoadsPlaceDataWithoutLazyLoading(): void
|
||||||
|
{
|
||||||
|
$place = Place::factory()->create();
|
||||||
|
Note::factory()->create(['note' => null, 'place_id' => $place->id]);
|
||||||
|
$response = $this->get('/notes/feed.json');
|
||||||
|
|
||||||
|
$response->assertOk();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -322,7 +322,7 @@ class NotesTest extends TestCase
|
||||||
]);
|
]);
|
||||||
$note->media()->save($media);
|
$note->media()->save($media);
|
||||||
|
|
||||||
$expected = '<p>A nice image</p>
|
$expected = 'A nice image
|
||||||
<img src="' . config('filesystems.disks.s3.url') . '/test.png" alt="">';
|
<img src="' . config('filesystems.disks.s3.url') . '/test.png" alt="">';
|
||||||
$this->assertEquals($expected, $note->content);
|
$this->assertEquals($expected, $note->content);
|
||||||
}
|
}
|
||||||
|
@ -339,7 +339,7 @@ class NotesTest extends TestCase
|
||||||
]);
|
]);
|
||||||
$note->media()->save($media);
|
$note->media()->save($media);
|
||||||
|
|
||||||
$expected = '<p>A nice video</p>
|
$expected = 'A nice video
|
||||||
<video src="' . config('filesystems.disks.s3.url') . '/test.mkv">';
|
<video src="' . config('filesystems.disks.s3.url') . '/test.mkv">';
|
||||||
$this->assertEquals($expected, $note->content);
|
$this->assertEquals($expected, $note->content);
|
||||||
}
|
}
|
||||||
|
@ -356,7 +356,7 @@ class NotesTest extends TestCase
|
||||||
]);
|
]);
|
||||||
$note->media()->save($media);
|
$note->media()->save($media);
|
||||||
|
|
||||||
$expected = '<p>Some nice audio</p>
|
$expected = 'Some nice audio
|
||||||
<audio src="' . config('filesystems.disks.s3.url') . '/test.flac">';
|
<audio src="' . config('filesystems.disks.s3.url') . '/test.flac">';
|
||||||
$this->assertEquals($expected, $note->content);
|
$this->assertEquals($expected, $note->content);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue