From 1b5305bc833b753f33c6a88655e957e5a3777c4b Mon Sep 17 00:00:00 2001 From: "lenaick.moreira" Date: Wed, 25 Feb 2026 10:21:56 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B08834=20-=20Add=20compatibility=20with=20?= =?UTF-8?q?PHP=208.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 13 +- composer.lock | 1130 +- lib/apereo/phpcas/README.md | 2 +- lib/apereo/phpcas/source/CAS.php | 24 +- lib/apereo/phpcas/source/CAS/Client.php | 8 +- .../phpcas/source/CAS/PGTStorage/Db.php | 2 +- .../phpcas/source/CAS/PGTStorage/File.php | 6 + .../source/CAS/Request/CurlMultiRequest.php | 7 +- .../phpcas/source/CAS/Request/CurlRequest.php | 4 +- lib/bin/patch-type-declarations | 0 lib/bin/patch-type-declarations.bat | 5 - lib/bin/php-parse | 0 lib/bin/php-parse.bat | 5 - lib/bin/pscss | 119 - lib/bin/pscss.bat | 5 - lib/bin/var-dump-server | 0 lib/bin/var-dump-server.bat | 5 - lib/bin/yaml-lint | 0 lib/bin/yaml-lint.bat | 5 - lib/composer/autoload_classmap.php | 403 +- lib/composer/autoload_namespaces.php | 1 - lib/composer/autoload_psr4.php | 2 + lib/composer/autoload_static.php | 419 +- lib/composer/installed.json | 1222 +- lib/composer/installed.php | 314 +- lib/composer/platform_check.php | 1 + lib/firebase/php-jwt/CHANGELOG.md | 59 + lib/firebase/php-jwt/README.md | 15 +- lib/firebase/php-jwt/composer.json | 6 +- lib/firebase/php-jwt/src/CachedKeySet.php | 20 +- lib/firebase/php-jwt/src/ExpiredException.php | 12 + lib/firebase/php-jwt/src/JWK.php | 12 +- lib/firebase/php-jwt/src/JWT.php | 123 +- lib/firebase/php-jwt/src/Key.php | 20 +- lib/guzzlehttp/guzzle/CHANGELOG.md | 50 + lib/guzzlehttp/guzzle/README.md | 10 +- lib/guzzlehttp/guzzle/composer.json | 36 +- lib/guzzlehttp/guzzle/src/BodySummarizer.php | 6 +- lib/guzzlehttp/guzzle/src/Client.php | 4 +- lib/guzzlehttp/guzzle/src/ClientInterface.php | 2 +- .../guzzle/src/Cookie/CookieJar.php | 2 +- .../guzzle/src/Cookie/CookieJarInterface.php | 2 +- .../guzzle/src/Cookie/SetCookie.php | 4 + .../src/Exception/BadResponseException.php | 2 +- .../guzzle/src/Exception/ConnectException.php | 2 +- .../guzzle/src/Exception/RequestException.php | 28 +- .../guzzle/src/Handler/CurlFactory.php | 143 +- .../guzzle/src/Handler/CurlMultiHandler.php | 22 +- .../guzzle/src/Handler/MockHandler.php | 8 +- lib/guzzlehttp/guzzle/src/Handler/Proxy.php | 12 +- .../guzzle/src/Handler/StreamHandler.php | 31 +- lib/guzzlehttp/guzzle/src/HandlerStack.php | 6 +- .../guzzle/src/MessageFormatter.php | 2 +- .../guzzle/src/MessageFormatterInterface.php | 2 +- lib/guzzlehttp/guzzle/src/Middleware.php | 10 +- lib/guzzlehttp/guzzle/src/Pool.php | 2 +- .../guzzle/src/PrepareBodyMiddleware.php | 4 +- lib/guzzlehttp/guzzle/src/RequestOptions.php | 2 +- lib/guzzlehttp/guzzle/src/RetryMiddleware.php | 4 +- lib/guzzlehttp/guzzle/src/TransferStats.php | 4 +- lib/guzzlehttp/guzzle/src/Utils.php | 6 +- lib/guzzlehttp/guzzle/src/functions.php | 2 +- lib/guzzlehttp/promises/CHANGELOG.md | 35 + lib/guzzlehttp/promises/README.md | 8 +- lib/guzzlehttp/promises/composer.json | 2 +- lib/guzzlehttp/promises/src/Coroutine.php | 4 +- lib/guzzlehttp/promises/src/Each.php | 10 +- .../promises/src/FulfilledPromise.php | 4 +- lib/guzzlehttp/promises/src/Promise.php | 8 +- .../promises/src/PromiseInterface.php | 4 +- .../promises/src/RejectedPromise.php | 4 +- .../promises/src/RejectionException.php | 2 +- lib/guzzlehttp/promises/src/Utils.php | 6 +- lib/guzzlehttp/psr7/CHANGELOG.md | 37 + lib/guzzlehttp/psr7/README.md | 17 +- lib/guzzlehttp/psr7/composer.json | 4 +- lib/guzzlehttp/psr7/src/CachingStream.php | 2 +- lib/guzzlehttp/psr7/src/HttpFactory.php | 6 +- lib/guzzlehttp/psr7/src/MessageTrait.php | 4 - lib/guzzlehttp/psr7/src/MultipartStream.php | 2 +- lib/guzzlehttp/psr7/src/Query.php | 19 +- lib/guzzlehttp/psr7/src/Response.php | 2 +- lib/guzzlehttp/psr7/src/StreamWrapper.php | 10 +- lib/guzzlehttp/psr7/src/UploadedFile.php | 26 +- lib/guzzlehttp/psr7/src/Uri.php | 4 +- lib/guzzlehttp/psr7/src/Utils.php | 20 +- lib/league/oauth2-client/LICENSE | 2 +- lib/league/oauth2-client/README.md | 6 +- lib/league/oauth2-client/composer.json | 17 +- .../src/Provider/AbstractProvider.php | 30 +- .../oauth2-client/src/Token/AccessToken.php | 14 +- lib/league/oauth2-google/CHANGELOG.md | 7 + lib/league/oauth2-google/README.md | 4 +- .../oauth2-google/src/Provider/GoogleUser.php | 30 + .../Contracts/AuthorityInterface.php | 93 + .../Contracts/Conditionable.php | 26 + .../Contracts/DataPathInterface.php | 95 + .../Contracts/DomainHostInterface.php | 125 + .../Contracts/FragmentDirective.php | 55 + .../Contracts/FragmentInterface.php | 25 + .../Contracts/HostInterface.php | 59 + .../Contracts/IpHostInterface.php | 49 + .../Contracts/PathInterface.php | 93 + .../Contracts/PortInterface.php | 22 + .../Contracts/QueryInterface.php | 272 + .../Contracts/SegmentedPathInterface.php | 149 + .../Contracts/Transformable.php | 27 + .../uri-interfaces/Contracts/UriAccess.php | 29 + .../Contracts/UriComponentInterface.php | 79 + .../uri-interfaces/Contracts/UriException.php | 20 + .../uri-interfaces/Contracts/UriInterface.php | 321 + .../Contracts/UserInfoInterface.php | 62 + lib/league/uri-interfaces/Encoder.php | 506 + .../Exceptions/ConversionFailed.php | 51 + .../Exceptions/MissingFeature.php | 21 + .../Exceptions/OffsetOutOfBounds.php | 18 + .../uri-interfaces/Exceptions/SyntaxError.php | 21 + .../uri-interfaces/FeatureDetection.php | 64 + lib/league/uri-interfaces/HostFormat.php | 20 + lib/league/uri-interfaces/HostRecord.php | 446 + lib/league/uri-interfaces/HostType.php | 22 + .../uri-interfaces/IPv4/BCMathCalculator.php | 85 + lib/league/uri-interfaces/IPv4/Calculator.php | 95 + lib/league/uri-interfaces/IPv4/Converter.php | 318 + .../uri-interfaces/IPv4/GMPCalculator.php | 70 + .../uri-interfaces/IPv4/NativeCalculator.php | 60 + lib/league/uri-interfaces/IPv6/Converter.php | 178 + lib/league/uri-interfaces/Idna/Converter.php | 231 + lib/league/uri-interfaces/Idna/Error.php | 64 + lib/league/uri-interfaces/Idna/Option.php | 179 + lib/league/uri-interfaces/Idna/Result.php | 64 + .../uri-interfaces/KeyValuePair/Converter.php | 188 + lib/league/uri-interfaces/LICENSE | 20 + .../uri-interfaces/QueryComposeMode.php | 88 + .../uri-interfaces/QueryExtractMode.php | 50 + lib/league/uri-interfaces/QueryString.php | 495 + .../uri-interfaces/StringCoercionMode.php | 158 + .../uri-interfaces/UriComparisonMode.php | 20 + lib/league/uri-interfaces/UriString.php | 755 ++ .../uri-interfaces/UrnComparisonMode.php | 20 + lib/league/uri-interfaces/composer.json | 70 + lib/league/uri/BaseUri.php | 646 + lib/league/uri/Builder.php | 358 + lib/league/uri/Http.php | 386 + lib/league/uri/HttpFactory.php | 25 + lib/league/uri/LICENSE | 20 + lib/league/uri/SchemeType.php | 36 + lib/league/uri/Uri.php | 1967 +++ lib/league/uri/UriInfo.php | 105 + lib/league/uri/UriResolver.php | 56 + lib/league/uri/UriScheme.php | 199 + lib/league/uri/UriTemplate.php | 292 + lib/league/uri/UriTemplate/Expression.php | 99 + lib/league/uri/UriTemplate/Operator.php | 225 + lib/league/uri/UriTemplate/Template.php | 148 + .../UriTemplate/TemplateCanNotBeExpanded.php | 44 + lib/league/uri/UriTemplate/VarSpecifier.php | 70 + lib/league/uri/UriTemplate/VariableBag.php | 162 + lib/league/uri/Urn.php | 602 + lib/league/uri/composer.json | 84 + lib/nikic/php-parser/README.md | 2 +- lib/nikic/php-parser/composer.json | 9 +- .../lib/PhpParser/Builder/ClassConst.php | 4 +- .../lib/PhpParser/BuilderFactory.php | 2 +- .../lib/PhpParser/BuilderHelpers.php | 7 +- .../lib/PhpParser/ConstExprEvaluator.php | 2 +- .../Internal/PrintableNewAnonClassNode.php | 2 +- lib/nikic/php-parser/lib/PhpParser/Lexer.php | 2 +- .../lib/PhpParser/Lexer/Emulative.php | 2 +- .../php-parser/lib/PhpParser/NameContext.php | 2 +- .../php-parser/lib/PhpParser/Node/Arg.php | 2 +- .../lib/PhpParser/Node/Expr/ArrayDimFetch.php | 2 +- .../lib/PhpParser/Node/Expr/ArrayItem.php | 2 +- .../lib/PhpParser/Node/Expr/Exit_.php | 2 +- .../lib/PhpParser/Node/Expr/Yield_.php | 2 +- .../php-parser/lib/PhpParser/Node/Name.php | 2 +- .../php-parser/lib/PhpParser/Node/Param.php | 2 +- .../lib/PhpParser/Node/Scalar/String_.php | 2 +- .../lib/PhpParser/Node/Stmt/Break_.php | 2 +- .../lib/PhpParser/Node/Stmt/Catch_.php | 2 +- .../lib/PhpParser/Node/Stmt/Continue_.php | 2 +- .../lib/PhpParser/Node/Stmt/Declare_.php | 2 +- .../lib/PhpParser/Node/Stmt/EnumCase.php | 2 +- .../lib/PhpParser/Node/Stmt/Namespace_.php | 2 +- .../PhpParser/Node/Stmt/PropertyProperty.php | 2 +- .../lib/PhpParser/Node/Stmt/Return_.php | 2 +- .../lib/PhpParser/Node/Stmt/StaticVar.php | 2 +- .../lib/PhpParser/Node/Stmt/TryCatch.php | 2 +- .../php-parser/lib/PhpParser/NodeDumper.php | 2 +- .../PhpParser/NodeVisitor/NameResolver.php | 4 +- lib/nikic/php-parser/lib/PhpParser/Parser.php | 2 +- .../lib/PhpParser/Parser/Multiple.php | 2 +- .../php-parser/lib/PhpParser/Parser/Php5.php | 562 +- .../php-parser/lib/PhpParser/Parser/Php7.php | 673 +- .../lib/PhpParser/ParserAbstract.php | 2 +- .../lib/PhpParser/ParserFactory.php | 2 +- .../lib/PhpParser/PrettyPrinter/Standard.php | 2 +- .../lib/PhpParser/PrettyPrinterAbstract.php | 4 +- lib/paragonie/random_compat/LICENSE | 22 - lib/paragonie/random_compat/build-phar.sh | 5 - lib/paragonie/random_compat/composer.json | 34 - .../dist/random_compat.phar.pubkey | 5 - .../dist/random_compat.phar.pubkey.asc | 11 - lib/paragonie/random_compat/lib/random.php | 32 - .../random_compat/other/build_phar.php | 57 - .../random_compat/psalm-autoload.php | 9 - lib/paragonie/random_compat/psalm.xml | 19 - lib/pear/pear-core-minimal/README.rst | 5 - lib/pear/pear-core-minimal/composer.json | 7 +- lib/pear/pear-core-minimal/src/OS/Guess.php | 2 +- lib/pear/pear-core-minimal/src/PEAR.php | 29 +- lib/pear/pear-core-minimal/src/PEAR/Error.php | 14 - lib/pelago/emogrifier/CHANGELOG.md | 128 +- lib/pelago/emogrifier/README.md | 236 +- lib/pelago/emogrifier/composer.json | 40 +- .../src/Caching/SimpleStringCache.php | 2 +- lib/pelago/emogrifier/src/Css/CssDocument.php | 9 +- lib/pelago/emogrifier/src/Css/StyleRule.php | 4 +- lib/pelago/emogrifier/src/CssInliner.php | 353 +- .../HtmlProcessor/AbstractHtmlProcessor.php | 72 +- .../HtmlProcessor/CssToAttributeConverter.php | 66 +- .../src/HtmlProcessor/HtmlNormalizer.php | 4 +- .../src/HtmlProcessor/HtmlPruner.php | 10 +- .../src/Utilities/ArrayIntersector.php | 2 +- .../src/Utilities/CssConcatenator.php | 6 +- lib/psr/http-factory/composer.json | 7 +- .../src/UploadedFileFactoryInterface.php | 12 +- lib/sabberworm/php-css-parser/CHANGELOG.md | 275 +- lib/sabberworm/php-css-parser/README.md | 43 +- lib/sabberworm/php-css-parser/composer.json | 48 +- .../src/CSSList/AtRuleBlockList.php | 11 +- .../src/CSSList/CSSBlockList.php | 49 +- .../php-css-parser/src/CSSList/CSSList.php | 89 +- .../php-css-parser/src/CSSList/Document.php | 49 +- .../php-css-parser/src/CSSList/KeyFrame.php | 11 +- .../php-css-parser/src/Comment/Comment.php | 27 +- .../php-css-parser/src/OutputFormat.php | 121 +- .../php-css-parser/src/OutputFormatter.php | 39 +- lib/sabberworm/php-css-parser/src/Parser.php | 14 +- .../src/Parsing/ParserState.php | 48 +- .../src/Parsing/SourceException.php | 20 +- .../php-css-parser/src/Property/AtRule.php | 4 + .../src/Property/CSSNamespace.php | 24 +- .../php-css-parser/src/Property/Charset.php | 48 +- .../php-css-parser/src/Property/Import.php | 39 +- .../src/Property/KeyframeSelector.php | 2 + .../php-css-parser/src/Property/Selector.php | 12 +- .../php-css-parser/src/Renderable.php | 6 +- .../php-css-parser/src/Rule/Rule.php | 101 +- .../php-css-parser/src/RuleSet/AtRuleSet.php | 16 +- .../src/RuleSet/DeclarationBlock.php | 60 +- .../php-css-parser/src/RuleSet/RuleSet.php | 163 +- .../php-css-parser/src/Settings.php | 25 +- .../php-css-parser/src/Value/CSSFunction.php | 40 +- .../php-css-parser/src/Value/CSSString.php | 13 +- .../php-css-parser/src/Value/CalcFunction.php | 34 +- .../src/Value/CalcRuleValueList.php | 4 +- .../php-css-parser/src/Value/Color.php | 26 +- .../php-css-parser/src/Value/LineName.php | 8 +- .../src/Value/RuleValueList.php | 5 + .../php-css-parser/src/Value/Size.php | 48 +- .../php-css-parser/src/Value/URL.php | 25 +- .../php-css-parser/src/Value/Value.php | 94 +- .../php-css-parser/src/Value/ValueList.php | 16 +- lib/scssphp/scssphp/LICENSE.md | 8 +- lib/scssphp/scssphp/README.md | 2 +- lib/scssphp/scssphp/bin/pscss | 244 - lib/scssphp/scssphp/composer.json | 68 +- lib/scssphp/scssphp/scss.inc.php | 21 - lib/scssphp/scssphp/src/Ast/AstNode.php | 25 + lib/scssphp/scssphp/src/Ast/Css/CssAtRule.php | 35 + .../scssphp/src/Ast/Css/CssComment.php | 34 + .../scssphp/src/Ast/Css/CssDeclaration.php | 84 + lib/scssphp/scssphp/src/Ast/Css/CssImport.php | 37 + .../scssphp/src/Ast/Css/CssKeyframeBlock.php | 30 + .../scssphp/src/Ast/Css/CssMediaQuery.php | 250 + .../scssphp/src/Ast/Css/CssMediaRule.php | 30 + lib/scssphp/scssphp/src/Ast/Css/CssNode.php | 68 + .../scssphp/src/Ast/Css/CssParentNode.php | 37 + .../scssphp/src/Ast/Css/CssStyleRule.php | 44 + .../Css/CssStylesheet.php} | 8 +- .../scssphp/src/Ast/Css/CssSupportsRule.php | 28 + lib/scssphp/scssphp/src/Ast/Css/CssValue.php | 79 + .../src/Ast/Css/IsInvisibleVisitor.php | 57 + .../src/Ast/Css/MediaQueryMergeResult.php | 23 + .../Css/MediaQuerySingletonMergeResult.php | 22 + .../src/Ast/Css/ModifiableCssAtRule.php | 97 + .../src/Ast/Css/ModifiableCssComment.php | 54 + .../src/Ast/Css/ModifiableCssDeclaration.php | 121 + .../src/Ast/Css/ModifiableCssImport.php | 71 + .../Ast/Css/ModifiableCssKeyframeBlock.php | 67 + .../src/Ast/Css/ModifiableCssMediaRule.php | 67 + .../scssphp/src/Ast/Css/ModifiableCssNode.php | 152 + .../src/Ast/Css/ModifiableCssParentNode.php | 85 + .../src/Ast/Css/ModifiableCssStyleRule.php | 88 + .../src/Ast/Css/ModifiableCssStylesheet.php | 55 + .../src/Ast/Css/ModifiableCssSupportsRule.php | 67 + lib/scssphp/scssphp/src/Ast/FakeAstNode.php | 46 + lib/scssphp/scssphp/src/Ast/Sass/Argument.php | 87 + .../src/Ast/Sass/ArgumentDeclaration.php | 243 + .../src/Ast/Sass/ArgumentInvocation.php | 125 + .../scssphp/src/Ast/Sass/AtRootQuery.php | 155 + .../src/Ast/Sass/CallableInvocation.php | 21 + .../src/Ast/Sass/ConfiguredVariable.php | 70 + .../scssphp/src/Ast/Sass/Expression.php | 30 + .../Expression/BinaryOperationExpression.php | 146 + .../Ast/Sass/Expression/BinaryOperator.php | 83 + .../Ast/Sass/Expression/BooleanExpression.php | 55 + .../Ast/Sass/Expression/ColorExpression.php | 56 + .../Sass/Expression/FunctionExpression.php | 134 + .../src/Ast/Sass/Expression/IfExpression.php | 79 + .../InterpolatedFunctionExpression.php | 74 + .../Expression/IsCalculationSafeVisitor.php | 129 + .../Ast/Sass/Expression/ListExpression.php | 132 + .../src/Ast/Sass/Expression/MapExpression.php | 64 + .../Ast/Sass/Expression/NullExpression.php | 47 + .../Ast/Sass/Expression/NumberExpression.php | 64 + .../Expression/ParenthesizedExpression.php | 55 + .../Sass/Expression/SelectorExpression.php | 47 + .../Ast/Sass/Expression/StringExpression.php | 181 + .../Sass/Expression/SupportsExpression.php | 56 + .../Expression/UnaryOperationExpression.php | 82 + .../src/Ast/Sass/Expression/UnaryOperator.php | 37 + .../Ast/Sass/Expression/ValueExpression.php | 59 + .../Sass/Expression/VariableExpression.php | 90 + lib/scssphp/scssphp/src/Ast/Sass/Import.php | 22 + .../src/Ast/Sass/Import/DynamicImport.php | 62 + .../src/Ast/Sass/Import/StaticImport.php | 73 + .../scssphp/src/Ast/Sass/Interpolation.php | 112 + .../scssphp/src/Ast/Sass/SassDeclaration.php | 37 + lib/scssphp/scssphp/src/Ast/Sass/SassNode.php | 24 + .../scssphp/src/Ast/Sass/SassReference.php | 50 + .../scssphp/src/Ast/Sass/Statement.php | 30 + .../src/Ast/Sass/Statement/AtRootRule.php | 72 + .../scssphp/src/Ast/Sass/Statement/AtRule.php | 81 + .../Sass/Statement/CallableDeclaration.php | 82 + .../src/Ast/Sass/Statement/ContentBlock.php | 46 + .../src/Ast/Sass/Statement/ContentRule.php | 64 + .../src/Ast/Sass/Statement/DebugRule.php | 58 + .../src/Ast/Sass/Statement/Declaration.php | 120 + .../src/Ast/Sass/Statement/EachRule.php | 79 + .../src/Ast/Sass/Statement/ElseClause.php | 26 + .../src/Ast/Sass/Statement/ErrorRule.php | 58 + .../src/Ast/Sass/Statement/ExtendRule.php | 72 + .../src/Ast/Sass/Statement/ForRule.php | 91 + .../src/Ast/Sass/Statement/FunctionRule.php | 43 + .../Ast/Sass/Statement/HasContentVisitor.php | 31 + .../src/Ast/Sass/Statement/IfClause.php | 40 + .../scssphp/src/Ast/Sass/Statement/IfRule.php | 95 + .../src/Ast/Sass/Statement/IfRuleClause.php | 64 + .../src/Ast/Sass/Statement/ImportRule.php | 65 + .../src/Ast/Sass/Statement/IncludeRule.php | 141 + .../src/Ast/Sass/Statement/LoudComment.php | 53 + .../src/Ast/Sass/Statement/MediaRule.php | 67 + .../src/Ast/Sass/Statement/MixinRule.php | 79 + .../Ast/Sass/Statement/ParentStatement.php | 81 + .../src/Ast/Sass/Statement/ReturnRule.php | 58 + .../src/Ast/Sass/Statement/SilentComment.php | 55 + .../src/Ast/Sass/Statement/StyleRule.php | 69 + .../src/Ast/Sass/Statement/Stylesheet.php | 106 + .../src/Ast/Sass/Statement/SupportsRule.php | 62 + .../Sass/Statement/VariableDeclaration.php | 146 + .../src/Ast/Sass/Statement/WarnRule.php | 58 + .../src/Ast/Sass/Statement/WhileRule.php | 65 + .../src/Ast/Sass/SupportsCondition.php | 22 + .../SupportsCondition/SupportsAnything.php | 54 + .../SupportsCondition/SupportsDeclaration.php | 80 + .../SupportsCondition/SupportsFunction.php | 64 + .../SupportsInterpolation.php | 53 + .../SupportsCondition/SupportsNegation.php | 56 + .../SupportsCondition/SupportsOperation.php | 80 + .../src/Ast/Selector/AttributeOperator.php | 65 + .../src/Ast/Selector/AttributeSelector.php | 123 + .../src/Ast/Selector/ClassSelector.php | 58 + .../scssphp/src/Ast/Selector/Combinator.php | 49 + .../src/Ast/Selector/ComplexSelector.php | 271 + .../Ast/Selector/ComplexSelectorComponent.php | 99 + .../src/Ast/Selector/CompoundSelector.php | 156 + .../scssphp/src/Ast/Selector/IDSelector.php | 74 + .../src/Ast/Selector/IsBogusVisitor.php | 64 + .../src/Ast/Selector/IsInvisibleVisitor.php | 69 + .../src/Ast/Selector/IsUselessVisitor.php | 43 + .../src/Ast/Selector/ParentSelector.php | 62 + .../Ast/Selector/ParentSelectorVisitor.php | 20 + .../src/Ast/Selector/PlaceholderSelector.php | 69 + .../src/Ast/Selector/PseudoSelector.php | 347 + .../src/Ast/Selector/QualifiedName.php | 65 + .../scssphp/src/Ast/Selector/Selector.php | 127 + .../scssphp/src/Ast/Selector/SelectorList.php | 357 + .../src/Ast/Selector/SimpleSelector.php | 179 + .../scssphp/src/Ast/Selector/TypeSelector.php | 87 + .../src/Ast/Selector/UniversalSelector.php | 110 + lib/scssphp/scssphp/src/Base/Range.php | 57 - lib/scssphp/scssphp/src/Block.php | 73 - lib/scssphp/scssphp/src/Block/AtRootBlock.php | 37 - .../scssphp/src/Block/CallableBlock.php | 46 - .../scssphp/src/Block/ContentBlock.php | 38 - .../scssphp/src/Block/DirectiveBlock.php | 37 - lib/scssphp/scssphp/src/Block/EachBlock.php | 37 - lib/scssphp/scssphp/src/Block/ElseBlock.php | 27 - lib/scssphp/scssphp/src/Block/ElseifBlock.php | 32 - lib/scssphp/scssphp/src/Block/ForBlock.php | 47 - lib/scssphp/scssphp/src/Block/IfBlock.php | 37 - lib/scssphp/scssphp/src/Block/MediaBlock.php | 37 - .../scssphp/src/Block/NestedPropertyBlock.php | 37 - lib/scssphp/scssphp/src/Block/WhileBlock.php | 32 - lib/scssphp/scssphp/src/Cache.php | 272 - lib/scssphp/scssphp/src/Collection/Map.php | 193 + lib/scssphp/scssphp/src/Colors.php | 50 +- lib/scssphp/scssphp/src/CompilationResult.php | 37 +- lib/scssphp/scssphp/src/Compiler.php | 10579 +--------------- .../scssphp/src/Compiler/CachedResult.php | 77 - .../scssphp/src/Compiler/Environment.php | 68 - .../src/Compiler/LegacyValueVisitor.php | 117 + lib/scssphp/scssphp/src/Deprecation.php | 172 + lib/scssphp/scssphp/src/DeprecationStatus.php | 11 + .../src/Evaluation/ArgumentResults.php | 105 + .../scssphp/src/Evaluation/Environment.php | 551 + .../scssphp/src/Evaluation/EvaluateResult.php | 53 + .../src/Evaluation/EvaluateVisitor.php | 3529 ++++++ .../src/Evaluation/EvaluationContext.php | 82 + .../src/Evaluation/LoadedStylesheet.php | 61 + .../Evaluation/VisitorEvaluationContext.php | 62 + .../src/Exception/MultiSpanSassException.php | 73 + .../MultiSpanSassFormatException.php | 26 + .../MultiSpanSassRuntimeException.php | 44 + .../MultiSpanSassScriptException.php | 48 + .../scssphp/src/Exception/ParserException.php | 58 - .../scssphp/src/Exception/SassException.php | 47 +- ...eException.php => SassFormatException.php} | 6 +- .../src/Exception/SassRuntimeException.php | 23 + .../src/Exception/SassScriptException.php | 23 +- .../scssphp/src/Exception/ServerException.php | 26 - .../src/Exception/SimpleSassException.php | 61 + .../Exception/SimpleSassFormatException.php | 64 + .../Exception/SimpleSassRuntimeException.php | 74 + .../scssphp/src/Extend/ComplexSelectorMap.php | 41 + .../src/Extend/ConcreteExtensionStore.php | 1253 ++ .../src/Extend/EmptyExtensionStore.php | 66 + lib/scssphp/scssphp/src/Extend/ExtendMode.php | 44 + lib/scssphp/scssphp/src/Extend/ExtendUtil.php | 1292 ++ lib/scssphp/scssphp/src/Extend/Extender.php | 86 + lib/scssphp/scssphp/src/Extend/Extension.php | 68 + .../scssphp/src/Extend/ExtensionStore.php | 63 + .../scssphp/src/Extend/MergedExtension.php | 83 + lib/scssphp/scssphp/src/Extend/ObjectSet.php | 61 + .../scssphp/src/Extend/SimpleSelectorMap.php | 31 + lib/scssphp/scssphp/src/Formatter.php | 377 - lib/scssphp/scssphp/src/Formatter/Compact.php | 52 - .../scssphp/src/Formatter/Compressed.php | 83 - .../scssphp/src/Formatter/Crunched.php | 87 - lib/scssphp/scssphp/src/Formatter/Debug.php | 127 - .../scssphp/src/Formatter/Expanded.php | 72 - lib/scssphp/scssphp/src/Formatter/Nested.php | 238 - .../scssphp/src/Formatter/OutputBlock.php | 68 - .../scssphp/src/Function/ColorFunctions.php | 886 ++ .../scssphp/src/Function/FunctionRegistry.php | 201 + .../scssphp/src/Function/ListFunctions.php | 183 + .../scssphp/src/Function/MapFunctions.php | 213 + .../scssphp/src/Function/MathFunctions.php | 205 + .../scssphp/src/Function/MetaFunctions.php | 96 + .../src/Function/SelectorFunctions.php | 204 + .../scssphp/src/Function/StringFunctions.php | 219 + .../src/Importer/CanonicalizeContext.php | 76 + .../src/Importer/CanonicalizeResult.php | 28 + .../src/Importer/FilesystemImporter.php | 92 + .../scssphp/src/Importer/ImportCache.php | 297 + .../scssphp/src/Importer/ImportContext.php | 84 + .../scssphp/src/Importer/ImportUtil.php | 141 + lib/scssphp/scssphp/src/Importer/Importer.php | 170 + .../scssphp/src/Importer/ImporterResult.php | 59 + .../src/Importer/LegacyCallbackImporter.php | 66 + .../scssphp/src/Importer/NoOpImporter.php | 44 + .../src/Importer/SpecialCacheValue.php | 21 + .../Logger/DeprecationProcessingLogger.php | 195 + .../scssphp/src/Logger/LoggerInterface.php | 25 +- .../scssphp/src/Logger/QuietLogger.php | 13 +- .../scssphp/src/Logger/StreamLogger.php | 52 +- lib/scssphp/scssphp/src/Node/Number.php | 35 +- lib/scssphp/scssphp/src/OutputStyle.php | 42 +- lib/scssphp/scssphp/src/Parser.php | 4220 ------ .../scssphp/src/Parser/AtRootQueryParser.php | 54 + lib/scssphp/scssphp/src/Parser/CssParser.php | 187 + .../scssphp/src/Parser/FormatException.php | 36 + .../src/Parser/InterpolationBuffer.php | 106 + .../scssphp/src/Parser/InterpolationMap.php | 234 + .../src/Parser/KeyframeSelectorParser.php | 103 + .../scssphp/src/Parser/LineScanner.php | 181 + .../scssphp/src/Parser/MediaQueryParser.php | 153 + .../src/Parser/MultiSourceFormatException.php | 43 + lib/scssphp/scssphp/src/Parser/Parser.php | 1021 ++ lib/scssphp/scssphp/src/Parser/SassParser.php | 568 + lib/scssphp/scssphp/src/Parser/ScssParser.php | 277 + .../scssphp/src/Parser/SelectorParser.php | 614 + .../scssphp/src/Parser/StringScanner.php | 339 + .../scssphp/src/Parser/StylesheetParser.php | 4356 +++++++ .../src/SassCallable/BuiltInCallable.php | 207 + .../src/SassCallable/PlainCssCallable.php | 42 + .../scssphp/src/SassCallable/SassCallable.php | 71 + .../src/SassCallable/UserDefinedCallable.php | 57 + .../src/Serializer/SerializeResult.php | 29 + .../src/Serializer/SerializeVisitor.php | 1904 +++ .../scssphp/src/Serializer/Serializer.php | 93 + .../src/Serializer/SimpleStringBuffer.php | 60 + .../src/Serializer/SourceMapBuffer.php | 43 + .../scssphp/src/Serializer/StringBuffer.php | 31 + .../Serializer/TrackingSourceMapBuffer.php | 194 + lib/scssphp/scssphp/src/SourceMap/Base64.php | 94 +- .../scssphp/src/SourceMap/Base64VLQ.php | 70 +- .../scssphp/src/SourceMap/Builder/Entry.php | 62 + .../scssphp/src/SourceMap/SingleMapping.php | 197 + .../src/SourceMap/SourceMapGenerator.php | 390 - .../scssphp/src/SourceMap/TargetEntry.php | 29 + .../scssphp/src/SourceMap/TargetLineEntry.php | 28 + .../scssphp/src/SourceSpan/LazyFileSpan.php | 131 + .../scssphp/src/SourceSpan/MultiSpan.php | 127 + lib/scssphp/scssphp/src/StackTrace/Frame.php | 112 + lib/scssphp/scssphp/src/StackTrace/Trace.php | 53 + lib/scssphp/scssphp/src/Syntax.php | 44 + lib/scssphp/scssphp/src/Type.php | 178 +- lib/scssphp/scssphp/src/Util.php | 187 +- lib/scssphp/scssphp/src/Util/ArrayUtil.php | 48 + lib/scssphp/scssphp/src/Util/AstUtil.php | 39 + lib/scssphp/scssphp/src/Util/Box.php | 52 + lib/scssphp/scssphp/src/Util/Character.php | 169 + lib/scssphp/scssphp/src/Util/Equatable.php | 21 + .../scssphp/src/Util/EquatableUtil.php | 88 + lib/scssphp/scssphp/src/Util/ErrorUtil.php | 67 + lib/scssphp/scssphp/src/Util/IterableUtil.php | 98 + lib/scssphp/scssphp/src/Util/ListUtil.php | 160 + lib/scssphp/scssphp/src/Util/LoggerUtil.php | 34 + .../Util/MakeExpressionCalculationSafe.php | 71 + .../scssphp/src/Util/ModifiableBox.php | 67 + lib/scssphp/scssphp/src/Util/NumberUtil.php | 305 + lib/scssphp/scssphp/src/Util/ParserUtil.php | 68 + lib/scssphp/scssphp/src/Util/Path.php | 241 +- lib/scssphp/scssphp/src/Util/SpanUtil.php | 148 + lib/scssphp/scssphp/src/Util/StringUtil.php | 181 + lib/scssphp/scssphp/src/Util/UriUtil.php | 157 + .../src/Value/CalculationOperation.php | 77 + .../scssphp/src/Value/CalculationOperator.php | 49 + lib/scssphp/scssphp/src/Value/ColorFormat.php | 23 + .../scssphp/src/Value/ColorFormatEnum.php | 28 + .../scssphp/src/Value/ComplexSassNumber.php | 92 + .../scssphp/src/Value/ListSeparator.php | 34 + .../scssphp/src/Value/SassArgumentList.php | 60 + lib/scssphp/scssphp/src/Value/SassBoolean.php | 75 + .../scssphp/src/Value/SassCalculation.php | 1153 ++ lib/scssphp/scssphp/src/Value/SassColor.php | 407 + .../scssphp/src/Value/SassFunction.php | 59 + lib/scssphp/scssphp/src/Value/SassList.php | 139 + lib/scssphp/scssphp/src/Value/SassMap.php | 127 + lib/scssphp/scssphp/src/Value/SassMixin.php | 62 + lib/scssphp/scssphp/src/Value/SassNull.php | 62 + lib/scssphp/scssphp/src/Value/SassNumber.php | 1045 ++ lib/scssphp/scssphp/src/Value/SassString.php | 236 + .../src/Value/SingleUnitSassNumber.php | 333 + .../scssphp/src/Value/SpanColorFormat.php | 33 + .../scssphp/src/Value/UnitlessSassNumber.php | 223 + lib/scssphp/scssphp/src/Value/Value.php | 683 + lib/scssphp/scssphp/src/ValueConverter.php | 82 +- lib/scssphp/scssphp/src/Version.php | 4 +- .../src/Visitor/AnySelectorVisitor.php | 97 + .../scssphp/src/Visitor/CssVisitor.php | 79 + .../scssphp/src/Visitor/EveryCssVisitor.php | 82 + .../scssphp/src/Visitor/ExpressionVisitor.php | 126 + .../src/Visitor/ModifiableCssVisitor.php | 78 + .../src/Visitor/ReplaceExpressionVisitor.php | 216 + .../src/Visitor/SelectorSearchVisitor.php | 92 + .../scssphp/src/Visitor/SelectorVisitor.php | 90 + .../src/Visitor/StatementSearchVisitor.php | 230 + .../scssphp/src/Visitor/StatementVisitor.php | 174 + .../scssphp/src/Visitor/ValueVisitor.php | 83 + lib/scssphp/scssphp/src/Warn.php | 56 +- lib/scssphp/source-span/LICENSE.md | 20 + lib/scssphp/source-span/README.md | 22 + lib/scssphp/source-span/composer.json | 43 + .../source-span/src/ConcreteFileSpan.php | 156 + lib/scssphp/source-span/src/FileLocation.php | 52 + lib/scssphp/source-span/src/FileSpan.php | 20 + .../src/Highlighter/AsciiGlyph.php | 18 + .../source-span/src/Highlighter/Highlight.php | 205 + .../src/Highlighter/Highlighter.php | 538 + .../source-span/src/Highlighter/Line.php | 40 + .../source-span/src/SimpleSourceLocation.php | 59 + .../source-span/src/SimpleSourceSpan.php | 53 + .../src/SimpleSourceSpanWithContext.php | 68 + lib/scssphp/source-span/src/SourceFile.php | 285 + .../source-span/src/SourceLocation.php | 47 + .../source-span/src/SourceLocationMixin.php | 34 + lib/scssphp/source-span/src/SourceSpan.php | 110 + .../source-span/src/SourceSpanMixin.php | 132 + .../source-span/src/SourceSpanWithContext.php | 16 + lib/scssphp/source-span/src/Util.php | 362 + lib/symfony/cache/Adapter/AbstractAdapter.php | 6 +- .../cache/Adapter/AbstractTagAwareAdapter.php | 6 +- lib/symfony/cache/Adapter/ApcuAdapter.php | 19 +- lib/symfony/cache/Adapter/ArrayAdapter.php | 10 +- lib/symfony/cache/Adapter/ChainAdapter.php | 6 +- .../cache/Adapter/DoctrineDbalAdapter.php | 4 +- .../cache/Adapter/MemcachedAdapter.php | 4 +- .../cache/Adapter/ParameterNormalizer.php | 2 +- lib/symfony/cache/Adapter/PdoAdapter.php | 22 +- lib/symfony/cache/Adapter/PhpArrayAdapter.php | 43 +- lib/symfony/cache/Adapter/PhpFilesAdapter.php | 15 +- lib/symfony/cache/Adapter/ProxyAdapter.php | 2 +- .../cache/Adapter/RedisTagAwareAdapter.php | 18 +- lib/symfony/cache/Adapter/TagAwareAdapter.php | 9 +- .../cache/Adapter/TraceableAdapter.php | 2 +- lib/symfony/cache/CacheItem.php | 17 +- .../DataCollector/CacheDataCollector.php | 21 +- .../DependencyInjection/CachePoolPass.php | 27 +- .../CachePoolPrunerPass.php | 11 +- lib/symfony/cache/LockRegistry.php | 9 +- .../Messenger/EarlyExpirationDispatcher.php | 4 +- .../Messenger/EarlyExpirationMessage.php | 5 + lib/symfony/cache/Psr16Cache.php | 6 +- .../cache/Traits/AbstractAdapterTrait.php | 9 +- .../cache/Traits/CachedValueInterface.php | 20 + lib/symfony/cache/Traits/ContractsTrait.php | 8 +- .../cache/Traits/FilesystemCommonTrait.php | 11 +- lib/symfony/cache/Traits/FilesystemTrait.php | 2 +- ...s6ProxyTrait.php => Redis61ProxyTrait.php} | 4 +- .../cache/Traits/Redis62ProxyTrait.php | 52 + .../cache/Traits/Redis63ProxyTrait.php | 162 + lib/symfony/cache/Traits/Redis6Proxy.php | 4 +- ...Trait.php => RedisCluster61ProxyTrait.php} | 4 +- .../cache/Traits/RedisCluster62ProxyTrait.php | 47 + .../cache/Traits/RedisCluster63ProxyTrait.php | 162 + .../cache/Traits/RedisCluster6Proxy.php | 4 +- lib/symfony/cache/Traits/RedisTrait.php | 77 +- .../cache/Traits/Relay/BgsaveTrait.php | 36 + lib/symfony/cache/Traits/Relay/CopyTrait.php | 36 + lib/symfony/cache/Traits/Relay/FtTrait.php | 132 + .../cache/Traits/Relay/GeosearchTrait.php | 36 + .../cache/Traits/Relay/GetWithMetaTrait.php | 32 + .../cache/Traits/Relay/GetrangeTrait.php | 36 + lib/symfony/cache/Traits/Relay/HsetTrait.php | 36 + .../cache/Traits/Relay/IsTrackedTrait.php | 32 + lib/symfony/cache/Traits/Relay/MoveTrait.php | 46 + .../Traits/Relay/NullableReturnTrait.php | 96 + .../cache/Traits/Relay/PfcountTrait.php | 36 + .../cache/Traits/Relay/Relay11Trait.php | 132 + .../cache/Traits/Relay/Relay121Trait.php | 51 + .../cache/Traits/Relay/Relay12Trait.php | 107 + .../cache/Traits/Relay/Relay20Trait.php | 47 + .../cache/Traits/Relay/SwapdbTrait.php | 32 + lib/symfony/cache/Traits/RelayProxy.php | 112 +- lib/symfony/cache/Traits/RelayProxyTrait.php | 9 - lib/symfony/config/Builder/ClassBuilder.php | 10 +- .../config/Builder/ConfigBuilderGenerator.php | 70 +- lib/symfony/config/ConfigCacheInterface.php | 2 +- lib/symfony/config/Definition/ArrayNode.php | 20 +- lib/symfony/config/Definition/BaseNode.php | 10 +- lib/symfony/config/Definition/BooleanNode.php | 2 +- .../Builder/ArrayNodeDefinition.php | 30 +- .../Builder/BooleanNodeDefinition.php | 2 +- .../config/Definition/Builder/ExprBuilder.php | 6 +- .../config/Definition/Builder/NodeBuilder.php | 6 +- .../Definition/Builder/NodeDefinition.php | 2 +- .../Builder/NormalizationBuilder.php | 4 +- .../Builder/NumericNodeDefinition.php | 4 +- .../config/Definition/Builder/TreeBuilder.php | 2 +- .../Definition/Builder/ValidationBuilder.php | 2 +- .../Configurator/DefinitionConfigurator.php | 2 +- .../Definition/Dumper/XmlReferenceDumper.php | 14 +- .../Definition/Dumper/YamlReferenceDumper.php | 40 +- lib/symfony/config/Definition/EnumNode.php | 8 +- lib/symfony/config/Definition/FloatNode.php | 2 +- lib/symfony/config/Definition/IntegerNode.php | 2 +- .../Loader/DefinitionFileLoader.php | 6 +- lib/symfony/config/Definition/NumericNode.php | 6 +- lib/symfony/config/Definition/Processor.php | 2 +- .../config/Definition/PrototypedArrayNode.php | 10 +- lib/symfony/config/Definition/ScalarNode.php | 2 +- .../config/Definition/VariableNode.php | 4 +- ...LoaderImportCircularReferenceException.php | 4 +- .../FileLocatorFileNotFoundException.php | 2 +- .../config/Exception/LoaderLoadException.php | 30 +- lib/symfony/config/FileLocator.php | 13 +- lib/symfony/config/FileLocatorInterface.php | 6 +- .../config/Loader/DelegatingLoader.php | 4 +- lib/symfony/config/Loader/FileLoader.php | 8 +- lib/symfony/config/Loader/GlobFileLoader.php | 4 +- lib/symfony/config/Loader/Loader.php | 6 +- lib/symfony/config/Loader/LoaderInterface.php | 4 +- lib/symfony/config/Loader/LoaderResolver.php | 2 +- .../config/Loader/LoaderResolverInterface.php | 2 +- .../Resource/ClassExistenceResource.php | 26 +- .../config/Resource/DirectoryResource.php | 4 +- lib/symfony/config/Resource/FileResource.php | 2 +- lib/symfony/config/Resource/GlobResource.php | 29 +- .../Resource/ReflectionClassResource.php | 24 +- .../config/ResourceCheckerConfigCache.php | 4 +- lib/symfony/config/Util/XmlUtils.php | 16 +- lib/symfony/console/Application.php | 98 +- .../console/CI/GithubActionReporter.php | 12 +- lib/symfony/console/Color.php | 8 +- lib/symfony/console/Command/Command.php | 24 +- .../console/Command/CompleteCommand.php | 4 +- .../console/Command/DumpCompletionCommand.php | 4 +- lib/symfony/console/Command/LazyCommand.php | 6 +- lib/symfony/console/Command/LockableTrait.php | 2 +- .../Command/SignalableCommandInterface.php | 2 +- .../console/Command/TraceableCommand.php | 8 +- .../CommandLoader/ContainerCommandLoader.php | 2 +- .../CommandLoader/FactoryCommandLoader.php | 2 +- .../console/Completion/CompletionInput.php | 2 +- lib/symfony/console/Completion/Suggestion.php | 2 +- lib/symfony/console/Cursor.php | 14 +- .../DataCollector/CommandDataCollector.php | 8 +- .../AddConsoleCommandPass.php | 8 +- .../Descriptor/ApplicationDescription.php | 4 +- lib/symfony/console/Descriptor/Descriptor.php | 2 +- .../console/Descriptor/JsonDescriptor.php | 2 +- .../console/Descriptor/MarkdownDescriptor.php | 4 +- .../Descriptor/ReStructuredTextDescriptor.php | 4 +- .../console/Descriptor/TextDescriptor.php | 20 +- .../console/Descriptor/XmlDescriptor.php | 2 +- .../console/Event/ConsoleErrorEvent.php | 2 +- .../console/EventListener/ErrorListener.php | 2 +- .../Exception/CommandNotFoundException.php | 2 +- .../Formatter/NullOutputFormatterStyle.php | 4 +- .../console/Formatter/OutputFormatter.php | 31 +- .../Formatter/OutputFormatterStyle.php | 6 +- .../Formatter/OutputFormatterStyleStack.php | 4 +- .../console/Helper/DebugFormatterHelper.php | 16 +- .../console/Helper/DescriptorHelper.php | 2 +- lib/symfony/console/Helper/Dumper.php | 2 +- .../console/Helper/FormatterHelper.php | 6 +- lib/symfony/console/Helper/Helper.php | 20 +- lib/symfony/console/Helper/HelperSet.php | 4 +- lib/symfony/console/Helper/OutputWrapper.php | 6 +- lib/symfony/console/Helper/ProcessHelper.php | 12 +- lib/symfony/console/Helper/ProgressBar.php | 21 +- .../console/Helper/ProgressIndicator.php | 2 +- lib/symfony/console/Helper/QuestionHelper.php | 97 +- .../console/Helper/SymfonyQuestionHelper.php | 16 +- lib/symfony/console/Helper/Table.php | 103 +- lib/symfony/console/Helper/TableCell.php | 2 +- lib/symfony/console/Helper/TableCellStyle.php | 4 +- lib/symfony/console/Helper/TableStyle.php | 52 +- .../console/Helper/TerminalInputHelper.php | 156 + lib/symfony/console/Input/ArgvInput.php | 24 +- lib/symfony/console/Input/ArrayInput.php | 10 +- lib/symfony/console/Input/Input.php | 12 +- lib/symfony/console/Input/InputArgument.php | 10 +- lib/symfony/console/Input/InputDefinition.php | 30 +- lib/symfony/console/Input/InputOption.php | 16 +- lib/symfony/console/Input/StringInput.php | 2 +- lib/symfony/console/Logger/ConsoleLogger.php | 4 +- .../Messenger/RunCommandMessageHandler.php | 6 +- lib/symfony/console/Output/AnsiColorMode.php | 6 +- lib/symfony/console/Output/ConsoleOutput.php | 2 +- .../console/Output/ConsoleSectionOutput.php | 4 +- lib/symfony/console/Output/Output.php | 2 +- lib/symfony/console/Output/StreamOutput.php | 32 +- .../console/Output/TrimmedBufferOutput.php | 4 +- .../console/Question/ChoiceQuestion.php | 16 +- lib/symfony/console/Question/Question.php | 8 +- lib/symfony/console/Resources/completion.bash | 4 +- .../console/SignalRegistry/SignalMap.php | 2 +- .../console/SignalRegistry/SignalRegistry.php | 61 +- .../console/SingleCommandApplication.php | 2 +- lib/symfony/console/Style/StyleInterface.php | 4 +- lib/symfony/console/Style/SymfonyStyle.php | 26 +- lib/symfony/console/Terminal.php | 3 +- .../Tester/Constraint/CommandIsSuccessful.php | 2 +- lib/symfony/console/Tester/TesterTrait.php | 6 +- .../Exception/SyntaxErrorException.php | 8 +- .../css-selector/Node/AttributeNode.php | 4 +- lib/symfony/css-selector/Node/ClassNode.php | 2 +- .../Node/CombinedSelectorNode.php | 2 +- lib/symfony/css-selector/Node/ElementNode.php | 4 +- .../css-selector/Node/FunctionNode.php | 2 +- lib/symfony/css-selector/Node/HashNode.php | 2 +- .../css-selector/Node/NegationNode.php | 2 +- lib/symfony/css-selector/Node/PseudoNode.php | 2 +- .../css-selector/Node/SelectorNode.php | 4 +- .../Parser/Handler/StringHandler.php | 2 +- lib/symfony/css-selector/Parser/Parser.php | 2 +- lib/symfony/css-selector/Parser/Token.php | 4 +- .../Parser/Tokenizer/TokenizerPatterns.php | 2 +- .../Extension/AttributeMatchingExtension.php | 14 +- .../XPath/Extension/FunctionExtension.php | 10 +- .../XPath/Extension/HtmlExtension.php | 2 +- .../XPath/Extension/NodeExtension.php | 8 +- .../XPath/Extension/PseudoClassExtension.php | 2 +- lib/symfony/css-selector/XPath/Translator.php | 18 +- lib/symfony/css-selector/XPath/XPathExpr.php | 2 +- .../Command/ServerDumpPlaceholderCommand.php | 2 +- lib/symfony/debug-bundle/DebugBundle.php | 4 +- .../Resources/config/services.php | 1 + .../Argument/BoundArgument.php | 2 +- .../Argument/LazyClosure.php | 21 +- .../Argument/ReferenceSetArgumentTrait.php | 2 +- .../Argument/ServiceLocator.php | 2 +- .../Argument/TaggedIteratorArgument.php | 2 +- .../Attribute/AutoconfigureTag.php | 2 +- .../Attribute/Autowire.php | 12 +- .../Attribute/AutowireCallable.php | 8 +- .../Attribute/AutowireIterator.php | 6 +- .../Attribute/AutowireLocator.php | 14 +- .../dependency-injection/Attribute/Target.php | 6 +- .../Compiler/AbstractRecursivePass.php | 34 +- .../AliasDeprecatedPublicServicesPass.php | 4 +- .../Compiler/AnalyzeServiceReferencesPass.php | 14 +- .../AttributeAutoconfigurationPass.php | 4 +- .../Compiler/AutoAliasServicePass.php | 2 +- .../Compiler/AutowirePass.php | 46 +- .../Compiler/CheckArgumentsValidityPass.php | 12 +- .../Compiler/CheckCircularReferencesPass.php | 35 +- .../Compiler/CheckDefinitionValidityPass.php | 16 +- ...xceptionOnInvalidReferenceBehaviorPass.php | 45 +- .../Compiler/CheckReferenceValidityPass.php | 2 +- .../Compiler/CheckTypeDeclarationsPass.php | 13 +- .../Compiler/DecoratorServicePass.php | 2 +- .../Compiler/DefinitionErrorExceptionPass.php | 11 +- .../Compiler/InlineServiceDefinitionsPass.php | 25 +- .../MergeExtensionConfigurationPass.php | 12 +- .../Compiler/PassConfig.php | 5 +- .../Compiler/PriorityTaggedServiceTrait.php | 17 +- .../Compiler/RegisterEnvVarProcessorsPass.php | 6 +- .../RegisterServiceSubscribersPass.php | 18 +- .../RemoveAbstractDefinitionsPass.php | 2 +- .../Compiler/RemoveBuildParametersPass.php | 9 +- .../Compiler/RemovePrivateAliasesPass.php | 2 +- .../Compiler/RemoveUnusedDefinitionsPass.php | 2 +- .../ReplaceAliasByActualDefinitionPass.php | 12 +- .../Compiler/ResolveBindingsPass.php | 45 +- .../Compiler/ResolveChildDefinitionsPass.php | 6 +- .../Compiler/ResolveClassPass.php | 14 +- .../Compiler/ResolveDecoratorStackPass.php | 6 +- .../Compiler/ResolveFactoryClassPass.php | 2 +- .../Compiler/ResolveHotPathPass.php | 2 +- .../ResolveInstanceofConditionalsPass.php | 4 +- .../Compiler/ResolveInvalidReferencesPass.php | 2 +- .../Compiler/ResolveNamedArgumentsPass.php | 14 +- .../ResolveReferencesToAliasesPass.php | 6 +- .../Compiler/ServiceLocatorTagPass.php | 4 +- .../Compiler/ServiceReferenceGraph.php | 6 +- .../Compiler/ServiceReferenceGraphEdge.php | 9 +- .../Compiler/ValidateEnvPlaceholdersPass.php | 59 +- .../dependency-injection/Container.php | 15 +- .../ContainerAwareTrait.php | 2 +- .../dependency-injection/ContainerBuilder.php | 94 +- .../dependency-injection/Definition.php | 16 +- .../Dumper/GraphvizDumper.php | 24 +- .../dependency-injection/Dumper/PhpDumper.php | 324 +- .../dependency-injection/Dumper/Preloader.php | 8 +- .../dependency-injection/Dumper/XmlDumper.php | 15 +- .../Dumper/YamlDumper.php | 68 +- .../EnvVarLoaderInterface.php | 2 +- .../dependency-injection/EnvVarProcessor.php | 89 +- .../Exception/AutowiringFailedException.php | 6 +- .../Exception/EnvParameterException.php | 4 +- .../InvalidParameterTypeException.php | 4 +- .../ParameterCircularReferenceException.php | 4 +- .../Exception/ParameterNotFoundException.php | 10 +- .../ServiceCircularReferenceException.php | 4 +- .../Exception/ServiceNotFoundException.php | 6 +- .../ExpressionLanguage.php | 2 +- .../ExpressionLanguageProvider.php | 12 +- .../Extension/Extension.php | 2 +- .../Instantiator/LazyServiceInstantiator.php | 2 +- .../LazyProxy/PhpDumper/DumperInterface.php | 4 +- .../LazyProxy/PhpDumper/LazyServiceDumper.php | 26 +- .../LazyProxy/PhpDumper/NullDumper.php | 4 +- .../LazyProxy/ProxyHelper.php | 4 +- .../Loader/ClosureLoader.php | 6 +- .../Configurator/AbstractConfigurator.php | 13 +- .../AbstractServiceConfigurator.php | 6 +- .../Configurator/ContainerConfigurator.php | 12 +- .../Configurator/DefaultsConfigurator.php | 4 +- .../Configurator/InstanceofConfigurator.php | 2 +- .../Configurator/ParametersConfigurator.php | 2 +- .../Configurator/PrototypeConfigurator.php | 2 +- .../Configurator/ServiceConfigurator.php | 2 +- .../Configurator/ServicesConfigurator.php | 10 +- .../Configurator/Traits/DecorateTrait.php | 2 +- .../Configurator/Traits/FactoryTrait.php | 2 +- .../Configurator/Traits/FromCallableTrait.php | 4 +- .../Configurator/Traits/ParentTrait.php | 2 +- .../Loader/Configurator/Traits/TagTrait.php | 4 +- .../Loader/DirectoryLoader.php | 4 +- .../Loader/FileLoader.php | 26 +- .../Loader/GlobFileLoader.php | 4 +- .../Loader/IniFileLoader.php | 6 +- .../Loader/PhpFileLoader.php | 21 +- .../Loader/XmlFileLoader.php | 102 +- .../Loader/YamlFileLoader.php | 141 +- .../EnvPlaceholderParameterBag.php | 8 +- .../ParameterBag/ParameterBag.php | 6 +- .../dependency-injection/ReverseContainer.php | 2 +- .../dependency-injection/ServiceLocator.php | 22 +- .../dependency-injection/TypedReference.php | 2 +- .../dependency-injection/composer.json | 2 +- lib/symfony/dotenv/Command/DebugCommand.php | 118 +- .../dotenv/Command/DotenvDumpCommand.php | 15 +- lib/symfony/dotenv/Dotenv.php | 16 +- .../dotenv/Exception/FormatException.php | 4 +- .../dotenv/Exception/PathException.php | 4 +- lib/symfony/error-handler/BufferingLogger.php | 9 +- lib/symfony/error-handler/Debug.php | 2 +- .../error-handler/DebugClassLoader.php | 46 +- .../error-handler/Error/FatalError.php | 4 +- .../ClassNotFoundErrorEnhancer.php | 7 +- .../UndefinedFunctionErrorEnhancer.php | 4 +- .../UndefinedMethodErrorEnhancer.php | 2 +- lib/symfony/error-handler/ErrorHandler.php | 34 +- .../ErrorRenderer/CliErrorRenderer.php | 2 +- .../ErrorRenderer/FileLinkFormatter.php | 11 +- .../ErrorRenderer/HtmlErrorRenderer.php | 36 +- .../ErrorRenderer/SerializerErrorRenderer.php | 4 +- .../Exception/FlattenException.php | 8 +- .../Resources/assets/css/exception.css | 8 +- .../Resources/assets/js/exception.js | 30 +- .../Resources/bin/patch-type-declarations | 0 .../Resources/views/error.html.php | 6 +- .../Resources/views/exception_full.html.php | 8 +- .../Exception/FileNotFoundException.php | 4 +- .../filesystem/Exception/IOException.php | 2 +- lib/symfony/filesystem/Filesystem.php | 89 +- lib/symfony/filesystem/Path.php | 12 +- lib/symfony/filesystem/composer.json | 3 + lib/symfony/finder/Comparator/Comparator.php | 2 +- .../finder/Comparator/DateComparator.php | 6 +- .../finder/Comparator/NumberComparator.php | 4 +- lib/symfony/finder/Finder.php | 95 +- lib/symfony/finder/Glob.php | 7 + .../Iterator/RecursiveDirectoryIterator.php | 3 +- .../Iterator/VcsIgnoredFilterIterator.php | 6 +- lib/symfony/framework-bundle/CHANGELOG.md | 1 + .../CachePoolClearerCacheWarmer.php | 2 +- .../CacheWarmer/ConfigBuilderCacheWarmer.php | 36 +- .../CacheWarmer/RouterCacheWarmer.php | 4 +- .../Command/AbstractConfigCommand.php | 12 +- .../Command/AssetsInstallCommand.php | 12 +- .../Command/CacheClearCommand.php | 34 +- .../Command/CachePoolClearCommand.php | 16 +- .../Command/CachePoolDeleteCommand.php | 8 +- .../CachePoolInvalidateTagsCommand.php | 8 +- .../Command/CachePoolPruneCommand.php | 15 +- .../Command/CacheWarmupCommand.php | 9 +- .../Command/ConfigDebugCommand.php | 16 +- .../Command/ConfigDumpReferenceCommand.php | 16 +- .../Command/ContainerDebugCommand.php | 20 +- .../Command/ContainerLintCommand.php | 4 +- .../Command/DebugAutowiringCommand.php | 12 +- .../Command/EventDispatcherDebugCommand.php | 6 +- .../Command/RouterDebugCommand.php | 6 +- .../Command/RouterMatchCommand.php | 8 +- .../Command/SecretsDecryptToLocalCommand.php | 10 +- .../SecretsEncryptFromLocalCommand.php | 13 +- .../Command/SecretsGenerateKeysCommand.php | 4 +- .../Command/SecretsListCommand.php | 4 +- .../Command/SecretsRemoveCommand.php | 4 +- .../Command/SecretsSetCommand.php | 8 +- .../Command/TranslationDebugCommand.php | 16 +- .../Command/TranslationUpdateCommand.php | 36 +- .../Command/WorkflowDumpCommand.php | 6 +- .../framework-bundle/Console/Application.php | 4 +- .../Console/Descriptor/Descriptor.php | 12 +- .../Console/Descriptor/JsonDescriptor.php | 20 +- .../Console/Descriptor/MarkdownDescriptor.php | 72 +- .../Console/Descriptor/TextDescriptor.php | 84 +- .../Console/Descriptor/XmlDescriptor.php | 28 +- .../Console/Helper/DescriptorHelper.php | 2 +- .../Controller/AbstractController.php | 24 +- .../Controller/ControllerResolver.php | 2 +- .../Controller/RedirectController.php | 18 +- .../Controller/TemplateController.php | 6 +- .../DataCollector/RouterDataCollector.php | 2 +- .../Compiler/LoggingTranslatorPass.php | 2 +- .../Compiler/ProfilerPass.php | 2 +- .../TestServiceContainerWeakRefPass.php | 5 +- .../Compiler/UnusedTagsPass.php | 4 +- .../Compiler/WorkflowGuardListenerPass.php | 2 +- .../DependencyInjection/Configuration.php | 81 +- .../FrameworkExtension.php | 232 +- .../EventListener/ConsoleProfilerListener.php | 20 +- .../SuggestMissingPackageSubscriber.php | 2 +- .../framework-bundle/FrameworkBundle.php | 21 +- .../framework-bundle/HttpCache/HttpCache.php | 4 +- .../Kernel/MicroKernelTrait.php | 6 +- .../framework-bundle/KernelBrowser.php | 6 +- lib/symfony/framework-bundle/README.md | 2 +- .../Resources/config/asset_mapper.php | 9 +- .../Resources/config/cache.php | 4 +- .../Resources/config/collectors.php | 2 +- .../Resources/config/http_client.php | 1 + .../Resources/config/mailer.php | 6 +- .../Resources/config/notifier.php | 5 +- .../Resources/config/profiling.php | 7 +- .../Resources/config/schema/symfony-1.0.xsd | 14 +- .../Resources/config/serializer.php | 6 +- .../Resources/config/services.php | 3 +- .../Resources/config/session.php | 1 + .../Attribute/AsRoutingConditionService.php | 2 +- .../Routing/DelegatingLoader.php | 2 +- .../RedirectableCompiledUrlMatcher.php | 2 +- .../framework-bundle/Routing/Router.php | 8 +- .../Secrets/AbstractVault.php | 2 +- .../framework-bundle/Secrets/DotenvVault.php | 8 +- .../framework-bundle/Secrets/SodiumVault.php | 40 +- .../Test/BrowserKitAssertionsTrait.php | 18 +- .../Test/DomCrawlerAssertionsTrait.php | 28 +- .../Test/HttpClientAssertionsTrait.php | 11 +- .../framework-bundle/Test/KernelTestCase.php | 40 +- .../Test/MailerAssertionsTrait.php | 12 +- .../Test/NotificationAssertionsTrait.php | 18 +- .../Test/TestBrowserToken.php | 2 +- .../framework-bundle/Test/TestContainer.php | 12 +- .../framework-bundle/Test/WebTestCase.php | 2 +- .../Translation/Translator.php | 4 +- lib/symfony/framework-bundle/composer.json | 9 +- lib/symfony/http-foundation/AcceptHeader.php | 204 +- lib/symfony/http-foundation/Request.php | 2 +- .../Storage/Handler/PdoSessionHandler.php | 23 +- .../Storage/Handler/SessionHandlerFactory.php | 1 + .../Attribute/MapQueryParameter.php | 2 +- .../http-kernel/Attribute/WithLogLevel.php | 2 +- lib/symfony/http-kernel/Bundle/Bundle.php | 4 +- .../CacheClearer/Psr6CacheClearer.php | 4 +- .../http-kernel/CacheWarmer/CacheWarmer.php | 2 +- .../CacheWarmer/CacheWarmerAggregate.php | 8 +- .../http-kernel/Config/FileLocator.php | 2 +- .../Controller/ArgumentResolver.php | 12 +- .../BackedEnumValueResolver.php | 4 +- .../DateTimeValueResolver.php | 2 +- .../NotTaggedControllerValueResolver.php | 4 +- .../QueryParameterValueResolver.php | 12 +- .../RequestPayloadValueResolver.php | 36 +- .../ArgumentResolver/ServiceValueResolver.php | 4 +- .../ArgumentResolver/UidValueResolver.php | 2 +- .../VariadicValueResolver.php | 2 +- .../ContainerControllerResolver.php | 8 +- .../Controller/ControllerResolver.php | 34 +- .../ControllerMetadata/ArgumentMetadata.php | 4 +- .../ArgumentMetadataFactory.php | 2 +- .../DataCollector/AjaxDataCollector.php | 2 +- .../DataCollector/ConfigDataCollector.php | 6 +- .../DataCollector/DataCollector.php | 16 +- .../DataCollector/DataCollectorInterface.php | 2 +- .../DataCollector/DumpDataCollector.php | 27 +- .../DataCollector/EventDataCollector.php | 16 +- .../DataCollector/ExceptionDataCollector.php | 2 +- .../DataCollector/LoggerDataCollector.php | 6 +- .../DataCollector/MemoryDataCollector.php | 2 +- .../DataCollector/RequestDataCollector.php | 10 +- .../DataCollector/RouterDataCollector.php | 4 +- .../DataCollector/TimeDataCollector.php | 4 +- .../Debug/ErrorHandlerConfigurator.php | 2 +- .../Debug/TraceableEventDispatcher.php | 6 +- .../FragmentRendererPass.php | 4 +- .../DependencyInjection/LoggerPass.php | 4 +- ...RegisterControllerArgumentLocatorsPass.php | 23 +- ...oveEmptyControllerArgumentLocatorsPass.php | 4 +- .../ResettableServicePass.php | 2 +- .../Event/ControllerArgumentsEvent.php | 4 +- .../http-kernel/Event/ControllerEvent.php | 8 +- lib/symfony/http-kernel/Event/KernelEvent.php | 2 +- lib/symfony/http-kernel/Event/ViewEvent.php | 2 +- .../EventListener/AbstractSessionListener.php | 2 +- .../EventListener/CacheAttributeListener.php | 32 +- .../EventListener/DebugHandlersListener.php | 23 +- .../EventListener/DumpListener.php | 4 +- .../EventListener/ErrorListener.php | 18 +- .../EventListener/LocaleListener.php | 2 +- .../EventListener/ProfilerListener.php | 4 +- .../EventListener/RouterListener.php | 8 +- .../EventListener/SurrogateListener.php | 2 +- .../Exception/AccessDeniedHttpException.php | 2 +- .../Exception/BadRequestHttpException.php | 2 +- .../Exception/ConflictHttpException.php | 2 +- .../Exception/GoneHttpException.php | 2 +- .../http-kernel/Exception/HttpException.php | 2 +- .../Exception/LengthRequiredHttpException.php | 2 +- .../Exception/LockedHttpException.php | 2 +- .../MethodNotAllowedHttpException.php | 2 +- .../Exception/NotAcceptableHttpException.php | 2 +- .../Exception/NotFoundHttpException.php | 2 +- .../PreconditionFailedHttpException.php | 2 +- .../PreconditionRequiredHttpException.php | 2 +- .../Exception/ResolverNotFoundException.php | 2 +- .../ServiceUnavailableHttpException.php | 2 +- .../TooManyRequestsHttpException.php | 2 +- .../Exception/UnauthorizedHttpException.php | 2 +- .../UnprocessableEntityHttpException.php | 2 +- .../UnsupportedMediaTypeHttpException.php | 2 +- .../AbstractSurrogateFragmentRenderer.php | 2 +- .../http-kernel/Fragment/FragmentHandler.php | 4 +- .../Fragment/FragmentUriGenerator.php | 6 +- .../FragmentUriGeneratorInterface.php | 2 +- .../Fragment/HIncludeFragmentRenderer.php | 6 +- .../Fragment/InlineFragmentRenderer.php | 2 +- .../HttpCache/AbstractSurrogate.php | 18 +- lib/symfony/http-kernel/HttpCache/Esi.php | 8 +- .../http-kernel/HttpCache/HttpCache.php | 35 +- .../HttpCache/ResponseCacheStrategy.php | 58 +- lib/symfony/http-kernel/HttpCache/Ssi.php | 4 +- lib/symfony/http-kernel/HttpCache/Store.php | 14 +- .../HttpCache/SubRequestHandler.php | 6 +- .../HttpCache/SurrogateInterface.php | 2 +- lib/symfony/http-kernel/HttpClientKernel.php | 4 +- lib/symfony/http-kernel/HttpKernel.php | 20 +- lib/symfony/http-kernel/HttpKernelBrowser.php | 2 +- lib/symfony/http-kernel/Kernel.php | 74 +- .../Log/DebugLoggerConfigurator.php | 2 +- .../http-kernel/Log/DebugLoggerInterface.php | 4 +- lib/symfony/http-kernel/Log/Logger.php | 16 +- .../Profiler/FileProfilerStorage.php | 18 +- lib/symfony/http-kernel/Profiler/Profile.php | 2 +- lib/symfony/http-kernel/Profiler/Profiler.php | 8 +- .../Profiler/ProfilerStorageInterface.php | 2 +- .../http-kernel/Resources/welcome.html.php | 6 +- lib/symfony/http-kernel/composer.json | 3 +- .../mailer/Transport/Smtp/SmtpTransport.php | 20 +- lib/symfony/mime/Email.php | 2 +- lib/symfony/mime/Encoder/QpContentEncoder.php | 6 +- lib/symfony/mime/Encoder/QpEncoder.php | 6 +- lib/symfony/mime/MimeTypes.php | 375 +- lib/symfony/mime/Part/MessagePart.php | 8 +- .../mime/Resources/bin/update_mime_types.php | 2 +- lib/symfony/polyfill-ctype/composer.json | 5 +- .../polyfill-intl-grapheme/Grapheme.php | 32 + lib/symfony/polyfill-intl-grapheme/README.md | 1 + .../polyfill-intl-grapheme/bootstrap.php | 7 +- .../polyfill-intl-grapheme/bootstrap80.php | 8 + .../polyfill-intl-grapheme/composer.json | 5 +- lib/symfony/routing/Attribute/Route.php | 14 +- lib/symfony/routing/CompiledRoute.php | 2 +- .../Exception/MethodNotAllowedException.php | 2 +- .../MissingMandatoryParametersException.php | 4 +- .../RouteCircularReferenceException.php | 2 +- .../Generator/CompiledUrlGenerator.php | 4 +- .../Dumper/CompiledUrlGeneratorDumper.php | 6 +- .../routing/Generator/UrlGenerator.php | 4 +- .../routing/Loader/AttributeClassLoader.php | 24 +- .../Loader/AttributeDirectoryLoader.php | 4 +- .../routing/Loader/AttributeFileLoader.php | 6 +- lib/symfony/routing/Loader/ClosureLoader.php | 4 +- .../Configurator/CollectionConfigurator.php | 13 +- .../Configurator/ImportConfigurator.php | 7 +- .../Loader/Configurator/RouteConfigurator.php | 9 +- .../Configurator/RoutingConfigurator.php | 4 +- .../Loader/Configurator/Traits/HostTrait.php | 7 +- .../Traits/LocalizedRouteTrait.php | 6 +- .../Configurator/Traits/PrefixTrait.php | 17 +- .../routing/Loader/ContainerLoader.php | 4 +- .../routing/Loader/DirectoryLoader.php | 4 +- lib/symfony/routing/Loader/GlobFileLoader.php | 4 +- lib/symfony/routing/Loader/ObjectLoader.php | 10 +- lib/symfony/routing/Loader/PhpFileLoader.php | 4 +- .../routing/Loader/Psr4DirectoryLoader.php | 4 +- lib/symfony/routing/Loader/XmlFileLoader.php | 38 +- lib/symfony/routing/Loader/YamlFileLoader.php | 38 +- .../Dumper/CompiledUrlMatcherDumper.php | 15 +- .../Dumper/CompiledUrlMatcherTrait.php | 10 +- .../Matcher/Dumper/StaticPrefixCollection.php | 3 +- .../Matcher/ExpressionLanguageProvider.php | 2 +- .../Matcher/RedirectableUrlMatcher.php | 2 +- .../RedirectableUrlMatcherInterface.php | 2 +- .../routing/Matcher/TraceableUrlMatcher.php | 20 +- lib/symfony/routing/Matcher/UrlMatcher.php | 9 +- .../routing/Requirement/EnumRequirement.php | 6 +- .../routing/Requirement/Requirement.php | 2 +- lib/symfony/routing/Route.php | 4 +- lib/symfony/routing/RouteCollection.php | 15 +- lib/symfony/routing/RouteCompiler.php | 22 +- lib/symfony/routing/Router.php | 10 +- lib/symfony/runtime/SymfonyRuntime.php | 5 +- lib/symfony/stopwatch/Section.php | 6 +- lib/symfony/stopwatch/Stopwatch.php | 6 +- lib/symfony/stopwatch/StopwatchEvent.php | 8 +- lib/symfony/stopwatch/StopwatchPeriod.php | 2 +- lib/symfony/string/AbstractString.php | 22 +- lib/symfony/string/AbstractUnicodeString.php | 28 +- lib/symfony/string/ByteString.php | 18 +- lib/symfony/string/CodePointString.php | 6 +- .../string/Inflector/EnglishInflector.php | 117 +- lib/symfony/string/LazyString.php | 8 +- .../Resources/data/wcswidth_table_wide.php | 46 +- .../Resources/data/wcswidth_table_zero.php | 52 +- lib/symfony/string/Slugger/AsciiSlugger.php | 10 +- .../string/Slugger/SluggerInterface.php | 2 +- lib/symfony/string/UnicodeString.php | 46 +- lib/symfony/string/composer.json | 3 +- .../TranslatableInterface.php | 2 +- .../TranslatorInterface.php | 2 +- .../translation-contracts/TranslatorTrait.php | 10 +- .../translation-contracts/composer.json | 2 +- lib/symfony/twig-bridge/AppVariable.php | 2 +- .../twig-bridge/Command/DebugCommand.php | 38 +- .../twig-bridge/Command/LintCommand.php | 24 +- .../DataCollector/TwigDataCollector.php | 4 +- .../ErrorRenderer/TwigErrorRenderer.php | 4 +- .../twig-bridge/Extension/AssetExtension.php | 4 +- .../twig-bridge/Extension/CodeExtension.php | 132 +- .../twig-bridge/Extension/DumpExtension.php | 2 +- .../twig-bridge/Extension/FormExtension.php | 16 +- .../Extension/HtmlSanitizerExtension.php | 2 +- .../Extension/HttpKernelRuntime.php | 4 +- .../Extension/LogoutUrlExtension.php | 4 +- .../Extension/ProfilerExtension.php | 2 +- .../Extension/SecurityExtension.php | 8 +- .../Extension/StopwatchExtension.php | 2 +- .../Extension/TranslationExtension.php | 16 +- .../Extension/WebLinkExtension.php | 8 +- .../Extension/WorkflowExtension.php | 14 +- .../twig-bridge/Form/TwigRendererEngine.php | 10 +- lib/symfony/twig-bridge/Mime/BodyRenderer.php | 6 +- .../twig-bridge/Mime/NotificationEmail.php | 30 +- .../Mime/WrappedTemplatedEmail.php | 4 +- lib/symfony/twig-bridge/Node/DumpNode.php | 31 +- .../twig-bridge/Node/FormThemeNode.php | 11 +- .../Node/SearchAndRenderBlockNode.php | 10 +- .../twig-bridge/Node/StopwatchNode.php | 19 +- .../Node/TransDefaultDomainNode.php | 11 +- lib/symfony/twig-bridge/Node/TransNode.php | 17 +- lib/symfony/twig-bridge/NodeVisitor/Scope.php | 2 +- .../TranslationDefaultDomainNodeVisitor.php | 32 +- .../NodeVisitor/TranslationNodeVisitor.php | 28 +- .../views/Form/bootstrap_5_layout.html.twig | 10 +- .../views/Form/form_div_layout.html.twig | 12 +- .../views/Form/foundation_5_layout.html.twig | 4 +- .../TokenParser/DumpTokenParser.php | 21 +- .../TokenParser/FormThemeTokenParser.php | 10 +- .../TokenParser/StopwatchTokenParser.php | 7 +- .../TransDefaultDomainTokenParser.php | 4 +- .../TokenParser/TransTokenParser.php | 12 +- .../twig-bridge/UndefinedCallableHandler.php | 4 +- lib/symfony/twig-bridge/composer.json | 6 +- .../DependencyInjection/Configuration.php | 4 +- .../DependencyInjection/TwigExtension.php | 5 + .../twig-bundle/Resources/config/twig.php | 2 + lib/symfony/twig-bundle/TemplateIterator.php | 10 +- lib/symfony/var-dumper/Caster/Caster.php | 2 +- lib/symfony/var-dumper/Caster/ClassStub.php | 4 +- lib/symfony/var-dumper/Caster/ConstStub.php | 2 +- lib/symfony/var-dumper/Caster/CutStub.php | 2 +- lib/symfony/var-dumper/Caster/DOMCaster.php | 9 +- lib/symfony/var-dumper/Caster/DateCaster.php | 8 +- .../var-dumper/Caster/ExceptionCaster.php | 14 +- lib/symfony/var-dumper/Caster/FFICaster.php | 22 +- lib/symfony/var-dumper/Caster/LinkStub.php | 2 +- lib/symfony/var-dumper/Caster/PgSqlCaster.php | 10 +- .../var-dumper/Caster/ReflectionCaster.php | 20 +- lib/symfony/var-dumper/Caster/SplCaster.php | 6 +- .../var-dumper/Caster/SymfonyCaster.php | 16 +- lib/symfony/var-dumper/Caster/TraceStub.php | 2 +- .../var-dumper/Cloner/AbstractCloner.php | 2 +- lib/symfony/var-dumper/Cloner/Data.php | 8 +- .../var-dumper/Cloner/Internal/NoDefault.php | 25 - lib/symfony/var-dumper/Cloner/Stub.php | 36 +- .../Command/Descriptor/CliDescriptor.php | 6 +- .../Command/Descriptor/HtmlDescriptor.php | 8 +- .../var-dumper/Command/ServerDumpCommand.php | 6 +- .../var-dumper/Dumper/AbstractDumper.php | 49 +- lib/symfony/var-dumper/Dumper/CliDumper.php | 44 +- .../ContextProvider/CliContextProvider.php | 2 +- .../RequestContextProvider.php | 2 +- .../ContextProvider/SourceContextProvider.php | 2 +- lib/symfony/var-dumper/Dumper/HtmlDumper.php | 101 +- .../var-dumper/Dumper/ServerDumper.php | 2 +- .../var-dumper/Resources/bin/var-dump-server | 0 .../var-dumper/Resources/functions/dump.php | 2 +- lib/symfony/var-dumper/Server/DumpServer.php | 4 +- lib/symfony/var-dumper/VarDumper.php | 4 +- lib/symfony/var-dumper/composer.json | 1 - .../Controller/ExceptionPanelController.php | 2 +- .../Controller/ProfilerController.php | 14 +- .../Controller/RouterController.php | 10 +- .../Csp/ContentSecurityPolicyHandler.php | 12 +- .../EventListener/WebDebugToolbarListener.php | 6 +- .../Profiler/TemplateManager.php | 4 +- .../Resources/views/Collector/form.html.twig | 14 +- .../views/Collector/mailer.html.twig | 74 +- .../views/Collector/notifier.html.twig | 12 +- .../views/Collector/workflow.html.twig | 1 + .../Resources/views/Profiler/base.html.twig | 6 +- .../views/Profiler/base_js.html.twig | 19 +- .../Resources/views/Profiler/open.css.twig | 1 + .../views/Profiler/results.html.twig | 4 +- .../views/Profiler/toolbar.html.twig | 2 +- .../views/Profiler/toolbar_js.html.twig | 15 +- .../Twig/WebProfilerExtension.php | 11 +- lib/symfony/yaml/Command/LintCommand.php | 20 +- lib/symfony/yaml/Dumper.php | 18 +- lib/symfony/yaml/Escaper.php | 32 +- lib/symfony/yaml/Exception/ParseException.php | 8 +- lib/symfony/yaml/Inline.php | 89 +- lib/symfony/yaml/Parser.php | 75 +- lib/symfony/yaml/Resources/bin/yaml-lint | 0 lib/symfony/yaml/Unescaper.php | 2 +- lib/tecnickcom/tcpdf/CHANGELOG.TXT | 8 + lib/tecnickcom/tcpdf/VERSION | 2 +- lib/tecnickcom/tcpdf/composer.json | 2 +- lib/tecnickcom/tcpdf/include/tcpdf_static.php | 2 +- lib/tecnickcom/tcpdf/tcpdf.php | 35 +- lib/tecnickcom/tcpdf/tools/tcpdf_addfont.php | 0 lib/thenetworg/oauth2-azure/README.md | 4 +- lib/thenetworg/oauth2-azure/composer.json | 2 +- .../oauth2-azure/src/Grant/JwtBearer.php | 4 +- .../oauth2-azure/src/Provider/Azure.php | 23 +- .../src/Provider/AzureResourceOwner.php | 20 + lib/twig/twig/CHANGELOG | 33 +- lib/twig/twig/phpstan-baseline.neon | 25 - lib/twig/twig/phpstan.neon.dist | 9 - lib/twig/twig/splitsh.json | 15 + lib/twig/twig/src/Attribute/AsTwigFilter.php | 18 +- .../twig/src/Attribute/AsTwigFunction.php | 14 +- lib/twig/twig/src/Attribute/AsTwigTest.php | 10 +- lib/twig/twig/src/Environment.php | 16 +- lib/twig/twig/src/Error/Error.php | 6 +- lib/twig/twig/src/ExpressionParser.php | 4 +- .../ExpressionParser/Infix/ArgumentsTrait.php | 6 +- .../Infix/AssignmentExpressionParser.php | 66 + .../Infix/DotExpressionParser.php | 10 +- .../InfixExpressionParserInterface.php | 4 + .../Prefix/LiteralExpressionParser.php | 12 +- .../Prefix/UnaryOperatorExpressionParser.php | 3 +- .../PrefixExpressionParserInterface.php | 4 + .../twig/src/Extension/AttributeExtension.php | 7 +- lib/twig/twig/src/Extension/CoreExtension.php | 26 +- .../twig/src/Extension/ExtensionInterface.php | 3 + lib/twig/twig/src/ExtensionSet.php | 20 + lib/twig/twig/src/Lexer.php | 2 +- lib/twig/twig/src/Node/EmbedNode.php | 2 +- .../src/Node/Expression/ArrayExpression.php | 33 + .../Node/Expression/Binary/MatchesBinary.php | 2 +- .../Expression/Binary/NotSameAsBinary.php | 23 + .../Binary/ObjectDestructuringSetBinary.php | 71 + .../Node/Expression/Binary/SameAsBinary.php | 23 + .../Binary/SequenceDestructuringSetBinary.php | 67 + .../src/Node/Expression/Binary/SetBinary.php | 44 + .../src/Node/Expression/EmptyExpression.php | 33 + .../FunctionNode/EnumCasesFunction.php | 9 + .../Expression/FunctionNode/EnumFunction.php | 9 + .../src/Node/Expression/GetAttrExpression.php | 33 +- .../src/Node/Expression/Test/DefinedTest.php | 8 - lib/twig/twig/src/Node/TypesNode.php | 9 + lib/twig/twig/src/Parser.php | 27 +- lib/twig/twig/src/Resources/debug.php | 4 +- lib/twig/twig/src/Resources/string_loader.php | 4 +- lib/twig/twig/src/Runtime/EscaperRuntime.php | 28 +- lib/twig/twig/src/Template.php | 4 +- .../twig/src/TokenParser/GuardTokenParser.php | 8 +- 1348 files changed, 69899 insertions(+), 25183 deletions(-) mode change 100644 => 100755 lib/bin/patch-type-declarations delete mode 100644 lib/bin/patch-type-declarations.bat mode change 100644 => 100755 lib/bin/php-parse delete mode 100644 lib/bin/php-parse.bat delete mode 100644 lib/bin/pscss delete mode 100644 lib/bin/pscss.bat mode change 100644 => 100755 lib/bin/var-dump-server delete mode 100644 lib/bin/var-dump-server.bat mode change 100644 => 100755 lib/bin/yaml-lint delete mode 100644 lib/bin/yaml-lint.bat create mode 100644 lib/league/uri-interfaces/Contracts/AuthorityInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/Conditionable.php create mode 100644 lib/league/uri-interfaces/Contracts/DataPathInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/DomainHostInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/FragmentDirective.php create mode 100644 lib/league/uri-interfaces/Contracts/FragmentInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/HostInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/IpHostInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/PathInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/PortInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/QueryInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/SegmentedPathInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/Transformable.php create mode 100644 lib/league/uri-interfaces/Contracts/UriAccess.php create mode 100644 lib/league/uri-interfaces/Contracts/UriComponentInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/UriException.php create mode 100644 lib/league/uri-interfaces/Contracts/UriInterface.php create mode 100644 lib/league/uri-interfaces/Contracts/UserInfoInterface.php create mode 100644 lib/league/uri-interfaces/Encoder.php create mode 100644 lib/league/uri-interfaces/Exceptions/ConversionFailed.php create mode 100644 lib/league/uri-interfaces/Exceptions/MissingFeature.php create mode 100644 lib/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php create mode 100644 lib/league/uri-interfaces/Exceptions/SyntaxError.php create mode 100644 lib/league/uri-interfaces/FeatureDetection.php create mode 100644 lib/league/uri-interfaces/HostFormat.php create mode 100644 lib/league/uri-interfaces/HostRecord.php create mode 100644 lib/league/uri-interfaces/HostType.php create mode 100644 lib/league/uri-interfaces/IPv4/BCMathCalculator.php create mode 100644 lib/league/uri-interfaces/IPv4/Calculator.php create mode 100644 lib/league/uri-interfaces/IPv4/Converter.php create mode 100644 lib/league/uri-interfaces/IPv4/GMPCalculator.php create mode 100644 lib/league/uri-interfaces/IPv4/NativeCalculator.php create mode 100644 lib/league/uri-interfaces/IPv6/Converter.php create mode 100644 lib/league/uri-interfaces/Idna/Converter.php create mode 100644 lib/league/uri-interfaces/Idna/Error.php create mode 100644 lib/league/uri-interfaces/Idna/Option.php create mode 100644 lib/league/uri-interfaces/Idna/Result.php create mode 100644 lib/league/uri-interfaces/KeyValuePair/Converter.php create mode 100644 lib/league/uri-interfaces/LICENSE create mode 100644 lib/league/uri-interfaces/QueryComposeMode.php create mode 100644 lib/league/uri-interfaces/QueryExtractMode.php create mode 100644 lib/league/uri-interfaces/QueryString.php create mode 100644 lib/league/uri-interfaces/StringCoercionMode.php create mode 100644 lib/league/uri-interfaces/UriComparisonMode.php create mode 100644 lib/league/uri-interfaces/UriString.php create mode 100644 lib/league/uri-interfaces/UrnComparisonMode.php create mode 100644 lib/league/uri-interfaces/composer.json create mode 100644 lib/league/uri/BaseUri.php create mode 100644 lib/league/uri/Builder.php create mode 100644 lib/league/uri/Http.php create mode 100644 lib/league/uri/HttpFactory.php create mode 100644 lib/league/uri/LICENSE create mode 100644 lib/league/uri/SchemeType.php create mode 100644 lib/league/uri/Uri.php create mode 100644 lib/league/uri/UriInfo.php create mode 100644 lib/league/uri/UriResolver.php create mode 100644 lib/league/uri/UriScheme.php create mode 100644 lib/league/uri/UriTemplate.php create mode 100644 lib/league/uri/UriTemplate/Expression.php create mode 100644 lib/league/uri/UriTemplate/Operator.php create mode 100644 lib/league/uri/UriTemplate/Template.php create mode 100644 lib/league/uri/UriTemplate/TemplateCanNotBeExpanded.php create mode 100644 lib/league/uri/UriTemplate/VarSpecifier.php create mode 100644 lib/league/uri/UriTemplate/VariableBag.php create mode 100644 lib/league/uri/Urn.php create mode 100644 lib/league/uri/composer.json delete mode 100644 lib/paragonie/random_compat/LICENSE delete mode 100644 lib/paragonie/random_compat/build-phar.sh delete mode 100644 lib/paragonie/random_compat/composer.json delete mode 100644 lib/paragonie/random_compat/dist/random_compat.phar.pubkey delete mode 100644 lib/paragonie/random_compat/dist/random_compat.phar.pubkey.asc delete mode 100644 lib/paragonie/random_compat/lib/random.php delete mode 100644 lib/paragonie/random_compat/other/build_phar.php delete mode 100644 lib/paragonie/random_compat/psalm-autoload.php delete mode 100644 lib/paragonie/random_compat/psalm.xml delete mode 100644 lib/pear/pear-core-minimal/src/PEAR/Error.php delete mode 100644 lib/scssphp/scssphp/bin/pscss delete mode 100644 lib/scssphp/scssphp/scss.inc.php create mode 100644 lib/scssphp/scssphp/src/Ast/AstNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssAtRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssComment.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssImport.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssKeyframeBlock.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssMediaQuery.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssMediaRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssParentNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssStyleRule.php rename lib/scssphp/scssphp/src/{Exception/CompilerException.php => Ast/Css/CssStylesheet.php} (52%) create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssSupportsRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/CssValue.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/IsInvisibleVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/MediaQueryMergeResult.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/MediaQuerySingletonMergeResult.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssAtRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssComment.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssImport.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssKeyframeBlock.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssMediaRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssParentNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssStyleRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssStylesheet.php create mode 100644 lib/scssphp/scssphp/src/Ast/Css/ModifiableCssSupportsRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/FakeAstNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Argument.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/ArgumentDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/ArgumentInvocation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/AtRootQuery.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/CallableInvocation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/ConfiguredVariable.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperationExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperator.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/BooleanExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/ColorExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/FunctionExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/IfExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/InterpolatedFunctionExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/IsCalculationSafeVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/ListExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/MapExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/NullExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/NumberExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/ParenthesizedExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/SelectorExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/StringExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/SupportsExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperationExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperator.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/ValueExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Expression/VariableExpression.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Import.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Import/DynamicImport.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Import/StaticImport.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Interpolation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SassDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SassNode.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SassReference.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/AtRootRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/AtRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/CallableDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ContentBlock.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ContentRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/DebugRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/Declaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/EachRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ElseClause.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ErrorRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ExtendRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ForRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/FunctionRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/HasContentVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/IfClause.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/IfRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/IfRuleClause.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ImportRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/IncludeRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/LoudComment.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/MediaRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/MixinRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ParentStatement.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/ReturnRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/SilentComment.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/StyleRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/Stylesheet.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/SupportsRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/VariableDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/WarnRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/Statement/WhileRule.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsAnything.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsDeclaration.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsFunction.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsInterpolation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsNegation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsOperation.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/AttributeOperator.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/AttributeSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/ClassSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/Combinator.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/ComplexSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/ComplexSelectorComponent.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/CompoundSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/IDSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/IsBogusVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/IsInvisibleVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/IsUselessVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/ParentSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/ParentSelectorVisitor.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/PlaceholderSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/PseudoSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/QualifiedName.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/Selector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/SelectorList.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/SimpleSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/TypeSelector.php create mode 100644 lib/scssphp/scssphp/src/Ast/Selector/UniversalSelector.php delete mode 100644 lib/scssphp/scssphp/src/Base/Range.php delete mode 100644 lib/scssphp/scssphp/src/Block.php delete mode 100644 lib/scssphp/scssphp/src/Block/AtRootBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/CallableBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/ContentBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/DirectiveBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/EachBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/ElseBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/ElseifBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/ForBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/IfBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/MediaBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/NestedPropertyBlock.php delete mode 100644 lib/scssphp/scssphp/src/Block/WhileBlock.php delete mode 100644 lib/scssphp/scssphp/src/Cache.php create mode 100644 lib/scssphp/scssphp/src/Collection/Map.php delete mode 100644 lib/scssphp/scssphp/src/Compiler/CachedResult.php delete mode 100644 lib/scssphp/scssphp/src/Compiler/Environment.php create mode 100644 lib/scssphp/scssphp/src/Compiler/LegacyValueVisitor.php create mode 100644 lib/scssphp/scssphp/src/Deprecation.php create mode 100644 lib/scssphp/scssphp/src/DeprecationStatus.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/ArgumentResults.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/Environment.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/EvaluateResult.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/EvaluateVisitor.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/EvaluationContext.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/LoadedStylesheet.php create mode 100644 lib/scssphp/scssphp/src/Evaluation/VisitorEvaluationContext.php create mode 100644 lib/scssphp/scssphp/src/Exception/MultiSpanSassException.php create mode 100644 lib/scssphp/scssphp/src/Exception/MultiSpanSassFormatException.php create mode 100644 lib/scssphp/scssphp/src/Exception/MultiSpanSassRuntimeException.php create mode 100644 lib/scssphp/scssphp/src/Exception/MultiSpanSassScriptException.php delete mode 100644 lib/scssphp/scssphp/src/Exception/ParserException.php rename lib/scssphp/scssphp/src/Exception/{RangeException.php => SassFormatException.php} (62%) create mode 100644 lib/scssphp/scssphp/src/Exception/SassRuntimeException.php delete mode 100644 lib/scssphp/scssphp/src/Exception/ServerException.php create mode 100644 lib/scssphp/scssphp/src/Exception/SimpleSassException.php create mode 100644 lib/scssphp/scssphp/src/Exception/SimpleSassFormatException.php create mode 100644 lib/scssphp/scssphp/src/Exception/SimpleSassRuntimeException.php create mode 100644 lib/scssphp/scssphp/src/Extend/ComplexSelectorMap.php create mode 100644 lib/scssphp/scssphp/src/Extend/ConcreteExtensionStore.php create mode 100644 lib/scssphp/scssphp/src/Extend/EmptyExtensionStore.php create mode 100644 lib/scssphp/scssphp/src/Extend/ExtendMode.php create mode 100644 lib/scssphp/scssphp/src/Extend/ExtendUtil.php create mode 100644 lib/scssphp/scssphp/src/Extend/Extender.php create mode 100644 lib/scssphp/scssphp/src/Extend/Extension.php create mode 100644 lib/scssphp/scssphp/src/Extend/ExtensionStore.php create mode 100644 lib/scssphp/scssphp/src/Extend/MergedExtension.php create mode 100644 lib/scssphp/scssphp/src/Extend/ObjectSet.php create mode 100644 lib/scssphp/scssphp/src/Extend/SimpleSelectorMap.php delete mode 100644 lib/scssphp/scssphp/src/Formatter.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Compact.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Compressed.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Crunched.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Debug.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Expanded.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/Nested.php delete mode 100644 lib/scssphp/scssphp/src/Formatter/OutputBlock.php create mode 100644 lib/scssphp/scssphp/src/Function/ColorFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/FunctionRegistry.php create mode 100644 lib/scssphp/scssphp/src/Function/ListFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/MapFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/MathFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/MetaFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/SelectorFunctions.php create mode 100644 lib/scssphp/scssphp/src/Function/StringFunctions.php create mode 100644 lib/scssphp/scssphp/src/Importer/CanonicalizeContext.php create mode 100644 lib/scssphp/scssphp/src/Importer/CanonicalizeResult.php create mode 100644 lib/scssphp/scssphp/src/Importer/FilesystemImporter.php create mode 100644 lib/scssphp/scssphp/src/Importer/ImportCache.php create mode 100644 lib/scssphp/scssphp/src/Importer/ImportContext.php create mode 100644 lib/scssphp/scssphp/src/Importer/ImportUtil.php create mode 100644 lib/scssphp/scssphp/src/Importer/Importer.php create mode 100644 lib/scssphp/scssphp/src/Importer/ImporterResult.php create mode 100644 lib/scssphp/scssphp/src/Importer/LegacyCallbackImporter.php create mode 100644 lib/scssphp/scssphp/src/Importer/NoOpImporter.php create mode 100644 lib/scssphp/scssphp/src/Importer/SpecialCacheValue.php create mode 100644 lib/scssphp/scssphp/src/Logger/DeprecationProcessingLogger.php delete mode 100644 lib/scssphp/scssphp/src/Parser.php create mode 100644 lib/scssphp/scssphp/src/Parser/AtRootQueryParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/CssParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/FormatException.php create mode 100644 lib/scssphp/scssphp/src/Parser/InterpolationBuffer.php create mode 100644 lib/scssphp/scssphp/src/Parser/InterpolationMap.php create mode 100644 lib/scssphp/scssphp/src/Parser/KeyframeSelectorParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/LineScanner.php create mode 100644 lib/scssphp/scssphp/src/Parser/MediaQueryParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/MultiSourceFormatException.php create mode 100644 lib/scssphp/scssphp/src/Parser/Parser.php create mode 100644 lib/scssphp/scssphp/src/Parser/SassParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/ScssParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/SelectorParser.php create mode 100644 lib/scssphp/scssphp/src/Parser/StringScanner.php create mode 100644 lib/scssphp/scssphp/src/Parser/StylesheetParser.php create mode 100644 lib/scssphp/scssphp/src/SassCallable/BuiltInCallable.php create mode 100644 lib/scssphp/scssphp/src/SassCallable/PlainCssCallable.php create mode 100644 lib/scssphp/scssphp/src/SassCallable/SassCallable.php create mode 100644 lib/scssphp/scssphp/src/SassCallable/UserDefinedCallable.php create mode 100644 lib/scssphp/scssphp/src/Serializer/SerializeResult.php create mode 100644 lib/scssphp/scssphp/src/Serializer/SerializeVisitor.php create mode 100644 lib/scssphp/scssphp/src/Serializer/Serializer.php create mode 100644 lib/scssphp/scssphp/src/Serializer/SimpleStringBuffer.php create mode 100644 lib/scssphp/scssphp/src/Serializer/SourceMapBuffer.php create mode 100644 lib/scssphp/scssphp/src/Serializer/StringBuffer.php create mode 100644 lib/scssphp/scssphp/src/Serializer/TrackingSourceMapBuffer.php create mode 100644 lib/scssphp/scssphp/src/SourceMap/Builder/Entry.php create mode 100644 lib/scssphp/scssphp/src/SourceMap/SingleMapping.php delete mode 100644 lib/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php create mode 100644 lib/scssphp/scssphp/src/SourceMap/TargetEntry.php create mode 100644 lib/scssphp/scssphp/src/SourceMap/TargetLineEntry.php create mode 100644 lib/scssphp/scssphp/src/SourceSpan/LazyFileSpan.php create mode 100644 lib/scssphp/scssphp/src/SourceSpan/MultiSpan.php create mode 100644 lib/scssphp/scssphp/src/StackTrace/Frame.php create mode 100644 lib/scssphp/scssphp/src/StackTrace/Trace.php create mode 100644 lib/scssphp/scssphp/src/Syntax.php create mode 100644 lib/scssphp/scssphp/src/Util/ArrayUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/AstUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/Box.php create mode 100644 lib/scssphp/scssphp/src/Util/Character.php create mode 100644 lib/scssphp/scssphp/src/Util/Equatable.php create mode 100644 lib/scssphp/scssphp/src/Util/EquatableUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/ErrorUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/IterableUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/ListUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/LoggerUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/MakeExpressionCalculationSafe.php create mode 100644 lib/scssphp/scssphp/src/Util/ModifiableBox.php create mode 100644 lib/scssphp/scssphp/src/Util/NumberUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/ParserUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/SpanUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/StringUtil.php create mode 100644 lib/scssphp/scssphp/src/Util/UriUtil.php create mode 100644 lib/scssphp/scssphp/src/Value/CalculationOperation.php create mode 100644 lib/scssphp/scssphp/src/Value/CalculationOperator.php create mode 100644 lib/scssphp/scssphp/src/Value/ColorFormat.php create mode 100644 lib/scssphp/scssphp/src/Value/ColorFormatEnum.php create mode 100644 lib/scssphp/scssphp/src/Value/ComplexSassNumber.php create mode 100644 lib/scssphp/scssphp/src/Value/ListSeparator.php create mode 100644 lib/scssphp/scssphp/src/Value/SassArgumentList.php create mode 100644 lib/scssphp/scssphp/src/Value/SassBoolean.php create mode 100644 lib/scssphp/scssphp/src/Value/SassCalculation.php create mode 100644 lib/scssphp/scssphp/src/Value/SassColor.php create mode 100644 lib/scssphp/scssphp/src/Value/SassFunction.php create mode 100644 lib/scssphp/scssphp/src/Value/SassList.php create mode 100644 lib/scssphp/scssphp/src/Value/SassMap.php create mode 100644 lib/scssphp/scssphp/src/Value/SassMixin.php create mode 100644 lib/scssphp/scssphp/src/Value/SassNull.php create mode 100644 lib/scssphp/scssphp/src/Value/SassNumber.php create mode 100644 lib/scssphp/scssphp/src/Value/SassString.php create mode 100644 lib/scssphp/scssphp/src/Value/SingleUnitSassNumber.php create mode 100644 lib/scssphp/scssphp/src/Value/SpanColorFormat.php create mode 100644 lib/scssphp/scssphp/src/Value/UnitlessSassNumber.php create mode 100644 lib/scssphp/scssphp/src/Value/Value.php create mode 100644 lib/scssphp/scssphp/src/Visitor/AnySelectorVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/CssVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/EveryCssVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/ExpressionVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/ModifiableCssVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/ReplaceExpressionVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/SelectorSearchVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/SelectorVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/StatementSearchVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/StatementVisitor.php create mode 100644 lib/scssphp/scssphp/src/Visitor/ValueVisitor.php create mode 100644 lib/scssphp/source-span/LICENSE.md create mode 100644 lib/scssphp/source-span/README.md create mode 100644 lib/scssphp/source-span/composer.json create mode 100644 lib/scssphp/source-span/src/ConcreteFileSpan.php create mode 100644 lib/scssphp/source-span/src/FileLocation.php create mode 100644 lib/scssphp/source-span/src/FileSpan.php create mode 100644 lib/scssphp/source-span/src/Highlighter/AsciiGlyph.php create mode 100644 lib/scssphp/source-span/src/Highlighter/Highlight.php create mode 100644 lib/scssphp/source-span/src/Highlighter/Highlighter.php create mode 100644 lib/scssphp/source-span/src/Highlighter/Line.php create mode 100644 lib/scssphp/source-span/src/SimpleSourceLocation.php create mode 100644 lib/scssphp/source-span/src/SimpleSourceSpan.php create mode 100644 lib/scssphp/source-span/src/SimpleSourceSpanWithContext.php create mode 100644 lib/scssphp/source-span/src/SourceFile.php create mode 100644 lib/scssphp/source-span/src/SourceLocation.php create mode 100644 lib/scssphp/source-span/src/SourceLocationMixin.php create mode 100644 lib/scssphp/source-span/src/SourceSpan.php create mode 100644 lib/scssphp/source-span/src/SourceSpanMixin.php create mode 100644 lib/scssphp/source-span/src/SourceSpanWithContext.php create mode 100644 lib/scssphp/source-span/src/Util.php create mode 100644 lib/symfony/cache/Traits/CachedValueInterface.php rename lib/symfony/cache/Traits/{Redis6ProxyTrait.php => Redis61ProxyTrait.php} (98%) create mode 100644 lib/symfony/cache/Traits/Redis62ProxyTrait.php create mode 100644 lib/symfony/cache/Traits/Redis63ProxyTrait.php rename lib/symfony/cache/Traits/{RedisCluster6ProxyTrait.php => RedisCluster61ProxyTrait.php} (95%) create mode 100644 lib/symfony/cache/Traits/RedisCluster62ProxyTrait.php create mode 100644 lib/symfony/cache/Traits/RedisCluster63ProxyTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/BgsaveTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/CopyTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/FtTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/GeosearchTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/GetWithMetaTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/GetrangeTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/HsetTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/IsTrackedTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/MoveTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/NullableReturnTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/PfcountTrait.php create mode 100644 lib/symfony/cache/Traits/Relay/Relay11Trait.php create mode 100644 lib/symfony/cache/Traits/Relay/Relay121Trait.php create mode 100644 lib/symfony/cache/Traits/Relay/Relay12Trait.php create mode 100644 lib/symfony/cache/Traits/Relay/Relay20Trait.php create mode 100644 lib/symfony/cache/Traits/Relay/SwapdbTrait.php create mode 100644 lib/symfony/console/Helper/TerminalInputHelper.php mode change 100644 => 100755 lib/symfony/error-handler/Resources/bin/patch-type-declarations delete mode 100644 lib/symfony/var-dumper/Cloner/Internal/NoDefault.php mode change 100644 => 100755 lib/symfony/var-dumper/Resources/bin/var-dump-server mode change 100644 => 100755 lib/symfony/yaml/Resources/bin/yaml-lint mode change 100755 => 100644 lib/tecnickcom/tcpdf/tools/tcpdf_addfont.php delete mode 100644 lib/twig/twig/phpstan-baseline.neon delete mode 100644 lib/twig/twig/phpstan.neon.dist create mode 100644 lib/twig/twig/splitsh.json create mode 100644 lib/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php create mode 100644 lib/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php create mode 100644 lib/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SameAsBinary.php create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php create mode 100644 lib/twig/twig/src/Node/Expression/Binary/SetBinary.php create mode 100644 lib/twig/twig/src/Node/Expression/EmptyExpression.php diff --git a/composer.json b/composer.json index ec1d51244..1e8763ddd 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "type": "project", "license": "AGPL-3.0-only", "require": { - "php": ">=8.1.0 <8.4.0", + "php": ">=8.1.0 <8.5.0", "ext-ctype": "*", "ext-dom": "*", "ext-gd": "*", @@ -12,15 +12,14 @@ "ext-json": "*", "ext-mysqli": "*", "ext-soap": "*", - "apereo/phpcas": "~1.6.0", - "firebase/php-jwt": "^6.4.0", + "apereo/phpcas": "dev-master", "guzzlehttp/guzzle": "^7.5.1", "league/oauth2-google": "^4.0.1", "nikic/php-parser": "^4.14.0", "pear/archive_tar": "~1.4.14", "pelago/emogrifier": "^7.2.0", "psr/log": "^3.0.0", - "scssphp/scssphp": "^1.12.1", + "scssphp/scssphp": "^2.1", "symfony/console": "~6.4.0", "symfony/dotenv": "~6.4.0", "symfony/framework-bundle": "~6.4.0", @@ -40,6 +39,12 @@ "symfony/stopwatch": "~6.4.0", "symfony/web-profiler-bundle": "~6.4.0" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/EsupPortail/phpCAS" + } + ], "suggest": { "ext-libsodium": "Required to use the AttributeEncryptedString.", "ext-openssl": "Can be used as a polyfill if libsodium is not installed", diff --git a/composer.lock b/composer.lock index cb66e47e4..bfede4bcd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0da5da3b165955f386268e6dd8db2a8d", + "content-hash": "40028d2dd127e9eaf8ec60116c4da79e", "packages": [ { "name": "apereo/phpcas", - "version": "1.6.1", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/apereo/phpCAS.git", - "reference": "c129708154852656aabb13d8606cd5b12dbbabac" + "url": "https://github.com/EsupPortail/phpCAS.git", + "reference": "57a7744146a963d8fa80192e0ab351051b711ff6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/apereo/phpCAS/zipball/c129708154852656aabb13d8606cd5b12dbbabac", - "reference": "c129708154852656aabb13d8606cd5b12dbbabac", + "url": "https://api.github.com/repos/EsupPortail/phpCAS/zipball/57a7744146a963d8fa80192e0ab351051b711ff6", + "reference": "57a7744146a963d8fa80192e0ab351051b711ff6", "shasum": "" }, "require": { @@ -31,6 +31,7 @@ "phpstan/phpstan": "^1.5", "phpunit/phpunit": ">=7.5" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -45,15 +46,27 @@ "source/" ] }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "PhpCas\\": "test/CAS/" + } + }, + "scripts": { + "test": [ + "phpunit" + ], + "phpstan": [ + "phpstan" + ] + }, "license": [ "Apache-2.0" ], "authors": [ { "name": "Joachim Fritschi", - "email": "jfritschi@freenet.de", - "homepage": "https://github.com/jfritschi" + "homepage": "https://github.com/jfritschi", + "email": "jfritschi@freenet.de" }, { "name": "Adam Franco", @@ -72,10 +85,10 @@ "jasig" ], "support": { - "issues": "https://github.com/apereo/phpCAS/issues", - "source": "https://github.com/apereo/phpCAS/tree/1.6.1" + "source": "https://github.com/EsupPortail/phpCAS/tree/master", + "issues": "https://github.com/EsupPortail/phpCAS/issues" }, - "time": "2023-02-19T19:52:35+00:00" + "time": "2025-12-02T11:38:23+00:00" }, { "name": "doctrine/lexer", @@ -223,26 +236,26 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.0", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff" + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/5645b43af647b6947daac1d0f659dd1fbe8d3b65", + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65", "shasum": "" }, "require": { - "php": "^7.4||^8.0" + "php": "^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", + "guzzlehttp/guzzle": "^7.4", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", + "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" }, @@ -280,28 +293,28 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.0" + "source": "https://github.com/firebase/php-jwt/tree/v7.0.2" }, - "time": "2023-12-01T16:26:39+00:00" + "time": "2025-12-16T22:17:28+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -312,9 +325,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -392,7 +405,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -408,20 +421,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2025-08-23T22:36:01+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -429,7 +442,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "type": "library", "extra": { @@ -475,7 +488,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -491,20 +504,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2025-08-22T14:34:08+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -519,8 +532,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -591,7 +604,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -607,39 +620,34 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2025-08-23T21:21:41+00:00" }, { "name": "league/oauth2-client", - "version": "2.7.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "160d6274b03562ebeb55ed18399281d8118b76c8" + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/160d6274b03562ebeb55ed18399281d8118b76c8", - "reference": "160d6274b03562ebeb55ed18399281d8118b76c8", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1 || ^2 || ^9.99", - "php": "^5.6 || ^7.0 || ^8.0" + "ext-json": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "php": "^7.1 || >=8.0.0 <8.6.0" }, "require-dev": { "mockery/mockery": "^1.3.5", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpunit/phpunit": "^5.7 || ^6.0 || ^9.5", - "squizlabs/php_codesniffer": "^2.3 || ^3.0" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "League\\OAuth2\\Client\\": "src/" @@ -675,22 +683,22 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-client/issues", - "source": "https://github.com/thephpleague/oauth2-client/tree/2.7.0" + "source": "https://github.com/thephpleague/oauth2-client/tree/2.9.0" }, - "time": "2023-04-16T18:19:15+00:00" + "time": "2025-11-25T22:17:17+00:00" }, { "name": "league/oauth2-google", - "version": "4.0.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-google.git", - "reference": "1b01ba18ba31b29e88771e3e0979e5c91d4afe76" + "reference": "8b9bb43740ac6d994aca881a35f7bacbe98c0ffb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/1b01ba18ba31b29e88771e3e0979e5c91d4afe76", - "reference": "1b01ba18ba31b29e88771e3e0979e5c91d4afe76", + "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/8b9bb43740ac6d994aca881a35f7bacbe98c0ffb", + "reference": "8b9bb43740ac6d994aca881a35f7bacbe98c0ffb", "shasum": "" }, "require": { @@ -730,41 +738,218 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-google/issues", - "source": "https://github.com/thephpleague/oauth2-google/tree/4.0.1" + "source": "https://github.com/thephpleague/oauth2-google/tree/4.1.0" }, - "time": "2023-03-17T15:20:52+00:00" + "time": "2025-12-15T12:24:14+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.18.0", + "name": "league/uri", + "version": "7.8.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-14T17:24:56+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2026-01-15T06:54:53+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.19.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", + "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { "PhpParser\\": "lib/PhpParser" @@ -786,59 +971,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.5" }, - "time": "2023-12-10T21:03:43+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" + "time": "2025-12-06T11:45:25+00:00" }, { "name": "pear/archive_tar", @@ -973,30 +1108,31 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.11", + "version": "v1.10.18", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d" + "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/68d0d32ada737153b7e93b8d3c710ebe70ac867d", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1", + "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1", "shasum": "" }, "require": { "pear/console_getopt": "~1.4", - "pear/pear_exception": "~1.0" + "pear/pear_exception": "~1.0", + "php": ">=5.4" }, "replace": { "rsky/pear-core-min": "self.version" }, "type": "library", "autoload": { - "psr-0": { - "": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "include-path": [ @@ -1017,7 +1153,7 @@ "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", "source": "https://github.com/pear/pear-core-minimal" }, - "time": "2021-08-10T22:31:03+00:00" + "time": "2025-12-14T20:37:07+00:00" }, { "name": "pear/pear_exception", @@ -1080,28 +1216,32 @@ }, { "name": "pelago/emogrifier", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3" + "reference": "6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/727bdf7255b51798307f17dec52ff8a91f1c7de3", - "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6", + "reference": "6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sabberworm/php-css-parser": "^8.4.0", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "sabberworm/php-css-parser": "^8.7.0", "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0 || ^7.0.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpunit/phpunit": "9.6.11", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.7", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-strict-rules": "1.6.1", + "phpunit/phpunit": "9.6.21", "rawr/cross-data-providers": "2.4.0" }, "type": "library", @@ -1134,7 +1274,7 @@ }, { "name": "Jake Hotson", - "email": "jake@qzdesign.co.uk" + "email": "jake.github@qzdesign.co.uk" }, { "name": "Cameron Brooks" @@ -1154,7 +1294,7 @@ "issues": "https://github.com/MyIntervals/emogrifier/issues", "source": "https://github.com/MyIntervals/emogrifier" }, - "time": "2023-12-06T02:00:20+00:00" + "time": "2024-10-28T16:12:26+00:00" }, { "name": "psr/cache", @@ -1362,20 +1502,20 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -1399,7 +1539,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -1411,9 +1551,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", @@ -1564,30 +1704,35 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "v8.9.0", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d8e916507b88e389e26d4ab03c904a082aa66bb9", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9", "shasum": "" }, "require": { "ext-iconv": "*", - "php": ">=5.6.20" + "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41", + "rawr/cross-data-providers": "^2.0.0" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -1600,6 +1745,14 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", @@ -1610,55 +1763,52 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.9.0" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2025-07-11T13:20:48+00:00" }, { "name": "scssphp/scssphp", - "version": "v1.12.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb" + "reference": "d8450c2baf5fb07d00374999d0ea51276974d1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/394ed1e960138710a60d035c1a85d43d0bf0faeb", - "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/d8450c2baf5fb07d00374999d0ea51276974d1b6", + "reference": "d8450c2baf5fb07d00374999d0ea51276974d1b6", "shasum": "" }, "require": { "ext-ctype": "*", "ext-json": "*", - "php": ">=5.6.0" + "ext-mbstring": "*", + "league/uri": "^7.6", + "league/uri-interfaces": "^7.6", + "php": ">=8.1", + "scssphp/source-span": "^1.1", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4", - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4", + "jgthms/bulma": "~0.9.4", + "jiripudil/phpstan-sealed-classes": "^1.3", + "phpstan/phpstan": "^2.1.31", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpunit/phpunit": "^9.5.6", "sass/sass-spec": "*", - "squizlabs/php_codesniffer": "~3.5", - "symfony/phpunit-bridge": "^5.1", + "squizlabs/php_codesniffer": "^3.13", + "symfony/phpunit-bridge": "^7.3 || ^8.0", + "symfony/polyfill-php84": "^1.33", + "symfony/var-dumper": "^6.4 || ^7.3 || ^8.0", "thoughtbot/bourbon": "^7.0", - "twbs/bootstrap": "~5.0", + "twbs/bootstrap": "^5.3", "twbs/bootstrap4": "4.6.1", "zurb/foundation": "~6.7.0" }, - "suggest": { - "ext-iconv": "Can be used as fallback when ext-mbstring is not available", - "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv" - }, - "bin": [ - "bin/pscss" - ], "type": "library", - "extra": { - "bamarni-bin": { - "forward-command": false, - "bin-links": false - } - }, "autoload": { "psr-4": { "ScssPhp\\ScssPhp\\": "src/" @@ -1681,7 +1831,7 @@ } ], "description": "scssphp is a compiler for SCSS written in PHP.", - "homepage": "http://scssphp.github.io/scssphp/", + "homepage": "https://scssphp.github.io/scssphp/", "keywords": [ "css", "less", @@ -1691,9 +1841,68 @@ ], "support": { "issues": "https://github.com/scssphp/scssphp/issues", - "source": "https://github.com/scssphp/scssphp/tree/v1.12.1" + "source": "https://github.com/scssphp/scssphp/tree/v2.1.0" }, - "time": "2024-01-13T12:36:40+00:00" + "time": "2025-11-21T17:27:59+00:00" + }, + { + "name": "scssphp/source-span", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/scssphp/source-span.git", + "reference": "37d653206daf11da1ee60b333984101bc4c27ba2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/scssphp/source-span/zipball/37d653206daf11da1ee60b333984101bc4c27ba2", + "reference": "37d653206daf11da1ee60b333984101bc4c27ba2", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/uri": "^7.6", + "league/uri-interfaces": "^7.6", + "php": ">=8.1" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpunit/phpunit": "^9.5.6", + "squizlabs/php_codesniffer": "~3.5", + "symfony/phpunit-bridge": "^6.4 || ^7.3 || ^8.0", + "symfony/var-dumper": "^6.4 || ^7.3 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "SourceSpan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "homepage": "https://github.com/stof" + } + ], + "description": "Provides a representation for source code locations and spans.", + "keywords": [ + "parsing" + ], + "support": { + "issues": "https://github.com/scssphp/source-span/issues", + "source": "https://github.com/scssphp/source-span/tree/v1.1.0" + }, + "time": "2025-11-21T16:28:19+00:00" }, { "name": "soundasleep/html2text", @@ -1752,16 +1961,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.12", + "version": "v6.4.33", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8" + "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", - "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", + "url": "https://api.github.com/repos/symfony/cache/zipball/5b088fa41eb9568748dc255c45e4054c387ba73b", + "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b", "shasum": "" }, "require": { @@ -1828,7 +2037,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.12" + "source": "https://github.com/symfony/cache/tree/v6.4.33" }, "funding": [ { @@ -1839,12 +2048,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-16T16:01:33+00:00" + "time": "2026-01-27T15:05:20+00:00" }, { "name": "symfony/cache-contracts", @@ -1924,16 +2137,16 @@ }, { "name": "symfony/config", - "version": "v6.4.0", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" + "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", + "url": "https://api.github.com/repos/symfony/config/zipball/d445badf0ad2c2a492e38c0378c39997a56ef97b", + "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b", "shasum": "" }, "require": { @@ -1979,7 +2192,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/v6.4.0" + "source": "https://github.com/symfony/config/tree/v6.4.32" }, "funding": [ { @@ -1990,25 +2203,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2026-01-13T08:40:30+00:00" }, { "name": "symfony/console", - "version": "v6.4.2", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3", + "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3", "shasum": "" }, "require": { @@ -2073,7 +2290,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.32" }, "funding": [ { @@ -2084,25 +2301,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2026-01-13T08:45:59+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9b784413143701aa3c94ac1869a159a9e53e8761", + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761", "shasum": "" }, "require": { @@ -2138,7 +2359,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.24" }, "funding": [ { @@ -2149,25 +2370,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.2", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" + "reference": "b17882e933c4c606620247b6708ab53aa3b88753" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b17882e933c4c606620247b6708ab53aa3b88753", + "reference": "b17882e933c4c606620247b6708ab53aa3b88753", "shasum": "" }, "require": { @@ -2175,7 +2400,7 @@ "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10|^7.0" + "symfony/var-exporter": "^6.4.20|^7.2.5" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -2219,7 +2444,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/v6.4.2" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.32" }, "funding": [ { @@ -2230,12 +2455,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2026-01-23T10:54:33+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2306,16 +2535,16 @@ }, { "name": "symfony/dotenv", - "version": "v6.4.2", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "835f8d2d1022934ac038519de40b88158798c96f" + "reference": "924edbc9631b75302def0258ed1697948b17baf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", - "reference": "835f8d2d1022934ac038519de40b88158798c96f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/924edbc9631b75302def0258ed1697948b17baf6", + "reference": "924edbc9631b75302def0258ed1697948b17baf6", "shasum": "" }, "require": { @@ -2360,7 +2589,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.2" + "source": "https://github.com/symfony/dotenv/tree/v6.4.30" }, "funding": [ { @@ -2371,25 +2600,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2025-11-14T17:33:48+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.0", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8c18400784fcb014dc73c8d5601a9576af7f8ad4", + "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4", "shasum": "" }, "require": { @@ -2435,7 +2668,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.32" }, "funding": [ { @@ -2446,25 +2679,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2026-01-19T19:28:19+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.25", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b0cf3162020603587363f0551cd3be43958611ff" + "reference": "99d7e101826e6610606b9433248f80c1997cd20b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", - "reference": "b0cf3162020603587363f0551cd3be43958611ff", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99d7e101826e6610606b9433248f80c1997cd20b", + "reference": "99d7e101826e6610606b9433248f80c1997cd20b", "shasum": "" }, "require": { @@ -2515,7 +2752,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.32" }, "funding": [ { @@ -2535,7 +2772,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2026-01-05T11:13:48+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2615,16 +2852,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.0", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/441c6b69f7222aadae7cbf5df588496d5ee37789", + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789", "shasum": "" }, "require": { @@ -2632,6 +2869,9 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -2658,7 +2898,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.30" }, "funding": [ { @@ -2669,25 +2909,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-07-26T17:27:13+00:00" + "time": "2025-11-26T14:43:45+00:00" }, { "name": "symfony/finder", - "version": "v6.4.0", + "version": "v6.4.33", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "24965ca011dac87431729640feef8bcf7b5523e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0", + "reference": "24965ca011dac87431729640feef8bcf7b5523e0", "shasum": "" }, "require": { @@ -2722,7 +2966,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v6.4.33" }, "funding": [ { @@ -2733,25 +2977,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-10-31T17:30:12+00:00" + "time": "2026-01-26T13:03:48+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.2", + "version": "v6.4.33", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" + "reference": "9ef2d0b63b9e855ba351e770a603d89699115801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ef2d0b63b9e855ba351e770a603d89699115801", + "reference": "9ef2d0b63b9e855ba351e770a603d89699115801", "shasum": "" }, "require": { @@ -2760,7 +3008,7 @@ "php": ">=8.1", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4.12|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1|^7.0", "symfony/event-dispatcher": "^5.4|^6.0|^7.0", @@ -2790,7 +3038,8 @@ "symfony/mime": "<6.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", - "symfony/scheduler": "<6.4", + "symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", "symfony/serializer": "<6.4", @@ -2829,7 +3078,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/scheduler": "^6.4|^7.0", + "symfony/scheduler": "^6.4.4|^7.0.4", "symfony/security-bundle": "^5.4|^6.0|^7.0", "symfony/semaphore": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4|^7.0", @@ -2842,7 +3091,7 @@ "symfony/web-link": "^5.4|^6.0|^7.0", "symfony/workflow": "^6.4|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.10|^3.0" + "twig/twig": "^2.10|^3.0.4" }, "type": "symfony-bundle", "autoload": { @@ -2870,7 +3119,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/v6.4.2" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.33" }, "funding": [ { @@ -2881,25 +3130,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2026-01-26T14:46:41+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.29", + "version": "v6.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" + "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1a490cc9d595ba7ebe684220e625d1e472ad278", + "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278", "shasum": "" }, "require": { @@ -2947,7 +3200,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.29" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.33" }, "funding": [ { @@ -2967,20 +3220,20 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:40:12+00:00" + "time": "2026-01-27T15:04:55+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.2", + "version": "v6.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4" + "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/73fa5c999d7f741ca544a97d3c791cc97890ae4d", + "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d", "shasum": "" }, "require": { @@ -3029,12 +3282,13 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4.5|^6.0.5|^7.0", "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0|^7.0", "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, @@ -3064,7 +3318,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.33" }, "funding": [ { @@ -3075,25 +3329,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-30T15:31:44+00:00" + "time": "2026-01-28T10:02:13+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.25", + "version": "v6.4.31", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" + "reference": "8835f93333474780fda1b987cae37e33c3e026ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/8835f93333474780fda1b987cae37e33c3e026ca", + "reference": "8835f93333474780fda1b987cae37e33c3e026ca", "shasum": "" }, "require": { @@ -3144,7 +3402,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.25" + "source": "https://github.com/symfony/mailer/tree/v6.4.31" }, "funding": [ { @@ -3164,20 +3422,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T09:41:44+00:00" + "time": "2025-12-12T07:33:25+00:00" }, { "name": "symfony/mime", - "version": "v6.4.24", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" + "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "url": "https://api.github.com/repos/symfony/mime/zipball/7409686879ca36c09fc970a5fa8ff6e93504dba4", + "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4", "shasum": "" }, "require": { @@ -3233,7 +3491,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.24" + "source": "https://github.com/symfony/mime/tree/v6.4.32" }, "funding": [ { @@ -3253,24 +3511,24 @@ "type": "tidelift" } ], - "time": "2025-07-15T12:02:45+00:00" + "time": "2026-01-04T11:53:14+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3280,12 +3538,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3319,7 +3574,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -3330,41 +3585,42 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3400,7 +3656,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -3411,12 +3667,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -3757,16 +4017,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.2", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" + "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", + "url": "https://api.github.com/repos/symfony/routing/zipball/0dc6253e864e71b486e8ba4970a56ab849106ebe", + "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe", "shasum": "" }, "require": { @@ -3820,7 +4080,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.2" + "source": "https://github.com/symfony/routing/tree/v6.4.32" }, "funding": [ { @@ -3831,25 +4091,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-29T15:34:34+00:00" + "time": "2026-01-12T08:31:19+00:00" }, { "name": "symfony/runtime", - "version": "v6.4.24", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "c1cc6721646f546627236c57f835272806087337" + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337", - "reference": "c1cc6721646f546627236c57f835272806087337", + "url": "https://api.github.com/repos/symfony/runtime/zipball/fb3149ee85d3b639dd3e49ea9dda05656f0537e3", + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3", "shasum": "" }, "require": { @@ -3899,7 +4163,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.24" + "source": "https://github.com/symfony/runtime/tree/v6.4.30" }, "funding": [ { @@ -3919,7 +4183,7 @@ "type": "tidelift" } ], - "time": "2025-07-10T08:14:14+00:00" + "time": "2025-12-05T10:55:13+00:00" }, { "name": "symfony/service-contracts", @@ -4010,16 +4274,16 @@ }, { "name": "symfony/string", - "version": "v6.4.2", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/50590a057841fa6bf69d12eceffce3465b9e32cb", + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb", "shasum": "" }, "require": { @@ -4033,7 +4297,6 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", @@ -4076,7 +4339,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.30" }, "funding": [ { @@ -4087,25 +4350,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2025-11-21T18:03:05+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { @@ -4113,12 +4380,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -4154,7 +4421,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -4165,25 +4432,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.4.0", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" + "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8", + "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8", "shasum": "" }, "require": { @@ -4196,7 +4467,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/console": "<5.4", - "symfony/form": "<6.3", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4", "symfony/http-foundation": "<5.4", "symfony/http-kernel": "<6.4", "symfony/mime": "<6.2", @@ -4214,7 +4485,7 @@ "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^6.4|^7.0", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4", "symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -4227,7 +4498,7 @@ "symfony/security-core": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/security-http": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^6.1|^7.0", "symfony/web-link": "^5.4|^6.0|^7.0", @@ -4263,7 +4534,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.32" }, "funding": [ { @@ -4274,25 +4545,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-25T08:25:13+00:00" + "time": "2026-01-03T23:03:08+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.4.0", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c" + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", "shasum": "" }, "require": { @@ -4347,7 +4622,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/v6.4.0" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.32" }, "funding": [ { @@ -4358,25 +4633,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-07T14:57:07+00:00" + "time": "2026-01-05T12:44:39+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.2", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + "reference": "131fc9915e0343052af5ed5040401b481ca192aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/131fc9915e0343052af5ed5040401b481ca192aa", + "reference": "131fc9915e0343052af5ed5040401b481ca192aa", "shasum": "" }, "require": { @@ -4388,7 +4667,6 @@ "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^5.4|^6.0|^7.0", "symfony/error-handler": "^6.3|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", @@ -4432,7 +4710,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.32" }, "funding": [ { @@ -4443,12 +4721,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-28T19:16:56+00:00" + "time": "2026-01-01T13:34:06+00:00" }, { "name": "symfony/var-exporter", @@ -4533,16 +4815,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.0", + "version": "v6.4.30", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8207ae83da19ee3748d6d4f567b4d9a7c656e331", + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331", "shasum": "" }, "require": { @@ -4585,7 +4867,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.30" }, "funding": [ { @@ -4596,25 +4878,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-06T11:00:25+00:00" + "time": "2025-12-02T11:50:18+00:00" }, { "name": "tecnickcom/tcpdf", - "version": "6.10.0", + "version": "6.10.1", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "ca5b6de294512145db96bcbc94e61696599c391d" + "reference": "7a2701251e5d52fc3d508fd71704683eb54f5939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/ca5b6de294512145db96bcbc94e61696599c391d", - "reference": "ca5b6de294512145db96bcbc94e61696599c391d", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/7a2701251e5d52fc3d508fd71704683eb54f5939", + "reference": "7a2701251e5d52fc3d508fd71704683eb54f5939", "shasum": "" }, "require": { @@ -4664,7 +4950,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.10.0" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.10.1" }, "funding": [ { @@ -4672,26 +4958,26 @@ "type": "custom" } ], - "time": "2025-05-27T18:02:28+00:00" + "time": "2025-11-21T10:58:21+00:00" }, { "name": "thenetworg/oauth2-azure", - "version": "v2.2.2", + "version": "v2.2.4", "source": { "type": "git", "url": "https://github.com/TheNetworg/oauth2-azure.git", - "reference": "be204a5135f016470a9c33e82ab48785bbc11af2" + "reference": "a897d60b6b127daa2f27b1b4e62e7af40829d02f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheNetworg/oauth2-azure/zipball/be204a5135f016470a9c33e82ab48785bbc11af2", - "reference": "be204a5135f016470a9c33e82ab48785bbc11af2", + "url": "https://api.github.com/repos/TheNetworg/oauth2-azure/zipball/a897d60b6b127daa2f27b1b4e62e7af40829d02f", + "reference": "a897d60b6b127daa2f27b1b4e62e7af40829d02f", "shasum": "" }, "require": { "ext-json": "*", "ext-openssl": "*", - "firebase/php-jwt": "~3.0||~4.0||~5.0||~6.0", + "firebase/php-jwt": "~3.0||~4.0||~5.0||~6.0||~7.0", "league/oauth2-client": "~2.0", "php": "^7.1|^8.0" }, @@ -4730,22 +5016,22 @@ ], "support": { "issues": "https://github.com/TheNetworg/oauth2-azure/issues", - "source": "https://github.com/TheNetworg/oauth2-azure/tree/v2.2.2" + "source": "https://github.com/TheNetworg/oauth2-azure/tree/v2.2.4" }, - "time": "2023-12-19T12:10:48+00:00" + "time": "2026-01-29T12:43:59+00:00" }, { "name": "twig/twig", - "version": "v3.21.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", "shasum": "" }, "require": { @@ -4799,7 +5085,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" }, "funding": [ { @@ -4811,22 +5097,22 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2026-01-23T21:00:41+00:00" } ], "packages-dev": [ { "name": "symfony/debug-bundle", - "version": "v6.4.0", + "version": "v6.4.27", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202" + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/1e07027423d1d37125b60a50997ada26a9d9d202", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/21a61c55192d558a6b81cdb12e8c010fc9474fe0", + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0", "shasum": "" }, "require": { @@ -4871,7 +5157,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/v6.4.0" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.27" }, "funding": [ { @@ -4882,25 +5168,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-11-01T12:07:38+00:00" + "time": "2025-10-11T17:35:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.0", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", "shasum": "" }, "require": { @@ -4933,7 +5223,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" }, "funding": [ { @@ -4944,25 +5234,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.2", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2" + "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/38462d16856740ec0d1ba2cb902eebf09100dde2", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/011f59e3f3d20f60d11b4e78b8dc63504f56e145", + "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145", "shasum": "" }, "require": { @@ -5015,7 +5309,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.32" }, "funding": [ { @@ -5026,21 +5320,27 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-12-27T08:18:35+00:00" + "time": "2026-01-06T09:13:42+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": { + "apereo/phpcas": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=8.1.0 <8.4.0", + "php": ">=8.1.0 <8.5.0", "ext-ctype": "*", "ext-dom": "*", "ext-gd": "*", diff --git a/lib/apereo/phpcas/README.md b/lib/apereo/phpcas/README.md index d48128912..05f3c7d17 100644 --- a/lib/apereo/phpcas/README.md +++ b/lib/apereo/phpcas/README.md @@ -13,7 +13,7 @@ Api documentation can be found here: https://apereo.github.io/phpCAS/api/ -[![Test](https://github.com/apereo/phpCAS/actions/workflows/test.yml/badge.svg)](https://github.com/apereo/phpCAS/actions/workflows/test.yml) +[![Test](https://github.com/EsupPortail/phpCAS/actions/workflows/test.yml/badge.svg)](https://github.com/EsupPortail/phpCAS/actions/workflows/test.yml) LICENSE ------- diff --git a/lib/apereo/phpcas/source/CAS.php b/lib/apereo/phpcas/source/CAS.php index 71c04755a..bf75c551e 100644 --- a/lib/apereo/phpcas/source/CAS.php +++ b/lib/apereo/phpcas/source/CAS.php @@ -57,7 +57,7 @@ if (!isset($_SERVER['REQUEST_URI']) && isset($_SERVER['SCRIPT_NAME']) && isset($ /** * phpCAS version. accessible for the user by phpCAS::getVersion(). */ -define('PHPCAS_VERSION', '1.6.1'); +define('PHPCAS_VERSION', '1.6.1+'); /** * @addtogroup public @@ -303,7 +303,7 @@ class phpCAS /** * This variable is used to enable verbose mode - * This pevents debug info to be show to the user. Since it's a security + * This prevents debug info to be show to the user. Since it's a security * feature the default is false * * @hideinitializer @@ -338,7 +338,7 @@ class phpCAS * @param bool $changeSessionID Allow phpCAS to change the session_id * (Single Sign Out/handleLogoutRequests * is based on that change) - * @param \SessionHandlerInterface $sessionHandler the session handler + * @param \SessionHandlerInterface|null $sessionHandler the session handler * * @return void a newly created CAS_Client object * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be @@ -347,7 +347,7 @@ class phpCAS */ public static function client($server_version, $server_hostname, $server_port, $server_uri, $service_base_url, - $changeSessionID = true, \SessionHandlerInterface $sessionHandler = null + $changeSessionID = true, ?\SessionHandlerInterface $sessionHandler = null ) { phpCAS :: traceBegin(); if (is_object(self::$_PHPCAS_CLIENT)) { @@ -393,7 +393,7 @@ class phpCAS * @param bool $changeSessionID Allow phpCAS to change the session_id * (Single Sign Out/handleLogoutRequests * is based on that change) - * @param \SessionHandlerInterface $sessionHandler the session handler + * @param \SessionHandlerInterface|null $sessionHandler the session handler * * @return void a newly created CAS_Client object * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be @@ -402,14 +402,14 @@ class phpCAS */ public static function proxy($server_version, $server_hostname, $server_port, $server_uri, $service_base_url, - $changeSessionID = true, \SessionHandlerInterface $sessionHandler = null + $changeSessionID = true, ?\SessionHandlerInterface $sessionHandler = null ) { phpCAS :: traceBegin(); if (is_object(self::$_PHPCAS_CLIENT)) { phpCAS :: error(self::$_PHPCAS_INIT_CALL['method'] . '() has already been called (at ' . self::$_PHPCAS_INIT_CALL['file'] . ':' . self::$_PHPCAS_INIT_CALL['line'] . ')'); } - // store where the initialzer is called from + // store where the initializer is called from $dbg = debug_backtrace(); self::$_PHPCAS_INIT_CALL = array ( 'done' => true, @@ -560,7 +560,7 @@ class phpCAS $indent_str .= '| '; } - // allow for multiline output with proper identing. Usefull for + // allow for multiline output with proper identing. Useful for // dumping cas answers etc. $str2 = str_replace("\n", "\n" . self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str, $str); $str3 = self::$_PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str . $str2; @@ -568,7 +568,7 @@ class phpCAS self::$_PHPCAS_DEBUG['logger']->info($str3); } if (!empty(self::$_PHPCAS_DEBUG['filename'])) { - // Check if file exists and modifiy file permissions to be only + // Check if file exists and modify file permissions to be only // readable by the webserver if (!file_exists(self::$_PHPCAS_DEBUG['filename'])) { touch(self::$_PHPCAS_DEBUG['filename']); @@ -1769,7 +1769,7 @@ class phpCAS /** * If you want your service to be proxied you have to enable it (default - * disabled) and define an accepable list of proxies that are allowed to + * disabled) and define an acceptable list of proxies that are allowed to * proxy your service. * * Add each allowed proxy definition object. For the normal CAS_ProxyChain @@ -1790,7 +1790,7 @@ class phpCAS * 'http://client.example.com/' * ))); * - * For quick testing or in certain production screnarios you might want to + * For quick testing or in certain production scenarios you might want to * allow allow any other valid service to proxy your service. To do so, add * the "Any" chain: * phpCAS::allowProxyChain(new CAS_ProxyChain_Any); @@ -1897,7 +1897,7 @@ class phpCAS } /** - * Checks of a proxy client aready exists + * Checks of a proxy client already exists * * @throws CAS_OutOfSequenceBeforeProxyException * diff --git a/lib/apereo/phpcas/source/CAS/Client.php b/lib/apereo/phpcas/source/CAS/Client.php index 8ca9711f4..7f7c7d111 100644 --- a/lib/apereo/phpcas/source/CAS/Client.php +++ b/lib/apereo/phpcas/source/CAS/Client.php @@ -788,7 +788,7 @@ class CAS_Client 'file' => $dbg[1]['file'], 'line' => $dbg[1]['line'], 'method' => $dbg[1]['class'] . '::' . $dbg[1]['function'], - 'result' => (boolean)$auth + 'result' => (bool)$auth ); } private $_authentication_caller; @@ -926,7 +926,7 @@ class CAS_Client * CAS_ServiceBaseUrl_Interface for custom * behavior. Added in 1.6.0. Similar to * serverName config in other CAS clients. - * @param \SessionHandlerInterface $sessionHandler the session handler + * @param \SessionHandlerInterface|null $sessionHandler the session handler * * @return self a newly created CAS_Client object */ @@ -938,7 +938,7 @@ class CAS_Client $server_uri, $service_base_url, $changeSessionID = true, - \SessionHandlerInterface $sessionHandler = null + ?\SessionHandlerInterface $sessionHandler = null ) { // Argument validation if (gettype($server_version) != 'string') @@ -3166,7 +3166,7 @@ class CAS_Client $proxiedService->setCasClient($this); } return $proxiedService; - case PHPCAS_PROXIED_SERVICE_IMAP; + case PHPCAS_PROXIED_SERVICE_IMAP: $proxiedService = new CAS_ProxiedService_Imap($this->_getUser()); if ($proxiedService instanceof CAS_ProxiedService_Testable) { $proxiedService->setCasClient($this); diff --git a/lib/apereo/phpcas/source/CAS/PGTStorage/Db.php b/lib/apereo/phpcas/source/CAS/PGTStorage/Db.php index 2efe5a3e8..9f8baf37f 100644 --- a/lib/apereo/phpcas/source/CAS/PGTStorage/Db.php +++ b/lib/apereo/phpcas/source/CAS/PGTStorage/Db.php @@ -316,7 +316,7 @@ class CAS_PGTStorage_Db extends CAS_PGTStorage_AbstractStorage try { $pdo->beginTransaction(); - $query = $pdo->query($this->createTableSQL()); + $query = $pdo->query($this->createTableSql()); $query->closeCursor(); $pdo->commit(); diff --git a/lib/apereo/phpcas/source/CAS/PGTStorage/File.php b/lib/apereo/phpcas/source/CAS/PGTStorage/File.php index fbacd3b7d..213ab40b7 100644 --- a/lib/apereo/phpcas/source/CAS/PGTStorage/File.php +++ b/lib/apereo/phpcas/source/CAS/PGTStorage/File.php @@ -127,6 +127,12 @@ class CAS_PGTStorage_File extends CAS_PGTStorage_AbstractStorage if (!preg_match('`^[a-zA-Z]:`', $path)) { phpCAS::error('an absolute path is needed for PGT storage to file'); } + + // ensure that the directory separator on Windows is '/' for consistency with the rest of the phpcas code + $path = str_replace(DIRECTORY_SEPARATOR , '/', $path); + + // store the path (with a trailing '/') + $path = preg_replace('|([^/])$|', '$1/', $path); } else { diff --git a/lib/apereo/phpcas/source/CAS/Request/CurlMultiRequest.php b/lib/apereo/phpcas/source/CAS/Request/CurlMultiRequest.php index 850f6f0e4..18a810ef9 100644 --- a/lib/apereo/phpcas/source/CAS/Request/CurlMultiRequest.php +++ b/lib/apereo/phpcas/source/CAS/Request/CurlMultiRequest.php @@ -139,7 +139,12 @@ implements CAS_Request_MultiRequestInterface $buf = curl_multi_getcontent($handles[$i]); $request->_storeResponseBody($buf); curl_multi_remove_handle($multiHandle, $handles[$i]); - curl_close($handles[$i]); + if (PHP_VERSION_ID < 80000) { + curl_close($handles[$i]); + } else { + // unreference it => it will be closed + unset($handles[$i]); + } } curl_multi_close($multiHandle); diff --git a/lib/apereo/phpcas/source/CAS/Request/CurlRequest.php b/lib/apereo/phpcas/source/CAS/Request/CurlRequest.php index e30dd0d19..ac7f0ec95 100644 --- a/lib/apereo/phpcas/source/CAS/Request/CurlRequest.php +++ b/lib/apereo/phpcas/source/CAS/Request/CurlRequest.php @@ -86,7 +86,9 @@ implements CAS_Request_RequestInterface } // close the CURL session - curl_close($ch); + if (PHP_VERSION_ID < 80000) { + curl_close($ch); + } phpCAS::traceEnd($res); return $res; diff --git a/lib/bin/patch-type-declarations b/lib/bin/patch-type-declarations old mode 100644 new mode 100755 diff --git a/lib/bin/patch-type-declarations.bat b/lib/bin/patch-type-declarations.bat deleted file mode 100644 index 2b0707968..000000000 --- a/lib/bin/patch-type-declarations.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/patch-type-declarations -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/lib/bin/php-parse b/lib/bin/php-parse old mode 100644 new mode 100755 diff --git a/lib/bin/php-parse.bat b/lib/bin/php-parse.bat deleted file mode 100644 index 2c5096dc3..000000000 --- a/lib/bin/php-parse.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/php-parse -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/lib/bin/pscss b/lib/bin/pscss deleted file mode 100644 index e57bed8fc..000000000 --- a/lib/bin/pscss +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - return include("phpvfscomposer://" . __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'); - } -} - -return include __DIR__ . '/..'.'/scssphp/scssphp/bin/pscss'; diff --git a/lib/bin/pscss.bat b/lib/bin/pscss.bat deleted file mode 100644 index 6b83bf27c..000000000 --- a/lib/bin/pscss.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/pscss -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/lib/bin/var-dump-server b/lib/bin/var-dump-server old mode 100644 new mode 100755 diff --git a/lib/bin/var-dump-server.bat b/lib/bin/var-dump-server.bat deleted file mode 100644 index 94333da54..000000000 --- a/lib/bin/var-dump-server.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/var-dump-server -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/lib/bin/yaml-lint b/lib/bin/yaml-lint old mode 100644 new mode 100755 diff --git a/lib/bin/yaml-lint.bat b/lib/bin/yaml-lint.bat deleted file mode 100644 index fa7663748..000000000 --- a/lib/bin/yaml-lint.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/yaml-lint -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index 87e682e8f..5f464f37e 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -886,6 +886,68 @@ return array( 'League\\OAuth2\\Client\\Tool\\QueryBuilderTrait' => $vendorDir . '/league/oauth2-client/src/Tool/QueryBuilderTrait.php', 'League\\OAuth2\\Client\\Tool\\RequestFactory' => $vendorDir . '/league/oauth2-client/src/Tool/RequestFactory.php', 'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => $vendorDir . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php', + 'League\\Uri\\BaseUri' => $vendorDir . '/league/uri/BaseUri.php', + 'League\\Uri\\Builder' => $vendorDir . '/league/uri/Builder.php', + 'League\\Uri\\Contracts\\AuthorityInterface' => $vendorDir . '/league/uri-interfaces/Contracts/AuthorityInterface.php', + 'League\\Uri\\Contracts\\Conditionable' => $vendorDir . '/league/uri-interfaces/Contracts/Conditionable.php', + 'League\\Uri\\Contracts\\DataPathInterface' => $vendorDir . '/league/uri-interfaces/Contracts/DataPathInterface.php', + 'League\\Uri\\Contracts\\DomainHostInterface' => $vendorDir . '/league/uri-interfaces/Contracts/DomainHostInterface.php', + 'League\\Uri\\Contracts\\FragmentDirective' => $vendorDir . '/league/uri-interfaces/Contracts/FragmentDirective.php', + 'League\\Uri\\Contracts\\FragmentInterface' => $vendorDir . '/league/uri-interfaces/Contracts/FragmentInterface.php', + 'League\\Uri\\Contracts\\HostInterface' => $vendorDir . '/league/uri-interfaces/Contracts/HostInterface.php', + 'League\\Uri\\Contracts\\IpHostInterface' => $vendorDir . '/league/uri-interfaces/Contracts/IpHostInterface.php', + 'League\\Uri\\Contracts\\PathInterface' => $vendorDir . '/league/uri-interfaces/Contracts/PathInterface.php', + 'League\\Uri\\Contracts\\PortInterface' => $vendorDir . '/league/uri-interfaces/Contracts/PortInterface.php', + 'League\\Uri\\Contracts\\QueryInterface' => $vendorDir . '/league/uri-interfaces/Contracts/QueryInterface.php', + 'League\\Uri\\Contracts\\SegmentedPathInterface' => $vendorDir . '/league/uri-interfaces/Contracts/SegmentedPathInterface.php', + 'League\\Uri\\Contracts\\Transformable' => $vendorDir . '/league/uri-interfaces/Contracts/Transformable.php', + 'League\\Uri\\Contracts\\UriAccess' => $vendorDir . '/league/uri-interfaces/Contracts/UriAccess.php', + 'League\\Uri\\Contracts\\UriComponentInterface' => $vendorDir . '/league/uri-interfaces/Contracts/UriComponentInterface.php', + 'League\\Uri\\Contracts\\UriException' => $vendorDir . '/league/uri-interfaces/Contracts/UriException.php', + 'League\\Uri\\Contracts\\UriInterface' => $vendorDir . '/league/uri-interfaces/Contracts/UriInterface.php', + 'League\\Uri\\Contracts\\UserInfoInterface' => $vendorDir . '/league/uri-interfaces/Contracts/UserInfoInterface.php', + 'League\\Uri\\Encoder' => $vendorDir . '/league/uri-interfaces/Encoder.php', + 'League\\Uri\\Exceptions\\ConversionFailed' => $vendorDir . '/league/uri-interfaces/Exceptions/ConversionFailed.php', + 'League\\Uri\\Exceptions\\MissingFeature' => $vendorDir . '/league/uri-interfaces/Exceptions/MissingFeature.php', + 'League\\Uri\\Exceptions\\OffsetOutOfBounds' => $vendorDir . '/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php', + 'League\\Uri\\Exceptions\\SyntaxError' => $vendorDir . '/league/uri-interfaces/Exceptions/SyntaxError.php', + 'League\\Uri\\FeatureDetection' => $vendorDir . '/league/uri-interfaces/FeatureDetection.php', + 'League\\Uri\\HostFormat' => $vendorDir . '/league/uri-interfaces/HostFormat.php', + 'League\\Uri\\HostRecord' => $vendorDir . '/league/uri-interfaces/HostRecord.php', + 'League\\Uri\\HostType' => $vendorDir . '/league/uri-interfaces/HostType.php', + 'League\\Uri\\Http' => $vendorDir . '/league/uri/Http.php', + 'League\\Uri\\HttpFactory' => $vendorDir . '/league/uri/HttpFactory.php', + 'League\\Uri\\IPv4\\BCMathCalculator' => $vendorDir . '/league/uri-interfaces/IPv4/BCMathCalculator.php', + 'League\\Uri\\IPv4\\Calculator' => $vendorDir . '/league/uri-interfaces/IPv4/Calculator.php', + 'League\\Uri\\IPv4\\Converter' => $vendorDir . '/league/uri-interfaces/IPv4/Converter.php', + 'League\\Uri\\IPv4\\GMPCalculator' => $vendorDir . '/league/uri-interfaces/IPv4/GMPCalculator.php', + 'League\\Uri\\IPv4\\NativeCalculator' => $vendorDir . '/league/uri-interfaces/IPv4/NativeCalculator.php', + 'League\\Uri\\IPv6\\Converter' => $vendorDir . '/league/uri-interfaces/IPv6/Converter.php', + 'League\\Uri\\Idna\\Converter' => $vendorDir . '/league/uri-interfaces/Idna/Converter.php', + 'League\\Uri\\Idna\\Error' => $vendorDir . '/league/uri-interfaces/Idna/Error.php', + 'League\\Uri\\Idna\\Option' => $vendorDir . '/league/uri-interfaces/Idna/Option.php', + 'League\\Uri\\Idna\\Result' => $vendorDir . '/league/uri-interfaces/Idna/Result.php', + 'League\\Uri\\KeyValuePair\\Converter' => $vendorDir . '/league/uri-interfaces/KeyValuePair/Converter.php', + 'League\\Uri\\QueryComposeMode' => $vendorDir . '/league/uri-interfaces/QueryComposeMode.php', + 'League\\Uri\\QueryExtractMode' => $vendorDir . '/league/uri-interfaces/QueryExtractMode.php', + 'League\\Uri\\QueryString' => $vendorDir . '/league/uri-interfaces/QueryString.php', + 'League\\Uri\\SchemeType' => $vendorDir . '/league/uri/SchemeType.php', + 'League\\Uri\\StringCoercionMode' => $vendorDir . '/league/uri-interfaces/StringCoercionMode.php', + 'League\\Uri\\Uri' => $vendorDir . '/league/uri/Uri.php', + 'League\\Uri\\UriComparisonMode' => $vendorDir . '/league/uri-interfaces/UriComparisonMode.php', + 'League\\Uri\\UriInfo' => $vendorDir . '/league/uri/UriInfo.php', + 'League\\Uri\\UriResolver' => $vendorDir . '/league/uri/UriResolver.php', + 'League\\Uri\\UriScheme' => $vendorDir . '/league/uri/UriScheme.php', + 'League\\Uri\\UriString' => $vendorDir . '/league/uri-interfaces/UriString.php', + 'League\\Uri\\UriTemplate' => $vendorDir . '/league/uri/UriTemplate.php', + 'League\\Uri\\UriTemplate\\Expression' => $vendorDir . '/league/uri/UriTemplate/Expression.php', + 'League\\Uri\\UriTemplate\\Operator' => $vendorDir . '/league/uri/UriTemplate/Operator.php', + 'League\\Uri\\UriTemplate\\Template' => $vendorDir . '/league/uri/UriTemplate/Template.php', + 'League\\Uri\\UriTemplate\\TemplateCanNotBeExpanded' => $vendorDir . '/league/uri/UriTemplate/TemplateCanNotBeExpanded.php', + 'League\\Uri\\UriTemplate\\VarSpecifier' => $vendorDir . '/league/uri/UriTemplate/VarSpecifier.php', + 'League\\Uri\\UriTemplate\\VariableBag' => $vendorDir . '/league/uri/UriTemplate/VariableBag.php', + 'League\\Uri\\Urn' => $vendorDir . '/league/uri/Urn.php', + 'League\\Uri\\UrnComparisonMode' => $vendorDir . '/league/uri-interfaces/UrnComparisonMode.php', 'ListExpression' => $baseDir . '/core/oql/expression.class.inc.php', 'ListOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php', 'LogAPI' => $baseDir . '/core/log.class.inc.php', @@ -958,6 +1020,7 @@ return array( 'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'PDFBulkExport' => $baseDir . '/core/pdfbulkexport.class.inc.php', 'PEAR' => $vendorDir . '/pear/pear-core-minimal/src/PEAR.php', + 'PEAR_Error' => $vendorDir . '/pear/pear-core-minimal/src/PEAR.php', 'PEAR_ErrorStack' => $vendorDir . '/pear/pear-core-minimal/src/PEAR/ErrorStack.php', 'PEAR_Exception' => $vendorDir . '/pear/pear_exception/PEAR/Exception.php', 'Pelago\\Emogrifier\\Caching\\SimpleStringCache' => $vendorDir . '/pelago/emogrifier/src/Caching/SimpleStringCache.php', @@ -1347,55 +1410,282 @@ return array( 'SanitizeTrait' => $baseDir . '/core/restservices.class.inc.php', 'ScalarExpression' => $baseDir . '/core/oql/expression.class.inc.php', 'ScalarOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php', - 'ScssPhp\\ScssPhp\\Base\\Range' => $vendorDir . '/scssphp/scssphp/src/Base/Range.php', - 'ScssPhp\\ScssPhp\\Block' => $vendorDir . '/scssphp/scssphp/src/Block.php', - 'ScssPhp\\ScssPhp\\Block\\AtRootBlock' => $vendorDir . '/scssphp/scssphp/src/Block/AtRootBlock.php', - 'ScssPhp\\ScssPhp\\Block\\CallableBlock' => $vendorDir . '/scssphp/scssphp/src/Block/CallableBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ContentBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ContentBlock.php', - 'ScssPhp\\ScssPhp\\Block\\DirectiveBlock' => $vendorDir . '/scssphp/scssphp/src/Block/DirectiveBlock.php', - 'ScssPhp\\ScssPhp\\Block\\EachBlock' => $vendorDir . '/scssphp/scssphp/src/Block/EachBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ElseBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ElseBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ElseifBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ElseifBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ForBlock' => $vendorDir . '/scssphp/scssphp/src/Block/ForBlock.php', - 'ScssPhp\\ScssPhp\\Block\\IfBlock' => $vendorDir . '/scssphp/scssphp/src/Block/IfBlock.php', - 'ScssPhp\\ScssPhp\\Block\\MediaBlock' => $vendorDir . '/scssphp/scssphp/src/Block/MediaBlock.php', - 'ScssPhp\\ScssPhp\\Block\\NestedPropertyBlock' => $vendorDir . '/scssphp/scssphp/src/Block/NestedPropertyBlock.php', - 'ScssPhp\\ScssPhp\\Block\\WhileBlock' => $vendorDir . '/scssphp/scssphp/src/Block/WhileBlock.php', - 'ScssPhp\\ScssPhp\\Cache' => $vendorDir . '/scssphp/scssphp/src/Cache.php', + 'ScssPhp\\ScssPhp\\Ast\\AstNode' => $vendorDir . '/scssphp/scssphp/src/Ast/AstNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssAtRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssAtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssComment' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssImport' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssKeyframeBlock' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssKeyframeBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssMediaQuery' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssMediaQuery.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssMediaRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssMediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssNode' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssParentNode' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssParentNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssStyleRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssStyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssStylesheet' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssStylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssSupportsRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssSupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssValue' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/CssValue.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\IsInvisibleVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/IsInvisibleVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\MediaQueryMergeResult' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/MediaQueryMergeResult.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\MediaQuerySingletonMergeResult' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/MediaQuerySingletonMergeResult.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssAtRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssAtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssComment' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssImport' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssKeyframeBlock' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssKeyframeBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssMediaRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssMediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssNode' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssParentNode' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssParentNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssStyleRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssStyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssStylesheet' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssStylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssSupportsRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Css/ModifiableCssSupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\FakeAstNode' => $vendorDir . '/scssphp/scssphp/src/Ast/FakeAstNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Argument' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Argument.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ArgumentDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/ArgumentDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ArgumentInvocation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/ArgumentInvocation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\AtRootQuery' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/AtRootQuery.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\CallableInvocation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/CallableInvocation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ConfiguredVariable' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/ConfiguredVariable.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BinaryOperationExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperationExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BinaryOperator' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BooleanExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/BooleanExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ColorExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/ColorExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\FunctionExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/FunctionExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\IfExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/IfExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\InterpolatedFunctionExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/InterpolatedFunctionExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\IsCalculationSafeVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/IsCalculationSafeVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ListExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/ListExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\MapExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/MapExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\NullExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/NullExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\NumberExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/NumberExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ParenthesizedExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/ParenthesizedExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\SelectorExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/SelectorExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\StringExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/StringExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\SupportsExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/SupportsExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\UnaryOperationExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperationExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\UnaryOperator' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ValueExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/ValueExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\VariableExpression' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Expression/VariableExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Import.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import\\DynamicImport' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Import/DynamicImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import\\StaticImport' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Import/StaticImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Interpolation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Interpolation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SassDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassNode' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SassNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassReference' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SassReference.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\AtRootRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/AtRootRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\AtRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/AtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\CallableDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/CallableDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ContentBlock' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ContentBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ContentRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ContentRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\DebugRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/DebugRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\Declaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/Declaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\EachRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/EachRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ElseClause' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ElseClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ErrorRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ErrorRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ExtendRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ExtendRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ForRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ForRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\FunctionRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/FunctionRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\HasContentVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/HasContentVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfClause' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/IfClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/IfRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfRuleClause' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/IfRuleClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ImportRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ImportRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IncludeRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/IncludeRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\LoudComment' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/LoudComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\MediaRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/MediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\MixinRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/MixinRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ParentStatement' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ParentStatement.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ReturnRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/ReturnRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\SilentComment' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/SilentComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\StyleRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/StyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\Stylesheet' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/Stylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\SupportsRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/SupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\VariableDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/VariableDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\WarnRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/WarnRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\WhileRule' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/Statement/WhileRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsAnything' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsAnything.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsDeclaration' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsFunction' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsFunction.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsInterpolation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsInterpolation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsNegation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsNegation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsOperation' => $vendorDir . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsOperation.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\AttributeOperator' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/AttributeOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\AttributeSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/AttributeSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ClassSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/ClassSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\Combinator' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/Combinator.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ComplexSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/ComplexSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ComplexSelectorComponent' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/ComplexSelectorComponent.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\CompoundSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/CompoundSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IDSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/IDSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsBogusVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/IsBogusVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsInvisibleVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/IsInvisibleVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsUselessVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/IsUselessVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ParentSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/ParentSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ParentSelectorVisitor' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/ParentSelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\PlaceholderSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/PlaceholderSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\PseudoSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/PseudoSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\QualifiedName' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/QualifiedName.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\Selector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/Selector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\SelectorList' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/SelectorList.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\SimpleSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/SimpleSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\TypeSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/TypeSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\UniversalSelector' => $vendorDir . '/scssphp/scssphp/src/Ast/Selector/UniversalSelector.php', + 'ScssPhp\\ScssPhp\\Collection\\Map' => $vendorDir . '/scssphp/scssphp/src/Collection/Map.php', 'ScssPhp\\ScssPhp\\Colors' => $vendorDir . '/scssphp/scssphp/src/Colors.php', 'ScssPhp\\ScssPhp\\CompilationResult' => $vendorDir . '/scssphp/scssphp/src/CompilationResult.php', 'ScssPhp\\ScssPhp\\Compiler' => $vendorDir . '/scssphp/scssphp/src/Compiler.php', - 'ScssPhp\\ScssPhp\\Compiler\\CachedResult' => $vendorDir . '/scssphp/scssphp/src/Compiler/CachedResult.php', - 'ScssPhp\\ScssPhp\\Compiler\\Environment' => $vendorDir . '/scssphp/scssphp/src/Compiler/Environment.php', - 'ScssPhp\\ScssPhp\\Exception\\CompilerException' => $vendorDir . '/scssphp/scssphp/src/Exception/CompilerException.php', - 'ScssPhp\\ScssPhp\\Exception\\ParserException' => $vendorDir . '/scssphp/scssphp/src/Exception/ParserException.php', - 'ScssPhp\\ScssPhp\\Exception\\RangeException' => $vendorDir . '/scssphp/scssphp/src/Exception/RangeException.php', + 'ScssPhp\\ScssPhp\\Compiler\\LegacyValueVisitor' => $vendorDir . '/scssphp/scssphp/src/Compiler/LegacyValueVisitor.php', + 'ScssPhp\\ScssPhp\\Deprecation' => $vendorDir . '/scssphp/scssphp/src/Deprecation.php', + 'ScssPhp\\ScssPhp\\DeprecationStatus' => $vendorDir . '/scssphp/scssphp/src/DeprecationStatus.php', + 'ScssPhp\\ScssPhp\\Evaluation\\ArgumentResults' => $vendorDir . '/scssphp/scssphp/src/Evaluation/ArgumentResults.php', + 'ScssPhp\\ScssPhp\\Evaluation\\Environment' => $vendorDir . '/scssphp/scssphp/src/Evaluation/Environment.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluateResult' => $vendorDir . '/scssphp/scssphp/src/Evaluation/EvaluateResult.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluateVisitor' => $vendorDir . '/scssphp/scssphp/src/Evaluation/EvaluateVisitor.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluationContext' => $vendorDir . '/scssphp/scssphp/src/Evaluation/EvaluationContext.php', + 'ScssPhp\\ScssPhp\\Evaluation\\LoadedStylesheet' => $vendorDir . '/scssphp/scssphp/src/Evaluation/LoadedStylesheet.php', + 'ScssPhp\\ScssPhp\\Evaluation\\VisitorEvaluationContext' => $vendorDir . '/scssphp/scssphp/src/Evaluation/VisitorEvaluationContext.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassException' => $vendorDir . '/scssphp/scssphp/src/Exception/MultiSpanSassException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassFormatException' => $vendorDir . '/scssphp/scssphp/src/Exception/MultiSpanSassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassRuntimeException' => $vendorDir . '/scssphp/scssphp/src/Exception/MultiSpanSassRuntimeException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassScriptException' => $vendorDir . '/scssphp/scssphp/src/Exception/MultiSpanSassScriptException.php', 'ScssPhp\\ScssPhp\\Exception\\SassException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassException.php', + 'ScssPhp\\ScssPhp\\Exception\\SassFormatException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\SassRuntimeException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassRuntimeException.php', 'ScssPhp\\ScssPhp\\Exception\\SassScriptException' => $vendorDir . '/scssphp/scssphp/src/Exception/SassScriptException.php', - 'ScssPhp\\ScssPhp\\Exception\\ServerException' => $vendorDir . '/scssphp/scssphp/src/Exception/ServerException.php', - 'ScssPhp\\ScssPhp\\Formatter' => $vendorDir . '/scssphp/scssphp/src/Formatter.php', - 'ScssPhp\\ScssPhp\\Formatter\\Compact' => $vendorDir . '/scssphp/scssphp/src/Formatter/Compact.php', - 'ScssPhp\\ScssPhp\\Formatter\\Compressed' => $vendorDir . '/scssphp/scssphp/src/Formatter/Compressed.php', - 'ScssPhp\\ScssPhp\\Formatter\\Crunched' => $vendorDir . '/scssphp/scssphp/src/Formatter/Crunched.php', - 'ScssPhp\\ScssPhp\\Formatter\\Debug' => $vendorDir . '/scssphp/scssphp/src/Formatter/Debug.php', - 'ScssPhp\\ScssPhp\\Formatter\\Expanded' => $vendorDir . '/scssphp/scssphp/src/Formatter/Expanded.php', - 'ScssPhp\\ScssPhp\\Formatter\\Nested' => $vendorDir . '/scssphp/scssphp/src/Formatter/Nested.php', - 'ScssPhp\\ScssPhp\\Formatter\\OutputBlock' => $vendorDir . '/scssphp/scssphp/src/Formatter/OutputBlock.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassException' => $vendorDir . '/scssphp/scssphp/src/Exception/SimpleSassException.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassFormatException' => $vendorDir . '/scssphp/scssphp/src/Exception/SimpleSassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassRuntimeException' => $vendorDir . '/scssphp/scssphp/src/Exception/SimpleSassRuntimeException.php', + 'ScssPhp\\ScssPhp\\Extend\\ComplexSelectorMap' => $vendorDir . '/scssphp/scssphp/src/Extend/ComplexSelectorMap.php', + 'ScssPhp\\ScssPhp\\Extend\\ConcreteExtensionStore' => $vendorDir . '/scssphp/scssphp/src/Extend/ConcreteExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\EmptyExtensionStore' => $vendorDir . '/scssphp/scssphp/src/Extend/EmptyExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtendMode' => $vendorDir . '/scssphp/scssphp/src/Extend/ExtendMode.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtendUtil' => $vendorDir . '/scssphp/scssphp/src/Extend/ExtendUtil.php', + 'ScssPhp\\ScssPhp\\Extend\\Extender' => $vendorDir . '/scssphp/scssphp/src/Extend/Extender.php', + 'ScssPhp\\ScssPhp\\Extend\\Extension' => $vendorDir . '/scssphp/scssphp/src/Extend/Extension.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtensionStore' => $vendorDir . '/scssphp/scssphp/src/Extend/ExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\MergedExtension' => $vendorDir . '/scssphp/scssphp/src/Extend/MergedExtension.php', + 'ScssPhp\\ScssPhp\\Extend\\ObjectSet' => $vendorDir . '/scssphp/scssphp/src/Extend/ObjectSet.php', + 'ScssPhp\\ScssPhp\\Extend\\SimpleSelectorMap' => $vendorDir . '/scssphp/scssphp/src/Extend/SimpleSelectorMap.php', + 'ScssPhp\\ScssPhp\\Function\\ColorFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/ColorFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\FunctionRegistry' => $vendorDir . '/scssphp/scssphp/src/Function/FunctionRegistry.php', + 'ScssPhp\\ScssPhp\\Function\\ListFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/ListFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MapFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/MapFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MathFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/MathFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MetaFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/MetaFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\SelectorFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/SelectorFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\StringFunctions' => $vendorDir . '/scssphp/scssphp/src/Function/StringFunctions.php', + 'ScssPhp\\ScssPhp\\Importer\\CanonicalizeContext' => $vendorDir . '/scssphp/scssphp/src/Importer/CanonicalizeContext.php', + 'ScssPhp\\ScssPhp\\Importer\\CanonicalizeResult' => $vendorDir . '/scssphp/scssphp/src/Importer/CanonicalizeResult.php', + 'ScssPhp\\ScssPhp\\Importer\\FilesystemImporter' => $vendorDir . '/scssphp/scssphp/src/Importer/FilesystemImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportCache' => $vendorDir . '/scssphp/scssphp/src/Importer/ImportCache.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportContext' => $vendorDir . '/scssphp/scssphp/src/Importer/ImportContext.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportUtil' => $vendorDir . '/scssphp/scssphp/src/Importer/ImportUtil.php', + 'ScssPhp\\ScssPhp\\Importer\\Importer' => $vendorDir . '/scssphp/scssphp/src/Importer/Importer.php', + 'ScssPhp\\ScssPhp\\Importer\\ImporterResult' => $vendorDir . '/scssphp/scssphp/src/Importer/ImporterResult.php', + 'ScssPhp\\ScssPhp\\Importer\\LegacyCallbackImporter' => $vendorDir . '/scssphp/scssphp/src/Importer/LegacyCallbackImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\NoOpImporter' => $vendorDir . '/scssphp/scssphp/src/Importer/NoOpImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\SpecialCacheValue' => $vendorDir . '/scssphp/scssphp/src/Importer/SpecialCacheValue.php', + 'ScssPhp\\ScssPhp\\Logger\\DeprecationProcessingLogger' => $vendorDir . '/scssphp/scssphp/src/Logger/DeprecationProcessingLogger.php', 'ScssPhp\\ScssPhp\\Logger\\LoggerInterface' => $vendorDir . '/scssphp/scssphp/src/Logger/LoggerInterface.php', 'ScssPhp\\ScssPhp\\Logger\\QuietLogger' => $vendorDir . '/scssphp/scssphp/src/Logger/QuietLogger.php', 'ScssPhp\\ScssPhp\\Logger\\StreamLogger' => $vendorDir . '/scssphp/scssphp/src/Logger/StreamLogger.php', 'ScssPhp\\ScssPhp\\Node' => $vendorDir . '/scssphp/scssphp/src/Node.php', 'ScssPhp\\ScssPhp\\Node\\Number' => $vendorDir . '/scssphp/scssphp/src/Node/Number.php', 'ScssPhp\\ScssPhp\\OutputStyle' => $vendorDir . '/scssphp/scssphp/src/OutputStyle.php', - 'ScssPhp\\ScssPhp\\Parser' => $vendorDir . '/scssphp/scssphp/src/Parser.php', + 'ScssPhp\\ScssPhp\\Parser\\AtRootQueryParser' => $vendorDir . '/scssphp/scssphp/src/Parser/AtRootQueryParser.php', + 'ScssPhp\\ScssPhp\\Parser\\CssParser' => $vendorDir . '/scssphp/scssphp/src/Parser/CssParser.php', + 'ScssPhp\\ScssPhp\\Parser\\FormatException' => $vendorDir . '/scssphp/scssphp/src/Parser/FormatException.php', + 'ScssPhp\\ScssPhp\\Parser\\InterpolationBuffer' => $vendorDir . '/scssphp/scssphp/src/Parser/InterpolationBuffer.php', + 'ScssPhp\\ScssPhp\\Parser\\InterpolationMap' => $vendorDir . '/scssphp/scssphp/src/Parser/InterpolationMap.php', + 'ScssPhp\\ScssPhp\\Parser\\KeyframeSelectorParser' => $vendorDir . '/scssphp/scssphp/src/Parser/KeyframeSelectorParser.php', + 'ScssPhp\\ScssPhp\\Parser\\LineScanner' => $vendorDir . '/scssphp/scssphp/src/Parser/LineScanner.php', + 'ScssPhp\\ScssPhp\\Parser\\MediaQueryParser' => $vendorDir . '/scssphp/scssphp/src/Parser/MediaQueryParser.php', + 'ScssPhp\\ScssPhp\\Parser\\MultiSourceFormatException' => $vendorDir . '/scssphp/scssphp/src/Parser/MultiSourceFormatException.php', + 'ScssPhp\\ScssPhp\\Parser\\Parser' => $vendorDir . '/scssphp/scssphp/src/Parser/Parser.php', + 'ScssPhp\\ScssPhp\\Parser\\SassParser' => $vendorDir . '/scssphp/scssphp/src/Parser/SassParser.php', + 'ScssPhp\\ScssPhp\\Parser\\ScssParser' => $vendorDir . '/scssphp/scssphp/src/Parser/ScssParser.php', + 'ScssPhp\\ScssPhp\\Parser\\SelectorParser' => $vendorDir . '/scssphp/scssphp/src/Parser/SelectorParser.php', + 'ScssPhp\\ScssPhp\\Parser\\StringScanner' => $vendorDir . '/scssphp/scssphp/src/Parser/StringScanner.php', + 'ScssPhp\\ScssPhp\\Parser\\StylesheetParser' => $vendorDir . '/scssphp/scssphp/src/Parser/StylesheetParser.php', + 'ScssPhp\\ScssPhp\\SassCallable\\BuiltInCallable' => $vendorDir . '/scssphp/scssphp/src/SassCallable/BuiltInCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\PlainCssCallable' => $vendorDir . '/scssphp/scssphp/src/SassCallable/PlainCssCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\SassCallable' => $vendorDir . '/scssphp/scssphp/src/SassCallable/SassCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\UserDefinedCallable' => $vendorDir . '/scssphp/scssphp/src/SassCallable/UserDefinedCallable.php', + 'ScssPhp\\ScssPhp\\Serializer\\SerializeResult' => $vendorDir . '/scssphp/scssphp/src/Serializer/SerializeResult.php', + 'ScssPhp\\ScssPhp\\Serializer\\SerializeVisitor' => $vendorDir . '/scssphp/scssphp/src/Serializer/SerializeVisitor.php', + 'ScssPhp\\ScssPhp\\Serializer\\Serializer' => $vendorDir . '/scssphp/scssphp/src/Serializer/Serializer.php', + 'ScssPhp\\ScssPhp\\Serializer\\SimpleStringBuffer' => $vendorDir . '/scssphp/scssphp/src/Serializer/SimpleStringBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\SourceMapBuffer' => $vendorDir . '/scssphp/scssphp/src/Serializer/SourceMapBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\StringBuffer' => $vendorDir . '/scssphp/scssphp/src/Serializer/StringBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\TrackingSourceMapBuffer' => $vendorDir . '/scssphp/scssphp/src/Serializer/TrackingSourceMapBuffer.php', 'ScssPhp\\ScssPhp\\SourceMap\\Base64' => $vendorDir . '/scssphp/scssphp/src/SourceMap/Base64.php', 'ScssPhp\\ScssPhp\\SourceMap\\Base64VLQ' => $vendorDir . '/scssphp/scssphp/src/SourceMap/Base64VLQ.php', - 'ScssPhp\\ScssPhp\\SourceMap\\SourceMapGenerator' => $vendorDir . '/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php', + 'ScssPhp\\ScssPhp\\SourceMap\\Builder\\Entry' => $vendorDir . '/scssphp/scssphp/src/SourceMap/Builder/Entry.php', + 'ScssPhp\\ScssPhp\\SourceMap\\SingleMapping' => $vendorDir . '/scssphp/scssphp/src/SourceMap/SingleMapping.php', + 'ScssPhp\\ScssPhp\\SourceMap\\TargetEntry' => $vendorDir . '/scssphp/scssphp/src/SourceMap/TargetEntry.php', + 'ScssPhp\\ScssPhp\\SourceMap\\TargetLineEntry' => $vendorDir . '/scssphp/scssphp/src/SourceMap/TargetLineEntry.php', + 'ScssPhp\\ScssPhp\\SourceSpan\\LazyFileSpan' => $vendorDir . '/scssphp/scssphp/src/SourceSpan/LazyFileSpan.php', + 'ScssPhp\\ScssPhp\\SourceSpan\\MultiSpan' => $vendorDir . '/scssphp/scssphp/src/SourceSpan/MultiSpan.php', + 'ScssPhp\\ScssPhp\\StackTrace\\Frame' => $vendorDir . '/scssphp/scssphp/src/StackTrace/Frame.php', + 'ScssPhp\\ScssPhp\\StackTrace\\Trace' => $vendorDir . '/scssphp/scssphp/src/StackTrace/Trace.php', + 'ScssPhp\\ScssPhp\\Syntax' => $vendorDir . '/scssphp/scssphp/src/Syntax.php', 'ScssPhp\\ScssPhp\\Type' => $vendorDir . '/scssphp/scssphp/src/Type.php', 'ScssPhp\\ScssPhp\\Util' => $vendorDir . '/scssphp/scssphp/src/Util.php', + 'ScssPhp\\ScssPhp\\Util\\ArrayUtil' => $vendorDir . '/scssphp/scssphp/src/Util/ArrayUtil.php', + 'ScssPhp\\ScssPhp\\Util\\AstUtil' => $vendorDir . '/scssphp/scssphp/src/Util/AstUtil.php', + 'ScssPhp\\ScssPhp\\Util\\Box' => $vendorDir . '/scssphp/scssphp/src/Util/Box.php', + 'ScssPhp\\ScssPhp\\Util\\Character' => $vendorDir . '/scssphp/scssphp/src/Util/Character.php', + 'ScssPhp\\ScssPhp\\Util\\Equatable' => $vendorDir . '/scssphp/scssphp/src/Util/Equatable.php', + 'ScssPhp\\ScssPhp\\Util\\EquatableUtil' => $vendorDir . '/scssphp/scssphp/src/Util/EquatableUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ErrorUtil' => $vendorDir . '/scssphp/scssphp/src/Util/ErrorUtil.php', + 'ScssPhp\\ScssPhp\\Util\\IterableUtil' => $vendorDir . '/scssphp/scssphp/src/Util/IterableUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ListUtil' => $vendorDir . '/scssphp/scssphp/src/Util/ListUtil.php', + 'ScssPhp\\ScssPhp\\Util\\LoggerUtil' => $vendorDir . '/scssphp/scssphp/src/Util/LoggerUtil.php', + 'ScssPhp\\ScssPhp\\Util\\MakeExpressionCalculationSafe' => $vendorDir . '/scssphp/scssphp/src/Util/MakeExpressionCalculationSafe.php', + 'ScssPhp\\ScssPhp\\Util\\ModifiableBox' => $vendorDir . '/scssphp/scssphp/src/Util/ModifiableBox.php', + 'ScssPhp\\ScssPhp\\Util\\NumberUtil' => $vendorDir . '/scssphp/scssphp/src/Util/NumberUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ParserUtil' => $vendorDir . '/scssphp/scssphp/src/Util/ParserUtil.php', 'ScssPhp\\ScssPhp\\Util\\Path' => $vendorDir . '/scssphp/scssphp/src/Util/Path.php', + 'ScssPhp\\ScssPhp\\Util\\SpanUtil' => $vendorDir . '/scssphp/scssphp/src/Util/SpanUtil.php', + 'ScssPhp\\ScssPhp\\Util\\StringUtil' => $vendorDir . '/scssphp/scssphp/src/Util/StringUtil.php', + 'ScssPhp\\ScssPhp\\Util\\UriUtil' => $vendorDir . '/scssphp/scssphp/src/Util/UriUtil.php', 'ScssPhp\\ScssPhp\\ValueConverter' => $vendorDir . '/scssphp/scssphp/src/ValueConverter.php', + 'ScssPhp\\ScssPhp\\Value\\CalculationOperation' => $vendorDir . '/scssphp/scssphp/src/Value/CalculationOperation.php', + 'ScssPhp\\ScssPhp\\Value\\CalculationOperator' => $vendorDir . '/scssphp/scssphp/src/Value/CalculationOperator.php', + 'ScssPhp\\ScssPhp\\Value\\ColorFormat' => $vendorDir . '/scssphp/scssphp/src/Value/ColorFormat.php', + 'ScssPhp\\ScssPhp\\Value\\ColorFormatEnum' => $vendorDir . '/scssphp/scssphp/src/Value/ColorFormatEnum.php', + 'ScssPhp\\ScssPhp\\Value\\ComplexSassNumber' => $vendorDir . '/scssphp/scssphp/src/Value/ComplexSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\ListSeparator' => $vendorDir . '/scssphp/scssphp/src/Value/ListSeparator.php', + 'ScssPhp\\ScssPhp\\Value\\SassArgumentList' => $vendorDir . '/scssphp/scssphp/src/Value/SassArgumentList.php', + 'ScssPhp\\ScssPhp\\Value\\SassBoolean' => $vendorDir . '/scssphp/scssphp/src/Value/SassBoolean.php', + 'ScssPhp\\ScssPhp\\Value\\SassCalculation' => $vendorDir . '/scssphp/scssphp/src/Value/SassCalculation.php', + 'ScssPhp\\ScssPhp\\Value\\SassColor' => $vendorDir . '/scssphp/scssphp/src/Value/SassColor.php', + 'ScssPhp\\ScssPhp\\Value\\SassFunction' => $vendorDir . '/scssphp/scssphp/src/Value/SassFunction.php', + 'ScssPhp\\ScssPhp\\Value\\SassList' => $vendorDir . '/scssphp/scssphp/src/Value/SassList.php', + 'ScssPhp\\ScssPhp\\Value\\SassMap' => $vendorDir . '/scssphp/scssphp/src/Value/SassMap.php', + 'ScssPhp\\ScssPhp\\Value\\SassMixin' => $vendorDir . '/scssphp/scssphp/src/Value/SassMixin.php', + 'ScssPhp\\ScssPhp\\Value\\SassNull' => $vendorDir . '/scssphp/scssphp/src/Value/SassNull.php', + 'ScssPhp\\ScssPhp\\Value\\SassNumber' => $vendorDir . '/scssphp/scssphp/src/Value/SassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\SassString' => $vendorDir . '/scssphp/scssphp/src/Value/SassString.php', + 'ScssPhp\\ScssPhp\\Value\\SingleUnitSassNumber' => $vendorDir . '/scssphp/scssphp/src/Value/SingleUnitSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\SpanColorFormat' => $vendorDir . '/scssphp/scssphp/src/Value/SpanColorFormat.php', + 'ScssPhp\\ScssPhp\\Value\\UnitlessSassNumber' => $vendorDir . '/scssphp/scssphp/src/Value/UnitlessSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\Value' => $vendorDir . '/scssphp/scssphp/src/Value/Value.php', 'ScssPhp\\ScssPhp\\Version' => $vendorDir . '/scssphp/scssphp/src/Version.php', + 'ScssPhp\\ScssPhp\\Visitor\\AnySelectorVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/AnySelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\CssVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/CssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\EveryCssVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/EveryCssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ExpressionVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/ExpressionVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ModifiableCssVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/ModifiableCssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ReplaceExpressionVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/ReplaceExpressionVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\SelectorSearchVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/SelectorSearchVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\SelectorVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/SelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\StatementSearchVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/StatementSearchVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\StatementVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/StatementVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ValueVisitor' => $vendorDir . '/scssphp/scssphp/src/Visitor/ValueVisitor.php', 'ScssPhp\\ScssPhp\\Warn' => $vendorDir . '/scssphp/scssphp/src/Warn.php', 'SearchMenuNode' => $baseDir . '/application/menunode.class.inc.php', 'SecurityException' => $baseDir . '/application/exceptions/SecurityException.php', @@ -1415,6 +1705,23 @@ return array( 'SimpleGraphException' => $baseDir . '/core/simplegraph.class.inc.php', 'Soundasleep\\Html2Text' => $vendorDir . '/soundasleep/html2text/src/Html2Text.php', 'Soundasleep\\Html2TextException' => $vendorDir . '/soundasleep/html2text/src/Html2TextException.php', + 'SourceSpan\\ConcreteFileSpan' => $vendorDir . '/scssphp/source-span/src/ConcreteFileSpan.php', + 'SourceSpan\\FileLocation' => $vendorDir . '/scssphp/source-span/src/FileLocation.php', + 'SourceSpan\\FileSpan' => $vendorDir . '/scssphp/source-span/src/FileSpan.php', + 'SourceSpan\\Highlighter\\AsciiGlyph' => $vendorDir . '/scssphp/source-span/src/Highlighter/AsciiGlyph.php', + 'SourceSpan\\Highlighter\\Highlight' => $vendorDir . '/scssphp/source-span/src/Highlighter/Highlight.php', + 'SourceSpan\\Highlighter\\Highlighter' => $vendorDir . '/scssphp/source-span/src/Highlighter/Highlighter.php', + 'SourceSpan\\Highlighter\\Line' => $vendorDir . '/scssphp/source-span/src/Highlighter/Line.php', + 'SourceSpan\\SimpleSourceLocation' => $vendorDir . '/scssphp/source-span/src/SimpleSourceLocation.php', + 'SourceSpan\\SimpleSourceSpan' => $vendorDir . '/scssphp/source-span/src/SimpleSourceSpan.php', + 'SourceSpan\\SimpleSourceSpanWithContext' => $vendorDir . '/scssphp/source-span/src/SimpleSourceSpanWithContext.php', + 'SourceSpan\\SourceFile' => $vendorDir . '/scssphp/source-span/src/SourceFile.php', + 'SourceSpan\\SourceLocation' => $vendorDir . '/scssphp/source-span/src/SourceLocation.php', + 'SourceSpan\\SourceLocationMixin' => $vendorDir . '/scssphp/source-span/src/SourceLocationMixin.php', + 'SourceSpan\\SourceSpan' => $vendorDir . '/scssphp/source-span/src/SourceSpan.php', + 'SourceSpan\\SourceSpanMixin' => $vendorDir . '/scssphp/source-span/src/SourceSpanMixin.php', + 'SourceSpan\\SourceSpanWithContext' => $vendorDir . '/scssphp/source-span/src/SourceSpanWithContext.php', + 'SourceSpan\\Util' => $vendorDir . '/scssphp/source-span/src/Util.php', 'SpreadsheetBulkExport' => $baseDir . '/core/spreadsheetbulkexport.class.inc.php', 'StimulusChecker' => $baseDir . '/core/userrights.class.inc.php', 'StimulusInternal' => $baseDir . '/core/stimulus.class.inc.php', @@ -1645,22 +1952,43 @@ return array( 'Symfony\\Component\\Cache\\Psr16Cache' => $vendorDir . '/symfony/cache/Psr16Cache.php', 'Symfony\\Component\\Cache\\ResettableInterface' => $vendorDir . '/symfony/cache/ResettableInterface.php', 'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => $vendorDir . '/symfony/cache/Traits/AbstractAdapterTrait.php', + 'Symfony\\Component\\Cache\\Traits\\CachedValueInterface' => $vendorDir . '/symfony/cache/Traits/CachedValueInterface.php', 'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => $vendorDir . '/symfony/cache/Traits/ContractsTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemCommonTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => $vendorDir . '/symfony/cache/Traits/FilesystemTrait.php', 'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => $vendorDir . '/symfony/cache/Traits/ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\Redis5Proxy' => $vendorDir . '/symfony/cache/Traits/Redis5Proxy.php', + 'Symfony\\Component\\Cache\\Traits\\Redis61ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis61ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Redis62ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis62ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Redis63ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis63ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\Redis6Proxy' => $vendorDir . '/symfony/cache/Traits/Redis6Proxy.php', - 'Symfony\\Component\\Cache\\Traits\\Redis6ProxyTrait' => $vendorDir . '/symfony/cache/Traits/Redis6ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisCluster5Proxy' => $vendorDir . '/symfony/cache/Traits/RedisCluster5Proxy.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster61ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster61ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster62ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster62ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster63ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster63ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisCluster6Proxy' => $vendorDir . '/symfony/cache/Traits/RedisCluster6Proxy.php', - 'Symfony\\Component\\Cache\\Traits\\RedisCluster6ProxyTrait' => $vendorDir . '/symfony/cache/Traits/RedisCluster6ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterNodeProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => $vendorDir . '/symfony/cache/Traits/RedisClusterProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisProxy' => $vendorDir . '/symfony/cache/Traits/RedisProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisTrait' => $vendorDir . '/symfony/cache/Traits/RedisTrait.php', 'Symfony\\Component\\Cache\\Traits\\RelayProxy' => $vendorDir . '/symfony/cache/Traits/RelayProxy.php', 'Symfony\\Component\\Cache\\Traits\\RelayProxyTrait' => $vendorDir . '/symfony/cache/Traits/RelayProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\BgsaveTrait' => $vendorDir . '/symfony/cache/Traits/Relay/BgsaveTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\CopyTrait' => $vendorDir . '/symfony/cache/Traits/Relay/CopyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\FtTrait' => $vendorDir . '/symfony/cache/Traits/Relay/FtTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GeosearchTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GeosearchTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GetWithMetaTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GetWithMetaTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GetrangeTrait' => $vendorDir . '/symfony/cache/Traits/Relay/GetrangeTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\HsetTrait' => $vendorDir . '/symfony/cache/Traits/Relay/HsetTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\IsTrackedTrait' => $vendorDir . '/symfony/cache/Traits/Relay/IsTrackedTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\MoveTrait' => $vendorDir . '/symfony/cache/Traits/Relay/MoveTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\NullableReturnTrait' => $vendorDir . '/symfony/cache/Traits/Relay/NullableReturnTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\PfcountTrait' => $vendorDir . '/symfony/cache/Traits/Relay/PfcountTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay11Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay11Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay121Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay121Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay12Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay12Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay20Trait' => $vendorDir . '/symfony/cache/Traits/Relay/Relay20Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\SwapdbTrait' => $vendorDir . '/symfony/cache/Traits/Relay/SwapdbTrait.php', 'Symfony\\Component\\Config\\Builder\\ClassBuilder' => $vendorDir . '/symfony/config/Builder/ClassBuilder.php', 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGenerator.php', 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => $vendorDir . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php', @@ -1825,6 +2153,7 @@ return array( 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => $vendorDir . '/symfony/console/Helper/TerminalInputHelper.php', 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', @@ -2699,7 +3028,6 @@ return array( 'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => $vendorDir . '/symfony/var-dumper/Cloner/Cursor.php', 'Symfony\\Component\\VarDumper\\Cloner\\Data' => $vendorDir . '/symfony/var-dumper/Cloner/Data.php', 'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => $vendorDir . '/symfony/var-dumper/Cloner/DumperInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Internal\\NoDefault' => $vendorDir . '/symfony/var-dumper/Cloner/Internal/NoDefault.php', 'Symfony\\Component\\VarDumper\\Cloner\\Stub' => $vendorDir . '/symfony/var-dumper/Cloner/Stub.php', 'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => $vendorDir . '/symfony/var-dumper/Cloner/VarCloner.php', 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php', @@ -2854,6 +3182,7 @@ return array( 'Twig\\ExpressionParser\\InfixExpressionParserInterface' => $vendorDir . '/twig/twig/src/ExpressionParser/InfixExpressionParserInterface.php', 'Twig\\ExpressionParser\\Infix\\ArgumentsTrait' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ArgumentsTrait.php', 'Twig\\ExpressionParser\\Infix\\ArrowExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ArrowExpressionParser.php', + 'Twig\\ExpressionParser\\Infix\\AssignmentExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\BinaryOperatorExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/BinaryOperatorExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\ConditionalTernaryExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/ConditionalTernaryExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\DotExpressionParser' => $vendorDir . '/twig/twig/src/ExpressionParser/Infix/DotExpressionParser.php', @@ -2939,10 +3268,15 @@ return array( 'Twig\\Node\\Expression\\Binary\\MulBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/MulBinary.php', 'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\NotInBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php', + 'Twig\\Node\\Expression\\Binary\\NotSameAsBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php', 'Twig\\Node\\Expression\\Binary\\NullCoalesceBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/NullCoalesceBinary.php', + 'Twig\\Node\\Expression\\Binary\\ObjectDestructuringSetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php', 'Twig\\Node\\Expression\\Binary\\OrBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/OrBinary.php', 'Twig\\Node\\Expression\\Binary\\PowerBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php', 'Twig\\Node\\Expression\\Binary\\RangeBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php', + 'Twig\\Node\\Expression\\Binary\\SameAsBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SameAsBinary.php', + 'Twig\\Node\\Expression\\Binary\\SequenceDestructuringSetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php', + 'Twig\\Node\\Expression\\Binary\\SetBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SetBinary.php', 'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php', 'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\SubBinary' => $vendorDir . '/twig/twig/src/Node/Expression/Binary/SubBinary.php', @@ -2951,6 +3285,7 @@ return array( 'Twig\\Node\\Expression\\CallExpression' => $vendorDir . '/twig/twig/src/Node/Expression/CallExpression.php', 'Twig\\Node\\Expression\\ConditionalExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConditionalExpression.php', 'Twig\\Node\\Expression\\ConstantExpression' => $vendorDir . '/twig/twig/src/Node/Expression/ConstantExpression.php', + 'Twig\\Node\\Expression\\EmptyExpression' => $vendorDir . '/twig/twig/src/Node/Expression/EmptyExpression.php', 'Twig\\Node\\Expression\\FilterExpression' => $vendorDir . '/twig/twig/src/Node/Expression/FilterExpression.php', 'Twig\\Node\\Expression\\Filter\\DefaultFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php', 'Twig\\Node\\Expression\\Filter\\RawFilter' => $vendorDir . '/twig/twig/src/Node/Expression/Filter/RawFilter.php', diff --git a/lib/composer/autoload_namespaces.php b/lib/composer/autoload_namespaces.php index 6629b7e09..b29b4a97f 100644 --- a/lib/composer/autoload_namespaces.php +++ b/lib/composer/autoload_namespaces.php @@ -8,5 +8,4 @@ $baseDir = dirname($vendorDir); return array( 'Console' => array($vendorDir . '/pear/console_getopt'), 'Archive_Tar' => array($vendorDir . '/pear/archive_tar'), - '' => array($vendorDir . '/pear/pear-core-minimal/src'), ); diff --git a/lib/composer/autoload_psr4.php b/lib/composer/autoload_psr4.php index 6816f3d26..17014ea4a 100644 --- a/lib/composer/autoload_psr4.php +++ b/lib/composer/autoload_psr4.php @@ -45,6 +45,7 @@ return array( 'Symfony\\Bundle\\FrameworkBundle\\' => array($vendorDir . '/symfony/framework-bundle'), 'Symfony\\Bundle\\DebugBundle\\' => array($vendorDir . '/symfony/debug-bundle'), 'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/twig-bridge'), + 'SourceSpan\\' => array($vendorDir . '/scssphp/source-span/src'), 'Soundasleep\\' => array($vendorDir . '/soundasleep/html2text/src'), 'ScssPhp\\ScssPhp\\' => array($vendorDir . '/scssphp/scssphp/src'), 'Sabberworm\\CSS\\' => array($vendorDir . '/sabberworm/php-css-parser/src'), @@ -56,6 +57,7 @@ return array( 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'Pelago\\Emogrifier\\' => array($vendorDir . '/pelago/emogrifier/src'), + 'League\\Uri\\' => array($vendorDir . '/league/uri', $vendorDir . '/league/uri-interfaces'), 'League\\OAuth2\\Client\\' => array($vendorDir . '/league/oauth2-google/src', $vendorDir . '/league/oauth2-client/src'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index c157af745..ae7c02bb1 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -71,6 +71,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Symfony\\Bundle\\FrameworkBundle\\' => 31, 'Symfony\\Bundle\\DebugBundle\\' => 27, 'Symfony\\Bridge\\Twig\\' => 20, + 'SourceSpan\\' => 11, 'Soundasleep\\' => 12, 'ScssPhp\\ScssPhp\\' => 16, 'Sabberworm\\CSS\\' => 15, @@ -88,6 +89,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f ), 'L' => array ( + 'League\\Uri\\' => 11, 'League\\OAuth2\\Client\\' => 21, ), 'G' => @@ -267,6 +269,10 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f array ( 0 => __DIR__ . '/..' . '/symfony/twig-bridge', ), + 'SourceSpan\\' => + array ( + 0 => __DIR__ . '/..' . '/scssphp/source-span/src', + ), 'Soundasleep\\' => array ( 0 => __DIR__ . '/..' . '/soundasleep/html2text/src', @@ -312,6 +318,11 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f array ( 0 => __DIR__ . '/..' . '/pelago/emogrifier/src', ), + 'League\\Uri\\' => + array ( + 0 => __DIR__ . '/..' . '/league/uri', + 1 => __DIR__ . '/..' . '/league/uri-interfaces', + ), 'League\\OAuth2\\Client\\' => array ( 0 => __DIR__ . '/..' . '/league/oauth2-google/src', @@ -360,10 +371,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f ), ); - public static $fallbackDirsPsr0 = array ( - 0 => __DIR__ . '/..' . '/pear/pear-core-minimal/src', - ); - public static $classMap = array ( 'AbstractApplicationObjectExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', 'AbstractApplicationUIExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', @@ -1245,6 +1252,68 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'League\\OAuth2\\Client\\Tool\\QueryBuilderTrait' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/QueryBuilderTrait.php', 'League\\OAuth2\\Client\\Tool\\RequestFactory' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/RequestFactory.php', 'League\\OAuth2\\Client\\Tool\\RequiredParameterTrait' => __DIR__ . '/..' . '/league/oauth2-client/src/Tool/RequiredParameterTrait.php', + 'League\\Uri\\BaseUri' => __DIR__ . '/..' . '/league/uri/BaseUri.php', + 'League\\Uri\\Builder' => __DIR__ . '/..' . '/league/uri/Builder.php', + 'League\\Uri\\Contracts\\AuthorityInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/AuthorityInterface.php', + 'League\\Uri\\Contracts\\Conditionable' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/Conditionable.php', + 'League\\Uri\\Contracts\\DataPathInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/DataPathInterface.php', + 'League\\Uri\\Contracts\\DomainHostInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/DomainHostInterface.php', + 'League\\Uri\\Contracts\\FragmentDirective' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/FragmentDirective.php', + 'League\\Uri\\Contracts\\FragmentInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/FragmentInterface.php', + 'League\\Uri\\Contracts\\HostInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/HostInterface.php', + 'League\\Uri\\Contracts\\IpHostInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/IpHostInterface.php', + 'League\\Uri\\Contracts\\PathInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/PathInterface.php', + 'League\\Uri\\Contracts\\PortInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/PortInterface.php', + 'League\\Uri\\Contracts\\QueryInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/QueryInterface.php', + 'League\\Uri\\Contracts\\SegmentedPathInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/SegmentedPathInterface.php', + 'League\\Uri\\Contracts\\Transformable' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/Transformable.php', + 'League\\Uri\\Contracts\\UriAccess' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/UriAccess.php', + 'League\\Uri\\Contracts\\UriComponentInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/UriComponentInterface.php', + 'League\\Uri\\Contracts\\UriException' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/UriException.php', + 'League\\Uri\\Contracts\\UriInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/UriInterface.php', + 'League\\Uri\\Contracts\\UserInfoInterface' => __DIR__ . '/..' . '/league/uri-interfaces/Contracts/UserInfoInterface.php', + 'League\\Uri\\Encoder' => __DIR__ . '/..' . '/league/uri-interfaces/Encoder.php', + 'League\\Uri\\Exceptions\\ConversionFailed' => __DIR__ . '/..' . '/league/uri-interfaces/Exceptions/ConversionFailed.php', + 'League\\Uri\\Exceptions\\MissingFeature' => __DIR__ . '/..' . '/league/uri-interfaces/Exceptions/MissingFeature.php', + 'League\\Uri\\Exceptions\\OffsetOutOfBounds' => __DIR__ . '/..' . '/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php', + 'League\\Uri\\Exceptions\\SyntaxError' => __DIR__ . '/..' . '/league/uri-interfaces/Exceptions/SyntaxError.php', + 'League\\Uri\\FeatureDetection' => __DIR__ . '/..' . '/league/uri-interfaces/FeatureDetection.php', + 'League\\Uri\\HostFormat' => __DIR__ . '/..' . '/league/uri-interfaces/HostFormat.php', + 'League\\Uri\\HostRecord' => __DIR__ . '/..' . '/league/uri-interfaces/HostRecord.php', + 'League\\Uri\\HostType' => __DIR__ . '/..' . '/league/uri-interfaces/HostType.php', + 'League\\Uri\\Http' => __DIR__ . '/..' . '/league/uri/Http.php', + 'League\\Uri\\HttpFactory' => __DIR__ . '/..' . '/league/uri/HttpFactory.php', + 'League\\Uri\\IPv4\\BCMathCalculator' => __DIR__ . '/..' . '/league/uri-interfaces/IPv4/BCMathCalculator.php', + 'League\\Uri\\IPv4\\Calculator' => __DIR__ . '/..' . '/league/uri-interfaces/IPv4/Calculator.php', + 'League\\Uri\\IPv4\\Converter' => __DIR__ . '/..' . '/league/uri-interfaces/IPv4/Converter.php', + 'League\\Uri\\IPv4\\GMPCalculator' => __DIR__ . '/..' . '/league/uri-interfaces/IPv4/GMPCalculator.php', + 'League\\Uri\\IPv4\\NativeCalculator' => __DIR__ . '/..' . '/league/uri-interfaces/IPv4/NativeCalculator.php', + 'League\\Uri\\IPv6\\Converter' => __DIR__ . '/..' . '/league/uri-interfaces/IPv6/Converter.php', + 'League\\Uri\\Idna\\Converter' => __DIR__ . '/..' . '/league/uri-interfaces/Idna/Converter.php', + 'League\\Uri\\Idna\\Error' => __DIR__ . '/..' . '/league/uri-interfaces/Idna/Error.php', + 'League\\Uri\\Idna\\Option' => __DIR__ . '/..' . '/league/uri-interfaces/Idna/Option.php', + 'League\\Uri\\Idna\\Result' => __DIR__ . '/..' . '/league/uri-interfaces/Idna/Result.php', + 'League\\Uri\\KeyValuePair\\Converter' => __DIR__ . '/..' . '/league/uri-interfaces/KeyValuePair/Converter.php', + 'League\\Uri\\QueryComposeMode' => __DIR__ . '/..' . '/league/uri-interfaces/QueryComposeMode.php', + 'League\\Uri\\QueryExtractMode' => __DIR__ . '/..' . '/league/uri-interfaces/QueryExtractMode.php', + 'League\\Uri\\QueryString' => __DIR__ . '/..' . '/league/uri-interfaces/QueryString.php', + 'League\\Uri\\SchemeType' => __DIR__ . '/..' . '/league/uri/SchemeType.php', + 'League\\Uri\\StringCoercionMode' => __DIR__ . '/..' . '/league/uri-interfaces/StringCoercionMode.php', + 'League\\Uri\\Uri' => __DIR__ . '/..' . '/league/uri/Uri.php', + 'League\\Uri\\UriComparisonMode' => __DIR__ . '/..' . '/league/uri-interfaces/UriComparisonMode.php', + 'League\\Uri\\UriInfo' => __DIR__ . '/..' . '/league/uri/UriInfo.php', + 'League\\Uri\\UriResolver' => __DIR__ . '/..' . '/league/uri/UriResolver.php', + 'League\\Uri\\UriScheme' => __DIR__ . '/..' . '/league/uri/UriScheme.php', + 'League\\Uri\\UriString' => __DIR__ . '/..' . '/league/uri-interfaces/UriString.php', + 'League\\Uri\\UriTemplate' => __DIR__ . '/..' . '/league/uri/UriTemplate.php', + 'League\\Uri\\UriTemplate\\Expression' => __DIR__ . '/..' . '/league/uri/UriTemplate/Expression.php', + 'League\\Uri\\UriTemplate\\Operator' => __DIR__ . '/..' . '/league/uri/UriTemplate/Operator.php', + 'League\\Uri\\UriTemplate\\Template' => __DIR__ . '/..' . '/league/uri/UriTemplate/Template.php', + 'League\\Uri\\UriTemplate\\TemplateCanNotBeExpanded' => __DIR__ . '/..' . '/league/uri/UriTemplate/TemplateCanNotBeExpanded.php', + 'League\\Uri\\UriTemplate\\VarSpecifier' => __DIR__ . '/..' . '/league/uri/UriTemplate/VarSpecifier.php', + 'League\\Uri\\UriTemplate\\VariableBag' => __DIR__ . '/..' . '/league/uri/UriTemplate/VariableBag.php', + 'League\\Uri\\Urn' => __DIR__ . '/..' . '/league/uri/Urn.php', + 'League\\Uri\\UrnComparisonMode' => __DIR__ . '/..' . '/league/uri-interfaces/UrnComparisonMode.php', 'ListExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php', 'ListOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php', 'LogAPI' => __DIR__ . '/../..' . '/core/log.class.inc.php', @@ -1317,6 +1386,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php', 'PDFBulkExport' => __DIR__ . '/../..' . '/core/pdfbulkexport.class.inc.php', 'PEAR' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/PEAR.php', + 'PEAR_Error' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/PEAR.php', 'PEAR_ErrorStack' => __DIR__ . '/..' . '/pear/pear-core-minimal/src/PEAR/ErrorStack.php', 'PEAR_Exception' => __DIR__ . '/..' . '/pear/pear_exception/PEAR/Exception.php', 'Pelago\\Emogrifier\\Caching\\SimpleStringCache' => __DIR__ . '/..' . '/pelago/emogrifier/src/Caching/SimpleStringCache.php', @@ -1706,55 +1776,282 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'SanitizeTrait' => __DIR__ . '/../..' . '/core/restservices.class.inc.php', 'ScalarExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php', 'ScalarOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php', - 'ScssPhp\\ScssPhp\\Base\\Range' => __DIR__ . '/..' . '/scssphp/scssphp/src/Base/Range.php', - 'ScssPhp\\ScssPhp\\Block' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block.php', - 'ScssPhp\\ScssPhp\\Block\\AtRootBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/AtRootBlock.php', - 'ScssPhp\\ScssPhp\\Block\\CallableBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/CallableBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ContentBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ContentBlock.php', - 'ScssPhp\\ScssPhp\\Block\\DirectiveBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/DirectiveBlock.php', - 'ScssPhp\\ScssPhp\\Block\\EachBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/EachBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ElseBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ElseBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ElseifBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ElseifBlock.php', - 'ScssPhp\\ScssPhp\\Block\\ForBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/ForBlock.php', - 'ScssPhp\\ScssPhp\\Block\\IfBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/IfBlock.php', - 'ScssPhp\\ScssPhp\\Block\\MediaBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/MediaBlock.php', - 'ScssPhp\\ScssPhp\\Block\\NestedPropertyBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/NestedPropertyBlock.php', - 'ScssPhp\\ScssPhp\\Block\\WhileBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Block/WhileBlock.php', - 'ScssPhp\\ScssPhp\\Cache' => __DIR__ . '/..' . '/scssphp/scssphp/src/Cache.php', + 'ScssPhp\\ScssPhp\\Ast\\AstNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/AstNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssAtRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssAtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssComment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssImport' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssKeyframeBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssKeyframeBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssMediaQuery' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssMediaQuery.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssMediaRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssMediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssParentNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssParentNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssStyleRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssStyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssStylesheet' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssStylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssSupportsRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssSupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\CssValue' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/CssValue.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\IsInvisibleVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/IsInvisibleVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\MediaQueryMergeResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/MediaQueryMergeResult.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\MediaQuerySingletonMergeResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/MediaQuerySingletonMergeResult.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssAtRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssAtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssComment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssImport' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssKeyframeBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssKeyframeBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssMediaRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssMediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssParentNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssParentNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssStyleRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssStyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssStylesheet' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssStylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Css\\ModifiableCssSupportsRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Css/ModifiableCssSupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\FakeAstNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/FakeAstNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Argument' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Argument.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ArgumentDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/ArgumentDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ArgumentInvocation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/ArgumentInvocation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\AtRootQuery' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/AtRootQuery.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\CallableInvocation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/CallableInvocation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\ConfiguredVariable' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/ConfiguredVariable.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BinaryOperationExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperationExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BinaryOperator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/BinaryOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\BooleanExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/BooleanExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ColorExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/ColorExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\FunctionExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/FunctionExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\IfExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/IfExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\InterpolatedFunctionExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/InterpolatedFunctionExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\IsCalculationSafeVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/IsCalculationSafeVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ListExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/ListExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\MapExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/MapExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\NullExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/NullExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\NumberExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/NumberExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ParenthesizedExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/ParenthesizedExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\SelectorExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/SelectorExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\StringExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/StringExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\SupportsExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/SupportsExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\UnaryOperationExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperationExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\UnaryOperator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/UnaryOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\ValueExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/ValueExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Expression\\VariableExpression' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Expression/VariableExpression.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Import.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import\\DynamicImport' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Import/DynamicImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Import\\StaticImport' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Import/StaticImport.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Interpolation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Interpolation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SassDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassNode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SassNode.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SassReference' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SassReference.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\AtRootRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/AtRootRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\AtRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/AtRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\CallableDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/CallableDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ContentBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ContentBlock.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ContentRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ContentRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\DebugRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/DebugRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\Declaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/Declaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\EachRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/EachRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ElseClause' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ElseClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ErrorRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ErrorRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ExtendRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ExtendRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ForRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ForRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\FunctionRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/FunctionRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\HasContentVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/HasContentVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfClause' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/IfClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/IfRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IfRuleClause' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/IfRuleClause.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ImportRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ImportRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\IncludeRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/IncludeRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\LoudComment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/LoudComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\MediaRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/MediaRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\MixinRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/MixinRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ParentStatement' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ParentStatement.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\ReturnRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/ReturnRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\SilentComment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/SilentComment.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\StyleRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/StyleRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\Stylesheet' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/Stylesheet.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\SupportsRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/SupportsRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\VariableDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/VariableDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\WarnRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/WarnRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\Statement\\WhileRule' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/Statement/WhileRule.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsAnything' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsAnything.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsDeclaration' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsDeclaration.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsFunction' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsFunction.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsInterpolation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsInterpolation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsNegation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsNegation.php', + 'ScssPhp\\ScssPhp\\Ast\\Sass\\SupportsCondition\\SupportsOperation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Sass/SupportsCondition/SupportsOperation.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\AttributeOperator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/AttributeOperator.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\AttributeSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/AttributeSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ClassSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/ClassSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\Combinator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/Combinator.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ComplexSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/ComplexSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ComplexSelectorComponent' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/ComplexSelectorComponent.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\CompoundSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/CompoundSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IDSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/IDSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsBogusVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/IsBogusVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsInvisibleVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/IsInvisibleVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\IsUselessVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/IsUselessVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ParentSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/ParentSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\ParentSelectorVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/ParentSelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\PlaceholderSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/PlaceholderSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\PseudoSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/PseudoSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\QualifiedName' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/QualifiedName.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\Selector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/Selector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\SelectorList' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/SelectorList.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\SimpleSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/SimpleSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\TypeSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/TypeSelector.php', + 'ScssPhp\\ScssPhp\\Ast\\Selector\\UniversalSelector' => __DIR__ . '/..' . '/scssphp/scssphp/src/Ast/Selector/UniversalSelector.php', + 'ScssPhp\\ScssPhp\\Collection\\Map' => __DIR__ . '/..' . '/scssphp/scssphp/src/Collection/Map.php', 'ScssPhp\\ScssPhp\\Colors' => __DIR__ . '/..' . '/scssphp/scssphp/src/Colors.php', 'ScssPhp\\ScssPhp\\CompilationResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/CompilationResult.php', 'ScssPhp\\ScssPhp\\Compiler' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler.php', - 'ScssPhp\\ScssPhp\\Compiler\\CachedResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler/CachedResult.php', - 'ScssPhp\\ScssPhp\\Compiler\\Environment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler/Environment.php', - 'ScssPhp\\ScssPhp\\Exception\\CompilerException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/CompilerException.php', - 'ScssPhp\\ScssPhp\\Exception\\ParserException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/ParserException.php', - 'ScssPhp\\ScssPhp\\Exception\\RangeException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/RangeException.php', + 'ScssPhp\\ScssPhp\\Compiler\\LegacyValueVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Compiler/LegacyValueVisitor.php', + 'ScssPhp\\ScssPhp\\Deprecation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Deprecation.php', + 'ScssPhp\\ScssPhp\\DeprecationStatus' => __DIR__ . '/..' . '/scssphp/scssphp/src/DeprecationStatus.php', + 'ScssPhp\\ScssPhp\\Evaluation\\ArgumentResults' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/ArgumentResults.php', + 'ScssPhp\\ScssPhp\\Evaluation\\Environment' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/Environment.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluateResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/EvaluateResult.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluateVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/EvaluateVisitor.php', + 'ScssPhp\\ScssPhp\\Evaluation\\EvaluationContext' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/EvaluationContext.php', + 'ScssPhp\\ScssPhp\\Evaluation\\LoadedStylesheet' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/LoadedStylesheet.php', + 'ScssPhp\\ScssPhp\\Evaluation\\VisitorEvaluationContext' => __DIR__ . '/..' . '/scssphp/scssphp/src/Evaluation/VisitorEvaluationContext.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/MultiSpanSassException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassFormatException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/MultiSpanSassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassRuntimeException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/MultiSpanSassRuntimeException.php', + 'ScssPhp\\ScssPhp\\Exception\\MultiSpanSassScriptException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/MultiSpanSassScriptException.php', 'ScssPhp\\ScssPhp\\Exception\\SassException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassException.php', + 'ScssPhp\\ScssPhp\\Exception\\SassFormatException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\SassRuntimeException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassRuntimeException.php', 'ScssPhp\\ScssPhp\\Exception\\SassScriptException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SassScriptException.php', - 'ScssPhp\\ScssPhp\\Exception\\ServerException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/ServerException.php', - 'ScssPhp\\ScssPhp\\Formatter' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter.php', - 'ScssPhp\\ScssPhp\\Formatter\\Compact' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Compact.php', - 'ScssPhp\\ScssPhp\\Formatter\\Compressed' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Compressed.php', - 'ScssPhp\\ScssPhp\\Formatter\\Crunched' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Crunched.php', - 'ScssPhp\\ScssPhp\\Formatter\\Debug' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Debug.php', - 'ScssPhp\\ScssPhp\\Formatter\\Expanded' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Expanded.php', - 'ScssPhp\\ScssPhp\\Formatter\\Nested' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/Nested.php', - 'ScssPhp\\ScssPhp\\Formatter\\OutputBlock' => __DIR__ . '/..' . '/scssphp/scssphp/src/Formatter/OutputBlock.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SimpleSassException.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassFormatException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SimpleSassFormatException.php', + 'ScssPhp\\ScssPhp\\Exception\\SimpleSassRuntimeException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Exception/SimpleSassRuntimeException.php', + 'ScssPhp\\ScssPhp\\Extend\\ComplexSelectorMap' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ComplexSelectorMap.php', + 'ScssPhp\\ScssPhp\\Extend\\ConcreteExtensionStore' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ConcreteExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\EmptyExtensionStore' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/EmptyExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtendMode' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ExtendMode.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtendUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ExtendUtil.php', + 'ScssPhp\\ScssPhp\\Extend\\Extender' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/Extender.php', + 'ScssPhp\\ScssPhp\\Extend\\Extension' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/Extension.php', + 'ScssPhp\\ScssPhp\\Extend\\ExtensionStore' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ExtensionStore.php', + 'ScssPhp\\ScssPhp\\Extend\\MergedExtension' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/MergedExtension.php', + 'ScssPhp\\ScssPhp\\Extend\\ObjectSet' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/ObjectSet.php', + 'ScssPhp\\ScssPhp\\Extend\\SimpleSelectorMap' => __DIR__ . '/..' . '/scssphp/scssphp/src/Extend/SimpleSelectorMap.php', + 'ScssPhp\\ScssPhp\\Function\\ColorFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/ColorFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\FunctionRegistry' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/FunctionRegistry.php', + 'ScssPhp\\ScssPhp\\Function\\ListFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/ListFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MapFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/MapFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MathFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/MathFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\MetaFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/MetaFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\SelectorFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/SelectorFunctions.php', + 'ScssPhp\\ScssPhp\\Function\\StringFunctions' => __DIR__ . '/..' . '/scssphp/scssphp/src/Function/StringFunctions.php', + 'ScssPhp\\ScssPhp\\Importer\\CanonicalizeContext' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/CanonicalizeContext.php', + 'ScssPhp\\ScssPhp\\Importer\\CanonicalizeResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/CanonicalizeResult.php', + 'ScssPhp\\ScssPhp\\Importer\\FilesystemImporter' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/FilesystemImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportCache' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/ImportCache.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportContext' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/ImportContext.php', + 'ScssPhp\\ScssPhp\\Importer\\ImportUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/ImportUtil.php', + 'ScssPhp\\ScssPhp\\Importer\\Importer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/Importer.php', + 'ScssPhp\\ScssPhp\\Importer\\ImporterResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/ImporterResult.php', + 'ScssPhp\\ScssPhp\\Importer\\LegacyCallbackImporter' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/LegacyCallbackImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\NoOpImporter' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/NoOpImporter.php', + 'ScssPhp\\ScssPhp\\Importer\\SpecialCacheValue' => __DIR__ . '/..' . '/scssphp/scssphp/src/Importer/SpecialCacheValue.php', + 'ScssPhp\\ScssPhp\\Logger\\DeprecationProcessingLogger' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/DeprecationProcessingLogger.php', 'ScssPhp\\ScssPhp\\Logger\\LoggerInterface' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/LoggerInterface.php', 'ScssPhp\\ScssPhp\\Logger\\QuietLogger' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/QuietLogger.php', 'ScssPhp\\ScssPhp\\Logger\\StreamLogger' => __DIR__ . '/..' . '/scssphp/scssphp/src/Logger/StreamLogger.php', 'ScssPhp\\ScssPhp\\Node' => __DIR__ . '/..' . '/scssphp/scssphp/src/Node.php', 'ScssPhp\\ScssPhp\\Node\\Number' => __DIR__ . '/..' . '/scssphp/scssphp/src/Node/Number.php', 'ScssPhp\\ScssPhp\\OutputStyle' => __DIR__ . '/..' . '/scssphp/scssphp/src/OutputStyle.php', - 'ScssPhp\\ScssPhp\\Parser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser.php', + 'ScssPhp\\ScssPhp\\Parser\\AtRootQueryParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/AtRootQueryParser.php', + 'ScssPhp\\ScssPhp\\Parser\\CssParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/CssParser.php', + 'ScssPhp\\ScssPhp\\Parser\\FormatException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/FormatException.php', + 'ScssPhp\\ScssPhp\\Parser\\InterpolationBuffer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/InterpolationBuffer.php', + 'ScssPhp\\ScssPhp\\Parser\\InterpolationMap' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/InterpolationMap.php', + 'ScssPhp\\ScssPhp\\Parser\\KeyframeSelectorParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/KeyframeSelectorParser.php', + 'ScssPhp\\ScssPhp\\Parser\\LineScanner' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/LineScanner.php', + 'ScssPhp\\ScssPhp\\Parser\\MediaQueryParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/MediaQueryParser.php', + 'ScssPhp\\ScssPhp\\Parser\\MultiSourceFormatException' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/MultiSourceFormatException.php', + 'ScssPhp\\ScssPhp\\Parser\\Parser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/Parser.php', + 'ScssPhp\\ScssPhp\\Parser\\SassParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/SassParser.php', + 'ScssPhp\\ScssPhp\\Parser\\ScssParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/ScssParser.php', + 'ScssPhp\\ScssPhp\\Parser\\SelectorParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/SelectorParser.php', + 'ScssPhp\\ScssPhp\\Parser\\StringScanner' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/StringScanner.php', + 'ScssPhp\\ScssPhp\\Parser\\StylesheetParser' => __DIR__ . '/..' . '/scssphp/scssphp/src/Parser/StylesheetParser.php', + 'ScssPhp\\ScssPhp\\SassCallable\\BuiltInCallable' => __DIR__ . '/..' . '/scssphp/scssphp/src/SassCallable/BuiltInCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\PlainCssCallable' => __DIR__ . '/..' . '/scssphp/scssphp/src/SassCallable/PlainCssCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\SassCallable' => __DIR__ . '/..' . '/scssphp/scssphp/src/SassCallable/SassCallable.php', + 'ScssPhp\\ScssPhp\\SassCallable\\UserDefinedCallable' => __DIR__ . '/..' . '/scssphp/scssphp/src/SassCallable/UserDefinedCallable.php', + 'ScssPhp\\ScssPhp\\Serializer\\SerializeResult' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/SerializeResult.php', + 'ScssPhp\\ScssPhp\\Serializer\\SerializeVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/SerializeVisitor.php', + 'ScssPhp\\ScssPhp\\Serializer\\Serializer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/Serializer.php', + 'ScssPhp\\ScssPhp\\Serializer\\SimpleStringBuffer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/SimpleStringBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\SourceMapBuffer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/SourceMapBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\StringBuffer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/StringBuffer.php', + 'ScssPhp\\ScssPhp\\Serializer\\TrackingSourceMapBuffer' => __DIR__ . '/..' . '/scssphp/scssphp/src/Serializer/TrackingSourceMapBuffer.php', 'ScssPhp\\ScssPhp\\SourceMap\\Base64' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/Base64.php', 'ScssPhp\\ScssPhp\\SourceMap\\Base64VLQ' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/Base64VLQ.php', - 'ScssPhp\\ScssPhp\\SourceMap\\SourceMapGenerator' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/SourceMapGenerator.php', + 'ScssPhp\\ScssPhp\\SourceMap\\Builder\\Entry' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/Builder/Entry.php', + 'ScssPhp\\ScssPhp\\SourceMap\\SingleMapping' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/SingleMapping.php', + 'ScssPhp\\ScssPhp\\SourceMap\\TargetEntry' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/TargetEntry.php', + 'ScssPhp\\ScssPhp\\SourceMap\\TargetLineEntry' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceMap/TargetLineEntry.php', + 'ScssPhp\\ScssPhp\\SourceSpan\\LazyFileSpan' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceSpan/LazyFileSpan.php', + 'ScssPhp\\ScssPhp\\SourceSpan\\MultiSpan' => __DIR__ . '/..' . '/scssphp/scssphp/src/SourceSpan/MultiSpan.php', + 'ScssPhp\\ScssPhp\\StackTrace\\Frame' => __DIR__ . '/..' . '/scssphp/scssphp/src/StackTrace/Frame.php', + 'ScssPhp\\ScssPhp\\StackTrace\\Trace' => __DIR__ . '/..' . '/scssphp/scssphp/src/StackTrace/Trace.php', + 'ScssPhp\\ScssPhp\\Syntax' => __DIR__ . '/..' . '/scssphp/scssphp/src/Syntax.php', 'ScssPhp\\ScssPhp\\Type' => __DIR__ . '/..' . '/scssphp/scssphp/src/Type.php', 'ScssPhp\\ScssPhp\\Util' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util.php', + 'ScssPhp\\ScssPhp\\Util\\ArrayUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/ArrayUtil.php', + 'ScssPhp\\ScssPhp\\Util\\AstUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/AstUtil.php', + 'ScssPhp\\ScssPhp\\Util\\Box' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/Box.php', + 'ScssPhp\\ScssPhp\\Util\\Character' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/Character.php', + 'ScssPhp\\ScssPhp\\Util\\Equatable' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/Equatable.php', + 'ScssPhp\\ScssPhp\\Util\\EquatableUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/EquatableUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ErrorUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/ErrorUtil.php', + 'ScssPhp\\ScssPhp\\Util\\IterableUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/IterableUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ListUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/ListUtil.php', + 'ScssPhp\\ScssPhp\\Util\\LoggerUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/LoggerUtil.php', + 'ScssPhp\\ScssPhp\\Util\\MakeExpressionCalculationSafe' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/MakeExpressionCalculationSafe.php', + 'ScssPhp\\ScssPhp\\Util\\ModifiableBox' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/ModifiableBox.php', + 'ScssPhp\\ScssPhp\\Util\\NumberUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/NumberUtil.php', + 'ScssPhp\\ScssPhp\\Util\\ParserUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/ParserUtil.php', 'ScssPhp\\ScssPhp\\Util\\Path' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/Path.php', + 'ScssPhp\\ScssPhp\\Util\\SpanUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/SpanUtil.php', + 'ScssPhp\\ScssPhp\\Util\\StringUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/StringUtil.php', + 'ScssPhp\\ScssPhp\\Util\\UriUtil' => __DIR__ . '/..' . '/scssphp/scssphp/src/Util/UriUtil.php', 'ScssPhp\\ScssPhp\\ValueConverter' => __DIR__ . '/..' . '/scssphp/scssphp/src/ValueConverter.php', + 'ScssPhp\\ScssPhp\\Value\\CalculationOperation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/CalculationOperation.php', + 'ScssPhp\\ScssPhp\\Value\\CalculationOperator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/CalculationOperator.php', + 'ScssPhp\\ScssPhp\\Value\\ColorFormat' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/ColorFormat.php', + 'ScssPhp\\ScssPhp\\Value\\ColorFormatEnum' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/ColorFormatEnum.php', + 'ScssPhp\\ScssPhp\\Value\\ComplexSassNumber' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/ComplexSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\ListSeparator' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/ListSeparator.php', + 'ScssPhp\\ScssPhp\\Value\\SassArgumentList' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassArgumentList.php', + 'ScssPhp\\ScssPhp\\Value\\SassBoolean' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassBoolean.php', + 'ScssPhp\\ScssPhp\\Value\\SassCalculation' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassCalculation.php', + 'ScssPhp\\ScssPhp\\Value\\SassColor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassColor.php', + 'ScssPhp\\ScssPhp\\Value\\SassFunction' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassFunction.php', + 'ScssPhp\\ScssPhp\\Value\\SassList' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassList.php', + 'ScssPhp\\ScssPhp\\Value\\SassMap' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassMap.php', + 'ScssPhp\\ScssPhp\\Value\\SassMixin' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassMixin.php', + 'ScssPhp\\ScssPhp\\Value\\SassNull' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassNull.php', + 'ScssPhp\\ScssPhp\\Value\\SassNumber' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\SassString' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SassString.php', + 'ScssPhp\\ScssPhp\\Value\\SingleUnitSassNumber' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SingleUnitSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\SpanColorFormat' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/SpanColorFormat.php', + 'ScssPhp\\ScssPhp\\Value\\UnitlessSassNumber' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/UnitlessSassNumber.php', + 'ScssPhp\\ScssPhp\\Value\\Value' => __DIR__ . '/..' . '/scssphp/scssphp/src/Value/Value.php', 'ScssPhp\\ScssPhp\\Version' => __DIR__ . '/..' . '/scssphp/scssphp/src/Version.php', + 'ScssPhp\\ScssPhp\\Visitor\\AnySelectorVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/AnySelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\CssVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/CssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\EveryCssVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/EveryCssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ExpressionVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/ExpressionVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ModifiableCssVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/ModifiableCssVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ReplaceExpressionVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/ReplaceExpressionVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\SelectorSearchVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/SelectorSearchVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\SelectorVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/SelectorVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\StatementSearchVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/StatementSearchVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\StatementVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/StatementVisitor.php', + 'ScssPhp\\ScssPhp\\Visitor\\ValueVisitor' => __DIR__ . '/..' . '/scssphp/scssphp/src/Visitor/ValueVisitor.php', 'ScssPhp\\ScssPhp\\Warn' => __DIR__ . '/..' . '/scssphp/scssphp/src/Warn.php', 'SearchMenuNode' => __DIR__ . '/../..' . '/application/menunode.class.inc.php', 'SecurityException' => __DIR__ . '/../..' . '/application/exceptions/SecurityException.php', @@ -1774,6 +2071,23 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'SimpleGraphException' => __DIR__ . '/../..' . '/core/simplegraph.class.inc.php', 'Soundasleep\\Html2Text' => __DIR__ . '/..' . '/soundasleep/html2text/src/Html2Text.php', 'Soundasleep\\Html2TextException' => __DIR__ . '/..' . '/soundasleep/html2text/src/Html2TextException.php', + 'SourceSpan\\ConcreteFileSpan' => __DIR__ . '/..' . '/scssphp/source-span/src/ConcreteFileSpan.php', + 'SourceSpan\\FileLocation' => __DIR__ . '/..' . '/scssphp/source-span/src/FileLocation.php', + 'SourceSpan\\FileSpan' => __DIR__ . '/..' . '/scssphp/source-span/src/FileSpan.php', + 'SourceSpan\\Highlighter\\AsciiGlyph' => __DIR__ . '/..' . '/scssphp/source-span/src/Highlighter/AsciiGlyph.php', + 'SourceSpan\\Highlighter\\Highlight' => __DIR__ . '/..' . '/scssphp/source-span/src/Highlighter/Highlight.php', + 'SourceSpan\\Highlighter\\Highlighter' => __DIR__ . '/..' . '/scssphp/source-span/src/Highlighter/Highlighter.php', + 'SourceSpan\\Highlighter\\Line' => __DIR__ . '/..' . '/scssphp/source-span/src/Highlighter/Line.php', + 'SourceSpan\\SimpleSourceLocation' => __DIR__ . '/..' . '/scssphp/source-span/src/SimpleSourceLocation.php', + 'SourceSpan\\SimpleSourceSpan' => __DIR__ . '/..' . '/scssphp/source-span/src/SimpleSourceSpan.php', + 'SourceSpan\\SimpleSourceSpanWithContext' => __DIR__ . '/..' . '/scssphp/source-span/src/SimpleSourceSpanWithContext.php', + 'SourceSpan\\SourceFile' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceFile.php', + 'SourceSpan\\SourceLocation' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceLocation.php', + 'SourceSpan\\SourceLocationMixin' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceLocationMixin.php', + 'SourceSpan\\SourceSpan' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceSpan.php', + 'SourceSpan\\SourceSpanMixin' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceSpanMixin.php', + 'SourceSpan\\SourceSpanWithContext' => __DIR__ . '/..' . '/scssphp/source-span/src/SourceSpanWithContext.php', + 'SourceSpan\\Util' => __DIR__ . '/..' . '/scssphp/source-span/src/Util.php', 'SpreadsheetBulkExport' => __DIR__ . '/../..' . '/core/spreadsheetbulkexport.class.inc.php', 'StimulusChecker' => __DIR__ . '/../..' . '/core/userrights.class.inc.php', 'StimulusInternal' => __DIR__ . '/../..' . '/core/stimulus.class.inc.php', @@ -2004,22 +2318,43 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Symfony\\Component\\Cache\\Psr16Cache' => __DIR__ . '/..' . '/symfony/cache/Psr16Cache.php', 'Symfony\\Component\\Cache\\ResettableInterface' => __DIR__ . '/..' . '/symfony/cache/ResettableInterface.php', 'Symfony\\Component\\Cache\\Traits\\AbstractAdapterTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/AbstractAdapterTrait.php', + 'Symfony\\Component\\Cache\\Traits\\CachedValueInterface' => __DIR__ . '/..' . '/symfony/cache/Traits/CachedValueInterface.php', 'Symfony\\Component\\Cache\\Traits\\ContractsTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ContractsTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemCommonTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemCommonTrait.php', 'Symfony\\Component\\Cache\\Traits\\FilesystemTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/FilesystemTrait.php', 'Symfony\\Component\\Cache\\Traits\\ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\Redis5Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis5Proxy.php', + 'Symfony\\Component\\Cache\\Traits\\Redis61ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis61ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Redis62ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis62ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Redis63ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis63ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\Redis6Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis6Proxy.php', - 'Symfony\\Component\\Cache\\Traits\\Redis6ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Redis6ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisCluster5Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster5Proxy.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster61ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster61ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster62ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster62ProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\RedisCluster63ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster63ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisCluster6Proxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster6Proxy.php', - 'Symfony\\Component\\Cache\\Traits\\RedisCluster6ProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisCluster6ProxyTrait.php', 'Symfony\\Component\\Cache\\Traits\\RedisClusterNodeProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterNodeProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisClusterProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisClusterProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisProxy.php', 'Symfony\\Component\\Cache\\Traits\\RedisTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RedisTrait.php', 'Symfony\\Component\\Cache\\Traits\\RelayProxy' => __DIR__ . '/..' . '/symfony/cache/Traits/RelayProxy.php', 'Symfony\\Component\\Cache\\Traits\\RelayProxyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/RelayProxyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\BgsaveTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/BgsaveTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\CopyTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/CopyTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\FtTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/FtTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GeosearchTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GeosearchTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GetWithMetaTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GetWithMetaTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\GetrangeTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/GetrangeTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\HsetTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/HsetTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\IsTrackedTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/IsTrackedTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\MoveTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/MoveTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\NullableReturnTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/NullableReturnTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\PfcountTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/PfcountTrait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay11Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay11Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay121Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay121Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay12Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay12Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\Relay20Trait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/Relay20Trait.php', + 'Symfony\\Component\\Cache\\Traits\\Relay\\SwapdbTrait' => __DIR__ . '/..' . '/symfony/cache/Traits/Relay/SwapdbTrait.php', 'Symfony\\Component\\Config\\Builder\\ClassBuilder' => __DIR__ . '/..' . '/symfony/config/Builder/ClassBuilder.php', 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGenerator' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGenerator.php', 'Symfony\\Component\\Config\\Builder\\ConfigBuilderGeneratorInterface' => __DIR__ . '/..' . '/symfony/config/Builder/ConfigBuilderGeneratorInterface.php', @@ -2184,6 +2519,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Helper\\TerminalInputHelper' => __DIR__ . '/..' . '/symfony/console/Helper/TerminalInputHelper.php', 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', @@ -3058,7 +3394,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Cursor.php', 'Symfony\\Component\\VarDumper\\Cloner\\Data' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Data.php', 'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/DumperInterface.php', - 'Symfony\\Component\\VarDumper\\Cloner\\Internal\\NoDefault' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Internal/NoDefault.php', 'Symfony\\Component\\VarDumper\\Cloner\\Stub' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Stub.php', 'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/VarCloner.php', 'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php', @@ -3213,6 +3548,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Twig\\ExpressionParser\\InfixExpressionParserInterface' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/InfixExpressionParserInterface.php', 'Twig\\ExpressionParser\\Infix\\ArgumentsTrait' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ArgumentsTrait.php', 'Twig\\ExpressionParser\\Infix\\ArrowExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ArrowExpressionParser.php', + 'Twig\\ExpressionParser\\Infix\\AssignmentExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/AssignmentExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\BinaryOperatorExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/BinaryOperatorExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\ConditionalTernaryExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/ConditionalTernaryExpressionParser.php', 'Twig\\ExpressionParser\\Infix\\DotExpressionParser' => __DIR__ . '/..' . '/twig/twig/src/ExpressionParser/Infix/DotExpressionParser.php', @@ -3298,10 +3634,15 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Twig\\Node\\Expression\\Binary\\MulBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/MulBinary.php', 'Twig\\Node\\Expression\\Binary\\NotEqualBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotEqualBinary.php', 'Twig\\Node\\Expression\\Binary\\NotInBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotInBinary.php', + 'Twig\\Node\\Expression\\Binary\\NotSameAsBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NotSameAsBinary.php', 'Twig\\Node\\Expression\\Binary\\NullCoalesceBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/NullCoalesceBinary.php', + 'Twig\\Node\\Expression\\Binary\\ObjectDestructuringSetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/ObjectDestructuringSetBinary.php', 'Twig\\Node\\Expression\\Binary\\OrBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/OrBinary.php', 'Twig\\Node\\Expression\\Binary\\PowerBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/PowerBinary.php', 'Twig\\Node\\Expression\\Binary\\RangeBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/RangeBinary.php', + 'Twig\\Node\\Expression\\Binary\\SameAsBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SameAsBinary.php', + 'Twig\\Node\\Expression\\Binary\\SequenceDestructuringSetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SequenceDestructuringSetBinary.php', + 'Twig\\Node\\Expression\\Binary\\SetBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SetBinary.php', 'Twig\\Node\\Expression\\Binary\\SpaceshipBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SpaceshipBinary.php', 'Twig\\Node\\Expression\\Binary\\StartsWithBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/StartsWithBinary.php', 'Twig\\Node\\Expression\\Binary\\SubBinary' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Binary/SubBinary.php', @@ -3310,6 +3651,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Twig\\Node\\Expression\\CallExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/CallExpression.php', 'Twig\\Node\\Expression\\ConditionalExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConditionalExpression.php', 'Twig\\Node\\Expression\\ConstantExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/ConstantExpression.php', + 'Twig\\Node\\Expression\\EmptyExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/EmptyExpression.php', 'Twig\\Node\\Expression\\FilterExpression' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/FilterExpression.php', 'Twig\\Node\\Expression\\Filter\\DefaultFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/DefaultFilter.php', 'Twig\\Node\\Expression\\Filter\\RawFilter' => __DIR__ . '/..' . '/twig/twig/src/Node/Expression/Filter/RawFilter.php', @@ -3542,7 +3884,6 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f $loader->prefixLengthsPsr4 = ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f::$prefixDirsPsr4; $loader->prefixesPsr0 = ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f::$fallbackDirsPsr0; $loader->classMap = ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f::$classMap; }, null, ClassLoader::class); diff --git a/lib/composer/installed.json b/lib/composer/installed.json index c59aaf010..7ed339f2a 100644 --- a/lib/composer/installed.json +++ b/lib/composer/installed.json @@ -2,17 +2,17 @@ "packages": [ { "name": "apereo/phpcas", - "version": "1.6.1", - "version_normalized": "1.6.1.0", + "version": "dev-master", + "version_normalized": "dev-master", "source": { "type": "git", - "url": "https://github.com/apereo/phpCAS.git", - "reference": "c129708154852656aabb13d8606cd5b12dbbabac" + "url": "https://github.com/EsupPortail/phpCAS.git", + "reference": "57a7744146a963d8fa80192e0ab351051b711ff6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/apereo/phpCAS/zipball/c129708154852656aabb13d8606cd5b12dbbabac", - "reference": "c129708154852656aabb13d8606cd5b12dbbabac", + "url": "https://api.github.com/repos/EsupPortail/phpCAS/zipball/57a7744146a963d8fa80192e0ab351051b711ff6", + "reference": "57a7744146a963d8fa80192e0ab351051b711ff6", "shasum": "" }, "require": { @@ -26,7 +26,8 @@ "phpstan/phpstan": "^1.5", "phpunit/phpunit": ">=7.5" }, - "time": "2023-02-19T19:52:35+00:00", + "time": "2025-12-02T11:38:23+00:00", + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -42,15 +43,27 @@ "source/" ] }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "PhpCas\\": "test/CAS/" + } + }, + "scripts": { + "test": [ + "phpunit" + ], + "phpstan": [ + "phpstan" + ] + }, "license": [ "Apache-2.0" ], "authors": [ { "name": "Joachim Fritschi", - "email": "jfritschi@freenet.de", - "homepage": "https://github.com/jfritschi" + "homepage": "https://github.com/jfritschi", + "email": "jfritschi@freenet.de" }, { "name": "Adam Franco", @@ -69,8 +82,8 @@ "jasig" ], "support": { - "issues": "https://github.com/apereo/phpCAS/issues", - "source": "https://github.com/apereo/phpCAS/tree/1.6.1" + "source": "https://github.com/EsupPortail/phpCAS/tree/master", + "issues": "https://github.com/EsupPortail/phpCAS/issues" }, "install-path": "../apereo/phpcas" }, @@ -226,27 +239,27 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.0", - "version_normalized": "6.10.0.0", + "version": "v7.0.2", + "version_normalized": "7.0.2.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff" + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff", - "reference": "a49db6f0a5033aef5143295342f1c95521b075ff", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/5645b43af647b6947daac1d0f659dd1fbe8d3b65", + "reference": "5645b43af647b6947daac1d0f659dd1fbe8d3b65", "shasum": "" }, "require": { - "php": "^7.4||^8.0" + "php": "^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", + "guzzlehttp/guzzle": "^7.4", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", + "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" }, @@ -254,7 +267,7 @@ "ext-sodium": "Support EdDSA (Ed25519) signatures", "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" }, - "time": "2023-12-01T16:26:39+00:00", + "time": "2025-12-16T22:17:28+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -286,29 +299,29 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.0" + "source": "https://github.com/firebase/php-jwt/tree/v7.0.2" }, "install-path": "../firebase/php-jwt" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", - "version_normalized": "7.8.1.0", + "version": "7.10.0", + "version_normalized": "7.10.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", + "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -319,9 +332,9 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -329,7 +342,7 @@ "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "time": "2023-12-03T20:35:24+00:00", + "time": "2025-08-23T22:36:01+00:00", "type": "library", "extra": { "bamarni-bin": { @@ -401,7 +414,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.10.0" }, "funding": [ { @@ -421,17 +434,17 @@ }, { "name": "guzzlehttp/promises", - "version": "2.0.2", - "version_normalized": "2.0.2.0", + "version": "2.3.0", + "version_normalized": "2.3.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "481557b130ef3790cf82b713667b43030dc9c957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957", + "reference": "481557b130ef3790cf82b713667b43030dc9c957", "shasum": "" }, "require": { @@ -439,9 +452,9 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, - "time": "2023-12-03T20:19:20+00:00", + "time": "2025-08-22T14:34:08+00:00", "type": "library", "extra": { "bamarni-bin": { @@ -487,7 +500,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/2.3.0" }, "funding": [ { @@ -507,17 +520,17 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", - "version_normalized": "2.6.2.0", + "version": "2.8.0", + "version_normalized": "2.8.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "21dc724a0583619cd1652f673303492272778051" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051", + "reference": "21dc724a0583619cd1652f673303492272778051", "shasum": "" }, "require": { @@ -532,13 +545,13 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "time": "2023-12-03T20:05:35+00:00", + "time": "2025-08-23T21:21:41+00:00", "type": "library", "extra": { "bamarni-bin": { @@ -606,7 +619,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.8.0" }, "funding": [ { @@ -626,37 +639,32 @@ }, { "name": "league/oauth2-client", - "version": "2.7.0", - "version_normalized": "2.7.0.0", + "version": "2.9.0", + "version_normalized": "2.9.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "160d6274b03562ebeb55ed18399281d8118b76c8" + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/160d6274b03562ebeb55ed18399281d8118b76c8", - "reference": "160d6274b03562ebeb55ed18399281d8118b76c8", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1 || ^2 || ^9.99", - "php": "^5.6 || ^7.0 || ^8.0" + "ext-json": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "php": "^7.1 || >=8.0.0 <8.6.0" }, "require-dev": { "mockery/mockery": "^1.3.5", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpunit/phpunit": "^5.7 || ^6.0 || ^9.5", - "squizlabs/php_codesniffer": "^2.3 || ^3.0" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.11" }, - "time": "2023-04-16T18:19:15+00:00", + "time": "2025-11-25T22:17:17+00:00", "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.0.x-dev" - } - }, "installation-source": "dist", "autoload": { "psr-4": { @@ -693,23 +701,23 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-client/issues", - "source": "https://github.com/thephpleague/oauth2-client/tree/2.7.0" + "source": "https://github.com/thephpleague/oauth2-client/tree/2.9.0" }, "install-path": "../league/oauth2-client" }, { "name": "league/oauth2-google", - "version": "4.0.1", - "version_normalized": "4.0.1.0", + "version": "4.1.0", + "version_normalized": "4.1.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-google.git", - "reference": "1b01ba18ba31b29e88771e3e0979e5c91d4afe76" + "reference": "8b9bb43740ac6d994aca881a35f7bacbe98c0ffb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/1b01ba18ba31b29e88771e3e0979e5c91d4afe76", - "reference": "1b01ba18ba31b29e88771e3e0979e5c91d4afe76", + "url": "https://api.github.com/repos/thephpleague/oauth2-google/zipball/8b9bb43740ac6d994aca881a35f7bacbe98c0ffb", + "reference": "8b9bb43740ac6d994aca881a35f7bacbe98c0ffb", "shasum": "" }, "require": { @@ -721,7 +729,7 @@ "phpunit/phpunit": "^8.0 || ^9.0", "squizlabs/php_codesniffer": "^3.0" }, - "time": "2023-03-17T15:20:52+00:00", + "time": "2025-12-15T12:24:14+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -751,43 +759,226 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-google/issues", - "source": "https://github.com/thephpleague/oauth2-google/tree/4.0.1" + "source": "https://github.com/thephpleague/oauth2-google/tree/4.1.0" }, "install-path": "../league/oauth2-google" }, { - "name": "nikic/php-parser", - "version": "v4.18.0", - "version_normalized": "4.18.0.0", + "name": "league/uri", + "version": "7.8.0", + "version_normalized": "7.8.0.0", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "url": "https://github.com/thephpleague/uri.git", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "time": "2026-01-14T17:24:56+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "URN", + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc2141", + "rfc3986", + "rfc3987", + "rfc6570", + "rfc8141", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "install-path": "../league/uri" + }, + { + "name": "league/uri-interfaces", + "version": "7.8.0", + "version_normalized": "7.8.0.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "time": "2026-01-15T06:54:53+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "install-path": "../league/uri-interfaces" + }, + { + "name": "nikic/php-parser", + "version": "v4.19.5", + "version_normalized": "4.19.5.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", + "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, - "time": "2023-12-10T21:03:43+00:00", + "time": "2025-12-06T11:45:25+00:00", "bin": [ "bin/php-parse" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "installation-source": "dist", "autoload": { "psr-4": { @@ -810,63 +1001,10 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.5" }, "install-path": "../nikic/php-parser" }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "version_normalized": "9.99.100.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2020-10-15T08:29:30+00:00", - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "install-path": "../paragonie/random_compat" - }, { "name": "pear/archive_tar", "version": "1.4.14", @@ -1006,33 +1144,34 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.11", - "version_normalized": "1.10.11.0", + "version": "v1.10.18", + "version_normalized": "1.10.18.0", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d" + "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/68d0d32ada737153b7e93b8d3c710ebe70ac867d", - "reference": "68d0d32ada737153b7e93b8d3c710ebe70ac867d", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/c7b55789d01de0ce090d289b73f1bbd6a2f113b1", + "reference": "c7b55789d01de0ce090d289b73f1bbd6a2f113b1", "shasum": "" }, "require": { "pear/console_getopt": "~1.4", - "pear/pear_exception": "~1.0" + "pear/pear_exception": "~1.0", + "php": ">=5.4" }, "replace": { "rsky/pear-core-min": "self.version" }, - "time": "2021-08-10T22:31:03+00:00", + "time": "2025-12-14T20:37:07+00:00", "type": "library", "installation-source": "dist", "autoload": { - "psr-0": { - "": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "include-path": [ @@ -1119,32 +1258,36 @@ }, { "name": "pelago/emogrifier", - "version": "v7.2.0", - "version_normalized": "7.2.0.0", + "version": "v7.3.0", + "version_normalized": "7.3.0.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3" + "reference": "6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/727bdf7255b51798307f17dec52ff8a91f1c7de3", - "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6", + "reference": "6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sabberworm/php-css-parser": "^8.4.0", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "sabberworm/php-css-parser": "^8.7.0", "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0 || ^7.0.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpunit/phpunit": "9.6.11", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.7", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-strict-rules": "1.6.1", + "phpunit/phpunit": "9.6.21", "rawr/cross-data-providers": "2.4.0" }, - "time": "2023-12-06T02:00:20+00:00", + "time": "2024-10-28T16:12:26+00:00", "type": "library", "extra": { "branch-alias": { @@ -1176,7 +1319,7 @@ }, { "name": "Jake Hotson", - "email": "jake@qzdesign.co.uk" + "email": "jake.github@qzdesign.co.uk" }, { "name": "Cameron Brooks" @@ -1416,24 +1559,24 @@ }, { "name": "psr/http-factory", - "version": "1.0.2", - "version_normalized": "1.0.2.0", + "version": "1.1.0", + "version_normalized": "1.1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, - "time": "2023-04-10T20:10:41+00:00", + "time": "2024-04-15T12:06:14+00:00", "type": "library", "extra": { "branch-alias": { @@ -1456,7 +1599,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -1468,7 +1611,7 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, "install-path": "../psr/http-factory" }, @@ -1630,32 +1773,37 @@ }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", - "version_normalized": "8.4.0.0", + "version": "v8.9.0", + "version_normalized": "8.9.0.0", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/d8e916507b88e389e26d4ab03c904a082aa66bb9", + "reference": "d8e916507b88e389e26d4ab03c904a082aa66bb9", "shasum": "" }, "require": { "ext-iconv": "*", - "php": ">=5.6.20" + "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41", + "rawr/cross-data-providers": "^2.0.0" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, - "time": "2021-12-11T13:40:54+00:00", + "time": "2025-07-11T13:20:48+00:00", "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, "installation-source": "dist", "autoload": { "psr-4": { @@ -1669,6 +1817,14 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", @@ -1679,57 +1835,54 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.9.0" }, "install-path": "../sabberworm/php-css-parser" }, { "name": "scssphp/scssphp", - "version": "v1.12.1", - "version_normalized": "1.12.1.0", + "version": "v2.1.0", + "version_normalized": "2.1.0.0", "source": { "type": "git", "url": "https://github.com/scssphp/scssphp.git", - "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb" + "reference": "d8450c2baf5fb07d00374999d0ea51276974d1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scssphp/scssphp/zipball/394ed1e960138710a60d035c1a85d43d0bf0faeb", - "reference": "394ed1e960138710a60d035c1a85d43d0bf0faeb", + "url": "https://api.github.com/repos/scssphp/scssphp/zipball/d8450c2baf5fb07d00374999d0ea51276974d1b6", + "reference": "d8450c2baf5fb07d00374999d0ea51276974d1b6", "shasum": "" }, "require": { "ext-ctype": "*", "ext-json": "*", - "php": ">=5.6.0" + "ext-mbstring": "*", + "league/uri": "^7.6", + "league/uri-interfaces": "^7.6", + "php": ">=8.1", + "scssphp/source-span": "^1.1", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4", - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4", + "jgthms/bulma": "~0.9.4", + "jiripudil/phpstan-sealed-classes": "^1.3", + "phpstan/phpstan": "^2.1.31", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpunit/phpunit": "^9.5.6", "sass/sass-spec": "*", - "squizlabs/php_codesniffer": "~3.5", - "symfony/phpunit-bridge": "^5.1", + "squizlabs/php_codesniffer": "^3.13", + "symfony/phpunit-bridge": "^7.3 || ^8.0", + "symfony/polyfill-php84": "^1.33", + "symfony/var-dumper": "^6.4 || ^7.3 || ^8.0", "thoughtbot/bourbon": "^7.0", - "twbs/bootstrap": "~5.0", + "twbs/bootstrap": "^5.3", "twbs/bootstrap4": "4.6.1", "zurb/foundation": "~6.7.0" }, - "suggest": { - "ext-iconv": "Can be used as fallback when ext-mbstring is not available", - "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv" - }, - "time": "2024-01-13T12:36:40+00:00", - "bin": [ - "bin/pscss" - ], + "time": "2025-11-21T17:27:59+00:00", "type": "library", - "extra": { - "bamarni-bin": { - "forward-command": false, - "bin-links": false - } - }, "installation-source": "dist", "autoload": { "psr-4": { @@ -1753,7 +1906,7 @@ } ], "description": "scssphp is a compiler for SCSS written in PHP.", - "homepage": "http://scssphp.github.io/scssphp/", + "homepage": "https://scssphp.github.io/scssphp/", "keywords": [ "css", "less", @@ -1763,10 +1916,72 @@ ], "support": { "issues": "https://github.com/scssphp/scssphp/issues", - "source": "https://github.com/scssphp/scssphp/tree/v1.12.1" + "source": "https://github.com/scssphp/scssphp/tree/v2.1.0" }, "install-path": "../scssphp/scssphp" }, + { + "name": "scssphp/source-span", + "version": "v1.1.0", + "version_normalized": "1.1.0.0", + "source": { + "type": "git", + "url": "https://github.com/scssphp/source-span.git", + "reference": "37d653206daf11da1ee60b333984101bc4c27ba2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/scssphp/source-span/zipball/37d653206daf11da1ee60b333984101bc4c27ba2", + "reference": "37d653206daf11da1ee60b333984101bc4c27ba2", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/uri": "^7.6", + "league/uri-interfaces": "^7.6", + "php": ">=8.1" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpunit/phpunit": "^9.5.6", + "squizlabs/php_codesniffer": "~3.5", + "symfony/phpunit-bridge": "^6.4 || ^7.3 || ^8.0", + "symfony/var-dumper": "^6.4 || ^7.3 || ^8.0" + }, + "time": "2025-11-21T16:28:19+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "SourceSpan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "homepage": "https://github.com/stof" + } + ], + "description": "Provides a representation for source code locations and spans.", + "keywords": [ + "parsing" + ], + "support": { + "issues": "https://github.com/scssphp/source-span/issues", + "source": "https://github.com/scssphp/source-span/tree/v1.1.0" + }, + "install-path": "../scssphp/source-span" + }, { "name": "soundasleep/html2text", "version": "2.1.0", @@ -1827,17 +2042,17 @@ }, { "name": "symfony/cache", - "version": "v6.4.12", - "version_normalized": "6.4.12.0", + "version": "v6.4.33", + "version_normalized": "6.4.33.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8" + "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", - "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", + "url": "https://api.github.com/repos/symfony/cache/zipball/5b088fa41eb9568748dc255c45e4054c387ba73b", + "reference": "5b088fa41eb9568748dc255c45e4054c387ba73b", "shasum": "" }, "require": { @@ -1871,7 +2086,7 @@ "symfony/messenger": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2024-09-16T16:01:33+00:00", + "time": "2026-01-27T15:05:20+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -1906,7 +2121,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.12" + "source": "https://github.com/symfony/cache/tree/v6.4.33" }, "funding": [ { @@ -1917,6 +2132,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2005,17 +2224,17 @@ }, { "name": "symfony/config", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" + "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", - "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", + "url": "https://api.github.com/repos/symfony/config/zipball/d445badf0ad2c2a492e38c0378c39997a56ef97b", + "reference": "d445badf0ad2c2a492e38c0378c39997a56ef97b", "shasum": "" }, "require": { @@ -2035,7 +2254,7 @@ "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2023-11-09T08:28:32+00:00", + "time": "2026-01-13T08:40:30+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2063,7 +2282,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/v6.4.0" + "source": "https://github.com/symfony/config/tree/v6.4.32" }, "funding": [ { @@ -2074,6 +2293,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2083,17 +2306,17 @@ }, { "name": "symfony/console", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3", + "reference": "0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3", "shasum": "" }, "require": { @@ -2126,7 +2349,7 @@ "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2023-12-10T16:15:48+00:00", + "time": "2026-01-13T08:45:59+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2160,7 +2383,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.32" }, "funding": [ { @@ -2171,6 +2394,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2180,23 +2407,23 @@ }, { "name": "symfony/css-selector", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.24", + "version_normalized": "6.4.24.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9b784413143701aa3c94ac1869a159a9e53e8761", + "reference": "9b784413143701aa3c94ac1869a159a9e53e8761", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2023-10-31T08:40:20+00:00", + "time": "2025-07-10T08:14:14+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2228,7 +2455,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.24" }, "funding": [ { @@ -2239,6 +2466,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2248,17 +2479,17 @@ }, { "name": "symfony/debug-bundle", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.27", + "version_normalized": "6.4.27.0", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202" + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/1e07027423d1d37125b60a50997ada26a9d9d202", - "reference": "1e07027423d1d37125b60a50997ada26a9d9d202", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/21a61c55192d558a6b81cdb12e8c010fc9474fe0", + "reference": "21a61c55192d558a6b81cdb12e8c010fc9474fe0", "shasum": "" }, "require": { @@ -2277,7 +2508,7 @@ "symfony/config": "^5.4|^6.0|^7.0", "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" }, - "time": "2023-11-01T12:07:38+00:00", + "time": "2025-10-11T17:35:31+00:00", "type": "symfony-bundle", "installation-source": "dist", "autoload": { @@ -2305,7 +2536,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/v6.4.0" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.27" }, "funding": [ { @@ -2316,6 +2547,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2325,17 +2560,17 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" + "reference": "b17882e933c4c606620247b6708ab53aa3b88753" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", - "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b17882e933c4c606620247b6708ab53aa3b88753", + "reference": "b17882e933c4c606620247b6708ab53aa3b88753", "shasum": "" }, "require": { @@ -2343,7 +2578,7 @@ "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10|^7.0" + "symfony/var-exporter": "^6.4.20|^7.2.5" }, "conflict": { "ext-psr": "<1.1|>=2", @@ -2361,7 +2596,7 @@ "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2023-12-28T19:16:56+00:00", + "time": "2026-01-23T10:54:33+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2389,7 +2624,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/v6.4.2" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.32" }, "funding": [ { @@ -2400,6 +2635,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2479,17 +2718,17 @@ }, { "name": "symfony/dotenv", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.30", + "version_normalized": "6.4.30.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "835f8d2d1022934ac038519de40b88158798c96f" + "reference": "924edbc9631b75302def0258ed1697948b17baf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", - "reference": "835f8d2d1022934ac038519de40b88158798c96f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/924edbc9631b75302def0258ed1697948b17baf6", + "reference": "924edbc9631b75302def0258ed1697948b17baf6", "shasum": "" }, "require": { @@ -2503,7 +2742,7 @@ "symfony/console": "^5.4|^6.0|^7.0", "symfony/process": "^5.4|^6.0|^7.0" }, - "time": "2023-12-28T19:16:56+00:00", + "time": "2025-11-14T17:33:48+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2536,7 +2775,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.2" + "source": "https://github.com/symfony/dotenv/tree/v6.4.30" }, "funding": [ { @@ -2547,6 +2786,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2556,17 +2799,17 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8c18400784fcb014dc73c8d5601a9576af7f8ad4", + "reference": "8c18400784fcb014dc73c8d5601a9576af7f8ad4", "shasum": "" }, "require": { @@ -2583,7 +2826,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/serializer": "^5.4|^6.0|^7.0" }, - "time": "2023-10-18T09:43:34+00:00", + "time": "2026-01-19T19:28:19+00:00", "bin": [ "Resources/bin/patch-type-declarations" ], @@ -2614,7 +2857,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.32" }, "funding": [ { @@ -2625,6 +2868,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2634,17 +2881,17 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.4.25", - "version_normalized": "6.4.25.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b0cf3162020603587363f0551cd3be43958611ff" + "reference": "99d7e101826e6610606b9433248f80c1997cd20b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b0cf3162020603587363f0551cd3be43958611ff", - "reference": "b0cf3162020603587363f0551cd3be43958611ff", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99d7e101826e6610606b9433248f80c1997cd20b", + "reference": "99d7e101826e6610606b9433248f80c1997cd20b", "shasum": "" }, "require": { @@ -2669,7 +2916,7 @@ "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0|^7.0" }, - "time": "2025-08-13T09:41:44+00:00", + "time": "2026-01-05T11:13:48+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2697,7 +2944,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.32" }, "funding": [ { @@ -2800,17 +3047,17 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.30", + "version_normalized": "6.4.30.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/441c6b69f7222aadae7cbf5df588496d5ee37789", + "reference": "441c6b69f7222aadae7cbf5df588496d5ee37789", "shasum": "" }, "require": { @@ -2818,7 +3065,10 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, - "time": "2023-07-26T17:27:13+00:00", + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" + }, + "time": "2025-11-26T14:43:45+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2846,7 +3096,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.30" }, "funding": [ { @@ -2857,6 +3107,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2866,17 +3120,17 @@ }, { "name": "symfony/finder", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.33", + "version_normalized": "6.4.33.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "24965ca011dac87431729640feef8bcf7b5523e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/24965ca011dac87431729640feef8bcf7b5523e0", + "reference": "24965ca011dac87431729640feef8bcf7b5523e0", "shasum": "" }, "require": { @@ -2885,7 +3139,7 @@ "require-dev": { "symfony/filesystem": "^6.0|^7.0" }, - "time": "2023-10-31T17:30:12+00:00", + "time": "2026-01-26T13:03:48+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2913,7 +3167,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v6.4.33" }, "funding": [ { @@ -2924,6 +3178,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -2933,17 +3191,17 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.33", + "version_normalized": "6.4.33.0", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" + "reference": "9ef2d0b63b9e855ba351e770a603d89699115801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", - "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/9ef2d0b63b9e855ba351e770a603d89699115801", + "reference": "9ef2d0b63b9e855ba351e770a603d89699115801", "shasum": "" }, "require": { @@ -2952,7 +3210,7 @@ "php": ">=8.1", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/config": "^6.1|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4.12|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1|^7.0", "symfony/event-dispatcher": "^5.4|^6.0|^7.0", @@ -2982,7 +3240,8 @@ "symfony/mime": "<6.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", - "symfony/scheduler": "<6.4", + "symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", "symfony/serializer": "<6.4", @@ -3021,7 +3280,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0", - "symfony/scheduler": "^6.4|^7.0", + "symfony/scheduler": "^6.4.4|^7.0.4", "symfony/security-bundle": "^5.4|^6.0|^7.0", "symfony/semaphore": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4|^7.0", @@ -3034,9 +3293,9 @@ "symfony/web-link": "^5.4|^6.0|^7.0", "symfony/workflow": "^6.4|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0", - "twig/twig": "^2.10|^3.0" + "twig/twig": "^2.10|^3.0.4" }, - "time": "2023-12-29T15:34:34+00:00", + "time": "2026-01-26T14:46:41+00:00", "type": "symfony-bundle", "installation-source": "dist", "autoload": { @@ -3064,7 +3323,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/v6.4.2" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.33" }, "funding": [ { @@ -3075,6 +3334,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -3084,17 +3347,17 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.29", - "version_normalized": "6.4.29.0", + "version": "v6.4.33", + "version_normalized": "6.4.33.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88" + "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03d11e015552a315714c127d8d1e0f9e970ec88", - "reference": "b03d11e015552a315714c127d8d1e0f9e970ec88", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1a490cc9d595ba7ebe684220e625d1e472ad278", + "reference": "f1a490cc9d595ba7ebe684220e625d1e472ad278", "shasum": "" }, "require": { @@ -3116,7 +3379,7 @@ "symfony/mime": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, - "time": "2025-11-08T16:40:12+00:00", + "time": "2026-01-27T15:04:55+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3144,7 +3407,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.29" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.33" }, "funding": [ { @@ -3168,17 +3431,17 @@ }, { "name": "symfony/http-kernel", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.33", + "version_normalized": "6.4.33.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4" + "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/73fa5c999d7f741ca544a97d3c791cc97890ae4d", + "reference": "73fa5c999d7f741ca544a97d3c791cc97890ae4d", "shasum": "" }, "require": { @@ -3227,16 +3490,17 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4.5|^6.0.5|^7.0", "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0|^7.0", "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.4|^7.0", "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "time": "2023-12-30T15:31:44+00:00", + "time": "2026-01-28T10:02:13+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3264,7 +3528,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.33" }, "funding": [ { @@ -3275,6 +3539,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -3284,17 +3552,17 @@ }, { "name": "symfony/mailer", - "version": "v6.4.25", - "version_normalized": "6.4.25.0", + "version": "v6.4.31", + "version_normalized": "6.4.31.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2" + "reference": "8835f93333474780fda1b987cae37e33c3e026ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/628b43b45a3e6b15c8a633fb22df547ed9b492a2", - "reference": "628b43b45a3e6b15c8a633fb22df547ed9b492a2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/8835f93333474780fda1b987cae37e33c3e026ca", + "reference": "8835f93333474780fda1b987cae37e33c3e026ca", "shasum": "" }, "require": { @@ -3319,7 +3587,7 @@ "symfony/messenger": "^6.2|^7.0", "symfony/twig-bridge": "^6.2|^7.0" }, - "time": "2025-08-13T09:41:44+00:00", + "time": "2025-12-12T07:33:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3347,7 +3615,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.25" + "source": "https://github.com/symfony/mailer/tree/v6.4.31" }, "funding": [ { @@ -3371,17 +3639,17 @@ }, { "name": "symfony/mime", - "version": "v6.4.24", - "version_normalized": "6.4.24.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7" + "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/664d5e844a2de5e11c8255d0aef6bc15a9660ac7", - "reference": "664d5e844a2de5e11c8255d0aef6bc15a9660ac7", + "url": "https://api.github.com/repos/symfony/mime/zipball/7409686879ca36c09fc970a5fa8ff6e93504dba4", + "reference": "7409686879ca36c09fc970a5fa8ff6e93504dba4", "shasum": "" }, "require": { @@ -3407,7 +3675,7 @@ "symfony/property-info": "^5.4|^6.0|^7.0", "symfony/serializer": "^6.4.3|^7.0.3" }, - "time": "2025-07-15T12:02:45+00:00", + "time": "2026-01-04T11:53:14+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3439,7 +3707,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.24" + "source": "https://github.com/symfony/mime/tree/v6.4.32" }, "funding": [ { @@ -3463,21 +3731,21 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3485,15 +3753,12 @@ "suggest": { "ext-ctype": "For best performance" }, - "time": "2023-01-26T09:26:14+00:00", + "time": "2024-09-09T11:45:10+00:00", "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "installation-source": "dist", @@ -3528,7 +3793,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -3539,6 +3804,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -3548,34 +3817,31 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, - "time": "2023-01-26T09:26:14+00:00", + "time": "2025-06-27T09:58:17+00:00", "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "installation-source": "dist", @@ -3612,7 +3878,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -3623,6 +3889,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -3981,17 +4251,17 @@ }, { "name": "symfony/routing", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" + "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", + "url": "https://api.github.com/repos/symfony/routing/zipball/0dc6253e864e71b486e8ba4970a56ab849106ebe", + "reference": "0dc6253e864e71b486e8ba4970a56ab849106ebe", "shasum": "" }, "require": { @@ -4013,7 +4283,7 @@ "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2023-12-29T15:34:34+00:00", + "time": "2026-01-12T08:31:19+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4047,7 +4317,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.2" + "source": "https://github.com/symfony/routing/tree/v6.4.32" }, "funding": [ { @@ -4058,6 +4328,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4067,17 +4341,17 @@ }, { "name": "symfony/runtime", - "version": "v6.4.24", - "version_normalized": "6.4.24.0", + "version": "v6.4.30", + "version_normalized": "6.4.30.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "c1cc6721646f546627236c57f835272806087337" + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/c1cc6721646f546627236c57f835272806087337", - "reference": "c1cc6721646f546627236c57f835272806087337", + "url": "https://api.github.com/repos/symfony/runtime/zipball/fb3149ee85d3b639dd3e49ea9dda05656f0537e3", + "reference": "fb3149ee85d3b639dd3e49ea9dda05656f0537e3", "shasum": "" }, "require": { @@ -4094,7 +4368,7 @@ "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0" }, - "time": "2025-07-10T08:14:14+00:00", + "time": "2025-12-05T10:55:13+00:00", "type": "composer-plugin", "extra": { "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" @@ -4129,7 +4403,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v6.4.24" + "source": "https://github.com/symfony/runtime/tree/v6.4.30" }, "funding": [ { @@ -4243,24 +4517,24 @@ }, { "name": "symfony/stopwatch", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.24", + "version_normalized": "6.4.24.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", "shasum": "" }, "require": { "php": ">=8.1", "symfony/service-contracts": "^2.5|^3" }, - "time": "2023-02-16T10:14:28+00:00", + "time": "2025-07-10T08:14:14+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4288,7 +4562,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" }, "funding": [ { @@ -4299,6 +4573,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4308,17 +4586,17 @@ }, { "name": "symfony/string", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.30", + "version_normalized": "6.4.30.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/50590a057841fa6bf69d12eceffce3465b9e32cb", + "reference": "50590a057841fa6bf69d12eceffce3465b9e32cb", "shasum": "" }, "require": { @@ -4332,13 +4610,12 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0|^7.0", "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0|^7.0" }, - "time": "2023-12-10T16:15:48+00:00", + "time": "2025-11-21T18:03:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -4377,7 +4654,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.30" }, "funding": [ { @@ -4388,6 +4665,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4397,31 +4678,31 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", - "version_normalized": "3.4.0.0", + "version": "v3.6.1", + "version_normalized": "3.6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { "php": ">=8.1" }, - "time": "2023-07-25T15:08:44+00:00", + "time": "2025-07-15T13:41:35+00:00", "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "installation-source": "dist", @@ -4458,7 +4739,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -4469,6 +4750,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4478,17 +4763,17 @@ }, { "name": "symfony/twig-bridge", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" + "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8", + "reference": "1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8", "shasum": "" }, "require": { @@ -4501,7 +4786,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/console": "<5.4", - "symfony/form": "<6.3", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4", "symfony/http-foundation": "<5.4", "symfony/http-kernel": "<6.4", "symfony/mime": "<6.2", @@ -4519,7 +4804,7 @@ "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/form": "^6.4|^7.0", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4", "symfony/html-sanitizer": "^6.1|^7.0", "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -4532,7 +4817,7 @@ "symfony/security-core": "^5.4|^6.0|^7.0", "symfony/security-csrf": "^5.4|^6.0|^7.0", "symfony/security-http": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^6.1|^7.0", "symfony/web-link": "^5.4|^6.0|^7.0", @@ -4542,7 +4827,7 @@ "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "time": "2023-11-25T08:25:13+00:00", + "time": "2026-01-03T23:03:08+00:00", "type": "symfony-bridge", "installation-source": "dist", "autoload": { @@ -4570,7 +4855,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.32" }, "funding": [ { @@ -4581,6 +4866,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4590,17 +4879,17 @@ }, { "name": "symfony/twig-bundle", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c" + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", - "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", "shasum": "" }, "require": { @@ -4629,7 +4918,7 @@ "symfony/web-link": "^5.4|^6.0|^7.0", "symfony/yaml": "^5.4|^6.0|^7.0" }, - "time": "2023-11-07T14:57:07+00:00", + "time": "2026-01-05T12:44:39+00:00", "type": "symfony-bundle", "installation-source": "dist", "autoload": { @@ -4657,7 +4946,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/v6.4.0" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.32" }, "funding": [ { @@ -4668,6 +4957,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4677,17 +4970,17 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + "reference": "131fc9915e0343052af5ed5040401b481ca192aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/131fc9915e0343052af5ed5040401b481ca192aa", + "reference": "131fc9915e0343052af5ed5040401b481ca192aa", "shasum": "" }, "require": { @@ -4699,7 +4992,6 @@ "symfony/console": "<5.4" }, "require-dev": { - "ext-iconv": "*", "symfony/console": "^5.4|^6.0|^7.0", "symfony/error-handler": "^6.3|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", @@ -4707,7 +4999,7 @@ "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "time": "2023-12-28T19:16:56+00:00", + "time": "2026-01-01T13:34:06+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -4745,7 +5037,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.32" }, "funding": [ { @@ -4756,6 +5048,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4849,17 +5145,17 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", + "version": "v6.4.32", + "version_normalized": "6.4.32.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2" + "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/38462d16856740ec0d1ba2cb902eebf09100dde2", - "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/011f59e3f3d20f60d11b4e78b8dc63504f56e145", + "reference": "011f59e3f3d20f60d11b4e78b8dc63504f56e145", "shasum": "" }, "require": { @@ -4883,7 +5179,7 @@ "symfony/css-selector": "^5.4|^6.0|^7.0", "symfony/stopwatch": "^5.4|^6.0|^7.0" }, - "time": "2023-12-27T08:18:35+00:00", + "time": "2026-01-06T09:13:42+00:00", "type": "symfony-bundle", "installation-source": "dist", "autoload": { @@ -4914,7 +5210,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.32" }, "funding": [ { @@ -4925,6 +5221,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4934,17 +5234,17 @@ }, { "name": "symfony/yaml", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", + "version": "v6.4.30", + "version_normalized": "6.4.30.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", - "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8207ae83da19ee3748d6d4f567b4d9a7c656e331", + "reference": "8207ae83da19ee3748d6d4f567b4d9a7c656e331", "shasum": "" }, "require": { @@ -4958,7 +5258,7 @@ "require-dev": { "symfony/console": "^5.4|^6.0|^7.0" }, - "time": "2023-11-06T11:00:25+00:00", + "time": "2025-12-02T11:50:18+00:00", "bin": [ "Resources/bin/yaml-lint" ], @@ -4989,7 +5289,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.30" }, "funding": [ { @@ -5000,6 +5300,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5009,24 +5313,24 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.10.0", - "version_normalized": "6.10.0.0", + "version": "6.10.1", + "version_normalized": "6.10.1.0", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "ca5b6de294512145db96bcbc94e61696599c391d" + "reference": "7a2701251e5d52fc3d508fd71704683eb54f5939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/ca5b6de294512145db96bcbc94e61696599c391d", - "reference": "ca5b6de294512145db96bcbc94e61696599c391d", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/7a2701251e5d52fc3d508fd71704683eb54f5939", + "reference": "7a2701251e5d52fc3d508fd71704683eb54f5939", "shasum": "" }, "require": { "ext-curl": "*", "php": ">=7.1.0" }, - "time": "2025-05-27T18:02:28+00:00", + "time": "2025-11-21T10:58:21+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5071,7 +5375,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.10.0" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.10.1" }, "funding": [ { @@ -5083,30 +5387,30 @@ }, { "name": "thenetworg/oauth2-azure", - "version": "v2.2.2", - "version_normalized": "2.2.2.0", + "version": "v2.2.4", + "version_normalized": "2.2.4.0", "source": { "type": "git", "url": "https://github.com/TheNetworg/oauth2-azure.git", - "reference": "be204a5135f016470a9c33e82ab48785bbc11af2" + "reference": "a897d60b6b127daa2f27b1b4e62e7af40829d02f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheNetworg/oauth2-azure/zipball/be204a5135f016470a9c33e82ab48785bbc11af2", - "reference": "be204a5135f016470a9c33e82ab48785bbc11af2", + "url": "https://api.github.com/repos/TheNetworg/oauth2-azure/zipball/a897d60b6b127daa2f27b1b4e62e7af40829d02f", + "reference": "a897d60b6b127daa2f27b1b4e62e7af40829d02f", "shasum": "" }, "require": { "ext-json": "*", "ext-openssl": "*", - "firebase/php-jwt": "~3.0||~4.0||~5.0||~6.0", + "firebase/php-jwt": "~3.0||~4.0||~5.0||~6.0||~7.0", "league/oauth2-client": "~2.0", "php": "^7.1|^8.0" }, "require-dev": { "phpunit/phpunit": "^9.6" }, - "time": "2023-12-19T12:10:48+00:00", + "time": "2026-01-29T12:43:59+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5140,23 +5444,23 @@ ], "support": { "issues": "https://github.com/TheNetworg/oauth2-azure/issues", - "source": "https://github.com/TheNetworg/oauth2-azure/tree/v2.2.2" + "source": "https://github.com/TheNetworg/oauth2-azure/tree/v2.2.4" }, "install-path": "../thenetworg/oauth2-azure" }, { "name": "twig/twig", - "version": "v3.21.1", - "version_normalized": "3.21.1.0", + "version": "v3.23.0", + "version_normalized": "3.23.0.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", "shasum": "" }, "require": { @@ -5170,7 +5474,7 @@ "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, - "time": "2025-05-03T07:21:55+00:00", + "time": "2026-01-23T21:00:41+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5212,7 +5516,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" }, "funding": [ { diff --git a/lib/composer/installed.php b/lib/composer/installed.php index f7908990c..d0658bd3c 100644 --- a/lib/composer/installed.php +++ b/lib/composer/installed.php @@ -1,9 +1,9 @@ array( 'name' => 'combodo/itop', - 'pretty_version' => 'dev-develop', - 'version' => 'dev-develop', - 'reference' => 'd5706fcbef58868cb8bd6ee6f3af133ca4fdab3e', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => null, 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -11,18 +11,20 @@ ), 'versions' => array( 'apereo/phpcas' => array( - 'pretty_version' => '1.6.1', - 'version' => '1.6.1.0', - 'reference' => 'c129708154852656aabb13d8606cd5b12dbbabac', + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'reference' => '57a7744146a963d8fa80192e0ab351051b711ff6', 'type' => 'library', 'install_path' => __DIR__ . '/../apereo/phpcas', - 'aliases' => array(), + 'aliases' => array( + 0 => '1.3.x-dev', + ), 'dev_requirement' => false, ), 'combodo/itop' => array( - 'pretty_version' => 'dev-develop', - 'version' => 'dev-develop', - 'reference' => 'd5706fcbef58868cb8bd6ee6f3af133ca4fdab3e', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => null, 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -47,74 +49,83 @@ 'dev_requirement' => false, ), 'firebase/php-jwt' => array( - 'pretty_version' => 'v6.10.0', - 'version' => '6.10.0.0', - 'reference' => 'a49db6f0a5033aef5143295342f1c95521b075ff', + 'pretty_version' => 'v7.0.2', + 'version' => '7.0.2.0', + 'reference' => '5645b43af647b6947daac1d0f659dd1fbe8d3b65', 'type' => 'library', 'install_path' => __DIR__ . '/../firebase/php-jwt', 'aliases' => array(), 'dev_requirement' => false, ), 'guzzlehttp/guzzle' => array( - 'pretty_version' => '7.8.1', - 'version' => '7.8.1.0', - 'reference' => '41042bc7ab002487b876a0683fc8dce04ddce104', + 'pretty_version' => '7.10.0', + 'version' => '7.10.0.0', + 'reference' => 'b51ac707cfa420b7bfd4e4d5e510ba8008e822b4', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'dev_requirement' => false, ), 'guzzlehttp/promises' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'bbff78d96034045e58e13dedd6ad91b5d1253223', + 'pretty_version' => '2.3.0', + 'version' => '2.3.0.0', + 'reference' => '481557b130ef3790cf82b713667b43030dc9c957', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), 'dev_requirement' => false, ), 'guzzlehttp/psr7' => array( - 'pretty_version' => '2.6.2', - 'version' => '2.6.2.0', - 'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221', + 'pretty_version' => '2.8.0', + 'version' => '2.8.0.0', + 'reference' => '21dc724a0583619cd1652f673303492272778051', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), 'dev_requirement' => false, ), 'league/oauth2-client' => array( - 'pretty_version' => '2.7.0', - 'version' => '2.7.0.0', - 'reference' => '160d6274b03562ebeb55ed18399281d8118b76c8', + 'pretty_version' => '2.9.0', + 'version' => '2.9.0.0', + 'reference' => '26e8c5da4f3d78cede7021e09b1330a0fc093d5e', 'type' => 'library', 'install_path' => __DIR__ . '/../league/oauth2-client', 'aliases' => array(), 'dev_requirement' => false, ), 'league/oauth2-google' => array( - 'pretty_version' => '4.0.1', - 'version' => '4.0.1.0', - 'reference' => '1b01ba18ba31b29e88771e3e0979e5c91d4afe76', + 'pretty_version' => '4.1.0', + 'version' => '4.1.0.0', + 'reference' => '8b9bb43740ac6d994aca881a35f7bacbe98c0ffb', 'type' => 'library', 'install_path' => __DIR__ . '/../league/oauth2-google', 'aliases' => array(), 'dev_requirement' => false, ), - 'nikic/php-parser' => array( - 'pretty_version' => 'v4.18.0', - 'version' => '4.18.0.0', - 'reference' => '1bcbb2179f97633e98bbbc87044ee2611c7d7999', + 'league/uri' => array( + 'pretty_version' => '7.8.0', + 'version' => '7.8.0.0', + 'reference' => '4436c6ec8d458e4244448b069cc572d088230b76', 'type' => 'library', - 'install_path' => __DIR__ . '/../nikic/php-parser', + 'install_path' => __DIR__ . '/../league/uri', 'aliases' => array(), 'dev_requirement' => false, ), - 'paragonie/random_compat' => array( - 'pretty_version' => 'v9.99.100', - 'version' => '9.99.100.0', - 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a', + 'league/uri-interfaces' => array( + 'pretty_version' => '7.8.0', + 'version' => '7.8.0.0', + 'reference' => 'c5c5cd056110fc8afaba29fa6b72a43ced42acd4', 'type' => 'library', - 'install_path' => __DIR__ . '/../paragonie/random_compat', + 'install_path' => __DIR__ . '/../league/uri-interfaces', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'nikic/php-parser' => array( + 'pretty_version' => 'v4.19.5', + 'version' => '4.19.5.0', + 'reference' => '51bd93cc741b7fc3d63d20b6bdcd99fdaa359837', + 'type' => 'library', + 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => false, ), @@ -137,9 +148,9 @@ 'dev_requirement' => false, ), 'pear/pear-core-minimal' => array( - 'pretty_version' => 'v1.10.11', - 'version' => '1.10.11.0', - 'reference' => '68d0d32ada737153b7e93b8d3c710ebe70ac867d', + 'pretty_version' => 'v1.10.18', + 'version' => '1.10.18.0', + 'reference' => 'c7b55789d01de0ce090d289b73f1bbd6a2f113b1', 'type' => 'library', 'install_path' => __DIR__ . '/../pear/pear-core-minimal', 'aliases' => array(), @@ -155,9 +166,9 @@ 'dev_requirement' => false, ), 'pelago/emogrifier' => array( - 'pretty_version' => 'v7.2.0', - 'version' => '7.2.0.0', - 'reference' => '727bdf7255b51798307f17dec52ff8a91f1c7de3', + 'pretty_version' => 'v7.3.0', + 'version' => '7.3.0.0', + 'reference' => '6e00d9d8235e8cc8eec857e8dcd6cfeefdfd0cd6', 'type' => 'library', 'install_path' => __DIR__ . '/../pelago/emogrifier', 'aliases' => array(), @@ -224,9 +235,9 @@ ), ), 'psr/http-factory' => array( - 'pretty_version' => '1.0.2', - 'version' => '1.0.2.0', - 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', + 'pretty_version' => '1.1.0', + 'version' => '1.1.0.0', + 'reference' => '2b4765fddfe3b508ac62f829e852b1501d3f6e8a', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(), @@ -286,27 +297,36 @@ 'rsky/pear-core-min' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => 'v1.10.11', + 0 => 'v1.10.18', ), ), 'sabberworm/php-css-parser' => array( - 'pretty_version' => '8.4.0', - 'version' => '8.4.0.0', - 'reference' => 'e41d2140031d533348b2192a83f02d8dd8a71d30', + 'pretty_version' => 'v8.9.0', + 'version' => '8.9.0.0', + 'reference' => 'd8e916507b88e389e26d4ab03c904a082aa66bb9', 'type' => 'library', 'install_path' => __DIR__ . '/../sabberworm/php-css-parser', 'aliases' => array(), 'dev_requirement' => false, ), 'scssphp/scssphp' => array( - 'pretty_version' => 'v1.12.1', - 'version' => '1.12.1.0', - 'reference' => '394ed1e960138710a60d035c1a85d43d0bf0faeb', + 'pretty_version' => 'v2.1.0', + 'version' => '2.1.0.0', + 'reference' => 'd8450c2baf5fb07d00374999d0ea51276974d1b6', 'type' => 'library', 'install_path' => __DIR__ . '/../scssphp/scssphp', 'aliases' => array(), 'dev_requirement' => false, ), + 'scssphp/source-span' => array( + 'pretty_version' => 'v1.1.0', + 'version' => '1.1.0.0', + 'reference' => '37d653206daf11da1ee60b333984101bc4c27ba2', + 'type' => 'library', + 'install_path' => __DIR__ . '/../scssphp/source-span', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'soundasleep/html2text' => array( 'pretty_version' => '2.1.0', 'version' => '2.1.0.0', @@ -317,9 +337,9 @@ 'dev_requirement' => false, ), 'symfony/cache' => array( - 'pretty_version' => 'v6.4.12', - 'version' => '6.4.12.0', - 'reference' => 'a463451b7f6ac4a47b98dbfc78ec2d3560c759d8', + 'pretty_version' => 'v6.4.33', + 'version' => '6.4.33.0', + 'reference' => '5b088fa41eb9568748dc255c45e4054c387ba73b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/cache', 'aliases' => array(), @@ -341,45 +361,45 @@ ), ), 'symfony/config' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '5d33e0fb707d603330e0edfd4691803a1253572e', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => 'd445badf0ad2c2a492e38c0378c39997a56ef97b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/config', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/console' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '0254811a143e6bc6c8deea08b589a7e68a37f625', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '0bc2199c6c1f05276b05956f1ddc63f6d7eb5fc3', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/css-selector' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => 'd036c6c0d0b09e24a14a35f8292146a658f986e4', + 'pretty_version' => 'v6.4.24', + 'version' => '6.4.24.0', + 'reference' => '9b784413143701aa3c94ac1869a159a9e53e8761', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/css-selector', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/debug-bundle' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '1e07027423d1d37125b60a50997ada26a9d9d202', + 'pretty_version' => 'v6.4.27', + 'version' => '6.4.27.0', + 'reference' => '21a61c55192d558a6b81cdb12e8c010fc9474fe0', 'type' => 'symfony-bundle', 'install_path' => __DIR__ . '/../symfony/debug-bundle', 'aliases' => array(), 'dev_requirement' => true, ), 'symfony/dependency-injection' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '226ea431b1eda6f0d9f5a4b278757171960bb195', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => 'b17882e933c4c606620247b6708ab53aa3b88753', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dependency-injection', 'aliases' => array(), @@ -395,27 +415,27 @@ 'dev_requirement' => false, ), 'symfony/dotenv' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '835f8d2d1022934ac038519de40b88158798c96f', + 'pretty_version' => 'v6.4.30', + 'version' => '6.4.30.0', + 'reference' => '924edbc9631b75302def0258ed1697948b17baf6', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dotenv', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/error-handler' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => 'c873490a1c97b3a0a4838afc36ff36c112d02788', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '8c18400784fcb014dc73c8d5601a9576af7f8ad4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/error-handler', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v6.4.25', - 'version' => '6.4.25.0', - 'reference' => 'b0cf3162020603587363f0551cd3be43958611ff', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '99d7e101826e6610606b9433248f80c1997cd20b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/event-dispatcher', 'aliases' => array(), @@ -437,81 +457,81 @@ ), ), 'symfony/filesystem' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '952a8cb588c3bc6ce76f6023000fb932f16a6e59', + 'pretty_version' => 'v6.4.30', + 'version' => '6.4.30.0', + 'reference' => '441c6b69f7222aadae7cbf5df588496d5ee37789', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/finder' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '11d736e97f116ac375a81f96e662911a34cd50ce', + 'pretty_version' => 'v6.4.33', + 'version' => '6.4.33.0', + 'reference' => '24965ca011dac87431729640feef8bcf7b5523e0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/framework-bundle' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => 'c26a221e0462027d1f9d4a802ed63f8ab07a43d0', + 'pretty_version' => 'v6.4.33', + 'version' => '6.4.33.0', + 'reference' => '9ef2d0b63b9e855ba351e770a603d89699115801', 'type' => 'symfony-bundle', 'install_path' => __DIR__ . '/../symfony/framework-bundle', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.4.29', - 'version' => '6.4.29.0', - 'reference' => 'b03d11e015552a315714c127d8d1e0f9e970ec88', + 'pretty_version' => 'v6.4.33', + 'version' => '6.4.33.0', + 'reference' => 'f1a490cc9d595ba7ebe684220e625d1e472ad278', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-kernel' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '13e8387320b5942d0dc408440c888e2d526efef4', + 'pretty_version' => 'v6.4.33', + 'version' => '6.4.33.0', + 'reference' => '73fa5c999d7f741ca544a97d3c791cc97890ae4d', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-kernel', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/mailer' => array( - 'pretty_version' => 'v6.4.25', - 'version' => '6.4.25.0', - 'reference' => '628b43b45a3e6b15c8a633fb22df547ed9b492a2', + 'pretty_version' => 'v6.4.31', + 'version' => '6.4.31.0', + 'reference' => '8835f93333474780fda1b987cae37e33c3e026ca', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/mailer', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/mime' => array( - 'pretty_version' => 'v6.4.24', - 'version' => '6.4.24.0', - 'reference' => '664d5e844a2de5e11c8255d0aef6bc15a9660ac7', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '7409686879ca36c09fc970a5fa8ff6e93504dba4', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/mime', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-ctype' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/polyfill-intl-grapheme' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'reference' => '875e90aeea2777b6f135677f618529449334a612', + 'pretty_version' => 'v1.33.0', + 'version' => '1.33.0.0', + 'reference' => '380872130d3a5dd3ace2f4010d95125fde5d5c70', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), @@ -554,18 +574,18 @@ 'dev_requirement' => false, ), 'symfony/routing' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '98eab13a07fddc85766f1756129c69f207ffbc21', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '0dc6253e864e71b486e8ba4970a56ab849106ebe', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/routing', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/runtime' => array( - 'pretty_version' => 'v6.4.24', - 'version' => '6.4.24.0', - 'reference' => 'c1cc6721646f546627236c57f835272806087337', + 'pretty_version' => 'v6.4.30', + 'version' => '6.4.30.0', + 'reference' => 'fb3149ee85d3b639dd3e49ea9dda05656f0537e3', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../symfony/runtime', 'aliases' => array(), @@ -587,54 +607,54 @@ ), ), 'symfony/stopwatch' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => 'fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2', + 'pretty_version' => 'v6.4.24', + 'version' => '6.4.24.0', + 'reference' => 'b67e94e06a05d9572c2fa354483b3e13e3cb1898', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/stopwatch', 'aliases' => array(), 'dev_requirement' => true, ), 'symfony/string' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '7cb80bc10bfcdf6b5492741c0b9357dac66940bc', + 'pretty_version' => 'v6.4.30', + 'version' => '6.4.30.0', + 'reference' => '50590a057841fa6bf69d12eceffce3465b9e32cb', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'reference' => 'dee0c6e5b4c07ce851b462530088e64b255ac9c5', + 'pretty_version' => 'v3.6.1', + 'version' => '3.6.1.0', + 'reference' => '65a8bc82080447fae78373aa10f8d13b38338977', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/twig-bridge' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '1dcf980dd4f79885b986befdeb1c1bc0d6aedfc8', 'type' => 'symfony-bridge', 'install_path' => __DIR__ . '/../symfony/twig-bridge', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/twig-bundle' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '35d84393e598dfb774e6a2bf49e5229a8a6dbe4c', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => 'a5c8dcc11a5bf9c96320da20070d2e158a4e0b30', 'type' => 'symfony-bundle', 'install_path' => __DIR__ . '/../symfony/twig-bundle', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/var-dumper' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '68d6573ec98715ddcae5a0a85bee3c1c27a4c33f', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '131fc9915e0343052af5ed5040401b481ca192aa', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-dumper', 'aliases' => array(), @@ -650,45 +670,45 @@ 'dev_requirement' => false, ), 'symfony/web-profiler-bundle' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'reference' => '38462d16856740ec0d1ba2cb902eebf09100dde2', + 'pretty_version' => 'v6.4.32', + 'version' => '6.4.32.0', + 'reference' => '011f59e3f3d20f60d11b4e78b8dc63504f56e145', 'type' => 'symfony-bundle', 'install_path' => __DIR__ . '/../symfony/web-profiler-bundle', 'aliases' => array(), 'dev_requirement' => true, ), 'symfony/yaml' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'reference' => '4f9237a1bb42455d609e6687d2613dde5b41a587', + 'pretty_version' => 'v6.4.30', + 'version' => '6.4.30.0', + 'reference' => '8207ae83da19ee3748d6d4f567b4d9a7c656e331', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => false, ), 'tecnickcom/tcpdf' => array( - 'pretty_version' => '6.10.0', - 'version' => '6.10.0.0', - 'reference' => 'ca5b6de294512145db96bcbc94e61696599c391d', + 'pretty_version' => '6.10.1', + 'version' => '6.10.1.0', + 'reference' => '7a2701251e5d52fc3d508fd71704683eb54f5939', 'type' => 'library', 'install_path' => __DIR__ . '/../tecnickcom/tcpdf', 'aliases' => array(), 'dev_requirement' => false, ), 'thenetworg/oauth2-azure' => array( - 'pretty_version' => 'v2.2.2', - 'version' => '2.2.2.0', - 'reference' => 'be204a5135f016470a9c33e82ab48785bbc11af2', + 'pretty_version' => 'v2.2.4', + 'version' => '2.2.4.0', + 'reference' => 'a897d60b6b127daa2f27b1b4e62e7af40829d02f', 'type' => 'library', 'install_path' => __DIR__ . '/../thenetworg/oauth2-azure', 'aliases' => array(), 'dev_requirement' => false, ), 'twig/twig' => array( - 'pretty_version' => 'v3.21.1', - 'version' => '3.21.1.0', - 'reference' => '285123877d4dd97dd7c11842ac5fb7e86e60d81d', + 'pretty_version' => 'v3.23.0', + 'version' => '3.23.0.0', + 'reference' => 'a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9', 'type' => 'library', 'install_path' => __DIR__ . '/../twig/twig', 'aliases' => array(), diff --git a/lib/composer/platform_check.php b/lib/composer/platform_check.php index 72145773d..385a219c2 100644 --- a/lib/composer/platform_check.php +++ b/lib/composer/platform_check.php @@ -11,6 +11,7 @@ if (!(PHP_VERSION_ID >= 80100)) { $missingExtensions = array(); extension_loaded('curl') || $missingExtensions[] = 'curl'; extension_loaded('dom') || $missingExtensions[] = 'dom'; +extension_loaded('filter') || $missingExtensions[] = 'filter'; extension_loaded('gd') || $missingExtensions[] = 'gd'; extension_loaded('iconv') || $missingExtensions[] = 'iconv'; extension_loaded('json') || $missingExtensions[] = 'json'; diff --git a/lib/firebase/php-jwt/CHANGELOG.md b/lib/firebase/php-jwt/CHANGELOG.md index 644fa0bea..263760760 100644 --- a/lib/firebase/php-jwt/CHANGELOG.md +++ b/lib/firebase/php-jwt/CHANGELOG.md @@ -1,5 +1,64 @@ # Changelog +## [7.0.2](https://github.com/firebase/php-jwt/compare/v7.0.1...v7.0.2) (2025-12-16) + + +### Bug Fixes + +* add key length validation for ec keys ([#615](https://github.com/firebase/php-jwt/issues/615)) ([7044f9a](https://github.com/firebase/php-jwt/commit/7044f9ae7e7d175d28cca71714feb236f1c0e252)) + +## [7.0.0](https://github.com/firebase/php-jwt/compare/v6.11.1...v7.0.0) (2025-12-15) + + +### ⚠️ ⚠️ ⚠️ Security Fixes ⚠️ ⚠️ ⚠️ + * add key size validation ([#613](https://github.com/firebase/php-jwt/issues/613)) ([6b80341](https://github.com/firebase/php-jwt/commit/6b80341bf57838ea2d011487917337901cd71576)) + **NOTE**: This fix will cause keys with a size below the minimally allowed size to break. + +### Features + +* add SensitiveParameter attribute to security-critical parameters ([#603](https://github.com/firebase/php-jwt/issues/603)) ([4dbfac0](https://github.com/firebase/php-jwt/commit/4dbfac0260eeb0e9e643063c99998e3219cc539b)) +* store timestamp in `ExpiredException` ([#604](https://github.com/firebase/php-jwt/issues/604)) ([f174826](https://github.com/firebase/php-jwt/commit/f1748260d218a856b6a0c23715ac7fae1d7ca95b)) + + +### Bug Fixes + +* validate iat and nbf on payload ([#568](https://github.com/firebase/php-jwt/issues/568)) ([953b2c8](https://github.com/firebase/php-jwt/commit/953b2c88bb445b7e3bb82a5141928f13d7343afd)) + +## [6.11.1](https://github.com/firebase/php-jwt/compare/v6.11.0...v6.11.1) (2025-04-09) + + +### Bug Fixes + +* update error text for consistency ([#528](https://github.com/firebase/php-jwt/issues/528)) ([c11113a](https://github.com/firebase/php-jwt/commit/c11113afa13265e016a669e75494b9203b8a7775)) + +## [6.11.0](https://github.com/firebase/php-jwt/compare/v6.10.2...v6.11.0) (2025-01-23) + + +### Features + +* support octet typed JWK ([#587](https://github.com/firebase/php-jwt/issues/587)) ([7cb8a26](https://github.com/firebase/php-jwt/commit/7cb8a265fa81edf2fa6ef8098f5bc5ae573c33ad)) + + +### Bug Fixes + +* refactor constructor Key to use PHP 8.0 syntax ([#577](https://github.com/firebase/php-jwt/issues/577)) ([29fa2ce](https://github.com/firebase/php-jwt/commit/29fa2ce9e0582cd397711eec1e80c05ce20fabca)) + +## [6.10.2](https://github.com/firebase/php-jwt/compare/v6.10.1...v6.10.2) (2024-11-24) + + +### Bug Fixes + +* Mitigate PHP8.4 deprecation warnings ([#570](https://github.com/firebase/php-jwt/issues/570)) ([76808fa](https://github.com/firebase/php-jwt/commit/76808fa227f3811aa5cdb3bf81233714b799a5b5)) +* support php 8.4 ([#583](https://github.com/firebase/php-jwt/issues/583)) ([e3d68b0](https://github.com/firebase/php-jwt/commit/e3d68b044421339443c74199edd020e03fb1887e)) + +## [6.10.1](https://github.com/firebase/php-jwt/compare/v6.10.0...v6.10.1) (2024-05-18) + + +### Bug Fixes + +* ensure ratelimit expiry is set every time ([#556](https://github.com/firebase/php-jwt/issues/556)) ([09cb208](https://github.com/firebase/php-jwt/commit/09cb2081c2c3bc0f61e2f2a5fbea5741f7498648)) +* ratelimit cache expiration ([#550](https://github.com/firebase/php-jwt/issues/550)) ([dda7250](https://github.com/firebase/php-jwt/commit/dda725033585ece30ff8cae8937320d7e9f18bae)) + ## [6.10.0](https://github.com/firebase/php-jwt/compare/v6.9.0...v6.10.0) (2023-11-28) diff --git a/lib/firebase/php-jwt/README.md b/lib/firebase/php-jwt/README.md index 701de23a8..65b6c8609 100644 --- a/lib/firebase/php-jwt/README.md +++ b/lib/firebase/php-jwt/README.md @@ -17,7 +17,7 @@ composer require firebase/php-jwt ``` Optionally, install the `paragonie/sodium_compat` package from composer if your -php is < 7.2 or does not have libsodium installed: +php env does not have libsodium installed: ```bash composer require paragonie/sodium_compat @@ -48,7 +48,8 @@ $decoded = JWT::decode($jwt, new Key($key, 'HS256')); print_r($decoded); // Pass a stdClass in as the third parameter to get the decoded header values -$decoded = JWT::decode($jwt, new Key($key, 'HS256'), $headers = new stdClass()); +$headers = new stdClass(); +$decoded = JWT::decode($jwt, new Key($key, 'HS256'), $headers); print_r($headers); /* @@ -185,7 +186,7 @@ $passphrase = '[YOUR_PASSPHRASE]'; // Can be generated with "ssh-keygen -t rsa -m pem" $privateKeyFile = '/path/to/key-with-passphrase.pem'; -// Create a private key of type "resource" +/** @var OpenSSLAsymmetricKey $privateKey */ $privateKey = openssl_pkey_get_private( file_get_contents($privateKeyFile), $passphrase @@ -290,7 +291,7 @@ $jwks = ['keys' => []]; // JWK::parseKeySet($jwks) returns an associative array of **kid** to Firebase\JWT\Key // objects. Pass this as the second parameter to JWT::decode. -JWT::decode($payload, JWK::parseKeySet($jwks)); +JWT::decode($jwt, JWK::parseKeySet($jwks)); ``` Using Cached Key Sets @@ -349,7 +350,7 @@ use InvalidArgumentException; use UnexpectedValueException; try { - $decoded = JWT::decode($payload, $keys); + $decoded = JWT::decode($jwt, $keys); } catch (InvalidArgumentException $e) { // provided key/key-array is empty or malformed. } catch (DomainException $e) { @@ -379,7 +380,7 @@ like this: use Firebase\JWT\JWT; use UnexpectedValueException; try { - $decoded = JWT::decode($payload, $keys); + $decoded = JWT::decode($jwt, $keys); } catch (LogicException $e) { // errors having to do with environmental setup or malformed JWT Keys } catch (UnexpectedValueException $e) { @@ -394,7 +395,7 @@ instead, you can do the following: ```php // return type is stdClass -$decoded = JWT::decode($payload, $keys); +$decoded = JWT::decode($jwt, $keys); // cast to array $decoded = json_decode(json_encode($decoded), true); diff --git a/lib/firebase/php-jwt/composer.json b/lib/firebase/php-jwt/composer.json index e23dfe378..816cfd0bd 100644 --- a/lib/firebase/php-jwt/composer.json +++ b/lib/firebase/php-jwt/composer.json @@ -20,7 +20,7 @@ ], "license": "BSD-3-Clause", "require": { - "php": "^7.4||^8.0" + "php": "^8.0" }, "suggest": { "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present", @@ -32,10 +32,10 @@ } }, "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", + "guzzlehttp/guzzle": "^7.4", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", + "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" } diff --git a/lib/firebase/php-jwt/src/CachedKeySet.php b/lib/firebase/php-jwt/src/CachedKeySet.php index ee529f9f5..8e8e8d68c 100644 --- a/lib/firebase/php-jwt/src/CachedKeySet.php +++ b/lib/firebase/php-jwt/src/CachedKeySet.php @@ -80,9 +80,9 @@ class CachedKeySet implements ArrayAccess ClientInterface $httpClient, RequestFactoryInterface $httpFactory, CacheItemPoolInterface $cache, - int $expiresAfter = null, + ?int $expiresAfter = null, bool $rateLimit = false, - string $defaultAlg = null + ?string $defaultAlg = null ) { $this->jwksUri = $jwksUri; $this->httpClient = $httpClient; @@ -180,7 +180,7 @@ class CachedKeySet implements ArrayAccess $jwksResponse = $this->httpClient->sendRequest($request); if ($jwksResponse->getStatusCode() !== 200) { throw new UnexpectedValueException( - sprintf('HTTP Error: %d %s for URI "%s"', + \sprintf('HTTP Error: %d %s for URI "%s"', $jwksResponse->getStatusCode(), $jwksResponse->getReasonPhrase(), $this->jwksUri, @@ -212,15 +212,21 @@ class CachedKeySet implements ArrayAccess } $cacheItem = $this->cache->getItem($this->rateLimitCacheKey); - if (!$cacheItem->isHit()) { - $cacheItem->expiresAfter(1); // # of calls are cached each minute + + $cacheItemData = []; + if ($cacheItem->isHit() && \is_array($data = $cacheItem->get())) { + $cacheItemData = $data; } - $callsPerMinute = (int) $cacheItem->get(); + $callsPerMinute = $cacheItemData['callsPerMinute'] ?? 0; + $expiry = $cacheItemData['expiry'] ?? new \DateTime('+60 seconds', new \DateTimeZone('UTC')); + if (++$callsPerMinute > $this->maxCallsPerMinute) { return true; } - $cacheItem->set($callsPerMinute); + + $cacheItem->set(['expiry' => $expiry, 'callsPerMinute' => $callsPerMinute]); + $cacheItem->expiresAt($expiry); $this->cache->save($cacheItem); return false; } diff --git a/lib/firebase/php-jwt/src/ExpiredException.php b/lib/firebase/php-jwt/src/ExpiredException.php index 12fef0944..25f445132 100644 --- a/lib/firebase/php-jwt/src/ExpiredException.php +++ b/lib/firebase/php-jwt/src/ExpiredException.php @@ -6,6 +6,8 @@ class ExpiredException extends \UnexpectedValueException implements JWTException { private object $payload; + private ?int $timestamp = null; + public function setPayload(object $payload): void { $this->payload = $payload; @@ -15,4 +17,14 @@ class ExpiredException extends \UnexpectedValueException implements JWTException { return $this->payload; } + + public function setTimestamp(int $timestamp): void + { + $this->timestamp = $timestamp; + } + + public function getTimestamp(): ?int + { + return $this->timestamp; + } } diff --git a/lib/firebase/php-jwt/src/JWK.php b/lib/firebase/php-jwt/src/JWK.php index 63fb2484b..d5175b217 100644 --- a/lib/firebase/php-jwt/src/JWK.php +++ b/lib/firebase/php-jwt/src/JWK.php @@ -52,7 +52,7 @@ class JWK * * @uses parseKey */ - public static function parseKeySet(array $jwks, string $defaultAlg = null): array + public static function parseKeySet(#[\SensitiveParameter] array $jwks, ?string $defaultAlg = null): array { $keys = []; @@ -93,7 +93,7 @@ class JWK * * @uses createPemFromModulusAndExponent */ - public static function parseKey(array $jwk, string $defaultAlg = null): ?Key + public static function parseKey(#[\SensitiveParameter] array $jwk, ?string $defaultAlg = null): ?Key { if (empty($jwk)) { throw new InvalidArgumentException('JWK must not be empty'); @@ -172,6 +172,12 @@ class JWK // This library works internally with EdDSA keys (Ed25519) encoded in standard base64. $publicKey = JWT::convertBase64urlToBase64($jwk['x']); return new Key($publicKey, $jwk['alg']); + case 'oct': + if (!isset($jwk['k'])) { + throw new UnexpectedValueException('k not set'); + } + + return new Key(JWT::urlsafeB64Decode($jwk['k']), $jwk['alg']); default: break; } @@ -212,7 +218,7 @@ class JWK ) ); - return sprintf( + return \sprintf( "-----BEGIN PUBLIC KEY-----\n%s\n-----END PUBLIC KEY-----\n", wordwrap(base64_encode($pem), 64, "\n", true) ); diff --git a/lib/firebase/php-jwt/src/JWT.php b/lib/firebase/php-jwt/src/JWT.php index 263492068..c18e4cc06 100644 --- a/lib/firebase/php-jwt/src/JWT.php +++ b/lib/firebase/php-jwt/src/JWT.php @@ -31,6 +31,8 @@ class JWT private const ASN1_SEQUENCE = 0x10; private const ASN1_BIT_STRING = 0x03; + private const RSA_KEY_MIN_LENGTH=2048; + /** * When checking nbf, iat or expiration times, * we want to provide some extra leeway time to @@ -95,8 +97,8 @@ class JWT */ public static function decode( string $jwt, - $keyOrKeyArray, - stdClass &$headers = null + #[\SensitiveParameter] $keyOrKeyArray, + ?stdClass &$headers = null ): stdClass { // Validate JWT $timestamp = \is_null(static::$timestamp) ? \time() : static::$timestamp; @@ -127,6 +129,16 @@ class JWT if (!$payload instanceof stdClass) { throw new UnexpectedValueException('Payload must be a JSON object'); } + if (isset($payload->iat) && !\is_numeric($payload->iat)) { + throw new UnexpectedValueException('Payload iat must be a number'); + } + if (isset($payload->nbf) && !\is_numeric($payload->nbf)) { + throw new UnexpectedValueException('Payload nbf must be a number'); + } + if (isset($payload->exp) && !\is_numeric($payload->exp)) { + throw new UnexpectedValueException('Payload exp must be a number'); + } + $sig = static::urlsafeB64Decode($cryptob64); if (empty($header->alg)) { throw new UnexpectedValueException('Empty algorithm'); @@ -154,7 +166,7 @@ class JWT // token can actually be used. If it's not yet that time, abort. if (isset($payload->nbf) && floor($payload->nbf) > ($timestamp + static::$leeway)) { $ex = new BeforeValidException( - 'Cannot handle token with nbf prior to ' . \date(DateTime::ISO8601, (int) $payload->nbf) + 'Cannot handle token with nbf prior to ' . \date(DateTime::ATOM, (int) floor($payload->nbf)) ); $ex->setPayload($payload); throw $ex; @@ -165,7 +177,7 @@ class JWT // correctly used the nbf claim). if (!isset($payload->nbf) && isset($payload->iat) && floor($payload->iat) > ($timestamp + static::$leeway)) { $ex = new BeforeValidException( - 'Cannot handle token with iat prior to ' . \date(DateTime::ISO8601, (int) $payload->iat) + 'Cannot handle token with iat prior to ' . \date(DateTime::ATOM, (int) floor($payload->iat)) ); $ex->setPayload($payload); throw $ex; @@ -175,6 +187,7 @@ class JWT if (isset($payload->exp) && ($timestamp - static::$leeway) >= $payload->exp) { $ex = new ExpiredException('Expired token'); $ex->setPayload($payload); + $ex->setTimestamp($timestamp); throw $ex; } @@ -185,7 +198,7 @@ class JWT * Converts and signs a PHP array into a JWT string. * * @param array $payload PHP array - * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. + * @param string|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. * @param string $alg Supported algorithms are 'ES384','ES256', 'ES256K', 'HS256', * 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512' * @param string $keyId @@ -198,13 +211,13 @@ class JWT */ public static function encode( array $payload, - $key, + #[\SensitiveParameter] $key, string $alg, - string $keyId = null, - array $head = null + ?string $keyId = null, + ?array $head = null ): string { $header = ['typ' => 'JWT']; - if (isset($head) && \is_array($head)) { + if (isset($head)) { $header = \array_merge($header, $head); } $header['alg'] = $alg; @@ -226,7 +239,7 @@ class JWT * Sign a string with a given key and algorithm. * * @param string $msg The message to sign - * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. + * @param string|OpenSSLAsymmetricKey|OpenSSLCertificate $key The secret key. * @param string $alg Supported algorithms are 'EdDSA', 'ES384', 'ES256', 'ES256K', 'HS256', * 'HS384', 'HS512', 'RS256', 'RS384', and 'RS512' * @@ -236,7 +249,7 @@ class JWT */ public static function sign( string $msg, - $key, + #[\SensitiveParameter] $key, string $alg ): string { if (empty(static::$supported_algs[$alg])) { @@ -248,10 +261,19 @@ class JWT if (!\is_string($key)) { throw new InvalidArgumentException('key must be a string when using hmac'); } + self::validateHmacKeyLength($key, $algorithm); return \hash_hmac($algorithm, $msg, $key, true); case 'openssl': $signature = ''; - $success = \openssl_sign($msg, $signature, $key, $algorithm); // @phpstan-ignore-line + if (!$key = openssl_pkey_get_private($key)) { + throw new DomainException('OpenSSL unable to validate key'); + } + if (str_starts_with($alg, 'RS')) { + self::validateRsaKeyLength($key); + } elseif (str_starts_with($alg, 'ES')) { + self::validateEcKeyLength($key, $alg); + } + $success = \openssl_sign($msg, $signature, $key, $algorithm); if (!$success) { throw new DomainException('OpenSSL unable to sign data'); } @@ -290,7 +312,7 @@ class JWT * * @param string $msg The original message (header and body) * @param string $signature The original signature - * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial For Ed*, ES*, HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey + * @param string|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial For Ed*, ES*, HS*, a string key works. for RS*, must be an instance of OpenSSLAsymmetricKey * @param string $alg The algorithm * * @return bool @@ -300,7 +322,7 @@ class JWT private static function verify( string $msg, string $signature, - $keyMaterial, + #[\SensitiveParameter] $keyMaterial, string $alg ): bool { if (empty(static::$supported_algs[$alg])) { @@ -310,7 +332,15 @@ class JWT list($function, $algorithm) = static::$supported_algs[$alg]; switch ($function) { case 'openssl': - $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); // @phpstan-ignore-line + if (!$key = openssl_pkey_get_public($keyMaterial)) { + throw new DomainException('OpenSSL unable to validate key'); + } + if (str_starts_with($alg, 'RS')) { + self::validateRsaKeyLength($key); + } elseif (str_starts_with($alg, 'ES')) { + self::validateEcKeyLength($key, $alg); + } + $success = \openssl_verify($msg, $signature, $keyMaterial, $algorithm); if ($success === 1) { return true; } @@ -347,6 +377,7 @@ class JWT if (!\is_string($keyMaterial)) { throw new InvalidArgumentException('key must be a string when using hmac'); } + self::validateHmacKeyLength($keyMaterial, $algorithm); $hash = \hash_hmac($algorithm, $msg, $keyMaterial, true); return self::constantTimeEquals($hash, $signature); } @@ -384,12 +415,7 @@ class JWT */ public static function jsonEncode(array $input): string { - if (PHP_VERSION_ID >= 50400) { - $json = \json_encode($input, \JSON_UNESCAPED_SLASHES); - } else { - // PHP 5.3 only - $json = \json_encode($input); - } + $json = \json_encode($input, \JSON_UNESCAPED_SLASHES); if ($errno = \json_last_error()) { self::handleJsonError($errno); } elseif ($json === 'null') { @@ -459,7 +485,7 @@ class JWT * @return Key */ private static function getKey( - $keyOrKeyArray, + #[\SensitiveParameter] $keyOrKeyArray, ?string $kid ): Key { if ($keyOrKeyArray instanceof Key) { @@ -666,4 +692,57 @@ class JWT return [$pos, $data]; } + + /** + * Validate HMAC key length + * + * @param string $key HMAC key material + * @param string $algorithm The algorithm + * + * @throws DomainException Provided key is too short + */ + private static function validateHmacKeyLength(string $key, string $algorithm): void + { + $keyLength = \strlen($key) * 8; + $minKeyLength = (int) \str_replace('SHA', '', $algorithm); + if ($keyLength < $minKeyLength) { + throw new DomainException('Provided key is too short'); + } + } + + /** + * Validate RSA key length + * + * @param OpenSSLAsymmetricKey $key RSA key material + * @throws DomainException Provided key is too short + */ + private static function validateRsaKeyLength(#[\SensitiveParameter] OpenSSLAsymmetricKey $key): void + { + if (!$keyDetails = openssl_pkey_get_details($key)) { + throw new DomainException('Unable to validate key'); + } + if ($keyDetails['bits'] < self::RSA_KEY_MIN_LENGTH) { + throw new DomainException('Provided key is too short'); + } + } + + /** + * Validate RSA key length + * + * @param OpenSSLAsymmetricKey $key RSA key material + * @param string $algorithm The algorithm + * @throws DomainException Provided key is too short + */ + private static function validateEcKeyLength( + #[\SensitiveParameter] OpenSSLAsymmetricKey $key, + string $algorithm + ): void { + if (!$keyDetails = openssl_pkey_get_details($key)) { + throw new DomainException('Unable to validate key'); + } + $minKeyLength = (int) \str_replace('ES', '', $algorithm); + if ($keyDetails['bits'] < $minKeyLength) { + throw new DomainException('Provided key is too short'); + } + } } diff --git a/lib/firebase/php-jwt/src/Key.php b/lib/firebase/php-jwt/src/Key.php index 00cf7f2ed..694d3b13b 100644 --- a/lib/firebase/php-jwt/src/Key.php +++ b/lib/firebase/php-jwt/src/Key.php @@ -9,26 +9,20 @@ use TypeError; class Key { - /** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */ - private $keyMaterial; - /** @var string */ - private $algorithm; - /** - * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial + * @param string|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial * @param string $algorithm */ public function __construct( - $keyMaterial, - string $algorithm + #[\SensitiveParameter] private $keyMaterial, + private string $algorithm ) { if ( !\is_string($keyMaterial) && !$keyMaterial instanceof OpenSSLAsymmetricKey && !$keyMaterial instanceof OpenSSLCertificate - && !\is_resource($keyMaterial) ) { - throw new TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey'); + throw new TypeError('Key material must be a string, OpenSSLCertificate, or OpenSSLAsymmetricKey'); } if (empty($keyMaterial)) { @@ -38,10 +32,6 @@ class Key if (empty($algorithm)) { throw new InvalidArgumentException('Algorithm must not be empty'); } - - // TODO: Remove in PHP 8.0 in favor of class constructor property promotion - $this->keyMaterial = $keyMaterial; - $this->algorithm = $algorithm; } /** @@ -55,7 +45,7 @@ class Key } /** - * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate + * @return string|OpenSSLAsymmetricKey|OpenSSLCertificate */ public function getKeyMaterial() { diff --git a/lib/guzzlehttp/guzzle/CHANGELOG.md b/lib/guzzlehttp/guzzle/CHANGELOG.md index 13709d1b8..5fe721e03 100644 --- a/lib/guzzlehttp/guzzle/CHANGELOG.md +++ b/lib/guzzlehttp/guzzle/CHANGELOG.md @@ -2,6 +2,56 @@ Please refer to [UPGRADING](UPGRADING.md) guide for upgrading to a major version. +## 7.10.0 - 2025-08-23 + +### Added + +- Support for PHP 8.5 + +### Changed + +- Adjusted `guzzlehttp/promises` version constraint to `^2.3` +- Adjusted `guzzlehttp/psr7` version constraint to `^2.8` + + +## 7.9.3 - 2025-03-27 + +### Changed + +- Remove explicit content-length header for GET requests +- Improve compatibility with bad servers for boolean cookie values + + +## 7.9.2 - 2024-07-24 + +### Fixed + +- Adjusted handler selection to use cURL if its version is 7.21.2 or higher, rather than 7.34.0 + + +## 7.9.1 - 2024-07-19 + +### Fixed + +- Fix TLS 1.3 check for HTTP/2 requests + + +## 7.9.0 - 2024-07-18 + +### Changed + +- Improve protocol version checks to provide feedback around unsupported protocols +- Only select the cURL handler by default if 7.34.0 or higher is linked +- Improved `CurlMultiHandler` to avoid busy wait if possible +- Dropped support for EOL `guzzlehttp/psr7` v1 +- Improved URI user info redaction in errors + +## 7.8.2 - 2024-07-18 + +### Added + +- Support for PHP 8.4 + ## 7.8.1 - 2023-12-03 diff --git a/lib/guzzlehttp/guzzle/README.md b/lib/guzzlehttp/guzzle/README.md index 6d78a9309..cdaebee3f 100644 --- a/lib/guzzlehttp/guzzle/README.md +++ b/lib/guzzlehttp/guzzle/README.md @@ -62,11 +62,11 @@ composer require guzzlehttp/guzzle | Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | |---------|---------------------|---------------------|--------------|---------------------|---------------------|-------|--------------| -| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | -| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | -| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | -| 6.x | Security fixes only | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | -| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.4 | +| 3.x | EOL (2016-10-31) | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >=5.3.3,<7.0 | +| 4.x | EOL (2016-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >=5.4,<7.0 | +| 5.x | EOL (2019-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >=5.4,<7.4 | +| 6.x | EOL (2023-10-31) | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >=5.5,<8.0 | +| 7.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v7][guzzle-7-repo] | [v7][guzzle-7-docs] | Yes | >=7.2.5,<8.5 | [guzzle-3-repo]: https://github.com/guzzle/guzzle3 [guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x diff --git a/lib/guzzlehttp/guzzle/composer.json b/lib/guzzlehttp/guzzle/composer.json index 69583d7cc..0db75a950 100644 --- a/lib/guzzlehttp/guzzle/composer.json +++ b/lib/guzzlehttp/guzzle/composer.json @@ -50,11 +50,39 @@ "homepage": "https://github.com/Tobion" } ], + "repositories": [ + { + "type": "package", + "package": { + "name": "guzzle/client-integration-tests", + "version": "v3.0.2", + "dist": { + "url": "https://codeload.github.com/guzzle/client-integration-tests/zip/2c025848417c1135031fdf9c728ee53d0a7ceaee", + "type": "zip" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.11", + "php-http/message": "^1.0 || ^2.0", + "guzzlehttp/psr7": "^1.7 || ^2.0", + "th3n3rd/cartesian-product": "^0.3" + }, + "autoload": { + "psr-4": { + "Http\\Client\\Tests\\": "src/" + } + }, + "bin": [ + "bin/http_test_server" + ] + } + } + ], "require": { "php": "^7.2.5 || ^8.0", "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^2.3", + "guzzlehttp/psr7": "^2.8", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -64,9 +92,9 @@ "require-dev": { "ext-curl": "*", "bamarni/composer-bin-plugin": "^1.8.2", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { diff --git a/lib/guzzlehttp/guzzle/src/BodySummarizer.php b/lib/guzzlehttp/guzzle/src/BodySummarizer.php index 6eca94ef9..761506dd0 100644 --- a/lib/guzzlehttp/guzzle/src/BodySummarizer.php +++ b/lib/guzzlehttp/guzzle/src/BodySummarizer.php @@ -11,7 +11,7 @@ final class BodySummarizer implements BodySummarizerInterface */ private $truncateAt; - public function __construct(int $truncateAt = null) + public function __construct(?int $truncateAt = null) { $this->truncateAt = $truncateAt; } @@ -22,7 +22,7 @@ final class BodySummarizer implements BodySummarizerInterface public function summarize(MessageInterface $message): ?string { return $this->truncateAt === null - ? \GuzzleHttp\Psr7\Message::bodySummary($message) - : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt); + ? Psr7\Message::bodySummary($message) + : Psr7\Message::bodySummary($message, $this->truncateAt); } } diff --git a/lib/guzzlehttp/guzzle/src/Client.php b/lib/guzzlehttp/guzzle/src/Client.php index bc6efc90f..c78919a4f 100644 --- a/lib/guzzlehttp/guzzle/src/Client.php +++ b/lib/guzzlehttp/guzzle/src/Client.php @@ -52,7 +52,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface * * @param array $config Client configuration settings. * - * @see \GuzzleHttp\RequestOptions for a list of available request options. + * @see RequestOptions for a list of available request options. */ public function __construct(array $config = []) { @@ -202,7 +202,7 @@ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface * * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0. */ - public function getConfig(string $option = null) + public function getConfig(?string $option = null) { return $option === null ? $this->config diff --git a/lib/guzzlehttp/guzzle/src/ClientInterface.php b/lib/guzzlehttp/guzzle/src/ClientInterface.php index 1788e16ab..6aaee61af 100644 --- a/lib/guzzlehttp/guzzle/src/ClientInterface.php +++ b/lib/guzzlehttp/guzzle/src/ClientInterface.php @@ -80,5 +80,5 @@ interface ClientInterface * * @deprecated ClientInterface::getConfig will be removed in guzzlehttp/guzzle:8.0. */ - public function getConfig(string $option = null); + public function getConfig(?string $option = null); } diff --git a/lib/guzzlehttp/guzzle/src/Cookie/CookieJar.php b/lib/guzzlehttp/guzzle/src/Cookie/CookieJar.php index c29b4b7e9..b616cf2ed 100644 --- a/lib/guzzlehttp/guzzle/src/Cookie/CookieJar.php +++ b/lib/guzzlehttp/guzzle/src/Cookie/CookieJar.php @@ -103,7 +103,7 @@ class CookieJar implements CookieJarInterface }, $this->getIterator()->getArrayCopy()); } - public function clear(string $domain = null, string $path = null, string $name = null): void + public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void { if (!$domain) { $this->cookies = []; diff --git a/lib/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/lib/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php index 8c55cc6f7..93ada58d2 100644 --- a/lib/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +++ b/lib/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php @@ -62,7 +62,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate * @param string|null $path Clears cookies matching a domain and path * @param string|null $name Clears cookies matching a domain, path, and name */ - public function clear(string $domain = null, string $path = null, string $name = null): void; + public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void; /** * Discard all sessions cookies. diff --git a/lib/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/lib/guzzlehttp/guzzle/src/Cookie/SetCookie.php index c9806da88..47c4d10ae 100644 --- a/lib/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ b/lib/guzzlehttp/guzzle/src/Cookie/SetCookie.php @@ -62,6 +62,10 @@ class SetCookie if (is_numeric($value)) { $data[$search] = (int) $value; } + } elseif ($search === 'Secure' || $search === 'Discard' || $search === 'HttpOnly') { + if ($value) { + $data[$search] = true; + } } else { $data[$search] = $value; } diff --git a/lib/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/lib/guzzlehttp/guzzle/src/Exception/BadResponseException.php index a80956c9d..ba67ad498 100644 --- a/lib/guzzlehttp/guzzle/src/Exception/BadResponseException.php +++ b/lib/guzzlehttp/guzzle/src/Exception/BadResponseException.php @@ -14,7 +14,7 @@ class BadResponseException extends RequestException string $message, RequestInterface $request, ResponseInterface $response, - \Throwable $previous = null, + ?\Throwable $previous = null, array $handlerContext = [] ) { parent::__construct($message, $request, $response, $previous, $handlerContext); diff --git a/lib/guzzlehttp/guzzle/src/Exception/ConnectException.php b/lib/guzzlehttp/guzzle/src/Exception/ConnectException.php index e1a31519c..eab51ca17 100644 --- a/lib/guzzlehttp/guzzle/src/Exception/ConnectException.php +++ b/lib/guzzlehttp/guzzle/src/Exception/ConnectException.php @@ -25,7 +25,7 @@ class ConnectException extends TransferException implements NetworkExceptionInte public function __construct( string $message, RequestInterface $request, - \Throwable $previous = null, + ?\Throwable $previous = null, array $handlerContext = [] ) { parent::__construct($message, 0, $previous); diff --git a/lib/guzzlehttp/guzzle/src/Exception/RequestException.php b/lib/guzzlehttp/guzzle/src/Exception/RequestException.php index c2d0a9ccc..b42c88abf 100644 --- a/lib/guzzlehttp/guzzle/src/Exception/RequestException.php +++ b/lib/guzzlehttp/guzzle/src/Exception/RequestException.php @@ -7,7 +7,6 @@ use GuzzleHttp\BodySummarizerInterface; use Psr\Http\Client\RequestExceptionInterface; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\UriInterface; /** * HTTP Request exception @@ -32,8 +31,8 @@ class RequestException extends TransferException implements RequestExceptionInte public function __construct( string $message, RequestInterface $request, - ResponseInterface $response = null, - \Throwable $previous = null, + ?ResponseInterface $response = null, + ?\Throwable $previous = null, array $handlerContext = [] ) { // Set the code of the exception if the response is set and not future. @@ -63,10 +62,10 @@ class RequestException extends TransferException implements RequestExceptionInte */ public static function create( RequestInterface $request, - ResponseInterface $response = null, - \Throwable $previous = null, + ?ResponseInterface $response = null, + ?\Throwable $previous = null, array $handlerContext = [], - BodySummarizerInterface $bodySummarizer = null + ?BodySummarizerInterface $bodySummarizer = null ): self { if (!$response) { return new self( @@ -90,8 +89,7 @@ class RequestException extends TransferException implements RequestExceptionInte $className = __CLASS__; } - $uri = $request->getUri(); - $uri = static::obfuscateUri($uri); + $uri = \GuzzleHttp\Psr7\Utils::redactUserInfo($request->getUri()); // Client Error: `GET /` resulted in a `404 Not Found` response: // ... (truncated) @@ -113,20 +111,6 @@ class RequestException extends TransferException implements RequestExceptionInte return new $className($message, $request, $response, $previous, $handlerContext); } - /** - * Obfuscates URI if there is a username and a password present - */ - private static function obfuscateUri(UriInterface $uri): UriInterface - { - $userInfo = $uri->getUserInfo(); - - if (false !== ($pos = \strpos($userInfo, ':'))) { - return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); - } - - return $uri; - } - /** * Get the request that caused the exception */ diff --git a/lib/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/lib/guzzlehttp/guzzle/src/Handler/CurlFactory.php index 16a942232..3c1fa9c13 100644 --- a/lib/guzzlehttp/guzzle/src/Handler/CurlFactory.php +++ b/lib/guzzlehttp/guzzle/src/Handler/CurlFactory.php @@ -11,6 +11,7 @@ use GuzzleHttp\Psr7\LazyOpenStream; use GuzzleHttp\TransferStats; use GuzzleHttp\Utils; use Psr\Http\Message\RequestInterface; +use Psr\Http\Message\UriInterface; /** * Creates curl resources from a request @@ -46,6 +47,16 @@ class CurlFactory implements CurlFactoryInterface public function create(RequestInterface $request, array $options): EasyHandle { + $protocolVersion = $request->getProtocolVersion(); + + if ('2' === $protocolVersion || '2.0' === $protocolVersion) { + if (!self::supportsHttp2()) { + throw new ConnectException('HTTP/2 is supported by the cURL handler, however libcurl is built without HTTP/2 support.', $request); + } + } elseif ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) { + throw new ConnectException(sprintf('HTTP/%s is not supported by the cURL handler.', $protocolVersion), $request); + } + if (isset($options['curl']['body_as_string'])) { $options['_body_as_string'] = $options['curl']['body_as_string']; unset($options['curl']['body_as_string']); @@ -72,13 +83,51 @@ class CurlFactory implements CurlFactoryInterface return $easy; } + private static function supportsHttp2(): bool + { + static $supportsHttp2 = null; + + if (null === $supportsHttp2) { + $supportsHttp2 = self::supportsTls12() + && defined('CURL_VERSION_HTTP2') + && (\CURL_VERSION_HTTP2 & \curl_version()['features']); + } + + return $supportsHttp2; + } + + private static function supportsTls12(): bool + { + static $supportsTls12 = null; + + if (null === $supportsTls12) { + $supportsTls12 = \CURL_SSLVERSION_TLSv1_2 & \curl_version()['features']; + } + + return $supportsTls12; + } + + private static function supportsTls13(): bool + { + static $supportsTls13 = null; + + if (null === $supportsTls13) { + $supportsTls13 = defined('CURL_SSLVERSION_TLSv1_3') + && (\CURL_SSLVERSION_TLSv1_3 & \curl_version()['features']); + } + + return $supportsTls13; + } + public function release(EasyHandle $easy): void { $resource = $easy->handle; unset($easy->handle); if (\count($this->handles) >= $this->maxHandles) { - \curl_close($resource); + if (PHP_VERSION_ID < 80000) { + \curl_close($resource); + } } else { // Remove all callback functions as they can hold onto references // and are not cleaned up by curl_reset. Using curl_setopt_array @@ -147,7 +196,7 @@ class CurlFactory implements CurlFactoryInterface 'error' => \curl_error($easy->handle), 'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME), ] + \curl_getinfo($easy->handle); - $ctx[self::CURL_VERSION_STR] = \curl_version()['version']; + $ctx[self::CURL_VERSION_STR] = self::getCurlVersion(); $factory->release($easy); // Retry when nothing is present or when curl failed to rewind. @@ -158,6 +207,17 @@ class CurlFactory implements CurlFactoryInterface return self::createRejection($easy, $ctx); } + private static function getCurlVersion(): string + { + static $curlVersion = null; + + if (null === $curlVersion) { + $curlVersion = \curl_version()['version']; + } + + return $curlVersion; + } + private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface { static $connectionErrors = [ @@ -194,15 +254,22 @@ class CurlFactory implements CurlFactoryInterface ); } + $uri = $easy->request->getUri(); + + $sanitizedError = self::sanitizeCurlError($ctx['error'] ?? '', $uri); + $message = \sprintf( 'cURL error %s: %s (%s)', $ctx['errno'], - $ctx['error'], + $sanitizedError, 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html' ); - $uriString = (string) $easy->request->getUri(); - if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) { - $message .= \sprintf(' for %s', $uriString); + + if ('' !== $sanitizedError) { + $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($uri)->__toString(); + if ($redactedUriString !== '' && false === \strpos($sanitizedError, $redactedUriString)) { + $message .= \sprintf(' for %s', $redactedUriString); + } } // Create a connection exception if it was a specific error code. @@ -213,6 +280,24 @@ class CurlFactory implements CurlFactoryInterface return P\Create::rejectionFor($error); } + private static function sanitizeCurlError(string $error, UriInterface $uri): string + { + if ('' === $error) { + return $error; + } + + $baseUri = $uri->withQuery('')->withFragment(''); + $baseUriString = $baseUri->__toString(); + + if ('' === $baseUriString) { + return $error; + } + + $redactedUriString = \GuzzleHttp\Psr7\Utils::redactUserInfo($baseUri)->__toString(); + + return str_replace($baseUriString, $redactedUriString, $error); + } + /** * @return array */ @@ -232,10 +317,11 @@ class CurlFactory implements CurlFactoryInterface } $version = $easy->request->getProtocolVersion(); - if ($version == 1.1) { - $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; - } elseif ($version == 2.0) { + + if ('2' === $version || '2.0' === $version) { $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; + } elseif ('1.1' === $version) { + $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; } else { $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0; } @@ -390,8 +476,10 @@ class CurlFactory implements CurlFactoryInterface // The empty string enables all available decoders and implicitly // sets a matching 'Accept-Encoding' header. $conf[\CURLOPT_ENCODING] = ''; - // But as the user did not specify any acceptable encodings we need - // to overwrite this implicit header with an empty one. + // But as the user did not specify any encoding preference, + // let's leave it up to server by preventing curl from sending + // the header, which will be interpreted as 'Accept-Encoding: *'. + // https://www.rfc-editor.org/rfc/rfc9110#field.accept-encoding $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; } } @@ -455,23 +543,35 @@ class CurlFactory implements CurlFactoryInterface } if (isset($options['crypto_method'])) { - if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) { - if (!defined('CURL_SSLVERSION_TLSv1_0')) { - throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL'); + $protocolVersion = $easy->request->getProtocolVersion(); + + // If HTTP/2, upgrade TLS 1.0 and 1.1 to 1.2 + if ('2' === $protocolVersion || '2.0' === $protocolVersion) { + if ( + \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method'] + || \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method'] + || \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method'] + ) { + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; + } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { + if (!self::supportsTls13()) { + throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); + } + $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; + } else { + throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); } + } elseif (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) { $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0; } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) { - if (!defined('CURL_SSLVERSION_TLSv1_1')) { - throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL'); - } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1; } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) { - if (!defined('CURL_SSLVERSION_TLSv1_2')) { + if (!self::supportsTls12()) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; } elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { - if (!defined('CURL_SSLVERSION_TLSv1_3')) { + if (!self::supportsTls13()) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; @@ -631,7 +731,10 @@ class CurlFactory implements CurlFactoryInterface public function __destruct() { foreach ($this->handles as $id => $handle) { - \curl_close($handle); + if (PHP_VERSION_ID < 80000) { + \curl_close($handle); + } + unset($this->handles[$id]); } } diff --git a/lib/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/lib/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php index a64e1821a..21abbedf3 100644 --- a/lib/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +++ b/lib/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php @@ -2,6 +2,7 @@ namespace GuzzleHttp\Handler; +use Closure; use GuzzleHttp\Promise as P; use GuzzleHttp\Promise\Promise; use GuzzleHttp\Promise\PromiseInterface; @@ -159,6 +160,9 @@ class CurlMultiHandler } } + // Run curl_multi_exec in the queue to enable other async tasks to run + P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue'])); + // Step through the task queue which may add additional requests. P\Utils::queue()->run(); @@ -169,11 +173,24 @@ class CurlMultiHandler } while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { + // Prevent busy looping for slow HTTP requests. + \curl_multi_select($this->_mh, $this->selectTimeout); } $this->processMessages(); } + /** + * Runs \curl_multi_exec() inside the event loop, to prevent busy looping + */ + private function tickInQueue(): void + { + if (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { + \curl_multi_select($this->_mh, 0); + P\Utils::queue()->add(Closure::fromCallable([$this, 'tickInQueue'])); + } + } + /** * Runs until all outstanding connections have completed. */ @@ -223,7 +240,10 @@ class CurlMultiHandler $handle = $this->handles[$id]['easy']->handle; unset($this->delays[$id], $this->handles[$id]); \curl_multi_remove_handle($this->_mh, $handle); - \curl_close($handle); + + if (PHP_VERSION_ID < 80000) { + \curl_close($handle); + } return true; } diff --git a/lib/guzzlehttp/guzzle/src/Handler/MockHandler.php b/lib/guzzlehttp/guzzle/src/Handler/MockHandler.php index 77ffed521..3ecd5964d 100644 --- a/lib/guzzlehttp/guzzle/src/Handler/MockHandler.php +++ b/lib/guzzlehttp/guzzle/src/Handler/MockHandler.php @@ -52,21 +52,21 @@ class MockHandler implements \Countable * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled. * @param callable|null $onRejected Callback to invoke when the return value is rejected. */ - public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack + public static function createWithMiddleware(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null): HandlerStack { return HandlerStack::create(new self($queue, $onFulfilled, $onRejected)); } /** * The passed in value must be an array of - * {@see \Psr\Http\Message\ResponseInterface} objects, Exceptions, + * {@see ResponseInterface} objects, Exceptions, * callables, or Promises. * * @param array|null $queue The parameters to be passed to the append function, as an indexed array. * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled. * @param callable|null $onRejected Callback to invoke when the return value is rejected. */ - public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null) + public function __construct(?array $queue = null, ?callable $onFulfilled = null, ?callable $onRejected = null) { $this->onFulfilled = $onFulfilled; $this->onRejected = $onRejected; @@ -200,7 +200,7 @@ class MockHandler implements \Countable private function invokeStats( RequestInterface $request, array $options, - ResponseInterface $response = null, + ?ResponseInterface $response = null, $reason = null ): void { if (isset($options['on_stats'])) { diff --git a/lib/guzzlehttp/guzzle/src/Handler/Proxy.php b/lib/guzzlehttp/guzzle/src/Handler/Proxy.php index f045b526c..9df70cf23 100644 --- a/lib/guzzlehttp/guzzle/src/Handler/Proxy.php +++ b/lib/guzzlehttp/guzzle/src/Handler/Proxy.php @@ -17,10 +17,10 @@ class Proxy * Sends synchronous requests to a specific handler while sending all other * requests to another handler. * - * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses - * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $sync Handler used for synchronous responses. + * @param callable(RequestInterface, array): PromiseInterface $default Handler used for normal responses + * @param callable(RequestInterface, array): PromiseInterface $sync Handler used for synchronous responses. * - * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler. + * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler. */ public static function wrapSync(callable $default, callable $sync): callable { @@ -37,10 +37,10 @@ class Proxy * performance benefits of curl while still supporting true streaming * through the StreamHandler. * - * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for non-streaming responses - * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses + * @param callable(RequestInterface, array): PromiseInterface $default Handler used for non-streaming responses + * @param callable(RequestInterface, array): PromiseInterface $streaming Handler used for streaming responses * - * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler. + * @return callable(RequestInterface, array): PromiseInterface Returns the composed handler. */ public static function wrapStreaming(callable $default, callable $streaming): callable { diff --git a/lib/guzzlehttp/guzzle/src/Handler/StreamHandler.php b/lib/guzzlehttp/guzzle/src/Handler/StreamHandler.php index 61632f564..f24921f47 100644 --- a/lib/guzzlehttp/guzzle/src/Handler/StreamHandler.php +++ b/lib/guzzlehttp/guzzle/src/Handler/StreamHandler.php @@ -40,6 +40,12 @@ class StreamHandler \usleep($options['delay'] * 1000); } + $protocolVersion = $request->getProtocolVersion(); + + if ('1.0' !== $protocolVersion && '1.1' !== $protocolVersion) { + throw new ConnectException(sprintf('HTTP/%s is not supported by the stream handler.', $protocolVersion), $request); + } + $startTime = isset($options['on_stats']) ? Utils::currentTime() : null; try { @@ -47,8 +53,14 @@ class StreamHandler $request = $request->withoutHeader('Expect'); // Append a content-length header if body size is zero to match - // cURL's behavior. - if (0 === $request->getBody()->getSize()) { + // the behavior of `CurlHandler` + if ( + ( + 0 === \strcasecmp('PUT', $request->getMethod()) + || 0 === \strcasecmp('POST', $request->getMethod()) + ) + && 0 === $request->getBody()->getSize() + ) { $request = $request->withHeader('Content-Length', '0'); } @@ -83,8 +95,8 @@ class StreamHandler array $options, RequestInterface $request, ?float $startTime, - ResponseInterface $response = null, - \Throwable $error = null + ?ResponseInterface $response = null, + ?\Throwable $error = null ): void { if (isset($options['on_stats'])) { $stats = new TransferStats($request, $response, Utils::currentTime() - $startTime, $error, []); @@ -273,7 +285,7 @@ class StreamHandler // HTTP/1.1 streams using the PHP stream wrapper require a // Connection: close header - if ($request->getProtocolVersion() == '1.1' + if ($request->getProtocolVersion() === '1.1' && !$request->hasHeader('Connection') ) { $request = $request->withHeader('Connection', 'close'); @@ -321,8 +333,15 @@ class StreamHandler ); return $this->createResource( - function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) { + function () use ($uri, $contextResource, $context, $options, $request) { $resource = @\fopen((string) $uri, 'r', false, $contextResource); + + // See https://wiki.php.net/rfc/deprecations_php_8_5#deprecate_the_http_response_header_predefined_variable + if (function_exists('http_get_last_response_headers')) { + /** @var array|null */ + $http_response_header = \http_get_last_response_headers(); + } + $this->lastHeaders = $http_response_header ?? []; if (false === $resource) { diff --git a/lib/guzzlehttp/guzzle/src/HandlerStack.php b/lib/guzzlehttp/guzzle/src/HandlerStack.php index 6cb12f07a..03f9a18ff 100644 --- a/lib/guzzlehttp/guzzle/src/HandlerStack.php +++ b/lib/guzzlehttp/guzzle/src/HandlerStack.php @@ -44,7 +44,7 @@ class HandlerStack * handler is provided, the best handler for your * system will be utilized. */ - public static function create(callable $handler = null): self + public static function create(?callable $handler = null): self { $stack = new self($handler ?: Utils::chooseHandler()); $stack->push(Middleware::httpErrors(), 'http_errors'); @@ -58,7 +58,7 @@ class HandlerStack /** * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler. */ - public function __construct(callable $handler = null) + public function __construct(?callable $handler = null) { $this->handler = $handler; } @@ -131,7 +131,7 @@ class HandlerStack * @param callable(callable): callable $middleware Middleware function * @param string $name Name to register for this middleware. */ - public function unshift(callable $middleware, string $name = null): void + public function unshift(callable $middleware, ?string $name = null): void { \array_unshift($this->stack, [$middleware, $name]); $this->cached = null; diff --git a/lib/guzzlehttp/guzzle/src/MessageFormatter.php b/lib/guzzlehttp/guzzle/src/MessageFormatter.php index 04e9eb37a..9b77eee83 100644 --- a/lib/guzzlehttp/guzzle/src/MessageFormatter.php +++ b/lib/guzzlehttp/guzzle/src/MessageFormatter.php @@ -68,7 +68,7 @@ class MessageFormatter implements MessageFormatterInterface * @param ResponseInterface|null $response Response that was received * @param \Throwable|null $error Exception that was received */ - public function format(RequestInterface $request, ResponseInterface $response = null, \Throwable $error = null): string + public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string { $cache = []; diff --git a/lib/guzzlehttp/guzzle/src/MessageFormatterInterface.php b/lib/guzzlehttp/guzzle/src/MessageFormatterInterface.php index 47934614a..a39ac248e 100644 --- a/lib/guzzlehttp/guzzle/src/MessageFormatterInterface.php +++ b/lib/guzzlehttp/guzzle/src/MessageFormatterInterface.php @@ -14,5 +14,5 @@ interface MessageFormatterInterface * @param ResponseInterface|null $response Response that was received * @param \Throwable|null $error Exception that was received */ - public function format(RequestInterface $request, ResponseInterface $response = null, \Throwable $error = null): string; + public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string; } diff --git a/lib/guzzlehttp/guzzle/src/Middleware.php b/lib/guzzlehttp/guzzle/src/Middleware.php index 7e3eb6b3a..9901da44a 100644 --- a/lib/guzzlehttp/guzzle/src/Middleware.php +++ b/lib/guzzlehttp/guzzle/src/Middleware.php @@ -55,7 +55,7 @@ final class Middleware * * @return callable(callable): callable Returns a function that accepts the next handler. */ - public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable + public static function httpErrors(?BodySummarizerInterface $bodySummarizer = null): callable { return static function (callable $handler) use ($bodySummarizer): callable { return static function ($request, array $options) use ($handler, $bodySummarizer) { @@ -132,7 +132,7 @@ final class Middleware * * @return callable Returns a function that accepts the next handler. */ - public static function tap(callable $before = null, callable $after = null): callable + public static function tap(?callable $before = null, ?callable $after = null): callable { return static function (callable $handler) use ($before, $after): callable { return static function (RequestInterface $request, array $options) use ($handler, $before, $after) { @@ -176,7 +176,7 @@ final class Middleware * * @return callable Returns a function that accepts the next handler. */ - public static function retry(callable $decider, callable $delay = null): callable + public static function retry(callable $decider, ?callable $delay = null): callable { return static function (callable $handler) use ($decider, $delay): RetryMiddleware { return new RetryMiddleware($decider, $handler, $delay); @@ -187,12 +187,12 @@ final class Middleware * Middleware that logs requests, responses, and errors using a message * formatter. * - * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests. - * * @param LoggerInterface $logger Logs messages. * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings. * @param string $logLevel Level at which to log requests. * + * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests. + * * @return callable Returns a function that accepts the next handler. */ public static function log(LoggerInterface $logger, $formatter, string $logLevel = 'info'): callable diff --git a/lib/guzzlehttp/guzzle/src/Pool.php b/lib/guzzlehttp/guzzle/src/Pool.php index 6277c61fb..ddc304bb1 100644 --- a/lib/guzzlehttp/guzzle/src/Pool.php +++ b/lib/guzzlehttp/guzzle/src/Pool.php @@ -86,7 +86,7 @@ class Pool implements PromisorInterface * @param ClientInterface $client Client used to send the requests * @param array|\Iterator $requests Requests to send concurrently. * @param array $options Passes through the options available in - * {@see \GuzzleHttp\Pool::__construct} + * {@see Pool::__construct} * * @return array Returns an array containing the response or an exception * in the same order that the requests were sent. diff --git a/lib/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/lib/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php index 0a8de8128..7dde6c5f4 100644 --- a/lib/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +++ b/lib/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php @@ -76,8 +76,8 @@ class PrepareBodyMiddleware $expect = $options['expect'] ?? null; - // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0 - if ($expect === false || $request->getProtocolVersion() < 1.1) { + // Return if disabled or using HTTP/1.0 + if ($expect === false || $request->getProtocolVersion() === '1.0') { return; } diff --git a/lib/guzzlehttp/guzzle/src/RequestOptions.php b/lib/guzzlehttp/guzzle/src/RequestOptions.php index a38768c0c..84a3500e4 100644 --- a/lib/guzzlehttp/guzzle/src/RequestOptions.php +++ b/lib/guzzlehttp/guzzle/src/RequestOptions.php @@ -61,7 +61,7 @@ final class RequestOptions * Specifies whether or not cookies are used in a request or what cookie * jar to use or what cookies to send. This option only works if your * handler has the `cookie` middleware. Valid values are `false` and - * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}. + * an instance of {@see Cookie\CookieJarInterface}. */ public const COOKIES = 'cookies'; diff --git a/lib/guzzlehttp/guzzle/src/RetryMiddleware.php b/lib/guzzlehttp/guzzle/src/RetryMiddleware.php index 8f4d93ac4..65f49cb75 100644 --- a/lib/guzzlehttp/guzzle/src/RetryMiddleware.php +++ b/lib/guzzlehttp/guzzle/src/RetryMiddleware.php @@ -40,7 +40,7 @@ class RetryMiddleware * and returns the number of * milliseconds to delay. */ - public function __construct(callable $decider, callable $nextHandler, callable $delay = null) + public function __construct(callable $decider, callable $nextHandler, ?callable $delay = null) { $this->decider = $decider; $this->nextHandler = $nextHandler; @@ -110,7 +110,7 @@ class RetryMiddleware }; } - private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface + private function doRetry(RequestInterface $request, array $options, ?ResponseInterface $response = null): PromiseInterface { $options['delay'] = ($this->delay)(++$options['retries'], $response, $request); diff --git a/lib/guzzlehttp/guzzle/src/TransferStats.php b/lib/guzzlehttp/guzzle/src/TransferStats.php index 2ce9e38f2..93fa334c8 100644 --- a/lib/guzzlehttp/guzzle/src/TransferStats.php +++ b/lib/guzzlehttp/guzzle/src/TransferStats.php @@ -46,8 +46,8 @@ final class TransferStats */ public function __construct( RequestInterface $request, - ResponseInterface $response = null, - float $transferTime = null, + ?ResponseInterface $response = null, + ?float $transferTime = null, $handlerErrorData = null, array $handlerStats = [] ) { diff --git a/lib/guzzlehttp/guzzle/src/Utils.php b/lib/guzzlehttp/guzzle/src/Utils.php index 93d6d39cd..c6a5893dd 100644 --- a/lib/guzzlehttp/guzzle/src/Utils.php +++ b/lib/guzzlehttp/guzzle/src/Utils.php @@ -71,7 +71,7 @@ final class Utils return \STDOUT; } - return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w'); + return Psr7\Utils::tryFopen('php://output', 'w'); } /** @@ -79,7 +79,7 @@ final class Utils * * The returned handler is not wrapped by any default middlewares. * - * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. + * @return callable(\Psr\Http\Message\RequestInterface, array): Promise\PromiseInterface Returns the best handler for the given system. * * @throws \RuntimeException if no viable Handler is available. */ @@ -87,7 +87,7 @@ final class Utils { $handler = null; - if (\defined('CURLOPT_CUSTOMREQUEST')) { + if (\defined('CURLOPT_CUSTOMREQUEST') && \function_exists('curl_version') && version_compare(curl_version()['version'], '7.21.2') >= 0) { if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) { $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler()); } elseif (\function_exists('curl_exec')) { diff --git a/lib/guzzlehttp/guzzle/src/functions.php b/lib/guzzlehttp/guzzle/src/functions.php index 5edc66ab1..9ab4b9649 100644 --- a/lib/guzzlehttp/guzzle/src/functions.php +++ b/lib/guzzlehttp/guzzle/src/functions.php @@ -50,7 +50,7 @@ function debug_resource($value = null) * * The returned handler is not wrapped by any default middlewares. * - * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system. + * @return callable(\Psr\Http\Message\RequestInterface, array): Promise\PromiseInterface Returns the best handler for the given system. * * @throws \RuntimeException if no viable Handler is available. * diff --git a/lib/guzzlehttp/promises/CHANGELOG.md b/lib/guzzlehttp/promises/CHANGELOG.md index c73afb903..7df9c0ae6 100644 --- a/lib/guzzlehttp/promises/CHANGELOG.md +++ b/lib/guzzlehttp/promises/CHANGELOG.md @@ -1,6 +1,41 @@ # CHANGELOG +## 2.3.0 - 2025-08-22 + +### Added + +- PHP 8.5 support + + +## 2.2.0 - 2025-03-27 + +### Fixed + +- Revert "Allow an empty EachPromise to be resolved by running the queue" + + +## 2.1.0 - 2025-03-27 + +### Added + +- Allow an empty EachPromise to be resolved by running the queue + + +## 2.0.4 - 2024-10-17 + +### Fixed + +- Once settled, don't allow further rejection of additional promises + + +## 2.0.3 - 2024-07-18 + +### Changed + +- PHP 8.4 support + + ## 2.0.2 - 2023-12-03 ### Changed diff --git a/lib/guzzlehttp/promises/README.md b/lib/guzzlehttp/promises/README.md index a32d3d29c..493a9315b 100644 --- a/lib/guzzlehttp/promises/README.md +++ b/lib/guzzlehttp/promises/README.md @@ -38,10 +38,10 @@ composer require guzzlehttp/promises ## Version Guidance -| Version | Status | PHP Version | -|---------|------------------------|--------------| -| 1.x | Bug and security fixes | >=5.5,<8.3 | -| 2.x | Latest | >=7.2.5,<8.4 | +| Version | Status | PHP Version | +|---------|---------------------|--------------| +| 1.x | Security fixes only | >=5.5,<8.3 | +| 2.x | Latest | >=7.2.5,<8.6 | ## Quick Start diff --git a/lib/guzzlehttp/promises/composer.json b/lib/guzzlehttp/promises/composer.json index 6c5bdd662..9d6e85678 100644 --- a/lib/guzzlehttp/promises/composer.json +++ b/lib/guzzlehttp/promises/composer.json @@ -30,7 +30,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "autoload": { "psr-4": { diff --git a/lib/guzzlehttp/promises/src/Coroutine.php b/lib/guzzlehttp/promises/src/Coroutine.php index 0b5b9c0a4..0da022834 100644 --- a/lib/guzzlehttp/promises/src/Coroutine.php +++ b/lib/guzzlehttp/promises/src/Coroutine.php @@ -84,8 +84,8 @@ final class Coroutine implements PromiseInterface } public function then( - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { return $this->result->then($onFulfilled, $onRejected); } diff --git a/lib/guzzlehttp/promises/src/Each.php b/lib/guzzlehttp/promises/src/Each.php index c09d23c60..dd72c8310 100644 --- a/lib/guzzlehttp/promises/src/Each.php +++ b/lib/guzzlehttp/promises/src/Each.php @@ -23,8 +23,8 @@ final class Each */ public static function of( $iterable, - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { return (new EachPromise($iterable, [ 'fulfilled' => $onFulfilled, @@ -46,8 +46,8 @@ final class Each public static function ofLimit( $iterable, $concurrency, - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { return (new EachPromise($iterable, [ 'fulfilled' => $onFulfilled, @@ -67,7 +67,7 @@ final class Each public static function ofLimitAll( $iterable, $concurrency, - callable $onFulfilled = null + ?callable $onFulfilled = null ): PromiseInterface { return self::ofLimit( $iterable, diff --git a/lib/guzzlehttp/promises/src/FulfilledPromise.php b/lib/guzzlehttp/promises/src/FulfilledPromise.php index ab7129659..727ec315c 100644 --- a/lib/guzzlehttp/promises/src/FulfilledPromise.php +++ b/lib/guzzlehttp/promises/src/FulfilledPromise.php @@ -31,8 +31,8 @@ class FulfilledPromise implements PromiseInterface } public function then( - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { // Return itself if there is no onFulfilled function. if (!$onFulfilled) { diff --git a/lib/guzzlehttp/promises/src/Promise.php b/lib/guzzlehttp/promises/src/Promise.php index 1b07bdc9a..c0c5be2c0 100644 --- a/lib/guzzlehttp/promises/src/Promise.php +++ b/lib/guzzlehttp/promises/src/Promise.php @@ -25,16 +25,16 @@ class Promise implements PromiseInterface * @param callable $cancelFn Fn that when invoked cancels the promise. */ public function __construct( - callable $waitFn = null, - callable $cancelFn = null + ?callable $waitFn = null, + ?callable $cancelFn = null ) { $this->waitFn = $waitFn; $this->cancelFn = $cancelFn; } public function then( - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { if ($this->state === self::PENDING) { $p = new Promise(null, [$this, 'cancel']); diff --git a/lib/guzzlehttp/promises/src/PromiseInterface.php b/lib/guzzlehttp/promises/src/PromiseInterface.php index 2824802bb..c11721e4d 100644 --- a/lib/guzzlehttp/promises/src/PromiseInterface.php +++ b/lib/guzzlehttp/promises/src/PromiseInterface.php @@ -27,8 +27,8 @@ interface PromiseInterface * @param callable $onRejected Invoked when the promise is rejected. */ public function then( - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface; /** diff --git a/lib/guzzlehttp/promises/src/RejectedPromise.php b/lib/guzzlehttp/promises/src/RejectedPromise.php index d947da1f5..1ebf0b2a6 100644 --- a/lib/guzzlehttp/promises/src/RejectedPromise.php +++ b/lib/guzzlehttp/promises/src/RejectedPromise.php @@ -31,8 +31,8 @@ class RejectedPromise implements PromiseInterface } public function then( - callable $onFulfilled = null, - callable $onRejected = null + ?callable $onFulfilled = null, + ?callable $onRejected = null ): PromiseInterface { // If there's no onRejected callback then just return self. if (!$onRejected) { diff --git a/lib/guzzlehttp/promises/src/RejectionException.php b/lib/guzzlehttp/promises/src/RejectionException.php index 72a81ba20..47dca8624 100644 --- a/lib/guzzlehttp/promises/src/RejectionException.php +++ b/lib/guzzlehttp/promises/src/RejectionException.php @@ -18,7 +18,7 @@ class RejectionException extends \RuntimeException * @param mixed $reason Rejection reason. * @param string|null $description Optional description. */ - public function __construct($reason, string $description = null) + public function __construct($reason, ?string $description = null) { $this->reason = $reason; diff --git a/lib/guzzlehttp/promises/src/Utils.php b/lib/guzzlehttp/promises/src/Utils.php index e1570d727..3193d2a12 100644 --- a/lib/guzzlehttp/promises/src/Utils.php +++ b/lib/guzzlehttp/promises/src/Utils.php @@ -21,7 +21,7 @@ final class Utils * * @param TaskQueueInterface|null $assign Optionally specify a new queue instance. */ - public static function queue(TaskQueueInterface $assign = null): TaskQueueInterface + public static function queue(?TaskQueueInterface $assign = null): TaskQueueInterface { static $queue; @@ -144,7 +144,9 @@ final class Utils $results[$idx] = $value; }, function ($reason, $idx, Promise $aggregate): void { - $aggregate->reject($reason); + if (Is::pending($aggregate)) { + $aggregate->reject($reason); + } } )->then(function () use (&$results) { ksort($results); diff --git a/lib/guzzlehttp/psr7/CHANGELOG.md b/lib/guzzlehttp/psr7/CHANGELOG.md index fe3eda70a..4a2a12194 100644 --- a/lib/guzzlehttp/psr7/CHANGELOG.md +++ b/lib/guzzlehttp/psr7/CHANGELOG.md @@ -5,6 +5,43 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 2.8.0 - 2025-08-23 + +### Added + +- Allow empty lists as header values + +### Changed + +- PHP 8.5 support + +## 2.7.1 - 2025-03-27 + +### Fixed + +- Fixed uppercase IPv6 addresses in URI + +### Changed + +- Improve uploaded file error message + +## 2.7.0 - 2024-07-18 + +### Added + +- Add `Utils::redactUserInfo()` method +- Add ability to encode bools as ints in `Query::build` + +## 2.6.3 - 2024-07-18 + +### Fixed + +- Make `StreamWrapper::stream_stat()` return `false` if inner stream's size is `null` + +### Changed + +- PHP 8.4 support + ## 2.6.2 - 2023-12-03 ### Fixed diff --git a/lib/guzzlehttp/psr7/README.md b/lib/guzzlehttp/psr7/README.md index 850fa9d70..24aad8605 100644 --- a/lib/guzzlehttp/psr7/README.md +++ b/lib/guzzlehttp/psr7/README.md @@ -24,8 +24,8 @@ composer require guzzlehttp/psr7 | Version | Status | PHP Version | |---------|---------------------|--------------| -| 1.x | Security fixes only | >=5.4,<8.1 | -| 2.x | Latest | >=7.2.5,<8.4 | +| 1.x | EOL (2024-06-30) | >=5.4,<8.2 | +| 2.x | Latest | >=7.2.5,<8.6 | ## AppendStream @@ -436,7 +436,7 @@ will be parsed into `['foo[a]' => '1', 'foo[b]' => '2'])`. ## `GuzzleHttp\Psr7\Query::build` -`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986): string` +`public static function build(array $params, int|false $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string` Build a query string from an array of key value pairs. @@ -498,11 +498,18 @@ a message. ## `GuzzleHttp\Psr7\Utils::readLine` -`public static function readLine(StreamInterface $stream, int $maxLength = null): string` +`public static function readLine(StreamInterface $stream, ?int $maxLength = null): string` Read a line from the stream up to the maximum allowed buffer length. +## `GuzzleHttp\Psr7\Utils::redactUserInfo` + +`public static function redactUserInfo(UriInterface $uri): UriInterface` + +Redact the password in the user info part of a URI. + + ## `GuzzleHttp\Psr7\Utils::streamFor` `public static function streamFor(resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource = '', array $options = []): StreamInterface` @@ -674,7 +681,7 @@ termed a relative-path reference. ### `GuzzleHttp\Psr7\Uri::isSameDocumentReference` -`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool` +`public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool` Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its fragment component, identical to the base URI. When no base URI is given, only an empty URI reference diff --git a/lib/guzzlehttp/psr7/composer.json b/lib/guzzlehttp/psr7/composer.json index 70293fc40..96098f536 100644 --- a/lib/guzzlehttp/psr7/composer.json +++ b/lib/guzzlehttp/psr7/composer.json @@ -61,8 +61,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" diff --git a/lib/guzzlehttp/psr7/src/CachingStream.php b/lib/guzzlehttp/psr7/src/CachingStream.php index f34722cff..7e4554d5c 100644 --- a/lib/guzzlehttp/psr7/src/CachingStream.php +++ b/lib/guzzlehttp/psr7/src/CachingStream.php @@ -33,7 +33,7 @@ final class CachingStream implements StreamInterface */ public function __construct( StreamInterface $stream, - StreamInterface $target = null + ?StreamInterface $target = null ) { $this->remoteStream = $stream; $this->stream = $target ?: new Stream(Utils::tryFopen('php://temp', 'r+')); diff --git a/lib/guzzlehttp/psr7/src/HttpFactory.php b/lib/guzzlehttp/psr7/src/HttpFactory.php index 73d17e337..3ef15103a 100644 --- a/lib/guzzlehttp/psr7/src/HttpFactory.php +++ b/lib/guzzlehttp/psr7/src/HttpFactory.php @@ -27,10 +27,10 @@ final class HttpFactory implements RequestFactoryInterface, ResponseFactoryInter { public function createUploadedFile( StreamInterface $stream, - int $size = null, + ?int $size = null, int $error = \UPLOAD_ERR_OK, - string $clientFilename = null, - string $clientMediaType = null + ?string $clientFilename = null, + ?string $clientMediaType = null ): UploadedFileInterface { if ($size === null) { $size = $stream->getSize(); diff --git a/lib/guzzlehttp/psr7/src/MessageTrait.php b/lib/guzzlehttp/psr7/src/MessageTrait.php index 65dbc4ba0..c15ee63fc 100644 --- a/lib/guzzlehttp/psr7/src/MessageTrait.php +++ b/lib/guzzlehttp/psr7/src/MessageTrait.php @@ -174,10 +174,6 @@ trait MessageTrait return $this->trimAndValidateHeaderValues([$value]); } - if (count($value) === 0) { - throw new \InvalidArgumentException('Header value can not be an empty array.'); - } - return $this->trimAndValidateHeaderValues($value); } diff --git a/lib/guzzlehttp/psr7/src/MultipartStream.php b/lib/guzzlehttp/psr7/src/MultipartStream.php index d23fba8a3..43d718f65 100644 --- a/lib/guzzlehttp/psr7/src/MultipartStream.php +++ b/lib/guzzlehttp/psr7/src/MultipartStream.php @@ -32,7 +32,7 @@ final class MultipartStream implements StreamInterface * * @throws \InvalidArgumentException */ - public function __construct(array $elements = [], string $boundary = null) + public function __construct(array $elements = [], ?string $boundary = null) { $this->boundary = $boundary ?: bin2hex(random_bytes(20)); $this->stream = $this->createStream($elements); diff --git a/lib/guzzlehttp/psr7/src/Query.php b/lib/guzzlehttp/psr7/src/Query.php index 8b9492797..ccf867a0b 100644 --- a/lib/guzzlehttp/psr7/src/Query.php +++ b/lib/guzzlehttp/psr7/src/Query.php @@ -63,12 +63,15 @@ final class Query * string. This function does not modify the provided keys when an array is * encountered (like `http_build_query()` would). * - * @param array $params Query string parameters. - * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 - * to encode using RFC3986, or PHP_QUERY_RFC1738 - * to encode using RFC1738. + * @param array $params Query string parameters. + * @param int|false $encoding Set to false to not encode, + * PHP_QUERY_RFC3986 to encode using + * RFC3986, or PHP_QUERY_RFC1738 to + * encode using RFC1738. + * @param bool $treatBoolsAsInts Set to true to encode as 0/1, and + * false as false/true. */ - public static function build(array $params, $encoding = PHP_QUERY_RFC3986): string + public static function build(array $params, $encoding = PHP_QUERY_RFC3986, bool $treatBoolsAsInts = true): string { if (!$params) { return ''; @@ -86,12 +89,14 @@ final class Query throw new \InvalidArgumentException('Invalid type'); } + $castBool = $treatBoolsAsInts ? static function ($v) { return (int) $v; } : static function ($v) { return $v ? 'true' : 'false'; }; + $qs = ''; foreach ($params as $k => $v) { $k = $encoder((string) $k); if (!is_array($v)) { $qs .= $k; - $v = is_bool($v) ? (int) $v : $v; + $v = is_bool($v) ? $castBool($v) : $v; if ($v !== null) { $qs .= '='.$encoder((string) $v); } @@ -99,7 +104,7 @@ final class Query } else { foreach ($v as $vv) { $qs .= $k; - $vv = is_bool($vv) ? (int) $vv : $vv; + $vv = is_bool($vv) ? $castBool($vv) : $vv; if ($vv !== null) { $qs .= '='.$encoder((string) $vv); } diff --git a/lib/guzzlehttp/psr7/src/Response.php b/lib/guzzlehttp/psr7/src/Response.php index 00f16e2d9..34e612fda 100644 --- a/lib/guzzlehttp/psr7/src/Response.php +++ b/lib/guzzlehttp/psr7/src/Response.php @@ -96,7 +96,7 @@ class Response implements ResponseInterface array $headers = [], $body = null, string $version = '1.1', - string $reason = null + ?string $reason = null ) { $this->assertStatusCodeRange($status); diff --git a/lib/guzzlehttp/psr7/src/StreamWrapper.php b/lib/guzzlehttp/psr7/src/StreamWrapper.php index ae8538814..77b04d747 100644 --- a/lib/guzzlehttp/psr7/src/StreamWrapper.php +++ b/lib/guzzlehttp/psr7/src/StreamWrapper.php @@ -69,7 +69,7 @@ final class StreamWrapper } } - public function stream_open(string $path, string $mode, int $options, string &$opened_path = null): bool + public function stream_open(string $path, string $mode, int $options, ?string &$opened_path = null): bool { $options = stream_context_get_options($this->context); @@ -136,10 +136,14 @@ final class StreamWrapper * ctime: int, * blksize: int, * blocks: int - * } + * }|false */ - public function stream_stat(): array + public function stream_stat() { + if ($this->stream->getSize() === null) { + return false; + } + static $modeMap = [ 'r' => 33060, 'rb' => 33060, diff --git a/lib/guzzlehttp/psr7/src/UploadedFile.php b/lib/guzzlehttp/psr7/src/UploadedFile.php index b26719937..d9b779f13 100644 --- a/lib/guzzlehttp/psr7/src/UploadedFile.php +++ b/lib/guzzlehttp/psr7/src/UploadedFile.php @@ -11,15 +11,15 @@ use RuntimeException; class UploadedFile implements UploadedFileInterface { - private const ERRORS = [ - UPLOAD_ERR_OK, - UPLOAD_ERR_INI_SIZE, - UPLOAD_ERR_FORM_SIZE, - UPLOAD_ERR_PARTIAL, - UPLOAD_ERR_NO_FILE, - UPLOAD_ERR_NO_TMP_DIR, - UPLOAD_ERR_CANT_WRITE, - UPLOAD_ERR_EXTENSION, + private const ERROR_MAP = [ + UPLOAD_ERR_OK => 'UPLOAD_ERR_OK', + UPLOAD_ERR_INI_SIZE => 'UPLOAD_ERR_INI_SIZE', + UPLOAD_ERR_FORM_SIZE => 'UPLOAD_ERR_FORM_SIZE', + UPLOAD_ERR_PARTIAL => 'UPLOAD_ERR_PARTIAL', + UPLOAD_ERR_NO_FILE => 'UPLOAD_ERR_NO_FILE', + UPLOAD_ERR_NO_TMP_DIR => 'UPLOAD_ERR_NO_TMP_DIR', + UPLOAD_ERR_CANT_WRITE => 'UPLOAD_ERR_CANT_WRITE', + UPLOAD_ERR_EXTENSION => 'UPLOAD_ERR_EXTENSION', ]; /** @@ -64,8 +64,8 @@ class UploadedFile implements UploadedFileInterface $streamOrFile, ?int $size, int $errorStatus, - string $clientFilename = null, - string $clientMediaType = null + ?string $clientFilename = null, + ?string $clientMediaType = null ) { $this->setError($errorStatus); $this->size = $size; @@ -104,7 +104,7 @@ class UploadedFile implements UploadedFileInterface */ private function setError(int $error): void { - if (false === in_array($error, UploadedFile::ERRORS, true)) { + if (!isset(UploadedFile::ERROR_MAP[$error])) { throw new InvalidArgumentException( 'Invalid error status for UploadedFile' ); @@ -137,7 +137,7 @@ class UploadedFile implements UploadedFileInterface private function validateActive(): void { if (false === $this->isOk()) { - throw new RuntimeException('Cannot retrieve stream due to upload error'); + throw new RuntimeException(\sprintf('Cannot retrieve stream due to upload error (%s)', self::ERROR_MAP[$this->error])); } if ($this->isMoved()) { diff --git a/lib/guzzlehttp/psr7/src/Uri.php b/lib/guzzlehttp/psr7/src/Uri.php index f1feee871..a7cdfb003 100644 --- a/lib/guzzlehttp/psr7/src/Uri.php +++ b/lib/guzzlehttp/psr7/src/Uri.php @@ -107,7 +107,7 @@ class Uri implements UriInterface, \JsonSerializable { // If IPv6 $prefix = ''; - if (preg_match('%^(.*://\[[0-9:a-f]+\])(.*?)$%', $url, $matches)) { + if (preg_match('%^(.*://\[[0-9:a-fA-F]+\])(.*?)$%', $url, $matches)) { /** @var array{0:string, 1:string, 2:string} $matches */ $prefix = $matches[1]; $url = $matches[2]; @@ -279,7 +279,7 @@ class Uri implements UriInterface, \JsonSerializable * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.4 */ - public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool + public static function isSameDocumentReference(UriInterface $uri, ?UriInterface $base = null): bool { if ($base !== null) { $uri = UriResolver::resolve($base, $uri); diff --git a/lib/guzzlehttp/psr7/src/Utils.php b/lib/guzzlehttp/psr7/src/Utils.php index bf5ea9dba..5451e3dcd 100644 --- a/lib/guzzlehttp/psr7/src/Utils.php +++ b/lib/guzzlehttp/psr7/src/Utils.php @@ -231,7 +231,7 @@ final class Utils * @param StreamInterface $stream Stream to read from * @param int|null $maxLength Maximum buffer length */ - public static function readLine(StreamInterface $stream, int $maxLength = null): string + public static function readLine(StreamInterface $stream, ?int $maxLength = null): string { $buffer = ''; $size = 0; @@ -250,6 +250,20 @@ final class Utils return $buffer; } + /** + * Redact the password in the user info part of a URI. + */ + public static function redactUserInfo(UriInterface $uri): UriInterface + { + $userInfo = $uri->getUserInfo(); + + if (false !== ($pos = \strpos($userInfo, ':'))) { + return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); + } + + return $uri; + } + /** * Create a new stream based on the input type. * @@ -383,7 +397,7 @@ final class Utils restore_error_handler(); if ($ex) { - /** @var $ex \RuntimeException */ + /** @var \RuntimeException $ex */ throw $ex; } @@ -430,7 +444,7 @@ final class Utils restore_error_handler(); if ($ex) { - /** @var $ex \RuntimeException */ + /** @var \RuntimeException $ex */ throw $ex; } diff --git a/lib/league/oauth2-client/LICENSE b/lib/league/oauth2-client/LICENSE index 7dfa39b7c..9c8958afc 100644 --- a/lib/league/oauth2-client/LICENSE +++ b/lib/league/oauth2-client/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2020 Alex Bilbie +Copyright (c) 2013-2023 Alex Bilbie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/league/oauth2-client/README.md b/lib/league/oauth2-client/README.md index cbb449d48..05c8d457e 100644 --- a/lib/league/oauth2-client/README.md +++ b/lib/league/oauth2-client/README.md @@ -24,14 +24,16 @@ This package is compliant with [PSR-1][], [PSR-2][], [PSR-4][], and [PSR-7][]. I We support the following versions of PHP: +* PHP 8.5 +* PHP 8.4 +* PHP 8.3 +* PHP 8.2 * PHP 8.1 * PHP 8.0 * PHP 7.4 * PHP 7.3 * PHP 7.2 * PHP 7.1 -* PHP 7.0 -* PHP 5.6 ## Provider Clients diff --git a/lib/league/oauth2-client/composer.json b/lib/league/oauth2-client/composer.json index 59201f48f..5dcc58355 100644 --- a/lib/league/oauth2-client/composer.json +++ b/lib/league/oauth2-client/composer.json @@ -6,15 +6,15 @@ "sort-packages": true }, "require": { - "php": "^5.6 || ^7.0 || ^8.0", - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1 || ^2 || ^9.99" + "php": "^7.1 || >=8.0.0 <8.6.0", + "ext-json": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5" }, "require-dev": { "mockery/mockery": "^1.3.5", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpunit/phpunit": "^5.7 || ^6.0 || ^9.5", - "squizlabs/php_codesniffer": "^2.3 || ^3.0" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.11" }, "keywords": [ "oauth", @@ -49,10 +49,5 @@ "psr-4": { "League\\OAuth2\\Client\\Test\\": "test/src/" } - }, - "extra": { - "branch-alias": { - "dev-2.x": "2.0.x-dev" - } } } diff --git a/lib/league/oauth2-client/src/Provider/AbstractProvider.php b/lib/league/oauth2-client/src/Provider/AbstractProvider.php index 293a54d6e..eb6241764 100644 --- a/lib/league/oauth2-client/src/Provider/AbstractProvider.php +++ b/lib/league/oauth2-client/src/Provider/AbstractProvider.php @@ -17,6 +17,7 @@ namespace League\OAuth2\Client\Provider; use GuzzleHttp\Client as HttpClient; use GuzzleHttp\ClientInterface as HttpClientInterface; use GuzzleHttp\Exception\BadResponseException; +use GuzzleHttp\Exception\GuzzleException; use InvalidArgumentException; use League\OAuth2\Client\Grant\AbstractGrant; use League\OAuth2\Client\Grant\GrantFactory; @@ -405,6 +406,7 @@ abstract class AbstractProvider * * @param array $options * @return array Authorization parameters + * @throws InvalidArgumentException */ protected function getAuthorizationParameters(array $options) { @@ -476,6 +478,7 @@ abstract class AbstractProvider * * @param array $options * @return string Authorization URL + * @throws InvalidArgumentException */ public function getAuthorizationUrl(array $options = []) { @@ -492,10 +495,11 @@ abstract class AbstractProvider * @param array $options * @param callable|null $redirectHandler * @return mixed + * @throws InvalidArgumentException */ public function authorize( array $options = [], - callable $redirectHandler = null + ?callable $redirectHandler = null ) { $url = $this->getAuthorizationUrl($options); if ($redirectHandler) { @@ -613,13 +617,20 @@ abstract class AbstractProvider * * @param mixed $grant * @param array $options - * @throws IdentityProviderException * @return AccessTokenInterface + * @throws IdentityProviderException + * @throws UnexpectedValueException + * @throws GuzzleException */ public function getAccessToken($grant, array $options = []) { $grant = $this->verifyGrant($grant); + if (isset($options['scope']) && is_array($options['scope'])) { + $separator = $this->getScopeSeparator(); + $options['scope'] = implode($separator, $options['scope']); + } + $params = [ 'client_id' => $this->clientId, 'client_secret' => $this->clientSecret, @@ -700,6 +711,7 @@ abstract class AbstractProvider * * @param RequestInterface $request * @return ResponseInterface + * @throws GuzzleException */ public function getResponse(RequestInterface $request) { @@ -710,8 +722,10 @@ abstract class AbstractProvider * Sends a request and returns the parsed response. * * @param RequestInterface $request - * @throws IdentityProviderException * @return mixed + * @throws IdentityProviderException + * @throws UnexpectedValueException + * @throws GuzzleException */ public function getParsedResponse(RequestInterface $request) { @@ -757,7 +771,7 @@ abstract class AbstractProvider */ protected function getContentType(ResponseInterface $response) { - return join(';', (array) $response->getHeader('content-type')); + return implode(';', $response->getHeader('content-type')); } /** @@ -815,7 +829,7 @@ abstract class AbstractProvider * Custom mapping of expiration, etc should be done here. Always call the * parent method when overloading this method. * - * @param mixed $result + * @param array $result * @return array */ protected function prepareAccessTokenResponse(array $result) @@ -859,6 +873,9 @@ abstract class AbstractProvider * * @param AccessToken $token * @return ResourceOwnerInterface + * @throws IdentityProviderException + * @throws UnexpectedValueException + * @throws GuzzleException */ public function getResourceOwner(AccessToken $token) { @@ -872,6 +889,9 @@ abstract class AbstractProvider * * @param AccessToken $token * @return mixed + * @throws IdentityProviderException + * @throws UnexpectedValueException + * @throws GuzzleException */ protected function fetchResourceOwnerDetails(AccessToken $token) { diff --git a/lib/league/oauth2-client/src/Token/AccessToken.php b/lib/league/oauth2-client/src/Token/AccessToken.php index 81533c307..331b0ace6 100644 --- a/lib/league/oauth2-client/src/Token/AccessToken.php +++ b/lib/league/oauth2-client/src/Token/AccessToken.php @@ -22,7 +22,7 @@ use RuntimeException; * * @link http://tools.ietf.org/html/rfc6749#section-1.4 Access Token (RFC 6749, §1.4) */ -class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInterface +class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInterface, SettableRefreshTokenInterface { /** * @var string @@ -118,7 +118,7 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter } elseif (!empty($options['expires'])) { // Some providers supply the seconds until expiration rather than // the exact timestamp. Take a best guess at which we received. - $expires = $options['expires']; + $expires = (int) $options['expires']; if (!$this->isExpirationTimestamp($expires)) { $expires += $this->getTimeNow(); @@ -169,6 +169,14 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter return $this->refreshToken; } + /** + * @inheritdoc + */ + public function setRefreshToken($refreshToken) + { + $this->refreshToken = $refreshToken; + } + /** * @inheritdoc */ @@ -196,7 +204,7 @@ class AccessToken implements AccessTokenInterface, ResourceOwnerAccessTokenInter throw new RuntimeException('"expires" is not set on the token'); } - return $expires < time(); + return $expires < $this->getTimeNow(); } /** diff --git a/lib/league/oauth2-google/CHANGELOG.md b/lib/league/oauth2-google/CHANGELOG.md index d82a2ae17..d41761f51 100644 --- a/lib/league/oauth2-google/CHANGELOG.md +++ b/lib/league/oauth2-google/CHANGELOG.md @@ -1,5 +1,12 @@ OAuth 2.0 Google Provider Changelog + +## 4.1.0 - 2025-12-15 + +### Added + +- Added getEmailVerified(), isEmailTrustworthy() to user definition, #132 by @dt-thomas-durand + ## 4.0.1 - 2022-03-17 ### Changed diff --git a/lib/league/oauth2-google/README.md b/lib/league/oauth2-google/README.md index 38792d4af..e951f309b 100644 --- a/lib/league/oauth2-google/README.md +++ b/lib/league/oauth2-google/README.md @@ -1,6 +1,6 @@ # Google Provider for OAuth 2.0 Client -[![Build Status](https://img.shields.io/github/workflow/status/thephpleague/oauth2-google/test/main)](https://github.com/thephpleague/oauth2-google/actions/workflows/test.yaml) +[![Build Status](https://img.shields.io/github/actions/workflow/status/thephpleague/oauth2-google/ci.yml?branch=main)](https://github.com/thephpleague/oauth2-google/actions/workflows/ci.yml) [![Code Coverage](https://img.shields.io/codecov/c/gh/thephpleague/oauth2-google)](https://app.codecov.io/gh/thephpleague/oauth2-google) [![License](https://img.shields.io/packagist/l/league/oauth2-google)](https://github.com/thephpleague/oauth2-google/blob/main/LICENSE) [![Latest Stable Version](https://img.shields.io/packagist/v/league/oauth2-google)](https://packagist.org/packages/league/oauth2-google) @@ -22,6 +22,8 @@ The following versions of PHP are supported. * PHP 7.4 * PHP 8.0 * PHP 8.1 +* PHP 8.2 +* PHP 8.3 This package uses [OpenID Connect][openid-connect] to authenticate users with Google accounts. diff --git a/lib/league/oauth2-google/src/Provider/GoogleUser.php b/lib/league/oauth2-google/src/Provider/GoogleUser.php index d004e3c6d..58f0538d2 100644 --- a/lib/league/oauth2-google/src/Provider/GoogleUser.php +++ b/lib/league/oauth2-google/src/Provider/GoogleUser.php @@ -72,6 +72,36 @@ class GoogleUser implements ResourceOwnerInterface return $this->getResponseValue('email'); } + /** + * Get email_verified attribute. + * + * @return bool|null + */ + public function getEmailVerified(): ?bool + { + return $this->getResponseValue('email_verified'); + } + + /** + * Returns whether the email is trustable enough to be used for authentication purpose. + * + * @see https://developers.google.com/identity/gsi/web/guides/verify-google-id-token + */ + public function isEmailTrustworthy(): bool + { + $email = $this->getEmail(); + if (! $email) { + return false; + } + if ('@gmail.com' === substr($email, -10)) { + return true; + } + if ($this->getHostedDomain() && $this->getEmailVerified()) { + return true; + } + return false; + } + /** * Get hosted domain. * diff --git a/lib/league/uri-interfaces/Contracts/AuthorityInterface.php b/lib/league/uri-interfaces/Contracts/AuthorityInterface.php new file mode 100644 index 000000000..9c364f33e --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/AuthorityInterface.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use League\Uri\Exceptions\MissingFeature; +use League\Uri\Exceptions\SyntaxError; +use Stringable; + +interface AuthorityInterface extends UriComponentInterface +{ + /** + * Returns the host component of the authority. + */ + public function getHost(): ?string; + + /** + * Returns the port component of the authority. + */ + public function getPort(): ?int; + + /** + * Returns the user information component of the authority. + */ + public function getUserInfo(): ?string; + + /** + * Returns an associative array containing all the Authority components. + * + * The returned a hashmap similar to PHP's parse_url return value + * + * @link https://tools.ietf.org/html/rfc3986 + * + * @return array{user: ?string, pass : ?string, host: ?string, port: ?int} + */ + public function components(): array; + + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * A null value provided for the host is equivalent to removing the host + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + * @throws MissingFeature for component or transformations + * requiring IDN support when IDN support is not present + * or misconfigured. + */ + public function withHost(Stringable|string|null $host): self; + + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withPort(?int $port): self; + + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; a null value for the user is equivalent to removing user + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withUserInfo(Stringable|string|null $user, Stringable|string|null $password = null): self; +} diff --git a/lib/league/uri-interfaces/Contracts/Conditionable.php b/lib/league/uri-interfaces/Contracts/Conditionable.php new file mode 100644 index 000000000..385a78cc4 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/Conditionable.php @@ -0,0 +1,26 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +interface Conditionable +{ + /** + * Apply the callback if the given "condition" is (or resolves to) true. + * + * @param (callable(static): bool)|bool $condition + * @param callable(static): (static|null) $onSuccess + * @param ?callable(static): (static|null) $onFail + */ + public function when(callable|bool $condition, callable $onSuccess, ?callable $onFail = null): static; +} diff --git a/lib/league/uri-interfaces/Contracts/DataPathInterface.php b/lib/league/uri-interfaces/Contracts/DataPathInterface.php new file mode 100644 index 000000000..01f9c402a --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/DataPathInterface.php @@ -0,0 +1,95 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use SplFileObject; +use Stringable; + +interface DataPathInterface extends PathInterface +{ + /** + * Retrieve the data mime type associated to the URI. + * + * If no mimetype is present, this method MUST return the default mimetype 'text/plain'. + * + * @see http://tools.ietf.org/html/rfc2397#section-2 + */ + public function getMimeType(): string; + + /** + * Retrieve the parameters associated with the Mime Type of the URI. + * + * If no parameters is present, this method MUST return the default parameter 'charset=US-ASCII'. + * + * @see http://tools.ietf.org/html/rfc2397#section-2 + */ + public function getParameters(): string; + + /** + * Retrieve the mediatype associated with the URI. + * + * If no mediatype is present, this method MUST return the default parameter 'text/plain;charset=US-ASCII'. + * + * @see http://tools.ietf.org/html/rfc2397#section-3 + * + * @return string The URI scheme. + */ + public function getMediaType(): string; + + /** + * Retrieves the data string. + * + * Retrieves the data part of the path. If no data part is provided return + * an empty string + */ + public function getData(): string; + + /** + * Tells whether the data is binary safe encoded. + */ + public function isBinaryData(): bool; + + /** + * Save the data to a specific file. + */ + public function save(string $path, string $mode = 'w'): SplFileObject; + + /** + * Returns an instance where the data part is base64 encoded. + * + * This method MUST retain the state of the current instance, and return + * an instance where the data part is base64 encoded + */ + public function toBinary(): self; + + /** + * Returns an instance where the data part is url encoded following RFC3986 rules. + * + * This method MUST retain the state of the current instance, and return + * an instance where the data part is url encoded + */ + public function toAscii(): self; + + /** + * Return an instance with the specified mediatype parameters. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified mediatype parameters. + * + * Users must provide encoded characters. + * + * An empty parameters value is equivalent to removing the parameter. + */ + public function withParameters(Stringable|string $parameters): self; +} diff --git a/lib/league/uri-interfaces/Contracts/DomainHostInterface.php b/lib/league/uri-interfaces/Contracts/DomainHostInterface.php new file mode 100644 index 000000000..a2f1745f0 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/DomainHostInterface.php @@ -0,0 +1,125 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use BackedEnum; +use Countable; +use Iterator; +use IteratorAggregate; +use League\Uri\Exceptions\SyntaxError; +use Stringable; + +/** + * @extends IteratorAggregate + * + * @method bool isSubdomainOf(BackedEnum|Stringable|string|null $parentHost) Tells whether the current domain instance is a subdomain of the parent host. + * @method bool hasSubdomain(BackedEnum|Stringable|string|null $childHost) Tells whether the submitted host is a subdomain of the current instance. + * @method bool isSiblingOf(BackedEnum|Stringable|string|null $siblingHost) Tells whether the submitted host share the same parent domain as the current instance. + * @method static commonAncestorWith(BackedEnum|Stringable|string|null $other) Returns the common longest ancestor between 2 domain. The returned domain is empty if no ancestor is found + * @method static parentHost() Returns the current parent domain for the current instance. The returned domain is empty if no ancestor is found + * @method bool isEmpty() Tells whether the domain contains any label. + */ +interface DomainHostInterface extends Countable, HostInterface, IteratorAggregate +{ + /** + * Returns the labels total number. + */ + public function count(): int; + + /** + * Iterate over the Domain labels. + * + * @return Iterator + */ + public function getIterator(): Iterator; + + /** + * Retrieves a single host label. + * + * If the label offset has not been set, returns the null value. + */ + public function get(int $offset): ?string; + + /** + * Returns the associated key for a specific label or all the keys. + * + * @return int[] + */ + public function keys(?string $label = null): array; + + /** + * Tells whether the domain is absolute. + */ + public function isAbsolute(): bool; + + /** + * Prepends a label to the host. + */ + public function prepend(Stringable|string $label): self; + + /** + * Appends a label to the host. + */ + public function append(Stringable|string $label): self; + + /** + * Extracts a slice of $length elements starting at position $offset from the host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the selected slice. + * + * If $length is null it returns all elements from $offset to the end of the Domain. + */ + public function slice(int $offset, ?int $length = null): self; + + /** + * Returns an instance with its Root label. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2.2 + */ + public function withRootLabel(): self; + + /** + * Returns an instance without its Root label. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2.2 + */ + public function withoutRootLabel(): self; + + /** + * Returns an instance with the modified label. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the new label + * + * If $key is non-negative, the added label will be the label at $key position from the start. + * If $key is negative, the added label will be the label at $key position from the end. + * + * @throws SyntaxError If the key is invalid + */ + public function withLabel(int $key, Stringable|string $label): self; + + /** + * Returns an instance without the specified label. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified component + * + * If $key is non-negative, the removed label will be the label at $key position from the start. + * If $key is negative, the removed label will be the label at $key position from the end. + * + * @throws SyntaxError If the key is invalid + */ + public function withoutLabel(int ...$keys): self; +} diff --git a/lib/league/uri-interfaces/Contracts/FragmentDirective.php b/lib/league/uri-interfaces/Contracts/FragmentDirective.php new file mode 100644 index 000000000..e85471c45 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/FragmentDirective.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use Stringable; + +/** + * @see https://wicg.github.io/scroll-to-text-fragment/#the-fragment-directive + * + * @method string toFragmentValue() returns the encoded string representation of the directive as a fragment string + */ +interface FragmentDirective extends Stringable +{ + /** + * The decoded Directive name. + * + * @return non-empty-string + */ + public function name(): string; + + /** + * The decoded Directive value. + */ + public function value(): ?string; + + /** + * The encoded string representation of the directive. + */ + public function toString(): string; + + /** + * The encoded string representation of the fragment using + * the Stringable interface. + * + * @see FragmentDirective::toString() + */ + public function __toString(): string; + + /** + * Tells whether the submitted value is equals to the string + * representation of the given directive. + */ + public function equals(mixed $directive): bool; +} diff --git a/lib/league/uri-interfaces/Contracts/FragmentInterface.php b/lib/league/uri-interfaces/Contracts/FragmentInterface.php new file mode 100644 index 000000000..440a08741 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/FragmentInterface.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +/** + * @method self normalize() returns the normalized string representation of the component + */ +interface FragmentInterface extends UriComponentInterface +{ + /** + * Returns the decoded fragment. + */ + public function decoded(): ?string; +} diff --git a/lib/league/uri-interfaces/Contracts/HostInterface.php b/lib/league/uri-interfaces/Contracts/HostInterface.php new file mode 100644 index 000000000..48d8abea3 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/HostInterface.php @@ -0,0 +1,59 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +/** + * @method string|null encoded() returns RFC3986 encoded host + */ +interface HostInterface extends UriComponentInterface +{ + /** + * Returns the ascii representation. + */ + public function toAscii(): ?string; + + /** + * Returns the unicode representation. + */ + public function toUnicode(): ?string; + + /** + * Returns the IP version. + * + * If the host is a not an IP this method will return null + */ + public function getIpVersion(): ?string; + + /** + * Returns the IP component If the Host is an IP address. + * + * If the host is a not an IP this method will return null + */ + public function getIp(): ?string; + + /** + * Tells whether the host is a domain name. + */ + public function isDomain(): bool; + + /** + * Tells whether the host is an IP Address. + */ + public function isIp(): bool; + + /** + * Tells whether the host is a registered name. + */ + public function isRegisteredName(): bool; +} diff --git a/lib/league/uri-interfaces/Contracts/IpHostInterface.php b/lib/league/uri-interfaces/Contracts/IpHostInterface.php new file mode 100644 index 000000000..7daac22b3 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/IpHostInterface.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +interface IpHostInterface extends HostInterface +{ + /** + * Tells whether the host is an IPv4 address. + */ + public function isIpv4(): bool; + + /** + * Tells whether the host is an IPv6 address. + */ + public function isIpv6(): bool; + + /** + * Tells whether the host is an IPv6 address. + */ + public function isIpFuture(): bool; + + /** + * Tells whether the host has a ZoneIdentifier. + * + * @see http://tools.ietf.org/html/rfc6874#section-4 + */ + public function hasZoneIdentifier(): bool; + + /** + * Returns a host without its zone identifier according to RFC6874. + * + * This method MUST retain the state of the current instance, and return + * an instance without the host zone identifier according to RFC6874 + * + * @see http://tools.ietf.org/html/rfc6874#section-4 + */ + public function withoutZoneIdentifier(): self; +} diff --git a/lib/league/uri-interfaces/Contracts/PathInterface.php b/lib/league/uri-interfaces/Contracts/PathInterface.php new file mode 100644 index 000000000..1408eecaf --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/PathInterface.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use League\Uri\Exceptions\SyntaxError; + +/** + * @method static normalize() returns the normalized string representation of the component + */ +interface PathInterface extends UriComponentInterface +{ + /** + * Returns the decoded path. + */ + public function decoded(): string; + + /** + * Tells whether the path is absolute or relative. + */ + public function isAbsolute(): bool; + + /** + * Tells whether the path has a trailing slash. + */ + public function hasTrailingSlash(): bool; + + /** + * Returns an instance without dot segments. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component normalized by removing + * the dot segment. + * + * @throws SyntaxError for invalid component or transformations + * that would result in a object in invalid state. + */ + public function withoutDotSegments(): self; + + /** + * Returns an instance with a leading slash. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component with a leading slash + * + * @throws SyntaxError for invalid component or transformations + * that would result in a object in invalid state. + */ + public function withLeadingSlash(): self; + + /** + * Returns an instance without a leading slash. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component without a leading slash + * + * @throws SyntaxError for invalid component or transformations + * that would result in a object in invalid state. + */ + public function withoutLeadingSlash(): self; + + /** + * Returns an instance with a trailing slash. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component with a trailing slash + * + * @throws SyntaxError for invalid component or transformations + * that would result in a object in invalid state. + */ + public function withTrailingSlash(): self; + + /** + * Returns an instance without a trailing slash. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component without a trailing slash + * + * @throws SyntaxError for invalid component or transformations + * that would result in a object in invalid state. + */ + public function withoutTrailingSlash(): self; +} diff --git a/lib/league/uri-interfaces/Contracts/PortInterface.php b/lib/league/uri-interfaces/Contracts/PortInterface.php new file mode 100644 index 000000000..7230c4ad1 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/PortInterface.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +interface PortInterface extends UriComponentInterface +{ + /** + * Returns the integer representation of the Port. + */ + public function toInt(): ?int; +} diff --git a/lib/league/uri-interfaces/Contracts/QueryInterface.php b/lib/league/uri-interfaces/Contracts/QueryInterface.php new file mode 100644 index 000000000..1b2ac33f6 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/QueryInterface.php @@ -0,0 +1,272 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use BackedEnum; +use Countable; +use Deprecated; +use Iterator; +use IteratorAggregate; +use League\Uri\QueryComposeMode; +use League\Uri\StringCoercionMode; +use Stringable; + +/** + * @extends IteratorAggregate + * + * @method string|null toFormData() Returns the string representation using the application/www-form-urlencoded rules + * @method string|null toRFC3986() Returns the string representation using RFC3986 rules + * @method string|null first(string $key) Returns the first value associated with the given name + * @method string|null last(string $key) Returns the first value associated with the given name + * @method int|null indexOf(string $key, int $nth = 0) Returns the offset of the pair based on its key and its nth occurrence; negative occurrences are supported + * @method int|null indexOfValue(?string $value, int $nth = 0) Returns the offset of the pair based on its value and its nth occurrence; negative occurrences are supported + * @method array pair(int $offset) Returns the key/value pair at the given numeric offset; negative occurrences are supported + * @method int countDistinctKeys() Returns the total number of distinct keys + * @method string|null valueAt(int $offset): Returns the value at the given numeric offset; negative occurrences are supported + * @method string keyAt(int $offset): Returns the key at the given numeric offset; negative occurrences are supported + * @method self normalize() returns the normalized string representation of the component + * @method self withoutPairByKey(string ...$keys) Returns an instance without pairs with the specified keys. + * @method self withoutPairByValue(array|BackedEnum|Stringable|string|int|bool|null $values, StringCoercionMode $coercionMode = StringCoercionMode::Native) Returns an instance without pairs with the specified values. + * @method self withoutPairByKeyValue(string $key, BackedEnum|Stringable|string|int|bool|null $value, StringCoercionMode $coercionMode = StringCoercionMode::Native) Returns an instance without pairs with the specified key/value pair + * @method bool hasPair(string $key, ?string $value) Tells whether the pair exists in the query. + * @method array getList(string $name) Returns the list associated with the given name or an empty array if it does not exist. + * @method bool hasList(string ...$names) Tells whether the parameter list exists in the query. + * @method self appendList(string $name, array $values, QueryComposeMode $composeMode = QueryComposeMode::Native) Appends a parameter to the query string + * @method self withList(string $name, array $values, QueryComposeMode $composeMode = QueryComposeMode::Native) Adds a new parameter to the query string and remove any previously set values + * @method self withoutList(string ...$names) Removes any given list associated with the given names + * @method self withoutLists() Removes all lists from the query string + * @method self onlyLists() Removes all pairs without a valid PHP's bracket notation + */ +interface QueryInterface extends Countable, IteratorAggregate, UriComponentInterface +{ + /** + * Returns the query separator. + * + * @return non-empty-string + */ + public function getSeparator(): string; + + /** + * Returns the number of key/value pairs present in the object. + */ + public function count(): int; + + /** + * Returns an iterator allowing to go through all key/value pairs contained in this object. + * + * The pair is represented as an array where the first value is the pair key + * and the second value the pair value. + * + * The key of each pair is a string + * The value of each pair is a scalar or the null value + * + * @return Iterator + */ + public function getIterator(): Iterator; + + /** + * Returns an iterator allowing to go through all key/value pairs contained in this object. + * + * The return type is as an Iterator where its offset is the pair key and its value the pair value. + * + * The key of each pair is a string + * The value of each pair is a scalar or the null value + * + * @return iterable + */ + public function pairs(): iterable; + + /** + * Tells whether a list of pair with a specific key exists. + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-has + */ + public function has(string ...$keys): bool; + + /** + * Returns the first value associated to the given pair name. + * + * If no value is found null is returned + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-get + */ + public function get(string $key): ?string; + + /** + * Returns all the values associated to the given pair name as an array or all + * the instance pairs. + * + * If no value is found an empty array is returned + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-getall + * + * @return array + */ + public function getAll(string $key): array; + + /** + * Returns the store PHP variables as elements of an array. + * + * The result is similar as PHP parse_str when used with its + * second argument with the difference that variable names are + * not mangled. + * + * @see http://php.net/parse_str + * @see https://wiki.php.net/rfc/on_demand_name_mangling + * + * @return array the collection of stored PHP variables or the empty array if no input is given, + */ + public function parameters(): array; + + /** + * Returns the value attached to the specific key. + * + * The result is similar to PHP parse_str with the difference that variable + * names are not mangled. + * + * If a key is submitted it will return the value attached to it or null + * + * @see http://php.net/parse_str + * @see https://wiki.php.net/rfc/on_demand_name_mangling + * + * @return mixed the collection of stored PHP variables or the empty array if no input is given, + * the single value of a stored PHP variable or null if the variable is not present in the collection + */ + public function parameter(string $name): mixed; + + /** + * Tells whether a list of variable with specific names exists. + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-has + */ + public function hasParameter(string ...$names): bool; + + /** + * Returns the RFC1738 encoded query. + */ + public function toRFC1738(): ?string; + + /** + * Returns an instance with a different separator. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the query component with a different separator + */ + public function withSeparator(string $separator): self; + + /** + * Returns an instance with the new pairs set to it. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified query + * + * @see ::withPair + */ + public function merge(Stringable|string $query): self; + + /** + * Returns an instance with the new pairs appended to it. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified query + * + * If the pair already exists the value will be added to it. + */ + public function append(Stringable|string $query): self; + + /** + * Returns a new instance with a specified key/value pair appended as a new pair. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified query + */ + public function appendTo(string $key, Stringable|string|int|bool|null $value): self; + + /** + * Sorts the query string by offset, maintaining offset to data correlations. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified query + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-sort + */ + public function sort(): self; + + /** + * Returns an instance without duplicate key/value pair. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the query component normalized by removing + * duplicate pairs whose key/value are the same. + */ + public function withoutDuplicates(): self; + + /** + * Returns an instance without empty key/value where the value is the null value. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the query component normalized by removing + * empty pairs. + * + * A pair is considered empty if its value is equal to the null value + */ + public function withoutEmptyPairs(): self; + + /** + * Returns an instance where numeric indices associated to PHP's array like key are removed. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the query component normalized so that numeric indexes + * are removed from the pair key value. + * + * i.e.: toto[3]=bar[3]&foo=bar becomes toto[]=bar[3]&foo=bar + */ + public function withoutNumericIndices(): self; + + /** + * Returns an instance with a new key/value pair added to it. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified query + * + * If the pair already exists the value will replace the existing value. + * + * @see https://url.spec.whatwg.org/#dom-urlsearchparams-set + */ + public function withPair(string $key, Stringable|string|int|float|bool|null $value): self; + + /** + * DEPRECATION WARNING! This method will be removed in the next major point release. + * + * @deprecated Since version 7.3.0 + * @codeCoverageIgnore + * @see QueryInterface::withoutPairByKey() + * + * Returns an instance without the specified keys. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified component + */ + #[Deprecated(message:'use League\Uri\Contracts\QueryInterface::withoutPairByKey() instead', since:'league/uri-interfaces:7.3.0')] + public function withoutPair(string ...$keys): self; + + /** + * Returns an instance without the specified params. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified component without PHP's value. + * PHP's mangled is not taken into account. + */ + public function withoutParameters(string ...$names): self; +} diff --git a/lib/league/uri-interfaces/Contracts/SegmentedPathInterface.php b/lib/league/uri-interfaces/Contracts/SegmentedPathInterface.php new file mode 100644 index 000000000..87355f4cf --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/SegmentedPathInterface.php @@ -0,0 +1,149 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use Countable; +use Iterator; +use IteratorAggregate; +use League\Uri\Exceptions\SyntaxError; +use Stringable; + +/** + * @extends IteratorAggregate + */ +interface SegmentedPathInterface extends Countable, IteratorAggregate, PathInterface +{ + /** + * Returns the total number of segments in the path. + */ + public function count(): int; + + /** + * Iterate over the path segment. + * + * @return Iterator + */ + public function getIterator(): Iterator; + + /** + * Returns parent directory's path. + */ + public function getDirname(): string; + + /** + * Returns the path basename. + */ + public function getBasename(): string; + + /** + * Returns the basename extension. + */ + public function getExtension(): string; + + /** + * Retrieves a single path segment. + * + * If the segment offset has not been set, returns null. + */ + public function get(int $offset): ?string; + + /** + * Returns the associated key for a specific segment. + * + * If a value is specified only the keys associated with + * the given value will be returned + * + * @return array + */ + public function keys(Stringable|string|null $segment = null): array; + + /** + * Appends a segment to the path. + */ + public function append(Stringable|string $path): self; + + /** + * Extracts a slice of $length elements starting at position $offset from the host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the selected slice. + * + * If $length is null it returns all elements from $offset to the end of the Path. + */ + public function slice(int $offset, ?int $length = null): self; + + /** + * Prepends a segment to the path. + */ + public function prepend(Stringable|string $path): self; + + /** + * Returns an instance with the modified segment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the new segment + * + * If $key is non-negative, the added segment will be the segment at $key position from the start. + * If $key is negative, the added segment will be the segment at $key position from the end. + * + * @throws SyntaxError If the key is invalid + */ + public function withSegment(int $key, Stringable|string $segment): self; + + /** + * Returns an instance without the specified segment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the modified component + * + * If $key is non-negative, the removed segment will be the segment at $key position from the start. + * If $key is negative, the removed segment will be the segment at $key position from the end. + * + * @throws SyntaxError If the key is invalid + */ + public function withoutSegment(int ...$keys): self; + + /** + * Returns an instance without duplicate delimiters. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the path component normalized by removing + * multiple consecutive empty segment + */ + public function withoutEmptySegments(): self; + + /** + * Returns an instance with the specified parent directory's path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the extension basename modified. + */ + public function withDirname(Stringable|string $path): self; + + /** + * Returns an instance with the specified basename. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the extension basename modified. + */ + public function withBasename(Stringable|string $basename): self; + + /** + * Returns an instance with the specified basename extension. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the extension basename modified. + */ + public function withExtension(Stringable|string $extension): self; +} diff --git a/lib/league/uri-interfaces/Contracts/Transformable.php b/lib/league/uri-interfaces/Contracts/Transformable.php new file mode 100644 index 000000000..957fa50fb --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/Transformable.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +interface Transformable +{ + /** + * Apply a transformation to this instance and return a new instance. + * + * This method MUST retain the state of the current instance, and return + * a new instance of the same type. + * + * @param callable(static): static $callback + */ + public function transform(callable $callback): static; +} diff --git a/lib/league/uri-interfaces/Contracts/UriAccess.php b/lib/league/uri-interfaces/Contracts/UriAccess.php new file mode 100644 index 000000000..a74da5774 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/UriAccess.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use Psr\Http\Message\UriInterface as Psr7UriInterface; + +/** + * @deprecated since version 7.6.0 + */ +interface UriAccess +{ + public function getUri(): UriInterface|Psr7UriInterface; + + /** + * Returns the RFC3986 string representation of the complete URI. + */ + public function getUriString(): string; +} diff --git a/lib/league/uri-interfaces/Contracts/UriComponentInterface.php b/lib/league/uri-interfaces/Contracts/UriComponentInterface.php new file mode 100644 index 000000000..fa550aaf5 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/UriComponentInterface.php @@ -0,0 +1,79 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use JsonSerializable; +use Stringable; + +/** + * @method static when(callable|bool $condition, callable $onSuccess, ?callable $onFail = null) conditionally return a new instance + * @method bool equals(mixed $value) tells whether the submitted value is equal to the current instance value + */ +interface UriComponentInterface extends JsonSerializable, Stringable +{ + /** + * Returns the instance string representation. + * + * If the instance is defined, the value returned MUST be percent-encoded, + * but MUST NOT double-encode any characters. To determine what characters + * to encode, please refer to RFC 3986, Sections 2 and 3. + * + * If the instance is not defined null is returned + */ + public function value(): ?string; + + /** + * Returns the instance string representation. + * + * If the instance is defined, the value returned MUST be percent-encoded, + * but MUST NOT double-encode any characters. To determine what characters + * to encode, please refer to RFC 3986, Sections 2 and 3. + * + * If the instance is not defined, an empty string is returned + */ + public function toString(): string; + + /** + * Returns the instance string representation. + * + * If the instance is defined, the value returned MUST be percent-encoded, + * but MUST NOT double-encode any characters. To determine what characters + * to encode, please refer to RFC 3986, Sections 2 and 3. + * + * If the instance is not defined, an empty string is returned + */ + public function __toString(): string; + + /** + * Returns the instance json representation. + * + * If the instance is defined, the value returned MUST be percent-encoded, + * but MUST NOT double-encode any characters. To determine what characters + * to encode, please refer to RFC 3986 or RFC 1738. + * + * If the instance is not defined, null is returned + */ + public function jsonSerialize(): ?string; + + /** + * Returns the instance string representation with its optional URI delimiters. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode any + * characters. To determine what characters to encode, please refer to RFC 3986, + * Sections 2 and 3. + * + * If the instance is not defined, an empty string is returned + */ + public function getUriComponent(): string; +} diff --git a/lib/league/uri-interfaces/Contracts/UriException.php b/lib/league/uri-interfaces/Contracts/UriException.php new file mode 100644 index 000000000..c0fec2a12 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/UriException.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use Throwable; + +interface UriException extends Throwable +{ +} diff --git a/lib/league/uri-interfaces/Contracts/UriInterface.php b/lib/league/uri-interfaces/Contracts/UriInterface.php new file mode 100644 index 000000000..60e6c8e75 --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/UriInterface.php @@ -0,0 +1,321 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use JsonSerializable; +use League\Uri\Exceptions\MissingFeature; +use League\Uri\Exceptions\SyntaxError; +use League\Uri\UriString; +use Stringable; + +/** + * @phpstan-import-type ComponentMap from UriString + * + * @method string|null getUsername() returns the user component of the URI. + * @method self withUsername(?string $user) returns a new URI instance with the user component updated. + * @method string|null getPassword() returns the scheme-specific information about how to gain authorization to access the resource. + * @method self withPassword(?string $password) returns a new URI instance with the password component updated. + * @method string toAsciiString() returns the string representation of the URI in its RFC3986 form + * @method string toUnicodeString() returns the string representation of the URI in its RFC3987 form (the host is in its IDN form) + * @method array toComponents() returns an associative array containing all the URI components. + * @method self normalize() returns a new URI instance with normalized components + * @method self resolve(UriInterface $uri) resolves a URI against a base URI using RFC3986 rules + * @method self relativize(UriInterface $uri) relativize a URI against a base URI using RFC3986 rules + */ +interface UriInterface extends JsonSerializable, Stringable +{ + /** + * Returns the string representation as a URI reference. + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + */ + public function __toString(): string; + + /** + * Returns the string representation as a URI reference. + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + */ + public function toString(): string; + + /** + * Returns the string representation as a URI reference. + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @see ::__toString + */ + public function jsonSerialize(): string; + + /** + * Retrieve the scheme component of the URI. + * + * If no scheme is present, this method MUST return a null value. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.1. + * + * The trailing ":" character is not part of the scheme and MUST NOT be + * added. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.1 + */ + public function getScheme(): ?string; + + /** + * Retrieve the authority component of the URI. + * + * If no scheme is present, this method MUST return a null value. + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + */ + public function getAuthority(): ?string; + + /** + * Retrieve the user information component of the URI. + * + * If no scheme is present, this method MUST return a null value. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + */ + public function getUserInfo(): ?string; + + /** + * Retrieve the host component of the URI. + * + * If no host is present this method MUST return a null value. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + */ + public function getHost(): ?string; + + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + */ + public function getPort(): ?int; + + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + */ + public function getPath(): string; + + /** + * Retrieve the query string of the URI. + * + * If no host is present this method MUST return a null value. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + */ + public function getQuery(): ?string; + + /** + * Retrieve the fragment component of the URI. + * + * If no host is present this method MUST return a null value. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + */ + public function getFragment(): ?string; + + /** + * Returns an associative array containing all the URI components. + * + * The returned array is similar to PHP's parse_url return value with the following + * differences: + * + *
    + *
  • All components are present in the returned array
  • + *
  • Empty and undefined component are treated differently. And empty component is + * set to the empty string while an undefined component is set to the `null` value.
  • + *
+ * + * @link https://tools.ietf.org/html/rfc3986 + * + * @return ComponentMap + */ + public function getComponents(): array; + + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * A null value provided for the scheme is equivalent to removing the scheme + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withScheme(Stringable|string|null $scheme): self; + + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; a null value for the user is equivalent to removing user + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withUserInfo(Stringable|string|null $user, Stringable|string|null $password = null): self; + + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * A null value provided for the host is equivalent to removing the host + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + * @throws MissingFeature for component or transformations + * requiring IDN support when IDN support is not present + * or misconfigured. + */ + public function withHost(Stringable|string|null $host): self; + + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withPort(?int $port): self; + + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withPath(Stringable|string $path): self; + + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * A null value provided for the query is equivalent to removing the query + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withQuery(Stringable|string|null $query): self; + + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * A null value provided for the fragment is equivalent to removing the fragment + * information. + * + * @throws SyntaxError for invalid component or transformations + * that would result in an object in invalid state. + */ + public function withFragment(Stringable|string|null $fragment): self; +} diff --git a/lib/league/uri-interfaces/Contracts/UserInfoInterface.php b/lib/league/uri-interfaces/Contracts/UserInfoInterface.php new file mode 100644 index 000000000..bd36b86de --- /dev/null +++ b/lib/league/uri-interfaces/Contracts/UserInfoInterface.php @@ -0,0 +1,62 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Contracts; + +use Stringable; + +interface UserInfoInterface extends UriComponentInterface +{ + /** + * Returns the user component part. + */ + public function getUser(): ?string; + + /** + * Returns the pass component part. + */ + public function getPass(): ?string; + + /** + * Returns an associative array containing all the User Info components. + * + * The returned a hashmap similar to PHP's parse_url return value + * + * @link https://tools.ietf.org/html/rfc3986 + * + * @return array{user: ?string, pass : ?string} + */ + public function components(): array; + + /** + * Returns an instance with the specified user and/or pass. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified new username + * otherwise it returns the same instance unchanged. + * + * A variable equal to null is equivalent to removing the complete user information. + */ + public function withUser(Stringable|string|null $username): self; + + /** + * Returns an instance with the specified user and/or pass. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified password if the user is specified + * otherwise it returns the same instance unchanged. + * + * An empty user is equivalent to removing the user information. + */ + public function withPass(Stringable|string|null $password): self; +} diff --git a/lib/league/uri-interfaces/Encoder.php b/lib/league/uri-interfaces/Encoder.php new file mode 100644 index 000000000..cbd3f2e63 --- /dev/null +++ b/lib/league/uri-interfaces/Encoder.php @@ -0,0 +1,506 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri; + +use BackedEnum; +use Closure; +use Deprecated; +use League\Uri\Exceptions\SyntaxError; +use League\Uri\IPv6\Converter as IPv6Converter; +use SensitiveParameter; +use Stringable; +use Throwable; + +use function explode; +use function filter_var; +use function gettype; +use function in_array; +use function preg_match; +use function preg_replace_callback; +use function rawurldecode; +use function rawurlencode; +use function sprintf; +use function str_starts_with; +use function strtolower; +use function strtoupper; + +use const FILTER_FLAG_IPV4; +use const FILTER_VALIDATE_IP; + +final class Encoder +{ + private const REGEXP_CHARS_INVALID = '/[\x00-\x1f\x7f]/'; + private const REGEXP_CHARS_ENCODED = ',%[A-Fa-f0-9]{2},'; + private const REGEXP_CHARS_PREVENTS_DECODING = ',% + 2[A-F|1-2|4-9]| + 3[0-9|B|D]| + 4[1-9|A-F]| + 5[0-9|A|F]| + 6[1-9|A-F]| + 7[0-9|E] + ,ix'; + private const REGEXP_PART_SUBDELIM = "\!\$&'\(\)\*\+,;\=%"; + private const REGEXP_PART_UNRESERVED = 'A-Za-z\d_\-.~'; + private const REGEXP_PART_ENCODED = '%(?![A-Fa-f\d]{2})'; + + /** + * Unreserved characters. + * + * @see https://www.rfc-editor.org/rfc/rfc3986.html#section-2.3 + */ + private const REGEXP_UNRESERVED_CHARACTERS = ',%(2[DdEe]|3[0-9]|4[1-9A-Fa-f]|5[AaFf]|6[1-9A-Fa-f]|7[0-9A-Ea-e]),'; + + /** + * Tell whether the user component is correctly encoded. + */ + public static function isUserEncoded(BackedEnum|Stringable|string|null $encoded): bool + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.']+|'.self::REGEXP_PART_ENCODED.'/'; + + if ($encoded instanceof BackedEnum) { + $encoded = $encoded->value; + } + + return null === $encoded || 1 !== preg_match($pattern, (string) $encoded); + } + + /** + * Encode User. + * + * All generic delimiters MUST be encoded + */ + public static function encodeUser(BackedEnum|Stringable|string|null $user): ?string + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.']+|'.self::REGEXP_PART_ENCODED.'/'; + + return self::encode($user, $pattern); + } + + /** + * Normalize user component. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizeUser(BackedEnum|Stringable|string|null $user): ?string + { + return self::normalize(self::encodeUser(self::decodeUnreservedCharacters($user))); + } + + private static function normalize(?string $component): ?string + { + if (null === $component) { + return null; + } + + return (string) preg_replace_callback( + '/%[0-9a-f]{2}/i', + static fn (array $found) => strtoupper($found[0]), + $component + ); + } + + /** + * Tell whether the password component is correctly encoded. + */ + public static function isPasswordEncoded(#[SensitiveParameter] BackedEnum|Stringable|string|null $encoded): bool + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':]+|'.self::REGEXP_PART_ENCODED.'/'; + + if ($encoded instanceof BackedEnum) { + $encoded = $encoded->value; + } + + return null === $encoded || 1 !== preg_match($pattern, (string) $encoded); + } + + /** + * Encode Password. + * + * Generic delimiters ":" MUST NOT be encoded + */ + public static function encodePassword(#[SensitiveParameter] BackedEnum|Stringable|string|null $component): ?string + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':]+|'.self::REGEXP_PART_ENCODED.'/'; + + return self::encode($component, $pattern); + } + + /** + * Normalize password component. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizePassword(#[SensitiveParameter] BackedEnum|Stringable|string|null $password): ?string + { + return self::normalize(self::encodePassword(self::decodeUnreservedCharacters($password))); + } + + /** + * Tell whether the userInfo component is correctly encoded. + */ + public static function isUserInfoEncoded(#[SensitiveParameter] BackedEnum|Stringable|string|null $userInfo): bool + { + if (null === $userInfo) { + return true; + } + + if ($userInfo instanceof BackedEnum) { + $userInfo = $userInfo->value; + } + + [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; + + return self::isUserEncoded($user) + && self::isPasswordEncoded($password); + } + + public static function encodeUserInfo(#[SensitiveParameter] BackedEnum|Stringable|string|null $userInfo): ?string + { + if (null === $userInfo) { + return null; + } + + if ($userInfo instanceof BackedEnum) { + $userInfo = $userInfo->value; + } + + [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; + $userInfo = self::encodeUser($user); + if (null === $password) { + return $userInfo; + } + + return $userInfo.':'.self::encodePassword($password); + } + + public static function normalizeUserInfo(#[SensitiveParameter] BackedEnum|Stringable|string|null $userInfo): ?string + { + if (null === $userInfo) { + return null; + } + + if ($userInfo instanceof BackedEnum) { + $userInfo = $userInfo->value; + } + + [$user, $password] = explode(':', (string) $userInfo, 2) + [1 => null]; + $userInfo = self::normalizeUser($user); + if (null === $password) { + return $userInfo; + } + + return $userInfo.':'.self::normalizePassword($password); + } + + /** + * Decodes all the URI component characters. + */ + public static function decodeAll(BackedEnum|Stringable|string|null $component): ?string + { + return self::decode($component, static fn (array $matches): string => rawurldecode($matches[0])); + } + + /** + * Decodes the URI component without decoding the unreserved characters which are already encoded. + */ + public static function decodeNecessary(BackedEnum|Stringable|string|int|null $component): ?string + { + $decoder = static function (array $matches): string { + if (1 === preg_match(self::REGEXP_CHARS_PREVENTS_DECODING, $matches[0])) { + return strtoupper($matches[0]); + } + + return rawurldecode($matches[0]); + }; + + return self::decode($component, $decoder); + } + + /** + * Decodes the component unreserved characters. + */ + public static function decodeUnreservedCharacters(BackedEnum|Stringable|string|null $str): ?string + { + if ($str instanceof BackedEnum) { + $str = $str->value; + } + + if (null === $str) { + return null; + } + + return preg_replace_callback( + self::REGEXP_UNRESERVED_CHARACTERS, + static fn (array $matches): string => rawurldecode($matches[0]), + (string) $str + ); + } + + /** + * Tell whether the path component is correctly encoded. + */ + public static function isPathEncoded(BackedEnum|Stringable|string|null $encoded): bool + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':@\/]+|'.self::REGEXP_PART_ENCODED.'/'; + + if ($encoded instanceof BackedEnum) { + $encoded = $encoded->value; + } + + return null === $encoded || 1 !== preg_match($pattern, (string) $encoded); + } + + /** + * Encode Path. + * + * Generic delimiters ":", "@", and "/" MUST NOT be encoded + */ + public static function encodePath(BackedEnum|Stringable|string|null $component): string + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':@\/]+|'.self::REGEXP_PART_ENCODED.'/'; + + return (string) self::encode($component, $pattern); + } + + /** + * Decodes the path component while preserving characters that should not be decoded in the context of a full valid URI. + */ + public static function decodePath(BackedEnum|Stringable|string|null $path): ?string + { + $decoder = static function (array $matches): string { + $encodedChar = strtoupper($matches[0]); + + return in_array($encodedChar, ['%2F', '%20', '%3F', '%23'], true) ? $encodedChar : rawurldecode($encodedChar); + }; + + return self::decode($path, $decoder); + } + + /** + * Normalize path component. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizePath(BackedEnum|Stringable|string|null $component): ?string + { + return self::normalize(self::encodePath(self::decodePath($component))); + } + + /** + * Tell whether the query component is correctly encoded. + */ + public static function isQueryEncoded(BackedEnum|Stringable|string|null $encoded): bool + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.'\/?%]+|'.self::REGEXP_PART_ENCODED.'/'; + if ($encoded instanceof BackedEnum) { + $encoded = $encoded->value; + } + + return null === $encoded || 1 !== preg_match($pattern, (string) $encoded); + } + + /** + * Decodes the query component while preserving characters that should not be decoded in the context of a full valid URI. + */ + public static function decodeQuery(BackedEnum|Stringable|string|null $path): ?string + { + $decoder = static function (array $matches): string { + $encodedChar = strtoupper($matches[0]); + + return in_array($encodedChar, ['%26', '%3D', '%20', '%23', '%3F'], true) ? $encodedChar : rawurldecode($encodedChar); + }; + + return self::decode($path, $decoder); + } + + /** + * Normalize the query component. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizeQuery(BackedEnum|Stringable|string|null $query): ?string + { + return self::normalize(self::encodeQueryOrFragment(self::decodeQuery($query))); + } + + /** + * Tell whether the query component is correctly encoded. + */ + public static function isFragmentEncoded(BackedEnum|Stringable|string|null $encoded): bool + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':@\/?%]|'.self::REGEXP_PART_ENCODED.'/'; + + if ($encoded instanceof BackedEnum) { + $encoded = $encoded->value; + } + + return null === $encoded || 1 !== preg_match($pattern, (string) $encoded); + } + + /** + * Decodes the fragment component while preserving characters that should not be decoded in the context of a full valid URI. + */ + public static function decodeFragment(BackedEnum|Stringable|string|null $path): ?string + { + return self::decode($path, static fn (array $matches): string => '%20' === $matches[0] ? $matches[0] : rawurldecode($matches[0])); + } + + /** + * Normalize the fragment component. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizeFragment(BackedEnum|Stringable|string|null $fragment): ?string + { + return self::normalize(self::encodeQueryOrFragment(self::decodeFragment($fragment))); + } + + /** + * Normalize the host component. + * + * @see https://www.rfc-editor.org/rfc/rfc3986.html#section-3.2.2 + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986. + */ + public static function normalizeHost(BackedEnum|Stringable|string|null $host): ?string + { + if ($host instanceof BackedEnum) { + $host = (string) $host->value; + } + + if ($host instanceof Stringable) { + $host = (string) $host; + } + + if (null === $host || '' === $host || false !== filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { + return $host; + } + + if (str_starts_with($host, '[')) { + return IPv6Converter::normalize($host); + } + + $host = strtolower($host); + + return (!str_contains($host, '%')) ? $host : preg_replace_callback( + '/%[a-f0-9]{2}/', + fn (array $matches) => 1 === preg_match('/%([0-7][0-9a-f])/', $matches[0]) ? rawurldecode($matches[0]) : strtoupper($matches[0]), + $host + ); + } + + /** + * Encode Query or Fragment. + * + * Generic delimiters ":", "@", "?", and "/" MUST NOT be encoded + */ + public static function encodeQueryOrFragment(BackedEnum|Stringable|string|null $component): ?string + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.self::REGEXP_PART_SUBDELIM.':@\/?]+|'.self::REGEXP_PART_ENCODED.'/'; + + return self::encode($component, $pattern); + } + + public static function encodeQueryKeyValue(mixed $component): ?string + { + static $pattern = '/[^'.self::REGEXP_PART_UNRESERVED.']+|'.self::REGEXP_PART_ENCODED.'/'; + $encoder = static fn (array $found): string => 1 === preg_match('/[^'.self::REGEXP_PART_UNRESERVED.']/', rawurldecode($found[0])) ? rawurlencode($found[0]) : $found[0]; + $filteredComponent = self::filterComponent($component); + + return match (true) { + null === $filteredComponent => throw new SyntaxError(sprintf('A pair key/value must be a scalar value `%s` given.', gettype($component))), + 1 === preg_match(self::REGEXP_CHARS_INVALID, $filteredComponent) => rawurlencode($filteredComponent), + default => (string) preg_replace_callback($pattern, $encoder, $filteredComponent), + }; + } + + private static function filterComponent(mixed $component): ?string + { + try { + return StringCoercionMode::Native->coerce($component); + } catch (Throwable $exception) { + throw new SyntaxError( + sprintf('The component must be a scalar value `%s` given.', gettype($component)), + previous: $exception + ); + } + } + + /** + * Encodes the URI component characters using a regular expression to find which characters need encoding. + */ + private static function encode(BackedEnum|Stringable|string|int|bool|null $component, string $pattern): ?string + { + $component = self::filterComponent($component); + if (null === $component || '' === $component) { + return $component; + } + + return (string) preg_replace_callback( + $pattern, + static fn (array $found): string => 1 === preg_match('/[^'.self::REGEXP_PART_UNRESERVED.']/', rawurldecode($found[0])) ? rawurlencode($found[0]) : $found[0], + $component + ); + } + + /** + * Decodes the URI component characters using a closure. + */ + private static function decode(BackedEnum|Stringable|string|int|null $component, Closure $decoder): ?string + { + $component = self::filterComponent($component); + if (null === $component || '' === $component) { + return $component; + } + + if (1 === preg_match(self::REGEXP_CHARS_INVALID, $component)) { + throw new SyntaxError('Invalid component string: '.$component.'.'); + } + + if (1 === preg_match(self::REGEXP_CHARS_ENCODED, $component)) { + return (string) preg_replace_callback(self::REGEXP_CHARS_ENCODED, $decoder, $component); + } + + return $component; + } + + /** + * Decodes the URI component without decoding the unreserved characters which are already encoded. + * + * DEPRECATION WARNING! This method will be removed in the next major point release. + * + * @deprecated Since version 7.6.0 + * @codeCoverageIgnore + * @see Encoder::decodeNecessary() + * + * Create a new instance from the environment. + */ + #[Deprecated(message:'use League\Uri\Encoder::decodeNecessary() instead', since:'league/uri:7.6.0')] + public static function decodePartial(BackedEnum|Stringable|string|int|null $component): ?string + { + return self::decodeNecessary($component); + } +} diff --git a/lib/league/uri-interfaces/Exceptions/ConversionFailed.php b/lib/league/uri-interfaces/Exceptions/ConversionFailed.php new file mode 100644 index 000000000..9063ceb05 --- /dev/null +++ b/lib/league/uri-interfaces/Exceptions/ConversionFailed.php @@ -0,0 +1,51 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Exceptions; + +use BackedEnum; +use League\Uri\Idna\Error; +use League\Uri\Idna\Result; +use Stringable; + +final class ConversionFailed extends SyntaxError +{ + private function __construct( + string $message, + private readonly string $host, + private readonly Result $result + ) { + parent::__construct($message); + } + + public static function dueToIdnError(BackedEnum|Stringable|string $host, Result $result): self + { + $reasons = array_map(fn (Error $error): string => $error->description(), $result->errors()); + + if ($host instanceof BackedEnum) { + $host = (string) $host->value; + } + + return new self('Host `'.$host.'` is invalid: '.implode('; ', $reasons).'.', (string) $host, $result); + } + + public function getHost(): string + { + return $this->host; + } + + public function getResult(): Result + { + return $this->result; + } +} diff --git a/lib/league/uri-interfaces/Exceptions/MissingFeature.php b/lib/league/uri-interfaces/Exceptions/MissingFeature.php new file mode 100644 index 000000000..034e969fc --- /dev/null +++ b/lib/league/uri-interfaces/Exceptions/MissingFeature.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Exceptions; + +use League\Uri\Contracts\UriException; +use RuntimeException; + +class MissingFeature extends RuntimeException implements UriException +{ +} diff --git a/lib/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php b/lib/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php new file mode 100644 index 000000000..737a5cc24 --- /dev/null +++ b/lib/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php @@ -0,0 +1,18 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Exceptions; + +class OffsetOutOfBounds extends SyntaxError +{ +} diff --git a/lib/league/uri-interfaces/Exceptions/SyntaxError.php b/lib/league/uri-interfaces/Exceptions/SyntaxError.php new file mode 100644 index 000000000..f44cca6c9 --- /dev/null +++ b/lib/league/uri-interfaces/Exceptions/SyntaxError.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri\Exceptions; + +use InvalidArgumentException; +use League\Uri\Contracts\UriException; + +class SyntaxError extends InvalidArgumentException implements UriException +{ +} diff --git a/lib/league/uri-interfaces/FeatureDetection.php b/lib/league/uri-interfaces/FeatureDetection.php new file mode 100644 index 000000000..be0c4d640 --- /dev/null +++ b/lib/league/uri-interfaces/FeatureDetection.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri; + +use finfo; +use League\Uri\Exceptions\MissingFeature; +use League\Uri\IPv4\Calculator; + +use function class_exists; +use function defined; +use function extension_loaded; +use function function_exists; + +use const PHP_INT_SIZE; + +/** + * Allow detecting features needed to make the packages work. + */ +final class FeatureDetection +{ + public static function supportsFileDetection(): void + { + static $isSupported = null; + $isSupported = $isSupported ?? class_exists(finfo::class); + + $isSupported || throw new MissingFeature('Support for file type detection requires the `fileinfo` extension.'); + + } + + public static function supportsIdn(): void + { + static $isSupported = null; + $isSupported = $isSupported ?? (function_exists('\idn_to_ascii') && defined('\INTL_IDNA_VARIANT_UTS46')); + + $isSupported || throw new MissingFeature('Support for IDN host requires the `intl` extension for best performance or run "composer require symfony/polyfill-intl-idn" to install a polyfill.'); + } + + public static function supportsIPv4Conversion(): void + { + static $isSupported = null; + $isSupported = $isSupported ?? (extension_loaded('gmp') || extension_loaded('bcmath') || (4 < PHP_INT_SIZE)); + + $isSupported || throw new MissingFeature('A '.Calculator::class.' implementation could not be automatically loaded. To perform IPv4 conversion use a x.64 PHP build or install one of the following extension GMP or BCMath. You can also ship your own implementation.'); + } + + public static function supportsDom(): void + { + static $isSupported = null; + $isSupported = $isSupported ?? extension_loaded('dom'); + + $isSupported || throw new MissingFeature('To use a DOM related feature, the DOM extension must be installed in your system.'); + } +} diff --git a/lib/league/uri-interfaces/HostFormat.php b/lib/league/uri-interfaces/HostFormat.php new file mode 100644 index 000000000..baf737561 --- /dev/null +++ b/lib/league/uri-interfaces/HostFormat.php @@ -0,0 +1,20 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri; + +enum HostFormat +{ + case Ascii; + case Unicode; +} diff --git a/lib/league/uri-interfaces/HostRecord.php b/lib/league/uri-interfaces/HostRecord.php new file mode 100644 index 000000000..cb36f72aa --- /dev/null +++ b/lib/league/uri-interfaces/HostRecord.php @@ -0,0 +1,446 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +declare(strict_types=1); + +namespace League\Uri; + +use BackedEnum; +use Exception; +use JsonSerializable; +use League\Uri\Contracts\UriComponentInterface; +use League\Uri\Exceptions\SyntaxError; +use League\Uri\Idna\Converter as IdnConverter; +use Stringable; +use Throwable; + +use function array_key_first; +use function count; +use function explode; +use function filter_var; +use function get_object_vars; +use function in_array; +use function inet_pton; +use function is_object; +use function preg_match; +use function rawurldecode; +use function strpos; +use function strtolower; +use function substr; + +use const FILTER_FLAG_IPV4; +use const FILTER_FLAG_IPV6; +use const FILTER_VALIDATE_IP; + +/** + * @phpstan-type HostRecordSerializedShape array{0: array{host: ?string}, 1: array{}} + */ +final class HostRecord implements JsonSerializable +{ + /** + * Maximum number of host cached. + * + * @var int + */ + private const MAXIMUM_HOST_CACHED = 100; + + private const REGEXP_NON_ASCII_PATTERN = '/[^\x20-\x7f]/'; + + /** + * @see https://tools.ietf.org/html/rfc3986#section-3.2.2 + * + * invalid characters in host regular expression + */ + private const REGEXP_INVALID_HOST_CHARS = '/ + [:\/?#\[\]@ ] # gen-delims characters as well as the space character + /ix'; + + /** + * General registered name regular expression. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2.2 + * @see https://regex101.com/r/fptU8V/1 + */ + private const REGEXP_REGISTERED_NAME = '/ + (?(DEFINE) + (?[a-z0-9_~\-]) # . is missing as it is used to separate labels + (?[!$&\'()*+,;=]) + (?%[A-F0-9]{2}) + (?(?:(?&unreserved)|(?&sub_delims)|(?&encoded))*) + ) + ^(?:(?®_name)\.)*(?®_name)\.?$ + /ix'; + + /** + * Domain name regular expression. + * + * Everything but the domain name length is validated + * + * @see https://tools.ietf.org/html/rfc1034#section-3.5 + * @see https://tools.ietf.org/html/rfc1123#section-2.1 + * @see https://regex101.com/r/71j6rt/1 + */ + private const REGEXP_DOMAIN_NAME = '/ + (?(DEFINE) + (? [a-z0-9]) # alpha digit + (? [a-z0-9-]) # alpha digit and hyphen + (? (?&let_dig_hyp){0,61}(?&let_dig)) # domain label end + (?