gulp-phug 1.3.4 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +23 -8
- package/package.json +4 -4
- package/support/composer.json +1 -1
- package/support/composer.lock +93 -178
- package/support/vendor/autoload.php +15 -0
- package/support/vendor/bin/phug +119 -0
- package/support/vendor/bin/var-dump-server +119 -0
- package/support/vendor/composer/ClassLoader.php +166 -32
- package/support/vendor/composer/InstalledVersions.php +387 -329
- package/support/vendor/composer/autoload_classmap.php +1 -5
- package/support/vendor/composer/autoload_files.php +2 -3
- package/support/vendor/composer/autoload_namespaces.php +1 -1
- package/support/vendor/composer/autoload_psr4.php +3 -4
- package/support/vendor/composer/autoload_real.php +12 -37
- package/support/vendor/composer/autoload_static.php +6 -17
- package/support/vendor/composer/installed.json +97 -184
- package/support/vendor/composer/installed.php +129 -151
- package/support/vendor/composer/platform_check.php +16 -4
- package/support/vendor/phug/phug/.github/workflows/coverage.yml +71 -0
- package/support/vendor/phug/phug/.github/workflows/multi-tester.yml +46 -0
- package/support/vendor/phug/phug/.github/workflows/split.yml +41 -0
- package/support/vendor/phug/phug/.github/workflows/style.yml +48 -0
- package/support/vendor/phug/phug/.github/workflows/tests.yml +49 -0
- package/support/vendor/phug/phug/.multi-tester.yml +42 -10
- package/support/vendor/phug/phug/composer.json +25 -16
- package/support/vendor/phug/phug/phpcs.xml +4 -0
- package/support/vendor/phug/phug/phpunit.xml +2 -0
- package/support/vendor/phug/phug/phug +1 -1
- package/support/vendor/phug/phug/release.php +8 -0
- package/support/vendor/phug/phug/src/Phug/Ast/Ast/Node.php +7 -1
- package/support/vendor/phug/phug/src/Phug/Ast/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/Element/BlockElement.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AssignmentNodeCompiler.php +9 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/AttributeNodeCompiler.php +1 -0
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ElementNodeCompiler.php +6 -0
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompiler/ImportNodeCompiler.php +4 -4
- package/support/vendor/phug/phug/src/Phug/Compiler/Compiler/NodeCompilerInterface.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Compiler/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/DependencyInjection/DependencyInjection.php +1 -1
- package/support/vendor/phug/phug/src/Phug/DependencyInjection/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Event/Event/ListenerQueue.php +3 -0
- package/support/vendor/phug/phug/src/Phug/Event/EventManagerTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Event/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AbstractFormat.php +15 -12
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/AssignmentContainerInterface.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractAssignmentContainerElement.php +11 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AbstractMarkupElement.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AssignmentElement.php +9 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/AttributeElement.php +4 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/CodeElement.php +2 -2
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MarkupElement.php +10 -8
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinCallElement.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Element/MixinElement.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Format/XmlFormat.php +213 -20
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/AssignmentHelpersTrait.php +7 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/HandleVariable.php +4 -4
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter/Partial/MagicAccessorTrait.php +1 -7
- package/support/vendor/phug/phug/src/Phug/Formatter/Formatter.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Formatter/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Invoker/Invoker.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Invoker/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Partial/IndentStyleTrait.php +5 -5
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AssignmentScanner.php +8 -2
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/AttributeScanner.php +23 -11
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/ConditionalScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/FilterScanner.php +6 -10
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/IndentationScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/KeywordScanner.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/MultilineScanner.php +6 -12
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/Partial/TrailingOutdentHandlerTrait.php +26 -0
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/Scanner/TextScanner.php +3 -3
- package/support/vendor/phug/phug/src/Phug/Lexer/Lexer/State.php +9 -9
- package/support/vendor/phug/phug/src/Phug/Lexer/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Event/NodeEvent.php +3 -2
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AssignmentNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/AttributeNode.php +4 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/ElementNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/FilterNode.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinCallNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/Node/MixinNode.php +5 -1
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AbstractTokenHandler.php +87 -0
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AssignmentTokenHandler.php +6 -21
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeEndTokenHandler.php +5 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeStartTokenHandler.php +7 -23
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AttributeTokenHandler.php +21 -19
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/AutoCloseTokenHandler.php +5 -17
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/BlockTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CaseTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ClassTokenHandler.php +7 -34
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CodeTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/CommentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ConditionalTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/DoctypeTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/EachTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpansionTokenHandler.php +5 -11
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ExpressionTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/FilterTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ForTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IdTokenHandler.php +7 -33
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/ImportTokenHandler.php +14 -20
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/IndentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationEndTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/InterpolationStartTokenHandler.php +29 -30
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/KeywordTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinCallTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/MixinTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/NewLineTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/OutdentTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/Partial/StaticAttributeTrait.php +36 -0
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationEndTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagInterpolationStartTokenHandler.php +7 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TagTokenHandler.php +6 -21
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/TextTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/VariableTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhenTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/WhileTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser/TokenHandler/YieldTokenHandler.php +4 -10
- package/support/vendor/phug/phug/src/Phug/Parser/Parser.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Parser/composer.json +1 -2
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Cli.php +5 -5
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/ExtensionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Partial/FacadeOptionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Phug/Phug/Phug.php +14 -5
- package/support/vendor/phug/phug/src/Phug/Phug/composer.json +5 -2
- package/support/vendor/phug/phug/src/Phug/Reader/Reader.php +9 -9
- package/support/vendor/phug/phug/src/Phug/Reader/composer.json +4 -0
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/FileAdapter.php +21 -4
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/Stream/Template.php +5 -0
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Adapter/StreamAdapter.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/CacheInterface.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/AdapterTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/Debug/DebuggerTrait.php +56 -10
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Partial/RendererOptionsTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/Dump.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/LinkDump.php +2 -2
- package/support/vendor/phug/phug/src/Phug/Renderer/Renderer/Profiler/ProfilerModule.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Renderer/composer.json +7 -3
- package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseTyped.php +67 -0
- package/support/vendor/phug/phug/src/Phug/Util/CompatibilityUtil/TestCaseUntyped.php +67 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesInterface.php +16 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesOrderInterface.php +17 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/AttributesStorage.php +44 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Collection.php +2 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/OrderableInterface.php +22 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/OrderedValue.php +25 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributeTrait.php +2 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/AttributesOrderTrait.php +19 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ModuleContainerTrait.php +3 -3
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OptionTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/OrderTrait.php +27 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/StaticMemberTrait.php +1 -1
- package/support/vendor/phug/phug/src/Phug/Util/Util/Partial/ValueTrait.php +5 -3
- package/support/vendor/phug/phug/src/Phug/Util/Util/SandBox.php +1 -0
- package/support/vendor/phug/phug/src/Phug/Util/Util/TestCase.php +47 -4
- package/support/vendor/phug/phug/src/Phug/Util/composer.json +5 -6
- package/support/vendor/symfony/deprecation-contracts/CHANGELOG.md +5 -0
- package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE +1 -1
- package/support/vendor/symfony/deprecation-contracts/README.md +26 -0
- package/support/vendor/symfony/{polyfill-php72 → deprecation-contracts}/composer.json +9 -9
- package/support/vendor/symfony/deprecation-contracts/function.php +27 -0
- package/support/vendor/symfony/polyfill-mbstring/LICENSE +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Mbstring.php +256 -57
- package/support/vendor/symfony/polyfill-mbstring/README.md +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -0
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1 -1
- package/support/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +102 -27
- package/support/vendor/symfony/polyfill-mbstring/bootstrap.php +33 -8
- package/support/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -0
- package/support/vendor/symfony/polyfill-mbstring/composer.json +5 -4
- package/support/vendor/symfony/var-dumper/CHANGELOG.md +63 -0
- package/support/vendor/symfony/var-dumper/Caster/AddressInfoCaster.php +82 -0
- package/support/vendor/symfony/var-dumper/Caster/AmqpCaster.php +12 -10
- package/support/vendor/symfony/var-dumper/Caster/ArgsStub.php +6 -7
- package/support/vendor/symfony/var-dumper/Caster/Caster.php +59 -31
- package/support/vendor/symfony/var-dumper/Caster/ClassStub.php +7 -9
- package/support/vendor/symfony/var-dumper/Caster/ConstStub.php +20 -4
- package/support/vendor/symfony/var-dumper/Caster/CurlCaster.php +31 -0
- package/support/vendor/symfony/var-dumper/Caster/CutArrayStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/CutStub.php +2 -2
- package/support/vendor/symfony/var-dumper/Caster/DOMCaster.php +61 -156
- package/support/vendor/symfony/var-dumper/Caster/DateCaster.php +27 -26
- package/support/vendor/symfony/var-dumper/Caster/DoctrineCaster.php +6 -4
- package/support/vendor/symfony/var-dumper/Caster/DsCaster.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/DsPairStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/EnumStub.php +4 -5
- package/support/vendor/symfony/var-dumper/Caster/ExceptionCaster.php +64 -49
- package/support/vendor/symfony/var-dumper/Caster/FFICaster.php +171 -0
- package/support/vendor/symfony/var-dumper/Caster/FiberCaster.php +43 -0
- package/support/vendor/symfony/var-dumper/Caster/FrameStub.php +6 -8
- package/support/vendor/symfony/var-dumper/Caster/GdCaster.php +30 -0
- package/support/vendor/symfony/var-dumper/Caster/GmpCaster.php +4 -2
- package/support/vendor/symfony/var-dumper/Caster/ImagineCaster.php +2 -0
- package/support/vendor/symfony/var-dumper/Caster/ImgStub.php +1 -1
- package/support/vendor/symfony/var-dumper/Caster/IntlCaster.php +10 -8
- package/support/vendor/symfony/var-dumper/Caster/LinkStub.php +14 -17
- package/support/vendor/symfony/var-dumper/Caster/MemcachedCaster.php +10 -8
- package/support/vendor/symfony/var-dumper/Caster/MysqliCaster.php +33 -0
- package/support/vendor/symfony/var-dumper/Caster/OpenSSLCaster.php +69 -0
- package/support/vendor/symfony/var-dumper/Caster/PdoCaster.php +8 -6
- package/support/vendor/symfony/var-dumper/Caster/PgSqlCaster.php +21 -19
- package/support/vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php +4 -2
- package/support/vendor/symfony/var-dumper/Caster/RdKafkaCaster.php +188 -0
- package/support/vendor/symfony/var-dumper/Caster/RedisCaster.php +31 -31
- package/support/vendor/symfony/var-dumper/Caster/ReflectionCaster.php +100 -44
- package/support/vendor/symfony/var-dumper/Caster/ResourceCaster.php +33 -46
- package/support/vendor/symfony/var-dumper/Caster/ScalarStub.php +27 -0
- package/support/vendor/symfony/var-dumper/Caster/SocketCaster.php +64 -0
- package/support/vendor/symfony/var-dumper/Caster/SplCaster.php +57 -44
- package/support/vendor/symfony/var-dumper/Caster/SqliteCaster.php +32 -0
- package/support/vendor/symfony/var-dumper/Caster/StubCaster.php +15 -5
- package/support/vendor/symfony/var-dumper/Caster/SymfonyCaster.php +66 -10
- package/support/vendor/symfony/var-dumper/Caster/TraceStub.php +7 -11
- package/support/vendor/symfony/var-dumper/Caster/UninitializedStub.php +25 -0
- package/support/vendor/symfony/var-dumper/Caster/UuidCaster.php +2 -0
- package/support/vendor/symfony/var-dumper/Caster/VirtualStub.php +21 -0
- package/support/vendor/symfony/var-dumper/Caster/XmlReaderCaster.php +25 -10
- package/support/vendor/symfony/var-dumper/Caster/XmlResourceCaster.php +7 -5
- package/support/vendor/symfony/var-dumper/Cloner/AbstractCloner.php +103 -72
- package/support/vendor/symfony/var-dumper/Cloner/ClonerInterface.php +1 -5
- package/support/vendor/symfony/var-dumper/Cloner/Cursor.php +21 -21
- package/support/vendor/symfony/var-dumper/Cloner/Data.php +51 -77
- package/support/vendor/symfony/var-dumper/Cloner/DumperInterface.php +11 -14
- package/support/vendor/symfony/var-dumper/Cloner/Stub.php +40 -31
- package/support/vendor/symfony/var-dumper/Cloner/VarCloner.php +21 -104
- package/support/vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php +9 -19
- package/support/vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php +10 -11
- package/support/vendor/symfony/var-dumper/Command/ServerDumpCommand.php +27 -15
- package/support/vendor/symfony/var-dumper/Dumper/AbstractDumper.php +68 -48
- package/support/vendor/symfony/var-dumper/Dumper/CliDumper.php +126 -113
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php +1 -1
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php +0 -3
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php +5 -6
- package/support/vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php +10 -15
- package/support/vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php +8 -11
- package/support/vendor/symfony/var-dumper/Dumper/DataDumperInterface.php +3 -0
- package/support/vendor/symfony/var-dumper/Dumper/HtmlDumper.php +122 -146
- package/support/vendor/symfony/var-dumper/Dumper/ServerDumper.php +10 -10
- package/support/vendor/symfony/var-dumper/Exception/ThrowingCasterException.php +1 -1
- package/support/vendor/symfony/var-dumper/LICENSE +1 -1
- package/support/vendor/symfony/var-dumper/README.md +6 -6
- package/support/vendor/symfony/var-dumper/Resources/bin/var-dump-server +4 -0
- package/support/vendor/symfony/var-dumper/Resources/functions/dump.php +35 -10
- package/support/vendor/symfony/var-dumper/Server/Connection.php +16 -14
- package/support/vendor/symfony/var-dumper/Server/DumpServer.php +16 -14
- package/support/vendor/symfony/var-dumper/Test/VarDumperTestTrait.php +9 -9
- package/support/vendor/symfony/var-dumper/VarDumper.php +69 -17
- package/support/vendor/symfony/var-dumper/composer.json +10 -16
- package/support/vendor/symfony/polyfill-php72/Php72.php +0 -217
- package/support/vendor/symfony/polyfill-php72/README.md +0 -28
- package/support/vendor/symfony/polyfill-php72/bootstrap.php +0 -57
- package/support/vendor/symfony/polyfill-php80/LICENSE +0 -19
- package/support/vendor/symfony/polyfill-php80/Php80.php +0 -105
- package/support/vendor/symfony/polyfill-php80/README.md +0 -24
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +0 -22
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +0 -11
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +0 -5
- package/support/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +0 -5
- package/support/vendor/symfony/polyfill-php80/bootstrap.php +0 -42
- package/support/vendor/symfony/polyfill-php80/composer.json +0 -40
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
namespace Symfony\Component\VarDumper\Dumper;
|
|
13
13
|
|
|
14
|
+
use Symfony\Component\ErrorHandler\ErrorRenderer\FileLinkFormatter;
|
|
14
15
|
use Symfony\Component\VarDumper\Cloner\Cursor;
|
|
15
16
|
use Symfony\Component\VarDumper\Cloner\Stub;
|
|
16
17
|
|
|
@@ -21,29 +22,31 @@ use Symfony\Component\VarDumper\Cloner\Stub;
|
|
|
21
22
|
*/
|
|
22
23
|
class CliDumper extends AbstractDumper
|
|
23
24
|
{
|
|
24
|
-
public static $defaultColors;
|
|
25
|
+
public static bool $defaultColors;
|
|
26
|
+
/** @var callable|resource|string|null */
|
|
25
27
|
public static $defaultOutput = 'php://stdout';
|
|
26
28
|
|
|
27
|
-
protected $colors;
|
|
28
|
-
protected $maxStringWidth = 0;
|
|
29
|
-
protected $styles = [
|
|
29
|
+
protected bool $colors;
|
|
30
|
+
protected int $maxStringWidth = 0;
|
|
31
|
+
protected array $styles = [
|
|
30
32
|
// See http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
|
|
31
33
|
'default' => '0;38;5;208',
|
|
32
34
|
'num' => '1;38;5;38',
|
|
33
35
|
'const' => '1;38;5;208',
|
|
36
|
+
'virtual' => '3',
|
|
34
37
|
'str' => '1;38;5;113',
|
|
35
38
|
'note' => '38;5;38',
|
|
36
39
|
'ref' => '38;5;247',
|
|
37
|
-
'public' => '',
|
|
38
|
-
'protected' => '',
|
|
39
|
-
'private' => '',
|
|
40
|
+
'public' => '39',
|
|
41
|
+
'protected' => '39',
|
|
42
|
+
'private' => '39',
|
|
40
43
|
'meta' => '38;5;170',
|
|
41
44
|
'key' => '38;5;113',
|
|
42
45
|
'index' => '38;5;38',
|
|
43
46
|
];
|
|
44
47
|
|
|
45
|
-
protected static $controlCharsRx = '/[\x00-\x1F\x7F]+/';
|
|
46
|
-
protected static $controlCharsMap = [
|
|
48
|
+
protected static string $controlCharsRx = '/[\x00-\x1F\x7F]+/';
|
|
49
|
+
protected static array $controlCharsMap = [
|
|
47
50
|
"\t" => '\t',
|
|
48
51
|
"\n" => '\n',
|
|
49
52
|
"\v" => '\v',
|
|
@@ -51,20 +54,18 @@ class CliDumper extends AbstractDumper
|
|
|
51
54
|
"\r" => '\r',
|
|
52
55
|
"\033" => '\e',
|
|
53
56
|
];
|
|
57
|
+
protected static string $unicodeCharsRx = "/[\u{00A0}\u{00AD}\u{034F}\u{061C}\u{115F}\u{1160}\u{17B4}\u{17B5}\u{180E}\u{2000}-\u{200F}\u{202F}\u{205F}\u{2060}-\u{2064}\u{206A}-\u{206F}\u{3000}\u{2800}\u{3164}\u{FEFF}\u{FFA0}\u{1D159}\u{1D173}-\u{1D17A}]/u";
|
|
54
58
|
|
|
55
|
-
protected $collapseNextHash = false;
|
|
56
|
-
protected $expandNextHash = false;
|
|
59
|
+
protected bool $collapseNextHash = false;
|
|
60
|
+
protected bool $expandNextHash = false;
|
|
57
61
|
|
|
58
|
-
private $displayOptions = [
|
|
62
|
+
private array $displayOptions = [
|
|
59
63
|
'fileLinkFormat' => null,
|
|
60
64
|
];
|
|
61
65
|
|
|
62
|
-
private $handlesHrefGracefully;
|
|
66
|
+
private bool $handlesHrefGracefully;
|
|
63
67
|
|
|
64
|
-
|
|
65
|
-
* {@inheritdoc}
|
|
66
|
-
*/
|
|
67
|
-
public function __construct($output = null, string $charset = null, int $flags = 0)
|
|
68
|
+
public function __construct($output = null, ?string $charset = null, int $flags = 0)
|
|
68
69
|
{
|
|
69
70
|
parent::__construct($output, $charset, $flags);
|
|
70
71
|
|
|
@@ -83,27 +84,23 @@ class CliDumper extends AbstractDumper
|
|
|
83
84
|
]);
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
$this->displayOptions['fileLinkFormat'] = ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: 'file://%f#L%l';
|
|
87
|
+
$this->displayOptions['fileLinkFormat'] = class_exists(FileLinkFormatter::class) ? new FileLinkFormatter() : (\ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: 'file://%f#L%l');
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
/**
|
|
90
91
|
* Enables/disables colored output.
|
|
91
|
-
*
|
|
92
|
-
* @param bool $colors
|
|
93
92
|
*/
|
|
94
|
-
public function setColors($colors)
|
|
93
|
+
public function setColors(bool $colors): void
|
|
95
94
|
{
|
|
96
|
-
$this->colors =
|
|
95
|
+
$this->colors = $colors;
|
|
97
96
|
}
|
|
98
97
|
|
|
99
98
|
/**
|
|
100
99
|
* Sets the maximum number of characters per line for dumped strings.
|
|
101
|
-
*
|
|
102
|
-
* @param int $maxStringWidth
|
|
103
100
|
*/
|
|
104
|
-
public function setMaxStringWidth($maxStringWidth)
|
|
101
|
+
public function setMaxStringWidth(int $maxStringWidth): void
|
|
105
102
|
{
|
|
106
|
-
$this->maxStringWidth =
|
|
103
|
+
$this->maxStringWidth = $maxStringWidth;
|
|
107
104
|
}
|
|
108
105
|
|
|
109
106
|
/**
|
|
@@ -111,7 +108,7 @@ class CliDumper extends AbstractDumper
|
|
|
111
108
|
*
|
|
112
109
|
* @param array $styles A map of style names to style definitions
|
|
113
110
|
*/
|
|
114
|
-
public function setStyles(array $styles)
|
|
111
|
+
public function setStyles(array $styles): void
|
|
115
112
|
{
|
|
116
113
|
$this->styles = $styles + $this->styles;
|
|
117
114
|
}
|
|
@@ -121,17 +118,15 @@ class CliDumper extends AbstractDumper
|
|
|
121
118
|
*
|
|
122
119
|
* @param array $displayOptions A map of display options to customize the behavior
|
|
123
120
|
*/
|
|
124
|
-
public function setDisplayOptions(array $displayOptions)
|
|
121
|
+
public function setDisplayOptions(array $displayOptions): void
|
|
125
122
|
{
|
|
126
123
|
$this->displayOptions = $displayOptions + $this->displayOptions;
|
|
127
124
|
}
|
|
128
125
|
|
|
129
|
-
|
|
130
|
-
* {@inheritdoc}
|
|
131
|
-
*/
|
|
132
|
-
public function dumpScalar(Cursor $cursor, $type, $value)
|
|
126
|
+
public function dumpScalar(Cursor $cursor, string $type, string|int|float|bool|null $value): void
|
|
133
127
|
{
|
|
134
128
|
$this->dumpKey($cursor);
|
|
129
|
+
$this->collapseNextHash = $this->expandNextHash = false;
|
|
135
130
|
|
|
136
131
|
$style = 'const';
|
|
137
132
|
$attr = $cursor->attr;
|
|
@@ -141,24 +136,33 @@ class CliDumper extends AbstractDumper
|
|
|
141
136
|
$style = 'default';
|
|
142
137
|
break;
|
|
143
138
|
|
|
139
|
+
case 'label':
|
|
140
|
+
$this->styles += ['label' => $this->styles['default']];
|
|
141
|
+
$style = 'label';
|
|
142
|
+
break;
|
|
143
|
+
|
|
144
144
|
case 'integer':
|
|
145
145
|
$style = 'num';
|
|
146
|
+
|
|
147
|
+
if (isset($this->styles['integer'])) {
|
|
148
|
+
$style = 'integer';
|
|
149
|
+
}
|
|
150
|
+
|
|
146
151
|
break;
|
|
147
152
|
|
|
148
153
|
case 'double':
|
|
149
154
|
$style = 'num';
|
|
150
155
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
case -\INF === $value: $value = '-INF'; break;
|
|
154
|
-
case is_nan($value): $value = 'NAN'; break;
|
|
155
|
-
default:
|
|
156
|
-
$value = (string) $value;
|
|
157
|
-
if (false === strpos($value, $this->decimalPoint)) {
|
|
158
|
-
$value .= $this->decimalPoint.'0';
|
|
159
|
-
}
|
|
160
|
-
break;
|
|
156
|
+
if (isset($this->styles['float'])) {
|
|
157
|
+
$style = 'float';
|
|
161
158
|
}
|
|
159
|
+
|
|
160
|
+
$value = match (true) {
|
|
161
|
+
\INF === $value => 'INF',
|
|
162
|
+
-\INF === $value => '-INF',
|
|
163
|
+
is_nan($value) => 'NAN',
|
|
164
|
+
default => !str_contains($value = (string) $value, $this->decimalPoint) ? $value .= $this->decimalPoint.'0' : $value,
|
|
165
|
+
};
|
|
162
166
|
break;
|
|
163
167
|
|
|
164
168
|
case 'NULL':
|
|
@@ -180,12 +184,10 @@ class CliDumper extends AbstractDumper
|
|
|
180
184
|
$this->endValue($cursor);
|
|
181
185
|
}
|
|
182
186
|
|
|
183
|
-
|
|
184
|
-
* {@inheritdoc}
|
|
185
|
-
*/
|
|
186
|
-
public function dumpString(Cursor $cursor, $str, $bin, $cut)
|
|
187
|
+
public function dumpString(Cursor $cursor, string $str, bool $bin, int $cut): void
|
|
187
188
|
{
|
|
188
189
|
$this->dumpKey($cursor);
|
|
190
|
+
$this->collapseNextHash = $this->expandNextHash = false;
|
|
189
191
|
$attr = $cursor->attr;
|
|
190
192
|
|
|
191
193
|
if ($bin) {
|
|
@@ -193,13 +195,16 @@ class CliDumper extends AbstractDumper
|
|
|
193
195
|
}
|
|
194
196
|
if ('' === $str) {
|
|
195
197
|
$this->line .= '""';
|
|
198
|
+
if ($cut) {
|
|
199
|
+
$this->line .= '…'.$cut;
|
|
200
|
+
}
|
|
196
201
|
$this->endValue($cursor);
|
|
197
202
|
} else {
|
|
198
203
|
$attr += [
|
|
199
204
|
'length' => 0 <= $cut ? mb_strlen($str, 'UTF-8') + $cut : 0,
|
|
200
205
|
'binary' => $bin,
|
|
201
206
|
];
|
|
202
|
-
$str = explode("\n", $str);
|
|
207
|
+
$str = $bin && str_contains($str, "\0") ? [$str] : explode("\n", $str);
|
|
203
208
|
if (isset($str[1]) && !isset($str[2]) && !isset($str[1][0])) {
|
|
204
209
|
unset($str[1]);
|
|
205
210
|
$str[0] .= "\n";
|
|
@@ -268,16 +273,12 @@ class CliDumper extends AbstractDumper
|
|
|
268
273
|
}
|
|
269
274
|
}
|
|
270
275
|
|
|
271
|
-
|
|
272
|
-
* {@inheritdoc}
|
|
273
|
-
*/
|
|
274
|
-
public function enterHash(Cursor $cursor, $type, $class, $hasChild)
|
|
276
|
+
public function enterHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild): void
|
|
275
277
|
{
|
|
276
|
-
|
|
277
|
-
$this->colors = $this->supportsColors();
|
|
278
|
-
}
|
|
278
|
+
$this->colors ??= $this->supportsColors();
|
|
279
279
|
|
|
280
280
|
$this->dumpKey($cursor);
|
|
281
|
+
$this->expandNextHash = false;
|
|
281
282
|
$attr = $cursor->attr;
|
|
282
283
|
|
|
283
284
|
if ($this->collapseNextHash) {
|
|
@@ -309,10 +310,7 @@ class CliDumper extends AbstractDumper
|
|
|
309
310
|
}
|
|
310
311
|
}
|
|
311
312
|
|
|
312
|
-
|
|
313
|
-
* {@inheritdoc}
|
|
314
|
-
*/
|
|
315
|
-
public function leaveHash(Cursor $cursor, $type, $class, $hasChild, $cut)
|
|
313
|
+
public function leaveHash(Cursor $cursor, int $type, string|int|null $class, bool $hasChild, int $cut): void
|
|
316
314
|
{
|
|
317
315
|
if (empty($cursor->attr['cut_hash'])) {
|
|
318
316
|
$this->dumpEllipsis($cursor, $hasChild, $cut);
|
|
@@ -328,7 +326,7 @@ class CliDumper extends AbstractDumper
|
|
|
328
326
|
* @param bool $hasChild When the dump of the hash has child item
|
|
329
327
|
* @param int $cut The number of items the hash has been cut by
|
|
330
328
|
*/
|
|
331
|
-
protected function dumpEllipsis(Cursor $cursor, $hasChild, $cut)
|
|
329
|
+
protected function dumpEllipsis(Cursor $cursor, bool $hasChild, int $cut): void
|
|
332
330
|
{
|
|
333
331
|
if ($cut) {
|
|
334
332
|
$this->line .= ' …';
|
|
@@ -344,13 +342,16 @@ class CliDumper extends AbstractDumper
|
|
|
344
342
|
/**
|
|
345
343
|
* Dumps a key in a hash structure.
|
|
346
344
|
*/
|
|
347
|
-
protected function dumpKey(Cursor $cursor)
|
|
345
|
+
protected function dumpKey(Cursor $cursor): void
|
|
348
346
|
{
|
|
349
347
|
if (null !== $key = $cursor->hashKey) {
|
|
350
348
|
if ($cursor->hashKeyIsBinary) {
|
|
351
349
|
$key = $this->utf8Encode($key);
|
|
352
350
|
}
|
|
353
|
-
$attr = [
|
|
351
|
+
$attr = [
|
|
352
|
+
'binary' => $cursor->hashKeyIsBinary,
|
|
353
|
+
'virtual' => $cursor->attr['virtual'] ?? false,
|
|
354
|
+
];
|
|
354
355
|
$bin = $cursor->hashKeyIsBinary ? 'b' : '';
|
|
355
356
|
$style = 'key';
|
|
356
357
|
switch ($cursor->hashType) {
|
|
@@ -374,7 +375,7 @@ class CliDumper extends AbstractDumper
|
|
|
374
375
|
// no break
|
|
375
376
|
case Cursor::HASH_OBJECT:
|
|
376
377
|
if (!isset($key[0]) || "\0" !== $key[0]) {
|
|
377
|
-
$this->line .= '+'.$bin.$this->style('public', $key).': ';
|
|
378
|
+
$this->line .= '+'.$bin.$this->style('public', $key, $attr).': ';
|
|
378
379
|
} elseif (0 < strpos($key, "\0", 1)) {
|
|
379
380
|
$key = explode("\0", substr($key, 1), 2);
|
|
380
381
|
|
|
@@ -409,7 +410,7 @@ class CliDumper extends AbstractDumper
|
|
|
409
410
|
}
|
|
410
411
|
}
|
|
411
412
|
|
|
412
|
-
$this->line .= $bin.$this->style($style, $key[1], $attr).(
|
|
413
|
+
$this->line .= $bin.$this->style($style, $key[1], $attr).($attr['separator'] ?? ': ');
|
|
413
414
|
} else {
|
|
414
415
|
// This case should not happen
|
|
415
416
|
$this->line .= '-'.$bin.'"'.$this->style('private', $key, ['class' => '']).'": ';
|
|
@@ -429,22 +430,18 @@ class CliDumper extends AbstractDumper
|
|
|
429
430
|
* @param string $style The type of style being applied
|
|
430
431
|
* @param string $value The value being styled
|
|
431
432
|
* @param array $attr Optional context information
|
|
432
|
-
*
|
|
433
|
-
* @return string The value with style decoration
|
|
434
433
|
*/
|
|
435
|
-
protected function style($style, $value, $attr = [])
|
|
434
|
+
protected function style(string $style, string $value, array $attr = []): string
|
|
436
435
|
{
|
|
437
|
-
|
|
438
|
-
$this->colors = $this->supportsColors();
|
|
439
|
-
}
|
|
436
|
+
$this->colors ??= $this->supportsColors();
|
|
440
437
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
438
|
+
$this->handlesHrefGracefully ??= 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR')
|
|
439
|
+
&& (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100)
|
|
440
|
+
&& !isset($_SERVER['IDEA_INITIAL_DIRECTORY']);
|
|
444
441
|
|
|
445
442
|
if (isset($attr['ellipsis'], $attr['ellipsis-type'])) {
|
|
446
443
|
$prefix = substr($value, 0, -$attr['ellipsis']);
|
|
447
|
-
if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) &&
|
|
444
|
+
if ('cli' === \PHP_SAPI && 'path' === $attr['ellipsis-type'] && isset($_SERVER[$pwd = '\\' === \DIRECTORY_SEPARATOR ? 'CD' : 'PWD']) && str_starts_with($prefix, $_SERVER[$pwd])) {
|
|
448
445
|
$prefix = '.'.substr($prefix, \strlen($_SERVER[$pwd]));
|
|
449
446
|
}
|
|
450
447
|
if (!empty($attr['ellipsis-tail'])) {
|
|
@@ -466,19 +463,27 @@ class CliDumper extends AbstractDumper
|
|
|
466
463
|
$s = $startCchr;
|
|
467
464
|
$c = $c[$i = 0];
|
|
468
465
|
do {
|
|
469
|
-
$s .=
|
|
466
|
+
$s .= $map[$c[$i]] ?? \sprintf('\x%02X', \ord($c[$i]));
|
|
470
467
|
} while (isset($c[++$i]));
|
|
471
468
|
|
|
472
469
|
return $s.$endCchr;
|
|
473
470
|
}, $value, -1, $cchrCount);
|
|
474
471
|
|
|
475
|
-
if ($
|
|
472
|
+
if (!($attr['binary'] ?? false)) {
|
|
473
|
+
$value = preg_replace_callback(static::$unicodeCharsRx, function ($c) use (&$cchrCount, $startCchr, $endCchr) {
|
|
474
|
+
++$cchrCount;
|
|
475
|
+
|
|
476
|
+
return $startCchr.'\u{'.strtoupper(dechex(mb_ord($c[0]))).'}'.$endCchr;
|
|
477
|
+
}, $value);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if ($this->colors && '' !== $value) {
|
|
476
481
|
if ($cchrCount && "\033" === $value[0]) {
|
|
477
482
|
$value = substr($value, \strlen($startCchr));
|
|
478
483
|
} else {
|
|
479
484
|
$value = "\033[{$this->styles[$style]}m".$value;
|
|
480
485
|
}
|
|
481
|
-
if ($cchrCount &&
|
|
486
|
+
if ($cchrCount && str_ends_with($value, $endCchr)) {
|
|
482
487
|
$value = substr($value, 0, -\strlen($endCchr));
|
|
483
488
|
} else {
|
|
484
489
|
$value .= "\033[{$this->styles['default']}m";
|
|
@@ -487,7 +492,7 @@ class CliDumper extends AbstractDumper
|
|
|
487
492
|
|
|
488
493
|
href:
|
|
489
494
|
if ($this->colors && $this->handlesHrefGracefully) {
|
|
490
|
-
if (isset($attr['file']) && $href = $this->getSourceLink($attr['file'],
|
|
495
|
+
if (isset($attr['file']) && $href = $this->getSourceLink($attr['file'], $attr['line'] ?? 0)) {
|
|
491
496
|
if ('note' === $style) {
|
|
492
497
|
$value .= "\033]8;;{$href}\033\\^\033]8;;\033\\";
|
|
493
498
|
} else {
|
|
@@ -495,24 +500,29 @@ class CliDumper extends AbstractDumper
|
|
|
495
500
|
}
|
|
496
501
|
}
|
|
497
502
|
if (isset($attr['href'])) {
|
|
503
|
+
if ('label' === $style) {
|
|
504
|
+
$value .= '^';
|
|
505
|
+
}
|
|
498
506
|
$value = "\033]8;;{$attr['href']}\033\\{$value}\033]8;;\033\\";
|
|
499
507
|
}
|
|
500
|
-
}
|
|
501
|
-
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
if ('label' === $style && '' !== $value) {
|
|
511
|
+
$value .= ' ';
|
|
512
|
+
}
|
|
513
|
+
if ($this->colors && ($attr['virtual'] ?? false)) {
|
|
514
|
+
$value = "\033[{$this->styles['virtual']}m".$value;
|
|
502
515
|
}
|
|
503
516
|
|
|
504
517
|
return $value;
|
|
505
518
|
}
|
|
506
519
|
|
|
507
|
-
|
|
508
|
-
* @return bool Tells if the current output stream supports ANSI colors or not
|
|
509
|
-
*/
|
|
510
|
-
protected function supportsColors()
|
|
520
|
+
protected function supportsColors(): bool
|
|
511
521
|
{
|
|
512
522
|
if ($this->outputStream !== static::$defaultOutput) {
|
|
513
523
|
return $this->hasColorSupport($this->outputStream);
|
|
514
524
|
}
|
|
515
|
-
if (
|
|
525
|
+
if (isset(static::$defaultColors)) {
|
|
516
526
|
return static::$defaultColors;
|
|
517
527
|
}
|
|
518
528
|
if (isset($_SERVER['argv'][1])) {
|
|
@@ -526,12 +536,14 @@ class CliDumper extends AbstractDumper
|
|
|
526
536
|
case '--color=yes':
|
|
527
537
|
case '--color=force':
|
|
528
538
|
case '--color=always':
|
|
539
|
+
case '--colors=always':
|
|
529
540
|
return static::$defaultColors = true;
|
|
530
541
|
|
|
531
542
|
case '--no-ansi':
|
|
532
543
|
case '--color=no':
|
|
533
544
|
case '--color=none':
|
|
534
545
|
case '--color=never':
|
|
546
|
+
case '--colors=never':
|
|
535
547
|
return static::$defaultColors = false;
|
|
536
548
|
}
|
|
537
549
|
}
|
|
@@ -539,23 +551,20 @@ class CliDumper extends AbstractDumper
|
|
|
539
551
|
}
|
|
540
552
|
|
|
541
553
|
$h = stream_get_meta_data($this->outputStream) + ['wrapper_type' => null];
|
|
542
|
-
$h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', '
|
|
554
|
+
$h = 'Output' === $h['stream_type'] && 'PHP' === $h['wrapper_type'] ? fopen('php://stdout', 'w') : $this->outputStream;
|
|
543
555
|
|
|
544
556
|
return static::$defaultColors = $this->hasColorSupport($h);
|
|
545
557
|
}
|
|
546
558
|
|
|
547
|
-
|
|
548
|
-
* {@inheritdoc}
|
|
549
|
-
*/
|
|
550
|
-
protected function dumpLine($depth, $endOfValue = false)
|
|
559
|
+
protected function dumpLine(int $depth, bool $endOfValue = false): void
|
|
551
560
|
{
|
|
552
|
-
if ($this->colors) {
|
|
553
|
-
$this->line = sprintf("\033[%sm%s\033[m", $this->styles['default'], $this->line);
|
|
561
|
+
if ($this->colors ??= $this->supportsColors()) {
|
|
562
|
+
$this->line = \sprintf("\033[%sm%s\033[m", $this->styles['default'], $this->line);
|
|
554
563
|
}
|
|
555
564
|
parent::dumpLine($depth);
|
|
556
565
|
}
|
|
557
566
|
|
|
558
|
-
protected function endValue(Cursor $cursor)
|
|
567
|
+
protected function endValue(Cursor $cursor): void
|
|
559
568
|
{
|
|
560
569
|
if (-1 === $cursor->hashType) {
|
|
561
570
|
return;
|
|
@@ -577,43 +586,47 @@ class CliDumper extends AbstractDumper
|
|
|
577
586
|
*
|
|
578
587
|
* Reference: Composer\XdebugHandler\Process::supportsColor
|
|
579
588
|
* https://github.com/composer/xdebug-handler
|
|
580
|
-
*
|
|
581
|
-
* @param mixed $stream A CLI output stream
|
|
582
589
|
*/
|
|
583
|
-
private function hasColorSupport($stream): bool
|
|
590
|
+
private function hasColorSupport(mixed $stream): bool
|
|
584
591
|
{
|
|
585
592
|
if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) {
|
|
586
593
|
return false;
|
|
587
594
|
}
|
|
588
595
|
|
|
589
596
|
// Follow https://no-color.org/
|
|
590
|
-
if (
|
|
597
|
+
if ('' !== (($_SERVER['NO_COLOR'] ?? getenv('NO_COLOR'))[0] ?? '')) {
|
|
591
598
|
return false;
|
|
592
599
|
}
|
|
593
600
|
|
|
594
|
-
|
|
601
|
+
// Follow https://force-color.org/
|
|
602
|
+
if ('' !== (($_SERVER['FORCE_COLOR'] ?? getenv('FORCE_COLOR'))[0] ?? '')) {
|
|
595
603
|
return true;
|
|
596
604
|
}
|
|
597
605
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|| 'ON' === getenv('ConEmuANSI')
|
|
603
|
-
|| 'xterm' === getenv('TERM');
|
|
606
|
+
// Detect msysgit/mingw and assume this is a tty because detection
|
|
607
|
+
// does not work correctly, see https://github.com/composer/composer/issues/9690
|
|
608
|
+
if (!@stream_isatty($stream) && !\in_array(strtoupper((string) getenv('MSYSTEM')), ['MINGW32', 'MINGW64'], true)) {
|
|
609
|
+
return false;
|
|
604
610
|
}
|
|
605
611
|
|
|
606
|
-
if (\
|
|
607
|
-
return
|
|
612
|
+
if ('\\' === \DIRECTORY_SEPARATOR && @sapi_windows_vt100_support($stream)) {
|
|
613
|
+
return true;
|
|
608
614
|
}
|
|
609
615
|
|
|
610
|
-
if (
|
|
611
|
-
|
|
616
|
+
if ('Hyper' === getenv('TERM_PROGRAM')
|
|
617
|
+
|| false !== getenv('COLORTERM')
|
|
618
|
+
|| false !== getenv('ANSICON')
|
|
619
|
+
|| 'ON' === getenv('ConEmuANSI')
|
|
620
|
+
) {
|
|
621
|
+
return true;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
if ('dumb' === $term = (string) getenv('TERM')) {
|
|
625
|
+
return false;
|
|
612
626
|
}
|
|
613
627
|
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
|
|
628
|
+
// See https://github.com/chalk/supports-color/blob/d4f413efaf8da045c5ab440ed418ef02dbb28bf1/index.js#L157
|
|
629
|
+
return preg_match('/^((screen|xterm|vt100|vt220|putty|rxvt|ansi|cygwin|linux).*)|(.*-256(color)?(-bce)?)$/', $term);
|
|
617
630
|
}
|
|
618
631
|
|
|
619
632
|
/**
|
|
@@ -630,8 +643,8 @@ class CliDumper extends AbstractDumper
|
|
|
630
643
|
|| 'xterm' === getenv('TERM')
|
|
631
644
|
|| 'Hyper' === getenv('TERM_PROGRAM');
|
|
632
645
|
|
|
633
|
-
if (!$result
|
|
634
|
-
$version = sprintf(
|
|
646
|
+
if (!$result) {
|
|
647
|
+
$version = \sprintf(
|
|
635
648
|
'%s.%s.%s',
|
|
636
649
|
PHP_WINDOWS_VERSION_MAJOR,
|
|
637
650
|
PHP_WINDOWS_VERSION_MINOR,
|
|
@@ -643,7 +656,7 @@ class CliDumper extends AbstractDumper
|
|
|
643
656
|
return $result;
|
|
644
657
|
}
|
|
645
658
|
|
|
646
|
-
private function getSourceLink(string $file, int $line)
|
|
659
|
+
private function getSourceLink(string $file, int $line): string|false
|
|
647
660
|
{
|
|
648
661
|
if ($fmt = $this->displayOptions['fileLinkFormat']) {
|
|
649
662
|
return \is_string($fmt) ? strtr($fmt, ['%f' => $file, '%l' => $line]) : ($fmt->format($file, $line) ?: 'file://'.$file.'#L'.$line);
|
|
@@ -26,7 +26,7 @@ final class CliContextProvider implements ContextProviderInterface
|
|
|
26
26
|
|
|
27
27
|
return [
|
|
28
28
|
'command_line' => $commandLine = implode(' ', $_SERVER['argv'] ?? []),
|
|
29
|
-
'identifier' => hash('
|
|
29
|
+
'identifier' => hash('xxh128', $commandLine.'@'.$_SERVER['REQUEST_TIME_FLOAT']),
|
|
30
30
|
];
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -22,12 +22,11 @@ use Symfony\Component\VarDumper\Cloner\VarCloner;
|
|
|
22
22
|
*/
|
|
23
23
|
final class RequestContextProvider implements ContextProviderInterface
|
|
24
24
|
{
|
|
25
|
-
private $
|
|
26
|
-
private $cloner;
|
|
25
|
+
private VarCloner $cloner;
|
|
27
26
|
|
|
28
|
-
public function __construct(
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
public function __construct(
|
|
28
|
+
private RequestStack $requestStack,
|
|
29
|
+
) {
|
|
31
30
|
$this->cloner = new VarCloner();
|
|
32
31
|
$this->cloner->setMaxItems(0);
|
|
33
32
|
$this->cloner->addCasters(ReflectionCaster::UNSET_CLOSURE_FILE_INFO);
|
|
@@ -45,7 +44,7 @@ final class RequestContextProvider implements ContextProviderInterface
|
|
|
45
44
|
'uri' => $request->getUri(),
|
|
46
45
|
'method' => $request->getMethod(),
|
|
47
46
|
'controller' => $controller ? $this->cloner->cloneVar($controller) : $controller,
|
|
48
|
-
'identifier' =>
|
|
47
|
+
'identifier' => hash('xxh128', spl_object_id($request).'@'.$_SERVER['REQUEST_TIME_FLOAT']),
|
|
49
48
|
];
|
|
50
49
|
}
|
|
51
50
|
}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
namespace Symfony\Component\VarDumper\Dumper\ContextProvider;
|
|
13
13
|
|
|
14
|
-
use Symfony\Component\
|
|
14
|
+
use Symfony\Component\ErrorHandler\ErrorRenderer\FileLinkFormatter;
|
|
15
15
|
use Symfony\Component\VarDumper\Cloner\VarCloner;
|
|
16
16
|
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
|
|
17
17
|
use Symfony\Component\VarDumper\VarDumper;
|
|
@@ -25,17 +25,12 @@ use Twig\Template;
|
|
|
25
25
|
*/
|
|
26
26
|
final class SourceContextProvider implements ContextProviderInterface
|
|
27
27
|
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
$this->charset = $charset;
|
|
36
|
-
$this->projectDir = $projectDir;
|
|
37
|
-
$this->fileLinkFormatter = $fileLinkFormatter;
|
|
38
|
-
$this->limit = $limit;
|
|
28
|
+
public function __construct(
|
|
29
|
+
private ?string $charset = null,
|
|
30
|
+
private ?string $projectDir = null,
|
|
31
|
+
private ?FileLinkFormatter $fileLinkFormatter = null,
|
|
32
|
+
private int $limit = 9,
|
|
33
|
+
) {
|
|
39
34
|
}
|
|
40
35
|
|
|
41
36
|
public function getContext(): ?array
|
|
@@ -44,7 +39,7 @@ final class SourceContextProvider implements ContextProviderInterface
|
|
|
44
39
|
|
|
45
40
|
$file = $trace[1]['file'];
|
|
46
41
|
$line = $trace[1]['line'];
|
|
47
|
-
$name = false;
|
|
42
|
+
$name = '-' === $file || 'Standard input code' === $file ? 'Standard input code' : false;
|
|
48
43
|
$fileExcerpt = false;
|
|
49
44
|
|
|
50
45
|
for ($i = 2; $i < $this->limit; ++$i) {
|
|
@@ -56,7 +51,7 @@ final class SourceContextProvider implements ContextProviderInterface
|
|
|
56
51
|
$line = $trace[$i]['line'] ?? $line;
|
|
57
52
|
|
|
58
53
|
while (++$i < $this->limit) {
|
|
59
|
-
if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) &&
|
|
54
|
+
if (isset($trace[$i]['function'], $trace[$i]['file']) && empty($trace[$i]['class']) && !str_starts_with($trace[$i]['function'], 'call_user_func')) {
|
|
60
55
|
$file = $trace[$i]['file'];
|
|
61
56
|
$line = $trace[$i]['line'];
|
|
62
57
|
|
|
@@ -98,7 +93,7 @@ final class SourceContextProvider implements ContextProviderInterface
|
|
|
98
93
|
|
|
99
94
|
if (null !== $this->projectDir) {
|
|
100
95
|
$context['project_dir'] = $this->projectDir;
|
|
101
|
-
if (
|
|
96
|
+
if (str_starts_with($file, $this->projectDir)) {
|
|
102
97
|
$context['file_relative'] = ltrim(substr($file, \strlen($this->projectDir)), \DIRECTORY_SEPARATOR);
|
|
103
98
|
}
|
|
104
99
|
}
|
|
@@ -19,25 +19,22 @@ use Symfony\Component\VarDumper\Dumper\ContextProvider\ContextProviderInterface;
|
|
|
19
19
|
*/
|
|
20
20
|
class ContextualizedDumper implements DataDumperInterface
|
|
21
21
|
{
|
|
22
|
-
private $wrappedDumper;
|
|
23
|
-
private $contextProviders;
|
|
24
|
-
|
|
25
22
|
/**
|
|
26
23
|
* @param ContextProviderInterface[] $contextProviders
|
|
27
24
|
*/
|
|
28
|
-
public function __construct(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
public function __construct(
|
|
26
|
+
private DataDumperInterface $wrappedDumper,
|
|
27
|
+
private array $contextProviders,
|
|
28
|
+
) {
|
|
32
29
|
}
|
|
33
30
|
|
|
34
|
-
public function dump(Data $data)
|
|
31
|
+
public function dump(Data $data): ?string
|
|
35
32
|
{
|
|
36
|
-
$context =
|
|
33
|
+
$context = $data->getContext();
|
|
37
34
|
foreach ($this->contextProviders as $contextProvider) {
|
|
38
|
-
$context[
|
|
35
|
+
$context[$contextProvider::class] = $contextProvider->getContext();
|
|
39
36
|
}
|
|
40
37
|
|
|
41
|
-
$this->wrappedDumper->dump($data->withContext($context));
|
|
38
|
+
return $this->wrappedDumper->dump($data->withContext($context));
|
|
42
39
|
}
|
|
43
40
|
}
|