diff --git a/.env b/.env index f4cf1ba5df..579b62ba53 100644 --- a/.env +++ b/.env @@ -59,6 +59,9 @@ ANONYMOUS_FTP_USER=user ANONYMOUS_FTP_PASS=pass DOWNLOAD_PATH="path/to/zip" INGEST_API_URL="https://ingest-server:port/api-name" +GCMD_VERSION="16.9" +GCMD_VERSION_YEAR="2023" +ANZSRC_VERSION="2020" ###> INDEX NAMES ### DISCOVERY_INDEX=pelagos_instancename diff --git a/assets/static/css/dataset-submission.css b/assets/static/css/dataset-submission.css index 2843db0289..ca1da551ea 100644 --- a/assets/static/css/dataset-submission.css +++ b/assets/static/css/dataset-submission.css @@ -158,3 +158,8 @@ table.dataTable.stripe tbody tr:hover { #clearLargeFilePath { margin-left: 30px; } + +.dx-list-item-content { + padding-top: 0px; + padding-bottom: 0px; +} diff --git a/assets/static/css/keyword-dataset-edit.css b/assets/static/css/keyword-dataset-edit.css new file mode 100644 index 0000000000..5b6f4032ed --- /dev/null +++ b/assets/static/css/keyword-dataset-edit.css @@ -0,0 +1,42 @@ +html, body { + overflow: hidden; +} +.main { + height: 100%; +} +.left { + float: left; + width: 50%; + height: 100%; + overflow-y: scroll; + position: absolute; + top: 300px; + bottom: 0; + left: 0; + padding-inline: 20px; + padding-bottom: 300px; + } +.right { + float: left; + width: 50%; + height: 100%; + overflow-y: scroll; + overflow-x: hidden; + position: absolute; + top: 300px; + bottom: 0; + right: 0; + padding-inline: 20px; + padding-bottom: 300px; +} +.tab-table tr:nth-child(even) { + background-color: #FFF +} + +.tab-table tr:nth-child(odd) { + background-color: #FFF +} + +pre { + white-space: pre-wrap; +} diff --git a/assets/static/js/dataset-submission.js b/assets/static/js/dataset-submission.js index c4af2b5e70..7edd735a68 100644 --- a/assets/static/js/dataset-submission.js +++ b/assets/static/js/dataset-submission.js @@ -36,6 +36,23 @@ $(function() { $("html").show(); $("#funderList").trigger("fundersAdded", {"disabled": defaultFunderTagBoxDisabled}); + $("#keywordList").trigger("keywordsAdded", {"disabled": false}); + + $("#keywordList").on("change", function(event){ + $('[id^="keywords_"]').remove(); + var maxKeywordId = 0; + $.each(($("#keywordList").val().split(',')), function(key, value) { + if (value === "") { return; } + var newElement = document.createElement("input"); + var keywordId = value; + newElement.id = `keywords_${maxKeywordId}`; + newElement.name = `keywords[${maxKeywordId}]`; + newElement.value = keywordId; + newElement.type = "hidden"; + $('[id="keyword-items"]').append(newElement); + maxKeywordId++; + }) + }); $("label").next("input[required],textarea[required],select[required]").prev().addClass("emRequired"); //Setup qTip @@ -191,7 +208,9 @@ $(function() { }, funderList: { require_from_group: "This field is required. Please select a funder from the dropdown or add it under Additional Funders." - } + }, + keywordListAnzsrc: "Please select at least one ANZSRC keyword.", + keywordListGcmd: "Please select at least one GCMD keyword.", }, ignore: ".ignore,.prototype", submitHandler: function(form) { diff --git a/assets/static/js/datasetReview.js b/assets/static/js/datasetReview.js index 1b6ef47002..cfca381a58 100644 --- a/assets/static/js/datasetReview.js +++ b/assets/static/js/datasetReview.js @@ -8,6 +8,23 @@ $(document).ready(function(){ "use strict"; $("#funderList").trigger("fundersAdded", {"disabled": false}); + $("#keywordList").trigger("keywordsAdded", {"disabled": false}); + + $("#keywordList").on("change", function(event){ + $('[id^="keywords_"]').remove(); + var maxKeywordId = 0; + $.each(($("#keywordList").val().split(',')), function(key, value) { + if (value === "") { return; } + var newElement = document.createElement("input"); + var keywordId = value; + newElement.id = `keywords_${maxKeywordId}`; + newElement.name = `keywords[${maxKeywordId}]`; + newElement.value = keywordId; + newElement.type = "hidden"; + $('[id="keyword-items"]').append(newElement); + maxKeywordId++; + }) + }); $("#udiLoadReviewform").on("change keyup mouseout", function() { var udiTextBox = $("#udiReview"); diff --git a/assets/static/js/dif.js b/assets/static/js/dif.js index 4c1868d016..2f09dcfff9 100644 --- a/assets/static/js/dif.js +++ b/assets/static/js/dif.js @@ -88,6 +88,23 @@ $(document).ready(function() }); $("#funderList").trigger("fundersAdded", {"disabled": false}); + $("#keywordList").trigger("keywordsAdded", {"disabled": false}); + + $("#keywordList").on("change", function(event){ + $('[id^="keywords_"]').remove(); + var maxKeywordId = 0; + $.each(($("#keywordList").val().split(',')), function(key, value) { + if (value === "") { return; } + var newElement = document.createElement("input"); + var keywordId = value; + newElement.id = `keywords_${maxKeywordId}`; + newElement.name = `keywords[${maxKeywordId}]`; + newElement.value = keywordId; + newElement.type = "hidden"; + $('[id="keyword-items"]').append(newElement); + maxKeywordId++; + }) + }); $("#btnDS").button({ disabled : true @@ -168,6 +185,9 @@ $(document).ready(function() }, funderList: { require_from_group: "This field is required. Please select a funder from the dropdown or add it under Additional Funders." + }, + keywordList: { + required: "This field is required. Please select at least one keyword." } }, submitHandler: function(form) { @@ -464,6 +484,7 @@ function setFormStatus() $("#btnSubmit").prop("disabled",true); $("#btnSave").prop("disabled",true); $("#funderList").trigger("fundersAdded", {"disabled": true}); + $("#keywordList").trigger("keywordsAdded", {"disabled": true}); if (Status == "2") { $("#btnReqUnlock").show(); @@ -802,6 +823,8 @@ function formReset(dontScrollToTop) $("#status").val(0).change(); $("#funderTagBox").data('dxTagBox').reset(); $("#funderList").trigger("fundersAdded", {"disabled": false}); + $("#keywordList").val('').trigger("change").trigger('keywordsAdded', {"disabled": false}); + //formHash = $("#difForm").serialize(); formHash = undefined; geowizard.cleanMap(); @@ -1082,6 +1105,7 @@ function fillForm(Form, UDI, ID) if (json.dataset.funders != null) { var funders = json.dataset.funders; var addedFunders = []; + $('[id^="funders_"]').remove(); $.each(funders, function(key, value) { var newElement = document.createElement("input"); var funderId = value.id; @@ -1097,6 +1121,11 @@ function fillForm(Form, UDI, ID) $("#funderList").val(addedFunders.toString()).trigger("fundersAdded", {"disabled": false}); } + if (json.keywords != null) { + var keywords = json.keywords; + $("#keywordList").val(keywords.map(keyword => keyword["id"]).toString()).trigger("change").trigger("keywordsAdded", {"disabled": false}); + } + loadPOCs(json.dataset.researchGroup.id, primaryPointOfContact, secondaryPointOfContact); $.each(json, function(name,value) { var element = $("[name="+name+"]"); diff --git a/assets/static/js/keyword-dataset-edit.js b/assets/static/js/keyword-dataset-edit.js new file mode 100644 index 0000000000..a4856354b8 --- /dev/null +++ b/assets/static/js/keyword-dataset-edit.js @@ -0,0 +1,58 @@ +$(function() { + $("#btnUpdate").on('click', function(event) { + var formData = $("form[datasetsubmission]").serialize(); + var url = $("form[datasetsubmission]").attr("action") + + $.ajax({ + url: url, + method: "POST", + data: formData, + success: function(data, textStatus, jqXHR) { + var n = noty( + { + layout: "top", + theme: "relax", + type: "success", + text: "Your changes have been saved!", + timeout: 4000, + modal: false, + } + ); + }, + error: function(jqXHR, textStatus, errorThrown) { + console.log(jqXHR, textStatus, errorThrown); + var n = noty( + { + layout: "top", + theme: "relax", + type: "error", + text: textStatus, + modal: true, + } + ); + }, + }); + }); + + $("#btnBack").on('click', function(event) { + location.href = `${Routing.generate('pelagos_app_ui_list_keyword_dataset')}`; + }); + + $("#keywordList").trigger("keywordsAdded", {"disabled": false}); + + $("#keywordList").on("change", function(event){ + $('[id^="keywords_"]').remove(); + var maxKeywordId = 0; + $.each(($("#keywordList").val().split(',')), function(key, value) { + if (value === "") { return; } + var newElement = document.createElement("input"); + var keywordId = value; + newElement.id = `keywords_${maxKeywordId}`; + newElement.name = `keywords[${maxKeywordId}]`; + newElement.value = keywordId; + newElement.type = "hidden"; + $('[id="keyword-items"]').append(newElement); + maxKeywordId++; + }) + }); +}); diff --git a/assets/static/js/keyword-dataset-list.js b/assets/static/js/keyword-dataset-list.js new file mode 100644 index 0000000000..bc5da27114 --- /dev/null +++ b/assets/static/js/keyword-dataset-list.js @@ -0,0 +1,57 @@ +$(() => { + $('#gridContainer').dxDataGrid({ + dataSource: `${Routing.generate('pelagos_app_api_keyword_dataset')}`, + columns: [ + { + type: 'buttons', + width: 110, + buttons: [{ + hint: 'Edit', + icon: 'edit', + onClick(e) { + const udi = e.row.data.udi; + e.event.preventDefault(); + window.open(`${Routing.generate('pelagos_app_ui_edit_keyword_dataset')}/${udi}`); + }, + }], + }, + { + dataField: 'udi', + caption: 'UDI', + width: 200, + }, + { + dataField: 'title', + caption: 'Title', + }, + { + dataField: 'acceptedDate', + caption: 'Accepted Date', + dataType: 'date', + width: 250, + }, + { + dataField: 'keywords', + caption: 'Number of Keywords', + width: 150, + filterValue: 0, + }, + ], + showBorders: true, + showColumnLines: true, + showRowLines: true, + rowAlternationEnabled: true, + filterPanel: { + visible: true, + }, + filterRow: { + visible: true, + }, + summary: { + totalItems: [{ + column: 'udi', + summaryType: 'count', + }], + }, + }); +}); diff --git a/assets/static/js/keywordComponent.js b/assets/static/js/keywordComponent.js new file mode 100644 index 0000000000..7404cb112a --- /dev/null +++ b/assets/static/js/keywordComponent.js @@ -0,0 +1,102 @@ +$(() => { + var selectedKeywords = []; + var allKeywords = []; + const defaultTemplate = _.template($("#selecteditem").html()); + + var xhr = new XMLHttpRequest(); + const url = Routing.generate("app_api_standard_keyword") + "?type=anzsrc"; + xhr.open('GET', url, false); + xhr.send(null); + + if (xhr.status === 200) { + allKeywords = JSON.parse(xhr.responseText); + } + + const treeList = $('#treelist').dxTreeView({ + items: allKeywords, + dataStructure: 'plain', + rootValue: -1, + keyExpr: 'referenceUri', + parentIdExpr: 'parentUri', + searchEnabled: true, + displayExpr: 'label', + disabled: false, + onItemClick(item) { + const selectedItem = item.itemData; + var compiled = _.template($("#item-template").html()); + + if (item.node.expanded) { + item.component.collapseItem(item.node.key); + } else { + item.component.expandItem(item.node.key); + } + + $("#selecteditem").html(compiled(selectedItem)); + + $('#add-button').dxButton({ + hint: "Add Keyword", + icon: "add", + text: "Add Keyword", + stylingMode: 'contained', + type: 'default', + onClick() { + if (!selectedKeywords.includes(selectedItem)) { + selectedKeywords.push(selectedItem); + + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + keywordListArray.push(selectedItem.id); + + $("#keywordList").val(keywordListArray.toString()).trigger("change"); + } + keywordList.reload(); + keywordList.repaint(); + }, + }); + }, + searchPanel: { visible: true }, + }).dxTreeView('instance'); + + const keywordList = $('#selectedList').dxList({ + dataSource: selectedKeywords, + allowItemDeleting: true, + itemDeleteMode: 'static', + keyExpr: 'id', + displayExpr: 'displayPath', + noDataText: 'Please select at least one keyword.', + onItemDeleted(item) { + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + + const index = keywordListArray.indexOf(String(item.itemData.id)); + if (index > -1) { + keywordListArray.splice(index, 1); + } + $("#keywordList").val(keywordListArray.toString()).trigger('change'); + } + }).dxList('instance'); + + $("#keywordList").on('keywordsAdded', function(event, { disabled }) { + $("#selecteditem").html(defaultTemplate); + keywordList.option('allowItemDeleting', !disabled); + treeList.option('searchValue', ''); + treeList.option('disabled', disabled); + treeList.collapseAll(); + const value = $("#keywordList").val(); + keywordList.getDataSource().items().forEach(item => keywordList.deleteItem(0)); + allKeywords.filter(function(keyword) { + if (value.split(",").includes(String(keyword.id))) { + return keyword; + } + }) + .forEach(keyword => selectedKeywords.push(keyword)); + keywordList.reload(); + keywordList.repaint(); + }); +}); diff --git a/assets/static/js/submissionKeywords.js b/assets/static/js/submissionKeywords.js new file mode 100644 index 0000000000..6f9d2441bd --- /dev/null +++ b/assets/static/js/submissionKeywords.js @@ -0,0 +1,240 @@ +$(() => { + var selectedAnzsrcKeywords = []; + var selectedGcmdKeywords = []; + var anzsrcKeywords = []; + var gcmdKeywords = []; + const defaultAnzsrcTemplate = _.template($("#selecteditem").html()); + const defaultGcmdTemplate = _.template($("#selecteditem-gcmd").html()); + + var xhr = new XMLHttpRequest(); + const url = Routing.generate("app_api_standard_keyword"); + + DevExpress.ui.setTemplateEngine("underscore"); + + xhr.open('GET', url + "?type=anzsrc", false); + xhr.send(null); + if (xhr.status === 200) { + anzsrcKeywords = JSON.parse(xhr.responseText); + } + + xhr.open('GET', url + "?type=gcmd", false); + xhr.send(null); + if (xhr.status === 200) { + gcmdKeywords = JSON.parse(xhr.responseText); + } + + const treeList = $('#treelist').dxTreeView({ + items: anzsrcKeywords, + dataStructure: 'plain', + rootValue: -1, + keyExpr: 'referenceUri', + parentIdExpr: 'parentUri', + searchEnabled: true, + displayExpr: 'label', + disabled: false, + searchEditorOptions: { + onInput(e) { + const value = e.component.option('value'); + if (value === '') { + treeList.collapseAll(); + } + }, + }, + onItemClick(item) { + const selectedItem = item.itemData; + var compiled = _.template($("#item-template").html()); + + if (item.node.expanded) { + item.component.collapseItem(item.node.key); + } else { + item.component.expandItem(item.node.key); + } + + $("#selecteditem").html(compiled(selectedItem)); + + $('#add-button').dxButton({ + hint: "Add Keyword", + icon: "add", + text: "Add Keyword", + stylingMode: 'contained', + type: 'default', + onClick() { + if (!selectedAnzsrcKeywords.includes(selectedItem)) { + selectedAnzsrcKeywords.push(selectedItem); + + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + keywordListArray.push(selectedItem.id); + + $("#keywordList").val(keywordListArray.toString()).trigger("change"); + } + keywordList.reload(); + keywordList.repaint(); + }, + }); + }, + searchPanel: { visible: true }, + }).dxTreeView('instance'); + + const treeListGcmd = $('#treelist-gcmd').dxTreeView({ + items: gcmdKeywords, + dataStructure: 'plain', + rootValue: -1, + keyExpr: 'referenceUri', + parentIdExpr: 'parentUri', + searchEnabled: true, + displayExpr: 'label', + disabled: false, + searchEditorOptions: { + onInput(e) { + const value = e.component.option('value'); + if (value === '') { + treeListGcmd.collapseAll(); + } + }, + }, + onItemCollapsed(e) { + if (e.itemIndex == 0) { + treeListGcmd.expandItem('https://gcmd.earthdata.nasa.gov/kms/concept/e9f67a66-e9fc-435c-b720-ae32a2c3d8f5'); + } + }, + onItemClick(item) { + const selectedItem = item.itemData; + var compiled = _.template($("#item-template-gcmd").html()); + + if (item.node.expanded) { + item.component.collapseItem(item.node.key); + } else { + item.component.expandItem(item.node.key); + } + + $("#selecteditem-gcmd").html(compiled(selectedItem)); + + $('#add-button-gcmd').dxButton({ + hint: "Add Keyword", + icon: "add", + text: "Add Keyword", + stylingMode: 'contained', + type: 'default', + onClick() { + if (!selectedGcmdKeywords.includes(selectedItem)) { + selectedGcmdKeywords.push(selectedItem); + + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + keywordListArray.push(selectedItem.id); + + $("#keywordList").val(keywordListArray.toString()).trigger("change"); + } + keywordListGcmd.reload(); + keywordListGcmd.repaint(); + }, + }); + }, + searchPanel: { visible: true }, + }).dxTreeView('instance'); + + const keywordList = $('#selectedList').dxList({ + dataSource: selectedAnzsrcKeywords, + allowItemDeleting: false, + itemDeleteMode: 'static', + keyExpr: 'id', + displayExpr: 'displayPath', + noDataText: 'Please select at least one keyword.', + itemTemplate: $('#list-item-template'), + onItemRendered(item) { + $("#keywordListAnzsrc").val(keywordList.getDataSource().items().map(item => { return item.id }).toString()).trigger('change'); + $(item.element).find('.dx-tag-remove-button').on('click', (event) => { + const itemId = event.currentTarget.attributes.getNamedItem('item').value; + selectedAnzsrcKeywords = selectedAnzsrcKeywords.filter(function (item) { return item.id != itemId }); + keywordList.option('dataSource', selectedAnzsrcKeywords); + keywordList.reload(); + keywordList.repaint(); + }); + }, + onItemDeleted(item) { + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + + const index = keywordListArray.indexOf(String(item.itemData.id)); + if (index > -1) { + keywordListArray.splice(index, 1); + } + $("#keywordList").val(keywordListArray.toString()).trigger('change'); + $("#keywordListAnzsrc").val(keywordList.getDataSource().items().map(item => {return item.id}).toString()).trigger("change"); + } + }).dxList('instance'); + + const keywordListGcmd = $('#selectedList-gcmd').dxList({ + dataSource: selectedGcmdKeywords, + allowItemDeleting: false, + itemDeleteMode: 'static', + keyExpr: 'id', + displayExpr: 'displayPath', + noDataText: 'Please select at least one keyword.', + itemTemplate: $('#list-item-template'), + onItemRendered(item) { + $("#keywordListGcmd").val(keywordListGcmd.getDataSource().items().map(item => { return item.id }).toString()).trigger("change"); + $(item.element).find('.dx-tag-remove-button').on('click', (event) => { + const itemId = event.currentTarget.attributes.getNamedItem('item').value; + selectedGcmdKeywords = selectedGcmdKeywords.filter(function (item) { return item.id != itemId }); + keywordListGcmd.option('dataSource', selectedGcmdKeywords); + keywordListGcmd.reload(); + keywordListGcmd.repaint(); + }); + }, + onItemDeleted(item) { + var keywordListArray = []; + const keyWordListValue = $("#keywordList").val(); + if (keyWordListValue !== "") { + keywordListArray = keyWordListValue.split(','); + } + + const index = keywordListArray.indexOf(String(item.itemData.id)); + if (index > -1) { + keywordListArray.splice(index, 1); + } + $("#keywordList").val(keywordListArray.toString()).trigger('change'); + $("#keywordListGcmd").val(keywordListGcmd.getDataSource().items().map(item => {return item.id}).toString()).trigger("change"); + } + }).dxList('instance'); + + $("#keywordList").on('keywordsAdded', function(event, { disabled }) { + $("#selecteditem").html(defaultAnzsrcTemplate); + $("#selecteditem-gcmd").html(defaultGcmdTemplate); + keywordList.option('disabled', disabled); + keywordListGcmd.option('disabled', disabled); + treeList.option('disabled', disabled); + treeListGcmd.option('disabled', disabled); + const value = $("#keywordList").val(); + + keywordList.getDataSource().items().forEach(item => keywordList.deleteItem(0)); + anzsrcKeywords.filter(function(keyword) { + if (value.split(",").includes(String(keyword.id))) { + return keyword; + } + }) + .forEach(keyword => selectedAnzsrcKeywords.push(keyword)); + keywordList.reload(); + keywordList.repaint(); + + keywordListGcmd.getDataSource().items().forEach(item => keywordList.deleteItem(0)); + gcmdKeywords.filter(function(keyword) { + if (value.split(",").includes(String(keyword.id))) { + return keyword; + } + }) + .forEach(keyword => selectedGcmdKeywords.push(keyword)); + keywordListGcmd.reload(); + keywordListGcmd.repaint(); + }); + }); diff --git a/composer.json b/composer.json index e8e0a6298a..2254e9ace2 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "homepage": "https://github.com/griidc/pelagos/", "license": "BSD-2-Clause", "require": { - "php": "^8.0", + "php": "^8.1", "ext-ctype": "*", "ext-curl": "*", "ext-fileinfo": "*", @@ -24,8 +24,9 @@ "doctrine/doctrine-bundle": "^2.0", "doctrine/doctrine-fixtures-bundle": "^3.0", "doctrine/doctrine-migrations-bundle": "^3.0", - "doctrine/orm": "^2.5", + "doctrine/orm": "^2.11", "easycorp/easyadmin-bundle": "^3.5", + "easyrdf/easyrdf": "^1.1", "friendsofsymfony/elastica-bundle": "^6.1.0", "friendsofsymfony/jsrouting-bundle": "^2.1", "friendsofsymfony/rest-bundle": "^3.0", @@ -84,7 +85,7 @@ }, "sort-packages": true, "platform": { - "php": "8.0" + "php": "8.1" }, "allow-plugins": { "symfony/flex": true, diff --git a/composer.lock b/composer.lock index fff0fd6fd1..04c4bae40c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,30 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a401714e9789f6b860e87fc56e6c4a61", + "content-hash": "18ac49b0a785b9f5dc4090cd9bfe8a20", "packages": [ { "name": "brick/math", - "version": "0.10.2", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^9.0", - "vimeo/psalm": "4.25.0" + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -52,7 +51,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.10.2" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { @@ -60,7 +59,7 @@ "type": "github" } ], - "time": "2022-08-10T22:54:19+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "clue/socket-raw", @@ -302,32 +301,34 @@ }, { "name": "doctrine/collections", - "version": "1.8.0", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" + "reference": "72328a11443a0de79967104ad36ba7b30bded134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134", + "reference": "72328a11443a0de79967104ad36ba7b30bded134", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -366,9 +367,23 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.8.0" + "source": "https://github.com/doctrine/collections/tree/2.1.4" }, - "time": "2022-09-01T20:12:10+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2023-10-03T09:22:33+00:00" }, { "name": "doctrine/common", @@ -463,38 +478,38 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.6.3", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "c27821d038e64f1bfc852a94064d65d2a75ad01f" + "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/c27821d038e64f1bfc852a94064d65d2a75ad01f", - "reference": "c27821d038e64f1bfc852a94064d65d2a75ad01f", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ae4e845decbe177348fdbecd04331f4fb96aa301", + "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301", "shasum": "" }, "require": { - "doctrine/persistence": "^1.3.3|^2.0|^3.0", + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0", "php": "^7.2 || ^8.0" }, "conflict": { "doctrine/dbal": "<2.13", - "doctrine/orm": "<2.12", + "doctrine/orm": "<2.14", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^10.0", + "doctrine/coding-standard": "^11.0", "doctrine/dbal": "^2.13 || ^3.0", - "doctrine/deprecations": "^1.0", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.12", + "doctrine/orm": "^2.14", "ext-sqlite3": "*", "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5", + "phpunit/phpunit": "^8.5 || ^9.5 || ^10.0", "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10" + "vimeo/psalm": "^4.10 || ^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -505,7 +520,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -525,7 +540,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.6.3" + "source": "https://github.com/doctrine/data-fixtures/tree/1.6.7" }, "funding": [ { @@ -541,20 +556,20 @@ "type": "tidelift" } ], - "time": "2023-01-07T15:10:22+00:00" + "time": "2023-08-17T21:15:33+00:00" }, { "name": "doctrine/dbal", - "version": "3.6.1", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e" + "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/57815c7bbcda3cd18871d253c1dd8cbe56f8526e", - "reference": "57815c7bbcda3cd18871d253c1dd8cbe56f8526e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", + "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", "shasum": "" }, "require": { @@ -567,13 +582,14 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "11.1.0", + "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2022.3", - "phpstan/phpstan": "1.10.3", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.35", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.4", + "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4|^6.0", "symfony/console": "^4.4|^5.4|^6.0", @@ -637,7 +653,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.6.1" + "source": "https://github.com/doctrine/dbal/tree/3.7.1" }, "funding": [ { @@ -653,29 +669,33 @@ "type": "tidelift" } ], - "time": "2023-03-02T19:26:24+00:00" + "time": "2023-10-06T05:06:20+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -694,61 +714,65 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.8.3", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "fd67ba64db3c806f626a33dcab15a4db0c77652e" + "reference": "ca64ca70247d7b1b56a57c3b147b77253eaea2f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fd67ba64db3c806f626a33dcab15a4db0c77652e", - "reference": "fd67ba64db3c806f626a33dcab15a4db0c77652e", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/ca64ca70247d7b1b56a57c3b147b77253eaea2f5", + "reference": "ca64ca70247d7b1b56a57c3b147b77253eaea2f5", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.4.0", + "doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7", - "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.11 || >=3.0", - "twig/twig": "<1.34 || >=2.0,<2.4" + "doctrine/orm": "<2.14 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", "psalm/plugin-phpunit": "^0.18.4", "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0", - "symfony/security-bundle": "^5.4 || ^6.0", - "symfony/twig-bridge": "^5.4 || ^6.0", - "symfony/validator": "^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.30" }, @@ -795,7 +819,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.8.3" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.0" }, "funding": [ { @@ -811,20 +835,20 @@ "type": "tidelift" } ], - "time": "2023-02-03T09:32:42+00:00" + "time": "2023-11-12T18:59:02+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.2", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5" + "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/601988c5b46dbd20a0f886f967210aba378a6fd5", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", + "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", "shasum": "" }, "require": { @@ -878,7 +902,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.4" }, "funding": [ { @@ -894,20 +918,20 @@ "type": "tidelift" } ], - "time": "2022-04-28T17:58:29+00:00" + "time": "2023-05-02T15:12:16+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.2", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "3393f411ba25ade21969c33f2053220044854d01" + "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01", - "reference": "3393f411ba25ade21969c33f2053220044854d01", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", + "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", "shasum": "" }, "require": { @@ -917,15 +941,15 @@ "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "doctrine/orm": "^2.6", "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "vimeo/psalm": "^4.11" + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5|^9.5", + "vimeo/psalm": "^4.22" }, "type": "symfony-bundle", "autoload": { @@ -963,7 +987,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.4" }, "funding": [ { @@ -979,7 +1003,7 @@ "type": "tidelift" } ], - "time": "2022-02-01T18:08:07+00:00" + "time": "2023-06-02T08:19:26+00:00" }, { "name": "doctrine/event-manager", @@ -1075,28 +1099,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "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" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -1146,7 +1170,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -1162,34 +1186,34 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "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 || ^11", + "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.30 || ^5.4" + "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": { @@ -1216,7 +1240,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -1232,7 +1256,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", @@ -1314,47 +1338,47 @@ }, { "name": "doctrine/migrations", - "version": "3.5.5", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204" + "reference": "282661f27129232e94e5e4dd5cb89a95c796bec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204", - "reference": "4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/282661f27129232e94e5e4dd5cb89a95c796bec2", + "reference": "282661f27129232e94e5e4dd5cb89a95c796bec2", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.5.1", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, "conflict": { - "doctrine/orm": "<2.12" + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.13", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/process": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -1396,7 +1420,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.5.5" + "source": "https://github.com/doctrine/migrations/tree/3.7.0" }, "funding": [ { @@ -1412,33 +1436,33 @@ "type": "tidelift" } ], - "time": "2023-01-18T12:44:30+00:00" + "time": "2023-11-13T12:31:07+00:00" }, { "name": "doctrine/orm", - "version": "2.14.1", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "de7eee5ed7b1b35c99b118f26f210a8281e6db8e" + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/de7eee5ed7b1b35c99b118f26f210a8281e6db8e", - "reference": "de7eee5ed7b1b35c99b118f26f210a8281e6db8e", + "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5 || ^2.0", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3 || ^2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -1452,16 +1476,16 @@ }, "require-dev": { "doctrine/annotations": "^1.13 || ^2", - "doctrine/coding-standard": "^9.0.2 || ^11.0", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.9.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.28", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.4.0" + "vimeo/psalm": "4.30.0 || 5.14.1" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1511,22 +1535,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.14.1" + "source": "https://github.com/doctrine/orm/tree/2.16.2" }, - "time": "2023-01-16T18:36:59+00:00" + "time": "2023-08-27T18:21:56+00:00" }, { "name": "doctrine/persistence", - "version": "3.1.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119" + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/8bf8ab15960787f1a49d405f6eb8c787b4841119", - "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", "shasum": "" }, "require": { @@ -1595,7 +1619,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.1.4" + "source": "https://github.com/doctrine/persistence/tree/3.2.0" }, "funding": [ { @@ -1611,7 +1635,7 @@ "type": "tidelift" } ], - "time": "2023-02-03T11:13:07+00:00" + "time": "2023-05-17T18:32:04+00:00" }, { "name": "doctrine/sql-formatter", @@ -1757,28 +1781,103 @@ ], "time": "2022-09-02T17:56:00+00:00" }, + { + "name": "easyrdf/easyrdf", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/easyrdf/easyrdf.git", + "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", + "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "ext-pcre": "*", + "ext-xmlreader": "*", + "lib-libxml": "*", + "php": ">=7.1.0" + }, + "require-dev": { + "code-lts/doctum": "^5", + "ml/json-ld": "~1.0", + "phpunit/phpunit": "^7", + "semsol/arc2": "^2.4", + "squizlabs/php_codesniffer": "3.*", + "zendframework/zend-http": "~2.3" + }, + "suggest": { + "ml/json-ld": "~1.0", + "semsol/arc2": "~2.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "EasyRdf\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nicholas Humfrey", + "email": "njh@aelius.com", + "homepage": "http://www.aelius.com/njh/", + "role": "Developer" + }, + { + "name": "Alexey Zakhlestin", + "email": "indeyets@gmail.com", + "homepage": "http://indeyets.ru/", + "role": "Developer" + } + ], + "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", + "homepage": "http://www.easyrdf.org/", + "keywords": [ + "Linked Data", + "RDF", + "Semantic Web", + "Turtle", + "rdfa", + "sparql" + ], + "support": { + "forum": "http://groups.google.com/group/easyrdf/", + "issues": "http://github.com/easyrdf/easyrdf/issues", + "source": "https://github.com/easyrdf/easyrdf/tree/1.1.1" + }, + "time": "2020-12-02T08:47:31+00:00" + }, { "name": "egulias/email-validator", - "version": "3.2.5", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b531a2311709443320c786feb4519cfaf94af796" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", - "reference": "b531a2311709443320c786feb4519cfaf94af796", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2|^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": { - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1786,7 +1885,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1814,7 +1913,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1822,20 +1921,20 @@ "type": "github" } ], - "time": "2023-01-02T17:26:14+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "elasticsearch/elasticsearch", - "version": "v7.17.1", + "version": "v7.17.2", "source": { "type": "git", "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "f1b8918f411b837ce5f6325e829a73518fd50367" + "reference": "2d302233f2bb0926812d82823bb820d405e130fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f1b8918f411b837ce5f6325e829a73518fd50367", - "reference": "f1b8918f411b837ce5f6325e829a73518fd50367", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", + "reference": "2d302233f2bb0926812d82823bb820d405e130fc", "shasum": "" }, "require": { @@ -1848,7 +1947,7 @@ "ext-yaml": "*", "ext-zip": "*", "mockery/mockery": "^1.2", - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.3", "squizlabs/php_codesniffer": "^3.4", "symfony/finder": "~4.0" @@ -1885,7 +1984,7 @@ "elasticsearch", "search" ], - "time": "2022-09-30T12:28:55+00:00" + "time": "2023-04-21T15:31:12+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -1997,100 +2096,18 @@ }, "time": "2022-12-07T11:28:53+00:00" }, - { - "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.14", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "a527c9d9d5348e012bd24482d83a5cd643bcbc9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/a527c9d9d5348e012bd24482d83a5cd643bcbc9e", - "reference": "a527c9d9d5348e012bd24482d83a5cd643bcbc9e", - "shasum": "" - }, - "require": { - "laminas/laminas-code": "~3.4.1|^4.0", - "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" - }, - "conflict": { - "laminas/laminas-stdlib": "<3.2.1", - "zendframework/zend-stdlib": "<3.2.1" - }, - "replace": { - "ocramius/proxy-manager": "^2.1" - }, - "require-dev": { - "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" - }, - "type": "library", - "extra": { - "thanks": { - "name": "ocramius/proxy-manager", - "url": "https://github.com/Ocramius/ProxyManager" - } - }, - "autoload": { - "psr-4": { - "ProxyManager\\": "src/ProxyManager" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", - "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.14" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", - "type": "tidelift" - } - ], - "time": "2023-01-30T10:40:19+00:00" - }, { "name": "friendsofsymfony/elastica-bundle", - "version": "v6.2.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/FriendsOfSymfony/FOSElasticaBundle.git", - "reference": "4a3e03f79ae6688056c54eb516b6dc263feb329f" + "reference": "5dd16e0199bad60735e2847f2b8f00e2121e8378" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSElasticaBundle/zipball/4a3e03f79ae6688056c54eb516b6dc263feb329f", - "reference": "4a3e03f79ae6688056c54eb516b6dc263feb329f", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSElasticaBundle/zipball/5dd16e0199bad60735e2847f2b8f00e2121e8378", + "reference": "5dd16e0199bad60735e2847f2b8f00e2121e8378", "shasum": "" }, "require": { @@ -2098,10 +2115,10 @@ "php": "^7.4 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", "ruflin/elastica": "^7.1", - "symfony/console": "^4.4 || ^5.4 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/property-access": "^4.4 || ^5.4 || ^6.0" + "symfony/console": "^4.4 || ^5.4 || ^6.2", + "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.2", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.2", + "symfony/property-access": "^4.4 || ^5.4 || ^6.2" }, "require-dev": { "doctrine/doctrine-bundle": "^2.1.1", @@ -2114,20 +2131,17 @@ "jms/serializer": "^3.8", "jms/serializer-bundle": "^3.5 || ^4.0", "knplabs/knp-components": "^2.4 || ^3.0", - "pagerfanta/doctrine-mongodb-odm-adapter": "^2.4 || ^3.0", - "pagerfanta/doctrine-orm-adapter": "^2.4 || ^3.0", - "pagerfanta/doctrine-phpcr-odm-adapter": "^2.4 || ^3.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-symfony": "^1.2", "phpunit/phpunit": "^9.5", - "symfony/expression-language": "^4.4 || ^5.4 || ^6.0", - "symfony/messenger": "^4.4 || ^5.4 || ^6.0", - "symfony/serializer": "^4.4 || ^5.4 || ^6.0", - "symfony/twig-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "symfony/expression-language": "^4.4 || ^5.4 || ^6.2", + "symfony/messenger": "^4.4 || ^5.4 || ^6.2", + "symfony/serializer": "^4.4 || ^5.4 || ^6.2", + "symfony/twig-bundle": "^4.4 || ^5.4 || ^6.2", + "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.2", + "symfony/yaml": "^4.4 || ^5.4 || ^6.2" }, "suggest": { "enqueue/elastica-bundle": "For populating Elasticsearch indexes asynchronously and using significanly less resources. Uses Enqueue.", @@ -2136,7 +2150,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "6.1.x-dev" + "dev-master": "6.3.x-dev" } }, "autoload": { @@ -2177,9 +2191,9 @@ ], "support": { "issues": "https://github.com/FriendsOfSymfony/FOSElasticaBundle/issues", - "source": "https://github.com/FriendsOfSymfony/FOSElasticaBundle/tree/v6.2.0" + "source": "https://github.com/FriendsOfSymfony/FOSElasticaBundle/tree/v6.3.1" }, - "time": "2022-08-31T11:16:01+00:00" + "time": "2023-05-28T18:05:31+00:00" }, { "name": "friendsofsymfony/jsrouting-bundle", @@ -2354,22 +2368,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.5.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -2380,7 +2394,8 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, @@ -2394,9 +2409,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -2462,7 +2474,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -2478,38 +2490,37 @@ "type": "tidelift" } ], - "time": "2022-08-28T15:39:27+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -2546,7 +2557,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -2562,20 +2573,20 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", "shasum": "" }, "require": { @@ -2662,7 +2673,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.1" }, "funding": [ { @@ -2678,20 +2689,20 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-08-27T10:13:57+00:00" }, { "name": "hidehalo/nanoid-php", - "version": "1.1.12", + "version": "1.1.13", "source": { "type": "git", "url": "https://github.com/hidehalo/nanoid-php.git", - "reference": "3229400d7e69b127a9e4f8fdad2e498e64cdaae4" + "reference": "3fc7c949f4e655939cc30e7110d658af3dbb0e30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hidehalo/nanoid-php/zipball/3229400d7e69b127a9e4f8fdad2e498e64cdaae4", - "reference": "3229400d7e69b127a9e4f8fdad2e498e64cdaae4", + "url": "https://api.github.com/repos/hidehalo/nanoid-php/zipball/3fc7c949f4e655939cc30e7110d658af3dbb0e30", + "reference": "3fc7c949f4e655939cc30e7110d658af3dbb0e30", "shasum": "" }, "require": { @@ -2733,9 +2744,9 @@ ], "support": { "issues": "https://github.com/hidehalo/nanoid-php/issues", - "source": "https://github.com/hidehalo/nanoid-php/tree/1.1.12" + "source": "https://github.com/hidehalo/nanoid-php/tree/1.1.13" }, - "time": "2021-12-30T07:27:43+00:00" + "time": "2022-08-04T12:07:12+00:00" }, { "name": "jms/metadata", @@ -2803,28 +2814,28 @@ }, { "name": "jms/serializer", - "version": "3.23.0", + "version": "3.28.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176" + "reference": "5a5a03a71a28a480189c5a0ca95893c19f1d120c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ac0b16ee5317d1aacc41deb91c6c325eae97c176", - "reference": "ac0b16ee5317d1aacc41deb91c6c325eae97c176", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/5a5a03a71a28a480189c5a0ca95893c19f1d120c", + "reference": "5a5a03a71a28a480189c5a0ca95893c19f1d120c", "shasum": "" }, "require": { "doctrine/annotations": "^1.13 || ^2.0", - "doctrine/instantiator": "^1.0.3", - "doctrine/lexer": "^1.1 || ^2", + "doctrine/instantiator": "^1.0.3 || ^2.0", + "doctrine/lexer": "^2.0 || ^3.0", "jms/metadata": "^2.6", "php": "^7.2||^8.0", "phpstan/phpdoc-parser": "^0.4 || ^0.5 || ^1.0" }, "require-dev": { - "doctrine/coding-standard": "^8.1", + "doctrine/coding-standard": "^12.0", "doctrine/orm": "~2.1", "doctrine/persistence": "^1.3.3|^2.0|^3.0", "doctrine/phpcr-odm": "^1.3|^2.0", @@ -2833,7 +2844,7 @@ "ocramius/proxy-manager": "^1.0|^2.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.0.2", - "phpunit/phpunit": "^8.5.21||^9.0", + "phpunit/phpunit": "^8.5.21||^9.0||^10.0", "psr/container": "^1.0|^2.0", "symfony/dependency-injection": "^3.0|^4.0|^5.0|^6.0", "symfony/expression-language": "^3.2|^4.0|^5.0|^6.0", @@ -2887,7 +2898,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.23.0" + "source": "https://github.com/schmittjoh/serializer/tree/3.28.0" }, "funding": [ { @@ -2895,7 +2906,7 @@ "type": "github" } ], - "time": "2023-02-17T17:40:48+00:00" + "time": "2023-08-03T14:43:08+00:00" }, { "name": "jms/serializer-bundle", @@ -2983,72 +2994,6 @@ ], "time": "2021-08-06T12:12:38+00:00" }, - { - "name": "laminas/laminas-code", - "version": "4.7.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "91aabc066d5620428120800c0eafc0411e441a62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/91aabc066d5620428120800c0eafc0411e441a62", - "reference": "91aabc066d5620428120800c0eafc0411e441a62", - "shasum": "" - }, - "require": { - "php": ">=7.4, <8.2" - }, - "require-dev": { - "doctrine/annotations": "^1.13.2", - "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.13.1" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" - }, - "type": "library", - "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas", - "laminasframework" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2022-11-21T01:32:31+00:00" - }, { "name": "league/flysystem", "version": "1.1.10", @@ -3145,26 +3090,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -3185,7 +3130,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -3197,11 +3142,11 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "maennchen/zipstream-php", - "version": "v2.4.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", @@ -3263,7 +3208,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0" }, "funding": [ { @@ -3279,16 +3224,16 @@ }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -3365,7 +3310,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -3377,7 +3322,7 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "myclabs/php-enum", @@ -3444,16 +3389,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -3494,9 +3439,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "nyholm/dsn", @@ -3714,16 +3659,16 @@ }, { "name": "pagerfanta/pagerfanta", - "version": "v3.7.0", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/BabDev/Pagerfanta.git", - "reference": "d0230abaf94c2625b77a8e05d0c79fea9d80fda5" + "reference": "a07c84296e491add39d103b812129de77610c33b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/d0230abaf94c2625b77a8e05d0c79fea9d80fda5", - "reference": "d0230abaf94c2625b77a8e05d0c79fea9d80fda5", + "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/a07c84296e491add39d103b812129de77610c33b", + "reference": "a07c84296e491add39d103b812129de77610c33b", "shasum": "" }, "require": { @@ -3740,7 +3685,7 @@ "doctrine/phpcr-odm": "<1.5", "ruflin/elastica": "<6.0", "solarium/solarium": "<5.0", - "twig/twig": "<1.35 || >=2.0,<2.5" + "twig/twig": "<2.13" }, "replace": { "pagerfanta/core": "self.version", @@ -3761,17 +3706,16 @@ "doctrine/mongodb-odm": "^2.2.2", "doctrine/orm": "^2.8", "doctrine/phpcr-odm": "^1.5", - "friendsofphp/php-cs-fixer": "^3.13", - "jackalope/jackalope-doctrine-dbal": "^1.6", + "jackalope/jackalope-doctrine-dbal": "^1.7.4", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.9.2", - "phpstan/phpstan-phpunit": "1.2.2", - "phpunit/phpunit": "9.5.26", + "phpstan/phpstan": "1.9.14", + "phpstan/phpstan-phpunit": "1.3.3", + "phpunit/phpunit": "9.6.7 || 10.1.0", + "rector/rector": "0.15.12", "ruflin/elastica": "^6.0 || ^7.0", "solarium/solarium": "^5.0 || ^6.0", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/phpunit-bridge": "^5.4 || ^6.0", - "twig/twig": "^1.35 || ^2.5 || ^3.0" + "symfony/cache": "^5.4 || ^6.0", + "twig/twig": "^2.13 || ^3.0" }, "suggest": { "twig/twig": "To integrate Pagerfanta with Twig" @@ -3806,7 +3750,7 @@ ], "support": { "issues": "https://github.com/BabDev/Pagerfanta/issues", - "source": "https://github.com/BabDev/Pagerfanta/tree/v3.7.0" + "source": "https://github.com/BabDev/Pagerfanta/tree/v3.8.0" }, "funding": [ { @@ -3814,7 +3758,7 @@ "type": "github" } ], - "time": "2022-12-02T16:35:42+00:00" + "time": "2023-04-15T16:39:36+00:00" }, { "name": "phayes/geophp", @@ -3858,22 +3802,24 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.16.1", + "version": "1.24.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571" + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", @@ -3897,9 +3843,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" }, - "time": "2023-02-07T18:11:17+00:00" + "time": "2023-09-26T12:28:12+00:00" }, { "name": "psr/cache", @@ -4050,21 +3996,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -4084,7 +4030,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -4096,9 +4042,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -4304,21 +4250,20 @@ }, { "name": "ramsey/collection", - "version": "1.3.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", - "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { "captainhook/plugin-composer": "^5.3", @@ -4378,7 +4323,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.3.0" + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { @@ -4390,24 +4335,24 @@ "type": "tidelift" } ], - "time": "2022-12-27T19:12:24+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.3", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "433b2014e3979047db08a17a205f410ba3869cf2" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/433b2014e3979047db08a17a205f410ba3869cf2", - "reference": "433b2014e3979047db08a17a205f410ba3869cf2", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" @@ -4470,7 +4415,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.3" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4482,27 +4427,27 @@ "type": "tidelift" } ], - "time": "2023-01-12T18:13:24+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "react/promise", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -4546,32 +4491,28 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.9.0" + "source": "https://github.com/reactphp/promise/tree/v2.10.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": "2022-02-11T10:27:51+00:00" + "time": "2023-05-02T15:15:43+00:00" }, { "name": "ruflin/elastica", - "version": "7.3.0", + "version": "7.3.1", "source": { "type": "git", "url": "https://github.com/ruflin/Elastica.git", - "reference": "75fca5bf2b6792d35dae6c5efeda2322bce914e4" + "reference": "7c61a630c3d456b00a5610960ae3a9bd29987469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ruflin/Elastica/zipball/75fca5bf2b6792d35dae6c5efeda2322bce914e4", - "reference": "75fca5bf2b6792d35dae6c5efeda2322bce914e4", + "url": "https://api.github.com/repos/ruflin/Elastica/zipball/7c61a630c3d456b00a5610960ae3a9bd29987469", + "reference": "7c61a630c3d456b00a5610960ae3a9bd29987469", "shasum": "" }, "require": { @@ -4625,9 +4566,9 @@ ], "support": { "issues": "https://github.com/ruflin/Elastica/issues", - "source": "https://github.com/ruflin/Elastica/tree/7.3.0" + "source": "https://github.com/ruflin/Elastica/tree/7.3.1" }, - "time": "2022-11-30T14:21:43+00:00" + "time": "2023-04-21T09:04:46+00:00" }, { "name": "sensio/framework-extra-bundle", @@ -4712,16 +4653,16 @@ }, { "name": "symfony/amqp-messenger", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "35257385cfc0b1478fcc09471a9c25cacbcf59ab" + "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/35257385cfc0b1478fcc09471a9c25cacbcf59ab", - "reference": "35257385cfc0b1478fcc09471a9c25cacbcf59ab", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/8ba6a2c482d3fce9d450b702098ca033bbe42de4", + "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4", "shasum": "" }, "require": { @@ -4761,7 +4702,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.21" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.31" }, "funding": [ { @@ -4777,20 +4718,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/asset", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c" + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/1504b6773c6b90118f9871e90a67833b5d1dca3c", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c", + "url": "https://api.github.com/repos/symfony/asset/zipball/edb2457a0ef615d420d2319851f679a4cc3b3635", + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635", "shasum": "" }, "require": { @@ -4835,7 +4776,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.4.21" + "source": "https://github.com/symfony/asset/tree/v5.4.31" }, "funding": [ { @@ -4851,20 +4792,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/cache", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "32cab695bf99c63aff7d27ac67919944c00530ed" + "reference": "9c0a3a5d0718e51ff81e0605be38fe1acbee9eeb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/32cab695bf99c63aff7d27ac67919944c00530ed", - "reference": "32cab695bf99c63aff7d27ac67919944c00530ed", + "url": "https://api.github.com/repos/symfony/cache/zipball/9c0a3a5d0718e51ff81e0605be38fe1acbee9eeb", + "reference": "9c0a3a5d0718e51ff81e0605be38fe1acbee9eeb", "shasum": "" }, "require": { @@ -4892,7 +4833,7 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1", "psr/simple-cache": "^1.0|^2.0", "symfony/config": "^4.4|^5.0|^6.0", @@ -4932,7 +4873,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.21" + "source": "https://github.com/symfony/cache/tree/v5.4.31" }, "funding": [ { @@ -4948,7 +4889,7 @@ "type": "tidelift" } ], - "time": "2023-02-21T12:11:13+00:00" + "time": "2023-11-06T17:37:55+00:00" }, { "name": "symfony/cache-contracts", @@ -5031,16 +4972,16 @@ }, { "name": "symfony/config", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4" + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2a6b1111d038adfa15d52c0871e540f3b352d1e4", - "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4", + "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", "shasum": "" }, "require": { @@ -5090,7 +5031,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.21" + "source": "https://github.com/symfony/config/tree/v5.4.31" }, "funding": [ { @@ -5106,20 +5047,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-11-09T08:22:43+00:00" }, { "name": "symfony/console", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" + "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "url": "https://api.github.com/repos/symfony/console/zipball/11ac5f154e0e5c4c77af83ad11ead9165280b92a", + "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a", "shasum": "" }, "require": { @@ -5184,12 +5125,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.21" + "source": "https://github.com/symfony/console/tree/v5.4.31" }, "funding": [ { @@ -5205,20 +5146,20 @@ "type": "tidelift" } ], - "time": "2023-02-25T16:59:41+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5bc403d96622cf0091abd92c939eadecd4d07f94" + "reference": "eb1bcafa54e00ed218e1b733b8b6ad1c9ff83d20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5bc403d96622cf0091abd92c939eadecd4d07f94", - "reference": "5bc403d96622cf0091abd92c939eadecd4d07f94", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/eb1bcafa54e00ed218e1b733b8b6ad1c9ff83d20", + "reference": "eb1bcafa54e00ed218e1b733b8b6ad1c9ff83d20", "shasum": "" }, "require": { @@ -5278,7 +5219,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.21" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.31" }, "funding": [ { @@ -5294,29 +5235,29 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5345,7 +5286,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -5361,20 +5302,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "d0ec59b38d87bcaa4dab5717be98433fa3db58dc" + "reference": "e82ccb815ac20fd6579e1f42f924071f20fa4264" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d0ec59b38d87bcaa4dab5717be98433fa3db58dc", - "reference": "d0ec59b38d87bcaa4dab5717be98433fa3db58dc", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e82ccb815ac20fd6579e1f42f924071f20fa4264", + "reference": "e82ccb815ac20fd6579e1f42f924071f20fa4264", "shasum": "" }, "require": { @@ -5391,7 +5332,6 @@ "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", "doctrine/orm": "<2.7.4", - "phpunit/phpunit": "<5.4.3", "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", "symfony/form": "<5.4.21|>=6,<6.2.7", @@ -5401,14 +5341,14 @@ "symfony/proxy-manager-bridge": "<4.4.19", "symfony/security-bundle": "<5", "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { "doctrine/annotations": "^1.10.4|^2", "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.7.4|^3", "psr/log": "^1|^2|^3", "symfony/cache": "^5.4|^6.0", "symfony/config": "^4.4|^5.0|^6.0", @@ -5425,7 +5365,7 @@ "symfony/stopwatch": "^4.4|^5.0|^6.0", "symfony/translation": "^4.4|^5.0|^6.0", "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^5.2|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { @@ -5462,7 +5402,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.21" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.31" }, "funding": [ { @@ -5478,20 +5418,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "29aa49b02542503bbcc978c73625d05a9e4ffe4a" + "reference": "1ff223f53c5f33b03756779a059b5411b76b8005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/29aa49b02542503bbcc978c73625d05a9e4ffe4a", - "reference": "29aa49b02542503bbcc978c73625d05a9e4ffe4a", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/1ff223f53c5f33b03756779a059b5411b76b8005", + "reference": "1ff223f53c5f33b03756779a059b5411b76b8005", "shasum": "" }, "require": { @@ -5504,7 +5444,7 @@ "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/dbal": "^2.13|^3.0", + "doctrine/dbal": "^2.13|^3|^4", "doctrine/persistence": "^1.3|^2|^3", "symfony/property-access": "^4.4|^5.0|^6.0", "symfony/serializer": "^4.4|^5.0|^6.0" @@ -5535,7 +5475,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.21" + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.31" }, "funding": [ { @@ -5551,20 +5491,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-11-07T09:59:10+00:00" }, { "name": "symfony/dotenv", - "version": "v5.4.21", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "c45210b1c43d2d24e263eefe72e8162754dd4c9f" + "reference": "ceed2cd28442adcf3679a9a82dacd45baeefc458" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/c45210b1c43d2d24e263eefe72e8162754dd4c9f", - "reference": "c45210b1c43d2d24e263eefe72e8162754dd4c9f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceed2cd28442adcf3679a9a82dacd45baeefc458", + "reference": "ceed2cd28442adcf3679a9a82dacd45baeefc458", "shasum": "" }, "require": { @@ -5606,7 +5546,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.21" + "source": "https://github.com/symfony/dotenv/tree/v5.4.30" }, "funding": [ { @@ -5622,7 +5562,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-26T16:37:39+00:00" }, { "name": "symfony/error-handler", @@ -5782,29 +5722,26 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.2", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5841,7 +5778,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -5857,20 +5794,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.21", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", "shasum": "" }, "require": { @@ -5905,7 +5842,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.21" + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" }, "funding": [ { @@ -5921,20 +5858,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-05-31T13:04:02+00:00" }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { @@ -5968,7 +5905,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.21" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -5984,20 +5921,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/flex", - "version": "v1.19.5", + "version": "v1.21.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "51077ed0f6dc2c94cd0b670167eee3747c31b2c1" + "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/51077ed0f6dc2c94cd0b670167eee3747c31b2c1", - "reference": "51077ed0f6dc2c94cd0b670167eee3747c31b2c1", + "url": "https://api.github.com/repos/symfony/flex/zipball/f1cf4014ffac79e0c031cc40d6d66354e7de5da5", + "reference": "f1cf4014ffac79e0c031cc40d6d66354e7de5da5", "shasum": "" }, "require": { @@ -6033,7 +5970,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.19.5" + "source": "https://github.com/symfony/flex/tree/v1.21.2" }, "funding": [ { @@ -6049,20 +5986,20 @@ "type": "tidelift" } ], - "time": "2023-01-30T17:02:31+00:00" + "time": "2023-10-30T18:34:59+00:00" }, { "name": "symfony/form", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "39b8a9e6353f8ad95de993ef769295d412991b36" + "reference": "48d26192c14f4f11802718a8d37bd757bae22c68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/39b8a9e6353f8ad95de993ef769295d412991b36", - "reference": "39b8a9e6353f8ad95de993ef769295d412991b36", + "url": "https://api.github.com/repos/symfony/form/zipball/48d26192c14f4f11802718a8d37bd757bae22c68", + "reference": "48d26192c14f4f11802718a8d37bd757bae22c68", "shasum": "" }, "require": { @@ -6079,7 +6016,6 @@ "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4", "symfony/dependency-injection": "<4.4", "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", @@ -6136,7 +6072,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.21" + "source": "https://github.com/symfony/form/tree/v5.4.31" }, "funding": [ { @@ -6152,20 +6088,20 @@ "type": "tidelift" } ], - "time": "2023-02-23T17:08:09+00:00" + "time": "2023-11-02T08:45:35+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "87623353dea3044c9d34382ffc4c5729cf676c90" + "reference": "4eeac66c8b0f2793324e94cfc6ac1c8bc5b92960" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/87623353dea3044c9d34382ffc4c5729cf676c90", - "reference": "87623353dea3044c9d34382ffc4c5729cf676c90", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/4eeac66c8b0f2793324e94cfc6ac1c8bc5b92960", + "reference": "4eeac66c8b0f2793324e94cfc6ac1c8bc5b92960", "shasum": "" }, "require": { @@ -6179,7 +6115,7 @@ "symfony/event-dispatcher": "^5.1|^6.0", "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", @@ -6192,7 +6128,6 @@ "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.3", "symfony/console": "<5.2.5", "symfony/dom-crawler": "<4.4", @@ -6212,7 +6147,7 @@ "symfony/translation": "<5.3", "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", + "symfony/validator": "<5.3.11", "symfony/web-profiler-bundle": "<4.4", "symfony/workflow": "<5.2" }, @@ -6245,7 +6180,7 @@ "symfony/string": "^5.0|^6.0", "symfony/translation": "^5.3|^6.0", "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0", + "symfony/validator": "^5.3.11|^6.0", "symfony/web-link": "^4.4|^5.0|^6.0", "symfony/workflow": "^5.2|^6.0", "symfony/yaml": "^4.4|^5.0|^6.0", @@ -6287,7 +6222,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.21" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.31" }, "funding": [ { @@ -6303,7 +6238,7 @@ "type": "tidelift" } ], - "time": "2023-02-23T09:17:25+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/http-foundation", @@ -6495,16 +6430,16 @@ }, { "name": "symfony/intl", - "version": "v5.4.21", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "32c2d958b88f5c7f0b080774d7d15d4c87769bc8" + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/32c2d958b88f5c7f0b080774d7d15d4c87769bc8", - "reference": "32c2d958b88f5c7f0b080774d7d15d4c87769bc8", + "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", "shasum": "" }, "require": { @@ -6513,7 +6448,8 @@ "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0" + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -6563,7 +6499,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.21" + "source": "https://github.com/symfony/intl/tree/v5.4.30" }, "funding": [ { @@ -6579,25 +6515,26 @@ "type": "tidelift" } ], - "time": "2023-02-17T21:35:35+00:00" + "time": "2023-10-28T09:19:54+00:00" }, { "name": "symfony/ldap", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/ldap.git", - "reference": "5e41bc0becda7fcaaef5d7c83191cb982d47a646" + "reference": "b3d30b86dc88fcffa30801caea05a077d09b1c53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ldap/zipball/5e41bc0becda7fcaaef5d7c83191cb982d47a646", - "reference": "5e41bc0becda7fcaaef5d7c83191cb982d47a646", + "url": "https://api.github.com/repos/symfony/ldap/zipball/b3d30b86dc88fcffa30801caea05a077d09b1c53", + "reference": "b3d30b86dc88fcffa30801caea05a077d09b1c53", "shasum": "" }, "require": { "ext-ldap": "*", "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/options-resolver": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.15" }, @@ -6634,11 +6571,11 @@ "description": "Provides a LDAP client for PHP on top of PHP's ldap extension", "homepage": "https://symfony.com", "keywords": [ - "active directory", + "active-directory", "ldap" ], "support": { - "source": "https://github.com/symfony/ldap/tree/v5.4.21" + "source": "https://github.com/symfony/ldap/tree/v5.4.27" }, "funding": [ { @@ -6654,20 +6591,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { "name": "symfony/mailer", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "60c5f5a29399ff591fadd99da345a4a8bf048c41" + "reference": "5ca8a7628a5ee69767047dd0f4cf4c9521c999b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/60c5f5a29399ff591fadd99da345a4a8bf048c41", - "reference": "60c5f5a29399ff591fadd99da345a4a8bf048c41", + "url": "https://api.github.com/repos/symfony/mailer/zipball/5ca8a7628a5ee69767047dd0f4cf4c9521c999b8", + "reference": "5ca8a7628a5ee69767047dd0f4cf4c9521c999b8", "shasum": "" }, "require": { @@ -6714,7 +6651,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.21" + "source": "https://github.com/symfony/mailer/tree/v5.4.31" }, "funding": [ { @@ -6730,20 +6667,20 @@ "type": "tidelift" } ], - "time": "2023-02-21T10:48:16+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.48.0", + "version": "v1.50.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "2e428e8432e9879187672fe08f1cc335e2a31dd6" + "reference": "a1733f849b999460c308e66f6392fb09b621fa86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/2e428e8432e9879187672fe08f1cc335e2a31dd6", - "reference": "2e428e8432e9879187672fe08f1cc335e2a31dd6", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a1733f849b999460c308e66f6392fb09b621fa86", + "reference": "a1733f849b999460c308e66f6392fb09b621fa86", "shasum": "" }, "require": { @@ -6757,7 +6694,8 @@ "symfony/filesystem": "^5.4.7|^6.0", "symfony/finder": "^5.4.3|^6.0", "symfony/framework-bundle": "^5.4.7|^6.0", - "symfony/http-kernel": "^5.4.7|^6.0" + "symfony/http-kernel": "^5.4.7|^6.0", + "symfony/process": "^5.4.7|^6.0" }, "conflict": { "doctrine/doctrine-bundle": "<2.4", @@ -6769,9 +6707,8 @@ "doctrine/doctrine-bundle": "^2.4", "doctrine/orm": "^2.10.0", "symfony/http-client": "^5.4.7|^6.0", - "symfony/phpunit-bridge": "^5.4.7|^6.0", + "symfony/phpunit-bridge": "^5.4.17|^6.0", "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^5.4.7|^6.0", "symfony/security-core": "^5.4.7|^6.0", "symfony/yaml": "^5.4.3|^6.0", "twig/twig": "^2.0|^3.0" @@ -6801,13 +6738,14 @@ "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", "keywords": [ "code generator", + "dev", "generator", "scaffold", "scaffolding" ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.48.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.50.0" }, "funding": [ { @@ -6823,20 +6761,20 @@ "type": "tidelift" } ], - "time": "2022-11-14T10:48:46+00:00" + "time": "2023-07-10T18:21:57+00:00" }, { "name": "symfony/messenger", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "e6cc4c91b93b1969ba81b64e2f0cc4c9bfdbb3cf" + "reference": "8f74256d181141d83649e9bee5caf34328feb3c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/e6cc4c91b93b1969ba81b64e2f0cc4c9bfdbb3cf", - "reference": "e6cc4c91b93b1969ba81b64e2f0cc4c9bfdbb3cf", + "url": "https://api.github.com/repos/symfony/messenger/zipball/8f74256d181141d83649e9bee5caf34328feb3c8", + "reference": "8f74256d181141d83649e9bee5caf34328feb3c8", "shasum": "" }, "require": { @@ -6897,7 +6835,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.21" + "source": "https://github.com/symfony/messenger/tree/v5.4.31" }, "funding": [ { @@ -6913,20 +6851,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/mime", - "version": "v5.4.23", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3" + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ae0a1032a450a3abf305ee44fc55ed423fbf16e3", - "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", "shasum": "" }, "require": { @@ -6941,7 +6879,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -6949,7 +6887,7 @@ "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -6981,7 +6919,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.23" + "source": "https://github.com/symfony/mime/tree/v5.4.26" }, "funding": [ { @@ -6997,20 +6935,20 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:49:13+00:00" + "time": "2023-07-27T06:29:31+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "f765276590bfe7b119e1494129fde9aa2a0c3058" + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/f765276590bfe7b119e1494129fde9aa2a0c3058", - "reference": "f765276590bfe7b119e1494129fde9aa2a0c3058", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3e295d9b0a873476356cb6cff0ce39b3f528b387", + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387", "shasum": "" }, "require": { @@ -7065,7 +7003,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.21" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.31" }, "funding": [ { @@ -7081,34 +7019,34 @@ "type": "tidelift" } ], - "time": "2023-02-21T12:28:57+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -7146,7 +7084,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -7162,7 +7100,7 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/options-resolver", @@ -7390,16 +7328,16 @@ }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c" + "reference": "e46b4da57951a16053cd751f63f4a24292788157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/a3d9148e2c363588e05abbdd4ee4f971f0a5330c", - "reference": "a3d9148e2c363588e05abbdd4ee4f971f0a5330c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", + "reference": "e46b4da57951a16053cd751f63f4a24292788157", "shasum": "" }, "require": { @@ -7411,7 +7349,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7457,7 +7395,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" }, "funding": [ { @@ -7473,7 +7411,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-21T17:27:24+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -7969,16 +7907,16 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -7987,7 +7925,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8028,7 +7966,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -8044,20 +7982,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", "shasum": "" }, "require": { @@ -8072,7 +8010,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8110,7 +8048,69 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.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": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.28", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.28" }, "funding": [ { @@ -8126,7 +8126,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-08-07T10:36:04+00:00" }, { "name": "symfony/property-access", @@ -8302,16 +8302,16 @@ }, { "name": "symfony/redis-messenger", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "2de190754550d9243ec6998b1db6edf7fd88cddd" + "reference": "9735a30ac8f37b42f1714bc1634dc8066b34e72f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/2de190754550d9243ec6998b1db6edf7fd88cddd", - "reference": "2de190754550d9243ec6998b1db6edf7fd88cddd", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/9735a30ac8f37b42f1714bc1634dc8066b34e72f", + "reference": "9735a30ac8f37b42f1714bc1634dc8066b34e72f", "shasum": "" }, "require": { @@ -8349,7 +8349,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.21" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.31" }, "funding": [ { @@ -8365,20 +8365,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/routing", - "version": "v5.4.21", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "2ea0f3049076e8ef96eab203a809d6b2332f0361" + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/2ea0f3049076e8ef96eab203a809d6b2332f0361", - "reference": "2ea0f3049076e8ef96eab203a809d6b2332f0361", + "url": "https://api.github.com/repos/symfony/routing/zipball/853fc7df96befc468692de0a48831b38f04d2cb2", + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2", "shasum": "" }, "require": { @@ -8439,7 +8439,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.21" + "source": "https://github.com/symfony/routing/tree/v5.4.26" }, "funding": [ { @@ -8455,20 +8455,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-24T13:28:37+00:00" }, { "name": "symfony/runtime", - "version": "v5.4.21", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "da8ebb6c2ca375c19a915527fb1b20332b668151" + "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/da8ebb6c2ca375c19a915527fb1b20332b668151", - "reference": "da8ebb6c2ca375c19a915527fb1b20332b668151", + "url": "https://api.github.com/repos/symfony/runtime/zipball/4659b552bc9f2380986e3f4b7e2bd4e512470e0d", + "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d", "shasum": "" }, "require": { @@ -8481,7 +8481,7 @@ }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4.30|^5.3.7|^6.0", + "symfony/console": "^4.4.30|^5.4.9|^6.0.9", "symfony/dotenv": "^5.1|^6.0", "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0", "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0" @@ -8515,8 +8515,11 @@ ], "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.4.21" + "source": "https://github.com/symfony/runtime/tree/v5.4.26" }, "funding": [ { @@ -8532,20 +8535,20 @@ "type": "tidelift" } ], - "time": "2023-01-24T14:02:46+00:00" + "time": "2023-07-16T16:48:57+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "a85747ee4508d236e171a3cc8c2ce58c5f24f990" + "reference": "92e24de1759b6a502896d87c5e0997973ef47ac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a85747ee4508d236e171a3cc8c2ce58c5f24f990", - "reference": "a85747ee4508d236e171a3cc8c2ce58c5f24f990", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/92e24de1759b6a502896d87c5e0997973ef47ac4", + "reference": "92e24de1759b6a502896d87c5e0997973ef47ac4", "shasum": "" }, "require": { @@ -8562,7 +8565,8 @@ "symfony/security-core": "^5.4|^6.0", "symfony/security-csrf": "^4.4|^5.0|^6.0", "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" + "symfony/security-http": "^5.4.30|^6.3.6", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/browser-kit": "<4.4", @@ -8618,7 +8622,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.21" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.31" }, "funding": [ { @@ -8634,7 +8638,7 @@ "type": "tidelift" } ], - "time": "2023-02-26T12:08:44+00:00" + "time": "2023-11-09T09:26:13+00:00" }, { "name": "symfony/security-core", @@ -8731,20 +8735,21 @@ }, { "name": "symfony/security-csrf", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "776a538e5f20fb560a182f790979c71455694203" + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/776a538e5f20fb560a182f790979c71455694203", - "reference": "776a538e5f20fb560a182f790979c71455694203", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", "symfony/security-core": "^4.4|^5.0|^6.0" }, @@ -8783,7 +8788,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.21" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" }, "funding": [ { @@ -8799,24 +8804,25 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { "name": "symfony/security-guard", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "22d3c7e9692e4484662e1e59599e0d47a2f945ce" + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/22d3c7e9692e4484662e1e59599e0d47a2f945ce", - "reference": "22d3c7e9692e4484662e1e59599e0d47a2f945ce", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15", "symfony/security-core": "^5.0", "symfony/security-http": "^5.3" @@ -8850,7 +8856,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.21" + "source": "https://github.com/symfony/security-guard/tree/v5.4.27" }, "funding": [ { @@ -8866,7 +8872,7 @@ "type": "tidelift" } ], - "time": "2023-02-26T12:08:44+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { "name": "symfony/security-http", @@ -8956,16 +8962,16 @@ }, { "name": "symfony/serializer", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "e35b42d69a8b447cc3e6c9b3f98938c596b6c60a" + "reference": "15574cfa408a6082b6d66c2b6922f95db6cab26d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/e35b42d69a8b447cc3e6c9b3f98938c596b6c60a", - "reference": "e35b42d69a8b447cc3e6c9b3f98938c596b6c60a", + "url": "https://api.github.com/repos/symfony/serializer/zipball/15574cfa408a6082b6d66c2b6922f95db6cab26d", + "reference": "15574cfa408a6082b6d66c2b6922f95db6cab26d", "shasum": "" }, "require": { @@ -8977,10 +8983,10 @@ "conflict": { "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0|>=1.7.0", + "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<4.4", "symfony/property-access": "<5.4", - "symfony/property-info": "<5.3.13", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", "symfony/uid": "<5.3", "symfony/yaml": "<4.4" }, @@ -8997,7 +9003,7 @@ "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/mime": "^4.4|^5.0|^6.0", "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.3.13|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", "symfony/uid": "^5.3|^6.0", "symfony/validator": "^4.4|^5.0|^6.0", "symfony/var-dumper": "^4.4|^5.0|^6.0", @@ -9039,7 +9045,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.21" + "source": "https://github.com/symfony/serializer/tree/v5.4.31" }, "funding": [ { @@ -9055,7 +9061,7 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/service-contracts", @@ -9358,16 +9364,16 @@ }, { "name": "symfony/translation", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "6996affeea65705086939894b77110e9a7f80874" + "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/6996affeea65705086939894b77110e9a7f80874", - "reference": "6996affeea65705086939894b77110e9a7f80874", + "url": "https://api.github.com/repos/symfony/translation/zipball/ba72f72fceddf36f00bd495966b5873f2d17ad8f", + "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f", "shasum": "" }, "require": { @@ -9435,7 +9441,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.21" + "source": "https://github.com/symfony/translation/tree/v5.4.31" }, "funding": [ { @@ -9451,7 +9457,7 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/translation-contracts", @@ -9654,21 +9660,22 @@ }, { "name": "symfony/twig-bundle", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "875d0edfc8df7505c1993419882c4071fc28c477" + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/875d0edfc8df7505c1993419882c4071fc28c477", - "reference": "875d0edfc8df7505c1993419882c4071fc28c477", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/62e3505a62f482a577f55ba08747dc6a3b7463b3", + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/config": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/http-foundation": "^4.4|^5.0|^6.0", "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", @@ -9723,7 +9730,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.21" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.31" }, "funding": [ { @@ -9739,20 +9746,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/uid", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "a30744506976aafc807ccb0d4f95865c0a690d02" + "reference": "d76766c457aacff7acea4482c207231aea93362c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a30744506976aafc807ccb0d4f95865c0a690d02", - "reference": "a30744506976aafc807ccb0d4f95865c0a690d02", + "url": "https://api.github.com/repos/symfony/uid/zipball/d76766c457aacff7acea4482c207231aea93362c", + "reference": "d76766c457aacff7acea4482c207231aea93362c", "shasum": "" }, "require": { @@ -9797,7 +9804,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v5.4.21" + "source": "https://github.com/symfony/uid/tree/v5.4.31" }, "funding": [ { @@ -9813,20 +9820,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/validator", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "0ba987d705962a4f6571d31a8e1aed18ad2c9f55" + "reference": "2be3e406a4e2321c2d9441fe749ce1540f38e5b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/0ba987d705962a4f6571d31a8e1aed18ad2c9f55", - "reference": "0ba987d705962a4f6571d31a8e1aed18ad2c9f55", + "url": "https://api.github.com/repos/symfony/validator/zipball/2be3e406a4e2321c2d9441fe749ce1540f38e5b6", + "reference": "2be3e406a4e2321c2d9441fe749ce1540f38e5b6", "shasum": "" }, "require": { @@ -9843,7 +9850,6 @@ "doctrine/annotations": "<1.13", "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", "symfony/dependency-injection": "<4.4", "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", @@ -9910,7 +9916,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.21" + "source": "https://github.com/symfony/validator/tree/v5.4.31" }, "funding": [ { @@ -9926,7 +9932,7 @@ "type": "tidelift" } ], - "time": "2023-02-22T19:16:45+00:00" + "time": "2023-11-06T17:47:19+00:00" }, { "name": "symfony/var-dumper", @@ -10019,24 +10025,23 @@ }, { "name": "symfony/var-exporter", - "version": "v5.4.21", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4" + "reference": "374d289c13cb989027274c86206ddc63b16a2441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/be74908a6942fdd331554b3cec27ff41b45ccad4", - "reference": "be74908a6942fdd331554b3cec27ff41b45ccad4", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", + "reference": "374d289c13cb989027274c86206ddc63b16a2441", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -10069,10 +10074,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.21" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" }, "funding": [ { @@ -10088,20 +10095,20 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-10-13T09:16:49+00:00" }, { "name": "symfony/webpack-encore-bundle", - "version": "v1.16.1", + "version": "v1.17.2", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "1862d71e483769b40278548a30e756ce13ef9d4c" + "reference": "471ebbc03072dad6e31840dc317bc634a32785f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/1862d71e483769b40278548a30e756ce13ef9d4c", - "reference": "1862d71e483769b40278548a30e756ce13ef9d4c", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/471ebbc03072dad6e31840dc317bc634a32785f5", + "reference": "471ebbc03072dad6e31840dc317bc634a32785f5", "shasum": "" }, "require": { @@ -10145,7 +10152,7 @@ "description": "Integration with your Symfony app & Webpack Encore!", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.16.1" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.17.2" }, "funding": [ { @@ -10161,20 +10168,20 @@ "type": "tidelift" } ], - "time": "2023-01-18T19:37:55+00:00" + "time": "2023-09-26T14:36:28+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3713e20d93e46e681e51605d213027e48dab3469" + "reference": "f387675d7f5fc4231f7554baa70681f222f73563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3713e20d93e46e681e51605d213027e48dab3469", - "reference": "3713e20d93e46e681e51605d213027e48dab3469", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563", + "reference": "f387675d7f5fc4231f7554baa70681f222f73563", "shasum": "" }, "require": { @@ -10220,7 +10227,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.21" + "source": "https://github.com/symfony/yaml/tree/v5.4.31" }, "funding": [ { @@ -10236,31 +10243,31 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-11-03T14:41:28+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.5.1", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "a961e553a624eebdbd423ad5ab931497ca6d87cd" + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/a961e553a624eebdbd423ad5ab931497ca6d87cd", - "reference": "a961e553a624eebdbd423ad5ab931497ca6d87cd", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", + "reference": "f10baafe6eb0ecd615d52d5cbfb713a39f68e8f3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", "twig/twig": "^2.7|^3.0" }, "require-dev": { "league/commonmark": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.3", "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", @@ -10270,11 +10277,6 @@ "twig/string-extra": "^2.12|^3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.5-dev" - } - }, "autoload": { "psr-4": { "Twig\\Extra\\TwigExtraBundle\\": "" @@ -10303,7 +10305,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.5.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.7.1" }, "funding": [ { @@ -10315,7 +10317,7 @@ "type": "tidelift" } ], - "time": "2023-02-08T07:44:55+00:00" + "time": "2023-07-29T15:34:56+00:00" }, { "name": "twig/twig", @@ -10776,16 +10778,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -10827,7 +10829,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -10843,20 +10845,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -10906,9 +10908,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -10924,7 +10926,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -11132,27 +11134,25 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.14.2", + "version": "v3.38.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "14f0541651841b63640e7aafad041ad55dc7aa88" + "reference": "7e6070026e76aa09d77a47519625c86593fb8e31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/14f0541651841b63640e7aafad041ad55dc7aa88", - "reference": "14f0541651841b63640e7aafad041ad55dc7aa88", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7e6070026e76aa09d77a47519625c86593fb8e31", + "reference": "7e6070026e76aa09d77a47519625c86593fb8e31", "shasum": "" }, "require": { "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.14.2 || ^2", - "doctrine/lexer": "^2", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0", + "sebastian/diff": "^4.0 || ^5.0", "symfony/console": "^5.4 || ^6.0", "symfony/event-dispatcher": "^5.4 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0", @@ -11165,6 +11165,7 @@ "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.0", "mikey179/vfsstream": "^1.6.11", @@ -11175,8 +11176,6 @@ "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", "symfony/phpunit-bridge": "^6.2.3", "symfony/yaml": "^5.4 || ^6.0" }, @@ -11208,9 +11207,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.2" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.0" }, "funding": [ { @@ -11218,7 +11223,7 @@ "type": "github" } ], - "time": "2023-01-29T23:47:01+00:00" + "time": "2023-11-07T08:44:54+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -11324,38 +11329,40 @@ }, { "name": "mockery/mockery", - "version": "1.5.1", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -11366,12 +11373,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -11389,23 +11404,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:32:08+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.1.0", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { @@ -11441,9 +11459,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2022-12-08T20:46:14+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { "name": "openlss/lib-array2xml", @@ -11610,24 +11628,27 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", @@ -11659,22 +11680,22 @@ "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.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2022-10-14T12:47:21+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.5", + "version": "1.10.41", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "1fb6f494d82455151ecf15c5c191923f5d84324e" + "reference": "c6174523c2a69231df55bdc65b61655e72876d76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1fb6f494d82455151ecf15c5c191923f5d84324e", - "reference": "1fb6f494d82455151ecf15c5c191923f5d84324e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c6174523c2a69231df55bdc65b61655e72876d76", + "reference": "c6174523c2a69231df55bdc65b61655e72876d76", "shasum": "" }, "require": { @@ -11703,8 +11724,11 @@ "static analysis" ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.10.5" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -11720,25 +11744,25 @@ "type": "tidelift" } ], - "time": "2023-03-07T16:48:45+00:00" + "time": "2023-11-05T12:57:57+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.33", + "version": "1.3.47", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "fcb67c2a747300ff8e6ae278191f6ff79fc90370" + "reference": "47639014d7fc82a7b63e5b0e3e59b950c54f2fbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/fcb67c2a747300ff8e6ae278191f6ff79fc90370", - "reference": "fcb67c2a747300ff8e6ae278191f6ff79fc90370", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/47639014d7fc82a7b63e5b0e3e59b950c54f2fbc", + "reference": "47639014d7fc82a7b63e5b0e3e59b950c54f2fbc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.12" }, "conflict": { "doctrine/collections": "<1.0", @@ -11761,8 +11785,8 @@ "nesbot/carbon": "^2.49", "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.3.13", + "phpstan/phpstan-strict-rules": "^1.5.1", "phpunit/phpunit": "^9.5.10", "ramsey/uuid-doctrine": "^1.5.0", "symfony/cache": "^4.4.35" @@ -11788,28 +11812,28 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.33" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.47" }, - "time": "2023-02-21T08:52:52+00:00" + "time": "2023-11-10T15:07:19+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.2.23", + "version": "1.3.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "8a8d0538ca943b20beda7e9799e14fb3683262d4" + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/8a8d0538ca943b20beda7e9799e14fb3683262d4", - "reference": "8a8d0538ca943b20beda7e9799e14fb3683262d4", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/27ff6339f83796a7e0dd963cf445cd3c456fc620", + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620", "shasum": "" }, "require": { "ext-simplexml": "*", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.4" + "phpstan/phpstan": "^1.10.36" }, "conflict": { "symfony/framework-bundle": "<3.0" @@ -11817,9 +11841,9 @@ "require-dev": { "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan-phpunit": "^1.3.11", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^8.5.29 || ^9.5", "psr/container": "1.0 || 1.1.1", "symfony/config": "^5.4 || ^6.1", "symfony/console": "^5.4 || ^6.1", @@ -11829,7 +11853,8 @@ "symfony/http-foundation": "^5.4 || ^6.1", "symfony/messenger": "^5.4", "symfony/polyfill-php80": "^1.24", - "symfony/serializer": "^5.4" + "symfony/serializer": "^5.4", + "symfony/service-contracts": "^2.2.0" }, "type": "phpstan-extension", "extra": { @@ -11859,22 +11884,22 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.23" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.5" }, - "time": "2023-02-06T10:42:02+00:00" + "time": "2023-10-30T14:52:15+00:00" }, { "name": "psalm/plugin-symfony", - "version": "v4.0.2", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-symfony.git", - "reference": "83ede57320c4dc6d07cfabe8b76cd28164c9ee8d" + "reference": "2aa596491c1ade315cb9ac14a29788e7466c8444" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/83ede57320c4dc6d07cfabe8b76cd28164c9ee8d", - "reference": "83ede57320c4dc6d07cfabe8b76cd28164c9ee8d", + "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/2aa596491c1ade315cb9ac14a29788e7466c8444", + "reference": "2aa596491c1ade315cb9ac14a29788e7466c8444", "shasum": "" }, "require": { @@ -11924,22 +11949,22 @@ "description": "Psalm Plugin for Symfony", "support": { "issues": "https://github.com/psalm/psalm-plugin-symfony/issues", - "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v4.0.2" + "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v4.0.4" }, - "time": "2023-01-08T18:52:07+00:00" + "time": "2023-04-14T18:04:54+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -11984,7 +12009,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -11992,7 +12017,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -12053,16 +12078,16 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704" + "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a866ca7e396f15d7efb6d74a8a7d364d4e05b704", - "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0ed1f634a36606f2065eec221b3975e05016cbbe", + "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe", "shasum": "" }, "require": { @@ -12105,7 +12130,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.21" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.31" }, "funding": [ { @@ -12121,20 +12146,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.21", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "95f3c7468db1da8cc360b24fa2a26e7cefcb355d" + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/95f3c7468db1da8cc360b24fa2a26e7cefcb355d", - "reference": "95f3c7468db1da8cc360b24fa2a26e7cefcb355d", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", "shasum": "" }, "require": { @@ -12171,7 +12196,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.21" + "source": "https://github.com/symfony/css-selector/tree/v5.4.26" }, "funding": [ { @@ -12187,20 +12212,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-07T06:10:25+00:00" }, { "name": "symfony/debug-bundle", - "version": "v5.4.21", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "8b4360bf8ce9a917ef8796c5e6065a185d8722bd" + "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/8b4360bf8ce9a917ef8796c5e6065a185d8722bd", - "reference": "8b4360bf8ce9a917ef8796c5e6065a185d8722bd", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/17c372891d4554d5d2f5cf602aef02c859ad52d8", + "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8", "shasum": "" }, "require": { @@ -12250,7 +12275,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.4.21" + "source": "https://github.com/symfony/debug-bundle/tree/v5.4.26" }, "funding": [ { @@ -12266,20 +12291,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-11T21:42:03+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.21", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "105a7ac54ecacc1f52a99b9c4963935ca62aac8f" + "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/105a7ac54ecacc1f52a99b9c4963935ca62aac8f", - "reference": "105a7ac54ecacc1f52a99b9c4963935ca62aac8f", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d2aefa5a7acc5511422792931d14d1be96fe9fea", + "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea", "shasum": "" }, "require": { @@ -12325,7 +12350,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.21" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.25" }, "funding": [ { @@ -12341,20 +12366,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-06-05T08:05:41+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "28d8a15a0b4c7186042fa4e0ddea94d561e7ea9e" + "reference": "30656f441e1c59ea5688dfb11ab449a56dad2925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/28d8a15a0b4c7186042fa4e0ddea94d561e7ea9e", - "reference": "28d8a15a0b4c7186042fa4e0ddea94d561e7ea9e", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/30656f441e1c59ea5688dfb11ab449a56dad2925", + "reference": "30656f441e1c59ea5688dfb11ab449a56dad2925", "shasum": "" }, "require": { @@ -12408,69 +12433,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.21" - }, - "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-02-16T09:33:00+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", - "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.21" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.31" }, "funding": [ { @@ -12486,26 +12449,26 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.4.21", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a83337a813d1398789bf4190a56dc3c4d8cc4d93" + "reference": "c3e04e0ad13df22acad1157a5b66404a85c3c538" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a83337a813d1398789bf4190a56dc3c4d8cc4d93", - "reference": "a83337a813d1398789bf4190a56dc3c4d8cc4d93", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c3e04e0ad13df22acad1157a5b66404a85c3c538", + "reference": "c3e04e0ad13df22acad1157a5b66404a85c3c538", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/config": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", "symfony/routing": "^4.4|^5.0|^6.0", @@ -12550,7 +12513,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.21" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.31" }, "funding": [ { @@ -12566,7 +12529,7 @@ "type": "tidelift" } ], - "time": "2023-02-17T16:59:45+00:00" + "time": "2023-10-31T14:39:57+00:00" }, { "name": "vimeo/psalm", @@ -12792,7 +12755,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.0", + "php": "^8.1", "ext-ctype": "*", "ext-curl": "*", "ext-fileinfo": "*", @@ -12810,7 +12773,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "8.0" + "php": "8.1" }, "plugin-api-version": "2.6.0" } diff --git a/config/packages/fos_elastica.yaml b/config/packages/fos_elastica.yaml index 30badfbd67..afb8e548e9 100644 --- a/config/packages/fos_elastica.yaml +++ b/config/packages/fos_elastica.yaml @@ -123,6 +123,12 @@ fos_elastica: type: 'text' nceiUrl: type: 'text' + keywords: + type: nested + include_in_parent: true + properties: + displayPath: + type: 'text' availabilityStatus: type: 'integer' collectionStartDate: diff --git a/config/services.yaml b/config/services.yaml index 5eb9ed76a3..7bed32c549 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -104,6 +104,11 @@ services: $doiApiPrefix: "%env(DOI_API_PREFIX)%" $doiApiUrl: "%env(DOI_API_URL)%" + App\Util\Metadata: + $gcmdVersion: "%env(GCMD_VERSION)%" + $gcmdVersionYear: "%env(GCMD_VERSION_YEAR)%" + $anzsrcVersion: "%env(ANZSRC_VERSION)%" + App\Util\IngestUtil: $ingestApiUrl: "%env(INGEST_API_URL)%" diff --git a/migrations/Version20230322155540.php b/migrations/Version20230322155540.php new file mode 100644 index 0000000000..ab0a1a3250 --- /dev/null +++ b/migrations/Version20230322155540.php @@ -0,0 +1,39 @@ +addSql('CREATE SEQUENCE keyword_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); + $this->addSql('CREATE TABLE keyword (id INT NOT NULL, creator_id INT DEFAULT NULL, modifier_id INT DEFAULT NULL, json JSON NOT NULL, type VARCHAR(255) NOT NULL, creation_time_stamp TIMESTAMP(0) WITH TIME ZONE NOT NULL, modification_time_stamp TIMESTAMP(0) WITH TIME ZONE NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_5A93713B61220EA6 ON keyword (creator_id)'); + $this->addSql('CREATE INDEX IDX_5A93713BD079F553 ON keyword (modifier_id)'); + $this->addSql('ALTER TABLE keyword ADD CONSTRAINT FK_5A93713B61220EA6 FOREIGN KEY (creator_id) REFERENCES person (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE keyword ADD CONSTRAINT FK_5A93713BD079F553 FOREIGN KEY (modifier_id) REFERENCES person (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP SEQUENCE keyword_id_seq CASCADE'); + $this->addSql('ALTER TABLE keyword DROP CONSTRAINT FK_5A93713B61220EA6'); + $this->addSql('ALTER TABLE keyword DROP CONSTRAINT FK_5A93713BD079F553'); + $this->addSql('DROP TABLE keyword'); + } +} diff --git a/migrations/Version20230411191259.php b/migrations/Version20230411191259.php new file mode 100644 index 0000000000..30049cc3b5 --- /dev/null +++ b/migrations/Version20230411191259.php @@ -0,0 +1,43 @@ +addSql('ALTER TABLE keyword ADD identifier TEXT NOT NULL'); + $this->addSql('ALTER TABLE keyword ADD definition TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE keyword ADD label TEXT NOT NULL'); + $this->addSql('ALTER TABLE keyword ADD reference_uri TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE keyword ADD parent_uri TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE keyword ADD display_path TEXT DEFAULT NULL'); + $this->addSql('ALTER TABLE keyword DROP json'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE keyword ADD json JSON NOT NULL'); + $this->addSql('ALTER TABLE keyword DROP identifier'); + $this->addSql('ALTER TABLE keyword DROP definition'); + $this->addSql('ALTER TABLE keyword DROP label'); + $this->addSql('ALTER TABLE keyword DROP reference_uri'); + $this->addSql('ALTER TABLE keyword DROP parent_uri'); + $this->addSql('ALTER TABLE keyword DROP display_path'); + } +} diff --git a/migrations/Version20230503190050.php b/migrations/Version20230503190050.php new file mode 100644 index 0000000000..e989876d0b --- /dev/null +++ b/migrations/Version20230503190050.php @@ -0,0 +1,37 @@ +addSql('CREATE TABLE dif_keyword (dif_id INT NOT NULL, keyword_id INT NOT NULL, PRIMARY KEY(dif_id, keyword_id))'); + $this->addSql('CREATE INDEX IDX_C2F8CCED31C84D2E ON dif_keyword (dif_id)'); + $this->addSql('CREATE INDEX IDX_C2F8CCED115D4552 ON dif_keyword (keyword_id)'); + $this->addSql('ALTER TABLE dif_keyword ADD CONSTRAINT FK_C2F8CCED31C84D2E FOREIGN KEY (dif_id) REFERENCES dif (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE dif_keyword ADD CONSTRAINT FK_C2F8CCED115D4552 FOREIGN KEY (keyword_id) REFERENCES keyword (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE dif_keyword DROP CONSTRAINT FK_C2F8CCED31C84D2E'); + $this->addSql('ALTER TABLE dif_keyword DROP CONSTRAINT FK_C2F8CCED115D4552'); + $this->addSql('DROP TABLE dif_keyword'); + } +} diff --git a/migrations/Version20230522143526.php b/migrations/Version20230522143526.php new file mode 100644 index 0000000000..f490b180dd --- /dev/null +++ b/migrations/Version20230522143526.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE keyword ADD expanded BOOLEAN'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE keyword DROP expanded'); + } +} diff --git a/migrations/Version20230705143514.php b/migrations/Version20230705143514.php new file mode 100644 index 0000000000..456942ddd8 --- /dev/null +++ b/migrations/Version20230705143514.php @@ -0,0 +1,39 @@ +addSql('CREATE TABLE dataset_submission_keyword (dataset_submission_id INT NOT NULL, keyword_id INT NOT NULL, PRIMARY KEY(dataset_submission_id, keyword_id))'); + $this->addSql('CREATE INDEX IDX_8303CDA08488BA54 ON dataset_submission_keyword (dataset_submission_id)'); + $this->addSql('CREATE INDEX IDX_8303CDA0115D4552 ON dataset_submission_keyword (keyword_id)'); + $this->addSql('ALTER TABLE dataset_submission_keyword ADD CONSTRAINT FK_8303CDA08488BA54 FOREIGN KEY (dataset_submission_id) REFERENCES dataset_submission (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE dataset_submission_keyword ADD CONSTRAINT FK_8303CDA0115D4552 FOREIGN KEY (keyword_id) REFERENCES keyword (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE keyword ALTER expanded SET NOT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE dataset_submission_keyword DROP CONSTRAINT FK_8303CDA08488BA54'); + $this->addSql('ALTER TABLE dataset_submission_keyword DROP CONSTRAINT FK_8303CDA0115D4552'); + $this->addSql('DROP TABLE dataset_submission_keyword'); + $this->addSql('ALTER TABLE keyword ALTER expanded DROP NOT NULL'); + } +} diff --git a/share/bash/import-keywords.sh b/share/bash/import-keywords.sh new file mode 100755 index 0000000000..fb6644ce81 --- /dev/null +++ b/share/bash/import-keywords.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# pelagos:import-keywords [--type [TYPE]] [--dataURI [DATAURI]] [--keyword [KEYWORD]] [--] +echo "Importing 12 pages of keywords from anzsrc."; +for page in $(seq 0 11); do + echo "Importing page $page" + bin/console pelagos:import-keywords --type anzsrc --dataURI "https://vocabs.ardc.edu.au/repository/api/lda/anzsrc-2020-for/concept.json?_page=$page" IMPORT +done +echo "Completed with anzsrc imports. Now sorting." +bin/console pelagos:import-keywords --type anzsrc SORT + +# While there is a page 0, it contains the same data as page 1, so skipping. +echo "Importing 2 pages of keywords from NASA." +for page in $(seq 1 2); do + echo "Importing page $page" + bin/console pelagos:import-keywords --type gcmd --dataURI "https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/sciencekeywords/?format=rdf&page_num=$page" IMPORT +done +echo "Completed with the NASA import. Now sorting." +bin/console pelagos:import-keywords --type gcmd SORT + +echo "Expanding GCMD keyword Earth Science" +bin/console pelagos:import-keywords expand --keyword e9f67a66-e9fc-435c-b720-ae32a2c3d8f5 diff --git a/src/Command/PelagosImportKeywordsCommand.php b/src/Command/PelagosImportKeywordsCommand.php new file mode 100644 index 0000000000..2f733eb582 --- /dev/null +++ b/src/Command/PelagosImportKeywordsCommand.php @@ -0,0 +1,226 @@ +addArgument('action', InputArgument::REQUIRED, 'Action to use. [IMPORT|SORT|EXPAND]') + ->addOption('type', null, InputOption::VALUE_OPTIONAL, 'The type of data to import.') + ->addOption('dataURI', null, InputOption::VALUE_OPTIONAL, 'The file, or URI with the data.') + ->addOption('keyword', null, InputOption::VALUE_OPTIONAL, 'The keyword which to expand.') + + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $io = new SymfonyStyle($input, $output); + $action = $input->getArgument('action'); + $type = $input->getOption('type'); + $dataURI = $input->getOption('dataURI'); + $keywordIdentifier = $input->getOption('keyword'); + + try { + switch (strtoupper($action)) { + case 'IMPORT': + $type = KeywordType::tryFrom($type); + if (empty($type) or empty($dataURI)) { + throw new \Exception('No type/uri identifier given!'); + } else { + $this->importKeyword($type, $dataURI); + } + break; + case 'SORT': + $type = KeywordType::tryFrom($type); + if (empty($type)) { + throw new \Exception('No type given!'); + } else { + $this->sortKeyword($type, $io); + } + break; + case 'EXPAND': + if (empty($keywordIdentifier)) { + throw new \Exception('No keyword identifier given!'); + } else { + $this->expandKeyword($keywordIdentifier, $io); + } + break; + default: + throw new \Exception('No valid action given!'); + break; + } + } catch (\Exception $e) { + $io->caution($e->getMessage()); + + return Command::FAILURE; + } + + $this->entityManager->flush(); + + $io->success('DONE!'); + + return Command::SUCCESS; + } + + private function expandKeyword(string $identifier, StyleInterface $io): void + { + $keywordRepository = $this->entityManager->getRepository(Keyword::class); + $keyword = $keywordRepository->findOneBy(['identifier' => $identifier]); + if ($keyword instanceof Keyword) { + $io->note('Found keyword with label:' . $keyword->getLabel()); + $expanded = $keyword->isExpanded(); + + $expanded = $io->choice('Do you want this node expanded?', ['Yes' => 'Yes', 'No' => 'No'], $expanded ? 'Yes' : 'No'); + $expanded = filter_var($expanded, FILTER_VALIDATE_BOOLEAN); + + $keyword->setExpanded($expanded); + $io->note('Keyword set to expanded.'); + } else { + throw new \Exception('Keyword not found!'); + } + } + + private function sortKeyword(KeywordType $keywordType, StyleInterface $io): void + { + $io->note('Sorting, ITS SLOW'); + $keywordRepository = $this->entityManager->getRepository(Keyword::class); + $keywords = $keywordRepository->findBy(['type' => $keywordType->value]); + $keywordCollection = new ArrayCollection($keywords); + + $io->progressStart($keywordCollection->count()); + + foreach ($keywords as $keyword) { + $parentUri = $keyword->getParentUri(); + + if (!empty($parentUri)) { + $path = $this->getParentPath($keywordCollection, $parentUri, ' > ' . $keyword->getLabel()); + } else { + $path = $keyword->getLabel(); + } + + $keyword->setDisplayPath($path); + $keywordRepository->save($keyword); + + $io->progressAdvance(); + } + + $io->progressFinish(); + } + + private function getParentPath(ArrayCollection $keywordCollection, string $parentUri, string $path = ''): string + { + $criteria = Criteria::create() + ->where( + new Comparison('referenceUri', '=', $parentUri) + ); + + $parentKeyword = $keywordCollection->matching($criteria); + + if (0 != $parentKeyword->count()) { + $keyword = $parentKeyword->first(); + $path = $keyword->getLabel() . $path; + $parentUri = $keyword->getParentUri(); + if (!empty($parentUri)) { + $path = $this->getParentPath($keywordCollection, $parentUri) . ' > ' . $path; + } + } + + return $path; + } + + private function importKeyword(KeywordType $keywordType, string $dataURI): void + { + $keywordReposity = $this->entityManager->getRepository(Keyword::class); + + if (KeywordType::TYPE_GCMD === $keywordType) { // gcmd + // https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/discipline/?format=rdf (DISCIPLINE) + // https://gcmd.earthdata.nasa.gov/kms/concepts/concept_scheme/sciencekeywords/?format=rdf&page_num=2 (KEYWORDS) + + $keywords = new Graph($dataURI); + $keywords->load(); + $resources = $keywords->allOfType('skos:Concept'); + + foreach ($resources as $resource) { + $uri = $resource->getUri(); + $label = $this->getPropertyValue($resource, 'skos:prefLabel'); + $broader = $this->getPropertyValue($resource, 'skos:broader'); + $definition = $this->getPropertyValue($resource, 'skos:definition'); + $identifier = $resource->localName(); + + $keyword = new Keyword(); + $keyword->setType(KeywordType::TYPE_GCMD); + $keyword->setIdentifier($identifier); + $keyword->setLabel($label); + $keyword->setReferenceUri($uri); + $keyword->setParentUri($broader); + $keyword->setDefinition($definition); + $keywordReposity->save($keyword); + } + } elseif (KeywordType::TYPE_ANZSRC === $keywordType) { // anzsrc + // https://vocabs.ardc.edu.au/repository/api/lda/anzsrc-2020-for/concept.json + $fileData = file_get_contents($dataURI); + + $json = json_decode($fileData); + + $items = $json->result->items; + + foreach ($items as $item) { + $uri = $item->_about; + $label = $item->prefLabel->_value; + $broader = property_exists($item, 'broader') ? $item->broader : null; + $definition = property_exists($item, 'definition') ? $item->definition : null; + $identifier = $item->notation; + + $keyword = new Keyword(); + $keyword->setType(KeywordType::TYPE_ANZSRC); + $keyword->setIdentifier($identifier); + $keyword->setLabel($label); + $keyword->setReferenceUri($uri); + $keyword->setParentUri($broader); + $keyword->setDefinition($definition); + $keywordReposity->save($keyword); + } + } + } + + private function getPropertyValue(Resource $resource, string $propertyName): mixed + { + $property = $resource->get($propertyName); + + if ($property instanceof Literal) { + return $property->getValue(); + } + + return $property; + } +} diff --git a/src/Controller/Api/StandardKeywordController.php b/src/Controller/Api/StandardKeywordController.php new file mode 100644 index 0000000000..c474fff5b9 --- /dev/null +++ b/src/Controller/Api/StandardKeywordController.php @@ -0,0 +1,27 @@ +query->get('type') ?? ''); + + $keywords = $keywordRepository->getKeywords($type); + + return $jsonSerializer->serialize( + data: $keywords, + groups: ['id', 'api'] + )->createJsonResponse(); + } +} diff --git a/src/Controller/UI/KeywordDatasetController.php b/src/Controller/UI/KeywordDatasetController.php new file mode 100644 index 0000000000..f946288987 --- /dev/null +++ b/src/Controller/UI/KeywordDatasetController.php @@ -0,0 +1,89 @@ +render('KeywordDataset/list.html.twig'); + } + + #[Route('/api/keyword_dataset', name: 'pelagos_app_api_keyword_dataset')] + public function getList(DatasetRepository $datasetRepository, JsonSerializer $jsonSerializer): Response + { + $datasets = $datasetRepository->getListOfApprovedDatasetWithoutKeywords(); + + return $jsonSerializer->serialize( + data: $datasets, + )->createJsonResponse(); + } + + #[Route('/keyword-dataset/{udi}', name: 'pelagos_app_ui_edit_keyword_dataset', methods: 'GET')] + public function editDataset(string $udi, DatasetRepository $datasetRepository, FormFactoryInterface $formFactory): Response + { + $dataset = $datasetRepository->findOneBy(['udi' => $udi]); + + if (!$dataset instanceof Dataset) { + throw new NotFoundHttpException("Dataset with $udi not found!"); + } + + $datasetSubmission = $dataset->getDatasetSubmission(); + + if (!$datasetSubmission instanceof DatasetSubmission) { + throw new NotFoundHttpException('This Dataset does not have an Submission!'); + } + + $datasetSubmissionId = $datasetSubmission->getId(); + $url = $this->generateUrl('pelagos_app_ui_update_keyword_dataset', ['datasetSubmission' => $datasetSubmissionId]); + + $form = $formFactory->createNamed( + '', + DatasetSubmissionType::class, + $datasetSubmission, + [ + 'action' => $url, + 'attr' => [ + 'datasetSubmission' => $datasetSubmissionId, + ], + ] + ); + + return $this->render('KeywordDataset/edit.html.twig', [ + 'form' => $form->createView(), + 'dataset' => $dataset, + 'datasetSubmission' => $datasetSubmission, + ]); + } + + #[Route('/keyword-dataset/{datasetSubmission}', name: 'pelagos_app_ui_update_keyword_dataset', methods: 'POST')] + public function updateDataset( + DatasetSubmission $datasetSubmission, + FormFactoryInterface $formFactory, + EntityManagerInterface $entityManager, + Request $request + ): Response { + $form = $formFactory->createNamed('', KeywordDatasetType::class, $datasetSubmission); + $form->handleRequest($request); + + $entityManager->persist($datasetSubmission); + $entityManager->flush(); + + return new Response('OK', Response::HTTP_NO_CONTENT); + } +} diff --git a/src/Entity/DIF.php b/src/Entity/DIF.php index 01a042e6fa..3732b5d4b5 100644 --- a/src/Entity/DIF.php +++ b/src/Entity/DIF.php @@ -2,6 +2,7 @@ namespace App\Entity; +use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use JMS\Serializer\Annotation as Serializer; @@ -375,6 +376,14 @@ class DIF extends Entity #[ORM\Column(type: 'text', nullable: true)] protected $additionalFunders; + /** + * Keywords associated with this DIF. + * + * @var Collection + */ + #[ORM\ManyToMany(targetEntity: Keyword::class)] + protected $keywords; + /** * Constructor. * @@ -387,6 +396,7 @@ public function __construct(Dataset $dataset = null) if (null !== $dataset) { $this->setDataset($dataset); } + $this->keywords = new ArrayCollection(); } /** @@ -1465,4 +1475,34 @@ public function getAdditionalFunders(): ?string { return $this->additionalFunders; } + + /** + * Add a Keyword to this DIF. + */ + public function addKeyword(Keyword $keyword): self + { + if (!empty($this->keywords) and false === $this->keywords->contains($keyword)) { + $this->keywords->add($keyword); + } + + return $this; + } + + /** + * Remove a Keyword from this DIF. + */ + public function removeKeyword(Keyword $keyword): self + { + $this->keywords->removeElement($keyword); + + return $this; + } + + /** + * Get the keywords for this DIF. + */ + public function getKeywords(): ?Collection + { + return $this->keywords; + } } diff --git a/src/Entity/Dataset.php b/src/Entity/Dataset.php index c7e771fd2a..ef21303c68 100644 --- a/src/Entity/Dataset.php +++ b/src/Entity/Dataset.php @@ -893,10 +893,8 @@ public function setAcceptedDate(\DateTime $acceptedDate) /** * Getter for the latest dataset submission review copy. - * - * @return DatasetSubmission */ - public function getLatestDatasetReview() + public function getLatestDatasetReview(): ?DatasetSubmission { $datasetSubmission = ($this->getDatasetSubmissionHistory()->first() ? $this->getDatasetSubmissionHistory()->first() : null); @@ -1028,4 +1026,15 @@ public function getTags(): array return $tags; } + + + /** + * Gets the UDI, stringifier. + * + * @return string + */ + public function __toString(): string + { + return $this->getUdi(); + } } diff --git a/src/Entity/DatasetSubmission.php b/src/Entity/DatasetSubmission.php index 4750b72ed7..20122289dd 100644 --- a/src/Entity/DatasetSubmission.php +++ b/src/Entity/DatasetSubmission.php @@ -763,6 +763,14 @@ class DatasetSubmission extends Entity #[ORM\Column(type: 'json', nullable: true)] protected $placeKeywords = array(); + /** + * Keywords associated with this Dataset Submission. + * + * @var Collection + */ + #[ORM\ManyToMany(targetEntity: Keyword::class)] + protected $keywords; + /** * Topic keywords describing this dataset. * @@ -955,6 +963,7 @@ public function __construct(Entity $entity, PersonDatasetSubmissionDatasetContac $this->metadataContacts = new ArrayCollection(); $this->distributionPoints = new ArrayCollection(); $this->datasetLinks = new ArrayCollection(); + $this->keywords = new ArrayCollection(); if ($entity instanceof DIF) { if (null === $datasetPPOc) { throw new \Exception('Constructor requires PersonDatasetSubmissionDatasetContact if passed a DIF entity'); @@ -988,6 +997,11 @@ public function __construct(Entity $entity, PersonDatasetSubmissionDatasetContac $this->setAdditionalFunders($entity->getAdditionalFunders()); $this->addDistributionPoint(new DistributionPoint()); + + /** @var Keyword $keyword */ + foreach ($entity->getKeywords() as $keyword) { + $this->addKeyword($keyword); + } } elseif ($entity instanceof DatasetSubmission) { // Increment the sequence. $this->setSequence($entity->getDataset()->getDatasetSubmissionHistory()->first()->getSequence() + 1); @@ -1033,6 +1047,10 @@ public function __construct(Entity $entity, PersonDatasetSubmissionDatasetContac $this->setColdStorageTotalUnpackedCount($entity->getColdStorageTotalUnpackedCount()); $this->setColdStorageTotalUnpackedSize($entity->getColdStorageTotalUnpackedSize()); $this->setAdditionalFunders($entity->getAdditionalFunders()); + /** @var Keyword $keyword */ + foreach ($entity->getKeywords() as $keyword) { + $this->addKeyword($keyword); + } // Submitter should always be the user who has submitted the dataset. if (!in_array($entity->getDatasetStatus(), [Dataset::DATASET_STATUS_NONE, Dataset::DATASET_STATUS_BACK_TO_SUBMITTER])) { @@ -2126,6 +2144,36 @@ public function getTopicKeywords(): array return $this->topicKeywords; } + /** + * Add a Keyword to this Dataset Submission. + */ + public function addKeyword(Keyword $keyword): self + { + if (!empty($this->keywords) and false === $this->keywords->contains($keyword)) { + $this->keywords->add($keyword); + } + + return $this; + } + + /** + * Remove a Keyword from this Dataset Submission. + */ + public function removeKeyword(Keyword $keyword): self + { + $this->keywords->removeElement($keyword); + + return $this; + } + + /** + * Get the keywords for this Dataset Submission. + */ + public function getKeywords(): ?Collection + { + return $this->keywords; + } + /** * Setter for geographic spatial extent. * diff --git a/src/Entity/Entity.php b/src/Entity/Entity.php index a1ed39bd52..f58c3400f6 100644 --- a/src/Entity/Entity.php +++ b/src/Entity/Entity.php @@ -48,6 +48,7 @@ abstract class Entity #[ORM\Column(type: 'integer')] #[ORM\Id] #[ORM\GeneratedValue] + #[Serializer\Groups(["id"])] protected $id; /** diff --git a/src/Entity/Keyword.php b/src/Entity/Keyword.php new file mode 100644 index 0000000000..3f4496396c --- /dev/null +++ b/src/Entity/Keyword.php @@ -0,0 +1,247 @@ +parentUri)); + } + + /** + * Display path with possible Science Keywords string removed. + */ + #[Serializer\VirtualProperty] + #[Serializer\Groups(["api"])] + #[Serializer\SerializedName("displayPath")] + public function getShortDisplayPath(): string + { + $displayPath = $this->getDisplayPath() ?? ''; + + return preg_replace('/^Science Keywords( > )?/i', '', $displayPath); + } + + /** + * Get the Type for this Keyword. + */ + public function getType(): ?KeywordType + { + return $this->type; + } + + /** + * Set the Type for this Keyword. + */ + public function setType(KeywordType $type): self + { + $this->type = $type; + + return $this; + } + + /** + * Get the Definitaiton for this Keyword. + */ + public function getDefinition(): ?string + { + return $this->definition; + } + + /** + * Set the definition for the Keyword. + */ + public function setDefinition(?string $definition): self + { + $this->definition = $definition; + + return $this; + } + + /** + * Get the label for this Keyword. + */ + public function getLabel(): ?string + { + return $this->label; + } + + /** + * Set the label for this Keyword. + */ + public function setLabel(string $label): self + { + $this->label = $label; + + return $this; + } + + /** + * Get the reference URI for this. + */ + public function getReferenceUri(): ?string + { + return $this->referenceUri; + } + + /** + * Set the reference URI for this. + */ + public function setReferenceUri(?string $referenceUri): self + { + $this->referenceUri = $referenceUri; + + return $this; + } + + /** + * Get the parent URI for the Keyword. + */ + public function getParentUri(): ?string + { + return $this->parentUri; + } + + /** + * Get the parent URI for the Keyword. + */ + public function setParentUri(?string $parentUri): self + { + $this->parentUri = $parentUri; + + return $this; + } + + /** + * Get the full display path for the Keyword. + */ + public function getDisplayPath(): ?string + { + return $this->displayPath; + } + + /** + * Set the diplay path for the Keyword. + */ + public function setDisplayPath(?string $displayPath): self + { + $this->displayPath = $displayPath; + + return $this; + } + + /** + * Get the identifier for the Keyword. + */ + public function getIdentifier(): ?string + { + return $this->identifier; + } + + /** + * Set the identifier for the Keyword. + */ + public function setIdentifier(string $identifier): self + { + $this->identifier = $identifier; + + return $this; + } + + /** + * If the keyword is expanded. + */ + public function isExpanded(): bool + { + return $this->expanded; + } + + /** + * Set keyword node to expanded. + */ + public function setExpanded(bool $expanded): self + { + $this->expanded = $expanded; + + return $this; + } + + /** + * Stringifier, show label. + */ + public function __toString(): string + { + return $this->getLabel() ?? ''; + } +} diff --git a/src/Enum/KeywordType.php b/src/Enum/KeywordType.php new file mode 100644 index 0000000000..41ed4cca38 --- /dev/null +++ b/src/Enum/KeywordType.php @@ -0,0 +1,12 @@ + 'yyyy-mm-dd', ], ]) + ->add('keywords', CollectionType::class, [ + 'label' => 'Keywords', + 'entry_type' => EntityType::class, + 'entry_options' => [ + 'class' => Keyword::class, + ], + 'by_reference' => true, + 'allow_add' => true, + 'allow_delete' => true, + 'delete_empty' => true, + 'required' => false, + ]) ->add('funders', CollectionType::class, [ 'label' => 'Funders', 'entry_type' => EntityType::class, diff --git a/src/Form/DatasetSubmissionType.php b/src/Form/DatasetSubmissionType.php index 7d89b85772..b4126eeee0 100644 --- a/src/Form/DatasetSubmissionType.php +++ b/src/Form/DatasetSubmissionType.php @@ -7,6 +7,7 @@ use App\Entity\DistributionPoint; use App\Entity\Entity; use App\Entity\Funder; +use App\Entity\Keyword; use App\Entity\PersonDatasetSubmissionDatasetContact; use App\Entity\PersonDatasetSubmissionMetadataContact; use Symfony\Bridge\Doctrine\Form\Type\EntityType; @@ -149,6 +150,18 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'multiple' => true, 'required' => true, ]) + ->add('keywords', Type\CollectionType::class, [ + 'label' => 'Keywords', + 'entry_type' => EntityType::class, + 'entry_options' => [ + 'class' => Keyword::class, + ], + 'by_reference' => true, + 'allow_add' => true, + 'allow_delete' => true, + 'delete_empty' => true, + 'required' => false, + ]) ->add('spatialExtent', Type\HiddenType::class, [ 'required' => true, ]) diff --git a/src/Form/KeywordDatasetType.php b/src/Form/KeywordDatasetType.php new file mode 100644 index 0000000000..80b3cb150c --- /dev/null +++ b/src/Form/KeywordDatasetType.php @@ -0,0 +1,38 @@ +add('keywords', CollectionType::class, [ + 'label' => 'Keywords', + 'entry_type' => EntityType::class, + 'entry_options' => [ + 'class' => Keyword::class, + ], + 'by_reference' => true, + 'allow_add' => true, + 'allow_delete' => true, + 'delete_empty' => true, + 'required' => false, + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + // Configure your form options here + ]); + } +} diff --git a/src/Repository/DatasetRepository.php b/src/Repository/DatasetRepository.php index a584196cf4..7aa869ad1f 100644 --- a/src/Repository/DatasetRepository.php +++ b/src/Repository/DatasetRepository.php @@ -12,6 +12,13 @@ /** * Dataset Entity Repository class. + * + * @extends ServiceEntityRepository + * + * @method Dataset|null find($id, $lockMode = null, $lockVersion = null) + * @method Dataset|null findOneBy(array $criteria, array $orderBy = null) + * @method Dataset[] findAll() + * @method Dataset[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class DatasetRepository extends ServiceEntityRepository { @@ -298,4 +305,21 @@ public function findByFunder(Funder $funder): array return $qb->getQuery()->getResult(); } + + public function getListOfApprovedDatasetWithoutKeywords(): array + { + $qb = $this->createQueryBuilder('d'); + $qb + ->select('d.udi, d.title, d.acceptedDate') + ->addSelect($qb->expr()->count('k.id') . ' as keywords') + ->join(DatasetSubmission::class, 'ds', 'WITH', 'd.datasetSubmission = ds.id') + ->leftJoin('ds.keywords', 'k') + ->where('d.datasetStatus = ?1') + ->groupBy('d.udi, d.acceptedDate, d.title') + ->orderBy('d.acceptedDate', 'DESC') + ->setParameter(1, Dataset::DATASET_STATUS_ACCEPTED) + ; + + return $qb->getQuery()->getArrayResult(); + } } diff --git a/src/Repository/KeywordRepository.php b/src/Repository/KeywordRepository.php new file mode 100644 index 0000000000..a4fe2302d9 --- /dev/null +++ b/src/Repository/KeywordRepository.php @@ -0,0 +1,87 @@ + + * + * @method Keyword|null find($id, $lockMode = null, $lockVersion = null) + * @method Keyword|null findOneBy(array $criteria, array $orderBy = null) + * @method Keyword[] findAll() + * @method Keyword[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + */ +class KeywordRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Keyword::class); + } + + public function save(Keyword $entity, bool $flush = false): void + { + $this->getEntityManager()->persist($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function remove(Keyword $entity, bool $flush = false): void + { + $this->getEntityManager()->remove($entity); + + if ($flush) { + $this->getEntityManager()->flush(); + } + } + + public function getKeywords(?KeywordType $keywordType) + { + $qb = $this->createQueryBuilder('k'); + + $qb + ->where('k.type = :type') + ->setParameter('type', $keywordType); + if ($keywordType === KeywordType::TYPE_GCMD) { + $qb->andWhere($qb->expr()->notLike('k.displayPath', ':path')) + ->orWhere('k.label = :science') + ->setParameter('path', '%EARTH SCIENCE SERVICES%') + ->setParameter('science', 'Science Keywords'); + } + + $qb->orderBy('k.label'); + + return $qb->getQuery() + ->getResult(); + } + +// /** +// * @return Keyword[] Returns an array of Keyword objects +// */ +// public function findByExampleField($value): array +// { +// return $this->createQueryBuilder('k') +// ->andWhere('k.exampleField = :val') +// ->setParameter('val', $value) +// ->orderBy('k.id', 'ASC') +// ->setMaxResults(10) +// ->getQuery() +// ->getResult() +// ; +// } + +// public function findOneBySomeField($value): ?Keyword +// { +// return $this->createQueryBuilder('k') +// ->andWhere('k.exampleField = :val') +// ->setParameter('val', $value) +// ->getQuery() +// ->getOneOrNullResult() +// ; +// } +} diff --git a/src/Util/JsonSerializer.php b/src/Util/JsonSerializer.php index 6a050cb976..ab18209154 100644 --- a/src/Util/JsonSerializer.php +++ b/src/Util/JsonSerializer.php @@ -38,12 +38,12 @@ public function __construct(SerializerInterface $serializer) /** * Serialize an Object into JSON. * - * @param object $object An object to be serialized. - * @param array $groups The serializer groups to use. + * @param mixed $object An object to be serialized. + * @param array $groups The serializer groups to use. * * @return self */ - public function serialize(object $object, array $groups = null): self + public function serialize(mixed $data, array $groups = null): self { $context = SerializationContext::create(); $context->enableMaxDepthChecks(); @@ -52,7 +52,7 @@ public function serialize(object $object, array $groups = null): self $context->setGroups($groups); } - $this->json = $this->serializer->serialize($object, 'json', $context); + $this->json = $this->serializer->serialize($data, 'json', $context); return $this; } diff --git a/src/Util/Metadata.php b/src/Util/Metadata.php index f541d8664d..a21748e5ad 100644 --- a/src/Util/Metadata.php +++ b/src/Util/Metadata.php @@ -19,14 +19,39 @@ class Metadata */ protected $twig; + /** + * The env variable for GCMD Keyword version. + * + * @param gcmdVersion + */ + protected $gcmdVersion; + + /** + * The env variable for GCMD Keyword version year. + * + * @param gcmdVersionYear + */ + protected $gcmdVersionYear; + + /** + * The env variable for ANZSRC Keyword version. + * + * @param aszsrcRevision + */ + protected $anzsrcVersion; + + /** * Class constructor for dependency injection. * * @param TwigEnvironment $twig The twig rendering engine. */ - public function __construct(TwigEnvironment $twig) + public function __construct(TwigEnvironment $twig, string $gcmdVersion, string $anzsrcVersion, string $gcmdVersionYear) { $this->twig = $twig; + $this->gcmdVersion = $gcmdVersion; + $this->gcmdVersionYear = $gcmdVersionYear; + $this->anzsrcVersion = $anzsrcVersion; } /** @@ -47,6 +72,9 @@ public function getXmlRepresentation(Dataset $dataset, array $boundingBoxArray) 'dataset' => $dataset, 'boundingBoxArray' => $boundingBoxArray, 'metadataFilename' => preg_replace('/:/', '-', $dataset->getUdi()) . '-metadata.xml', + 'gcmdVersion' => $this->gcmdVersion, + 'gcmdVersionYear' => $this->gcmdVersionYear, + 'anzsrcVersion' => $this->anzsrcVersion, ) ); } diff --git a/symfony.lock b/symfony.lock index 3717e911bc..ab3b0e014e 100644 --- a/symfony.lock +++ b/symfony.lock @@ -131,9 +131,6 @@ ".php-cs-fixer.dist.php" ] }, - "friendsofphp/proxy-manager-lts": { - "version": "v1.0.5" - }, "friendsofsymfony/elastica-bundle": { "version": "5.0", "recipe": { @@ -208,9 +205,6 @@ "config/packages/prod/jms_serializer.yaml" ] }, - "laminas/laminas-code": { - "version": "3.4.1" - }, "league/flysystem": { "version": "1.1.3" }, diff --git a/templates/Admin/index.html.twig b/templates/Admin/index.html.twig index 4a2a0351de..1a89c23125 100644 --- a/templates/Admin/index.html.twig +++ b/templates/Admin/index.html.twig @@ -17,6 +17,7 @@
  • Remotely Hosted Datasets
  • Maintenance Mode
  • External Download Log Tool
  • +
  • Keyword Dataset Tool (list)
  • Lists
      diff --git a/templates/DIF/dif.html.twig b/templates/DIF/dif.html.twig index fda5b836da..b8168511d9 100644 --- a/templates/DIF/dif.html.twig +++ b/templates/DIF/dif.html.twig @@ -16,11 +16,14 @@ + + + diff --git a/templates/DIF/difForm.html.twig b/templates/DIF/difForm.html.twig index 4af1a5df65..7d06a0ccb2 100644 --- a/templates/DIF/difForm.html.twig +++ b/templates/DIF/difForm.html.twig @@ -128,6 +128,7 @@ + {# Temporary Added Remove this when fully deploying Standard Keywords #}
      @@ -184,6 +185,63 @@
      + {# Temporary Added Remove this when fully deploying Standard Keywords #} + + {# Temporary Hidden #} + + {# Temporary Hidden #}
      @@ -264,8 +322,6 @@
      - -
      diff --git a/templates/Dataland/v2/detail-cards.html.twig b/templates/Dataland/v2/detail-cards.html.twig index 7a6f64a622..283ba3ad8e 100644 --- a/templates/Dataland/v2/detail-cards.html.twig +++ b/templates/Dataland/v2/detail-cards.html.twig @@ -34,6 +34,8 @@
      {% include 'Dataland/v2/point-of-contact.html.twig' %} {% include 'Dataland/v2/collection-period-card.html.twig' %} + +{# Included for temporary disabling of keywords#} {% if dataset.datasetSubmission and dataset.datasetSubmission.themeKeywords %}
      @@ -52,4 +54,11 @@
      {% endif %} + +{# End of temporary disabling of keywords section. #} + +{# Disable this include too for temporary disabling of keywords. +{% include 'Dataland/v2/keyword-card.html.twig' %} +#} + {% include 'Dataland/v2/metadata-card.html.twig' %} diff --git a/templates/Dataland/v2/keyword-card.html.twig b/templates/Dataland/v2/keyword-card.html.twig new file mode 100644 index 0000000000..4d0af44493 --- /dev/null +++ b/templates/Dataland/v2/keyword-card.html.twig @@ -0,0 +1,84 @@ +{% set anzsrc_keywords = [] %} +{% for keyword in dataset.datasetSubmission.keywords %} + {% if keyword.type == constant('\\App\\Enum\\KeywordType::TYPE_ANZSRC') %} + {% set anzsrc_keywords = anzsrc_keywords|merge([keyword]) %} + {% endif %} +{% endfor %} + +{% if anzsrc_keywords %} +
      +
      +
      + Discipline Keyword +
      +
      +

      + {{ anzsrc_keywords|join(', ') }} +

      +
      +
      +
      +{% endif %} + +{% set gcmd_keywords = [] %} +{% for keyword in dataset.datasetSubmission.keywords %} + {% if keyword.type == constant('\\App\\Enum\\KeywordType::TYPE_GCMD') %} + {% set gcmd_keywords = gcmd_keywords|merge([keyword|lower]) %} + {% endif %} +{% endfor %} + +{% if gcmd_keywords %} +
      +
      +
      + GCMD Science Keywords +
      +
      +

      + {{ gcmd_keywords|join(', ') }} +

      +
      +
      +
      +{% endif %} + +{% if dataset.datasetSubmission and dataset.datasetSubmission.themeKeywords %} +
      +
      +
      + Theme keywords +
      +
      +

      + {% set keywords = [] %} + {% for keyword in dataset.datasetSubmission.themeKeywords|default %} + {% set keywords = keywords|merge([keyword|trim('"')]) %} + {% endfor %} + {{ keywords|join(', ') }} +

      +
      +
      +
      +{% endif %} + +{% if dataset.datasetSubmission and dataset.datasetSubmission.placeKeywords %} +
      +
      +
      + Place keywords +
      +
      +

      + {% set keywords = [] %} + {% for keyword in dataset.datasetSubmission.placeKeywords|default %} + {% set keywords = keywords|merge([keyword|trim('"')]) %} + {% endfor %} + {{ keywords|join(', ') }} +

      +
      +
      +
      +{% endif %} + + + diff --git a/templates/DatasetReview/index.html.twig b/templates/DatasetReview/index.html.twig index 23bd35594d..e846be9017 100644 --- a/templates/DatasetReview/index.html.twig +++ b/templates/DatasetReview/index.html.twig @@ -31,10 +31,12 @@ + + diff --git a/templates/DatasetReview/keywords.html.twig b/templates/DatasetReview/keywords.html.twig index 81896bbd3e..63c1c54a7f 100644 --- a/templates/DatasetReview/keywords.html.twig +++ b/templates/DatasetReview/keywords.html.twig @@ -165,3 +165,5 @@ + +{% include 'DatasetSubmission/standard-keywords.html.twig' %} \ No newline at end of file diff --git a/templates/DatasetSubmission/index.html.twig b/templates/DatasetSubmission/index.html.twig index f7ad9d78cb..1b760421b7 100644 --- a/templates/DatasetSubmission/index.html.twig +++ b/templates/DatasetSubmission/index.html.twig @@ -29,6 +29,7 @@ + @@ -36,6 +37,7 @@ + diff --git a/templates/DatasetSubmission/keywords.html.twig b/templates/DatasetSubmission/keywords.html.twig index 81896bbd3e..9a45f7baeb 100644 --- a/templates/DatasetSubmission/keywords.html.twig +++ b/templates/DatasetSubmission/keywords.html.twig @@ -164,4 +164,6 @@ - + + + {% include 'DatasetSubmission/standard-keywords.html.twig' with {'hideKeywords': true} %} \ No newline at end of file diff --git a/templates/DatasetSubmission/standard-keywords.html.twig b/templates/DatasetSubmission/standard-keywords.html.twig new file mode 100644 index 0000000000..15f880aedf --- /dev/null +++ b/templates/DatasetSubmission/standard-keywords.html.twig @@ -0,0 +1,138 @@ +
      + {% set keywords = [] %} + {% for keyword in form.keywords %} + + {% set keywords = keywords|merge([keyword.vars.value]) %} + {% endfor %} + + + {% for keyword in form.keywords %} + + {% endfor %} +
      + + + + {% if hideKeywords|default == true %} +
      + {% endif %} +
      +
      + Field of Research + + + + +
      + + +
      + Please select at least one of the following Australian and New Zealand Standard Research Classification (ANZSRC) Fields of Research (FOR) keywords. + Click on the arrow to the left of the keyword to view more specific keywords within that category. +
      +
      + +
      +
      + + +
      +
      + + + + + +
      +
      +
      +
      +
      +

      + Please select at least one of the following Australian and New Zealand Standard Research Classification (ANZSRC) Fields of Research (FOR) discipline keywords. + These are standardized keywords used to facilitate dataset discovery. Click on the arrow to the left of the keyword to view more specific keywords within that category. + Please select the most detailed keyword level applicable. + For definitions and more information on ANZSRC FOR discipline keywords please visit Australian and New Zealand Standard Research Classification 2020: Fields of Research. +

      +
      +
      + +
      +
      +
      +
      +
      + +
      +
      + Earth Science Keywords + + + + +
      + + +
      + Please select at least one of the following Global Change Master Directory (GCMD) keywords. + Click on the arrow to the left of the keyword to view more specific keywords within that category. +
      +
      + +
      +
      + + +
      +
      + + + + + +
      +
      +
      +
      +
      +

      + Please select at least one of the following Global Change Master Directory (GCMD) keywords. + These are standardized keywords used to facilitate dataset discovery. + Click on the arrow to the left of the keyword to view more specific keywords within that category. + Please select the most detailed keyword level applicable. + For definitions and more information on GCMD keywords please visit Global Change Master Directory (GCMD) Keyword. +

      +
      +
      + +
      +
      +
      +
      +
      + {% if hideKeywords|default == true %} +
      + {% endif %} diff --git a/templates/KeywordDataset/edit.html.twig b/templates/KeywordDataset/edit.html.twig new file mode 100644 index 0000000000..0ee0d41aae --- /dev/null +++ b/templates/KeywordDataset/edit.html.twig @@ -0,0 +1,41 @@ +{% extends "template/UI.html.twig" %} + +{% block title %}Keyword to Datasets{% endblock %} + +{%block stylesheets %} + {{ parent() }} + + + + +{%endblock stylesheets %} + +{% block javascripts %} + {{ parent() }} + + + + + +{% endblock %} + +{% block body %} +
      +
      + +

      Edit Dataset

      + {{ form_start(form, {'method': 'PATCH'}) }} + +
      +
      + {% include 'KeywordDataset/submissionForm.html.twig' %} +
      +
      + + {% include 'DatasetSubmission/standard-keywords.html.twig' %} + {{ form_end(form, {render_rest: false}) }} +
      +
      +
      +
      +{% endblock %} diff --git a/templates/KeywordDataset/list.html.twig b/templates/KeywordDataset/list.html.twig new file mode 100644 index 0000000000..a909226d3f --- /dev/null +++ b/templates/KeywordDataset/list.html.twig @@ -0,0 +1,25 @@ +{% extends "template/UI.html.twig" %} + +{% block title %}Keyword to Datasets{% endblock %} + +{% block stylesheets %} + {{ parent() }} + + +{% endblock stylesheets %} + +{% block javascripts %} + {{ parent() }} + + + +{% endblock %} + +{% block body %} +
      +
      +

      List of Approved Dataset without Keywords

      +
      +
      +
      +{% endblock %} diff --git a/templates/KeywordDataset/submissionForm.html.twig b/templates/KeywordDataset/submissionForm.html.twig new file mode 100644 index 0000000000..effde1edb6 --- /dev/null +++ b/templates/KeywordDataset/submissionForm.html.twig @@ -0,0 +1,41 @@ +{{ dataset.udi }}
      + +{{ dataset.title }}
      + +
      {{ dataset.abstract }}

      + +
      {{ dataset.datasetSubmission.purpose }}

      + + +
        +{% for publication in dataset.datasetPublications %} +
      • {{ publication.publication.citationText }} +{% endfor %} +
      + + +
        +{% for keyword in dataset.datasetSubmission.themeKeywords %} +
      • {{ keyword }} +{% endfor %} +
      + + +
        +{% for keyword in dataset.datasetSubmission.topicKeywords %} +
      • {{ keyword }} +{% endfor %} +
      + +
      {{ dataset.datasetSubmission.suppParams }}

      + +
      {{ dataset.datasetSubmission.suppMethods }}

      + +
      {{ dataset.datasetSubmission.suppInstruments }}

      + +
      {{ dataset.datasetSubmission.suppSampScalesRates }}

      + +
      {{ dataset.datasetSubmission.suppErrorAnalysis }}

      + +
      {{ dataset.datasetSubmission.suppProvenance }}

      + diff --git a/templates/MetadataGenerator/ANZSRC_Keywords.xml.twig b/templates/MetadataGenerator/ANZSRC_Keywords.xml.twig new file mode 100644 index 0000000000..1a811a0c1e --- /dev/null +++ b/templates/MetadataGenerator/ANZSRC_Keywords.xml.twig @@ -0,0 +1,31 @@ + + {% for keyword in keywords %} + + {{keyword.label}} + + {% endfor %} + + discipline + + + + + ANZSRC Fields of Research + + + + + {{anzsrcVersion}} + + + revision + + + + + + Australian Bureau of Statistics ({{anzsrcVersion}}): Australian and New Zealand Standard Research Classification (ANZSRC). https://www.abs.gov.au + + + + diff --git a/templates/MetadataGenerator/GCMD_Keywords.xml.twig b/templates/MetadataGenerator/GCMD_Keywords.xml.twig new file mode 100644 index 0000000000..8dad694f04 --- /dev/null +++ b/templates/MetadataGenerator/GCMD_Keywords.xml.twig @@ -0,0 +1,73 @@ + + {% for keyword in keywords %} + + {{keyword.shortDisplayPath}} + + {% endfor %} + + theme + + + + + Global Change Master Directory (GCMD) Science Keywords + + + + + {{gcmdVersionYear}} + + + revision + + + + + {{gcmdVersion}} + + + + + Earth Science Data and Information System, Earth Science Projects Division, Goddard Space Flight Center (GSFC) National Aeronautics and Space Administration (NASA) + + + + + + + Greenbelt + + + MD + + + + + + + https://forum.earthdata.nasa.gov/app.php/tag/GCMD%2BKeywords + + + HTTPS + + + GCMD Keyword Forum Page + + + Global Change Master Directory (GCMD). {{gcmdVersionYear}}. GCMD Keywords, Version {{gcmdVersion}}. Greenbelt, MD: Earth Science Data and Information System, Earth Science Projects Division, Goddard Space Flight Center (GSFC) National Aeronautics and Space Administration (NASA). URL (GCMD Keyword Forum Page): https://forum.earthdata.nasa.gov/app.php/tag/GCMD+Keywords + + + information + + + + + + + custodian + + + + + + diff --git a/templates/MetadataGenerator/MD_DataIdentification.xml.twig b/templates/MetadataGenerator/MD_DataIdentification.xml.twig index 04ad874238..a9eb10e83b 100644 --- a/templates/MetadataGenerator/MD_DataIdentification.xml.twig +++ b/templates/MetadataGenerator/MD_DataIdentification.xml.twig @@ -47,6 +47,25 @@ %} {% endfor %} + +{# Temporarily disable GCMD keywords + {% set gcmd_keywords = [] %} + {% for keyword in dataset.datasetSubmission.keywords %} + {% if keyword.type == constant('\\App\\Enum\\KeywordType::TYPE_GCMD') %} + {% set gcmd_keywords = gcmd_keywords|merge([keyword]) %} + {% endif %} + {% endfor %} + {% if gcmd_keywords %} + + {% include "MetadataGenerator/GCMD_Keywords.xml.twig" with + { + "keywords" : gcmd_keywords, + } + %} + + {% endif %} +#} + {% include "MetadataGenerator/MD_Keywords.xml.twig" with { @@ -55,6 +74,7 @@ } %} + {% include "MetadataGenerator/MD_Keywords.xml.twig" with { @@ -63,6 +83,24 @@ } %} + +{# Temporarily disable anzsrc keywords + {% set anzsrc_keywords = [] %} + {% for keyword in dataset.datasetSubmission.keywords %} + {% if false and keyword.type == constant('\\App\\Enum\\KeywordType::TYPE_ANZSRC') %} + {% set anzsrc_keywords = anzsrc_keywords|merge([keyword]) %} + {% endif %} + {% endfor %} + {% if anzsrc_keywords %} + + {% include "MetadataGenerator/ANZSRC_Keywords.xml.twig" with + { + "keywords" : anzsrc_keywords, + } + %} + + {% endif %} +#} diff --git a/tests/unit/Entity/DatasetSubmissionTest.php b/tests/unit/Entity/DatasetSubmissionTest.php index 5b77ddbab1..d04f5a9797 100644 --- a/tests/unit/Entity/DatasetSubmissionTest.php +++ b/tests/unit/Entity/DatasetSubmissionTest.php @@ -119,6 +119,7 @@ public function setUp() 'getPrimaryPointOfContact' => $this->mockPerson, 'getSecondaryPointOfContact' => null, 'getAdditionalFunders' => null, + 'getKeywords' => new ArrayCollection(), ] ); $this->mockPersonDatasetSubmissionDatasetContact = \Mockery::mock( diff --git a/tests/unit/Util/ISOMetadataExtractorUtilTest.php b/tests/unit/Util/ISOMetadataExtractorUtilTest.php index 17d8385d7a..2facaea974 100644 --- a/tests/unit/Util/ISOMetadataExtractorUtilTest.php +++ b/tests/unit/Util/ISOMetadataExtractorUtilTest.php @@ -386,6 +386,7 @@ public function setUp() 'getFileset' => $this->mockFileset, 'getRemotelyHostedUrl' => '/path/to', 'getAdditionalFunders' => null, + 'getKeywords' => new ArrayCollection(), 'isRemotelyHosted' => false, ] );