From 0586e04204885088f31ac9861446eb0759cc8d2f Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Thu, 5 Jan 2023 20:41:27 +0100
Subject: [PATCH 01/16] tech relations
---
app/Http/Controllers/TechniqueController.php | 2 +-
app/Models/Technique.php | 7 ++++
app/Models/TechniqueRelation.php | 10 ++++++
...90010_create_technique_relations_table.php | 34 +++++++++++++++++++
resources/js/components/techniques/Detail.js | 12 ++++++-
resources/js/helpers/Technique.js | 15 ++++++++
resources/js/i18n/de.js | 1 +
resources/js/i18n/en.js | 1 +
8 files changed, 80 insertions(+), 2 deletions(-)
create mode 100644 app/Models/TechniqueRelation.php
create mode 100644 database/migrations/2023_01_05_190010_create_technique_relations_table.php
diff --git a/app/Http/Controllers/TechniqueController.php b/app/Http/Controllers/TechniqueController.php
index 268c3f6..9862325 100644
--- a/app/Http/Controllers/TechniqueController.php
+++ b/app/Http/Controllers/TechniqueController.php
@@ -34,7 +34,7 @@ class TechniqueController extends Controller
public function single(Request $request, Technique $tech) {
$this->authorize('view', $tech);
- $tech->load('chapters');
+ $tech->load(['chapters', 'relations']);
return $tech->toJson();
}
diff --git a/app/Models/Technique.php b/app/Models/Technique.php
index 256afc0..f0a29d3 100644
--- a/app/Models/Technique.php
+++ b/app/Models/Technique.php
@@ -17,6 +17,13 @@ class Technique extends Model
->using(TechniqueChapter::class);
}
+ public function relations() {
+ return $this
+ ->belongsToMany(Technique::class, 'technique_relations', 'from_id', 'to_id')
+ ->withPivot('type')
+ ->using(TechniqueRelation::class);
+ }
+
public function translations() {
return $this->hasMany(TechniqueTranslation::class);
}
diff --git a/app/Models/TechniqueRelation.php b/app/Models/TechniqueRelation.php
new file mode 100644
index 0000000..96c73c3
--- /dev/null
+++ b/app/Models/TechniqueRelation.php
@@ -0,0 +1,10 @@
+id();
+ $table->foreignId('from_id')->references('id')->on('techniques')->constrained();
+ $table->foreignId('to_id')->references('id')->on('techniques')->constrained();
+ $table->string('type')->default('related');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('technique_relations');
+ }
+};
diff --git a/resources/js/components/techniques/Detail.js b/resources/js/components/techniques/Detail.js
index 303921c..488205b 100644
--- a/resources/js/components/techniques/Detail.js
+++ b/resources/js/components/techniques/Detail.js
@@ -3,9 +3,15 @@ import React from 'react';
import { Container } from 'react-bootstrap';
import { withTranslation } from 'react-i18next';
+import List from './List';
import Outline from './Outline';
import RawHTML from '../common/RawHTML';
-import { getTranslation } from '../../helpers/Technique';
+import {
+ getRelations,
+ getTranslation,
+ hasRelations,
+ sorted,
+} from '../../helpers/Technique';
import i18n from '../../i18n';
const Detail = ({ technique }) =>
@@ -24,6 +30,10 @@ const Detail = ({ technique }) =>
) : null}
+ {hasRelations(technique, 'related') ? <>
+ {i18n.t('techniques.seeAlso')}
+
+ > : null}
;
Detail.propTypes = {
diff --git a/resources/js/helpers/Technique.js b/resources/js/helpers/Technique.js
index 7ec22d3..410f015 100644
--- a/resources/js/helpers/Technique.js
+++ b/resources/js/helpers/Technique.js
@@ -1,3 +1,12 @@
+import i18n from '../i18n';
+
+export const getRelations = (tech, type) => {
+ const rs = (tech && tech.relations) || [];
+ return type ? rs.filter(r => r && r.pivot && r.pivot.type === type) : rs;
+};
+
+export const hasRelations = (tech, type) => getRelations(tech, type).length > 0;
+
export const getTranslation = (tech, prop, lang) => {
const direct = tech.translations.find(t => t.locale === lang);
if (direct) {
@@ -13,6 +22,12 @@ export const getTranslation = (tech, prop, lang) => {
export const compareTranslation = (prop, lang) => (a, b) =>
getTranslation(a, prop, lang).localeCompare(getTranslation(b, prop, lang));
+export const sorted = (techs) => [...techs].sort(compareTranslation('title', i18n.language));
+
export default {
+ compareTranslation,
+ getRelations,
getTranslation,
+ hasRelations,
+ sorted,
};
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index c28c1b2..f3fbe96 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -480,6 +480,7 @@ export default {
},
techniques: {
heading: 'Techniken',
+ seeAlso: 'Siehe auch',
},
tournaments: {
admins: 'Organisation',
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index dfff38b..7088dd4 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -480,6 +480,7 @@ export default {
},
techniques: {
heading: 'Techniques',
+ seeAlso: 'See also',
},
tournaments: {
admins: 'Admins',
--
2.39.2
From 5b21bf8a7e7efed35389c693fcf3775d6ee3f0ec Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Thu, 5 Jan 2023 23:27:54 +0100
Subject: [PATCH 02/16] more content variety
---
resources/js/components/App.js | 26 +++++++++++++++++--
resources/js/components/pages/Techniques.js | 22 ++++++++++------
resources/js/components/techniques/List.js | 7 +++--
.../js/components/techniques/Overview.js | 8 ++++--
resources/js/helpers/Technique.js | 10 +++++++
resources/js/i18n/de.js | 6 +++++
resources/js/i18n/en.js | 6 +++++
routes/api.php | 3 +++
8 files changed, 74 insertions(+), 14 deletions(-)
diff --git a/resources/js/components/App.js b/resources/js/components/App.js
index bea5c34..fe8ff25 100644
--- a/resources/js/components/App.js
+++ b/resources/js/components/App.js
@@ -59,8 +59,30 @@ const App = () => {
} />
- } />
- } />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
+ }
+ />
} />
} />
} />
diff --git a/resources/js/components/pages/Techniques.js b/resources/js/components/pages/Techniques.js
index c206a31..4bc0066 100644
--- a/resources/js/components/pages/Techniques.js
+++ b/resources/js/components/pages/Techniques.js
@@ -1,4 +1,5 @@
import axios from 'axios';
+import PropTypes from 'prop-types';
import React from 'react';
import { withTranslation } from 'react-i18next';
@@ -10,7 +11,7 @@ import Overview from '../techniques/Overview';
import { compareTranslation } from '../../helpers/Technique';
import i18n from '../../i18n';
-const Techniques = () => {
+const Techniques = ({ namespace, type }) => {
const [error, setError] = React.useState(null);
const [loading, setLoading] = React.useState(true);
const [techniques, setTechniques] = React.useState([]);
@@ -18,11 +19,11 @@ const Techniques = () => {
React.useEffect(() => {
const ctrl = new AbortController();
setLoading(true);
- window.document.title = i18n.t('techniques.heading');
+ window.document.title = i18n.t(`${namespace}.heading`);
axios
- .get(`/api/tech`, {
+ .get(`/api/content`, {
params: {
- type: 'tech',
+ type,
},
signal: ctrl.signal
})
@@ -39,12 +40,12 @@ const Techniques = () => {
return () => {
ctrl.abort();
};
- }, []);
+ }, [namespace, type]);
React.useEffect(() => {
- window.document.title = i18n.t('techniques.heading');
+ window.document.title = i18n.t(`${namespace}.heading`);
setTechniques(t => [...t].sort(compareTranslation('title', i18n.language)));
- }, [i18n.language]);
+ }, [namespace, i18n.language]);
if (loading) {
return ;
@@ -59,8 +60,13 @@ const Techniques = () => {
}
return
-
+
;
};
+Techniques.propTypes = {
+ namespace: PropTypes.string,
+ type: PropTypes.string,
+};
+
export default withTranslation()(Techniques);
diff --git a/resources/js/components/techniques/List.js b/resources/js/components/techniques/List.js
index 0549cd3..58f0eae 100644
--- a/resources/js/components/techniques/List.js
+++ b/resources/js/components/techniques/List.js
@@ -2,14 +2,17 @@ import PropTypes from 'prop-types';
import React from 'react';
import { Link } from 'react-router-dom';
-import { getTranslation } from '../../helpers/Technique';
+import {
+ getLink,
+ getTranslation,
+} from '../../helpers/Technique';
import i18n from '../../i18n';
const List = ({ techniques }) =>
{techniques.map(tech =>
-
-
+
{getTranslation(tech, 'title', i18n.language)}
diff --git a/resources/js/components/techniques/Overview.js b/resources/js/components/techniques/Overview.js
index 8c7cd4d..1686865 100644
--- a/resources/js/components/techniques/Overview.js
+++ b/resources/js/components/techniques/Overview.js
@@ -6,12 +6,16 @@ import { withTranslation } from 'react-i18next';
import List from './List';
import i18n from '../../i18n';
-const Overview = ({ techniques }) =>
- {i18n.t('techniques.heading')}
+const Overview = ({
+ namespace,
+ techniques,
+}) =>
+ {i18n.t(`${namespace}.heading`)}
;
Overview.propTypes = {
+ namespace: PropTypes.string,
techniques: PropTypes.arrayOf(PropTypes.shape({
})),
};
diff --git a/resources/js/helpers/Technique.js b/resources/js/helpers/Technique.js
index 410f015..1a8f4fc 100644
--- a/resources/js/helpers/Technique.js
+++ b/resources/js/helpers/Technique.js
@@ -1,5 +1,15 @@
import i18n from '../i18n';
+export const getLink = tech => {
+ if (tech.type === 'mode') {
+ return `/modes/${tech.name}`;
+ }
+ if (tech.type === 'ruleset') {
+ return `/rulesets/${tech.name}`;
+ }
+ return `/tech/${tech.name}`;
+};
+
export const getRelations = (tech, type) => {
const rs = (tech && tech.relations) || [];
return type ? rs.filter(r => r && r.pivot && r.pivot.type === type) : rs;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index f3fbe96..e77d1de 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -371,6 +371,9 @@ export default {
somaria: 'Cane of Somaria',
},
},
+ modes: {
+ heading: 'Modi',
+ },
participants: {
empty: 'Noch keine Teilnehmer eingetragen',
heading: 'Teilnehmer',
@@ -478,6 +481,9 @@ export default {
unlockError: 'Fehler beim Entsperren',
unlockSuccess: 'Runde entsperrt',
},
+ rulesets: {
+ heading: 'Regelsätze',
+ },
techniques: {
heading: 'Techniken',
seeAlso: 'Siehe auch',
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index 7088dd4..5a6695a 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -371,6 +371,9 @@ export default {
somaria: 'Cane of Somaria',
},
},
+ modes: {
+ heading: 'Modes',
+ },
participants: {
empty: 'No participants on record',
heading: 'Participants',
@@ -478,6 +481,9 @@ export default {
unlockError: 'Error unlocking round',
unlockSuccess: 'Round unlocked',
},
+ rulesets: {
+ heading: 'Rulesets',
+ },
techniques: {
heading: 'Techniques',
seeAlso: 'See also',
diff --git a/routes/api.php b/routes/api.php
index 0f7aa3e..4ec1bb1 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -29,6 +29,9 @@ Route::post('aos-seed/{hash}/retry', 'App\Http\Controllers\AosSeedController@ret
Route::post('application/{application}/accept', 'App\Http\Controllers\ApplicationController@accept');
Route::post('application/{application}/reject', 'App\Http\Controllers\ApplicationController@reject');
+Route::get('content', 'App\Http\Controllers\TechniqueController@search');
+Route::get('content/{tech:name}', 'App\Http\Controllers\TechniqueController@single');
+
Route::get('discord-guilds', 'App\Http\Controllers\DiscordGuildController@search');
Route::get('discord-guilds/{guild_id}', 'App\Http\Controllers\DiscordGuildController@single');
Route::get('discord-guilds/{guild_id}/channels', 'App\Http\Controllers\DiscordChannelController@search');
--
2.39.2
From de9be1288c2b3214e007c8d67d6b19e756cf08ba Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Fri, 13 Jan 2023 14:24:54 +0100
Subject: [PATCH 03/16] tech ruleset classification
---
app/Models/Technique.php | 1 +
.../2022_08_19_080601_tech_index.php | 2 +-
.../2023_01_13_121640_tech_ruleset.php | 32 +++++++++++++++++
resources/js/components/common/Icon.js | 3 ++
resources/js/components/techniques/Detail.js | 10 +++++-
resources/js/components/techniques/List.js | 20 +++++++----
.../js/components/techniques/Rulesets.js | 36 +++++++++++++++++++
resources/js/i18n/de.js | 15 ++++++++
resources/js/i18n/en.js | 15 ++++++++
resources/sass/techniques.scss | 8 +++++
10 files changed, 133 insertions(+), 9 deletions(-)
create mode 100644 database/migrations/2023_01_13_121640_tech_ruleset.php
create mode 100644 resources/js/components/techniques/Rulesets.js
diff --git a/app/Models/Technique.php b/app/Models/Technique.php
index f0a29d3..c8ad91b 100644
--- a/app/Models/Technique.php
+++ b/app/Models/Technique.php
@@ -30,6 +30,7 @@ class Technique extends Model
protected $casts = [
'index' => 'boolean',
+ 'rulesets' => 'array',
];
protected $with = [
diff --git a/database/migrations/2022_08_19_080601_tech_index.php b/database/migrations/2022_08_19_080601_tech_index.php
index d1b6d6e..e0f615a 100644
--- a/database/migrations/2022_08_19_080601_tech_index.php
+++ b/database/migrations/2022_08_19_080601_tech_index.php
@@ -26,7 +26,7 @@ return new class extends Migration
*/
public function down()
{
- Schema::table('rounds', function(Blueprint $table) {
+ Schema::table('techniques', function(Blueprint $table) {
$table->dropColumn('index');
$table->dropColumn('priority');
});
diff --git a/database/migrations/2023_01_13_121640_tech_ruleset.php b/database/migrations/2023_01_13_121640_tech_ruleset.php
new file mode 100644
index 0000000..1765f40
--- /dev/null
+++ b/database/migrations/2023_01_13_121640_tech_ruleset.php
@@ -0,0 +1,32 @@
+text('rulesets')->nullable()->default(null);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('techniques', function(Blueprint $table) {
+ $table->dropColumn('rulesets');
+ });
+ }
+};
diff --git a/resources/js/components/common/Icon.js b/resources/js/components/common/Icon.js
index 581ce6f..bce75f5 100644
--- a/resources/js/components/common/Icon.js
+++ b/resources/js/components/common/Icon.js
@@ -59,6 +59,7 @@ const makePreset = (presetDisplayName, presetName) => {
Icon.ACCEPT = makePreset('AcceptIcon', 'square-check');
Icon.ADD = makePreset('AddIcon', 'circle-plus');
+Icon.ALLOWED = makePreset('AllowedIcon', 'square-check');
Icon.APPLY = makePreset('ApplyIcon', 'right-to-bracket');
Icon.APPLICATIONS = makePreset('ApplicationsIcon', 'person-running');
Icon.CHART = makePreset('ChartIcon', 'chart-line');
@@ -66,6 +67,7 @@ Icon.DISCORD = makePreset('DiscordIcon', ['fab', 'discord']);
Icon.EDIT = makePreset('EditIcon', 'edit');
Icon.FINISHED = makePreset('FinishedIcon', 'square-check');
Icon.FIRST_PLACE = makePreset('FirstPlaceIcon', 'trophy');
+Icon.FORBIDDEN = makePreset('ForbiddenIcon', 'square-xmark');
Icon.FORFEIT = makePreset('ForfeitIcon', 'square-xmark');
Icon.LANGUAGE = makePreset('LanguageIcon', 'language');
Icon.LOCKED = makePreset('LockedIcon', 'lock');
@@ -80,6 +82,7 @@ Icon.SETTINGS = makePreset('SettingsIcon', 'cog');
Icon.STREAM = makePreset('StreamIcon', ['fab', 'twitch']);
Icon.THIRD_PLACE = makePreset('ThirdPlaceIcon', 'award');
Icon.TWITCH = makePreset('TwitchIcon', ['fab', 'twitch']);
+Icon.UNKNOWN = makePreset('UnknownIcon', 'square-question');
Icon.UNLOCKED = makePreset('UnlockedIcon', 'lock-open');
Icon.VIDEO = makePreset('VideoIcon', 'video');
Icon.YOUTUBE = makePreset('YoutubeIcon', ['fab', 'youtube']);
diff --git a/resources/js/components/techniques/Detail.js b/resources/js/components/techniques/Detail.js
index 488205b..6653923 100644
--- a/resources/js/components/techniques/Detail.js
+++ b/resources/js/components/techniques/Detail.js
@@ -5,6 +5,7 @@ import { withTranslation } from 'react-i18next';
import List from './List';
import Outline from './Outline';
+import Rulesets from './Rulesets';
import RawHTML from '../common/RawHTML';
import {
getRelations,
@@ -15,7 +16,12 @@ import {
import i18n from '../../i18n';
const Detail = ({ technique }) =>
- {getTranslation(technique, 'title', i18n.language)}
+
+
{getTranslation(technique, 'title', i18n.language)}
+ {technique && technique.rulesets ?
+
+ : null}
+
{technique.chapters ? technique.chapters.map(chapter =>
@@ -41,6 +47,8 @@ Detail.propTypes = {
chapters: PropTypes.arrayOf(PropTypes.shape({
})),
description: PropTypes.string,
+ rulesets: PropTypes.shape({
+ }),
title: PropTypes.string,
}),
};
diff --git a/resources/js/components/techniques/List.js b/resources/js/components/techniques/List.js
index 58f0eae..e18937e 100644
--- a/resources/js/components/techniques/List.js
+++ b/resources/js/components/techniques/List.js
@@ -2,6 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import { Link } from 'react-router-dom';
+import Rulesets from './Rulesets';
import {
getLink,
getTranslation,
@@ -10,13 +11,18 @@ import i18n from '../../i18n';
const List = ({ techniques }) => ;
diff --git a/resources/js/components/techniques/Rulesets.js b/resources/js/components/techniques/Rulesets.js
new file mode 100644
index 0000000..6d4ee50
--- /dev/null
+++ b/resources/js/components/techniques/Rulesets.js
@@ -0,0 +1,36 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+import { useTranslation } from 'react-i18next';
+
+import Icon from '../common/Icon';
+
+const Rulesets = ({ technique }) => {
+ const { t } = useTranslation();
+
+ return
+ {['competitive', 'owg', 'mg', 'nl'].map(r =>
+
+ {technique && technique.rulesets && technique.rulesets[r] ?
+
+ : null}
+ {technique && technique.rulesets && !technique.rulesets[r] ?
+
+ : null}
+ {!technique || !technique.rulesets ?
+
+ : null}
+ {' '}
+ {t(`techniques.rulesetCodes.${r}`)}
+
+ )}
+
;
+};
+
+Rulesets.propTypes = {
+ technique: PropTypes.shape({
+ rulesets: PropTypes.shape({
+ }),
+ }),
+};
+
+export default Rulesets;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index e77d1de..1334fde 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -294,6 +294,7 @@ export default {
},
icon: {
AddIcon: 'Hinzufügen',
+ AllowedIcon: 'Erlaubt',
ApplicationsIcon: 'Anträge',
ApplyIcon: 'Beantragen',
ChartIcon: 'Diagramm',
@@ -301,6 +302,7 @@ export default {
EditIcon: 'Bearbeiten',
FinishedIcon: 'Abgeschlossen',
FirstPlaceIcon: 'Erster Platz',
+ ForbiddenIcon: 'Verboten',
ForfeitIcon: 'Aufgegeben',
LanguageIcon: 'Sprache',
LockedIcon: 'Gesperrt',
@@ -313,6 +315,7 @@ export default {
StreamIcon: 'Stream',
ThirdPlaceIcon: 'Dritter Platz',
TwitchIcon: 'Twitch',
+ UnknownIcon: 'Unbekannt',
UnlockedIcon: 'Offen',
YoutubeIcon: 'YouTube',
VideoIcon: 'Video',
@@ -486,6 +489,18 @@ export default {
},
techniques: {
heading: 'Techniken',
+ rulesetCodes: {
+ competitive: 'COM',
+ mg: 'MG',
+ nl: 'NL',
+ owg: 'OWG',
+ },
+ rulesetDescriptions: {
+ competitive: 'Competitive',
+ mg: 'Major Glitches',
+ nl: 'No Logic',
+ owg: 'Overworld Glitches',
+ },
seeAlso: 'Siehe auch',
},
tournaments: {
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index 5a6695a..d4e61bb 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -294,6 +294,7 @@ export default {
},
icon: {
AddIcon: 'Add',
+ AllowedIcon: 'Allowed',
ApplicationsIcon: 'Applications',
ApplyIcon: 'Apply',
ChartIcon: 'Chart',
@@ -301,6 +302,7 @@ export default {
EditIcon: 'Edit',
FinishedIcon: 'Finished',
FirstPlaceIcon: 'First Place',
+ ForbiddenIcon: 'Forbidden',
ForfeitIcon: 'Forfeit',
LanguageIcon: 'Language',
LockedIcon: 'Locked',
@@ -313,6 +315,7 @@ export default {
StreamIcon: 'Stream',
ThirdPlaceIcon: 'Third Place',
TwitchIcon: 'Twitch',
+ UnknownIcon: 'Unknown',
UnlockedIcon: 'Unlocked',
YoutubeIcon: 'YouTube',
VideoIcon: 'Video',
@@ -486,6 +489,18 @@ export default {
},
techniques: {
heading: 'Techniques',
+ rulesetCodes: {
+ competitive: 'COM',
+ mg: 'MG',
+ nl: 'NL',
+ owg: 'OWG',
+ },
+ rulesetDescriptions: {
+ competitive: 'Competitive',
+ mg: 'Major Glitches',
+ nl: 'No Logic',
+ owg: 'Overworld Glitches',
+ },
seeAlso: 'See also',
},
tournaments: {
diff --git a/resources/sass/techniques.scss b/resources/sass/techniques.scss
index 19dcf41..a28c438 100644
--- a/resources/sass/techniques.scss
+++ b/resources/sass/techniques.scss
@@ -1,3 +1,11 @@
+.ruleset-box {
+ display: inline-grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 0 1ex;
+ padding: 0.5ex;
+ border-radius: 0.5ex;
+}
+
.tech-list {
margin: 1em 0;
padding: 0;
--
2.39.2
From 2c5535946aa15278c6e969c9a9b24d32a45e5b12 Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Fri, 13 Jan 2023 18:31:56 +0100
Subject: [PATCH 04/16] allow filtering of techniques by ruleset
---
app/Http/Controllers/TechniqueController.php | 31 ++++++++++++
resources/js/components/pages/Techniques.js | 38 +++++++++++---
.../js/components/techniques/Overview.js | 14 +++++-
.../js/components/techniques/TechFilter.js | 49 +++++++++++++++++++
resources/js/i18n/de.js | 1 +
resources/js/i18n/en.js | 1 +
resources/sass/techniques.scss | 12 +++++
7 files changed, 139 insertions(+), 7 deletions(-)
create mode 100644 resources/js/components/techniques/TechFilter.js
diff --git a/app/Http/Controllers/TechniqueController.php b/app/Http/Controllers/TechniqueController.php
index 9862325..8694c04 100644
--- a/app/Http/Controllers/TechniqueController.php
+++ b/app/Http/Controllers/TechniqueController.php
@@ -12,6 +12,11 @@ class TechniqueController extends Controller
public function search(Request $request) {
$validatedData = $request->validate([
'phrase' => 'string|nullable',
+ 'ruleset' => 'array|nullable',
+ 'ruleset.competitive' => 'boolean',
+ 'ruleset.mg' => 'boolean',
+ 'ruleset.nl' => 'boolean',
+ 'ruleset.owg' => 'boolean',
'type' => 'string|nullable',
]);
@@ -29,6 +34,32 @@ class TechniqueController extends Controller
});
}
+ if (isset($validatedData['ruleset'])) {
+ $com = isset($validatedData['ruleset']['competitive']) && $validatedData['ruleset']['competitive'];
+ $owg = isset($validatedData['ruleset']['owg']) && $validatedData['ruleset']['owg'];
+ $mg = isset($validatedData['ruleset']['mg']) && $validatedData['ruleset']['mg'];
+ $nl = isset($validatedData['ruleset']['nl']) && $validatedData['ruleset']['nl'];
+ $any = $com || $owg || $mg || $nl;
+ $all = $com && $owg && $mg && $nl;
+ if ($any && !$all) {
+ $techs->where(function(Builder $query) use ($com, $owg, $mg, $nl) {
+ $query->whereNull('rulesets');
+ if ($com) {
+ $query->orWhere('rulesets->competitive', '=', true);
+ }
+ if ($owg) {
+ $query->orWhere('rulesets->owg', '=', true);
+ }
+ if ($mg) {
+ $query->orWhere('rulesets->mg', '=', true);
+ }
+ if ($nl) {
+ $query->orWhere('rulesets->nl', '=', true);
+ }
+ });
+ }
+ }
+
return $techs->get()->toJson();
}
diff --git a/resources/js/components/pages/Techniques.js b/resources/js/components/pages/Techniques.js
index 4bc0066..ddecf56 100644
--- a/resources/js/components/pages/Techniques.js
+++ b/resources/js/components/pages/Techniques.js
@@ -13,17 +13,35 @@ import i18n from '../../i18n';
const Techniques = ({ namespace, type }) => {
const [error, setError] = React.useState(null);
+ const [filter, setFilter] = React.useState({});
const [loading, setLoading] = React.useState(true);
const [techniques, setTechniques] = React.useState([]);
+ React.useEffect(() => {
+ const savedFilter = localStorage.getItem(`content.filter.${type}`);
+ if (savedFilter) {
+ setFilter(JSON.parse(savedFilter));
+ } else {
+ setFilter(filter => filter ? {} : filter);
+ }
+ }, [type]);
+
+ const updateFilter = React.useCallback(newFilter => {
+ localStorage.setItem(`content.filter.${type}`, JSON.stringify(newFilter));
+ setFilter(newFilter);
+ }, [type]);
+
React.useEffect(() => {
const ctrl = new AbortController();
- setLoading(true);
+ if (!techniques.length) {
+ setLoading(true);
+ }
window.document.title = i18n.t(`${namespace}.heading`);
axios
.get(`/api/content`, {
params: {
type,
+ ...filter,
},
signal: ctrl.signal
})
@@ -33,14 +51,16 @@ const Techniques = ({ namespace, type }) => {
setTechniques(response.data.sort(compareTranslation('title', i18n.language)));
})
.catch(error => {
- setError(error);
- setLoading(false);
- setTechniques([]);
+ if (!axios.isCancel(error)) {
+ setError(error);
+ setLoading(false);
+ setTechniques([]);
+ }
});
return () => {
ctrl.abort();
};
- }, [namespace, type]);
+ }, [filter, namespace, type]);
React.useEffect(() => {
window.document.title = i18n.t(`${namespace}.heading`);
@@ -60,7 +80,13 @@ const Techniques = ({ namespace, type }) => {
}
return
-
+
;
};
diff --git a/resources/js/components/techniques/Overview.js b/resources/js/components/techniques/Overview.js
index 1686865..f82a877 100644
--- a/resources/js/components/techniques/Overview.js
+++ b/resources/js/components/techniques/Overview.js
@@ -4,20 +4,32 @@ import { Container } from 'react-bootstrap';
import { withTranslation } from 'react-i18next';
import List from './List';
+import TechFilter from './TechFilter';
import i18n from '../../i18n';
const Overview = ({
+ filter,
namespace,
+ setFilter,
techniques,
+ type,
}) =>
- {i18n.t(`${namespace}.heading`)}
+
+
{i18n.t(`${namespace}.heading`)}
+ {type === 'tech' ?
+
+ : null}
+
;
Overview.propTypes = {
+ filter: PropTypes.shape({}),
namespace: PropTypes.string,
+ setFilter: PropTypes.func,
techniques: PropTypes.arrayOf(PropTypes.shape({
})),
+ type: PropTypes.string,
};
export default withTranslation()(Overview);
diff --git a/resources/js/components/techniques/TechFilter.js b/resources/js/components/techniques/TechFilter.js
new file mode 100644
index 0000000..008288a
--- /dev/null
+++ b/resources/js/components/techniques/TechFilter.js
@@ -0,0 +1,49 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+import { Form } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+
+const TechFilter = ({ filter, setFilter }) => {
+ const { t } = useTranslation();
+
+ const handleChange = React.useCallback(e => {
+ if (e.target.name.startsWith('ruleset.')) {
+ const r = e.target.name.substring(8);
+ setFilter({
+ ...filter,
+ ruleset: {
+ ...filter.ruleset || {},
+ [r]: e.target.checked ? '1' : '0',
+ },
+ });
+ }
+ }, [filter]);
+
+ return
+
{t('techniques.rulesetFilterHeading')}
+
+ {['competitive', 'owg', 'mg', 'nl'].map(r =>
+
+ )}
+
+
;
+};
+
+TechFilter.propTypes = {
+ filter: PropTypes.shape({
+ ruleset: PropTypes.shape({
+ }),
+ }),
+ setFilter: PropTypes.func,
+};
+
+export default TechFilter;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index 1334fde..0812fd4 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -501,6 +501,7 @@ export default {
nl: 'No Logic',
owg: 'Overworld Glitches',
},
+ rulesetFilterHeading: 'Zeige nur Techniken, die in folgenden Regelsätzen erlaubt sind:',
seeAlso: 'Siehe auch',
},
tournaments: {
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index d4e61bb..030b023 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -501,6 +501,7 @@ export default {
nl: 'No Logic',
owg: 'Overworld Glitches',
},
+ rulesetFilterHeading: 'Only show techniques allowed in the following rulesets:',
seeAlso: 'See also',
},
tournaments: {
diff --git a/resources/sass/techniques.scss b/resources/sass/techniques.scss
index a28c438..8355e70 100644
--- a/resources/sass/techniques.scss
+++ b/resources/sass/techniques.scss
@@ -4,6 +4,18 @@
gap: 0 1ex;
padding: 0.5ex;
border-radius: 0.5ex;
+
+ .form-check label {
+ margin-top: 0;
+ }
+}
+
+.tech-filter {
+ max-width: 18em;
+ text-align: right;
+ .form-check {
+ text-align: left;
+ }
}
.tech-list {
--
2.39.2
From a94dda65a823a1f191ffbc3981448adfae270fcc Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sat, 14 Jan 2023 00:54:37 +0100
Subject: [PATCH 05/16] translate tech title
---
resources/js/components/pages/Technique.js | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/resources/js/components/pages/Technique.js b/resources/js/components/pages/Technique.js
index 19b56b7..8c202ed 100644
--- a/resources/js/components/pages/Technique.js
+++ b/resources/js/components/pages/Technique.js
@@ -1,5 +1,6 @@
import axios from 'axios';
import React, { useEffect, useState } from 'react';
+import { withTranslation } from 'react-i18next';
import { useParams } from 'react-router-dom';
import ErrorBoundary from '../common/ErrorBoundary';
@@ -7,6 +8,8 @@ import ErrorMessage from '../common/ErrorMessage';
import Loading from '../common/Loading';
import NotFound from '../pages/NotFound';
import Detail from '../techniques/Detail';
+import { getTranslation } from '../../helpers/Technique';
+import i18n from '../../i18n';
const Technique = () => {
const params = useParams();
@@ -25,7 +28,6 @@ const Technique = () => {
setError(null);
setLoading(false);
setTechnique(response.data);
- window.document.title = response.data.title;
})
.catch(error => {
setError(error);
@@ -37,6 +39,12 @@ const Technique = () => {
};
}, [name]);
+ useEffect(() => {
+ if (technique) {
+ window.document.title = getTranslation(technique, 'title', i18n.language);
+ }
+ }, [technique, i18n.language]);
+
if (loading) {
return ;
}
@@ -54,4 +62,4 @@ const Technique = () => {
;
};
-export default Technique;
+export default withTranslation()(Technique);
--
2.39.2
From 18759929710746d45d0f69e4f09205db3ddc74af Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Wed, 18 Jan 2023 12:00:24 +0100
Subject: [PATCH 06/16] snes button icons
---
public/icon/dpad-d.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-dl.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-dr.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-l.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-r.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-u.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-ul.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad-ur.svg | 179 +++++++++++++++++++++++++++++++++++++
public/icon/dpad.svg | 179 +++++++++++++++++++++++++++++++++++++
resources/sass/common.scss | 119 ++++++++++++++++++++++++
10 files changed, 1730 insertions(+)
create mode 100644 public/icon/dpad-d.svg
create mode 100644 public/icon/dpad-dl.svg
create mode 100644 public/icon/dpad-dr.svg
create mode 100644 public/icon/dpad-l.svg
create mode 100644 public/icon/dpad-r.svg
create mode 100644 public/icon/dpad-u.svg
create mode 100644 public/icon/dpad-ul.svg
create mode 100644 public/icon/dpad-ur.svg
create mode 100644 public/icon/dpad.svg
diff --git a/public/icon/dpad-d.svg b/public/icon/dpad-d.svg
new file mode 100644
index 0000000..5643bd2
--- /dev/null
+++ b/public/icon/dpad-d.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-dl.svg b/public/icon/dpad-dl.svg
new file mode 100644
index 0000000..79aefea
--- /dev/null
+++ b/public/icon/dpad-dl.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-dr.svg b/public/icon/dpad-dr.svg
new file mode 100644
index 0000000..df5bbb8
--- /dev/null
+++ b/public/icon/dpad-dr.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-l.svg b/public/icon/dpad-l.svg
new file mode 100644
index 0000000..6da61e2
--- /dev/null
+++ b/public/icon/dpad-l.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-r.svg b/public/icon/dpad-r.svg
new file mode 100644
index 0000000..af6ba8c
--- /dev/null
+++ b/public/icon/dpad-r.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-u.svg b/public/icon/dpad-u.svg
new file mode 100644
index 0000000..92430f8
--- /dev/null
+++ b/public/icon/dpad-u.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-ul.svg b/public/icon/dpad-ul.svg
new file mode 100644
index 0000000..c1bab1b
--- /dev/null
+++ b/public/icon/dpad-ul.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad-ur.svg b/public/icon/dpad-ur.svg
new file mode 100644
index 0000000..4d4387d
--- /dev/null
+++ b/public/icon/dpad-ur.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/public/icon/dpad.svg b/public/icon/dpad.svg
new file mode 100644
index 0000000..f013f75
--- /dev/null
+++ b/public/icon/dpad.svg
@@ -0,0 +1,179 @@
+
+
+
+
diff --git a/resources/sass/common.scss b/resources/sass/common.scss
index c8528e1..83e5b90 100644
--- a/resources/sass/common.scss
+++ b/resources/sass/common.scss
@@ -41,6 +41,125 @@ h1 {
}
}
+.snes-button-a,
+.snes-button-b,
+.snes-button-x,
+.snes-button-y {
+ display: inline-block;
+ width: 1.5em;
+ height: 0;
+ padding: .75em 0;
+ box-shadow: .125ex .125ex .125ex rgba(0, 0, 0, .5);
+ border-radius: .75em;
+ font-size: 90%;
+ font-weight: bold;
+ text-align: center;
+ text-transform: uppercase;
+ line-height: 0;
+}
+.snes-button-a {
+ background: #c1121c;
+ color: white;
+}
+.snes-button-b {
+ background: #f7ba0b;
+ color: black;
+}
+.snes-button-x {
+ background: #00387b;
+ color: white;
+}
+.snes-button-y {
+ background: #007243;
+ color: white;
+}
+.snes-shoulder-l,
+.snes-shoulder-r {
+ display: inline-block;
+ width: 3em;
+ height: 0;
+ padding: .75em 0;
+ box-shadow: .125ex .125ex .125ex rgba(0, 0, 0, .5);
+ border-radius: .75em;
+ font-size: 90%;
+ font-weight: bold;
+ text-align: center;
+ text-transform: uppercase;
+ line-height: 0;
+ background: #b2b4b2;
+ color: #54585a;
+}
+.snes-start,
+.snes-select {
+ display: inline-flex;
+ flex-direction: column;
+ align-items: center;
+ vertical-align: middle;
+ font-size: 50%;
+ text-transform: uppercase;
+
+ &::before {
+ display: inline-block;
+ content: '';
+ background: #54585a;
+ width: 2em;
+ height: 0.7em;
+ border-radius: 0.35em;
+ transform: rotate(-40deg);
+ margin-bottom: 0.75em;
+ border: thin solid black;
+ }
+}
+.snes-dpad,
+.snes-dpad-r,
+.snes-dpad-dr,
+.snes-dpad-d,
+.snes-dpad-dl,
+.snes-dpad-l,
+.snes-dpad-ul,
+.snes-dpad-u,
+.snes-dpad-ur {
+ display: inline-block;
+
+ &::before {
+ display: inline-block;
+ content: '';
+ width: 2em;
+ height: 2em;
+ margin-right: 0.5ex;
+ vertical-align: middle;
+ background-repeat: no-repeat;
+ background-size: contain;
+ }
+
+ &.compact {
+ position: relative;
+ > span {
+ display: none;
+ position: absolute;
+ left: -50%;
+ top: -125%;
+ background: $dark;
+ padding: 0.5ex 1ex;
+ white-space: nowrap;
+ }
+ &:active > span,
+ &:focus > span,
+ &:hover > span {
+ display: block;
+ }
+ }
+}
+.snes-dpad::before { background-image: url(/icon/dpad.svg); }
+.snes-dpad-r::before { background-image: url(/icon/dpad-r.svg); }
+.snes-dpad-dr::before { background-image: url(/icon/dpad-dr.svg); }
+.snes-dpad-d::before { background-image: url(/icon/dpad-d.svg); }
+.snes-dpad-dl::before { background-image: url(/icon/dpad-dl.svg); }
+.snes-dpad-l::before { background-image: url(/icon/dpad-l.svg); }
+.snes-dpad-ul::before { background-image: url(/icon/dpad-ul.svg); }
+.snes-dpad-u::before { background-image: url(/icon/dpad-u.svg); }
+.snes-dpad-ur::before { background-image: url(/icon/dpad-ur.svg); }
+
.spoiler {
border-radius: 0.5ex;
padding: 0 0.5ex;
--
2.39.2
From 18424fc6de2fc902ee2b2d3143955081263adff4 Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Wed, 1 Feb 2023 15:48:26 +0100
Subject: [PATCH 07/16] add plain maps
---
package-lock.json | 14 +++
package.json | 1 +
resources/js/components/App.js | 2 +
resources/js/components/map/Buttons.js | 47 ++++++++
resources/js/components/map/OpenSeadragon.js | 79 ++++++++++++++
resources/js/components/map/Viewer.js | 109 +++++++++++++++++++
resources/js/components/pages/Map.js | 23 ++++
resources/js/i18n/de.js | 11 ++
resources/js/i18n/en.js | 11 ++
webpack.mix.js | 1 +
10 files changed, 298 insertions(+)
create mode 100644 resources/js/components/map/Buttons.js
create mode 100644 resources/js/components/map/OpenSeadragon.js
create mode 100644 resources/js/components/map/Viewer.js
create mode 100644 resources/js/components/pages/Map.js
diff --git a/package-lock.json b/package-lock.json
index f5f22c9..6bc7914 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,6 +19,7 @@
"localforage": "^1.10.0",
"moment": "^2.29.1",
"numeral": "^2.0.6",
+ "openseadragon": "^4.0.0",
"pusher-js": "^7.0.6",
"qs": "^6.10.3",
"react-bootstrap": "^2.2.0",
@@ -8280,6 +8281,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/openseadragon": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-4.0.0.tgz",
+ "integrity": "sha512-HsjSgqiiPwLkW5576GxDJ7Rax96iLUET8fnTsJvu7uYYkd+qzen3bflxHyph0OVVgZBKP9SpGH1nPdU4Mz0Z2A==",
+ "funding": {
+ "url": "https://opencollective.com/openseadragon"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@@ -18393,6 +18402,11 @@
"is-wsl": "^2.2.0"
}
},
+ "openseadragon": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-4.0.0.tgz",
+ "integrity": "sha512-HsjSgqiiPwLkW5576GxDJ7Rax96iLUET8fnTsJvu7uYYkd+qzen3bflxHyph0OVVgZBKP9SpGH1nPdU4Mz0Z2A=="
+ },
"optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
diff --git a/package.json b/package.json
index 144f3dd..4f7a3a6 100644
--- a/package.json
+++ b/package.json
@@ -85,6 +85,7 @@
"localforage": "^1.10.0",
"moment": "^2.29.1",
"numeral": "^2.0.6",
+ "openseadragon": "^4.0.0",
"pusher-js": "^7.0.6",
"qs": "^6.10.3",
"react-bootstrap": "^2.2.0",
diff --git a/resources/js/components/App.js b/resources/js/components/App.js
index fe8ff25..d84474c 100644
--- a/resources/js/components/App.js
+++ b/resources/js/components/App.js
@@ -6,6 +6,7 @@ import Footer from './common/Footer';
import Header from './common/Header';
import AlttpSeed from './pages/AlttpSeed';
import Front from './pages/Front';
+import Map from './pages/Map';
import Technique from './pages/Technique';
import Techniques from './pages/Techniques';
import Tournament from './pages/Tournament';
@@ -59,6 +60,7 @@ const App = () => {
} />
+ } />
}
diff --git a/resources/js/components/map/Buttons.js b/resources/js/components/map/Buttons.js
new file mode 100644
index 0000000..b43fc0e
--- /dev/null
+++ b/resources/js/components/map/Buttons.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import { Button } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+
+import { useOpenSeadragon } from './OpenSeadragon';
+
+const Buttons = () => {
+ const { viewer } = useOpenSeadragon();
+ const { t } = useTranslation();
+
+ const goToPage = React.useCallback((p) => {
+ if (viewer) viewer.goToPage(p);
+ }, [viewer]);
+
+ return
+
+
+
+
+
;
+};
+
+export default Buttons;
diff --git a/resources/js/components/map/OpenSeadragon.js b/resources/js/components/map/OpenSeadragon.js
new file mode 100644
index 0000000..f854318
--- /dev/null
+++ b/resources/js/components/map/OpenSeadragon.js
@@ -0,0 +1,79 @@
+import OpenSeadragon from 'openseadragon';
+import PropTypes from 'prop-types';
+import React from 'react';
+
+export const Context = React.createContext({});
+
+export const useOpenSeadragon = () => React.useContext(Context);
+
+export const Provider = React.forwardRef(({ children }, ref) => {
+ const [viewer, setViewer] = React.useState(null);
+
+ React.useEffect(() => {
+ if (!ref.current) return;
+
+ const v = OpenSeadragon({
+ element: ref.current,
+ preserveViewport: true,
+ sequenceMode: true,
+ showNavigator: true,
+ showNavigationControl: false,
+ showSequenceControl: false,
+ tileSources: [
+ new OpenSeadragon.DziTileSource({
+ width: 8192,
+ height: 8192,
+ tileSize: 256,
+ tileOverlap: 0,
+ minLevel: 8,
+ maxLevel: 13,
+ tilesUrl: '/media/alttp/map/lw_files/',
+ fileFormat: 'png',
+ }), new OpenSeadragon.DziTileSource({
+ width: 8192,
+ height: 8192,
+ tileSize: 256,
+ tileOverlap: 0,
+ minLevel: 8,
+ maxLevel: 13,
+ tilesUrl: '/media/alttp/map/dw_files/',
+ fileFormat: 'png',
+ }), new OpenSeadragon.DziTileSource({
+ width: 8192,
+ height: 4096,
+ tileSize: 256,
+ tileOverlap: 0,
+ minLevel: 8,
+ maxLevel: 13,
+ tilesUrl: '/media/alttp/map/sp_files/',
+ fileFormat: 'png',
+ }), new OpenSeadragon.DziTileSource({
+ width: 16384,
+ height: 16384,
+ tileSize: 256,
+ tileOverlap: 0,
+ minLevel: 8,
+ maxLevel: 14,
+ tilesUrl: '/media/alttp/map/uw_files/',
+ fileFormat: 'png',
+ }),
+ ],
+ });
+ setViewer(v);
+ return () => {
+ v.destroy();
+ };
+ }, [ref.current]);
+
+ return
+ {children}
+ ;
+});
+
+Provider.displayName = 'OpenSeadragonProvider';
+
+Provider.propTypes = {
+ children: PropTypes.node,
+};
+
+export default Provider;
diff --git a/resources/js/components/map/Viewer.js b/resources/js/components/map/Viewer.js
new file mode 100644
index 0000000..473c179
--- /dev/null
+++ b/resources/js/components/map/Viewer.js
@@ -0,0 +1,109 @@
+import OpenSeadragon from 'openseadragon';
+import React from 'react';
+import { Button } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+
+const Viewer = () => {
+ const [viewer, setViewer] = React.useState(null);
+
+ const container = React.useRef();
+ const { t } = useTranslation();
+
+ React.useEffect(() => {
+ if (!container.current) return;
+
+ const v = OpenSeadragon({
+ element: container.current,
+ preserveViewport: true,
+ sequenceMode: true,
+ showNavigator: true,
+ showNavigationControl: false,
+ showSequenceControl: false,
+ //tileSources: [
+ // new OpenSeadragon.DziTileSource({
+ // width: 8192,
+ // height: 8192,
+ // tileSize: 256,
+ // tileOverlap: 0,
+ // minLevel: 8,
+ // maxLevel: 13,
+ // tilesUrl: '/media/alttp/map/lw_files/',
+ // fileFormat: 'png',
+ // }), new OpenSeadragon.DziTileSource({
+ // width: 8192,
+ // height: 8192,
+ // tileSize: 256,
+ // tileOverlap: 0,
+ // minLevel: 8,
+ // maxLevel: 13,
+ // tilesUrl: '/media/alttp/map/dw_files/',
+ // fileFormat: 'png',
+ // }), new OpenSeadragon.DziTileSource({
+ // width: 8192,
+ // height: 8192,
+ // tileSize: 256,
+ // tileOverlap: 0,
+ // minLevel: 8,
+ // maxLevel: 13,
+ // tilesUrl: '/media/alttp/map/sp_files/',
+ // fileFormat: 'png',
+ // }), new OpenSeadragon.DziTileSource({
+ // width: 16384,
+ // height: 16384,
+ // tileSize: 256,
+ // tileOverlap: 0,
+ // minLevel: 8,
+ // maxLevel: 14,
+ // tilesUrl: '/media/alttp/map/uw_files/',
+ // fileFormat: 'png',
+ // }),
+ //],
+ });
+ setViewer(v);
+ return () => {
+ v.destroy();
+ };
+ }, [container.current]);
+
+ const goToPage = React.useCallback((p) => {
+ if (viewer) viewer.goToPage(p);
+ }, [viewer]);
+
+ return <>
+
+
+
+
+
+
+
+
+
+ >;
+};
+
+export default Viewer;
diff --git a/resources/js/components/pages/Map.js b/resources/js/components/pages/Map.js
new file mode 100644
index 0000000..50a28fb
--- /dev/null
+++ b/resources/js/components/pages/Map.js
@@ -0,0 +1,23 @@
+import React from 'react';
+import { Container } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+
+import Buttons from '../map/Buttons';
+import OpenSeadragon from '../map/OpenSeadragon';
+
+const Map = () => {
+ const container = React.useRef();
+ const { t } = useTranslation();
+
+ return
+
+
+
{t('map.heading')}
+
+
+
+
+ ;
+};
+
+export default Map;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index 0812fd4..f4b73e5 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -374,6 +374,17 @@ export default {
somaria: 'Cane of Somaria',
},
},
+ map: {
+ dwLong: 'Dark World',
+ dwShort: 'DW',
+ heading: 'Karte',
+ lwLong: 'Light World',
+ lwShort: 'LW',
+ spLong: 'Spezielle Gebiete',
+ spShort: 'SP',
+ uwLong: 'Underworld',
+ uwShort: 'UW',
+ },
modes: {
heading: 'Modi',
},
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index 030b023..6498b85 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -374,6 +374,17 @@ export default {
somaria: 'Cane of Somaria',
},
},
+ map: {
+ dwLong: 'Dark World',
+ dwShort: 'DW',
+ heading: 'Map',
+ lwLong: 'Light World',
+ lwShort: 'LW',
+ spLong: 'Special Areas',
+ spShort: 'SP',
+ uwLong: 'Underworld',
+ uwShort: 'UW',
+ },
modes: {
heading: 'Modes',
},
diff --git a/webpack.mix.js b/webpack.mix.js
index 0e8f447..714cba7 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -67,6 +67,7 @@ mix.js('resources/js/app.js', 'public/js')
'nanoclone',
'object-assign',
'object-inspect',
+ 'openseadragon',
'performance-now',
'process',
'prop-types',
--
2.39.2
From df04cf968fa80a7dcda923ce91242ba52b5ce038 Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sat, 4 Feb 2023 14:11:56 +0100
Subject: [PATCH 08/16] composer update
---
composer.lock | 2172 ++++++++++++++++++++++++-------------------------
1 file changed, 1049 insertions(+), 1123 deletions(-)
diff --git a/composer.lock b/composer.lock
index 2a90da2..660ab1d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -8,16 +8,16 @@
"packages": [
{
"name": "beyondcode/laravel-websockets",
- "version": "1.13.1",
+ "version": "1.13.2",
"source": {
"type": "git",
"url": "https://github.com/beyondcode/laravel-websockets.git",
- "reference": "f0649b65fb5562d20eff66f61716ef98717e228a"
+ "reference": "50f8a1e77227a2d2302d45b99185d68a1c1c6866"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/beyondcode/laravel-websockets/zipball/f0649b65fb5562d20eff66f61716ef98717e228a",
- "reference": "f0649b65fb5562d20eff66f61716ef98717e228a",
+ "url": "https://api.github.com/repos/beyondcode/laravel-websockets/zipball/50f8a1e77227a2d2302d45b99185d68a1c1c6866",
+ "reference": "50f8a1e77227a2d2302d45b99185d68a1c1c6866",
"shasum": ""
},
"require": {
@@ -84,32 +84,31 @@
],
"support": {
"issues": "https://github.com/beyondcode/laravel-websockets/issues",
- "source": "https://github.com/beyondcode/laravel-websockets/tree/1.13.1"
+ "source": "https://github.com/beyondcode/laravel-websockets/tree/1.13.2"
},
- "time": "2022-03-03T08:41:47+00:00"
+ "time": "2022-10-19T18:15:42+00:00"
},
{
"name": "brick/math",
- "version": "0.9.3",
+ "version": "0.11.0",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae"
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae",
- "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae",
+ "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "php": "^7.1 || ^8.0"
+ "php": "^8.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
- "vimeo/psalm": "4.9.2"
+ "phpunit/phpunit": "^9.0",
+ "vimeo/psalm": "5.0.0"
},
"type": "library",
"autoload": {
@@ -134,19 +133,15 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.9.3"
+ "source": "https://github.com/brick/math/tree/0.11.0"
},
"funding": [
{
"url": "https://github.com/BenMorel",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/brick/math",
- "type": "tidelift"
}
],
- "time": "2021-08-15T20:50:18+00:00"
+ "time": "2023-01-15T23:15:59+00:00"
},
{
"name": "cboden/ratchet",
@@ -213,16 +208,16 @@
},
{
"name": "dflydev/dot-access-data",
- "version": "v3.0.1",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/dflydev/dflydev-dot-access-data.git",
- "reference": "0992cc19268b259a39e86f296da5f0677841f42c"
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c",
- "reference": "0992cc19268b259a39e86f296da5f0677841f42c",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549",
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549",
"shasum": ""
},
"require": {
@@ -233,7 +228,7 @@
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
"scrutinizer/ocular": "1.6.0",
"squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^3.14"
+ "vimeo/psalm": "^4.0.0"
},
"type": "library",
"extra": {
@@ -282,22 +277,22 @@
],
"support": {
"issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
- "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1"
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2"
},
- "time": "2021-08-13T13:06:58+00:00"
+ "time": "2022-10-27T11:44:00+00:00"
},
{
"name": "discord-php/http",
- "version": "v9.0.10",
+ "version": "v9.1.8",
"source": {
"type": "git",
"url": "https://github.com/discord-php/DiscordPHP-Http.git",
- "reference": "5d58a017152295c5769adad7510ec6d88bf2f60f"
+ "reference": "8dc95a63836f7f0161fc5e52e1d9feeaa36b36ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/discord-php/DiscordPHP-Http/zipball/5d58a017152295c5769adad7510ec6d88bf2f60f",
- "reference": "5d58a017152295c5769adad7510ec6d88bf2f60f",
+ "url": "https://api.github.com/repos/discord-php/DiscordPHP-Http/zipball/8dc95a63836f7f0161fc5e52e1d9feeaa36b36ba",
+ "reference": "8dc95a63836f7f0161fc5e52e1d9feeaa36b36ba",
"shasum": ""
},
"require": {
@@ -307,9 +302,13 @@
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.17",
+ "guzzlehttp/guzzle": "^6.0|^7.0",
"monolog/monolog": "^2.2",
"psy/psysh": "^0.10.6"
},
+ "suggest": {
+ "guzzlehttp/guzzle": "For alternative to ReactPHP/Http Browser"
+ },
"type": "library",
"autoload": {
"psr-4": {
@@ -329,9 +328,9 @@
"description": "Handles HTTP requests to Discord servers",
"support": {
"issues": "https://github.com/discord-php/DiscordPHP-Http/issues",
- "source": "https://github.com/discord-php/DiscordPHP-Http/tree/v9.0.10"
+ "source": "https://github.com/discord-php/DiscordPHP-Http/tree/v9.1.8"
},
- "time": "2022-02-16T15:10:31+00:00"
+ "time": "2022-12-13T12:11:12+00:00"
},
{
"name": "discord/interactions",
@@ -384,16 +383,16 @@
},
{
"name": "doctrine/cache",
- "version": "2.1.1",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce"
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce",
- "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
"shasum": ""
},
"require": {
@@ -403,18 +402,12 @@
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
"cache/integration-tests": "dev-master",
- "doctrine/coding-standard": "^8.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "predis/predis": "~1.0",
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/cache": "^1.0 || ^2.0 || ^3.0",
- "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
- "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
+ "symfony/cache": "^4.4 || ^5.4 || ^6",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
},
"type": "library",
"autoload": {
@@ -463,7 +456,7 @@
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/2.1.1"
+ "source": "https://github.com/doctrine/cache/tree/2.2.0"
},
"funding": [
{
@@ -479,42 +472,42 @@
"type": "tidelift"
}
],
- "time": "2021-07-17T14:49:29+00:00"
+ "time": "2022-05-20T20:07:39+00:00"
},
{
"name": "doctrine/dbal",
- "version": "3.3.6",
+ "version": "3.5.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21"
+ "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/9e7f76dd1cde81c62574fdffa5a9c655c847ad21",
- "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
+ "reference": "88fa7e5189fd5ec6682477044264dc0ed4e3aa1e",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3|^1",
- "doctrine/event-manager": "^1.0",
- "php": "^7.3 || ^8.0",
+ "doctrine/event-manager": "^1|^2",
+ "php": "^7.4 || ^8.0",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
- "doctrine/coding-standard": "9.0.0",
- "jetbrains/phpstorm-stubs": "2022.1",
- "phpstan/phpstan": "1.6.3",
- "phpstan/phpstan-strict-rules": "^1.2",
- "phpunit/phpunit": "9.5.20",
- "psalm/plugin-phpunit": "0.16.1",
- "squizlabs/php_codesniffer": "3.6.2",
- "symfony/cache": "^5.2|^6.0",
- "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0",
- "vimeo/psalm": "4.23.0"
+ "doctrine/coding-standard": "11.0.0",
+ "jetbrains/phpstorm-stubs": "2022.3",
+ "phpstan/phpstan": "1.9.4",
+ "phpstan/phpstan-strict-rules": "^1.4",
+ "phpunit/phpunit": "9.5.27",
+ "psalm/plugin-phpunit": "0.18.4",
+ "squizlabs/php_codesniffer": "3.7.1",
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/console": "^4.4|^5.4|^6.0",
+ "vimeo/psalm": "4.30.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -574,7 +567,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.3.6"
+ "source": "https://github.com/doctrine/dbal/tree/3.5.3"
},
"funding": [
{
@@ -590,7 +583,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-02T17:21:01+00:00"
+ "time": "2023-01-12T10:21:44+00:00"
},
{
"name": "doctrine/deprecations",
@@ -637,37 +630,34 @@
},
{
"name": "doctrine/event-manager",
- "version": "1.1.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
+ "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
- "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32",
+ "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"conflict": {
- "doctrine/common": "<2.9@dev"
+ "doctrine/common": "<2.9"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpunit/phpunit": "^7.0"
+ "doctrine/coding-standard": "^10",
+ "phpstan/phpstan": "^1.8.8",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^4.28"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -711,7 +701,7 @@
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/1.1.x"
+ "source": "https://github.com/doctrine/event-manager/tree/2.0.0"
},
"funding": [
{
@@ -727,32 +717,32 @@
"type": "tidelift"
}
],
- "time": "2020-05-29T18:28:51+00:00"
+ "time": "2022-10-12T20:59:15+00:00"
},
{
"name": "doctrine/inflector",
- "version": "2.0.4",
+ "version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
- "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "vimeo/psalm": "^4.10"
+ "doctrine/coding-standard": "^10",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25"
},
"type": "library",
"autoload": {
@@ -802,7 +792,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.4"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.6"
},
"funding": [
{
@@ -818,35 +808,36 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:16:43+00:00"
+ "time": "2022-10-20T09:10:12+00:00"
},
{
"name": "doctrine/lexer",
- "version": "1.2.3",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229"
+ "reference": "84a527db05647743d50373e0ec53a152f2cde568"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229",
- "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568",
+ "reference": "84a527db05647743d50373e0ec53a152f2cde568",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^9.0",
- "phpstan/phpstan": "^1.3",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.11"
+ "doctrine/coding-standard": "^10",
+ "phpstan/phpstan": "^1.9",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-phpunit": "^0.18.3",
+ "vimeo/psalm": "^5.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ "Doctrine\\Common\\Lexer\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -878,7 +869,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/1.2.3"
+ "source": "https://github.com/doctrine/lexer/tree/3.0.0"
},
"funding": [
{
@@ -894,20 +885,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-28T11:07:21+00:00"
+ "time": "2022-12-15T16:57:16+00:00"
},
{
"name": "dragonmantank/cron-expression",
- "version": "v3.3.1",
+ "version": "v3.3.2",
"source": {
"type": "git",
"url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa"
+ "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa",
- "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa",
+ "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8",
+ "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8",
"shasum": ""
},
"require": {
@@ -947,7 +938,7 @@
],
"support": {
"issues": "https://github.com/dragonmantank/cron-expression/issues",
- "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1"
+ "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2"
},
"funding": [
{
@@ -955,31 +946,30 @@
"type": "github"
}
],
- "time": "2022-01-18T15:43:28+00:00"
+ "time": "2022-09-10T18:51:20+00:00"
},
{
"name": "egulias/email-validator",
- "version": "3.1.2",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "ee0db30118f661fb166bcffbf5d82032df484697"
+ "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697",
- "reference": "ee0db30118f661fb166bcffbf5d82032df484697",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff",
+ "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff",
"shasum": ""
},
"require": {
- "doctrine/lexer": "^1.2",
- "php": ">=7.2",
- "symfony/polyfill-intl-idn": "^1.15"
+ "doctrine/lexer": "^2.0 || ^3.0",
+ "php": ">=8.1",
+ "symfony/polyfill-intl-idn": "^1.26"
},
"require-dev": {
- "php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^8.5.8|^9.3.3",
- "vimeo/psalm": "^4"
+ "phpunit/phpunit": "^9.5.27",
+ "vimeo/psalm": "^4.30"
},
"suggest": {
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
@@ -987,7 +977,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0.x-dev"
+ "dev-master": "4.0.x-dev"
}
},
"autoload": {
@@ -1015,7 +1005,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
- "source": "https://github.com/egulias/EmailValidator/tree/3.1.2"
+ "source": "https://github.com/egulias/EmailValidator/tree/4.0.1"
},
"funding": [
{
@@ -1023,7 +1013,7 @@
"type": "github"
}
],
- "time": "2021-10-11T09:18:27+00:00"
+ "time": "2023-01-14T14:17:03+00:00"
},
{
"name": "evenement/evenement",
@@ -1254,24 +1244,24 @@
},
{
"name": "graham-campbell/result-type",
- "version": "v1.0.4",
+ "version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "0690bde05318336c7221785f2a932467f98b64ca"
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca",
- "reference": "0690bde05318336c7221785f2a932467f98b64ca",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8",
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0",
- "phpoption/phpoption": "^1.8"
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9"
},
"require-dev": {
- "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
},
"type": "library",
"autoload": {
@@ -1300,7 +1290,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4"
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0"
},
"funding": [
{
@@ -1312,26 +1302,26 @@
"type": "tidelift"
}
],
- "time": "2021-11-21T21:41:47+00:00"
+ "time": "2022-07-30T15:56:11+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.4.2",
+ "version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4"
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ac1ec1cd9b5624694c3a40be801d94137afb12b4",
- "reference": "ac1ec1cd9b5624694c3a40be801d94137afb12b4",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.5",
- "guzzlehttp/psr7": "^1.8.3 || ^2.1",
+ "guzzlehttp/psr7": "^1.9 || ^2.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
@@ -1340,10 +1330,10 @@
"psr/http-client-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
"php-http/client-integration-tests": "^3.0",
- "phpunit/phpunit": "^8.5.5 || ^9.3.5",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23",
"psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
@@ -1353,8 +1343,12 @@
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
- "dev-master": "7.4-dev"
+ "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -1420,7 +1414,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.4.2"
+ "source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -1436,20 +1430,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-20T14:16:28+00:00"
+ "time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "1.5.1",
+ "version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
- "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
+ "reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -1504,7 +1498,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.1"
+ "source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -1520,20 +1514,20 @@
"type": "tidelift"
}
],
- "time": "2021-10-22T20:56:57+00:00"
+ "time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "2.2.1",
+ "version": "2.4.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2"
+ "reference": "67c26b443f348a51926030c83481b85718457d3d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2",
- "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
+ "reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": ""
},
"require": {
@@ -1547,17 +1541,21 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
+ "bamarni/composer-bin-plugin": "^1.8.1",
"http-interop/http-factory-tests": "^0.9",
- "phpunit/phpunit": "^8.5.8 || ^9.3.10"
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
- "dev-master": "2.2-dev"
+ "dev-master": "2.4-dev"
}
},
"autoload": {
@@ -1619,7 +1617,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.2.1"
+ "source": "https://github.com/guzzle/psr7/tree/2.4.3"
},
"funding": [
{
@@ -1635,20 +1633,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-20T21:55:58+00:00"
+ "time": "2022-10-26T14:07:24+00:00"
},
{
"name": "jakyeru/larascord",
- "version": "v3.0.8",
+ "version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/JakyeRU/Larascord.git",
- "reference": "0d4ec6ee9de9bfc91bade81db220b057dc004c88"
+ "reference": "1ad8ac83e973b4b646ecdc78dcf94930131bada3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/JakyeRU/Larascord/zipball/0d4ec6ee9de9bfc91bade81db220b057dc004c88",
- "reference": "0d4ec6ee9de9bfc91bade81db220b057dc004c88",
+ "url": "https://api.github.com/repos/JakyeRU/Larascord/zipball/1ad8ac83e973b4b646ecdc78dcf94930131bada3",
+ "reference": "1ad8ac83e973b4b646ecdc78dcf94930131bada3",
"shasum": ""
},
"require": {
@@ -1683,29 +1681,33 @@
"description": "Larascord is a package that allows you to authenticate users in your Laravel application using Discord.",
"support": {
"issues": "https://github.com/JakyeRU/Larascord/issues",
- "source": "https://github.com/JakyeRU/Larascord/tree/v3.0.8"
+ "source": "https://github.com/JakyeRU/Larascord/tree/v3.2.0"
},
- "time": "2022-04-09T15:05:01+00:00"
+ "time": "2022-06-26T11:09:59+00:00"
},
{
"name": "laravel/breeze",
- "version": "v1.9.0",
+ "version": "v1.18.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/breeze.git",
- "reference": "0d7633380c81d0827f40f6064d38f8884f5c5441"
+ "reference": "bed2fb2a8a4131be37cc3556826cca961db3406a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/breeze/zipball/0d7633380c81d0827f40f6064d38f8884f5c5441",
- "reference": "0d7633380c81d0827f40f6064d38f8884f5c5441",
+ "url": "https://api.github.com/repos/laravel/breeze/zipball/bed2fb2a8a4131be37cc3556826cca961db3406a",
+ "reference": "bed2fb2a8a4131be37cc3556826cca961db3406a",
"shasum": ""
},
"require": {
- "illuminate/filesystem": "^8.42|^9.0",
- "illuminate/support": "^8.42|^9.0",
- "illuminate/validation": "^8.42|^9.0",
- "php": "^7.3|^8.0"
+ "illuminate/console": "^9.21|^10.0",
+ "illuminate/filesystem": "^9.21|^10.0",
+ "illuminate/support": "^9.21|^10.0",
+ "illuminate/validation": "^9.21|^10.0",
+ "php": "^8.0.2"
+ },
+ "conflict": {
+ "laravel/framework": "<9.37.0"
},
"type": "library",
"extra": {
@@ -1742,40 +1744,42 @@
"issues": "https://github.com/laravel/breeze/issues",
"source": "https://github.com/laravel/breeze"
},
- "time": "2022-03-26T16:06:30+00:00"
+ "time": "2023-01-31T16:16:21+00:00"
},
{
"name": "laravel/framework",
- "version": "v9.11.0",
+ "version": "v9.50.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "598a8c84d452a66b90a3213b1d67189cc726c728"
+ "reference": "2ec7083834563e2bb1003ab50d2b6071f3418e75"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/598a8c84d452a66b90a3213b1d67189cc726c728",
- "reference": "598a8c84d452a66b90a3213b1d67189cc726c728",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/2ec7083834563e2bb1003ab50d2b6071f3418e75",
+ "reference": "2ec7083834563e2bb1003ab50d2b6071f3418e75",
"shasum": ""
},
"require": {
- "doctrine/inflector": "^2.0",
- "dragonmantank/cron-expression": "^3.1",
- "egulias/email-validator": "^3.1",
+ "brick/math": "^0.9.3|^0.10.2|^0.11",
+ "doctrine/inflector": "^2.0.5",
+ "dragonmantank/cron-expression": "^3.3.2",
+ "egulias/email-validator": "^3.2.1|^4.0",
"ext-mbstring": "*",
"ext-openssl": "*",
"fruitcake/php-cors": "^1.2",
- "laravel/serializable-closure": "^1.0",
- "league/commonmark": "^2.2",
- "league/flysystem": "^3.0",
+ "laravel/serializable-closure": "^1.2.2",
+ "league/commonmark": "^2.2.1",
+ "league/flysystem": "^3.8.0",
"monolog/monolog": "^2.0",
- "nesbot/carbon": "^2.53.1",
+ "nesbot/carbon": "^2.62.1",
+ "nunomaduro/termwind": "^1.13",
"php": "^8.0.2",
"psr/container": "^1.1.1|^2.0.1",
"psr/log": "^1.0|^2.0|^3.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
- "ramsey/uuid": "^4.2.2",
- "symfony/console": "^6.0",
+ "ramsey/uuid": "^4.7",
+ "symfony/console": "^6.0.9",
"symfony/error-handler": "^6.0",
"symfony/finder": "^6.0",
"symfony/http-foundation": "^6.0",
@@ -1784,8 +1788,9 @@
"symfony/mime": "^6.0",
"symfony/process": "^6.0",
"symfony/routing": "^6.0",
+ "symfony/uid": "^6.0",
"symfony/var-dumper": "^6.0",
- "tijsverkoyen/css-to-inline-styles": "^2.2.2",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.5",
"vlucas/phpdotenv": "^5.4.1",
"voku/portable-ascii": "^2.0"
},
@@ -1831,27 +1836,31 @@
"illuminate/view": "self.version"
},
"require-dev": {
- "aws/aws-sdk-php": "^3.198.1",
+ "ably/ably-php": "^1.0",
+ "aws/aws-sdk-php": "^3.235.5",
"doctrine/dbal": "^2.13.3|^3.1.4",
- "fakerphp/faker": "^1.9.2",
- "guzzlehttp/guzzle": "^7.2",
+ "fakerphp/faker": "^1.21",
+ "guzzlehttp/guzzle": "^7.5",
"league/flysystem-aws-s3-v3": "^3.0",
"league/flysystem-ftp": "^3.0",
+ "league/flysystem-path-prefixing": "^3.3",
+ "league/flysystem-read-only": "^3.3",
"league/flysystem-sftp-v3": "^3.0",
- "mockery/mockery": "^1.4.4",
- "orchestra/testbench-core": "^7.1",
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench-core": "^7.16",
"pda/pheanstalk": "^4.0",
+ "phpstan/phpdoc-parser": "^1.15",
"phpstan/phpstan": "^1.4.7",
"phpunit/phpunit": "^9.5.8",
- "predis/predis": "^1.1.9",
- "symfony/cache": "^6.0"
+ "predis/predis": "^1.1.9|^2.0.2",
+ "symfony/cache": "^6.0",
+ "symfony/http-client": "^6.0"
},
"suggest": {
"ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.198.1).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
"brianium/paratest": "Required to run tests in parallel (^6.0).",
"doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).",
- "ext-bcmath": "Required to use the multiple_of validation rule.",
"ext-ftp": "Required to use the Flysystem FTP driver.",
"ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
"ext-memcached": "Required to use the memcache cache driver.",
@@ -1860,16 +1869,18 @@
"ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
"fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
"filp/whoops": "Required for friendly error pages in development (^2.14.3).",
- "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.2).",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).",
"laravel/tinker": "Required to use the tinker console command (^2.0).",
"league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
"league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
+ "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
+ "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
"league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
- "mockery/mockery": "Required to use mocking (^1.4.4).",
+ "mockery/mockery": "Required to use mocking (^1.5.1).",
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
"phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).",
- "predis/predis": "Required to use the predis connector (^1.1.9).",
+ "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
"symfony/cache": "Required to PSR-6 cache bridge (^6.0).",
@@ -1921,7 +1932,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2022-05-03T14:47:20+00:00"
+ "time": "2023-02-01T14:04:34+00:00"
},
{
"name": "laravel/sanctum",
@@ -1990,25 +2001,26 @@
},
{
"name": "laravel/serializable-closure",
- "version": "v1.1.1",
+ "version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e"
+ "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/9e4b005daa20b0c161f3845040046dc9ddc1d74e",
- "reference": "9e4b005daa20b0c161f3845040046dc9ddc1d74e",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37",
+ "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37",
"shasum": ""
},
"require": {
"php": "^7.3|^8.0"
},
"require-dev": {
- "pestphp/pest": "^1.18",
- "phpstan/phpstan": "^0.12.98",
- "symfony/var-dumper": "^5.3"
+ "nesbot/carbon": "^2.61",
+ "pestphp/pest": "^1.21.3",
+ "phpstan/phpstan": "^1.8.2",
+ "symfony/var-dumper": "^5.4.11"
},
"type": "library",
"extra": {
@@ -2045,26 +2057,26 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2022-02-11T19:23:53+00:00"
+ "time": "2023-01-30T18:31:20+00:00"
},
{
"name": "laravel/tinker",
- "version": "v2.7.2",
+ "version": "v2.8.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/tinker.git",
- "reference": "dff39b661e827dae6e092412f976658df82dbac5"
+ "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5",
- "reference": "dff39b661e827dae6e092412f976658df82dbac5",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/74d0b287cc4ae65d15c368dd697aae71d62a73ad",
+ "reference": "74d0b287cc4ae65d15c368dd697aae71d62a73ad",
"shasum": ""
},
"require": {
- "illuminate/console": "^6.0|^7.0|^8.0|^9.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0",
- "illuminate/support": "^6.0|^7.0|^8.0|^9.0",
+ "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0",
+ "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0",
+ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
"php": "^7.2.5|^8.0",
"psy/psysh": "^0.10.4|^0.11.1",
"symfony/var-dumper": "^4.3.4|^5.0|^6.0"
@@ -2074,7 +2086,7 @@
"phpunit/phpunit": "^8.5.8|^9.3.3"
},
"suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)."
+ "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)."
},
"type": "library",
"extra": {
@@ -2111,22 +2123,22 @@
],
"support": {
"issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.7.2"
+ "source": "https://github.com/laravel/tinker/tree/v2.8.0"
},
- "time": "2022-03-23T12:38:24+00:00"
+ "time": "2023-01-10T18:03:30+00:00"
},
{
"name": "laravel/ui",
- "version": "v3.4.5",
+ "version": "v3.4.6",
"source": {
"type": "git",
"url": "https://github.com/laravel/ui.git",
- "reference": "f11d295de1508c5bb56206a620b00b6616de414c"
+ "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/ui/zipball/f11d295de1508c5bb56206a620b00b6616de414c",
- "reference": "f11d295de1508c5bb56206a620b00b6616de414c",
+ "url": "https://api.github.com/repos/laravel/ui/zipball/65ec5c03f7fee2c8ecae785795b829a15be48c2c",
+ "reference": "65ec5c03f7fee2c8ecae785795b829a15be48c2c",
"shasum": ""
},
"require": {
@@ -2172,22 +2184,22 @@
"ui"
],
"support": {
- "source": "https://github.com/laravel/ui/tree/v3.4.5"
+ "source": "https://github.com/laravel/ui/tree/v3.4.6"
},
- "time": "2022-02-21T14:59:16+00:00"
+ "time": "2022-05-20T13:38:08+00:00"
},
{
"name": "league/commonmark",
- "version": "2.3.0",
+ "version": "2.3.8",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955"
+ "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/32a49eb2b38fe5e5c417ab748a45d0beaab97955",
- "reference": "32a49eb2b38fe5e5c417ab748a45d0beaab97955",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c493585c130544c4e91d2e0e131e6d35cb0cbc47",
+ "reference": "c493585c130544c4e91d2e0e131e6d35cb0cbc47",
"shasum": ""
},
"require": {
@@ -2207,15 +2219,15 @@
"erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
- "michelf/php-markdown": "^1.4",
+ "michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
- "phpstan/phpstan": "^0.12.88 || ^1.0.0",
- "phpunit/phpunit": "^9.5.5",
+ "phpstan/phpstan": "^1.8.2",
+ "phpunit/phpunit": "^9.5.21",
"scrutinizer/ocular": "^1.8.1",
- "symfony/finder": "^5.3",
+ "symfony/finder": "^5.3 | ^6.0",
"symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0",
- "unleashedtech/php-coding-standard": "^3.1",
- "vimeo/psalm": "^4.7.3"
+ "unleashedtech/php-coding-standard": "^3.1.1",
+ "vimeo/psalm": "^4.24.0 || ^5.0.0"
},
"suggest": {
"symfony/yaml": "v2.3+ required if using the Front Matter extension"
@@ -2280,20 +2292,20 @@
"type": "tidelift"
}
],
- "time": "2022-04-07T22:37:05+00:00"
+ "time": "2022-12-10T16:02:17+00:00"
},
{
"name": "league/config",
- "version": "v1.1.1",
+ "version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/config.git",
- "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e"
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e",
- "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e",
+ "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
+ "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
"shasum": ""
},
"require": {
@@ -2302,7 +2314,7 @@
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^0.12.90",
+ "phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.5",
"scrutinizer/ocular": "^1.8.1",
"unleashedtech/php-coding-standard": "^3.1",
@@ -2362,20 +2374,20 @@
"type": "github"
}
],
- "time": "2021-08-14T12:15:32+00:00"
+ "time": "2022-12-11T20:36:23+00:00"
},
{
"name": "league/flysystem",
- "version": "3.0.19",
+ "version": "3.12.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "670df21225d68d165a8df38587ac3f41caf608f8"
+ "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/670df21225d68d165a8df38587ac3f41caf608f8",
- "reference": "670df21225d68d165a8df38587ac3f41caf608f8",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f6377c709d2275ed6feaf63e44be7a7162b0e77f",
+ "reference": "f6377c709d2275ed6feaf63e44be7a7162b0e77f",
"shasum": ""
},
"require": {
@@ -2386,12 +2398,13 @@
"aws/aws-sdk-php": "3.209.31 || 3.210.0",
"guzzlehttp/guzzle": "<7.0",
"guzzlehttp/ringphp": "<1.1.1",
+ "phpseclib/phpseclib": "3.0.15",
"symfony/http-client": "<5.2"
},
"require-dev": {
"async-aws/s3": "^1.5",
- "async-aws/simple-s3": "^1.0",
- "aws/aws-sdk-php": "^3.198.1",
+ "async-aws/simple-s3": "^1.1",
+ "aws/aws-sdk-php": "^3.220.0",
"composer/semver": "^3.0",
"ext-fileinfo": "*",
"ext-ftp": "*",
@@ -2399,7 +2412,7 @@
"friendsofphp/php-cs-fixer": "^3.5",
"google/cloud-storage": "^1.23",
"microsoft/azure-storage-blob": "^1.1",
- "phpseclib/phpseclib": "^2.0",
+ "phpseclib/phpseclib": "^3.0.14",
"phpstan/phpstan": "^0.12.26",
"phpunit/phpunit": "^9.5.11",
"sabre/dav": "^4.3.1"
@@ -2436,11 +2449,11 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.0.19"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.12.2"
},
"funding": [
{
- "url": "https://offset.earth/frankdejonge",
+ "url": "https://ecologi.com/frankdejonge",
"type": "custom"
},
{
@@ -2452,7 +2465,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-03T21:19:02+00:00"
+ "time": "2023-01-19T12:02:19+00:00"
},
{
"name": "league/mime-type-detection",
@@ -2559,16 +2572,16 @@
},
{
"name": "monolog/monolog",
- "version": "2.5.0",
+ "version": "2.8.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "4192345e260f1d51b365536199744b987e160edc"
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4192345e260f1d51b365536199744b987e160edc",
- "reference": "4192345e260f1d51b365536199744b987e160edc",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
"shasum": ""
},
"require": {
@@ -2581,18 +2594,22 @@
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^7",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
"graylog2/gelf-php": "^1.4.2",
+ "guzzlehttp/guzzle": "^7.4",
+ "guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3",
- "php-console/php-console": "^3.1.3",
- "phpspec/prophecy": "^1.6.1",
+ "phpspec/prophecy": "^1.15",
"phpstan/phpstan": "^0.12.91",
- "phpunit/phpunit": "^8.5",
- "predis/predis": "^1.1",
+ "phpunit/phpunit": "^8.5.14",
+ "predis/predis": "^1.1 || ^2.0",
"rollbar/rollbar": "^1.3 || ^2 || ^3",
- "ruflin/elastica": ">=0.90@dev",
- "swiftmailer/swiftmailer": "^5.3|^6.0"
+ "ruflin/elastica": "^7",
+ "swiftmailer/swiftmailer": "^5.3|^6.0",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
@@ -2607,7 +2624,6 @@
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "php-console/php-console": "Allow sending log messages to Google Chrome",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
@@ -2642,7 +2658,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/2.5.0"
+ "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
},
"funding": [
{
@@ -2654,20 +2670,20 @@
"type": "tidelift"
}
],
- "time": "2022-04-08T15:43:54+00:00"
+ "time": "2022-07-24T11:55:47+00:00"
},
{
"name": "nesbot/carbon",
- "version": "2.58.0",
+ "version": "2.66.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "97a34af22bde8d0ac20ab34b29d7bfe360902055"
+ "reference": "496712849902241f04902033b0441b269effe001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/97a34af22bde8d0ac20ab34b29d7bfe360902055",
- "reference": "97a34af22bde8d0ac20ab34b29d7bfe360902055",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001",
+ "reference": "496712849902241f04902033b0441b269effe001",
"shasum": ""
},
"require": {
@@ -2678,15 +2694,16 @@
"symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
- "doctrine/dbal": "^2.0 || ^3.0",
+ "doctrine/dbal": "^2.0 || ^3.1.4",
"doctrine/orm": "^2.7",
"friendsofphp/php-cs-fixer": "^3.0",
"kylekatarnls/multi-tester": "^2.0",
+ "ondrejmirtes/better-reflection": "*",
"phpmd/phpmd": "^2.9",
"phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12.54 || ^1.0",
- "phpunit/php-file-iterator": "^2.0.5",
- "phpunit/phpunit": "^7.5.20 || ^8.5.23",
+ "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+ "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
"squizlabs/php_codesniffer": "^3.4"
},
"bin": [
@@ -2743,37 +2760,41 @@
},
"funding": [
{
- "url": "https://opencollective.com/Carbon",
- "type": "open_collective"
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
"type": "tidelift"
}
],
- "time": "2022-04-25T19:31:17+00:00"
+ "time": "2023-01-29T18:53:47+00:00"
},
{
"name": "nette/schema",
- "version": "v1.2.2",
+ "version": "v1.2.3",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
- "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df"
+ "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df",
- "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df",
+ "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
+ "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f",
"shasum": ""
},
"require": {
"nette/utils": "^2.5.7 || ^3.1.5 || ^4.0",
- "php": ">=7.1 <8.2"
+ "php": ">=7.1 <8.3"
},
"require-dev": {
"nette/tester": "^2.3 || ^2.4",
- "phpstan/phpstan-nette": "^0.12",
+ "phpstan/phpstan-nette": "^1.0",
"tracy/tracy": "^2.7"
},
"type": "library",
@@ -2811,31 +2832,32 @@
],
"support": {
"issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.2.2"
+ "source": "https://github.com/nette/schema/tree/v1.2.3"
},
- "time": "2021-10-15T11:40:02+00:00"
+ "time": "2022-10-13T01:24:26+00:00"
},
{
"name": "nette/utils",
- "version": "v3.2.7",
+ "version": "v3.2.9",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99"
+ "reference": "c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99",
- "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99",
+ "url": "https://api.github.com/repos/nette/utils/zipball/c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c",
+ "reference": "c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c",
"shasum": ""
},
"require": {
- "php": ">=7.2 <8.2"
+ "php": ">=7.2 <8.3"
},
"conflict": {
"nette/di": "<3.0.6"
},
"require-dev": {
+ "jetbrains/phpstorm-attributes": "dev-master",
"nette/tester": "~2.0",
"phpstan/phpstan": "^1.0",
"tracy/tracy": "^2.3"
@@ -2896,22 +2918,22 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v3.2.7"
+ "source": "https://github.com/nette/utils/tree/v3.2.9"
},
- "time": "2022-01-24T11:29:14+00:00"
+ "time": "2023-01-18T03:26:20+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.13.2",
+ "version": "v4.15.3",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039",
+ "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039",
"shasum": ""
},
"require": {
@@ -2952,9 +2974,95 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3"
},
- "time": "2021-11-30T19:35:32+00:00"
+ "time": "2023-01-16T22:05:37+00:00"
+ },
+ {
+ "name": "nunomaduro/termwind",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/termwind.git",
+ "reference": "594ab862396c16ead000de0c3c38f4a5cbe1938d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/594ab862396c16ead000de0c3c38f4a5cbe1938d",
+ "reference": "594ab862396c16ead000de0c3c38f4a5cbe1938d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": "^8.0",
+ "symfony/console": "^5.3.0|^6.0.0"
+ },
+ "require-dev": {
+ "ergebnis/phpstan-rules": "^1.0.",
+ "illuminate/console": "^8.0|^9.0",
+ "illuminate/support": "^8.0|^9.0",
+ "laravel/pint": "^1.0.0",
+ "pestphp/pest": "^1.21.0",
+ "pestphp/pest-plugin-mock": "^1.0",
+ "phpstan/phpstan": "^1.4.6",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "symfony/var-dumper": "^5.2.7|^6.0.0",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Termwind\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Its like Tailwind CSS, but for the console.",
+ "keywords": [
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
+ ],
+ "support": {
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v1.15.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "time": "2022-12-20T19:00:15+00:00"
},
{
"name": "paragonie/random_compat",
@@ -3008,16 +3116,16 @@
},
{
"name": "paragonie/sodium_compat",
- "version": "v1.17.1",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/sodium_compat.git",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e"
+ "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e",
- "reference": "ac994053faac18d386328c91c7900f930acadf1e",
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933",
+ "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933",
"shasum": ""
},
"require": {
@@ -3088,35 +3196,39 @@
],
"support": {
"issues": "https://github.com/paragonie/sodium_compat/issues",
- "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1"
+ "source": "https://github.com/paragonie/sodium_compat/tree/v1.19.0"
},
- "time": "2022-03-23T19:32:04+00:00"
+ "time": "2022-09-26T03:40:35+00:00"
},
{
"name": "phpoption/phpoption",
- "version": "1.8.1",
+ "version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15"
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
- "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
"shasum": ""
},
"require": {
- "php": "^7.0 || ^8.0"
+ "php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
- "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8"
+ "bamarni/composer-bin-plugin": "^1.8",
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
"branch-alias": {
- "dev-master": "1.8-dev"
+ "dev-master": "1.9-dev"
}
},
"autoload": {
@@ -3149,7 +3261,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.8.1"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.0"
},
"funding": [
{
@@ -3161,7 +3273,7 @@
"type": "tidelift"
}
],
- "time": "2021-12-04T23:24:31+00:00"
+ "time": "2022-07-30T15:51:26+00:00"
},
{
"name": "psr/cache",
@@ -3578,16 +3690,16 @@
},
{
"name": "psy/psysh",
- "version": "v0.11.2",
+ "version": "v0.11.12",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "7f7da640d68b9c9fec819caae7c744a213df6514"
+ "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/7f7da640d68b9c9fec819caae7c744a213df6514",
- "reference": "7f7da640d68b9c9fec819caae7c744a213df6514",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/52cb7c47d403c31c0adc9bf7710fc355f93c20f7",
+ "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7",
"shasum": ""
},
"require": {
@@ -3602,15 +3714,13 @@
"symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.2",
- "hoa/console": "3.17.05.02"
+ "bamarni/composer-bin-plugin": "^1.2"
},
"suggest": {
"ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)",
"ext-pdo-sqlite": "The doc command requires SQLite to work.",
"ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.",
- "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.",
- "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit."
+ "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history."
},
"bin": [
"bin/psysh"
@@ -3650,22 +3760,22 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.11.2"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.11.12"
},
- "time": "2022-02-28T15:28:54+00:00"
+ "time": "2023-01-29T21:24:40+00:00"
},
{
"name": "pusher/pusher-php-server",
- "version": "7.0.2",
+ "version": "7.2.2",
"source": {
"type": "git",
"url": "https://github.com/pusher/pusher-http-php.git",
- "reference": "af3eeaefc0c7959f5b3852f0a4dd5547245d33df"
+ "reference": "4ace4873873b06c25cecb2dd6d9fdcbf2f20b640"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/af3eeaefc0c7959f5b3852f0a4dd5547245d33df",
- "reference": "af3eeaefc0c7959f5b3852f0a4dd5547245d33df",
+ "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/4ace4873873b06c25cecb2dd6d9fdcbf2f20b640",
+ "reference": "4ace4873873b06c25cecb2dd6d9fdcbf2f20b640",
"shasum": ""
},
"require": {
@@ -3678,7 +3788,7 @@
},
"require-dev": {
"overtrue/phplint": "^2.3",
- "phpunit/phpunit": "^8.5|^9.3"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -3711,9 +3821,9 @@
],
"support": {
"issues": "https://github.com/pusher/pusher-http-php/issues",
- "source": "https://github.com/pusher/pusher-http-php/tree/7.0.2"
+ "source": "https://github.com/pusher/pusher-http-php/tree/7.2.2"
},
- "time": "2021-12-07T13:09:00+00:00"
+ "time": "2022-12-20T19:52:36+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -3761,42 +3871,52 @@
},
{
"name": "ramsey/collection",
- "version": "1.2.2",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/collection.git",
- "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
- "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
+ "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5",
"shasum": ""
},
"require": {
- "php": "^7.3 || ^8",
- "symfony/polyfill-php81": "^1.23"
+ "php": "^8.1"
},
"require-dev": {
- "captainhook/captainhook": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "ergebnis/composer-normalize": "^2.6",
- "fakerphp/faker": "^1.5",
- "hamcrest/hamcrest-php": "^2",
- "jangregor/phpstan-prophecy": "^0.8",
- "mockery/mockery": "^1.3",
+ "captainhook/plugin-composer": "^5.3",
+ "ergebnis/composer-normalize": "^2.28.3",
+ "fakerphp/faker": "^1.21",
+ "hamcrest/hamcrest-php": "^2.0",
+ "jangregor/phpstan-prophecy": "^1.0",
+ "mockery/mockery": "^1.5",
+ "php-parallel-lint/php-console-highlighter": "^1.0",
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpcsstandards/phpcsutils": "^1.0.0-rc1",
"phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1",
- "phpstan/phpstan": "^0.12.32",
- "phpstan/phpstan-mockery": "^0.12.5",
- "phpstan/phpstan-phpunit": "^0.12.11",
- "phpunit/phpunit": "^8.5 || ^9",
- "psy/psysh": "^0.10.4",
- "slevomat/coding-standard": "^6.3",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.4"
+ "phpstan/extension-installer": "^1.2",
+ "phpstan/phpstan": "^1.9",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-phpunit": "^0.18.4",
+ "ramsey/coding-standard": "^2.0.3",
+ "ramsey/conventional-commits": "^1.3",
+ "vimeo/psalm": "^5.4"
},
"type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ },
+ "ramsey/conventional-commits": {
+ "configFile": "conventional-commits.json"
+ }
+ },
"autoload": {
"psr-4": {
"Ramsey\\Collection\\": "src/"
@@ -3824,7 +3944,7 @@
],
"support": {
"issues": "https://github.com/ramsey/collection/issues",
- "source": "https://github.com/ramsey/collection/tree/1.2.2"
+ "source": "https://github.com/ramsey/collection/tree/2.0.0"
},
"funding": [
{
@@ -3836,28 +3956,27 @@
"type": "tidelift"
}
],
- "time": "2021-10-10T03:01:02+00:00"
+ "time": "2022-12-31T21:50:55+00:00"
},
{
"name": "ramsey/uuid",
- "version": "4.3.1",
+ "version": "4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28"
+ "reference": "25c4faac19549ebfcd3a6a73732dddeb188eaf5a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
- "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/25c4faac19549ebfcd3a6a73732dddeb188eaf5a",
+ "reference": "25c4faac19549ebfcd3a6a73732dddeb188eaf5a",
"shasum": ""
},
"require": {
- "brick/math": "^0.8 || ^0.9",
- "ext-ctype": "*",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
"ext-json": "*",
"php": "^8.0",
- "ramsey/collection": "^1.0"
+ "ramsey/collection": "^1.2 || ^2.0"
},
"replace": {
"rhumsaa/uuid": "self.version"
@@ -3869,29 +3988,29 @@
"doctrine/annotations": "^1.8",
"ergebnis/composer-normalize": "^2.15",
"mockery/mockery": "^1.3",
- "moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock": "^2.2",
"php-mock/php-mock-mockery": "^1.3",
"php-parallel-lint/php-parallel-lint": "^1.1",
"phpbench/phpbench": "^1.0",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-mockery": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
"phpunit/phpunit": "^8.5 || ^9",
- "slevomat/coding-standard": "^7.0",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.9"
},
"suggest": {
"ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
- "ext-ctype": "Enables faster processing of character classification using ctype functions.",
"ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
"ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
+ "default-branch": true,
"type": "library",
"extra": {
"captainhook": {
@@ -3918,7 +4037,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.3.1"
+ "source": "https://github.com/ramsey/uuid/tree/4.x"
},
"funding": [
{
@@ -3930,7 +4049,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-27T21:42:02+00:00"
+ "time": "2023-01-28T17:00:47+00:00"
},
{
"name": "ratchet/pawl",
@@ -4045,16 +4164,16 @@
},
{
"name": "react/cache",
- "version": "v1.1.1",
+ "version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/cache.git",
- "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e"
+ "reference": "d47c472b64aa5608225f47965a484b75c7817d5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e",
- "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e",
+ "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b",
+ "reference": "d47c472b64aa5608225f47965a484b75c7817d5b",
"shasum": ""
},
"require": {
@@ -4062,7 +4181,7 @@
"react/promise": "^3.0 || ^2.0 || ^1.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
+ "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@@ -4105,32 +4224,28 @@
],
"support": {
"issues": "https://github.com/reactphp/cache/issues",
- "source": "https://github.com/reactphp/cache/tree/v1.1.1"
+ "source": "https://github.com/reactphp/cache/tree/v1.2.0"
},
"funding": [
{
- "url": "https://github.com/WyriHaximus",
- "type": "github"
- },
- {
- "url": "https://github.com/clue",
- "type": "github"
+ "url": "https://opencollective.com/reactphp",
+ "type": "open_collective"
}
],
- "time": "2021-02-02T06:47:52+00:00"
+ "time": "2022-11-30T15:59:55+00:00"
},
{
"name": "react/child-process",
- "version": "v0.6.4",
+ "version": "v0.6.5",
"source": {
"type": "git",
"url": "https://github.com/reactphp/child-process.git",
- "reference": "a778f3fb828d68caf8a9ab6567fd8342a86f12fe"
+ "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/child-process/zipball/a778f3fb828d68caf8a9ab6567fd8342a86f12fe",
- "reference": "a778f3fb828d68caf8a9ab6567fd8342a86f12fe",
+ "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
+ "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43",
"shasum": ""
},
"require": {
@@ -4184,7 +4299,7 @@
],
"support": {
"issues": "https://github.com/reactphp/child-process/issues",
- "source": "https://github.com/reactphp/child-process/tree/v0.6.4"
+ "source": "https://github.com/reactphp/child-process/tree/v0.6.5"
},
"funding": [
{
@@ -4196,7 +4311,7 @@
"type": "github"
}
],
- "time": "2021-10-12T10:37:07+00:00"
+ "time": "2022-09-16T13:41:56+00:00"
},
{
"name": "react/datagram",
@@ -4259,16 +4374,16 @@
},
{
"name": "react/dns",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/dns.git",
- "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb"
+ "reference": "a5427e7dfa47713e438016905605819d101f238c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/dns/zipball/6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb",
- "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb",
+ "url": "https://api.github.com/repos/reactphp/dns/zipball/a5427e7dfa47713e438016905605819d101f238c",
+ "reference": "a5427e7dfa47713e438016905605819d101f238c",
"shasum": ""
},
"require": {
@@ -4276,11 +4391,11 @@
"react/cache": "^1.0 || ^0.6 || ^0.5",
"react/event-loop": "^1.2",
"react/promise": "^3.0 || ^2.7 || ^1.2.1",
- "react/promise-timer": "^1.8"
+ "react/promise-timer": "^1.9"
},
"require-dev": {
- "clue/block-react": "^1.2",
- "phpunit/phpunit": "^9.3 || ^4.8.35"
+ "phpunit/phpunit": "^9.3 || ^4.8.35",
+ "react/async": "^4 || ^3 || ^2"
},
"type": "library",
"autoload": {
@@ -4323,7 +4438,7 @@
],
"support": {
"issues": "https://github.com/reactphp/dns/issues",
- "source": "https://github.com/reactphp/dns/tree/v1.9.0"
+ "source": "https://github.com/reactphp/dns/tree/v1.10.0"
},
"funding": [
{
@@ -4335,7 +4450,7 @@
"type": "github"
}
],
- "time": "2021-12-20T08:46:54+00:00"
+ "time": "2022-09-08T12:22:46+00:00"
},
{
"name": "react/event-loop",
@@ -4417,16 +4532,16 @@
},
{
"name": "react/http",
- "version": "v1.6.0",
+ "version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/http.git",
- "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7"
+ "reference": "aa7512ee17258c88466de30f9cb44ec5f9df3ff3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/http/zipball/59961cc4a5b14481728f07c591546be18fa3a5c7",
- "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7",
+ "url": "https://api.github.com/repos/reactphp/http/zipball/aa7512ee17258c88466de30f9cb44ec5f9df3ff3",
+ "reference": "aa7512ee17258c88466de30f9cb44ec5f9df3ff3",
"shasum": ""
},
"require": {
@@ -4435,18 +4550,19 @@
"php": ">=5.3.0",
"psr/http-message": "^1.0",
"react/event-loop": "^1.2",
- "react/promise": "^2.3 || ^1.2.1",
- "react/promise-stream": "^1.1",
- "react/socket": "^1.9",
+ "react/promise": "^3 || ^2.3 || ^1.2.1",
+ "react/promise-stream": "^1.4",
+ "react/socket": "^1.12",
"react/stream": "^1.2",
"ringcentral/psr7": "^1.2"
},
"require-dev": {
- "clue/block-react": "^1.5",
- "clue/http-proxy-react": "^1.7",
- "clue/reactphp-ssh-proxy": "^1.3",
- "clue/socks-react": "^1.3",
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
+ "clue/http-proxy-react": "^1.8",
+ "clue/reactphp-ssh-proxy": "^1.4",
+ "clue/socks-react": "^1.4",
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
+ "react/async": "^4 || ^3 || ^2",
+ "react/promise-timer": "^1.9"
},
"type": "library",
"autoload": {
@@ -4496,7 +4612,7 @@
],
"support": {
"issues": "https://github.com/reactphp/http/issues",
- "source": "https://github.com/reactphp/http/tree/v1.6.0"
+ "source": "https://github.com/reactphp/http/tree/v1.8.0"
},
"funding": [
{
@@ -4508,7 +4624,7 @@
"type": "github"
}
],
- "time": "2022-02-03T13:17:37+00:00"
+ "time": "2022-09-29T12:55:52+00:00"
},
{
"name": "react/partial",
@@ -4632,28 +4748,25 @@
},
{
"name": "react/promise-stream",
- "version": "v1.3.0",
+ "version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-stream.git",
- "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949"
+ "reference": "e6d2805e09ad50c4896f65f5e8705fe4ee7731a3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/3ebd94fe0d8edbf44937948af28d02d5437e9949",
- "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949",
+ "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/e6d2805e09ad50c4896f65f5e8705fe4ee7731a3",
+ "reference": "e6d2805e09ad50c4896f65f5e8705fe4ee7731a3",
"shasum": ""
},
"require": {
"php": ">=5.3",
- "react/promise": "^2.1 || ^1.2",
+ "react/promise": "^3 || ^2.1 || ^1.2",
"react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6"
},
"require-dev": {
- "clue/block-react": "^1.0",
- "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
- "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3",
- "react/promise-timer": "^1.0"
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
@@ -4702,7 +4815,7 @@
],
"support": {
"issues": "https://github.com/reactphp/promise-stream/issues",
- "source": "https://github.com/reactphp/promise-stream/tree/v1.3.0"
+ "source": "https://github.com/reactphp/promise-stream/tree/v1.5.0"
},
"funding": [
{
@@ -4714,20 +4827,20 @@
"type": "github"
}
],
- "time": "2021-10-18T10:47:09+00:00"
+ "time": "2022-09-09T11:42:18+00:00"
},
{
"name": "react/promise-timer",
- "version": "v1.8.0",
+ "version": "v1.9.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise-timer.git",
- "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479"
+ "reference": "aa7a73c74b8d8c0f622f5982ff7b0351bc29e495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/0bbbcc79589e5bfdddba68a287f1cb805581a479",
- "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479",
+ "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/aa7a73c74b8d8c0f622f5982ff7b0351bc29e495",
+ "reference": "aa7a73c74b8d8c0f622f5982ff7b0351bc29e495",
"shasum": ""
},
"require": {
@@ -4785,7 +4898,7 @@
],
"support": {
"issues": "https://github.com/reactphp/promise-timer/issues",
- "source": "https://github.com/reactphp/promise-timer/tree/v1.8.0"
+ "source": "https://github.com/reactphp/promise-timer/tree/v1.9.0"
},
"funding": [
{
@@ -4797,20 +4910,20 @@
"type": "github"
}
],
- "time": "2021-12-06T11:08:48+00:00"
+ "time": "2022-06-13T13:41:03+00:00"
},
{
"name": "react/socket",
- "version": "v1.11.0",
+ "version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/socket.git",
- "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c"
+ "reference": "81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/socket/zipball/f474156aaab4f09041144fa8b57c7d70aed32a1c",
- "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c",
+ "url": "https://api.github.com/repos/reactphp/socket/zipball/81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b",
+ "reference": "81e1b4d7f5450ebd8d2e9a95bb008bb15ca95a7b",
"shasum": ""
},
"require": {
@@ -4818,14 +4931,14 @@
"php": ">=5.3.0",
"react/dns": "^1.8",
"react/event-loop": "^1.2",
- "react/promise": "^2.6.0 || ^1.2.1",
- "react/promise-timer": "^1.8",
+ "react/promise": "^3 || ^2.6 || ^1.2.1",
+ "react/promise-timer": "^1.9",
"react/stream": "^1.2"
},
"require-dev": {
- "clue/block-react": "^1.5",
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
- "react/promise-stream": "^1.2"
+ "react/async": "^4 || ^3 || ^2",
+ "react/promise-stream": "^1.4"
},
"type": "library",
"autoload": {
@@ -4869,7 +4982,7 @@
],
"support": {
"issues": "https://github.com/reactphp/socket/issues",
- "source": "https://github.com/reactphp/socket/tree/v1.11.0"
+ "source": "https://github.com/reactphp/socket/tree/v1.12.0"
},
"funding": [
{
@@ -4881,7 +4994,7 @@
"type": "github"
}
],
- "time": "2022-01-14T10:14:32+00:00"
+ "time": "2022-08-25T12:32:25+00:00"
},
{
"name": "react/stream",
@@ -5028,20 +5141,21 @@
},
{
"name": "symfony/console",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0d00aa289215353aa8746a31d101f8e60826285c"
+ "reference": "3e294254f2191762c1d137aed4b94e966965e985"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0d00aa289215353aa8746a31d101f8e60826285c",
- "reference": "0d00aa289215353aa8746a31d101f8e60826285c",
+ "url": "https://api.github.com/repos/symfony/console/zipball/3e294254f2191762c1d137aed4b94e966965e985",
+ "reference": "3e294254f2191762c1d137aed4b94e966965e985",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/string": "^5.4|^6.0"
@@ -5103,7 +5217,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.0.8"
+ "source": "https://github.com/symfony/console/tree/v6.2.5"
},
"funding": [
{
@@ -5119,24 +5233,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-20T15:01:42+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.0.3",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "1955d595c12c111629cc814d3f2a2ff13580508a"
+ "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a",
- "reference": "1955d595c12c111629cc814d3f2a2ff13580508a",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1",
+ "reference": "bf1b9d4ad8b1cf0dbde8b08e0135a2f6259b9ba1",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"type": "library",
"autoload": {
@@ -5168,7 +5282,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.0.3"
+ "source": "https://github.com/symfony/css-selector/tree/v6.2.5"
},
"funding": [
{
@@ -5184,29 +5298,29 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.0.1",
+ "version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
+ "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
- "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
+ "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5235,7 +5349,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
},
"funding": [
{
@@ -5251,24 +5365,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-11-25T10:21:52+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280"
+ "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/5e2795163acbd13b3cd46835c9f8f6c5d0a3a280",
- "reference": "5e2795163acbd13b3cd46835c9f8f6c5d0a3a280",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/0092696af0be8e6124b042fbe2890ca1788d7b28",
+ "reference": "0092696af0be8e6124b042fbe2890ca1788d7b28",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/var-dumper": "^5.4|^6.0"
},
@@ -5306,7 +5420,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v6.0.8"
+ "source": "https://github.com/symfony/error-handler/tree/v6.2.5"
},
"funding": [
{
@@ -5322,24 +5436,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-12T16:11:42+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.0.3",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934"
+ "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934",
- "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68",
+ "reference": "f02d108b5e9fd4a6245aa73a9d2df2ec060c3e68",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
@@ -5389,7 +5503,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.5"
},
"funding": [
{
@@ -5405,24 +5519,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.0.1",
+ "version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "7bc61cc2db649b4637d331240c5346dcc7708051"
+ "reference": "0782b0b52a737a05b4383d0df35a474303cabdae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051",
- "reference": "7bc61cc2db649b4637d331240c5346dcc7708051",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0782b0b52a737a05b4383d0df35a474303cabdae",
+ "reference": "0782b0b52a737a05b4383d0df35a474303cabdae",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/event-dispatcher": "^1"
},
"suggest": {
@@ -5431,7 +5545,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5468,7 +5582,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.1"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.0"
},
"funding": [
{
@@ -5484,24 +5598,27 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-11-25T10:21:52+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f"
+ "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/af7edab28d17caecd1f40a9219fc646ae751c21f",
- "reference": "af7edab28d17caecd1f40a9219fc646ae751c21f",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/c90dc446976a612e3312a97a6ec0069ab0c2099c",
+ "reference": "c90dc446976a612e3312a97a6ec0069ab0c2099c",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.0"
},
"type": "library",
"autoload": {
@@ -5529,7 +5646,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.0.8"
+ "source": "https://github.com/symfony/finder/tree/v6.2.5"
},
"funding": [
{
@@ -5545,32 +5662,38 @@
"type": "tidelift"
}
],
- "time": "2022-04-15T08:07:58+00:00"
+ "time": "2023-01-20T17:45:48+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.0.8",
+ "version": "v6.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c"
+ "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c9c86b02d7ef6f44f3154acc7de42831518afe7c",
- "reference": "c9c86b02d7ef6f44f3154acc7de42831518afe7c",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e8dd1f502bc2b3371d05092aa233b064b03ce7ed",
+ "reference": "e8dd1f502bc2b3371d05092aa233b064b03ce7ed",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.1"
},
+ "conflict": {
+ "symfony/cache": "<6.2"
+ },
"require-dev": {
"predis/predis": "~1.0",
"symfony/cache": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
- "symfony/mime": "^5.4|^6.0"
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/rate-limiter": "^5.2|^6.0"
},
"suggest": {
"symfony/mime": "To use the file extension guesser"
@@ -5601,7 +5724,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v6.0.8"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.2.6"
},
"funding": [
{
@@ -5617,26 +5740,27 @@
"type": "tidelift"
}
],
- "time": "2022-04-22T08:18:02+00:00"
+ "time": "2023-01-30T15:46:28+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.0.8",
+ "version": "v6.2.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7"
+ "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7aaf1cdc9cc2ad47e926f624efcb679883a39ca7",
- "reference": "7aaf1cdc9cc2ad47e926f624efcb679883a39ca7",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7122db07b0d8dbf0de682267c84217573aee3ea7",
+ "reference": "7122db07b0d8dbf0de682267c84217573aee3ea7",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/log": "^1|^2|^3",
- "symfony/error-handler": "^5.4|^6.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/error-handler": "^6.1",
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/polyfill-ctype": "^1.8"
@@ -5644,9 +5768,9 @@
"conflict": {
"symfony/browser-kit": "<5.4",
"symfony/cache": "<5.4",
- "symfony/config": "<5.4",
+ "symfony/config": "<6.1",
"symfony/console": "<5.4",
- "symfony/dependency-injection": "<5.4",
+ "symfony/dependency-injection": "<6.2",
"symfony/doctrine-bridge": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<5.4",
@@ -5663,10 +5787,10 @@
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^5.4|^6.0",
- "symfony/config": "^5.4|^6.0",
+ "symfony/config": "^6.1",
"symfony/console": "^5.4|^6.0",
"symfony/css-selector": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/dependency-injection": "^6.2",
"symfony/dom-crawler": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/finder": "^5.4|^6.0",
@@ -5676,6 +5800,7 @@
"symfony/stopwatch": "^5.4|^6.0",
"symfony/translation": "^5.4|^6.0",
"symfony/translation-contracts": "^1.1|^2|^3",
+ "symfony/uid": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -5710,7 +5835,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v6.0.8"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.2.6"
},
"funding": [
{
@@ -5726,37 +5851,42 @@
"type": "tidelift"
}
],
- "time": "2022-04-27T17:26:02+00:00"
+ "time": "2023-02-01T08:32:25+00:00"
},
{
"name": "symfony/mailer",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b"
+ "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/706af6b3e99ebcbc639c9c664f5579aaa869409b",
- "reference": "706af6b3e99ebcbc639c9c664f5579aaa869409b",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/29729ac0b4e5113f24c39c46746bd6afb79e0aaa",
+ "reference": "29729ac0b4e5113f24c39c46746bd6afb79e0aaa",
"shasum": ""
},
"require": {
- "egulias/email-validator": "^2.1.10|^3",
- "php": ">=8.0.2",
+ "egulias/email-validator": "^2.1.10|^3|^4",
+ "php": ">=8.1",
"psr/event-dispatcher": "^1",
"psr/log": "^1|^2|^3",
"symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/mime": "^5.4|^6.0",
+ "symfony/mime": "^6.2",
"symfony/service-contracts": "^1.1|^2|^3"
},
"conflict": {
- "symfony/http-kernel": "<5.4"
+ "symfony/http-kernel": "<5.4",
+ "symfony/messenger": "<6.2",
+ "symfony/mime": "<6.2",
+ "symfony/twig-bridge": "<6.2.1"
},
"require-dev": {
+ "symfony/console": "^5.4|^6.0",
"symfony/http-client-contracts": "^1.1|^2|^3",
- "symfony/messenger": "^5.4|^6.0"
+ "symfony/messenger": "^6.2",
+ "symfony/twig-bridge": "^6.2"
},
"type": "library",
"autoload": {
@@ -5784,7 +5914,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v6.0.8"
+ "source": "https://github.com/symfony/mailer/tree/v6.2.5"
},
"funding": [
{
@@ -5800,24 +5930,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-27T17:10:30+00:00"
+ "time": "2023-01-10T18:53:53+00:00"
},
{
"name": "symfony/mime",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1"
+ "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1",
- "reference": "c1701e88ad0ca49fc6ad6cdf360bc0e1209fb5e1",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/4b7b349f67d15cd0639955c8179a76c89f6fd610",
+ "reference": "4b7b349f67d15cd0639955c8179a76c89f6fd610",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
@@ -5825,15 +5955,17 @@
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<5.4"
+ "symfony/mailer": "<5.4",
+ "symfony/serializer": "<6.2"
},
"require-dev": {
- "egulias/email-validator": "^2.1.10|^3.1",
+ "egulias/email-validator": "^2.1.10|^3.1|^4",
+ "league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/property-access": "^5.4|^6.0",
"symfony/property-info": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
+ "symfony/serializer": "^6.2"
},
"type": "library",
"autoload": {
@@ -5865,7 +5997,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v6.0.8"
+ "source": "https://github.com/symfony/mime/tree/v6.2.5"
},
"funding": [
{
@@ -5881,27 +6013,25 @@
"type": "tidelift"
}
],
- "time": "2022-04-12T16:11:42+00:00"
+ "time": "2023-01-10T18:53:53+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v5.4.3",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8"
+ "reference": "e8324d44f5af99ec2ccec849934a242f64458f86"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8",
- "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/e8324d44f5af99ec2ccec849934a242f64458f86",
+ "reference": "e8324d44f5af99ec2ccec849934a242f64458f86",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php73": "~1.0",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"type": "library",
"autoload": {
@@ -5934,7 +6064,7 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v5.4.3"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.2.5"
},
"funding": [
{
@@ -5950,20 +6080,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"shasum": ""
},
"require": {
@@ -5978,7 +6108,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6016,7 +6146,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
},
"funding": [
{
@@ -6032,20 +6162,20 @@
"type": "tidelift"
}
],
- "time": "2021-10-20T20:35:02+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
- "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
"shasum": ""
},
"require": {
@@ -6057,7 +6187,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6097,7 +6227,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
},
"funding": [
{
@@ -6113,20 +6243,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-23T21:10:46+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "749045c69efb97c70d25d7463abba812e91f3a44"
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
- "reference": "749045c69efb97c70d25d7463abba812e91f3a44",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
"shasum": ""
},
"require": {
@@ -6140,7 +6270,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6184,7 +6314,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
},
"funding": [
{
@@ -6200,20 +6330,20 @@
"type": "tidelift"
}
],
- "time": "2021-09-14T14:02:44+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"shasum": ""
},
"require": {
@@ -6225,7 +6355,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6268,7 +6398,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
},
"funding": [
{
@@ -6284,20 +6414,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
- "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"shasum": ""
},
"require": {
@@ -6312,7 +6442,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6351,7 +6481,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
},
"funding": [
{
@@ -6367,20 +6497,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-30T18:21:41+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
"shasum": ""
},
"require": {
@@ -6389,7 +6519,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6427,7 +6557,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
},
"funding": [
{
@@ -6443,99 +6573,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.25.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-06-05T21:20:04+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.25.0",
+ "version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c"
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c",
- "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
"shasum": ""
},
"require": {
@@ -6544,7 +6595,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6589,7 +6640,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
},
"funding": [
{
@@ -6605,29 +6656,35 @@
"type": "tidelift"
}
],
- "time": "2022-03-04T08:16:47+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
- "name": "symfony/polyfill-php81",
- "version": "v1.25.0",
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.27.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
- "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166",
+ "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
+ "provide": {
+ "ext-uuid": "*"
+ },
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -6639,11 +6696,8 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
+ "Symfony\\Polyfill\\Uuid\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -6651,24 +6705,24 @@
],
"authors": [
{
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "description": "Symfony polyfill for uuid functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
- "shim"
+ "uuid"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.25.0"
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0"
},
"funding": [
{
@@ -6684,24 +6738,24 @@
"type": "tidelift"
}
],
- "time": "2021-09-13T13:58:11+00:00"
+ "time": "2022-11-03T14:55:06+00:00"
},
{
"name": "symfony/process",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9"
+ "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/d074154ea8b1443a96391f6e39f9e547b2dd01b9",
- "reference": "d074154ea8b1443a96391f6e39f9e547b2dd01b9",
+ "url": "https://api.github.com/repos/symfony/process/zipball/9ead139f63dfa38c4e4a9049cc64a8b2748c83b7",
+ "reference": "9ead139f63dfa38c4e4a9049cc64a8b2748c83b7",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"type": "library",
"autoload": {
@@ -6729,7 +6783,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v6.0.8"
+ "source": "https://github.com/symfony/process/tree/v6.2.5"
},
"funding": [
{
@@ -6745,20 +6799,20 @@
"type": "tidelift"
}
],
- "time": "2022-04-12T16:11:42+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
- "version": "v2.1.2",
+ "version": "v2.1.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/psr-http-message-bridge.git",
- "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34"
+ "reference": "a125b93ef378c492e274f217874906fb9babdebb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34",
- "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/a125b93ef378c492e274f217874906fb9babdebb",
+ "reference": "a125b93ef378c492e274f217874906fb9babdebb",
"shasum": ""
},
"require": {
@@ -6817,7 +6871,7 @@
],
"support": {
"issues": "https://github.com/symfony/psr-http-message-bridge/issues",
- "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2"
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.4"
},
"funding": [
{
@@ -6833,35 +6887,35 @@
"type": "tidelift"
}
],
- "time": "2021-11-05T13:13:39+00:00"
+ "time": "2022-11-28T22:46:34+00:00"
},
{
"name": "symfony/routing",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e"
+ "reference": "589bd742d5d03c192c8521911680fe88f61712fe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/74c40c9fc334acc601a32fcf4274e74fb3bac11e",
- "reference": "74c40c9fc334acc601a32fcf4274e74fb3bac11e",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/589bd742d5d03c192c8521911680fe88f61712fe",
+ "reference": "589bd742d5d03c192c8521911680fe88f61712fe",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"conflict": {
"doctrine/annotations": "<1.12",
- "symfony/config": "<5.4",
+ "symfony/config": "<6.2",
"symfony/dependency-injection": "<5.4",
"symfony/yaml": "<5.4"
},
"require-dev": {
- "doctrine/annotations": "^1.12",
+ "doctrine/annotations": "^1.12|^2",
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
+ "symfony/config": "^6.2",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
@@ -6905,7 +6959,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.0.8"
+ "source": "https://github.com/symfony/routing/tree/v6.2.5"
},
"funding": [
{
@@ -6921,24 +6975,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-22T08:18:02+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.0.1",
+ "version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c"
+ "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e517458f278c2131ca9f262f8fbaf01410f2c65c",
- "reference": "e517458f278c2131ca9f262f8fbaf01410f2c65c",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75",
+ "reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/container": "^2.0"
},
"conflict": {
@@ -6950,7 +7004,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -6960,7 +7014,10 @@
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Service\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -6987,7 +7044,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.0.1"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.2.0"
},
"funding": [
{
@@ -7003,24 +7060,24 @@
"type": "tidelift"
}
],
- "time": "2022-03-13T20:10:05+00:00"
+ "time": "2022-11-25T10:21:52+00:00"
},
{
"name": "symfony/string",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d"
+ "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/ac0aa5c2282e0de624c175b68d13f2c8f2e2649d",
- "reference": "ac0aa5c2282e0de624c175b68d13f2c8f2e2649d",
+ "url": "https://api.github.com/repos/symfony/string/zipball/b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
+ "reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -7032,6 +7089,7 @@
"require-dev": {
"symfony/error-handler": "^5.4|^6.0",
"symfony/http-client": "^5.4|^6.0",
+ "symfony/intl": "^6.2",
"symfony/translation-contracts": "^2.0|^3.0",
"symfony/var-exporter": "^5.4|^6.0"
},
@@ -7072,7 +7130,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.0.8"
+ "source": "https://github.com/symfony/string/tree/v6.2.5"
},
"funding": [
{
@@ -7088,24 +7146,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-22T08:18:02+00:00"
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "3d38cf8f8834148c4457681d539bc204de701501"
+ "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/3d38cf8f8834148c4457681d539bc204de701501",
- "reference": "3d38cf8f8834148c4457681d539bc204de701501",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/60556925a703cfbc1581cde3b3f35b0bb0ea904c",
+ "reference": "60556925a703cfbc1581cde3b3f35b0bb0ea904c",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^2.3|^3.0"
},
@@ -7121,6 +7179,7 @@
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
+ "nikic/php-parser": "^4.13",
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0",
"symfony/console": "^5.4|^6.0",
@@ -7130,10 +7189,12 @@
"symfony/http-kernel": "^5.4|^6.0",
"symfony/intl": "^5.4|^6.0",
"symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^5.4|^6.0",
"symfony/service-contracts": "^1.1.2|^2|^3",
"symfony/yaml": "^5.4|^6.0"
},
"suggest": {
+ "nikic/php-parser": "To use PhpAstExtractor",
"psr/log-implementation": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
@@ -7167,7 +7228,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.0.8"
+ "source": "https://github.com/symfony/translation/tree/v6.2.5"
},
"funding": [
{
@@ -7183,24 +7244,24 @@
"type": "tidelift"
}
],
- "time": "2022-04-22T08:18:02+00:00"
+ "time": "2023-01-05T07:00:27+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.0.1",
+ "version": "v3.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9"
+ "reference": "68cce71402305a015f8c1589bfada1280dc64fe7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9",
- "reference": "c4183fc3ef0f0510893cbeedc7718fb5cafc9ac9",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/68cce71402305a015f8c1589bfada1280dc64fe7",
+ "reference": "68cce71402305a015f8c1589bfada1280dc64fe7",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -7208,7 +7269,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.3-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7218,7 +7279,10 @@
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Translation\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -7245,7 +7309,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.0.1"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.2.0"
},
"funding": [
{
@@ -7261,24 +7325,98 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-11-25T10:21:52+00:00"
+ },
+ {
+ "name": "symfony/uid",
+ "version": "v6.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/uid.git",
+ "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/8ace895bded57d6496638c9b2d3b788e05b7395b",
+ "reference": "8ace895bded57d6496638c9b2d3b788e05b7395b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v6.2.5"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-01-01T08:38:09+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.0.8",
+ "version": "v6.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0"
+ "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/fa61dfb4bd3068df2492013dc65f3190e9f550c0",
- "reference": "fa61dfb4bd3068df2492013dc65f3190e9f550c0",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/44b7b81749fd20c1bdf4946c041050e22bc8da27",
+ "reference": "44b7b81749fd20c1bdf4946c041050e22bc8da27",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
@@ -7333,7 +7471,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.0.8"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.2.5"
},
"funding": [
{
@@ -7349,29 +7487,29 @@
"type": "tidelift"
}
],
- "time": "2022-04-26T13:22:23+00:00"
+ "time": "2023-01-20T17:45:48+00:00"
},
{
"name": "team-reflex/discord-php",
- "version": "v7.0.9",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/discord-php/DiscordPHP.git",
- "reference": "78a71eed34fc4bd640a046d270270de97bc2f864"
+ "reference": "82843da4346878a432171f8d82e345389f7cc49b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/discord-php/DiscordPHP/zipball/78a71eed34fc4bd640a046d270270de97bc2f864",
- "reference": "78a71eed34fc4bd640a046d270270de97bc2f864",
+ "url": "https://api.github.com/repos/discord-php/DiscordPHP/zipball/82843da4346878a432171f8d82e345389f7cc49b",
+ "reference": "82843da4346878a432171f8d82e345389f7cc49b",
"shasum": ""
},
"require": {
- "discord-php/http": "^9.0.10",
+ "discord-php/http": "^9.0.12",
"discord/interactions": "^2.2",
"ext-json": "*",
"ext-zlib": "*",
"mollie/polyfill-libsodium": "^1.1",
- "monolog/monolog": "^2.1",
+ "monolog/monolog": "^2.1 || ^3.0",
"nesbot/carbon": "^2.38",
"php": "^7.4|^8.0",
"ratchet/pawl": "^0.4.1",
@@ -7379,7 +7517,7 @@
"react/datagram": "1.5.*",
"react/http": "^1.1",
"react/partial": "^3.0",
- "symfony/options-resolver": "^5.1.3",
+ "symfony/options-resolver": "^5.1.3 || ^6.0",
"trafficcophp/bytebuffer": "^0.3"
},
"require-dev": {
@@ -7389,6 +7527,7 @@
"symfony/var-dumper": "*"
},
"suggest": {
+ "clue/zlib-react": "For gateway message transport compression with zlib-stream.",
"ext-event": "For a faster, and more performant loop.",
"ext-gmp": "For Permissions and 64 bit calculations on x86 (32 bit) PHP.",
"ext-libev": "For a faster, and more performant loop.",
@@ -7417,22 +7556,22 @@
"description": "An unofficial API to interact with the voice and text service Discord.",
"support": {
"issues": "https://github.com/discord-php/DiscordPHP/issues",
- "source": "https://github.com/discord-php/DiscordPHP/tree/v7.0.9"
+ "source": "https://github.com/discord-php/DiscordPHP/tree/v7.3.4"
},
- "time": "2022-04-01T09:43:29+00:00"
+ "time": "2023-01-13T12:37:14+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
- "version": "2.2.4",
+ "version": "2.2.6",
"source": {
"type": "git",
"url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c"
+ "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c",
- "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c",
+ "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c",
+ "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c",
"shasum": ""
},
"require": {
@@ -7470,9 +7609,9 @@
"homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
"support": {
"issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4"
+ "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6"
},
- "time": "2021-12-08T09:12:39+00:00"
+ "time": "2023-01-03T09:29:04+00:00"
},
{
"name": "trafficcophp/bytebuffer",
@@ -7524,16 +7663,16 @@
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.4.1",
+ "version": "v5.5.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f"
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
"shasum": ""
},
"require": {
@@ -7548,15 +7687,19 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*",
- "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10"
+ "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
"branch-alias": {
- "dev-master": "5.4-dev"
+ "dev-master": "5.5-dev"
}
},
"autoload": {
@@ -7588,7 +7731,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
},
"funding": [
{
@@ -7600,7 +7743,7 @@
"type": "tidelift"
}
],
- "time": "2021-12-12T23:22:04+00:00"
+ "time": "2022-10-16T01:01:54+00:00"
},
{
"name": "voku/portable-ascii",
@@ -7678,21 +7821,21 @@
},
{
"name": "webmozart/assert",
- "version": "1.10.0",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
@@ -7730,9 +7873,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
},
- "time": "2021-03-09T10:59:23+00:00"
+ "time": "2022-06-03T18:03:27+00:00"
},
{
"name": "z3/enemizer_linux",
@@ -7747,30 +7890,30 @@
"packages-dev": [
{
"name": "doctrine/instantiator",
- "version": "1.4.1",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
- "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+ "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
+ "doctrine/coding-standard": "^11",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.16 || ^1",
- "phpstan/phpstan": "^1.4",
- "phpstan/phpstan-phpunit": "^1",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.22"
+ "phpbench/phpbench": "^1.2",
+ "phpstan/phpstan": "^1.9.4",
+ "phpstan/phpstan-phpunit": "^1.3",
+ "phpunit/phpunit": "^9.5.27",
+ "vimeo/psalm": "^5.4"
},
"type": "library",
"autoload": {
@@ -7797,7 +7940,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
+ "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
},
"funding": [
{
@@ -7813,24 +7956,24 @@
"type": "tidelift"
}
],
- "time": "2022-03-03T08:28:38+00:00"
+ "time": "2022-12-30T00:23:10+00:00"
},
{
"name": "fakerphp/faker",
- "version": "v1.19.0",
+ "version": "v1.21.0",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75"
+ "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75",
- "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d",
+ "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0",
+ "php": "^7.4 || ^8.0",
"psr/container": "^1.0 || ^2.0",
"symfony/deprecation-contracts": "^2.2 || ^3.0"
},
@@ -7841,7 +7984,8 @@
"bamarni/composer-bin-plugin": "^1.4.1",
"doctrine/persistence": "^1.3 || ^2.0",
"ext-intl": "*",
- "symfony/phpunit-bridge": "^4.4 || ^5.2"
+ "phpunit/phpunit": "^9.5.26",
+ "symfony/phpunit-bridge": "^5.4.16"
},
"suggest": {
"doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
@@ -7853,7 +7997,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "v1.19-dev"
+ "dev-main": "v1.21-dev"
}
},
"autoload": {
@@ -7878,22 +8022,22 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0"
},
- "time": "2022-02-02T17:38:57+00:00"
+ "time": "2022-12-13T13:54:32+00:00"
},
{
"name": "filp/whoops",
- "version": "2.14.5",
+ "version": "2.14.6",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc"
+ "reference": "f7948baaa0330277c729714910336383286305da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
- "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da",
+ "reference": "f7948baaa0330277c729714910336383286305da",
"shasum": ""
},
"require": {
@@ -7943,7 +8087,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.14.5"
+ "source": "https://github.com/filp/whoops/tree/2.14.6"
},
"funding": [
{
@@ -7951,7 +8095,7 @@
"type": "github"
}
],
- "time": "2022-01-07T12:00:00+00:00"
+ "time": "2022-11-02T16:23:29+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -8006,22 +8150,22 @@
},
{
"name": "laravel/sail",
- "version": "v1.14.1",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
- "reference": "9a7348dedfccc894718a21f71c09d669747e3f33"
+ "reference": "4f230634a3163f3442def6a4e6ffdb02b02e14d6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/9a7348dedfccc894718a21f71c09d669747e3f33",
- "reference": "9a7348dedfccc894718a21f71c09d669747e3f33",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/4f230634a3163f3442def6a4e6ffdb02b02e14d6",
+ "reference": "4f230634a3163f3442def6a4e6ffdb02b02e14d6",
"shasum": ""
},
"require": {
- "illuminate/console": "^8.0|^9.0",
- "illuminate/contracts": "^8.0|^9.0",
- "illuminate/support": "^8.0|^9.0",
+ "illuminate/console": "^8.0|^9.0|^10.0",
+ "illuminate/contracts": "^8.0|^9.0|^10.0",
+ "illuminate/support": "^8.0|^9.0|^10.0",
"php": "^7.3|^8.0"
},
"bin": [
@@ -8062,20 +8206,20 @@
"issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail"
},
- "time": "2022-05-02T13:58:40+00:00"
+ "time": "2023-01-31T13:37:57+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.5.0",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac"
+ "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
- "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
+ "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e",
"shasum": ""
},
"require": {
@@ -8132,9 +8276,9 @@
],
"support": {
"issues": "https://github.com/mockery/mockery/issues",
- "source": "https://github.com/mockery/mockery/tree/1.5.0"
+ "source": "https://github.com/mockery/mockery/tree/1.5.1"
},
- "time": "2022-01-20T13:18:17+00:00"
+ "time": "2022-09-07T15:32:08+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -8197,31 +8341,32 @@
},
{
"name": "nunomaduro/collision",
- "version": "v6.2.0",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25"
+ "reference": "f05978827b9343cba381ca05b8c7deee346b6015"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/c379636dc50e829edb3a8bcb944a01aa1aed8f25",
- "reference": "c379636dc50e829edb3a8bcb944a01aa1aed8f25",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015",
+ "reference": "f05978827b9343cba381ca05b8c7deee346b6015",
"shasum": ""
},
"require": {
- "facade/ignition-contracts": "^1.0.2",
"filp/whoops": "^2.14.5",
"php": "^8.0.0",
"symfony/console": "^6.0.2"
},
"require-dev": {
"brianium/paratest": "^6.4.1",
- "laravel/framework": "^9.7",
- "nunomaduro/larastan": "^1.0.2",
+ "laravel/framework": "^9.26.1",
+ "laravel/pint": "^1.1.1",
+ "nunomaduro/larastan": "^1.0.3",
"nunomaduro/mock-final-classes": "^1.1.0",
- "orchestra/testbench": "^7.3.0",
- "phpunit/phpunit": "^9.5.11"
+ "orchestra/testbench": "^7.7",
+ "phpunit/phpunit": "^9.5.23",
+ "spatie/ignition": "^1.4.1"
},
"type": "library",
"extra": {
@@ -8280,7 +8425,7 @@
"type": "patreon"
}
],
- "time": "2022-04-05T15:31:38+00:00"
+ "time": "2023-01-03T12:54:54+00:00"
},
{
"name": "phar-io/manifest",
@@ -8393,252 +8538,25 @@
},
"time": "2022-02-21T01:04:05+00:00"
},
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
- },
- "time": "2020-06-27T09:03:43+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
- },
- "time": "2021-10-19T17:43:47+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "77a32518733312af16a44300404e945338981de3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
- "reference": "77a32518733312af16a44300404e945338981de3",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*",
- "psalm/phar": "^4.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "support": {
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
- },
- "time": "2022-03-15T21:29:03+00:00"
- },
- {
- "name": "phpspec/prophecy",
- "version": "v1.15.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "shasum": ""
- },
- "require": {
- "doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.2",
- "phpdocumentor/reflection-docblock": "^5.2",
- "sebastian/comparator": "^3.0 || ^4.0",
- "sebastian/recursion-context": "^3.0 || ^4.0"
- },
- "require-dev": {
- "phpspec/phpspec": "^6.0 || ^7.0",
- "phpunit/phpunit": "^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
- },
- {
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
- }
- ],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "support": {
- "issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
- },
- "time": "2021-12-08T12:19:24+00:00"
- },
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.15",
+ "version": "9.2.24",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+ "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
- "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2cf940ebc6355a9d430462811b5aaa308b174bed",
+ "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.13.0",
+ "nikic/php-parser": "^4.14",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -8687,7 +8605,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.24"
},
"funding": [
{
@@ -8695,7 +8613,7 @@
"type": "github"
}
],
- "time": "2022-03-07T09:28:20+00:00"
+ "time": "2023-01-26T08:26:55+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -8940,20 +8858,20 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.20",
+ "version": "9.5.28",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
+ "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
- "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e",
+ "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1",
+ "doctrine/instantiator": "^1.3.1 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -8964,7 +8882,6 @@
"phar-io/manifest": "^2.0.3",
"phar-io/version": "^3.0.2",
"php": ">=7.3",
- "phpspec/prophecy": "^1.12.1",
"phpunit/php-code-coverage": "^9.2.13",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
@@ -8972,20 +8889,16 @@
"phpunit/php-timer": "^5.0.2",
"sebastian/cli-parser": "^1.0.1",
"sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
+ "sebastian/comparator": "^4.0.8",
"sebastian/diff": "^4.0.3",
"sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
+ "sebastian/exporter": "^4.0.5",
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^3.0",
+ "sebastian/type": "^3.2",
"sebastian/version": "^3.0.2"
},
- "require-dev": {
- "ext-pdo": "*",
- "phpspec/prophecy-phpunit": "^2.0.1"
- },
"suggest": {
"ext-soap": "*",
"ext-xdebug": "*"
@@ -9027,7 +8940,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28"
},
"funding": [
{
@@ -9037,9 +8950,13 @@
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
}
],
- "time": "2022-04-01T12:37:26+00:00"
+ "time": "2023-01-14T12:32:24+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -9210,16 +9127,16 @@
},
{
"name": "sebastian/comparator",
- "version": "4.0.6",
+ "version": "4.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
- "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+ "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
"shasum": ""
},
"require": {
@@ -9272,7 +9189,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
},
"funding": [
{
@@ -9280,7 +9197,7 @@
"type": "github"
}
],
- "time": "2020-10-26T15:49:45+00:00"
+ "time": "2022-09-14T12:41:17+00:00"
},
{
"name": "sebastian/complexity",
@@ -9470,16 +9387,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.4",
+ "version": "4.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
- "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
"shasum": ""
},
"require": {
@@ -9535,7 +9452,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
},
"funding": [
{
@@ -9543,7 +9460,7 @@
"type": "github"
}
],
- "time": "2021-11-11T14:18:36+00:00"
+ "time": "2022-09-14T06:03:37+00:00"
},
{
"name": "sebastian/global-state",
@@ -9898,16 +9815,16 @@
},
{
"name": "sebastian/type",
- "version": "3.0.0",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
- "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+ "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
"shasum": ""
},
"require": {
@@ -9919,7 +9836,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -9942,7 +9859,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
+ "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
},
"funding": [
{
@@ -9950,7 +9867,7 @@
"type": "github"
}
],
- "time": "2022-03-15T09:54:48+00:00"
+ "time": "2022-09-12T14:47:03+00:00"
},
{
"name": "sebastian/version",
@@ -10069,20 +9986,20 @@
},
{
"name": "spatie/flare-client-php",
- "version": "1.1.0",
+ "version": "1.3.5",
"source": {
"type": "git",
"url": "https://github.com/spatie/flare-client-php.git",
- "reference": "ceab058852a1278d9f57a7b95f1c348e4956d866"
+ "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/ceab058852a1278d9f57a7b95f1c348e4956d866",
- "reference": "ceab058852a1278d9f57a7b95f1c348e4956d866",
+ "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42",
+ "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42",
"shasum": ""
},
"require": {
- "illuminate/pipeline": "^8.0|^9.0",
+ "illuminate/pipeline": "^8.0|^9.0|^10.0",
"php": "^8.0",
"spatie/backtrace": "^1.2",
"symfony/http-foundation": "^5.0|^6.0",
@@ -10099,6 +10016,11 @@
"spatie/phpunit-snapshot-assertions": "^4.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.1.x-dev"
+ }
+ },
"autoload": {
"files": [
"src/helpers.php"
@@ -10121,7 +10043,7 @@
],
"support": {
"issues": "https://github.com/spatie/flare-client-php/issues",
- "source": "https://github.com/spatie/flare-client-php/tree/1.1.0"
+ "source": "https://github.com/spatie/flare-client-php/tree/1.3.5"
},
"funding": [
{
@@ -10129,26 +10051,25 @@
"type": "github"
}
],
- "time": "2022-03-11T13:21:28+00:00"
+ "time": "2023-01-23T15:58:46+00:00"
},
{
"name": "spatie/ignition",
- "version": "1.2.9",
+ "version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/spatie/ignition.git",
- "reference": "db25202fab2d5c14613b8914a1bb374998bbf870"
+ "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/ignition/zipball/db25202fab2d5c14613b8914a1bb374998bbf870",
- "reference": "db25202fab2d5c14613b8914a1bb374998bbf870",
+ "url": "https://api.github.com/repos/spatie/ignition/zipball/2cf3833220cfe8fcf639544f8d7067b6469a00b0",
+ "reference": "2cf3833220cfe8fcf639544f8d7067b6469a00b0",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
- "monolog/monolog": "^2.0",
"php": "^8.0",
"spatie/flare-client-php": "^1.1",
"symfony/console": "^5.4|^6.0",
@@ -10163,6 +10084,11 @@
"symfony/process": "^5.4|^6.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.2.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Spatie\\Ignition\\": "src"
@@ -10199,31 +10125,31 @@
"type": "github"
}
],
- "time": "2022-04-23T20:37:21+00:00"
+ "time": "2023-01-23T15:28:32+00:00"
},
{
"name": "spatie/laravel-ignition",
- "version": "1.2.2",
+ "version": "1.6.4",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-ignition.git",
- "reference": "924d1ae878874ad0bb49f63b69a9af759a34ee78"
+ "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/924d1ae878874ad0bb49f63b69a9af759a34ee78",
- "reference": "924d1ae878874ad0bb49f63b69a9af759a34ee78",
+ "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc",
+ "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc",
"shasum": ""
},
"require": {
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
- "illuminate/support": "^8.77|^9.0",
+ "illuminate/support": "^8.77|^9.27",
"monolog/monolog": "^2.3",
"php": "^8.0",
"spatie/flare-client-php": "^1.0.1",
- "spatie/ignition": "^1.2.4",
+ "spatie/ignition": "^1.4.1",
"symfony/console": "^5.0|^6.0",
"symfony/var-dumper": "^5.0|^6.0"
},
@@ -10289,7 +10215,7 @@
"type": "github"
}
],
- "time": "2022-04-14T18:04:51+00:00"
+ "time": "2023-01-03T19:28:04+00:00"
},
{
"name": "theseer/tokenizer",
--
2.39.2
From f17b9f3b6f7f9e678c681c719eea6fb5c41a387f Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sat, 4 Feb 2023 14:12:12 +0100
Subject: [PATCH 09/16] basic map pins
---
app/Http/Controllers/TechniqueController.php | 7 +++
app/Models/TechniqueMap.php | 21 +++++++
.../2023_02_01_153251_technique_map.php | 35 ++++++++++++
resources/js/components/common/Icon.js | 1 +
resources/js/components/map/Buttons.js | 45 ++++-----------
resources/js/components/map/OpenSeadragon.js | 36 +++++++++++-
resources/js/components/map/Overlay.js | 37 +++++++++++++
resources/js/components/map/Pin.js | 55 +++++++++++++++++++
resources/js/components/map/Pins.js | 14 +++++
resources/js/components/map/Popover.js | 54 ++++++++++++++++++
resources/js/components/pages/Map.js | 2 +
resources/sass/app.scss | 1 +
resources/sass/map.scss | 18 ++++++
routes/api.php | 2 +
14 files changed, 294 insertions(+), 34 deletions(-)
create mode 100644 app/Models/TechniqueMap.php
create mode 100644 database/migrations/2023_02_01_153251_technique_map.php
create mode 100644 resources/js/components/map/Overlay.js
create mode 100644 resources/js/components/map/Pin.js
create mode 100644 resources/js/components/map/Pins.js
create mode 100644 resources/js/components/map/Popover.js
create mode 100644 resources/sass/map.scss
diff --git a/app/Http/Controllers/TechniqueController.php b/app/Http/Controllers/TechniqueController.php
index 8694c04..b27465e 100644
--- a/app/Http/Controllers/TechniqueController.php
+++ b/app/Http/Controllers/TechniqueController.php
@@ -3,12 +3,19 @@
namespace App\Http\Controllers;
use App\Models\Technique;
+use App\Models\TechniqueMap;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
class TechniqueController extends Controller
{
+ public function forMap($map) {
+ $techs = TechniqueMap::with(['technique', 'technique.relations'])->where('map', '=', $map);
+
+ return $techs->get()->toJson();
+ }
+
public function search(Request $request) {
$validatedData = $request->validate([
'phrase' => 'string|nullable',
diff --git a/app/Models/TechniqueMap.php b/app/Models/TechniqueMap.php
new file mode 100644
index 0000000..d19a005
--- /dev/null
+++ b/app/Models/TechniqueMap.php
@@ -0,0 +1,21 @@
+belongsTo(Technique::class);
+ }
+
+ protected $hidden = [
+ 'created_at',
+ 'updated_at',
+ ];
+
+}
diff --git a/database/migrations/2023_02_01_153251_technique_map.php b/database/migrations/2023_02_01_153251_technique_map.php
new file mode 100644
index 0000000..42e9230
--- /dev/null
+++ b/database/migrations/2023_02_01_153251_technique_map.php
@@ -0,0 +1,35 @@
+id();
+ $table->foreignId('technique_id')->constrained();
+ $table->string('map');
+ $table->double('x');
+ $table->double('y');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('technique_maps');
+ }
+};
diff --git a/resources/js/components/common/Icon.js b/resources/js/components/common/Icon.js
index bce75f5..c9d604a 100644
--- a/resources/js/components/common/Icon.js
+++ b/resources/js/components/common/Icon.js
@@ -73,6 +73,7 @@ Icon.LANGUAGE = makePreset('LanguageIcon', 'language');
Icon.LOCKED = makePreset('LockedIcon', 'lock');
Icon.LOGOUT = makePreset('LogoutIcon', 'sign-out-alt');
Icon.PENDING = makePreset('PendingIcon', 'clock');
+Icon.PIN = makePreset('PinIcon', 'location-pin');
Icon.PROTOCOL = makePreset('ProtocolIcon', 'file-alt');
Icon.REJECT = makePreset('RejectIcon', 'square-xmark');
Icon.REMOVE = makePreset('RemoveIcon', 'square-xmark');
diff --git a/resources/js/components/map/Buttons.js b/resources/js/components/map/Buttons.js
index b43fc0e..fdffe92 100644
--- a/resources/js/components/map/Buttons.js
+++ b/resources/js/components/map/Buttons.js
@@ -5,42 +5,21 @@ import { useTranslation } from 'react-i18next';
import { useOpenSeadragon } from './OpenSeadragon';
const Buttons = () => {
- const { viewer } = useOpenSeadragon();
+ const { activeMap, setActiveMap } = useOpenSeadragon();
const { t } = useTranslation();
- const goToPage = React.useCallback((p) => {
- if (viewer) viewer.goToPage(p);
- }, [viewer]);
-
return
-
-
-
-
+ {['lw', 'dw', 'sp', 'uw'].map(map =>
+
+ )}
;
};
diff --git a/resources/js/components/map/OpenSeadragon.js b/resources/js/components/map/OpenSeadragon.js
index f854318..b6158a5 100644
--- a/resources/js/components/map/OpenSeadragon.js
+++ b/resources/js/components/map/OpenSeadragon.js
@@ -1,3 +1,4 @@
+import axios from 'axios';
import OpenSeadragon from 'openseadragon';
import PropTypes from 'prop-types';
import React from 'react';
@@ -7,6 +8,8 @@ export const Context = React.createContext({});
export const useOpenSeadragon = () => React.useContext(Context);
export const Provider = React.forwardRef(({ children }, ref) => {
+ const [activeMap, setActiveMap] = React.useState('lw');
+ const [pins, setPins] = React.useState([]);
const [viewer, setViewer] = React.useState(null);
React.useEffect(() => {
@@ -65,7 +68,38 @@ export const Provider = React.forwardRef(({ children }, ref) => {
};
}, [ref.current]);
- return
+ React.useEffect(() => {
+ if (!viewer) return;
+ switch (activeMap) {
+ case 'lw':
+ viewer.goToPage(0);
+ break;
+ case 'dw':
+ viewer.goToPage(1);
+ break;
+ case 'sp':
+ viewer.goToPage(2);
+ break;
+ case 'uw':
+ viewer.goToPage(3);
+ break;
+ }
+ const controller = new AbortController();
+ axios.get(`/api/markers/${activeMap}`, {
+ signal: controller.signal,
+ }).then(response => {
+ setPins(response.data || []);
+ }).catch(e => {
+ if (!axios.isCancel(e)) {
+ console.error(e);
+ }
+ });
+ return () => {
+ controller.abort();
+ };
+ }, [activeMap, viewer]);
+
+ return
{children}
;
});
diff --git a/resources/js/components/map/Overlay.js b/resources/js/components/map/Overlay.js
new file mode 100644
index 0000000..4068bea
--- /dev/null
+++ b/resources/js/components/map/Overlay.js
@@ -0,0 +1,37 @@
+import OpenSeadragon from 'openseadragon';
+import PropTypes from 'prop-types';
+import React from 'react';
+import { createPortal } from 'react-dom';
+
+import { useOpenSeadragon } from './OpenSeadragon';
+
+const Overlay = ({ children, onClick, x, y }) => {
+ const { viewer } = useOpenSeadragon();
+ const [element] = React.useState(document.createElement('div'));
+
+ React.useEffect(() => {
+ if (!viewer) return;
+ viewer.addOverlay(
+ element,
+ new OpenSeadragon.Point(x, y),
+ OpenSeadragon.Placement.CENTER,
+ );
+ if (onClick) {
+ new OpenSeadragon.MouseTracker({
+ element,
+ clickHandler: onClick,
+ });
+ }
+ }, [onClick, viewer, x, y]);
+
+ return createPortal(children, element);
+};
+
+Overlay.propTypes = {
+ children: PropTypes.node,
+ onClick: PropTypes.func,
+ x: PropTypes.number,
+ y: PropTypes.number,
+};
+
+export default Overlay;
diff --git a/resources/js/components/map/Pin.js b/resources/js/components/map/Pin.js
new file mode 100644
index 0000000..69b6d77
--- /dev/null
+++ b/resources/js/components/map/Pin.js
@@ -0,0 +1,55 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+import { Link, useNavigate } from 'react-router-dom';
+
+import Overlay from './Overlay';
+import Popover from './Popover';
+import Icon from '../common/Icon';
+import { getLink, getTranslation } from '../../helpers/Technique';
+import i18n from '../../i18n';
+
+const Pin = ({ pin }) => {
+ const [showPopover, setShowPopover] = React.useState(false);
+ const ref = React.useRef();
+
+ const navigate = useNavigate();
+
+ const onClick = React.useCallback((e) => {
+ if (ref.current && ref.current.contains(e.originalTarget)) {
+ if (e.originalTarget.tagName === 'A') {
+ navigate(new URL(e.originalTarget.href).pathname);
+ }
+ } else {
+ if (pin.technique.type === 'location') {
+ setShowPopover(s => !s);
+ } else {
+ navigate(getLink(pin.technique));
+ }
+ }
+ }, [pin]);
+
+ return
+
+
+
+
+ {pin.technique.type === 'location' ?
+
+ : null}
+
+ ;
+};
+
+Pin.propTypes = {
+ pin: PropTypes.shape({
+ technique: PropTypes.shape({
+ type: PropTypes.string,
+ }),
+ x: PropTypes.number,
+ y: PropTypes.number,
+ }),
+};
+
+export default Pin;
diff --git a/resources/js/components/map/Pins.js b/resources/js/components/map/Pins.js
new file mode 100644
index 0000000..8b37ee9
--- /dev/null
+++ b/resources/js/components/map/Pins.js
@@ -0,0 +1,14 @@
+import React from 'react';
+
+import { useOpenSeadragon } from './OpenSeadragon';
+import Pin from './Pin';
+
+const Pins = () => {
+ const { pins } = useOpenSeadragon();
+
+ return pins.map(pin =>
+
+ );
+};
+
+export default Pins;
diff --git a/resources/js/components/map/Popover.js b/resources/js/components/map/Popover.js
new file mode 100644
index 0000000..02d4070
--- /dev/null
+++ b/resources/js/components/map/Popover.js
@@ -0,0 +1,54 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+import { Card, ListGroup } from 'react-bootstrap';
+import { Link } from 'react-router-dom';
+
+import {
+ getLink,
+ getRelations,
+ getTranslation,
+ hasRelations,
+ sorted,
+} from '../../helpers/Technique';
+import i18n from '../../i18n';
+
+const Popover = ({ show, technique }) =>
+
+
+
+
+ {getTranslation(technique, 'title', i18n.language)}
+
+
+ {technique.short ?
+
+
+ {getTranslation(technique, 'short', i18n.language)}
+
+
+ : null}
+ {hasRelations(technique, 'related') ?
+
+ {sorted(getRelations(technique, 'related')).map(r =>
+
+
+ {getTranslation(r, 'title', i18n.language)}
+
+
+ )}
+
+ : null}
+
+
;
+
+Popover.propTypes = {
+ show: PropTypes.bool,
+ technique: PropTypes.shape({
+ short: PropTypes.string,
+ }),
+};
+
+export default Popover;
diff --git a/resources/js/components/pages/Map.js b/resources/js/components/pages/Map.js
index 50a28fb..d8a1039 100644
--- a/resources/js/components/pages/Map.js
+++ b/resources/js/components/pages/Map.js
@@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next';
import Buttons from '../map/Buttons';
import OpenSeadragon from '../map/OpenSeadragon';
+import Pins from '../map/Pins';
const Map = () => {
const container = React.useRef();
@@ -16,6 +17,7 @@ const Map = () => {
+
;
};
diff --git a/resources/sass/app.scss b/resources/sass/app.scss
index d050607..90af358 100644
--- a/resources/sass/app.scss
+++ b/resources/sass/app.scss
@@ -15,6 +15,7 @@
@import 'discord';
@import 'form';
@import 'front';
+@import 'map';
@import 'participants';
@import 'results';
@import 'rounds';
diff --git a/resources/sass/map.scss b/resources/sass/map.scss
new file mode 100644
index 0000000..95d645a
--- /dev/null
+++ b/resources/sass/map.scss
@@ -0,0 +1,18 @@
+.map-pin {
+ path {
+ fill: red;
+ stroke: black;
+ stroke-width: 2px;
+ vector-effect: non-scaling-stroke;
+ }
+}
+
+.map-popover {
+ position: absolute;
+ width: 40vw;
+ min-width: 20em;
+
+ &.hidden {
+ display: none;
+ }
+}
diff --git a/routes/api.php b/routes/api.php
index 4ec1bb1..4c1d8ab 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -36,6 +36,8 @@ Route::get('discord-guilds', 'App\Http\Controllers\DiscordGuildController@search
Route::get('discord-guilds/{guild_id}', 'App\Http\Controllers\DiscordGuildController@single');
Route::get('discord-guilds/{guild_id}/channels', 'App\Http\Controllers\DiscordChannelController@search');
+Route::get('markers/{map}', 'App\Http\Controllers\TechniqueController@forMap');
+
Route::get('protocol/{tournament}', 'App\Http\Controllers\ProtocolController@forTournament');
Route::post('results', 'App\Http\Controllers\ResultController@create');
--
2.39.2
From 5d62356b37c464f6fb91deb7beb62347fd9cdd9c Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sun, 5 Feb 2023 17:47:43 +0100
Subject: [PATCH 10/16] link tech and map
---
resources/js/components/common/Footer.js | 9 ++++++-
resources/js/components/common/Header.js | 33 +++++++++++++++++-------
resources/js/i18n/de.js | 6 +++++
resources/js/i18n/en.js | 6 +++++
4 files changed, 43 insertions(+), 11 deletions(-)
diff --git a/resources/js/components/common/Footer.js b/resources/js/components/common/Footer.js
index 0ded211..361c1f7 100644
--- a/resources/js/components/common/Footer.js
+++ b/resources/js/components/common/Footer.js
@@ -46,7 +46,14 @@ const Footer = () => {
- ALttP Tech Index
+ {t('footer.tech')}
+
+
+
+
+
+
+ {t('footer.map')}
diff --git a/resources/js/components/common/Header.js b/resources/js/components/common/Header.js
index 6868477..1bb2ce1 100644
--- a/resources/js/components/common/Header.js
+++ b/resources/js/components/common/Header.js
@@ -2,16 +2,17 @@ import PropTypes from 'prop-types';
import React from 'react';
import { Button, Container, Nav, Navbar } from 'react-bootstrap';
import { LinkContainer } from 'react-router-bootstrap';
-import { withTranslation } from 'react-i18next';
+import { useTranslation } from 'react-i18next';
import Icon from './Icon';
import LanguageSwitcher from './LanguageSwitcher';
import { getAvatarUrl } from '../../helpers/User';
import { withUser } from '../../helpers/UserContext';
-import i18n from '../../i18n';
-const Header = ({ doLogout, user }) =>
- ;
+};
Header.propTypes = {
doLogout: PropTypes.func,
@@ -81,4 +94,4 @@ Header.propTypes = {
}),
};
-export default withTranslation()(withUser(Header));
+export default withUser(Header);
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index f4b73e5..0f7c8ff 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -283,10 +283,12 @@ export default {
connect: 'Connect Spedruns Discord',
contact: 'Wenn du gerne ein Turnier auf dieser Seite organisieren möchtest, wende dich bitte an HolySmoke#5229 im Discord.',
info: 'Infos',
+ map: 'ALttP Karte',
privacy: 'Datenschutz',
resources: 'Ressourcen',
smd: 'Deutscher Super Metroid Discord',
smwiki: 'Super Metroid Speedrunning Wiki',
+ tech: 'ALttP Techniken',
},
general: {
anonymous: 'Anonym',
@@ -385,6 +387,10 @@ export default {
uwLong: 'Underworld',
uwShort: 'UW',
},
+ menu: {
+ map: 'Karte',
+ tech: 'Techniken',
+ },
modes: {
heading: 'Modi',
},
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index 6498b85..7414796 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -283,10 +283,12 @@ export default {
connect: 'Connect Spedruns Discord',
contact: 'If you would like to organize a Tournament on this site, please contact HolySmoke#5229 on Discord.',
info: 'Infos',
+ map: 'ALttP Map',
privacy: 'Privacy',
resources: 'Resources',
smd: 'German Super Metroid Discord',
smwiki: 'Super Metroid Speedrunning Wiki',
+ tech: 'ALttP Tech',
},
general: {
anonymous: 'Anonym',
@@ -385,6 +387,10 @@ export default {
uwLong: 'Underworld',
uwShort: 'UW',
},
+ menu: {
+ map: 'Map',
+ tech: 'Tech',
+ },
modes: {
heading: 'Modes',
},
--
2.39.2
From cb6e69664f917891230a511608ceb568a5c176a0 Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sun, 5 Feb 2023 18:08:01 +0100
Subject: [PATCH 11/16] set window title from map
---
resources/js/components/pages/Map.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/resources/js/components/pages/Map.js b/resources/js/components/pages/Map.js
index d8a1039..44ac0a0 100644
--- a/resources/js/components/pages/Map.js
+++ b/resources/js/components/pages/Map.js
@@ -10,6 +10,10 @@ const Map = () => {
const container = React.useRef();
const { t } = useTranslation();
+ React.useEffect(() => {
+ window.document.title = t('map.heading');
+ }, []);
+
return
--
2.39.2
From 5dfd6a1dbe115dfd01bd487181e1ce056d0ee82b Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Sun, 5 Feb 2023 18:12:15 +0100
Subject: [PATCH 12/16] map in sitemap
---
app/Http/Controllers/SitemapXmlController.php | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/app/Http/Controllers/SitemapXmlController.php b/app/Http/Controllers/SitemapXmlController.php
index daa3699..99e9092 100644
--- a/app/Http/Controllers/SitemapXmlController.php
+++ b/app/Http/Controllers/SitemapXmlController.php
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Models\SitemapUrl;
use App\Models\Technique;
+use App\Models\TechniqueMap;
use App\Models\Tournament;
use Illuminate\Http\Request;
@@ -22,11 +23,18 @@ class SitemapXmlController extends Controller
$urls[] = $url;
}
+ $url = new SitemapUrl();
+ $url->path = '/map';
+ $url->lastmod = TechniqueMap::latest()->first()->created_at;
+ $url->changefreq = 'monthly';
+ $url->priority = 0.9;
+ $urls[] = $url;
+
$url = new SitemapUrl();
$url->path = '/tech';
$url->lastmod = Technique::where('type', '=', 'tech')->where('index', true)->latest()->first()->created_at;
$url->changefreq = 'monthly';
- $url->priority = 0.5;
+ $url->priority = 0.8;
$urls[] = $url;
foreach (Technique::where('type', '=', 'tech')->where('index', true)->get() as $tech) {
--
2.39.2
From e937f3f41b33ba94d36f898573df75a9cd10e5c0 Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Mon, 6 Feb 2023 13:04:17 +0100
Subject: [PATCH 13/16] list items shown on map
---
resources/js/components/common/Icon.js | 1 +
resources/js/components/map/Item.js | 94 ++++++++++++++++++++++
resources/js/components/map/List.js | 31 +++++++
resources/js/components/pages/Map.js | 2 +
resources/js/components/techniques/List.js | 6 +-
resources/js/i18n/de.js | 2 +
resources/js/i18n/en.js | 2 +
resources/sass/map.scss | 16 ++++
8 files changed, 151 insertions(+), 3 deletions(-)
create mode 100644 resources/js/components/map/Item.js
create mode 100644 resources/js/components/map/List.js
diff --git a/resources/js/components/common/Icon.js b/resources/js/components/common/Icon.js
index c9d604a..3e094cc 100644
--- a/resources/js/components/common/Icon.js
+++ b/resources/js/components/common/Icon.js
@@ -63,6 +63,7 @@ Icon.ALLOWED = makePreset('AllowedIcon', 'square-check');
Icon.APPLY = makePreset('ApplyIcon', 'right-to-bracket');
Icon.APPLICATIONS = makePreset('ApplicationsIcon', 'person-running');
Icon.CHART = makePreset('ChartIcon', 'chart-line');
+Icon.CROSSHAIRS = makePreset('CrosshairsIcon', 'crosshairs');
Icon.DISCORD = makePreset('DiscordIcon', ['fab', 'discord']);
Icon.EDIT = makePreset('EditIcon', 'edit');
Icon.FINISHED = makePreset('FinishedIcon', 'square-check');
diff --git a/resources/js/components/map/Item.js b/resources/js/components/map/Item.js
new file mode 100644
index 0000000..4bd209a
--- /dev/null
+++ b/resources/js/components/map/Item.js
@@ -0,0 +1,94 @@
+import OpenSeadragon from 'openseadragon';
+import PropTypes from 'prop-types';
+import React from 'react';
+import { Button } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+import { Link } from 'react-router-dom';
+
+import { useOpenSeadragon } from './OpenSeadragon';
+import Icon from '../common/Icon';
+import Rulesets from '../techniques/Rulesets';
+import {
+ getLink,
+ getRelations,
+ getTranslation,
+ hasRelations,
+ sorted,
+} from '../../helpers/Technique';
+import i18n from '../../i18n';
+
+const Item = ({ pin }) => {
+ const { viewer } = useOpenSeadragon();
+ const { t } = useTranslation();
+
+ const goToLocation = React.useCallback(pin => {
+ if (viewer && viewer.viewport) {
+ viewer.viewport.panTo(new OpenSeadragon.Point(pin.x, pin.y));
+ viewer.viewport.zoomTo(4);
+ viewer.element.scrollIntoView();
+ }
+ }, [viewer]);
+
+ return
+
+ {pin.technique.type === 'location' ? <>
+
{getTranslation(pin.technique, 'title', i18n.language)}
+
{getTranslation(pin.technique, 'short', i18n.language)}
+ {hasRelations(pin.technique, 'related') ?
+ sorted(getRelations(pin.technique, 'related')).map(r =>
+
+
+
+
+ {getTranslation(r, 'title', i18n.language)}
+
+
+
{getTranslation(r, 'short', i18n.language)}
+
+ {r.rulesets ?
+
+ : null}
+
+ )
+ : null}
+ > :
+
+
+
+ {getTranslation(pin.technique, 'title', i18n.language)}
+
+
+
{getTranslation(pin.technique, 'short', i18n.language)}
+
+ {pin.technique.rulesets ?
+
+ : null}
+
}
+
+
+ ;
+};
+
+Item.propTypes = {
+ pin: PropTypes.shape({
+ technique: PropTypes.shape({
+ rulesets: PropTypes.shape({
+ }),
+ type: PropTypes.string,
+ }),
+ x: PropTypes.number,
+ y: PropTypes.number,
+ }),
+};
+
+export default Item;
diff --git a/resources/js/components/map/List.js b/resources/js/components/map/List.js
new file mode 100644
index 0000000..7b66630
--- /dev/null
+++ b/resources/js/components/map/List.js
@@ -0,0 +1,31 @@
+import React from 'react';
+import { Container } from 'react-bootstrap';
+import { useTranslation } from 'react-i18next';
+
+import Item from './Item';
+import { useOpenSeadragon } from './OpenSeadragon';
+import { compareTranslation } from '../../helpers/Technique';
+import i18n from '../../i18n';
+
+const List = () => {
+ const { pins } = useOpenSeadragon();
+ const { t } = useTranslation();
+
+ const sortedPins = React.useMemo(() => {
+ const compare = compareTranslation('title', i18n.language);
+ return pins.sort((a, b) => compare(a.technique, b.technique));
+ }, [pins, i18n.language]);
+
+ if (!pins || !pins.length) return null;
+
+ return
+ {t('map.onThisMap')}
+
+ {sortedPins.map(pin =>
+
+ )}
+
+ ;
+};
+
+export default List;
diff --git a/resources/js/components/pages/Map.js b/resources/js/components/pages/Map.js
index 44ac0a0..841227c 100644
--- a/resources/js/components/pages/Map.js
+++ b/resources/js/components/pages/Map.js
@@ -3,6 +3,7 @@ import { Container } from 'react-bootstrap';
import { useTranslation } from 'react-i18next';
import Buttons from '../map/Buttons';
+import List from '../map/List';
import OpenSeadragon from '../map/OpenSeadragon';
import Pins from '../map/Pins';
@@ -22,6 +23,7 @@ const Map = () => {
+
;
};
diff --git a/resources/js/components/techniques/List.js b/resources/js/components/techniques/List.js
index e18937e..aa80836 100644
--- a/resources/js/components/techniques/List.js
+++ b/resources/js/components/techniques/List.js
@@ -20,9 +20,9 @@ const List = ({ techniques }) =>
{getTranslation(tech, 'short', i18n.language)}
- {tech.rulesets ?
-
- : null}
+ {tech.rulesets ?
+
+ : null}
)}
;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index 0f7c8ff..02adc9d 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -379,9 +379,11 @@ export default {
map: {
dwLong: 'Dark World',
dwShort: 'DW',
+ goToLocation: 'Zur Stelle springen',
heading: 'Karte',
lwLong: 'Light World',
lwShort: 'LW',
+ onThisMap: 'Auf dieser Karte',
spLong: 'Spezielle Gebiete',
spShort: 'SP',
uwLong: 'Underworld',
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index 7414796..efb99b3 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -379,9 +379,11 @@ export default {
map: {
dwLong: 'Dark World',
dwShort: 'DW',
+ goToLocation: 'Go to location',
heading: 'Map',
lwLong: 'Light World',
lwShort: 'LW',
+ onThisMap: 'On this map',
spLong: 'Special Areas',
spShort: 'SP',
uwLong: 'Underworld',
diff --git a/resources/sass/map.scss b/resources/sass/map.scss
index 95d645a..599cd15 100644
--- a/resources/sass/map.scss
+++ b/resources/sass/map.scss
@@ -16,3 +16,19 @@
display: none;
}
}
+
+.pin-list {
+ margin: 1em 0;
+ padding: 0;
+ list-style: none;
+
+ li {
+ margin: 1ex 0;
+ padding: 1ex;
+ border-top: thin solid silver;
+ }
+
+ h2 > a, h3 > a {
+ text-decoration: none;
+ }
+}
--
2.39.2
From f1c8c3cc53a09d1c261875d2f482b6e19bc48a9a Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Mon, 6 Feb 2023 15:49:52 +0100
Subject: [PATCH 14/16] tech attribution & requirements
---
app/Models/Technique.php | 1 +
...02_06_124402_more_technique_properties.php | 40 +++++++++++++++++++
resources/js/components/common/Icon.js | 1 +
resources/js/components/common/ZeldaIcon.js | 34 +++++++++++-----
resources/js/components/techniques/Detail.js | 9 ++++-
.../js/components/techniques/Requirement.js | 17 ++++++++
.../js/components/techniques/Requirements.js | 34 ++++++++++++++++
resources/js/i18n/de.js | 4 ++
resources/js/i18n/en.js | 4 ++
resources/sass/common.scss | 24 +++++++++++
resources/sass/map.scss | 2 +-
resources/sass/techniques.scss | 27 +++++++++++++
12 files changed, 184 insertions(+), 13 deletions(-)
create mode 100644 database/migrations/2023_02_06_124402_more_technique_properties.php
create mode 100644 resources/js/components/techniques/Requirement.js
create mode 100644 resources/js/components/techniques/Requirements.js
diff --git a/app/Models/Technique.php b/app/Models/Technique.php
index c8ad91b..4469671 100644
--- a/app/Models/Technique.php
+++ b/app/Models/Technique.php
@@ -30,6 +30,7 @@ class Technique extends Model
protected $casts = [
'index' => 'boolean',
+ 'requirements' => 'array',
'rulesets' => 'array',
];
diff --git a/database/migrations/2023_02_06_124402_more_technique_properties.php b/database/migrations/2023_02_06_124402_more_technique_properties.php
new file mode 100644
index 0000000..803fcc5
--- /dev/null
+++ b/database/migrations/2023_02_06_124402_more_technique_properties.php
@@ -0,0 +1,40 @@
+text('requirements')->nullable()->default(null);
+ $table->text('attribution')->default('');
+ });
+ Schema::table('technique_translations', function(Blueprint $table) {
+ $table->text('attribution')->default('');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('techniques', function(Blueprint $table) {
+ $table->dropColumn('requirements');
+ $table->dropColumn('attribution');
+ });
+ Schema::table('technique_translations', function(Blueprint $table) {
+ $table->dropColumn('attribution');
+ });
+ }
+};
diff --git a/resources/js/components/common/Icon.js b/resources/js/components/common/Icon.js
index 3e094cc..dd88669 100644
--- a/resources/js/components/common/Icon.js
+++ b/resources/js/components/common/Icon.js
@@ -81,6 +81,7 @@ Icon.REMOVE = makePreset('RemoveIcon', 'square-xmark');
Icon.RESULT = makePreset('ResultIcon', 'clock');
Icon.SECOND_PLACE = makePreset('SecondPlaceIcon', 'medal');
Icon.SETTINGS = makePreset('SettingsIcon', 'cog');
+Icon.SLASH = makePreset('SlashIcon', 'slash');
Icon.STREAM = makePreset('StreamIcon', ['fab', 'twitch']);
Icon.THIRD_PLACE = makePreset('ThirdPlaceIcon', 'award');
Icon.TWITCH = makePreset('TwitchIcon', ['fab', 'twitch']);
diff --git a/resources/js/components/common/ZeldaIcon.js b/resources/js/components/common/ZeldaIcon.js
index 84f2220..c53f4fd 100644
--- a/resources/js/components/common/ZeldaIcon.js
+++ b/resources/js/components/common/ZeldaIcon.js
@@ -1,8 +1,8 @@
import PropTypes from 'prop-types';
import React from 'react';
-import { withTranslation } from 'react-i18next';
+import { useTranslation } from 'react-i18next';
-import i18n from '../../i18n';
+import Icon from './Icon';
const getIconURL = name => {
switch (name) {
@@ -64,17 +64,29 @@ const getIconURL = name => {
}
};
-const ZeldaIcon = ({ name }) =>
-
-
-;
+const ZeldaIcon = ({ name }) => {
+ const { t } = useTranslation();
+
+ const invert = name.startsWith('not-');
+ const strippedName = invert ? name.substr(4) : name;
+ const title = t(`icon.zelda.${name}`);
+
+ return
+
+ {invert ?
+
+
+
+ : null}
+ ;
+};
ZeldaIcon.propTypes = {
name: PropTypes.string,
};
-export default withTranslation()(ZeldaIcon);
+export default ZeldaIcon;
diff --git a/resources/js/components/techniques/Detail.js b/resources/js/components/techniques/Detail.js
index 6653923..9d9534e 100644
--- a/resources/js/components/techniques/Detail.js
+++ b/resources/js/components/techniques/Detail.js
@@ -1,10 +1,11 @@
import PropTypes from 'prop-types';
import React from 'react';
-import { Container } from 'react-bootstrap';
+import { Alert, Container } from 'react-bootstrap';
import { withTranslation } from 'react-i18next';
import List from './List';
import Outline from './Outline';
+import Requirements from './Requirements';
import Rulesets from './Rulesets';
import RawHTML from '../common/RawHTML';
import {
@@ -23,6 +24,7 @@ const Detail = ({ technique }) =>
: null}
+
{technique.chapters ? technique.chapters.map(chapter =>
@@ -40,6 +42,11 @@ const Detail = ({ technique }) =>
{i18n.t('techniques.seeAlso')}
> : null}
+ {getTranslation(technique, 'attribution', i18n.language) ?
+
+
+
+ : null}
;
Detail.propTypes = {
diff --git a/resources/js/components/techniques/Requirement.js b/resources/js/components/techniques/Requirement.js
new file mode 100644
index 0000000..5faa372
--- /dev/null
+++ b/resources/js/components/techniques/Requirement.js
@@ -0,0 +1,17 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+
+import ZeldaIcon from '../common/ZeldaIcon';
+
+const Requirement = ({ requirement }) =>
+
+ {requirement.map(r =>
+
+ )}
+
;
+
+Requirement.propTypes = {
+ requirement: PropTypes.arrayOf(PropTypes.string),
+};
+
+export default Requirement;
diff --git a/resources/js/components/techniques/Requirements.js b/resources/js/components/techniques/Requirements.js
new file mode 100644
index 0000000..0d4501e
--- /dev/null
+++ b/resources/js/components/techniques/Requirements.js
@@ -0,0 +1,34 @@
+import PropTypes from 'prop-types';
+import React from 'react';
+import { useTranslation } from 'react-i18next';
+
+import Requirement from './Requirement';
+
+const Requirements = ({ technique }) => {
+ const { t } = useTranslation();
+
+ if (!technique.requirements || !technique.requirements.length) {
+ return null;
+ }
+
+ return
+ {t('techniques.requirements')}
+
+ {technique.requirements.map((r, i) =>
+ -
+
+
+ )}
+
+ ;
+};
+
+Requirements.propTypes = {
+ technique: PropTypes.shape({
+ requirements: PropTypes.arrayOf(
+ PropTypes.arrayOf(PropTypes.string),
+ ),
+ }),
+};
+
+export default Requirements;
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index 02adc9d..f130c08 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -363,6 +363,8 @@ export default {
mitts: 'Titan \'s Mitts',
moonpearl: 'Moonpearl',
mushroom: 'Mushroom',
+ 'not-flippers': 'Keine Flippers',
+ 'not-moonpearl': 'Keine Moonpearl',
powder: 'Powder',
quake: 'Quake',
'red-bomb': 'Red Bomb',
@@ -508,6 +510,8 @@ export default {
},
techniques: {
heading: 'Techniken',
+ lastModified: 'Zuletzt geändert: {{ date, L }}',
+ requirements: 'Erfordert: ',
rulesetCodes: {
competitive: 'COM',
mg: 'MG',
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index efb99b3..a7ca19c 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -363,6 +363,8 @@ export default {
mitts: 'Titan \'s Mitts',
moonpearl: 'Moonpearl',
mushroom: 'Mushroom',
+ 'not-flippers': 'No Flippers',
+ 'not-moonpearl': 'No Moonpearl',
powder: 'Powder',
quake: 'Quake',
'red-bomb': 'Red Bomb',
@@ -508,6 +510,8 @@ export default {
},
techniques: {
heading: 'Techniques',
+ lastModified: 'Last modified: {{ date, L }}',
+ requirements: 'Requires: ',
rulesetCodes: {
competitive: 'COM',
mg: 'MG',
diff --git a/resources/sass/common.scss b/resources/sass/common.scss
index 83e5b90..879253c 100644
--- a/resources/sass/common.scss
+++ b/resources/sass/common.scss
@@ -193,6 +193,7 @@ h1 {
}
.zelda-icon {
+ position: relative;
display: inline-flex;
align-items: center;
width: 2em;
@@ -203,4 +204,27 @@ h1 {
max-width: 100%;
max-height: 100%;
}
+ .strike {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 2em;
+ height: 2em;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ pointer-events: none;
+
+ svg {
+ width: 100%;
+ height: 100%;
+ }
+
+ path {
+ fill: red;
+ stroke: black;
+ stroke-width: 1px;
+ vector-effect: non-scaling-stroke;
+ }
+ }
}
diff --git a/resources/sass/map.scss b/resources/sass/map.scss
index 599cd15..38376a1 100644
--- a/resources/sass/map.scss
+++ b/resources/sass/map.scss
@@ -2,7 +2,7 @@
path {
fill: red;
stroke: black;
- stroke-width: 2px;
+ stroke-width: 1px;
vector-effect: non-scaling-stroke;
}
}
diff --git a/resources/sass/techniques.scss b/resources/sass/techniques.scss
index 8355e70..eff0c62 100644
--- a/resources/sass/techniques.scss
+++ b/resources/sass/techniques.scss
@@ -34,6 +34,33 @@
}
}
+.tech-requirements {
+ ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ }
+ li {
+ display: inline;
+ list-style: none;
+ margin: 0 1ex;
+ padding: 0;
+
+ &::before {
+ display: inline;
+ content: " / ";
+ margin-right: 1ex;
+ }
+ &:first-child::before {
+ display: none;
+ }
+ }
+ .requirement {
+ display: inline-flex;
+ vertical-align: middle;
+ }
+}
+
.tech-outline {
float: right;
}
--
2.39.2
From 25e1c9c43a09d438c20db17bc5239cbc45b454cd Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Tue, 7 Feb 2023 10:58:36 +0100
Subject: [PATCH 15/16] fix anonymous user permission
---
app/Policies/UserPolicy.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php
index b11e3a8..31f9481 100644
--- a/app/Policies/UserPolicy.php
+++ b/app/Policies/UserPolicy.php
@@ -15,7 +15,7 @@ class UserPolicy
* @param \App\Models\User $user
* @return \Illuminate\Auth\Access\Response|bool
*/
- public function viewAny(User $user)
+ public function viewAny(?User $user)
{
return true;
}
@@ -27,7 +27,7 @@ class UserPolicy
* @param \App\Models\User $model
* @return \Illuminate\Auth\Access\Response|bool
*/
- public function view(User $user, User $model)
+ public function view(?User $user, User $model)
{
return true;
}
--
2.39.2
From 18cd02860ba7889360ce3547b44faa0daa807a5e Mon Sep 17 00:00:00 2001
From: Daniel Karbach
Date: Fri, 10 Feb 2023 16:13:18 +0100
Subject: [PATCH 16/16] add helmet
---
package-lock.json | 52 ++++++++++++++++++++
package.json | 1 +
resources/js/components/App.js | 8 +++
resources/js/components/pages/AlttpSeed.js | 7 ++-
resources/js/components/pages/AosFront.js | 25 +++++-----
resources/js/components/pages/AosGenerate.js | 12 +++--
resources/js/components/pages/AosSeed.js | 7 ++-
resources/js/components/pages/AosTracker.js | 8 +--
resources/js/components/pages/Map.js | 9 ++--
resources/js/components/pages/NotFound.js | 13 +++--
resources/js/components/pages/Technique.js | 11 ++---
resources/js/components/pages/Techniques.js | 7 ++-
resources/js/components/pages/Tournament.js | 5 +-
resources/js/components/pages/User.js | 5 +-
resources/js/i18n/de.js | 3 ++
resources/js/i18n/en.js | 3 ++
16 files changed, 136 insertions(+), 40 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6bc7914..99cc398 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,6 +23,7 @@
"pusher-js": "^7.0.6",
"qs": "^6.10.3",
"react-bootstrap": "^2.2.0",
+ "react-helmet": "^6.1.0",
"react-i18next": "^11.15.6",
"react-router-bootstrap": "^0.26.0",
"react-router-dom": "^6.2.2",
@@ -9518,6 +9519,25 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
},
+ "node_modules/react-helmet": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
+ "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.1.1",
+ "react-side-effect": "^2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.3.0"
+ }
+ },
+ "node_modules/react-helmet/node_modules/react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+ },
"node_modules/react-i18next": {
"version": "11.15.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.15.6.tgz",
@@ -9600,6 +9620,14 @@
"react-dom": ">=16.8"
}
},
+ "node_modules/react-side-effect": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
+ "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==",
+ "peerDependencies": {
+ "react": "^16.3.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/react-smooth": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.0.tgz",
@@ -19259,6 +19287,24 @@
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
},
+ "react-helmet": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
+ "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
+ "requires": {
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.7.2",
+ "react-fast-compare": "^3.1.1",
+ "react-side-effect": "^2.1.0"
+ },
+ "dependencies": {
+ "react-fast-compare": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
+ }
+ }
+ },
"react-i18next": {
"version": "11.15.6",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.15.6.tgz",
@@ -19314,6 +19360,12 @@
"react-router": "6.2.2"
}
},
+ "react-side-effect": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
+ "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==",
+ "requires": {}
+ },
"react-smooth": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.0.tgz",
diff --git a/package.json b/package.json
index 4f7a3a6..2429eb1 100644
--- a/package.json
+++ b/package.json
@@ -89,6 +89,7 @@
"pusher-js": "^7.0.6",
"qs": "^6.10.3",
"react-bootstrap": "^2.2.0",
+ "react-helmet": "^6.1.0",
"react-i18next": "^11.15.6",
"react-router-bootstrap": "^0.26.0",
"react-router-dom": "^6.2.2",
diff --git a/resources/js/components/App.js b/resources/js/components/App.js
index d84474c..9656da2 100644
--- a/resources/js/components/App.js
+++ b/resources/js/components/App.js
@@ -1,5 +1,7 @@
import axios from 'axios';
import React, { useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
+import { useTranslation } from 'react-i18next';
import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
import Footer from './common/Footer';
@@ -17,6 +19,8 @@ import UserContext from '../helpers/UserContext';
const App = () => {
const [user, setUser] = useState(null);
+ const { t } = useTranslation();
+
const checkAuth = async () => {
try {
const response = await axios.get('/api/user');
@@ -57,6 +61,10 @@ const App = () => {
return
+
+ {t('general.appName')}
+
+
} />
diff --git a/resources/js/components/pages/AlttpSeed.js b/resources/js/components/pages/AlttpSeed.js
index 96589d4..43bc020 100644
--- a/resources/js/components/pages/AlttpSeed.js
+++ b/resources/js/components/pages/AlttpSeed.js
@@ -1,5 +1,6 @@
import axios from 'axios';
import React, { useCallback, useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
import { useParams } from 'react-router-dom';
import NotFound from './NotFound';
@@ -24,7 +25,6 @@ const AosSeed = () => {
setError(null);
setLoading(false);
setSeed(response.data);
- window.document.title = response.data.hash;
})
.catch(error => {
setError(error);
@@ -96,6 +96,11 @@ const AosSeed = () => {
}
return
+
+ {seed ?
+ {seed.hash}
+ : null}
+
;
};
diff --git a/resources/js/components/pages/AosFront.js b/resources/js/components/pages/AosFront.js
index d308f7d..9651110 100644
--- a/resources/js/components/pages/AosFront.js
+++ b/resources/js/components/pages/AosFront.js
@@ -1,9 +1,9 @@
import React from 'react';
import { Button, Col, Container, Row } from 'react-bootstrap';
-import { withTranslation } from 'react-i18next';
+import { Helmet } from 'react-helmet';
+import { useTranslation } from 'react-i18next';
import Icon from '../common/Icon';
-import i18n from '../../i18n';
const authEndpoint = 'https://discord.com/oauth2/authorize';
const clientId = '951113702839549982';
@@ -11,10 +11,13 @@ const botUrl = `${authEndpoint}?client_id=${clientId}&scope=bot%20applications.c
const commandUrl = `${authEndpoint}?client_id=${clientId}&scope=applications.commands`;
const AosFront = () => {
- React.useEffect(() => {
- window.document.title = 'Aos';
- }, []);
+ const { t } = useTranslation();
+
return
+
+ AoS
+
+
Castlevania: Aria of Sorrow
@@ -28,7 +31,7 @@ const AosFront = () => {
>
{' '}
- {i18n.t('aos.randoDiscord')}
+ {t('aos.randoDiscord')}
@@ -38,7 +41,7 @@ const AosFront = () => {
target="_blank"
variant="primary"
>
- {i18n.t('aos.randoWeb')}
+ {t('aos.randoWeb')}
@@ -50,7 +53,7 @@ const AosFront = () => {
>
{' '}
- {i18n.t('aos.tourneyDiscord')}
+ {t('aos.tourneyDiscord')}
@@ -62,7 +65,7 @@ const AosFront = () => {
>
{' '}
- {i18n.t('aos.inviteBot')}
+ {t('aos.inviteBot')}
@@ -74,11 +77,11 @@ const AosFront = () => {
>
{' '}
- {i18n.t('aos.inviteCommand')}
+ {t('aos.inviteCommand')}
;
};
-export default withTranslation()(AosFront);
+export default AosFront;
diff --git a/resources/js/components/pages/AosGenerate.js b/resources/js/components/pages/AosGenerate.js
index 0c27b06..b787848 100644
--- a/resources/js/components/pages/AosGenerate.js
+++ b/resources/js/components/pages/AosGenerate.js
@@ -1,17 +1,20 @@
import axios from 'axios';
import React, { useCallback, useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
+import { useTranslation } from 'react-i18next';
import Generate from '../aos-generate/Generate';
import ErrorBoundary from '../common/ErrorBoundary';
import ErrorMessage from '../common/ErrorMessage';
import Loading from '../common/Loading';
-import i18n from '../../i18n';
const AosGenerate = () => {
const [error, setError] = useState(null);
const [loading, setLoading] = useState(true);
const [presets, setPresets] = useState([]);
+ const { t } = useTranslation();
+
const loadPresets = useCallback(ctrl => {
axios
.get('/api/aos-presets', { signal: ctrl.signal })
@@ -36,10 +39,6 @@ const AosGenerate = () => {
};
}, []);
- useEffect(() => {
- window.document.title = i18n.t('aosGenerate.heading');
- }, [i18n.language]);
-
if (loading) {
return ;
}
@@ -49,6 +48,9 @@ const AosGenerate = () => {
}
return
+
+ {t('aosGenerate.heading')}
+
;
};
diff --git a/resources/js/components/pages/AosSeed.js b/resources/js/components/pages/AosSeed.js
index 165a2be..ece8406 100644
--- a/resources/js/components/pages/AosSeed.js
+++ b/resources/js/components/pages/AosSeed.js
@@ -1,5 +1,6 @@
import axios from 'axios';
import React, { useCallback, useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
import { useParams } from 'react-router-dom';
import NotFound from './NotFound';
@@ -24,7 +25,6 @@ const AosSeed = () => {
setError(null);
setLoading(false);
setSeed(response.data);
- window.document.title = response.data.hash;
})
.catch(error => {
setError(error);
@@ -96,6 +96,11 @@ const AosSeed = () => {
}
return
+
+ {seed ?
+ {seed.hash}
+ : null}
+
;
};
diff --git a/resources/js/components/pages/AosTracker.js b/resources/js/components/pages/AosTracker.js
index 8eafd1f..5273d0b 100644
--- a/resources/js/components/pages/AosTracker.js
+++ b/resources/js/components/pages/AosTracker.js
@@ -1,14 +1,14 @@
import React from 'react';
import { Container } from 'react-bootstrap';
+import { Helmet } from 'react-helmet';
import Map from '../aos-tracker/Map';
const AosTracker = () => {
- React.useEffect(() => {
- window.document.title = 'Aos Tracker';
- }, []);
-
return
+
+ AoS Tracker
+
;
};
diff --git a/resources/js/components/pages/Map.js b/resources/js/components/pages/Map.js
index 841227c..cbd3581 100644
--- a/resources/js/components/pages/Map.js
+++ b/resources/js/components/pages/Map.js
@@ -1,5 +1,6 @@
import React from 'react';
import { Container } from 'react-bootstrap';
+import { Helmet } from 'react-helmet';
import { useTranslation } from 'react-i18next';
import Buttons from '../map/Buttons';
@@ -11,11 +12,11 @@ const Map = () => {
const container = React.useRef();
const { t } = useTranslation();
- React.useEffect(() => {
- window.document.title = t('map.heading');
- }, []);
-
return
+
+ {t('map.heading')}
+
+
{t('map.heading')}
diff --git a/resources/js/components/pages/NotFound.js b/resources/js/components/pages/NotFound.js
index 5e20596..19ccc72 100644
--- a/resources/js/components/pages/NotFound.js
+++ b/resources/js/components/pages/NotFound.js
@@ -1,8 +1,13 @@
import React from 'react';
+import { Helmet } from 'react-helmet';
-const NotFound = () =>
;
+const NotFound = () =>
+
+
+ Not Found
+
+
Not Found
+
Sorry
+
;
export default NotFound;
diff --git a/resources/js/components/pages/Technique.js b/resources/js/components/pages/Technique.js
index 8c202ed..e380611 100644
--- a/resources/js/components/pages/Technique.js
+++ b/resources/js/components/pages/Technique.js
@@ -1,5 +1,6 @@
import axios from 'axios';
import React, { useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
import { withTranslation } from 'react-i18next';
import { useParams } from 'react-router-dom';
@@ -39,12 +40,6 @@ const Technique = () => {
};
}, [name]);
- useEffect(() => {
- if (technique) {
- window.document.title = getTranslation(technique, 'title', i18n.language);
- }
- }, [technique, i18n.language]);
-
if (loading) {
return
;
}
@@ -58,6 +53,10 @@ const Technique = () => {
}
return
+
+ {getTranslation(technique, 'title', i18n.language)}
+
+
;
};
diff --git a/resources/js/components/pages/Techniques.js b/resources/js/components/pages/Techniques.js
index ddecf56..a89c3a2 100644
--- a/resources/js/components/pages/Techniques.js
+++ b/resources/js/components/pages/Techniques.js
@@ -1,6 +1,7 @@
import axios from 'axios';
import PropTypes from 'prop-types';
import React from 'react';
+import { Helmet } from 'react-helmet';
import { withTranslation } from 'react-i18next';
import NotFound from './NotFound';
@@ -36,7 +37,6 @@ const Techniques = ({ namespace, type }) => {
if (!techniques.length) {
setLoading(true);
}
- window.document.title = i18n.t(`${namespace}.heading`);
axios
.get(`/api/content`, {
params: {
@@ -63,7 +63,6 @@ const Techniques = ({ namespace, type }) => {
}, [filter, namespace, type]);
React.useEffect(() => {
- window.document.title = i18n.t(`${namespace}.heading`);
setTechniques(t => [...t].sort(compareTranslation('title', i18n.language)));
}, [namespace, i18n.language]);
@@ -80,6 +79,10 @@ const Techniques = ({ namespace, type }) => {
}
return
+
+ {i18n.t(`${namespace}.heading`)}
+
+
{
setError(null);
setLoading(false);
setTournament(sortParticipants(response.data));
- window.document.title = response.data.title;
})
.catch(error => {
setError(error);
@@ -128,6 +128,9 @@ const Tournament = () => {
};
return
+
+ {tournament.title}
+
;
};
diff --git a/resources/js/components/pages/User.js b/resources/js/components/pages/User.js
index 3e868ba..b481112 100644
--- a/resources/js/components/pages/User.js
+++ b/resources/js/components/pages/User.js
@@ -1,5 +1,6 @@
import axios from 'axios';
import React, { useEffect, useState } from 'react';
+import { Helmet } from 'react-helmet';
import { useParams } from 'react-router-dom';
import ErrorBoundary from '../common/ErrorBoundary';
@@ -25,7 +26,6 @@ const User = () => {
setError(null);
setLoading(false);
setUser(response.data);
- window.document.title = response.data.nickname || response.data.username;
})
.catch(error => {
setError(error);
@@ -64,6 +64,9 @@ const User = () => {
}
return
+
+ {user.nickname || user.username}
+
;
};
diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js
index f130c08..fef88f4 100644
--- a/resources/js/i18n/de.js
+++ b/resources/js/i18n/de.js
@@ -292,6 +292,7 @@ export default {
},
general: {
anonymous: 'Anonym',
+ appDescription: 'Turniere und Tutorials für The Legend of Zelda: A Link to the Past Randomizer',
appName: 'ALttP',
},
icon: {
@@ -379,6 +380,7 @@ export default {
},
},
map: {
+ description: 'Karten von The Legend of Zelda: A Link to the Past',
dwLong: 'Dark World',
dwShort: 'DW',
goToLocation: 'Zur Stelle springen',
@@ -509,6 +511,7 @@ export default {
heading: 'Regelsätze',
},
techniques: {
+ description: 'Tutorials für The Legend of Zelda: A Link to the Past Randomizer',
heading: 'Techniken',
lastModified: 'Zuletzt geändert: {{ date, L }}',
requirements: 'Erfordert: ',
diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js
index a7ca19c..6820f30 100644
--- a/resources/js/i18n/en.js
+++ b/resources/js/i18n/en.js
@@ -292,6 +292,7 @@ export default {
},
general: {
anonymous: 'Anonym',
+ appDescription: 'Tournaments and tutorials for The Legend of Zelda: A Link to the Past Randomizer',
appName: 'ALttP',
},
icon: {
@@ -379,6 +380,7 @@ export default {
},
},
map: {
+ description: 'Maps of The Legend of Zelda: A Link to the Past',
dwLong: 'Dark World',
dwShort: 'DW',
goToLocation: 'Go to location',
@@ -509,6 +511,7 @@ export default {
heading: 'Rulesets',
},
techniques: {
+ description: 'Tutorials for The Legend of Zelda: A Link to the Past Randomizer',
heading: 'Techniques',
lastModified: 'Last modified: {{ date, L }}',
requirements: 'Requires: ',
--
2.39.2